home · contact · privacy
Use self.max_map_awakeness to recude magic numbering.
[plomrogue2-experiments] / new / plomrogue / mapping.py
index 4c7658de4af83168481d24f3d16edd23a67f1813..9ae5444632db89a13cbccf9f88c0b041353054c2 100644 (file)
@@ -18,10 +18,13 @@ class YX(collections.namedtuple('YX', ('y', 'x'))):
 
 class Map:
 
-    def __init__(self, size=YX(0, 0), init_char = '?', start_indented=True):
+    def __init__(self, size=YX(0, 0), init_char = '?', start_indented=True,
+                 awakeness=0):
         self.size = size
-        self.terrain = init_char*self.size_i
+        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)]
@@ -101,17 +104,20 @@ class MapGeometry():
     def pos_in_view(self, pos, offset, maps_size):
         return self.undouble_coordinate(maps_size, pos) - offset
 
-    def get_view(self, maps_size, get_map, radius, view_offset):
+    def get_view_and_seen_maps(self, maps_size, get_map, radius, view_offset):
         m = Map(size=YX(radius*2+1, radius*2+1),
                 start_indented=(view_offset.y % 2 == 0))
+        seen_maps = []
         for pos in m:
             seen_pos = self.correct_double_coordinate(maps_size, (0,0),
                                                       pos + view_offset)
-            seen_map = get_map(seen_pos[0], False)
+            if seen_pos[0] not in seen_maps:
+                seen_maps += [seen_pos[0]]
+            seen_map = get_map(seen_pos[0])
             if seen_map is None:
                 seen_map = Map(size=maps_size)
             m[pos] = seen_map[seen_pos[1]]
-        return m
+        return m, seen_maps
 
     def correct_double_coordinate(self, map_size, big_yx, little_yx):