X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=koperkapel%2Fserums.py;h=f80163932538b22e83db90ac3875eedd0aed760f;hb=HEAD;hp=951d002490bc7fbb14b9273fcdd1338fd27354d9;hpb=cda4116741c03cb69ee972a4285251126fa4de2e;p=koperkapel.git diff --git a/koperkapel/serums.py b/koperkapel/serums.py index 951d002..f801639 100644 --- a/koperkapel/serums.py +++ b/koperkapel/serums.py @@ -1,12 +1,25 @@ """ Tools for creating serum actors. """ +import random +from pgzero.loaders import images +from pygame.constants import BLEND_RGBA_MULT +from pygame.transform import rotate +from .actors.surf import SurfActor +from .util import safepath SERUMS = ["smart", "fast", "strong"] +SERUM_TILENAME_MAP = { + "smart": "intelligence", + "fast": "speed", + "strong": "strength", +} + SERUM_OVERLAY_COLORS = { "smart": (0, 0, 255, 255), # blue "fast": (0, 255, 0, 255), # green "strong": (255, 0, 255, 255), # purple + "health": (255, 0, 0, 255), # red "none": (170, 68, 0, 255), # brown } @@ -16,3 +29,39 @@ def roach_serum_color(roach): if getattr(roach, serum_name): return SERUM_OVERLAY_COLORS[serum_name] return SERUM_OVERLAY_COLORS["none"] + + +def roach_is_serumless(roach): + for serum_name in SERUMS: + if getattr(roach, serum_name): + return False + return True + + +class SerumFactory: + def __init__(self, suffix): + self.suffix = suffix + + def assemble_icon(self, name, color=None): + assert name in SERUMS + color = color or name + serum_icon = images.load(safepath("serum%s/%s") % ( + self.suffix, SERUM_TILENAME_MAP[name],)) + frame = serum_icon.copy() + frame.fill(SERUM_OVERLAY_COLORS[color], None, BLEND_RGBA_MULT) + return frame + + def assemble(self, name): + assert name in SERUMS + puddle = images.load(safepath("serum%s/serum") % (self.suffix,)) + puddle = rotate(puddle, 90 * random.randint(0, 3)) + serum_icon = images.load(safepath("serum%s/%s") % ( + self.suffix, SERUM_TILENAME_MAP[name],)) + frame = puddle.copy() + frame.fill(SERUM_OVERLAY_COLORS[name], None, BLEND_RGBA_MULT) + frame.blit(serum_icon, (0, 0)) + return SurfActor(frame) + + +default_serums = SerumFactory("") +big_serums = SerumFactory("_big")