aboutsummaryrefslogtreecommitdiff
path: root/internal/world/world.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/world/world.go')
-rw-r--r--internal/world/world.go8
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
}