summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build/data/imgs/icons/disconnected.pngbin0 -> 2181 bytes
-rw-r--r--build/zombies.exebin1992349 -> 1992896 bytes
-rw-r--r--data/imgs/icons/disconnected.pngbin0 -> 2181 bytes
-rw-r--r--include/asset_defs.h1
-rw-r--r--src/asset_defs.c1
-rw-r--r--src/game.c4
-rw-r--r--src/overlay.c17
-rw-r--r--src/players.c5
8 files changed, 22 insertions, 6 deletions
diff --git a/build/data/imgs/icons/disconnected.png b/build/data/imgs/icons/disconnected.png
new file mode 100644
index 0000000..54a726a
--- /dev/null
+++ b/build/data/imgs/icons/disconnected.png
Binary files differ
diff --git a/build/zombies.exe b/build/zombies.exe
index e0be50f..d083f6a 100644
--- a/build/zombies.exe
+++ b/build/zombies.exe
Binary files differ
diff --git a/data/imgs/icons/disconnected.png b/data/imgs/icons/disconnected.png
new file mode 100644
index 0000000..54a726a
--- /dev/null
+++ b/data/imgs/icons/disconnected.png
Binary files 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;