1 """ Tools for creating roach actors. """
3 from pgzero.loaders import images
4 from pygame.constants import BLEND_RGBA_MULT
5 from .actors.animsurf import AnimatedSurfActor
6 from .serums import roach_serum_color
35 def roach_by_name(world, roach_name):
36 roaches = [r for r in world.roaches if r.name == roach_name]
42 def next_roach_name(world):
43 roach_names = [x['name'] for x in world.roaches]
45 if cand not in roach_names:
49 def build_roach(world, name=None, health=5, **kw):
51 name = next_roach_name(world)
62 class WorldRoach(object):
63 """A roach proxy with no properties for display on the game level."""
73 def __init__(self, suffix, frames=4):
77 def assemble_frame(self, i, color, roach_data, weapon=None):
78 roach = images.load("roach%s/roach_%d" % (self.suffix, i + 1))
79 eyes = images.load("roach%s/eyes_%d" % (self.suffix, i + 1))
82 frame.fill(color, None, BLEND_RGBA_MULT)
84 frame = weapon.surf.copy()
86 roach.fill(color, None, BLEND_RGBA_MULT)
87 frame.blit(roach, (0, 0))
88 frame.blit(eyes, (0, 0))
91 def assemble(self, roach_data, weapon=None):
92 color = roach_serum_color(roach_data)
95 self.assemble_frame(i, color, roach_data, weapon)
96 for i in range(self.frames)]
97 return AnimatedSurfActor(frames)
100 default_roaches = RoachFactory("")
101 t32_roaches = RoachFactory("_32")
102 t21_roaches = RoachFactory("_21")
103 big_roaches = RoachFactory("_big")
104 roaches_quartet = RoachFactory("_quartet")
105 roaches_nonet = RoachFactory("_nonet")