summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrik@amftech.nl>2023-12-26 13:40:08 +0100
committerAldrik Ramaekers <aldrik@amftech.nl>2023-12-26 13:40:08 +0100
commitef471c71e0da0269ed2a924eaae991ac2d0cfa20 (patch)
treefaa9299366a00704d6ed7d4adc6bbe2870e4fba2 /src
parentd92ac6cf3d21f1b549f0ee31f2c4f01486b0e437 (diff)
helmet
Diffstat (limited to 'src')
-rw-r--r--src/asset_defs.c1
-rw-r--r--src/players.c41
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);
}
}