diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2025-08-20 14:44:06 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2025-08-20 15:57:42 +0200 |
| commit | a059fa9bb1ace39cf5fdcfd489a90f5d778c9344 (patch) | |
| tree | 8907fbb2246c829d85d995694c35b229761ad5b8 /go/client/settings.go | |
| parent | a702781e58fc6db55aca6b61b1eb556bfca481b2 (diff) | |
| download | muhqs-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.go | 45 |
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 +} |
