aboutsummaryrefslogtreecommitdiff
path: root/internal/world/world.go
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-06-28 02:40:30 -0400
committerhistoria <[not public]>2026-06-28 02:40:30 -0400
commita1b6613c6c6a2f8d6e1ecd47e766bd40f92ac295 (patch)
tree4ff8fefb029c93f2aa3db7361658b0b4e9805b66 /internal/world/world.go
parent87dacfbb3dd16e7f55a82361eace98f9a39d75c8 (diff)
downloadthehouseoficarus-a1b6613c6c6a2f8d6e1ecd47e766bd40f92ac295.tar.gz
feat: admin accounts, god mode, OLC commands like dig/room, 'inline' objects changed to 'local' objects
Diffstat (limited to 'internal/world/world.go')
-rw-r--r--internal/world/world.go37
1 files changed, 37 insertions, 0 deletions
diff --git a/internal/world/world.go b/internal/world/world.go
index ee06142..0c992ad 100644
--- a/internal/world/world.go
+++ b/internal/world/world.go
@@ -126,9 +126,46 @@ func (w *World) RoomIndex() map[int]bool {
return ids
}
+func (w *World) RebuildRoomIndex(dataDir string) {
+ w.mu.Lock()
+ defer w.mu.Unlock()
+ w.roomPathIndex = behavior.BuildRoomIndex(filepath.Join(dataDir, "rooms"))
+}
+
+func (w *World) AddRoomPath(id int, path string) {
+ w.mu.Lock()
+ defer w.mu.Unlock()
+ w.roomPathIndex[id] = path
+}
+
+func (w *World) GetRoomPath(id int) (string, bool) {
+ path, ok := w.roomPathIndex[id]
+ return path, ok
+}
+
+func (w *World) ClearHazardCache() {
+ w.hazardMu.Lock()
+ defer w.hazardMu.Unlock()
+ w.hazardPathIndex = nil
+ w.hazardDefs = make(map[string]*HazardDef)
+}
+
func (w *World) Tick() {
w.mu.Lock()
defer w.mu.Unlock()
w.tickGroundItems()
w.tickObjStatesLocked()
}
+
+func (w *World) ClearRoomState(roomID int) {
+ w.mu.Lock()
+ defer w.mu.Unlock()
+ delete(w.groundItems, roomID)
+ delete(w.seeded, roomID)
+ prefix := fmt.Sprintf("%d:", roomID)
+ for k := range w.objStates {
+ if strings.HasPrefix(k, prefix) {
+ delete(w.objStates, k)
+ }
+ }
+}