aboutsummaryrefslogtreecommitdiff
path: root/go/client/settings.go
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2025-08-20 14:44:06 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2025-08-20 15:57:42 +0200
commita059fa9bb1ace39cf5fdcfd489a90f5d778c9344 (patch)
tree8907fbb2246c829d85d995694c35b229761ad5b8 /go/client/settings.go
parenta702781e58fc6db55aca6b61b1eb556bfca481b2 (diff)
downloadmuhqs-game-a059fa9bb1ace39cf5fdcfd489a90f5d778c9344.tar.gz
muhqs-game-a059fa9bb1ace39cf5fdcfd489a90f5d778c9344.zip
add game and settings menus
Diffstat (limited to 'go/client/settings.go')
-rw-r--r--go/client/settings.go45
1 files changed, 45 insertions, 0 deletions
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
+}