home · contact · privacy
Avoid Thing collisions.
[plomrogue2-experiments] / game_common.py
index 6a77d9c6fa0c5062f73a1b089089416bc054c82e..0598dfa77e61f715c224a84f7cedaaedb158664b 100644 (file)
@@ -27,11 +27,11 @@ class World:
         self.terrain_map = self.terrain_map[:y * width_map] + line + \
                            self.terrain_map[(y + 1) * width_map:]
 
-    def get_thing(self, i):
+    def get_thing(self, id_):
         for thing in self.things:
-            if i == thing.id_:
+            if id_ == thing.id_:
                 return thing
-        t = self.Thing(self, i)
+        t = self.Thing(self, id_)
         self.things += [t]
         return t
 
@@ -43,3 +43,25 @@ class Thing:
         self.id_ = id_
         self.type_ = '?'
         self.position = [0,0]
+
+
+class Commander:
+
+    def cmd_MAP_SIZE(self, yx):
+        """Set self.map_size to yx, redraw self.terrain_map as '?' cells."""
+        self.world.set_map_size(yx)
+    cmd_MAP_SIZE.argtypes = 'yx_tuple:nonneg'
+
+    def cmd_TERRAIN_LINE(self, y, terrain_line):
+        self.world.set_map_line(y, terrain_line)
+    cmd_TERRAIN_LINE.argtypes = 'int:nonneg string'
+
+    def cmd_THING_TYPE(self, i, type_):
+        t = self.world.get_thing(i)
+        t.type_ = type_
+    cmd_THING_TYPE.argtypes = 'int:nonneg string'
+
+    def cmd_THING_POS(self, i, yx):
+        t = self.world.get_thing(i)
+        t.position = list(yx)
+    cmd_THING_POS.argtypes = 'int:nonneg yx_tuple:nonneg'