diff --git a/src/main/java/cz/jzitnik/game/core/sound/Sound.java b/src/main/java/cz/jzitnik/game/core/sound/Sound.java index 5db11fe..c712748 100644 --- a/src/main/java/cz/jzitnik/game/core/sound/Sound.java +++ b/src/main/java/cz/jzitnik/game/core/sound/Sound.java @@ -46,7 +46,7 @@ public class Sound { var resources = annotation.resourceLocation(); var resource = resources[random.nextInt(resources.length)]; - var typeVolume = anot.isAnnotationPresent(SoundTypeSet.class) + var typeVolume = anot == null ? 100 : anot.isAnnotationPresent(SoundTypeSet.class) ? anot.getAnnotation(SoundTypeSet.class).value().getVolume() : 0; diff --git a/src/main/java/cz/jzitnik/game/core/sound/SoundKey.java b/src/main/java/cz/jzitnik/game/core/sound/SoundKey.java index b376eb0..a2563bb 100644 --- a/src/main/java/cz/jzitnik/game/core/sound/SoundKey.java +++ b/src/main/java/cz/jzitnik/game/core/sound/SoundKey.java @@ -8,4 +8,6 @@ public enum SoundKey { GRAVEL_WALKING, WOOD, + + HURT, } diff --git a/src/main/java/cz/jzitnik/game/core/sound/registry/HurtSound.java b/src/main/java/cz/jzitnik/game/core/sound/registry/HurtSound.java new file mode 100644 index 0000000..8a7c640 --- /dev/null +++ b/src/main/java/cz/jzitnik/game/core/sound/registry/HurtSound.java @@ -0,0 +1,10 @@ +package cz.jzitnik.game.core.sound.registry; + +import cz.jzitnik.game.annotations.SoundRegistry; +import cz.jzitnik.game.core.sound.SoundKey; + +@SoundRegistry(key = SoundKey.HURT, resourceLocation = { + "hurt.ogg", +}) +public class HurtSound { +} diff --git a/src/main/java/cz/jzitnik/game/entities/Player.java b/src/main/java/cz/jzitnik/game/entities/Player.java index fb8c498..130314b 100644 --- a/src/main/java/cz/jzitnik/game/entities/Player.java +++ b/src/main/java/cz/jzitnik/game/entities/Player.java @@ -10,6 +10,7 @@ import java.util.List; import cz.jzitnik.game.Game; import cz.jzitnik.game.annotations.ReduceFallDamage; import cz.jzitnik.game.core.reducefalldamage.Reducer; +import cz.jzitnik.game.core.sound.SoundKey; import cz.jzitnik.tui.ScreenRenderer; @Getter @@ -62,6 +63,7 @@ public class Player implements Serializable { health = Math.max(0, health - amount); if (amount != 0) { game.playerHit(screenRenderer); + game.getGameStates().dependencies.sound.playSound(game.getConfiguration(), SoundKey.HURT, null); } if (health == 0) { diff --git a/src/main/resources/sounds/hurt.ogg b/src/main/resources/sounds/hurt.ogg new file mode 100644 index 0000000..b4cbc12 Binary files /dev/null and b/src/main/resources/sounds/hurt.ogg differ