diff options
| author | historia <[not public]> | 2026-06-28 02:40:30 -0400 |
|---|---|---|
| committer | historia <[not public]> | 2026-06-28 02:40:30 -0400 |
| commit | a1b6613c6c6a2f8d6e1ecd47e766bd40f92ac295 (patch) | |
| tree | 4ff8fefb029c93f2aa3db7361658b0b4e9805b66 /internal/world/world.go | |
| parent | 87dacfbb3dd16e7f55a82361eace98f9a39d75c8 (diff) | |
| download | thehouseoficarus-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.go | 37 |
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) + } + } +} |
