aboutsummaryrefslogtreecommitdiff
path: root/internal/game/core_flags.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/game/core_flags.go')
-rw-r--r--internal/game/core_flags.go55
1 files changed, 55 insertions, 0 deletions
diff --git a/internal/game/core_flags.go b/internal/game/core_flags.go
new file mode 100644
index 0000000..6595cc4
--- /dev/null
+++ b/internal/game/core_flags.go
@@ -0,0 +1,55 @@
+package game
+
+import "thehouseoficarus/internal/player"
+
+func getPlayerFlagInt(p *player.Player, key string) int {
+ if p.Flags == nil {
+ return 0
+ }
+ val, ok := p.Flags[key]
+ if !ok {
+ return 0
+ }
+ switch v := val.(type) {
+ case int:
+ return v
+ case int64:
+ return int(v)
+ case float64:
+ return int(v)
+ }
+ return 0
+}
+
+func getPlayerFlagString(p *player.Player, key string) string {
+ if p.Flags == nil {
+ return ""
+ }
+ val, ok := p.Flags[key]
+ if !ok {
+ return ""
+ }
+ s, _ := val.(string)
+ return s
+}
+
+func setPlayerFlag(p *player.Player, key string, val any) {
+ p.EnsureFlags()
+ p.Flags[key] = val
+}
+
+func intFromFlag(flags map[string]any, key string) int {
+ val, ok := flags[key]
+ if !ok {
+ return 0
+ }
+ switch v := val.(type) {
+ case int:
+ return v
+ case int64:
+ return int(v)
+ case float64:
+ return int(v)
+ }
+ return 0
+}