1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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
}
|