From f73e3661b136d4da4d66ef15b264ec7a958be335 Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Sun, 12 May 2024 11:43:57 +0200 Subject: new objects --- src/asset_defs.c | 4 ++++ src/game.c | 2 +- src/objects.c | 8 ++++++++ src/players.c | 24 ++++++++++++++---------- src/wall_item.c | 4 ++-- src/zombies.c | 2 +- 6 files changed, 30 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/asset_defs.c b/src/asset_defs.c index ed4e7a1..8a2e701 100644 --- a/src/asset_defs.c +++ b/src/asset_defs.c @@ -51,12 +51,16 @@ void load_assets() { img_metal_wall = assets_load_image_from_file("data/imgs/objects/metal_wall.png"); img_metal_wall2 = assets_load_image_from_file("data/imgs/objects/metal_wall2.png"); img_chair_up = assets_load_image_from_file("data/imgs/objects/chair_up.png"); + img_chair_down = assets_load_image_from_file("data/imgs/objects/chair_down.png"); img_zombie_spawner = assets_load_image_from_file("data/imgs/objects/zombie_spawner.png"); img_lamp_east = assets_load_image_from_file("data/imgs/objects/lamp_east.png"); + img_lamp_south = assets_load_image_from_file("data/imgs/objects/lamp_south.png"); img_metal_table_h = assets_load_image_from_file("data/imgs/objects/metal_table_h.png"); img_cantine_glass = assets_load_image_from_file("data/imgs/objects/cantine_glass.png"); img_glass_door_h_open = assets_load_image_from_file("data/imgs/objects/glass_door_h_open.png"); img_glass_door_h_closed = assets_load_image_from_file("data/imgs/objects/glass_door_h_closed.png"); + img_big_control_panel = assets_load_image_from_file("data/imgs/objects/big_control_panel.png"); + img_computer_rack = assets_load_image_from_file("data/imgs/objects/computer_rack.png"); // Players img_gunner_black_run = assets_load_image_from_file("data/imgs/players/Black/Gunner_Black_Run.png"); diff --git a/src/game.c b/src/game.c index fb99e6c..01633bc 100644 --- a/src/game.c +++ b/src/game.c @@ -116,7 +116,7 @@ static void rotate_user(platform_window* window, protocol_user_look *message) { } p->gunx = p->playerx + message->gunx; - p->guny = p->playery + message->guny; + p->guny = p->playery - 0.5f + message->guny; p->dirx = message->dirx; p->diry = message->diry; } diff --git a/src/objects.c b/src/objects.c index e551544..fd2d811 100644 --- a/src/objects.c +++ b/src/objects.c @@ -115,12 +115,20 @@ image* get_image_from_objecttype(object_type tile) { return img_zombie_spawner; case OBJECT_LAMP_EAST: return img_lamp_east; + case OBJECT_LAMP_SOUTH: + return img_lamp_south; case OBJECT_METAL_TABLE_H: return img_metal_table_h; case OBJECT_CANTINE_GLASS: return img_cantine_glass; case OBJECT_GLASS_DOOR_H: return img_glass_door_h_closed; + case OBJECT_BIG_CONTROL_PANEL: + return img_big_control_panel; + case OBJECT_CHAIR_DOWN: + return img_chair_down; + case OBJECT_COMPUTER_RACK: + return img_computer_rack; default: return 0; } diff --git a/src/players.c b/src/players.c index 4fb513e..dd62611 100644 --- a/src/players.c +++ b/src/players.c @@ -9,12 +9,16 @@ float get_bullet_size(platform_window* window) { return get_tile_width(window) * get_bullet_size_in_tile(window); } -float get_player_size_in_tile() { +float get_player_height_in_tile() { + return 1.0f; +} + +float get_player_width_in_tile() { return 1.5f; } float get_player_size(platform_window* window) { - float player_size = get_tile_width(window) * get_player_size_in_tile(); + float player_size = get_tile_width(window) * get_player_width_in_tile(); return player_size; } @@ -168,7 +172,7 @@ void move_user(platform_window* window, u32 id, protocol_move_type move, float d if (is_in_bounds(p->playerx, newy)) { p->playery = newy; object o = check_if_player_collided_with_object(*p); - if (o.active) p->playery = o.position.y - get_player_size_in_tile() - pad_between_player_and_obj; + if (o.active) p->playery = o.position.y - get_player_height_in_tile() - pad_between_player_and_obj; } } @@ -188,7 +192,7 @@ void move_user(platform_window* window, u32 id, protocol_move_type move, float d if (is_in_bounds(newx, p->playery)) { p->playerx = newx; object o = check_if_player_collided_with_object(*p); - if (o.active) p->playerx = o.position.x-get_player_size_in_tile() - pad_between_player_and_obj; + if (o.active) p->playerx = o.position.x-get_player_width_in_tile() - pad_between_player_and_obj; } } @@ -204,9 +208,9 @@ player* get_player_by_id(u32 id) { } bool check_if_player_collided_with_box(player p, box o) { - float player_size = get_player_size_in_tile(); + float player_size = get_player_width_in_tile(); - box pbox = get_box_of_square((vec3f){p.playerx, p.playery, p.height}, (vec3f){player_size,player_size,0.8f}); + box pbox = get_box_of_square((vec3f){p.playerx, p.playery, p.height}, (vec3f){player_size,get_player_height_in_tile(),0.8f}); // [x1, y1, x2, y2] bool b1 = min(pbox.br_u.x, o.br_d.x) > max(pbox.tl_u.x, o.tl_u.x); @@ -305,8 +309,8 @@ void take_player_input(platform_window* window) { diry /= length; float gunsize = get_gun_size(p->guntype); - float gun_offset_x = (get_player_size_in_tile()/2) + (dirx*gunsize); - float gun_offset_y = (get_player_size_in_tile()/2) + (diry*gunsize); + float gun_offset_x = (get_player_width_in_tile()/2) + (dirx*gunsize); + float gun_offset_y = (get_player_width_in_tile()/2) + (diry*gunsize); add_message_to_outgoing_queuex(create_protocol_user_look(player_id, gun_offset_x, gun_offset_y, dirx, diry), *global_state.client); } @@ -546,7 +550,7 @@ void draw_player(platform_window* window, player* p, int index) { char* name = get_player_name_by_player_index(index); - vec2f player_pos = world_pos_to_screen_pos(window, p->playerx, p->playery, p->height); + vec2f player_pos = world_pos_to_screen_pos(window, p->playerx, p->playery - (get_player_width_in_tile() - get_player_height_in_tile()), p->height); float player_render_x = player_pos.x; float player_render_y = player_pos.y; @@ -605,7 +609,7 @@ void draw_player(platform_window* window, player* p, int index) { } void draw_players(platform_window* window, uint32_t ystart, uint32_t yend) { - float size = get_player_size_in_tile(); + float size = get_player_width_in_tile(); for (int i = 0; i < MAX_PLAYERS; i++) { if (!players[i].active) continue; diff --git a/src/wall_item.c b/src/wall_item.c index 12b5ce7..3e87d77 100644 --- a/src/wall_item.c +++ b/src/wall_item.c @@ -112,8 +112,8 @@ void draw_wallitems(platform_window* window) { player* p = get_player_by_id(player_id); if (!p) continue; - float dirx = ((item.position.x + (0.5)) - (p->playerx + (get_player_size_in_tile()/2))); - float diry = ((item.position.y) - (p->playery + (get_player_size_in_tile()/2))); + float dirx = ((item.position.x + (0.5)) - (p->playerx + (get_player_width_in_tile()/2))); + float diry = ((item.position.y) - (p->playery + (get_player_width_in_tile()/2))); float length = sqrt(dirx * dirx + diry * diry); if (length < 1.0f) { diff --git a/src/zombies.c b/src/zombies.c index 205097e..c04f91e 100644 --- a/src/zombies.c +++ b/src/zombies.c @@ -366,7 +366,7 @@ void update_zombies_server(platform_window* window) { zombies[i].time_since_last_path += SERVER_TICK_RATE; if (zombies[i].time_since_last_path > SERVER_PATHFINDING_INTERVAL) { player closest_player = get_closest_player_to_tile(o.position.x, o.position.y); - vec2f target_tile = (vec2f){closest_player.playerx, closest_player.playery+(get_player_size_in_tile()/2)}; + vec2f target_tile = (vec2f){closest_player.playerx, closest_player.playery+(get_player_width_in_tile()/2)}; // All players died, move around randomly if (closest_player.id == -1) { target_tile = get_random_target_for_zombie(o); -- cgit v1.2.3-70-g09d2