summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrikboy@gmail.com>2024-05-12 11:43:57 +0200
committerAldrik Ramaekers <aldrikboy@gmail.com>2024-05-12 11:43:57 +0200
commitf73e3661b136d4da4d66ef15b264ec7a958be335 (patch)
tree0fe84a543fee9622cfaa1dfd29714347c2496111
parent2e04356bbb1d16c0d519156c3bcf201aea291e09 (diff)
new objects
-rw-r--r--data/imgs/objects/big_control_panel.pngbin0 -> 57176 bytes
-rw-r--r--data/imgs/objects/chair_down.pngbin0 -> 12461 bytes
-rw-r--r--data/imgs/objects/computer_rack.pngbin0 -> 20919 bytes
-rw-r--r--data/imgs/objects/lamp_south.pngbin0 -> 6329 bytes
-rw-r--r--data/maps/map1.datbin8384008 -> 8384008 bytes
-rw-r--r--data/psd/big_control_panel.psdbin0 -> 393041 bytes
-rw-r--r--data/psd/chair_down.psdbin0 -> 76351 bytes
-rw-r--r--data/psd/computer_rack.psdbin0 -> 205027 bytes
-rw-r--r--data/psd/lamp_south.psdbin0 -> 32764 bytes
-rw-r--r--include/asset_defs.h4
-rw-r--r--include/objects.h10
-rw-r--r--main.c2
-rw-r--r--src/asset_defs.c4
-rw-r--r--src/game.c2
-rw-r--r--src/objects.c8
-rw-r--r--src/players.c24
-rw-r--r--src/wall_item.c4
-rw-r--r--src/zombies.c2
18 files changed, 44 insertions, 16 deletions
diff --git a/data/imgs/objects/big_control_panel.png b/data/imgs/objects/big_control_panel.png
new file mode 100644
index 0000000..cd73806
--- /dev/null
+++ b/data/imgs/objects/big_control_panel.png
Binary files differ
diff --git a/data/imgs/objects/chair_down.png b/data/imgs/objects/chair_down.png
new file mode 100644
index 0000000..413fa01
--- /dev/null
+++ b/data/imgs/objects/chair_down.png
Binary files differ
diff --git a/data/imgs/objects/computer_rack.png b/data/imgs/objects/computer_rack.png
new file mode 100644
index 0000000..5bc5f36
--- /dev/null
+++ b/data/imgs/objects/computer_rack.png
Binary files differ
diff --git a/data/imgs/objects/lamp_south.png b/data/imgs/objects/lamp_south.png
new file mode 100644
index 0000000..247c968
--- /dev/null
+++ b/data/imgs/objects/lamp_south.png
Binary files differ
diff --git a/data/maps/map1.dat b/data/maps/map1.dat
index 56427bf..ea03387 100644
--- a/data/maps/map1.dat
+++ b/data/maps/map1.dat
Binary files differ
diff --git a/data/psd/big_control_panel.psd b/data/psd/big_control_panel.psd
new file mode 100644
index 0000000..2926bb6
--- /dev/null
+++ b/data/psd/big_control_panel.psd
Binary files differ
diff --git a/data/psd/chair_down.psd b/data/psd/chair_down.psd
new file mode 100644
index 0000000..d09314b
--- /dev/null
+++ b/data/psd/chair_down.psd
Binary files differ
diff --git a/data/psd/computer_rack.psd b/data/psd/computer_rack.psd
new file mode 100644
index 0000000..3b956b6
--- /dev/null
+++ b/data/psd/computer_rack.psd
Binary files differ
diff --git a/data/psd/lamp_south.psd b/data/psd/lamp_south.psd
new file mode 100644
index 0000000..c5090e5
--- /dev/null
+++ b/data/psd/lamp_south.psd
Binary files differ
diff --git a/include/asset_defs.h b/include/asset_defs.h
index 6102be6..d691e61 100644
--- a/include/asset_defs.h
+++ b/include/asset_defs.h
@@ -45,10 +45,14 @@ image* img_metal_wall2;
image* img_chair_up;
image* img_zombie_spawner;
image* img_lamp_east;
+image* img_lamp_south;
image* img_metal_table_h;
image* img_cantine_glass;
image* img_glass_door_h_closed;
image* img_glass_door_h_open;
+image* img_big_control_panel;
+image* img_chair_down;
+image* img_computer_rack;
// Throwables
image* img_grenade;
diff --git a/include/objects.h b/include/objects.h
index d1adf34..6cfbf43 100644
--- a/include/objects.h
+++ b/include/objects.h
@@ -32,7 +32,11 @@ typedef enum t_object_type {
OBJECT_LAMP_EAST = 9,
OBJECT_METAL_TABLE_H = 10,
OBJECT_CANTINE_GLASS = 11,
- OBJECT_GLASS_DOOR_H,
+ OBJECT_GLASS_DOOR_H = 12, // Substitute.
+ OBJECT_LAMP_SOUTH = 13,
+ OBJECT_BIG_CONTROL_PANEL = 14,
+ OBJECT_CHAIR_DOWN = 15,
+ OBJECT_COMPUTER_RACK = 16,
OBJECT_END,
} object_type;
@@ -80,6 +84,10 @@ object object_dict[OBJECT_END] = {
{0,(vec3f){0, 0, 0},{3,1,0.5},OBJECT_METAL_TABLE_H, 1},
{0,(vec3f){0, 0, 0},{2,2,0.5},OBJECT_CANTINE_GLASS, 1},
{0,(vec3f){0, 0, 0},{2,1,1},OBJECT_GLASS_DOOR_H, 0},
+ {0,(vec3f){0, 0, 0},{1,1,1},OBJECT_LAMP_SOUTH, 0},
+ {0,(vec3f){0, 0, 0},{3,7,0.5f},OBJECT_BIG_CONTROL_PANEL, 1},
+ {0,(vec3f){0, 0, 0},{1,1,0.5f},OBJECT_CHAIR_DOWN, 1},
+ {0,(vec3f){0, 0, 0},{2,1,1.0f},OBJECT_COMPUTER_RACK, 1},
};
object get_object_at_tile(float x, float y);
diff --git a/main.c b/main.c
index 9b4bd1f..68e13fb 100644
--- a/main.c
+++ b/main.c
@@ -96,7 +96,7 @@ int main(int argc, char **argv)
platform_init(argc, argv, CONFIG_DIRECTORY);
settings_set_number("USE_GPU", 1);
- platform_window *window = platform_open_window_ex("Zombies!", 800, 600, 1920, 1080, 500, 500, FLAGS_MINIMIZE, update_func, 0, 0, 0, 0);
+ platform_window *window = platform_open_window_ex("Zombies!", 1600, 900, 1920, 1080, 500, 500, FLAGS_MINIMIZE, update_func, 0, 0, 0, 0);
platform_toggle_vsync(window, false);
//platform_toggle_fullscreen(window, true);
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);