- 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()),
- # )))
+ seat.vehicle_pos[0] + VEHICLE_MID_X,
+ seat.vehicle_pos[1] + VEHICLE_MID_Y)
+ self._seat_layer[self._seat_pos].selected = True
+
+ def _init_roaches(self, world):
+ self._roach_actors = {}
+ for roach in world.roaches:
+ self._roach_actors[roach.name] = big_roaches.assemble(roach)
+
+ def _init_serums(self):
+ self._serum_actors = {
+ serum: big_serums.assemble(serum) for serum in SERUMS}
+
+ def _update_inventory(self, world):
+ self._inventory_layer.clear()
+ serums = world.serums
+ if not serums:
+ return
+ self._inventory_pos %= len(serums)
+ serum_actor = self._serum_actors[serums[self._inventory_pos]]
+ inv_pad_centre = self._inventory_pad.center
+ serum_actor.pos = (
+ inv_pad_centre[0] + SERUM_OFFSET[0],
+ inv_pad_centre[1] + SERUM_OFFSET[1])
+ self._inventory_layer.add(serum_actor)
+
+ def _update_roaches(self, world):
+ self._roach_layer.clear()
+ seating = self._vehicle.seating(world)
+ self._outside_roaches = []
+ for roach in world.roaches:
+ seat_pos = seating.get(roach.name)
+ if seat_pos is not None:
+ roach_actor = self._roach_actors[roach.name]
+ roach_actor.pos = self._seat_layer[seat_pos].pos
+ self._roach_layer.add(roach_actor)
+ else:
+ self._outside_roaches.append(roach.name)
+ if self._outside_roaches:
+ self._outside_roach_pos %= len(self._outside_roaches)
+ roach_actor = self._roach_actors[
+ self._outside_roaches[self._outside_roach_pos]]
+ roach_pad_center = self._roach_pad.center
+ roach_actor.pos = (
+ roach_pad_center[0] + ROACH_PAD_OFFSET[0],
+ roach_pad_center[1] + ROACH_PAD_OFFSET[1])
+ self._roach_layer.add(roach_actor)
+ else:
+ self._outside_roach_pos = 0