-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsettings.go
51 lines (40 loc) · 1.03 KB
/
settings.go
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
46
47
48
49
50
51
package main
import (
"log"
)
const pathToSettings = "./settings.json"
var Settings map[string]any
const ACTIVATING_CHAR_KEY = "key"
func getActivatingChar() rune {
str := Settings[ACTIVATING_CHAR_KEY].(string)
return rune(str[0])
}
const FRAME_CAP_KEY = "frameCap"
func getFrameCap() int {
return dealWithInt(Settings[FRAME_CAP_KEY], 4)
}
const INTRO_LEN_KEY = "introLen"
func getIntroLen() int {
return dealWithInt(Settings[INTRO_LEN_KEY], 4)
}
// Golang parses integer literal from json as float64 (for some reason);
// so this helps to convert any values from settings map to a proper int
func dealWithInt(v any, clampV int) int {
f := v.(float64)
i := int(f)
return clampPositive(i, clampV)
}
const WHEEL_FILE_KEY = "wheelFile"
func getCurrWheelFile() string {
return Settings[WHEEL_FILE_KEY].(string)
}
func init() {
sets, err := loadSettings(pathToSettings)
if err != nil {
log.Fatal(err)
}
Settings = sets
}
func loadSettings(path string) (map[string]any, error) {
return loadFileInto[map[string]any](path)
}