diff options
Diffstat (limited to 'src/glass_doors.c')
| -rw-r--r-- | src/glass_doors.c | 26 |
1 files changed, 24 insertions, 2 deletions
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; } } |
