home · contact · privacy
Fix reproducibility bug due to unstable iteration order.
[plomrogue2-experiments] / new / plomrogue / things.py
index 243547b2ffb854b330fcb998a27882d8ecda2ef9..9bc84907bb757fe0251b47ca7808f1d64cebe4a2 100644 (file)
@@ -17,6 +17,11 @@ class ThingBase:
 
 class Thing(ThingBase):
     blocking = False
+    in_inventory = False
+
+    def __init__(self, *args, **kwargs):
+        super().__init__(*args, **kwargs)
+        self.inventory = []
 
     def proceed(self):
         pass
@@ -58,7 +63,7 @@ class ThingAnimate(Thing):
         neighbors = dijkstra_map.get_neighbors(tuple(self.position))
         n = n_max
         target_direction = None
-        for direction in neighbors:
+        for direction in sorted(neighbors.keys()):
             yx = neighbors[direction]
             if yx is not None:
                 n_new = dijkstra_map[yx]
@@ -140,7 +145,7 @@ class ThingAnimate(Thing):
         stencil = self.get_stencil()
         visible_things = []
         for thing in self.world.things:
-            if stencil[thing.position] == '.':
+            if (not thing.in_inventory) and stencil[thing.position] == '.':
                 visible_things += [thing]
         return visible_things