projects
/
koperkapel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Play weapon sounds when firing.
[koperkapel.git]
/
koperkapel
/
weapons.py
diff --git
a/koperkapel/weapons.py
b/koperkapel/weapons.py
index da8c4c3712b6ccafeca80fed1c17bb929c9384ea..ee83eb816c6eb5c9295db74c05fb78199d506e56 100644
(file)
--- a/
koperkapel/weapons.py
+++ b/
koperkapel/weapons.py
@@
-1,31
+1,43
@@
""" Tools for dealing with weapons. """
""" Tools for dealing with weapons. """
-from pgzero.loaders import images
+from pgzero.loaders import images
, sounds
from .actors.animsurf import AnimatedSurfActor
from .actors.animsurf import AnimatedSurfActor
+from .util import safepath
class Weapon:
def __init__(self, name, damage, image_name=None, bullet_range=0,
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.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 = None
+ if sound:
+ self.sound = sounds.load(sound)
+
+ def play_sound(self):
+ if self.sound:
+ self.sound.play()
WEAPONS = [
Weapon("spit", damage=1, bullet_range=2, can_tape=False,
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("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}
]
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 WeaponActor(AnimatedSurfActor):
def __init__(self, weapon, **kw):
super().__init__(**kw)
@@
-35,15
+47,16
@@
class WeaponActor(AnimatedSurfActor):
class WeaponFactory:
def assemble_frame(self, suffix, weapon, tape):
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:
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):
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)
tape = tape and weapon.can_tape
frames = [
self.assemble_frame(suffix, weapon, tape)