1
0
Fork 0

feat: improve menu

This commit is contained in:
Henrik Hautakoski 2025-09-24 18:33:01 +02:00
parent 35e73f2b37
commit 288e710b9f
2 changed files with 40 additions and 8 deletions

View file

@ -7,22 +7,54 @@ import (
rl "github.com/gen2brain/raylib-go/raylib"
)
type Menu struct{}
func (menu *Menu) Enter() {
type entry struct {
label string
state string
}
func (menu *Menu) Exit() {
type Menu struct {
selected int
entries []entry
}
func NewMenu() *Menu {
return &Menu{
selected: 0,
entries: []entry{
{"Start", "gameplay"},
{"Quit", "quit"},
},
}
}
func (menu *Menu) Enter() {
menu.selected = 0
}
func (Menu) Exit() {
}
func (menu *Menu) Update(fsm state.Transitioner, delta float32) {
if rl.IsKeyPressed(rl.KeyEnter) {
fsm.Switch("gameplay")
fsm.Switch(menu.entries[menu.selected].state)
} else if rl.IsKeyPressed(rl.KeyDown) {
menu.selected = min(menu.selected+1, len(menu.entries)-1)
} else if rl.IsKeyPressed(rl.KeyUp) {
menu.selected = max(menu.selected-1, 0)
}
}
func (menu *Menu) Render() {
func (menu Menu) Render() {
render.Begin(rl.Black)
render.DrawText(250, 400, 32, "Start", rl.White)
y := int32(400)
for i, entry := range menu.entries {
col := rl.White
if i == menu.selected {
col = rl.Red
}
render.DrawTextCenter(340, y, 32, entry.label, col)
y += 40
}
render.End()
}

View file

@ -35,7 +35,7 @@ func main() {
// Setup state machine.
fsm := machine.New()
fsm.Register("menu", &handlers.Menu{})
fsm.Register("menu", handlers.NewMenu())
fsm.Register("gameover", &handlers.GameOver{})
fsm.Register("gameplay", handlers.NewGamePlay())
fsm.Start("menu")