summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAldrik Ramaekers <aldrik@amftech.nl>2022-12-27 09:05:33 +0100
committerAldrik Ramaekers <aldrik@amftech.nl>2022-12-27 09:05:33 +0100
commitd055cf69c8925e895cfcb726a4339f843f3ccfc1 (patch)
tree895f6f7d22272810f7d350f1b5f9b5b2c7dddd30
parent88fb94168c87dd8cc07e16cb988e0ea5c25bc202 (diff)
work
-rw-r--r--build/data/imgs/plants.pngbin0 -> 9545 bytes
-rw-r--r--build/data/imgs/player.pngbin0 -> 81870 bytes
-rw-r--r--build/data/imgs/wall1.pngbin0 -> 4613 bytes
-rw-r--r--build/data/maps/map1.datbin0 -> 6408 bytes
-rw-r--r--build/zombies.exebin1771319 -> 1776150 bytes
-rw-r--r--data/imgs/plants.pngbin0 -> 9545 bytes
-rw-r--r--data/imgs/player.pngbin0 -> 81870 bytes
-rw-r--r--data/imgs/wall1.pngbin0 -> 4613 bytes
-rw-r--r--data/maps/map1.datbin0 -> 6408 bytes
-rw-r--r--include/asset_defs.h4
-rw-r--r--include/map.h37
-rw-r--r--include/objects.h1
-rw-r--r--include/players.h2
-rw-r--r--main.c2
-rw-r--r--src/asset_defs.c5
-rw-r--r--src/map.c11
-rw-r--r--src/objects.c29
-rw-r--r--src/players.c25
18 files changed, 99 insertions, 17 deletions
diff --git a/build/data/imgs/plants.png b/build/data/imgs/plants.png
new file mode 100644
index 0000000..fc936a8
--- /dev/null
+++ b/build/data/imgs/plants.png
Binary files differ
diff --git a/build/data/imgs/player.png b/build/data/imgs/player.png
new file mode 100644
index 0000000..06d4cae
--- /dev/null
+++ b/build/data/imgs/player.png
Binary files differ
diff --git a/build/data/imgs/wall1.png b/build/data/imgs/wall1.png
new file mode 100644
index 0000000..980513f
--- /dev/null
+++ b/build/data/imgs/wall1.png
Binary files differ
diff --git a/build/data/maps/map1.dat b/build/data/maps/map1.dat
new file mode 100644
index 0000000..e4142aa
--- /dev/null
+++ b/build/data/maps/map1.dat
Binary files differ
diff --git a/build/zombies.exe b/build/zombies.exe
index 41f3267..998fde1 100644
--- a/build/zombies.exe
+++ b/build/zombies.exe
Binary files differ
diff --git a/data/imgs/plants.png b/data/imgs/plants.png
new file mode 100644
index 0000000..fc936a8
--- /dev/null
+++ b/data/imgs/plants.png
Binary files differ
diff --git a/data/imgs/player.png b/data/imgs/player.png
new file mode 100644
index 0000000..06d4cae
--- /dev/null
+++ b/data/imgs/player.png
Binary files differ
diff --git a/data/imgs/wall1.png b/data/imgs/wall1.png
new file mode 100644
index 0000000..980513f
--- /dev/null
+++ b/data/imgs/wall1.png
Binary files differ
diff --git a/data/maps/map1.dat b/data/maps/map1.dat
new file mode 100644
index 0000000..e4142aa
--- /dev/null
+++ b/data/maps/map1.dat
Binary files differ
diff --git a/include/asset_defs.h b/include/asset_defs.h
index d6af444..10919b4 100644
--- a/include/asset_defs.h
+++ b/include/asset_defs.h
@@ -12,6 +12,10 @@ image* img_icon_nova;
image* img_drop;
image* img_spawner;
+image* img_obj_plants;
+image* img_obj_wall1;
+image* img_player;
+
image* img_zombie_chunk_hand;
image* img_zombie_chunk_foot;
image* img_zombie_chunk_blood;
diff --git a/include/map.h b/include/map.h
index 8f153f8..6109c5a 100644
--- a/include/map.h
+++ b/include/map.h
@@ -23,7 +23,7 @@ typedef struct t_tile {
} tile;
#define MAP_SIZE_X 40
-#define MAP_SIZE_Y 20
+#define MAP_SIZE_Y 40
tile map_loaded[MAP_SIZE_Y][MAP_SIZE_X];
@@ -34,6 +34,21 @@ typedef struct t_map_info {
float px_incline;
} map_info;
+typedef struct t_map_data {
+ int width;
+ int height;
+ int heightmap[MAP_SIZE_Y][MAP_SIZE_X];
+} map_data;
+
+typedef struct t_extracted_map_data {
+ int width;
+ int height;
+ tile heightmap[MAP_SIZE_Y][MAP_SIZE_X];
+} extracted_map_data;
+
+map_data map_to_load = {0};
+extracted_map_data loaded_map = {0};
+
// data data that is stored on disk
int map[MAP_SIZE_Y][MAP_SIZE_X] = {
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
@@ -55,6 +70,26 @@ int map[MAP_SIZE_Y][MAP_SIZE_X] = {
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+ {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
};
void load_map_from_data();
diff --git a/include/objects.h b/include/objects.h
index 95e3739..50cd6f9 100644
--- a/include/objects.h
+++ b/include/objects.h
@@ -14,6 +14,7 @@ typedef struct t_object {
vec2f position;
vec3f size;
float h;
+ image* image;
} object;
typedef struct t_box {
diff --git a/include/players.h b/include/players.h
index 027fb31..c4652f2 100644
--- a/include/players.h
+++ b/include/players.h
@@ -8,6 +8,7 @@
#include "zombies.h"
#include "math_helper.h"
#include "guns.h"
+#include "sprite.h"
#define MAX_PLAYERS 10
@@ -27,6 +28,7 @@ typedef struct t_player {
network_client client; // For the host: is_connected = false and socket = 0
int kills;
u64 ping;
+ sprite sprite;
} player;
#include "protocol.h"
diff --git a/main.c b/main.c
index 32a8668..2231367 100644
--- a/main.c
+++ b/main.c
@@ -1,3 +1,5 @@
+#define ASSET_IMAGE_COUNT 50
+
#include <projectbase/project_base.h>
#include "include/players.h"
diff --git a/src/asset_defs.c b/src/asset_defs.c
index da8b5f0..a136e5f 100644
--- a/src/asset_defs.c
+++ b/src/asset_defs.c
@@ -16,4 +16,9 @@ void load_assets() {
img_tile_cobblestone = assets_load_image_from_file("data/imgs/tile_cobblestone.png");
img_spawner = assets_load_image_from_file("data/imgs/spawner.png");
+
+ img_obj_plants = assets_load_image_from_file("data/imgs/plants.png");
+ img_obj_wall1 = assets_load_image_from_file("data/imgs/wall1.png");
+
+ img_player = assets_load_image_from_file("data/imgs/player.png");
} \ No newline at end of file
diff --git a/src/map.c b/src/map.c
index faa447e..2b22888 100644
--- a/src/map.c
+++ b/src/map.c
@@ -95,9 +95,18 @@ static int get_height_of_tile_tr(int current_height, int x, int y) {
// load hardcoded map.
void load_map_from_data() {
+
+ // load map from file..
+ file_content content = platform_read_file_content("data/maps/map1.dat", "rb");
+ memcpy(&map_to_load, content.content, content.content_length);
+
+ //map_to_load.width = MAP_SIZE_X;
+ //map_to_load.height = MAP_SIZE_Y;
+ //memcpy(map_to_load.heightmap, map, sizeof(map));
+
for (int y = 0; y < MAP_SIZE_Y; y++) {
for (int x = MAP_SIZE_X-1; x >= 0; x--) {
- int h = map[y][x];
+ int h = map_to_load.heightmap[y][x];
int highest_point_topleft = get_height_of_tile_tl(h, x, y);
int highest_point_topright = get_height_of_tile_tr(h, x, y);
int highest_point_bottomright = get_height_of_tile_br(h, x, y);
diff --git a/src/objects.c b/src/objects.c
index 7b3b7a0..fdb0daa 100644
--- a/src/objects.c
+++ b/src/objects.c
@@ -48,7 +48,7 @@ void draw_objects_at_row(platform_window* window, int row) {
if (!o.active) continue;
box box = get_box_of_object(window, o);
- renderer->render_image(img_drop, box.tl_u.x, box.tl_u.y,
+ renderer->render_image(o.image, box.tl_u.x, box.tl_u.y,
box.br_d.x - box.tl_d.x, box.br_d.y - box.tr_u.y);
/*
render_quad_with_outline(box.tl_d, box.tr_d, box.bl_d, box.br_d, rgb(200,200,0));
@@ -58,7 +58,7 @@ void draw_objects_at_row(platform_window* window, int row) {
}
}
-void create_box(float x, float y, float h) {
+void create_box(float x, float y, float h, image* img) {
for (int i = 0; i < max_objects; i++) {
object o = objects[i];
if (o.active) continue;
@@ -67,6 +67,7 @@ void create_box(float x, float y, float h) {
objects[i].position = (vec2f){x, y};
objects[i].h = h;
objects[i].size = (vec3f){1,1,2};
+ objects[i].image = img;
break;
}
}
@@ -75,24 +76,24 @@ void create_objects() {
// rechts naar links op map.
for (int i = MAP_SIZE_X-1; i >= 0; i--) {
- create_box(i, 0, 0);
- create_box(i, MAP_SIZE_Y-1, 0);
+ create_box(i, 0, 0, img_obj_wall1);
+ create_box(i, MAP_SIZE_Y-1, 0, img_obj_wall1);
}
for (int i = MAP_SIZE_Y-1; i >= 0; i--) {
- create_box(0, i, 0);
- create_box(MAP_SIZE_X-1, i, 0);
+ create_box(0, i, 0, img_obj_wall1);
+ create_box(MAP_SIZE_X-1, i, 0, img_obj_wall1);
}
- create_box(16, 8, 0);
- create_box(14, 8, 0);
- create_box(11, 8, 0);
- create_box(10, 8, 0);
+ create_box(16, 8, 0, img_obj_plants);
+ create_box(14, 8, 0, img_obj_plants);
+ create_box(11, 8, 0, img_obj_plants);
+ create_box(10, 8, 0, img_obj_plants);
- create_box(15, 10, 0);
- create_box(14, 10, 0);
- create_box(13, 10, 0);
- create_box(11, 10, 0);
+ create_box(15, 10, 0, img_obj_plants);
+ create_box(14, 10, 0, img_obj_plants);
+ create_box(13, 10, 0, img_obj_plants);
+ create_box(11, 10, 0, img_obj_plants);
create_spawner((vec2){15, 5});
create_spawner((vec2){3, 8});
diff --git a/src/players.c b/src/players.c
index 886c782..6409b77 100644
--- a/src/players.c
+++ b/src/players.c
@@ -40,6 +40,7 @@ void spawn_player(u32 id, network_client client) {
players[i].guntype = GUN_MP5;
players[i].height = 0.0f;
players[i].client = client;
+ players[i].sprite = create_sprite(img_player, 5, 87, 100, 0.07f);
gun g = get_gun_by_type(players[i].guntype);
players[i].total_ammo = g.max_ammunition;
@@ -139,10 +140,23 @@ int get_my_player_index() {
return -1;
}
+static void take_update_debug(platform_window* window) {
+ if (keyboard_is_key_down(KEY_LEFT_CONTROL) && keyboard_is_key_pressed(KEY_S)) {
+ platform_write_file_content("../data/maps/map1.dat", "wb", (u8*)&map_to_load, sizeof(map_to_load));
+ platform_write_file_content("data/maps/map1.dat", "wb", (u8*)&map_to_load, sizeof(map_to_load));
+
+ log_info("Saved map");
+ }
+}
+
void take_player_input(platform_window* window) {
player* p = get_player_by_id(player_id);
if (!p) return;
+#ifdef MODE_DEBUG
+ take_update_debug(window);
+#endif
+
if (keyboard_is_key_down(KEY_W)) {
if (!global_state.server) {
network_message message = create_protocol_user_moved(MOVE_UP, player_id);
@@ -208,6 +222,7 @@ void update_players_server() {
for (int i = 0; i < MAX_PLAYERS; i++) {
if (!players[i].active) continue;
players[i].sec_since_last_shot += SERVER_TICK_RATE;
+ update_sprite(&players[i].sprite);
}
}
@@ -222,15 +237,23 @@ void draw_players(platform_window* window) {
players[i].height = height;
box box = get_render_box_of_square(window, (vec3f){players[i].playerx, players[i].playery, height}, (vec3f){size,size,0.8f});
+ /*
render_quad_with_outline(box.tl_d, box.tr_d, box.bl_d, box.br_d, rgb(200,150,120));
render_quad_with_outline(box.tl_u, box.tr_u, box.bl_u, box.br_u, rgb(200,150,120));
render_quad_with_outline(box.tl_u, box.tl_d, box.bl_u, box.bl_d, rgb(200,150,120));
render_quad_with_outline(box.bl_u, box.br_u, box.bl_d, box.br_d, rgb(200,150,120));
+*/
+ sprite_frame frame = sprite_get_frame(&players[i].sprite);
+ renderer->render_image_quad_partial(players[i].sprite.image,
+ 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);
int size = get_tile_width(window) / 2;
map_info info = get_map_info(window);
-
float player_render_x = players[i].playerx*info.tile_width + (players[i].playery*info.px_incline);
float player_render_y = players[i].playery*info.tile_height - (height*info.px_raised_per_h);