feat(ui): implement new ui system
This commit is contained in:
parent
d407eaad8b
commit
6cf0e4abb4
11 changed files with 430 additions and 113 deletions
|
|
@ -6,33 +6,37 @@ import (
|
|||
"tetris/game"
|
||||
"tetris/game/state"
|
||||
"tetris/game/ui"
|
||||
"tetris/game/ui/layouts"
|
||||
"tetris/game/ui/widgets"
|
||||
"tetris/game/uievents"
|
||||
|
||||
rl "github.com/gen2brain/raylib-go/raylib"
|
||||
)
|
||||
|
||||
type MainMenu struct {
|
||||
menu *ui.Menu
|
||||
list *layouts.ListBox
|
||||
}
|
||||
|
||||
func NewMainMenu(fsm state.Transitioner) *MainMenu {
|
||||
return &MainMenu{
|
||||
menu: ui.NewMenu([]ui.Widget{
|
||||
ui.NewButton("Start", func() { fsm.Switch("gameplay") }),
|
||||
ui.NewButton("Quit", func() { fsm.Switch("quit") }),
|
||||
}).OnSelect(uievents.MenuSelect),
|
||||
list: layouts.NewListBox([]ui.InputWidget{
|
||||
widgets.NewButton("Start", 32, func() { fsm.Switch("gameplay") }),
|
||||
widgets.NewButton("Options", 32, func() { fsm.Switch("options") }),
|
||||
widgets.NewButton("Quit", 32, func() { fsm.Switch("quit") }),
|
||||
}).Spacing(10).
|
||||
OnSelect(uievents.MenuSelect),
|
||||
}
|
||||
}
|
||||
|
||||
func (main *MainMenu) Enter() {
|
||||
main.menu.Select(0)
|
||||
main.list.Select(0)
|
||||
}
|
||||
|
||||
func (MainMenu) Exit() {
|
||||
}
|
||||
|
||||
func (menu *MainMenu) Update(fsm state.Transitioner, delta float32) {
|
||||
menu.menu.HandleInput()
|
||||
menu.list.HandleInput()
|
||||
}
|
||||
|
||||
func (MainMenu) renderLogo(offset_x, offset_y int32) {
|
||||
|
|
@ -57,19 +61,11 @@ func (MainMenu) renderLogo(offset_x, offset_y int32) {
|
|||
}
|
||||
}
|
||||
|
||||
func (menu MainMenu) renderEntries(offset_x, offset_y int32) {
|
||||
y := offset_y
|
||||
for i, entry := range menu.menu.Entries() {
|
||||
entry.Draw(offset_x, y, menu.menu.IsSelected(i))
|
||||
y += 40
|
||||
}
|
||||
}
|
||||
|
||||
func (menu MainMenu) Render() {
|
||||
render.Begin(rl.Black)
|
||||
|
||||
menu.renderLogo(20, 150)
|
||||
menu.renderEntries(340, 400)
|
||||
menu.list.Draw(340, 400)
|
||||
|
||||
render.End()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue