From 25e78dea3ab92d73354442d294ab3fac163c5c1e Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Wed, 1 Nov 2023 20:55:46 +0100 Subject: disconnect visuals --- build/data/imgs/icons/disconnected.png | Bin 0 -> 2181 bytes build/zombies.exe | Bin 1992349 -> 1992896 bytes data/imgs/icons/disconnected.png | Bin 0 -> 2181 bytes include/asset_defs.h | 1 + src/asset_defs.c | 1 + src/game.c | 4 ++-- src/overlay.c | 17 +++++++++++++---- src/players.c | 5 +++++ 8 files changed, 22 insertions(+), 6 deletions(-) create mode 100644 build/data/imgs/icons/disconnected.png create mode 100644 data/imgs/icons/disconnected.png diff --git a/build/data/imgs/icons/disconnected.png b/build/data/imgs/icons/disconnected.png new file mode 100644 index 0000000..54a726a Binary files /dev/null and b/build/data/imgs/icons/disconnected.png differ diff --git a/build/zombies.exe b/build/zombies.exe index e0be50f..d083f6a 100644 Binary files a/build/zombies.exe and b/build/zombies.exe differ diff --git a/data/imgs/icons/disconnected.png b/data/imgs/icons/disconnected.png new file mode 100644 index 0000000..54a726a Binary files /dev/null and b/data/imgs/icons/disconnected.png differ diff --git a/include/asset_defs.h b/include/asset_defs.h index 78a73ca..0fc0f92 100644 --- a/include/asset_defs.h +++ b/include/asset_defs.h @@ -16,6 +16,7 @@ image* img_cancel; image* img_3d; image* img_tiles; image* img_sunny; +image* img_disconnected; // Objects image* img_spawner; diff --git a/src/asset_defs.c b/src/asset_defs.c index 92a03f1..c4e229f 100644 --- a/src/asset_defs.c +++ b/src/asset_defs.c @@ -14,6 +14,7 @@ void load_assets() { img_3d = assets_load_image_from_file("data/imgs/icons/3d.png"); img_tiles = assets_load_image_from_file("data/imgs/icons/tiles.png"); img_sunny = assets_load_image_from_file("data/imgs/icons/sunny.png"); + img_disconnected = assets_load_image_from_file("data/imgs/icons/disconnected.png"); // Throwables img_grenade = assets_load_image_from_file("data/imgs/throwables/grenade.png"); diff --git a/src/game.c b/src/game.c index 1e20cf9..b5c9fd8 100644 --- a/src/game.c +++ b/src/game.c @@ -163,11 +163,11 @@ void update_server(platform_window* window) { if (player_has_old_session(new_id)) { rejoin_player(new_id, msg->client); - log_infox("Player connected to session / ip: %s id: %d", msg->client.ip, new_id); + log_infox("Player rejoined session / ip: %s id: %d", msg->client.ip, new_id); } else { spawn_player(new_id, msg->client); - log_infox("Player rejoined session / ip: %s id: %d", msg->client.ip, new_id); + log_infox("Player connected to session / ip: %s id: %d", msg->client.ip, new_id); } add_message_to_outgoing_queuex(create_protocol_get_id_down(new_id), msg->client); diff --git a/src/overlay.c b/src/overlay.c index d4c99ff..6388d5b 100644 --- a/src/overlay.c +++ b/src/overlay.c @@ -23,7 +23,7 @@ static void draw_gun_info(platform_window* window) { renderer->render_text(fnt_20, (int)_global_camera.x + x, (int)_global_camera.y + y, ammo_txt, rgb(255,255,255)); } -static void draw_leaderboard_entry(int x, int y, int w, int h, char* name, char* kills, char* deaths, char* ping, bool highlighted) { +static void draw_leaderboard_entry(int x, int y, int w, int h, char* name, char* kills, char* deaths, char* ping, bool highlighted, bool disconnected) { if (highlighted) { renderer->render_rectangle(x, y, w, h, rgba(255,0,0,50)); @@ -36,7 +36,15 @@ static void draw_leaderboard_entry(int x, int y, int w, int h, char* name, char* renderer->render_text(fnt_20, x+pad_x, y+pad_y, name, rgb(255,255,255)); renderer->render_text(fnt_20, x+pad_x+width_for_name+width_per_entry*0, y+pad_y, kills, rgb(255,255,255)); renderer->render_text(fnt_20, x+pad_x+width_for_name+width_per_entry*1, y+pad_y, deaths, rgb(255,255,255)); - renderer->render_text(fnt_20, x+pad_x+width_for_name+width_per_entry*2, y+pad_y, ping, rgb(255,255,255)); + + if (disconnected) { + int icon_h = h*0.8f; + int iconpad = ((h-icon_h)/2); + renderer->render_image(img_disconnected, x+pad_x+width_for_name+width_per_entry*2.5f - iconpad, y + iconpad, icon_h, icon_h); + } + else { + renderer->render_text(fnt_20, x+pad_x+width_for_name+width_per_entry*2, y+pad_y, ping, rgb(255,255,255)); + } } static void draw_leaderboard(platform_window* window) { @@ -55,14 +63,15 @@ static void draw_leaderboard(platform_window* window) { renderer->render_rectangle(x, y, actual_width, height_total, rgba(0,0,0,120)); - draw_leaderboard_entry(x, y, actual_width, height_per_row, "Player", "Kills", "Deaths", "Ping", false); + draw_leaderboard_entry(x, y, actual_width, height_per_row, "Player", "Kills", "Deaths", "Ping", false, false); for (int i = 0; i < MAX_PLAYERS; i++) { if (!players[i].active) continue; char kills[30]; snprintf(kills, 30, "%d", players[i].kills); char deaths[30]; snprintf(deaths, 30, "%d", 0); char ping[30]; snprintf(ping, 30, "%d", players[i].ping); - draw_leaderboard_entry(x, y + ((i+1)*height_per_row), actual_width, height_per_row, players[i].client.ip, kills, deaths, ping, players[i].id == player_id); + draw_leaderboard_entry(x, y + ((i+1)*height_per_row), actual_width, height_per_row, + players[i].client.ip, kills, deaths, ping, players[i].id == player_id, players[i].connection_state == DISCONNECTED); } } } diff --git a/src/players.c b/src/players.c index 21be388..7ac0819 100644 --- a/src/players.c +++ b/src/players.c @@ -332,6 +332,11 @@ void draw_players(platform_window* window) { //renderer->render_rectangle(gun_render_x, gun_render_y, size/4, size/4, rgb(20,255,20)); + if (players[i].connection_state == DISCONNECTED) { + float icon_h = (box.tr_u.x - box.tl_u.x)/2; + renderer->render_image(img_disconnected, box.tl_u.x + (icon_h/3), box.tr_u.y - icon_h, icon_h, icon_h); + } + if (players[i].id == player_id) { _next_camera_pos.x = -(window->width / 2) + player_render_x; _next_camera_pos.y = -(window->height / 2) + player_render_y; -- cgit v1.2.3-70-g09d2