from pgzero.loaders import images
from .actors.animsurf import AnimatedSurfActor
+from .util import safepath
class Weapon:
def __init__(self, name, damage, image_name=None, bullet_range=0,
- can_tape=True, frames=("_1",)):
+ can_tape=True, frames=("_1",), sound=None):
self.name = name
self.image_name = image_name or name
self.frames = frames
self.damage = damage
self.bullet_range = bullet_range
self.can_tape = can_tape
+ self.sound = sound
WEAPONS = [
Weapon("spit", damage=1, bullet_range=2, can_tape=False,
- image_name="blank", frames=("",)),
+ image_name="blank", frames=("",), sound="fire_spit"),
Weapon("butter_knife", damage=2),
Weapon("crowbar", damage=4),
- Weapon("gun", damage=4, bullet_range=4),
+ Weapon("gun", damage=4, bullet_range=4, sound='gun_fire'),
]
WEAPON_LOOKUP = {w.name: w for w in WEAPONS}
+def weapon_by_name(weapon_name):
+ return WEAPON_LOOKUP[weapon_name]
+
+
class WeaponActor(AnimatedSurfActor):
def __init__(self, weapon, **kw):
super().__init__(**kw)
class WeaponFactory:
def assemble_frame(self, suffix, weapon, tape):
- surf = images.load("weapons/%s%s" % (weapon.image_name, suffix))
+ surf = images.load(safepath("weapons/%s%s")
+ % (weapon.image_name, suffix))
frame = surf.copy()
if tape:
- tape_surf = images.load("weapons/tape")
+ tape_surf = images.load(safepath("weapons/tape"))
frame.blit(tape_surf, (0, 0))
return frame
def assemble(self, weapon_name, tape=False):
- weapon = WEAPON_LOOKUP[weapon_name]
+ weapon = weapon_by_name(weapon_name)
tape = tape and weapon.can_tape
frames = [
self.assemble_frame(suffix, weapon, tape)