from pygame.constants import BLEND_RGBA_MULT
from .actors.animsurf import AnimatedSurfActor
from .serums import roach_serum_color
+from .util import safepath
+
+NAMES = [
+ "roupert",
+ "roachel",
+ "roeginald",
+ "roichard",
+ "rory",
+ "roalph",
+ "roabia",
+ "roafi",
+ "roaman",
+ "roemus",
+ "roadley",
+ "roanaell",
+ "roashwan",
+ "roashid",
+ "roaphael",
+ "roenfield",
+ "roani",
+ "roaya",
+ "roaza",
+ "robekka",
+ "rogan",
+ "roiana",
+ "roberta",
+]
def roach_by_name(world, roach_name):
return roaches[0]
+def next_roach_name(world):
+ roach_names = [x['name'] for x in world.roaches]
+ for cand in NAMES:
+ if cand not in roach_names:
+ return cand
+
+
+def build_roach(world, name=None, health=5, **kw):
+ if name is None:
+ name = next_roach_name(world)
+ if name is None:
+ return
+ roach = {
+ "name": name,
+ "health": health,
+ }
+ roach.update(kw)
+ return roach
+
+
class WorldRoach(object):
"""A roach proxy with no properties for display on the game level."""
self.suffix = suffix
self.frames = 4
- def assemble_frame(self, i, color, roach_data):
- roach = images.load("roach%s/roach_%d" % (self.suffix, i + 1))
- eyes = images.load("roach%s/eyes_%d" % (self.suffix, i + 1))
- frame = roach.copy()
- frame.fill(color, None, BLEND_RGBA_MULT)
+ def assemble_frame(self, i, color, roach_data, weapon=None):
+ roach = images.load(safepath("roach%s/roach_%d") % (self.suffix, i + 1))
+ eyes = images.load(safepath("roach%s/eyes_%d") % (self.suffix, i + 1))
+ if weapon is None:
+ frame = roach.copy()
+ frame.fill(color, None, BLEND_RGBA_MULT)
+ else:
+ frame = weapon.surf.copy()
+ roach = roach.copy()
+ roach.fill(color, None, BLEND_RGBA_MULT)
+ frame.blit(roach, (0, 0))
frame.blit(eyes, (0, 0))
return frame
- def assemble(self, roach_data):
- color = roach_serum_color(roach_data)
+ def assemble(self, roach_data, color=None, weapon=None):
+ if not color:
+ color = roach_serum_color(roach_data)
+ frames = []
frames = [
- self.assemble_frame(i, color, roach_data)
+ self.assemble_frame(i, color, roach_data, weapon)
for i in range(self.frames)]
return AnimatedSurfActor(frames)