X-Git-Url: https://git.ctpug.org.za/?a=blobdiff_plain;f=koperkapel%2Fweapons.py;fp=koperkapel%2Fweapons.py;h=cc9f324b5a49a32b5a77b52c8c5be52b4f497216;hb=addae4e2db35ab4ae63a8531ddc06eea63877c4f;hp=0000000000000000000000000000000000000000;hpb=d9769ee6f079636f98610eb330b7d9e29635632c;p=koperkapel.git diff --git a/koperkapel/weapons.py b/koperkapel/weapons.py new file mode 100644 index 0000000..cc9f324 --- /dev/null +++ b/koperkapel/weapons.py @@ -0,0 +1,46 @@ +""" Tools for dealing with weapons. """ + +from pgzero.loaders import images +from .actors.surf import SurfActor + + +class Weapon: + def __init__(self, name, damage, image_name=None, bullet_range=0, + can_tape=True): + self.name = name + self.image_name = image_name or name + self.damage = damage + self.bullet_range = bullet_range + self.can_tape = can_tape + + +WEAPONS = [ + Weapon("spit", damage=1, bullet_range=2, can_tape=False, + image_name="blank"), + Weapon("butter_knife", damage=2), + Weapon("crowbar", damage=4), + Weapon("gun", damage=4, bullet_range=4), +] + +WEAPON_LOOKUP = {w.name: w for w in WEAPONS} + + +class WeaponActor(SurfActor): + def __init__(self, weapon, **kw): + super().__init__(**kw) + self.weapon = weapon + + +class WeaponFactory: + + def assemble(self, weapon_name, tape=False): + weapon = WEAPON_LOOKUP[weapon_name] + surf = images.load("weapons/%s" % (weapon.image_name,)) + surf = surf.copy() + if tape and weapon.can_tape: + tape_surf = images.load("weapons/tape") + surf.blit(tape_surf, (0, 0)) + return WeaponActor(weapon, surf=surf) + + +default_weapons = WeaponFactory()