home · contact · privacy
Change MAP command to ensuring map exists, not necessarily creating it.
[plomrogue2-experiments] / new / plomrogue / game.py
index de6f0c03d00f22a23f278b5c8dfa4c08b8c05e52..7bf958f2a513714f99158475a0e3220d3db1530c 100755 (executable)
@@ -79,7 +79,9 @@ class World(WorldBase):
             return 0
         return self.things[-1].id_ + 1
 
-    def new_map(self, map_pos):
+    def ensure_map(self, map_pos):
+        if map_pos in self.maps and self.maps[map_pos].size == self.map_size:
+            return
         self.maps[map_pos] = self.game.map_type(self.map_size)
 
     def proceed_to_next_player_turn(self):
@@ -136,15 +138,15 @@ class World(WorldBase):
         self.turn = 0
         self.maps = {}
         self.map_size = yx
-        self.new_map(YX(0,0))
-        self.new_map(YX(0,1))
-        self.new_map(YX(1,1))
-        self.new_map(YX(1,0))
-        self.new_map(YX(1,-1))
-        self.new_map(YX(0,-1))
-        self.new_map(YX(-1,-1))
-        self.new_map(YX(-1,0))
-        self.new_map(YX(-1,1))
+        self.ensure_map(YX(0,0))
+        self.ensure_map(YX(0,1))
+        self.ensure_map(YX(1,1))
+        self.ensure_map(YX(1,0))
+        self.ensure_map(YX(1,-1))
+        self.ensure_map(YX(0,-1))
+        self.ensure_map(YX(-1,-1))
+        self.ensure_map(YX(-1,0))
+        self.ensure_map(YX(-1,1))
         for map_pos in self.maps:
             map_ = self.maps[map_pos]
             if YX(0,0) == map_pos:
@@ -199,7 +201,7 @@ class Game:
 
     def get_string_options(self, string_option_type):
         if string_option_type == 'direction':
-            return self.world.maps[YX(0,0)].get_directions()
+            return self.map_type().get_directions()
         elif string_option_type == 'thingtype':
             return list(self.thing_types.keys())
         return None