X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=koperkapel%2Froaches.py;h=da362a306361b6b28006b641ffb5ac3ff4401523;hb=0cc8d28563e4caeec279a0207ac160bb9fffb217;hp=b39d189fe669c6571047973feb33f8b7b6e4eecc;hpb=bc8a030300c8367c5412585ffe37c07ce2d7bcee;p=koperkapel.git diff --git a/koperkapel/roaches.py b/koperkapel/roaches.py index b39d189..da362a3 100644 --- a/koperkapel/roaches.py +++ b/koperkapel/roaches.py @@ -1,29 +1,62 @@ """ Tools for creating roach actors. """ -import random -from pgzero.clock import each_tick from pgzero.loaders import images from pygame.constants import BLEND_RGBA_MULT -from .actors.orientatedsurf import OrientatedSurfActor +from .actors.animsurf import AnimatedSurfActor from .serums import roach_serum_color +NAMES = [ + "roupert", + "roachel", + "roeginald", + "roichard", + "rory", + "roalph", + "roabia", + "roafi", + "roaman", + "roemus", + "roadley", + "roanaell", + "roashwan", + "roashid", + "roaphael", + "roenfield", + "roani", + "roaya", + "roaza", + "robekka", + "rogan", + "roiana", + "roberta", +] -class RoachActor(OrientatedSurfActor): - def __init__(self, frames): - self._frames = frames - self._frame = random.randint(0, len(frames) - 1) - self._dt = 0 - self._cycle_dt = 0.2 - each_tick(self.update) - super().__init__(surf=frames[self._frame], angle=0) - def update(self, dt): - self._dt += dt - while self._dt > self._cycle_dt: - self._dt -= self._cycle_dt - self._frame += 1 - self._frame %= len(self._frames) - self.surf = self._frames[self._frame] +def roach_by_name(world, roach_name): + roaches = [r for r in world.roaches if r.name == roach_name] + if not roaches: + return None + 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): @@ -54,7 +87,7 @@ class RoachFactory: frames = [ self.assemble_frame(i, color, roach_data) for i in range(self.frames)] - return RoachActor(frames) + return AnimatedSurfActor(frames) default_roaches = RoachFactory("")