home · contact · privacy
Decouple awakeness/sleep stats from Map to MapChunk.
authorChristian Heller <c.heller@plomlompom.de>
Mon, 23 Dec 2019 23:49:50 +0000 (00:49 +0100)
committerChristian Heller <c.heller@plomlompom.de>
Mon, 23 Dec 2019 23:49:50 +0000 (00:49 +0100)
new/plomrogue/game.py
new/plomrogue/mapping.py

index a2421ad6417b9b195930c947d1eb44c5c0e6eb6f..d20713cd61fa219d387808ef3c2e9bdbd8ac4fff 100755 (executable)
@@ -8,7 +8,7 @@ from plomrogue.commands import (cmd_GEN_WORLD, cmd_GET_GAMESTATE,
                                 cmd_GET_PICKABLE_ITEMS, cmd_MAP_SIZE,
                                 cmd_TERRAIN_LINE, cmd_PLAYER_ID,
                                 cmd_TURN, cmd_SWITCH_PLAYER, cmd_SAVE)
-from plomrogue.mapping import MapGeometryHex, Map, YX
+from plomrogue.mapping import MapGeometryHex, MapChunk, YX
 from plomrogue.parser import Parser
 from plomrogue.io import GameIO
 from plomrogue.misc import quote
@@ -209,8 +209,8 @@ class Game(GameBase):
     def get_map(self, map_pos):
         if not (map_pos in self.maps and
                 self.maps[map_pos].size == self.map_size):
-            self.maps[map_pos] = Map(self.map_size,
-                                     awakeness=self.max_map_awakeness)
+            self.maps[map_pos] = MapChunk(self.map_size)
+            self.maps[map_pos].awake = self.max_map_awakeness
             for pos in self.maps[map_pos]:
                 self.maps[map_pos][pos] = '.'
         return self.maps[map_pos]
@@ -270,6 +270,8 @@ class Game(GameBase):
                         t = self.add_thing_at_random(map_pos, t_type)
                         if average_health:
                             t.health = average_health
+                        #if hasattr(t, 'health'):
+                        #    print('DEBUG create', t.type_, t.health)
 
             for map_pos in self.maps:
                 m = self.maps[map_pos]
@@ -277,6 +279,7 @@ class Game(GameBase):
 
                     # Newly inside chunks are regenerated from .stats.
                     if not m.awake:
+                        #print('DEBUG regen stats', map_pos, m.stats)
                         regenerate_chunk_from_map_stats(m)
 
                     # Inside chunks are set to max .awake and don't collect
@@ -299,6 +302,8 @@ class Game(GameBase):
                                 m.stats[t.type_]['health'] += t.health
                             if not m.awake:
                                 del self.things[self.things.index(t)]
+                    #if not m.awake:
+                    #    print('DEBUG sleep stats', map_pos, m.stats)
 
         while True:
             player_i = self.things.index(self.player)
index 9ae5444632db89a13cbccf9f88c0b041353054c2..b670938e64658e2ff34306483bdb6cb7adf12d77 100644 (file)
@@ -18,13 +18,10 @@ class YX(collections.namedtuple('YX', ('y', 'x'))):
 
 class Map:
 
-    def __init__(self, size=YX(0, 0), init_char = '?', start_indented=True,
-                 awakeness=0):
+    def __init__(self, size=YX(0, 0), init_char = '?', start_indented=True):
         self.size = size
         self.terrain = init_char * self.size_i
         self.start_indented = start_indented
-        self.awake = awakeness  # asleep if zero
-        self.stats = {}
 
     def __getitem__(self, yx):
         return self.terrain[self.get_position_index(yx)]
@@ -67,6 +64,12 @@ class Map:
 
 
 
+class MapChunk(Map):
+    awake = 0  # asleep if zero
+    stats = {}
+
+
+
 class MapGeometry():
 
     def get_directions(self):