Fixed edge of grave warning. Fixed contact sound for weapon.
This commit is contained in:
21
src/level.py
21
src/level.py
@@ -16,6 +16,8 @@ class Level:
|
|||||||
self.bouncing_items = []
|
self.bouncing_items = []
|
||||||
self.projectiles = [] # Track active projectiles
|
self.projectiles = [] # Track active projectiles
|
||||||
self.player = Player(levelData["player_start"]["x"], levelData["player_start"]["y"])
|
self.player = Player(levelData["player_start"]["x"], levelData["player_start"]["y"])
|
||||||
|
self.edge_warning_channel = None
|
||||||
|
self.weapon_hit_channel = None
|
||||||
|
|
||||||
# Load objects and enemies from level data
|
# Load objects and enemies from level data
|
||||||
for obj in levelData["objects"]:
|
for obj in levelData["objects"]:
|
||||||
@@ -128,8 +130,14 @@ class Level:
|
|||||||
# Check for enemy hits
|
# Check for enemy hits
|
||||||
for enemy in self.enemies:
|
for enemy in self.enemies:
|
||||||
if enemy.isActive and enemy.xPos >= attackRange[0] and enemy.xPos <= attackRange[1]:
|
if enemy.isActive and enemy.xPos >= attackRange[0] and enemy.xPos <= attackRange[1]:
|
||||||
self.sounds[self.player.currentWeapon.hitSound].play()
|
if self.weapon_hit_channel is None or not self.weapon_hit_channel.get_busy():
|
||||||
|
self.weapon_hit_channel = self.sounds[self.player.currentWeapon.hitSound].play()
|
||||||
|
|
||||||
enemy.take_damage(self.player.currentWeapon.damage)
|
enemy.take_damage(self.player.currentWeapon.damage)
|
||||||
|
else:
|
||||||
|
# Reset weapon hit channel when not attacking
|
||||||
|
if self.weapon_hit_channel is not None and not self.weapon_hit_channel.get_busy():
|
||||||
|
self.weapon_hit_channel = None
|
||||||
|
|
||||||
# Check for coffin hits - only if we have any coffins
|
# Check for coffin hits - only if we have any coffins
|
||||||
for obj in self.objects:
|
for obj in self.objects:
|
||||||
@@ -153,9 +161,14 @@ class Level:
|
|||||||
distance = abs(self.player.xPos - obj.xPos)
|
distance = abs(self.player.xPos - obj.xPos)
|
||||||
# Check if within 1 tile and moving
|
# Check if within 1 tile and moving
|
||||||
|
|
||||||
if distance <= 1 and not self.player.isJumping:
|
if distance <= 2 and not self.player.isJumping:
|
||||||
# Play edge warning sound (don't need to track the channel)
|
# Only play edge warning if not already playing
|
||||||
self.sounds['edge'].play()
|
if self.edge_warning_channel is None or not self.edge_warning_channel.get_busy():
|
||||||
|
self.edge_warning_channel = self.sounds['edge'].play()
|
||||||
|
|
||||||
|
else:
|
||||||
|
if self.edge_warning_channel is not None and not self.edge_warning_channel.get_busy():
|
||||||
|
self.edge_warning_channel = None
|
||||||
|
|
||||||
if obj.is_in_range(self.player.xPos):
|
if obj.is_in_range(self.player.xPos):
|
||||||
if obj.isCollectible and self.player.isJumping:
|
if obj.isCollectible and self.player.isJumping:
|
||||||
|
Reference in New Issue
Block a user