aboutsummaryrefslogtreecommitdiff
path: root/go/client/settings.go
blob: 02f23211977afabb6ec7a0d1ef826aac8ec741a8 (plain)
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
}