From a059fa9bb1ace39cf5fdcfd489a90f5d778c9344 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Wed, 20 Aug 2025 14:44:06 +0200 Subject: add game and settings menus --- go/client/settings.go | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 go/client/settings.go (limited to 'go/client/settings.go') diff --git a/go/client/settings.go b/go/client/settings.go new file mode 100644 index 00000000..02f23211 --- /dev/null +++ b/go/client/settings.go @@ -0,0 +1,45 @@ +package main + +import ( + "fmt" + "log" + + "muhq.space/muhqs-game/go/activities" + "muhq.space/muhqs-game/go/ui" +) + +type settings struct { + gameplay map[string]any +} + +func newSettings() *settings { + return &settings{ + gameplay: map[string]any{ + "autoProgressPrompt": true, + }, + } +} + +func newSettingsMenu(g *Game) *activities.ButtonList { + var bl *activities.ButtonList + s := g.settings + labels := make([]string, 0, len(s.gameplay)) + handlers := make([]func(*ui.SimpleButton), 0, len(s.gameplay)) + + for k, v := range s.gameplay { + name := "gameplay." + k + labels = append(labels, fmt.Sprintf("%s: %v", name, v)) + handlers = append(handlers, func(btn *ui.SimpleButton) { + switch typedVal := v.(type) { + case bool: + s.gameplay[k] = !typedVal + default: + log.Panicf("Unhandled settings %s type %T", name, typedVal) + } + btn.UpdateLabel(fmt.Sprintf("%s: %v", name, s.gameplay[k])) + }) + } + + bl = activities.NewButtonList(g.Width, g.Height, labels, handlers) + return bl +} -- cgit v1.2.3