diff options
Diffstat (limited to 'internal/world/world.go')
| -rw-r--r-- | internal/world/world.go | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/internal/world/world.go b/internal/world/world.go index 3dfa99b..b582faf 100644 --- a/internal/world/world.go +++ b/internal/world/world.go @@ -37,7 +37,9 @@ func New(dataDir string) *World { } func (w *World) LoadRoom(id int) (*Room, error) { + w.mu.Lock() path, ok := w.roomPathIndex[id] + w.mu.Unlock() if !ok { return nil, fmt.Errorf("read room %d: no such room", id) } @@ -119,7 +121,9 @@ func (w *World) SeedGroundItems(roomID int) { } func (w *World) RoomIndex() map[int]bool { - ids := make(map[int]bool) + w.mu.Lock() + defer w.mu.Unlock() + ids := make(map[int]bool, len(w.roomPathIndex)) for id := range w.roomPathIndex { ids[id] = true } @@ -139,6 +143,8 @@ func (w *World) AddRoomPath(id int, path string) { } func (w *World) GetRoomPath(id int) (string, bool) { + w.mu.Lock() + defer w.mu.Unlock() path, ok := w.roomPathIndex[id] return path, ok } |
