aboutsummaryrefslogtreecommitdiff
path: root/internal/game/core_course.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-09-15 15:35:52 -0400
committerhistoria <[not public]>2026-09-15 15:35:52 -0400
commit0b0b25222b3131ada79ff78c28eb8bf07d977deb (patch)
tree2ceaef5203595044f66a8f00064cd8e017f8f48d /internal/game/core_course.go
parent396c3facb8287b9a34076cae8f3d7b300d366d99 (diff)
downloadthehouseoficarus-0b0b25222b3131ada79ff78c28eb8bf07d977deb.tar.gz
feat: single-owner game state, transactional lifecycle, durable money on server stop
Diffstat (limited to 'internal/game/core_course.go')
-rw-r--r--internal/game/core_course.go6
1 files changed, 6 insertions, 0 deletions
diff --git a/internal/game/core_course.go b/internal/game/core_course.go
index 232e6dc..15bd47e 100644
--- a/internal/game/core_course.go
+++ b/internal/game/core_course.go
@@ -70,6 +70,10 @@ type ObstacleInfo struct {
var obstacleVerbs = map[string]bool{}
+// obstacleVerbsMu guards the global obstacle-verb set: course loading
+// rebuilds it, and command classification reads it from session tasks.
+var obstacleVerbsMu sync.RWMutex
+
var verbGerund = map[string]string{
"scramble": "scrambling",
"jump": "jumping",
@@ -251,5 +255,7 @@ func (cs *CourseStore) loadAllLocked() {
return nil
})
+ obstacleVerbsMu.Lock()
obstacleVerbs = localVerbs
+ obstacleVerbsMu.Unlock()
}