diff --git a/assets/sounds/block1.wav b/assets/sounds/block1.wav new file mode 100644 index 0000000..8008803 Binary files /dev/null and b/assets/sounds/block1.wav differ diff --git a/assets/sounds/block2.wav b/assets/sounds/block2.wav new file mode 100644 index 0000000..e133a6a Binary files /dev/null and b/assets/sounds/block2.wav differ diff --git a/assets/sounds/block3.wav b/assets/sounds/block3.wav new file mode 100644 index 0000000..4a3e1e6 Binary files /dev/null and b/assets/sounds/block3.wav differ diff --git a/assets/sounds/dodge1.wav b/assets/sounds/dodge1.wav new file mode 100644 index 0000000..05b1f71 Binary files /dev/null and b/assets/sounds/dodge1.wav differ diff --git a/assets/sounds/dodge2.wav b/assets/sounds/dodge2.wav new file mode 100644 index 0000000..942ba60 Binary files /dev/null and b/assets/sounds/dodge2.wav differ diff --git a/assets/sounds/dodge3.wav b/assets/sounds/dodge3.wav new file mode 100644 index 0000000..9b0a8c0 Binary files /dev/null and b/assets/sounds/dodge3.wav differ diff --git a/assets/sounds/itempickup.wav b/assets/sounds/itempickup.wav new file mode 100644 index 0000000..714878e Binary files /dev/null and b/assets/sounds/itempickup.wav differ diff --git a/assets/sounds/levelcomplete.wav b/assets/sounds/levelcomplete.wav new file mode 100644 index 0000000..f3abfd0 Binary files /dev/null and b/assets/sounds/levelcomplete.wav differ diff --git a/assets/sounds/sword1.wav b/assets/sounds/sword1.wav new file mode 100644 index 0000000..6afe429 Binary files /dev/null and b/assets/sounds/sword1.wav differ diff --git a/assets/sounds/sword2.wav b/assets/sounds/sword2.wav new file mode 100644 index 0000000..b4d997f Binary files /dev/null and b/assets/sounds/sword2.wav differ diff --git a/assets/sounds/sword3.wav b/assets/sounds/sword3.wav new file mode 100644 index 0000000..633b2ac Binary files /dev/null and b/assets/sounds/sword3.wav differ diff --git a/assets/sounds/uiclick1.wav b/assets/sounds/uiclick1.wav new file mode 100644 index 0000000..e431c89 Binary files /dev/null and b/assets/sounds/uiclick1.wav differ diff --git a/assets/sounds/uiclick2.wav b/assets/sounds/uiclick2.wav new file mode 100644 index 0000000..485932c Binary files /dev/null and b/assets/sounds/uiclick2.wav differ diff --git a/src/audio.c b/src/audio.c index b273369..ed81cc5 100644 --- a/src/audio.c +++ b/src/audio.c @@ -72,12 +72,31 @@ void audio_play_move(void) { void audio_play_attack(void) { // Mid-range hit sound - play_tone(400.0f, 0.1f, 0.5f); + // play_tone(400.0f, 0.1f, 0.5f); + int choice = GetRandomValue(1, 3); + Sound attack; + switch (choice) { + case 1: + attack = LoadSound("./assets/sounds/sword1.wav"); + break; + case 2: + attack = LoadSound("./assets/sounds/sword2.wav"); + break; + case 3: + attack = LoadSound("./assets/sounds/sword3.wav"); + break; + default: + attack = LoadSound("./assets/sounds/sword1.wav"); + break; + } + PlaySound(attack); } void audio_play_item_pickup(void) { // High-pitched pickup sound play_tone(800.0f, 0.15f, 0.4f); + Sound pickup = LoadSound("./assets/sounds/itempickup.wav"); + PlaySound(pickup); } void audio_play_enemy_death(void) { @@ -94,14 +113,30 @@ void audio_play_player_damage(void) { void audio_play_stairs(void) { // Ascending stairs sound - play_tone(400.0f, 0.1f, 0.3f); - play_tone(600.0f, 0.1f, 0.3f); - play_tone(800.0f, 0.15f, 0.3f); + Sound staircase = LoadSound("./assets/sounds/levelcomplete.wav"); + PlaySound(staircase); } void audio_play_dodge(void) { // High-pitched whoosh - play_tone(900.0f, 0.08f, 0.3f); + // play_tone(900.0f, 0.08f, 0.3f); + int choice = GetRandomValue(1, 3); + Sound dodge; + switch (choice) { + case 1: + dodge = LoadSound("./assets/sounds/dodge1.wav"); + break; + case 2: + dodge = LoadSound("./assets/sounds/dodge2.wav"); + break; + case 3: + dodge = LoadSound("./assets/sounds/dodge3.wav"); + break; + default: + dodge = LoadSound("./assets/sounds/dodge1.wav"); + break; + } + PlaySound(dodge); } void audio_play_block(void) { diff --git a/src/main.c b/src/main.c index 8313f81..153429e 100644 --- a/src/main.c +++ b/src/main.c @@ -65,12 +65,18 @@ static void spawn_floating_label(GameState *gs, int x, int y, const char *label, static const char *proc_label_for(StatusEffectType effect) { switch (effect) { - case EFFECT_POISON: return "POISON!"; - case EFFECT_BLEED: return "BLEED!"; - case EFFECT_BURN: return "BURN!"; - case EFFECT_STUN: return "STUN!"; - case EFFECT_WEAKEN: return "WEAKEN!"; - default: return ""; + case EFFECT_POISON: + return "POISON!"; + case EFFECT_BLEED: + return "BLEED!"; + case EFFECT_BURN: + return "BURN!"; + case EFFECT_STUN: + return "STUN!"; + case EFFECT_WEAKEN: + return "WEAKEN!"; + default: + return ""; } } @@ -185,6 +191,7 @@ static void post_action(GameState *gs, Enemy *attacked_enemy) { } else { if (combat_get_last_damage() > 0) spawn_floating_text(gs, ex, ey, combat_get_last_damage(), combat_was_critical()); + audio_play_attack(); if (combat_was_blocked()) { spawn_floating_label(gs, ex, ey - 10, "BLOCK", EFFECT_NONE); audio_play_block(); @@ -553,7 +560,8 @@ static void game_loop(void) { int main(void) { // Initialize audio audio_init(); - + // Initialize random number generator + SetRandomSeed(88435); // Initialize window InitWindow(SCREEN_WIDTH, SCREEN_HEIGHT + 60, "Roguelike"); SetTargetFPS(60);