diff options
| author | Aldrik Ramaekers <aldrik@amftech.nl> | 2024-01-04 18:24:13 +0100 |
|---|---|---|
| committer | Aldrik Ramaekers <aldrik@amftech.nl> | 2024-01-04 18:24:13 +0100 |
| commit | 6e23ec86411c88ece2e799ee0529dab595980f86 (patch) | |
| tree | dba94a5f95e2bac02b2e9de36187b57fdc7f7e7d | |
| parent | 3f17fd5a4e903044bad8777a4ac0aa52cf8920fb (diff) | |
zombie health bar
| -rw-r--r-- | data/imgs/players/BulletStream.png | bin | 0 -> 218 bytes | |||
| -rw-r--r-- | data/imgs/players/MuzzleFlash.png | bin | 0 -> 107 bytes | |||
| -rw-r--r-- | include/asset_defs.h | 2 | ||||
| -rw-r--r-- | include/zombies.h | 1 | ||||
| -rw-r--r-- | src/asset_defs.c | 3 | ||||
| -rw-r--r-- | src/bullets.c | 12 | ||||
| -rw-r--r-- | src/guns.c | 2 | ||||
| -rw-r--r-- | src/zombies.c | 10 |
8 files changed, 23 insertions, 7 deletions
diff --git a/data/imgs/players/BulletStream.png b/data/imgs/players/BulletStream.png Binary files differnew file mode 100644 index 0000000..7c5bc6c --- /dev/null +++ b/data/imgs/players/BulletStream.png diff --git a/data/imgs/players/MuzzleFlash.png b/data/imgs/players/MuzzleFlash.png Binary files differnew file mode 100644 index 0000000..b64d5d4 --- /dev/null +++ b/data/imgs/players/MuzzleFlash.png diff --git a/include/asset_defs.h b/include/asset_defs.h index 192044b..7f99767 100644 --- a/include/asset_defs.h +++ b/include/asset_defs.h @@ -59,6 +59,8 @@ image* img_gunner_yellow_idle; image* img_gunner_red_run; image* img_gunner_red_idle; +image* img_bullet_stream; +image* img_muzzle_flash; image* img_alien_run; // Guns diff --git a/include/zombies.h b/include/zombies.h index a9d8a5c..b3bc1f3 100644 --- a/include/zombies.h +++ b/include/zombies.h @@ -16,6 +16,7 @@ typedef enum t_zombie_type { typedef struct t_zombie { bool alive; float health; + float max_health; vec3f position; vec3f size; array path; diff --git a/src/asset_defs.c b/src/asset_defs.c index 43d9c38..7d7e947 100644 --- a/src/asset_defs.c +++ b/src/asset_defs.c @@ -61,6 +61,9 @@ void load_assets() { img_gunner_yellow_run = assets_load_image_from_file("data/imgs/players/Yellow/Gunner_Yellow_Run.png"); img_gunner_yellow_idle = assets_load_image_from_file("data/imgs/players/Yellow/Gunner_Yellow_Idle.png"); + + img_muzzle_flash = assets_load_image_from_file("data/imgs/players/MuzzleFlash.png"); + img_bullet_stream = assets_load_image_from_file("data/imgs/players/BulletStream.png"); img_alien_run = assets_load_image_from_file("data/imgs/players/alien_run.png"); // Guns diff --git a/src/bullets.c b/src/bullets.c index fb45cc6..c09fc31 100644 --- a/src/bullets.c +++ b/src/bullets.c @@ -260,12 +260,7 @@ void draw_bullets(platform_window* window) { bullet b = bullets[i]; if (!b.active) continue; - if (b.player_id == player_id) { - player *p = get_player_by_id(b.player_id); - b.position.x = p->gunx; - b.position.y = p->guny; - b.position.z = p->gun_height; - } + player *p = get_player_by_id(b.player_id); float bullet_render_x = b.position.x*info.tile_width + (b.position.y*info.px_incline); float bullet_render_y = b.position.y*info.tile_height - (b.position.z*info.px_raised_per_h); @@ -274,5 +269,10 @@ void draw_bullets(platform_window* window) { float bullet_render_y_end = b.endy*info.tile_height - (b.position.z*info.px_raised_per_h); renderer->render_line(bullet_render_x, bullet_render_y, bullet_render_x_end, bullet_render_y_end, 1, rgba(255, 221, 97, 100)); + + //float rads = atan2(p->diry, p->dirx); + //renderer->render_set_rotation(rads); + //renderer->render_image(img_bullet_stream, bullet_render_x, bullet_render_y, 80, 16); + //renderer->render_set_rotation(0.0f); } }
\ No newline at end of file @@ -6,7 +6,7 @@ gun get_gun_by_type(gun_type type) { } float get_gun_size(gun_type type) { - return 0.5f; + return 0.6f; } image* get_image_of_gun(gun_type type) { diff --git a/src/zombies.c b/src/zombies.c index 3a28d5d..6d9d7de 100644 --- a/src/zombies.c +++ b/src/zombies.c @@ -85,6 +85,7 @@ void spawn_zombie(int x, int y) { zombies[i].alive = true; zombies[i].type = ZOMBIE_TYPE_NORMAL; zombies[i].health = 1000.0f; + zombies[i].max_health = 1000.0f; zombies[i].position = (vec3f){x,y, 0}; zombies[i].size = (vec3f){1.5f, 1.5f, 1.5f}; zombies[i].time_since_last_path = 0.0f; @@ -332,6 +333,15 @@ void draw_zombies(platform_window* window) { zombie_pos.x + zombie_size, zombie_pos.y, frame.tl, frame.tr, frame.bl, frame.br); + // health bar + if (o.health < o.max_health) { + int bar_h = zombie_size/8; + int bar_w = zombie_size/2; + float percentage = o.health/o.max_health; + renderer->render_rectangle(zombie_pos.x + (zombie_size/2) - (bar_w/2), zombie_pos.y - bar_h, bar_w, bar_h, rgb(0,0,0)); + renderer->render_rectangle(zombie_pos.x + (zombie_size/2) - (bar_w/2), zombie_pos.y - bar_h, bar_w*percentage, bar_h, rgb(100,0,0)); + } + if (global_state.server) draw_path_of_zombie(window, o); } } |
