From 28bf7168e633629a6a049f639950a30f26102f40 Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Sat, 11 May 2024 16:32:33 +0200 Subject: automatic door --- src/glass_doors.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 src/glass_doors.c (limited to 'src/glass_doors.c') diff --git a/src/glass_doors.c b/src/glass_doors.c new file mode 100644 index 0000000..dc5ed5e --- /dev/null +++ b/src/glass_doors.c @@ -0,0 +1,49 @@ +#include "../include/glass_doors.h" + +void create_glass_door(object o) +{ + for (int i = 0; i < MAX_GLASS_DOORS; i++) + { + if (glass_doors[i].obj.active) continue; + glass_doors[i].obj = o; + glass_doors[i].time_since_open = 0.0f; + glass_doors[i].is_open = 0; + return; + } +} + +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; + + 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; + } + } + } +} + +void draw_glass_doors(platform_window* window, uint32_t ystart, uint32_t yend) +{ + for (int i = 0; i < MAX_GLASS_DOORS; i++) + { + if (!glass_doors[i].obj.active) continue; + if (!((int)glass_doors[i].obj.position.y >= ystart && (int)glass_doors[i].obj.position.y <= yend+1)) continue; + + object o = glass_doors[i].obj; + box box = get_box_of_object(window, o); + + image* img = glass_doors[i].is_open ? img_glass_door_h_open : img_glass_door_h_closed; + if (img) { + renderer->render_image(img, box.tl_u.x, box.tl_u.y, + box.br_d.x - box.tl_d.x, box.br_d.y - box.tr_u.y); + } + } +} \ No newline at end of file -- cgit v1.2.3-70-g09d2