Pass in weapon explicitly to avoid it being confused with the color.
[koperkapel.git] / koperkapel / vehicles / walking.py
index 9c19aa2264e7f730e0a4ea303b4c7e5310944848..57c53a83c98654fa4028e059383abe742532460f 100644 (file)
@@ -1,19 +1,32 @@
 """ A vehicle to represent roaches on foot. """
 
-import math
-from .base import Vehicle, Seat
+from .base import Vehicle, circle_of_seats
+from ..roaches import (
+    default_roaches, roaches_quartet, roaches_nonet, WorldRoach)
+from ..weapons import default_weapons
 
 
 class Walking(Vehicle):
 
     vehicle_type = "walking"
+    weapons_taped_on = False
 
     def init_seats(self):
-        n_seats = 6
-        d_theta = 2 * math.pi / n_seats
-        return [
-            Seat(
-                vehicle=self,
-                pos=(math.sin(i * d_theta), math.cos(i * d_theta)))
-            for i in range(n_seats)
-        ]
+        return circle_of_seats(6, vehicle=self)
+
+    def get_avatar(self, world):
+        weapon = default_weapons.assemble(
+            world.weapons.current, tape=self.weapons_taped_on)
+        num_roaches = len(world.roaches)
+        roach = WorldRoach()
+        if num_roaches == 1:
+            # Return a single large roach
+            avatar = default_roaches.assemble(roach, weapon=weapon)
+            avatar.anchor = (0, 0)
+        elif num_roaches < 6:
+            avatar = roaches_quartet.assemble(roach, weapon=weapon)
+            avatar.anchor = (0, 0)
+        else:
+            avatar = roaches_nonet.assemble(roach, weapon=weapon)
+            avatar.anchor = (0, 0)
+        return avatar