summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrikboy@gmail.com>2024-05-11 16:50:23 +0200
committerAldrik Ramaekers <aldrikboy@gmail.com>2024-05-11 16:50:23 +0200
commit2e04356bbb1d16c0d519156c3bcf201aea291e09 (patch)
tree80a621b000d1ad0c5bfb2f1c73075e3b89168efa
parent28bf7168e633629a6a049f639950a30f26102f40 (diff)
door sounds and doors open for zombies
-rw-r--r--data/sounds/door_close.wavbin0 -> 36080 bytes
-rw-r--r--data/sounds/door_open.wavbin0 -> 63080 bytes
-rw-r--r--include/asset_defs.h3
-rw-r--r--include/audio.h2
-rw-r--r--src/asset_defs.c2
-rw-r--r--src/audio.c2
-rw-r--r--src/glass_doors.c26
7 files changed, 33 insertions, 2 deletions
diff --git a/data/sounds/door_close.wav b/data/sounds/door_close.wav
new file mode 100644
index 0000000..1cffcd1
--- /dev/null
+++ b/data/sounds/door_close.wav
Binary files differ
diff --git a/data/sounds/door_open.wav b/data/sounds/door_open.wav
new file mode 100644
index 0000000..821823b
--- /dev/null
+++ b/data/sounds/door_open.wav
Binary files differ
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;
}
}