diff options
| author | Aldrik Ramaekers <aldrikboy@gmail.com> | 2024-05-11 16:50:23 +0200 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrikboy@gmail.com> | 2024-05-11 16:50:23 +0200 |
| commit | 2e04356bbb1d16c0d519156c3bcf201aea291e09 (patch) | |
| tree | 80a621b000d1ad0c5bfb2f1c73075e3b89168efa | |
| parent | 28bf7168e633629a6a049f639950a30f26102f40 (diff) | |
door sounds and doors open for zombies
| -rw-r--r-- | data/sounds/door_close.wav | bin | 0 -> 36080 bytes | |||
| -rw-r--r-- | data/sounds/door_open.wav | bin | 0 -> 63080 bytes | |||
| -rw-r--r-- | include/asset_defs.h | 3 | ||||
| -rw-r--r-- | include/audio.h | 2 | ||||
| -rw-r--r-- | src/asset_defs.c | 2 | ||||
| -rw-r--r-- | src/audio.c | 2 | ||||
| -rw-r--r-- | src/glass_doors.c | 26 |
7 files changed, 33 insertions, 2 deletions
diff --git a/data/sounds/door_close.wav b/data/sounds/door_close.wav Binary files differnew file mode 100644 index 0000000..1cffcd1 --- /dev/null +++ b/data/sounds/door_close.wav diff --git a/data/sounds/door_open.wav b/data/sounds/door_open.wav Binary files differnew file mode 100644 index 0000000..821823b --- /dev/null +++ b/data/sounds/door_open.wav diff --git a/include/asset_defs.h b/include/asset_defs.h index 7681f2b..6102be6 100644 --- a/include/asset_defs.h +++ b/include/asset_defs.h @@ -118,6 +118,9 @@ Mix_Chunk* wav_round_change; Mix_Chunk* wav_step; Mix_Chunk* wav_step_enraged; +Mix_Chunk* wav_door_open; +Mix_Chunk* wav_door_close; + #define NUM_SCREECHES 11 Mix_Chunk* wav_screech[NUM_SCREECHES]; diff --git a/include/audio.h b/include/audio.h index 5199854..8319305 100644 --- a/include/audio.h +++ b/include/audio.h @@ -28,6 +28,8 @@ typedef enum t_audio_event_type { EVENT_ZOMBIESCREECH, EVENT_ZOMBIEROAR, EVENT_PLAYERHURT, + EVENT_DOOR_OPEN, + EVENT_DOOR_CLOSE, } audio_event_type; typedef struct t_audio_event { diff --git a/src/asset_defs.c b/src/asset_defs.c index 969f1c8..ed4e7a1 100644 --- a/src/asset_defs.c +++ b/src/asset_defs.c @@ -115,6 +115,8 @@ void load_assets() { wav_step = Mix_LoadWAV("data/sounds/step.wav"); wav_step_enraged = Mix_LoadWAV("data/sounds/step_enraged.wav"); wav_roar_enraged = Mix_LoadWAV("data/sounds/roar_enraged.wav"); + wav_door_open = Mix_LoadWAV("data/sounds/door_open.wav"); + wav_door_close = Mix_LoadWAV("data/sounds/door_close.wav"); for (int i = 1; i <= NUM_SCREECHES; i++) { char path[100]; diff --git a/src/audio.c b/src/audio.c index 72127ae..1363fa7 100644 --- a/src/audio.c +++ b/src/audio.c @@ -56,6 +56,8 @@ static Mix_Chunk* get_sample_from_audio_event(audio_event event, u32 playerid) { } case EVENT_CHARACTER_TYPE: return wav_character; case EVENT_ROUND_CHANGE: return wav_round_change; + case EVENT_DOOR_CLOSE: return wav_door_close; + case EVENT_DOOR_OPEN: return wav_door_open; case EVENT_COLLECT: return wav_collect; case EVENT_BOUNCE_THROWABLE: return wav_throwable_bounce; case EVENT_FIRE: return wav_fire; diff --git a/src/glass_doors.c b/src/glass_doors.c index dc5ed5e..f7ddbc7 100644 --- a/src/glass_doors.c +++ b/src/glass_doors.c @@ -17,16 +17,38 @@ void update_glass_doors_server() for (int i = 0; i < MAX_GLASS_DOORS; i++) { if (!glass_doors[i].obj.active) continue; - glass_doors[i].is_open = 0; + bool do_open = 0; + // Open for players for (int x = 0; x < MAX_PLAYERS; x++) { if (!players[x].active) continue; if (distance_between((vec2f){.x = glass_doors[i].obj.position.x, .y = glass_doors[i].obj.position.y}, (vec2f){.x = players[x].playerx, .y = players[x].playery}) < 3.0f) { - glass_doors[i].is_open = 1; + do_open = 1; + break; + } + } + + // Open for zombies + for (int x = 0; x < SERVER_MAX_ZOMBIES; x++) { + zombie o = zombies[x]; + + if (distance_between((vec2f){.x = glass_doors[i].obj.position.x, .y = glass_doors[i].obj.position.y}, + (vec2f){.x = o.position.x, .y = o.position.y}) < 3.0f) { + do_open = 1; + break; } } + + if (do_open && glass_doors[i].is_open == 0) { + add_audio_event_to_queue(EVENT_DOOR_OPEN, player_id, glass_doors[i].obj.position); + } + else if (!do_open && glass_doors[i].is_open == 1) { + add_audio_event_to_queue(EVENT_DOOR_CLOSE, player_id, glass_doors[i].obj.position); + } + + glass_doors[i].is_open = do_open; } } |
