audio: add various sound assets (#7)

Reviewed-on: #7
Co-authored-by: A.M. Rowsell <amr@frzn.dev>
Co-committed-by: A.M. Rowsell <amr@frzn.dev>
This commit is contained in:
A.M. Rowsell 2026-04-06 15:12:08 +00:00 committed by raf
commit d7a2e81f24
14 changed files with 53 additions and 12 deletions

BIN
assets/sounds/block1.wav Normal file

Binary file not shown.

BIN
assets/sounds/block2.wav Normal file

Binary file not shown.

BIN
assets/sounds/block3.wav Normal file

Binary file not shown.

BIN
assets/sounds/dodge1.wav Normal file

Binary file not shown.

BIN
assets/sounds/dodge2.wav Normal file

Binary file not shown.

BIN
assets/sounds/dodge3.wav Normal file

Binary file not shown.

Binary file not shown.

BIN
assets/sounds/sword1.wav Normal file

Binary file not shown.

BIN
assets/sounds/sword2.wav Normal file

Binary file not shown.

BIN
assets/sounds/sword3.wav Normal file

Binary file not shown.

BIN
assets/sounds/uiclick1.wav Normal file

Binary file not shown.

BIN
assets/sounds/uiclick2.wav Normal file

Binary file not shown.

View file

@ -72,7 +72,24 @@ 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) {
@ -94,14 +111,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) {

View file

@ -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);