diff options
| author | Aldrik Ramaekers <aldrik@amftech.nl> | 2023-11-05 14:23:27 +0100 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrik@amftech.nl> | 2023-11-05 14:23:27 +0100 |
| commit | 8777713844f81a7ee171ddbd4e910d83122c9f74 (patch) | |
| tree | 5e7bafb5c93e07e34d6b9d22f1be1781933623f4 /src | |
| parent | 278bdb59ef744dd51ada14c99de22fcb41c1abea (diff) | |
player names
Diffstat (limited to 'src')
| -rw-r--r-- | src/overlay.c | 2 | ||||
| -rw-r--r-- | src/players.c | 94 |
2 files changed, 70 insertions, 26 deletions
diff --git a/src/overlay.c b/src/overlay.c index 485373b..e1762cd 100644 --- a/src/overlay.c +++ b/src/overlay.c @@ -96,7 +96,7 @@ static void draw_leaderboard(platform_window* window) { 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, players[i].connection_state == DISCONNECTED); + get_player_name_by_player_index(i), kills, deaths, ping, players[i].id == player_id, players[i].connection_state == DISCONNECTED); } } } diff --git a/src/players.c b/src/players.c index 9e58afa..5f4b19e 100644 --- a/src/players.c +++ b/src/players.c @@ -374,10 +374,77 @@ static void draw_player_bullet_cone(platform_window* window, player* p) { } } -void draw_players(platform_window* window) { +char* get_player_name_by_player_index(int index) { + char* names[] = { + "Everett", + "Noble", + "Parks", + "Hogan", + "Blanchard", + "Pittman", + "Murillo", + "Rodgers", + "Lang", + "Downs", + }; + return names[index]; +} + +color get_color_tint_by_player_index(int index) { + color colors[] = { + rgb(255,0,0), + rgb(0,255,0), + rgb(0,0,255), + rgb(255,255,0), + rgb(255,0,255), + rgb(0,255,255), + rgb(128,0,0), + rgb(0,128,0), + rgb(0,0,128), + rgb(128,0,128), + }; + return colors[index]; +} + +void draw_player(platform_window* window, player* p, int index) { float size = get_player_size_in_tile(); map_info info = get_map_info(window); + char* name = get_player_name_by_player_index(index); + + box box = get_render_box_of_square(window, (vec3f){p->playerx, p->playery, p->height}, (vec3f){size,size,1.0f}); + sprite_frame frame = sprite_get_frame(&p->sprite); + renderer->render_image_quad_partial_tint(img_player_running, + box.tl_u.x, box.tl_u.y, + box.bl_d.x, box.bl_d.y, + box.br_d.x, box.br_d.y, + box.tr_u.x, box.tr_u.y, + frame.tl, frame.tr, frame.bl, frame.br, get_color_tint_by_player_index(index)); + + float player_render_x = box.tl_u.x; + float player_render_y = box.tl_u.y; + + int name_x = player_render_x + (info.tile_width*size)/2 - (renderer->calculate_text_width(fnt_20, name))/2; + int name_y = player_render_y - fnt_20->px_h - 5; + renderer->render_text(fnt_20, name_x+1, name_y+1, name, rgba(0,0,0,120)); + renderer->render_text(fnt_20, name_x, name_y, name, rgb(255,255,255)); + + p->gun_height = p->height+0.5; + + if (p->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 (p->id == player_id) { + _next_camera_pos.x = -(window->width / 2) + player_render_x; + _next_camera_pos.y = -(window->height / 2) + player_render_y; + } +} + +void draw_players(platform_window* window) { + float size = get_player_size_in_tile(); + for (int i = 0; i < MAX_PLAYERS; i++) { if (!players[i].active) continue; @@ -387,29 +454,6 @@ void draw_players(platform_window* window) { players[i].height = height; draw_player_bullet_cone(window, &players[i]); - - box box = get_render_box_of_square(window, (vec3f){players[i].playerx, players[i].playery, height}, (vec3f){size,size,1.0f}); - sprite_frame frame = sprite_get_frame(&players[i].sprite); - renderer->render_image_quad_partial(img_player_running, - box.tl_u.x, box.tl_u.y, - box.bl_d.x, box.bl_d.y, - box.br_d.x, box.br_d.y, - box.tr_u.x, box.tr_u.y, - frame.tl, frame.tr, frame.bl, frame.br); - - float player_render_x = box.tl_u.x; - float player_render_y = box.tl_u.y; - - players[i].gun_height = height+0.5; - - 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; - } + draw_player(window, &players[i], i); } } |
