Walking roaches.
[koperkapel.git] / koperkapel / scenes / roach_management.py
index cecd6ef30d2ff6e29233729b7db727009001ecdc..d0afc4e88f014a963c9e05994ae5e8fb4b2d46ce 100644 (file)
@@ -4,6 +4,7 @@ from pgzero.constants import keys, mouse
 from pgzero.actor import Actor
 from ..actors.buttons import TextButton, ImageButton
 from ..constants import WIDTH, HEIGHT
+from ..roaches import big_roaches
 from ..vehicles.base import Vehicle
 from .base import Scene, ChangeSceneEvent
 
@@ -27,7 +28,6 @@ class RoachesScene(Scene):
 
     def __init__(self):
         super().__init__()
-        self._roach_actors = {}
         self._roaches = self.actors.add_layer("roaches", level=10)
         self._pads = self.actors.add_layer("pads", level=5)
         self._seats = self.actors.add_layer("seats", level=5)
@@ -39,6 +39,7 @@ class RoachesScene(Scene):
         self._vehicle = Vehicle.by_type(world.vehicles.current)
         self._init_bg()
         self._init_seats()
+        self._init_roaches(world.roaches)
 
     def _init_bg(self):
         self.actors.default.add(self._vehicle.background)
@@ -51,6 +52,18 @@ class RoachesScene(Scene):
                 seat.pos[0] * vrad + VEHICLE_MID_X,
                 seat.pos[1] * vrad + VEHICLE_MID_Y)
 
+    def _init_roaches(self, roaches):
+        for i, roach in enumerate(roaches):
+            roach_actor = self._roaches.add(big_roaches.assemble(roach))
+            # TODO: less hacky seat assignment
+            if i < len(self._seats):
+                roach_actor.pos = self._seats[i].pos
+                # actor = TextButton("%s [%s]" % (
+                #     roach.name,
+                #     ", ".join("%s=%s" % kv for kv in sorted(
+                #         roach.attributes.items()),
+                #     )))
+
     def _init_pads(self):
         self._roach_pad = self._pads.add(
             Actor("roach_management/roach_pad", anchor=("left", "bottom")))
@@ -101,21 +114,6 @@ class RoachesScene(Scene):
     def _eject_roach(self):
         print("Eject roach.")
 
-    def update(self, world, dt):
-        for i, roach in enumerate(world.roaches):
-            if roach.name in self._roach_actors:
-                actor = self._roach_actors[roach.name]
-            else:
-                actor = TextButton("%s [%s]" % (
-                    roach.name,
-                    ", ".join("%s=%s" % kv for kv in sorted(
-                        roach.attributes.items()),
-                    )))
-                self._roach_actors[roach.name] = actor
-                self._roaches.add(actor)
-            # TODO: remove missing roaches
-            actor.pos = (300, 100 + i * 100)
-
     def on_key_down(self, key, mod, unicode):
         if key == keys.ESCAPE:
             from .menu import MenuScene