diff options
| author | Aldrik Ramaekers <aldrik@amftech.nl> | 2023-12-26 13:40:08 +0100 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrik@amftech.nl> | 2023-12-26 13:40:08 +0100 |
| commit | ef471c71e0da0269ed2a924eaae991ac2d0cfa20 (patch) | |
| tree | faa9299366a00704d6ed7d4adc6bbe2870e4fba2 /src | |
| parent | d92ac6cf3d21f1b549f0ee31f2c4f01486b0e437 (diff) | |
helmet
Diffstat (limited to 'src')
| -rw-r--r-- | src/asset_defs.c | 1 | ||||
| -rw-r--r-- | src/players.c | 41 |
2 files changed, 24 insertions, 18 deletions
diff --git a/src/asset_defs.c b/src/asset_defs.c index a9cddfe..a44963f 100644 --- a/src/asset_defs.c +++ b/src/asset_defs.c @@ -44,6 +44,7 @@ void load_assets() { // Players img_player_running = assets_load_image_from_file("data/imgs/players/player1_running.png"); + img_helmet = assets_load_image_from_file("data/imgs/players/helmet.png"); // Other img_zombie_chunk_hand = assets_load_image_from_file("data/imgs/zombie_chunk_hand.png"); diff --git a/src/players.c b/src/players.c index 30af803..52e1e7c 100644 --- a/src/players.c +++ b/src/players.c @@ -14,7 +14,8 @@ float get_player_size_in_tile() { } float get_player_size(platform_window* window) { - int player_size = get_tile_width(window) * get_player_size_in_tile(); + float player_size = get_tile_width(window) * get_player_size_in_tile(); + return player_size; } int get_player_count() { @@ -448,28 +449,30 @@ color get_color_tint_by_player_index(int index) { rgb(0,0,128), rgb(128,0,128), }; - return colors[index]; + color c = colors[index]; + c.a = 100; + return c; } void draw_player(platform_window* window, player* p, int index) { - float size = get_player_size_in_tile(); + float size = get_player_size(window); 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; + vec2f player_pos = world_pos_to_screen_pos(window, p->playerx, p->playery, p->height); + float player_render_x = player_pos.x; + float player_render_y = player_pos.y; - int name_x = player_render_x + (info.tile_width*size)/2 - (renderer->calculate_text_width(fnt_20, name))/2; + float rads = -atan2(p->diry, p->dirx); + renderer->render_set_rotation(rads + M_PI); + renderer->render_image(img_helmet, player_render_x, player_render_y, size, size); + renderer->render_image_tint(img_helmet, + player_render_x, player_render_y, + size, size, get_color_tint_by_player_index(index)); + renderer->render_set_rotation(0.0f); + + int name_x = player_render_x + (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)); @@ -477,8 +480,8 @@ void draw_player(platform_window* window, player* p, int index) { 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); + float icon_h = (size)/2; + renderer->render_image(img_disconnected, player_render_x + (icon_h/3), player_render_y - icon_h, icon_h, icon_h); } if (p->id == player_id) { @@ -493,12 +496,14 @@ void draw_players(platform_window* window) { for (int i = 0; i < MAX_PLAYERS; i++) { if (!players[i].active) continue; - OBJECT_RENDER_DEPTH((int)(players[i].playery+size)); float height = get_height_of_tile_under_coords(players[i].playerx, players[i].playery); players[i].height = height; + BULLET_RENDER_DEPTH((int)(players[i].playery+size)); draw_player_bullet_cone(window, &players[i]); + + PLAYER_RENDER_DEPTH((int)(players[i].playery+size)); draw_player(window, &players[i], i); } } |
