summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/allocator.c2
-rw-r--r--src/asset_defs.c10
-rw-r--r--src/editor.c6
-rw-r--r--src/game.c80
-rw-r--r--src/objects.c22
-rw-r--r--src/zombies.c2
6 files changed, 118 insertions, 4 deletions
diff --git a/src/allocator.c b/src/allocator.c
index bddc5e5..b1989f6 100644
--- a/src/allocator.c
+++ b/src/allocator.c
@@ -13,7 +13,7 @@ void* allocator_alloc(allocator* al, uint64_t size) {
mutex_lock(&al->mutex);
if (al->cursor + size < al->size) {
al->cursor += size;
- void* result = al->memory + al->cursor - size;
+ char* result = (char*)al->memory + al->cursor - size;
mutex_unlock(&al->mutex);
return result;
}
diff --git a/src/asset_defs.c b/src/asset_defs.c
index 1440e48..c814355 100644
--- a/src/asset_defs.c
+++ b/src/asset_defs.c
@@ -107,6 +107,16 @@ void load_assets() { // Assets loaded at match start.
img_painting8 = assets_load_image_from_file("data/imgs/objects/painting8.png");
img_painting9 = assets_load_image_from_file("data/imgs/objects/painting9.png");
img_painting10 = assets_load_image_from_file("data/imgs/objects/painting10.png");
+ img_floormat1 = assets_load_image_from_file("data/imgs/objects/floormat1.png");
+ img_floormat2 = assets_load_image_from_file("data/imgs/objects/floormat2.png");
+ img_metal_wall3 = assets_load_image_from_file("data/imgs/objects/metal_wall3.png");
+ img_metal_wall4 = assets_load_image_from_file("data/imgs/objects/metal_wall4.png");
+ img_metal_wall5 = assets_load_image_from_file("data/imgs/objects/metal_wall5.png");
+ img_metal_wall6 = assets_load_image_from_file("data/imgs/objects/metal_wall6.png");
+ img_metal_wall7 = assets_load_image_from_file("data/imgs/objects/metal_wall7.png");
+ img_metal_wall8 = assets_load_image_from_file("data/imgs/objects/metal_wall8.png");
+ img_metal_wall9 = assets_load_image_from_file("data/imgs/objects/metal_wall9.png");
+ img_metal_wall10 = assets_load_image_from_file("data/imgs/objects/metal_wall10.png");
// Players
img_gunner_black_run = assets_load_image_from_file("data/imgs/players/Black/Gunner_Black_Run.png");
diff --git a/src/editor.c b/src/editor.c
index 9295d14..9eee45c 100644
--- a/src/editor.c
+++ b/src/editor.c
@@ -474,12 +474,16 @@ void draw_object_panel(platform_window* window) {
int cols = 4;
int tile_w = editor_width / cols;
+ static int scroll = 0;
+ if (_global_mouse.scroll_state == SCROLL_DOWN) scroll+=10;
+ if (_global_mouse.scroll_state == SCROLL_UP) scroll-=10;
+
int tile_start = OBJECT_NONE+1;
for (int i = tile_start; i < OBJECT_END; i++) {
int x = ((i-tile_start) % cols) * tile_w;
int y = (start_y + ((i-tile_start) / cols)) * tile_w;
- y += offset_y;
+ y += offset_y + scroll;
image* img = get_image_from_objecttype((object_type)i);
if (push_icon_button(x, y, tile_w, img, object_to_place == (object_type)i)) {
diff --git a/src/game.c b/src/game.c
index de62746..aa4d91d 100644
--- a/src/game.c
+++ b/src/game.c
@@ -119,6 +119,86 @@ void load_map() {
global_state.state = GAMESTATE_LOADING_ASSETS;
}
+void fill_game_structs()
+{
+ global_audio_source_position = (vec3f){-1,-1,-1};
+
+ object _localobject_dict[OBJECT_END] = {
+ {0,(vec3f){0, 0, 0},{1,3,0.5f},OBJECT_SPACE_CONTROL_PANEL, 1},
+ {0,(vec3f){0, 0, 0},{1,1,1},OBJECT_SPACE_WINDOW, 1},
+ {0,(vec3f){0, 0, 0},{1,1,1},OBJECT_METAL_WALL, 1},
+ {0,(vec3f){0, 0, 0},{1,1,1},OBJECT_METAL_WALL2, 1},
+ {0,(vec3f){0, 0, 0},{3,1,0.5f},OBJECT_SPACE_CONTROL_PANEL2, 1},
+ {0,(vec3f){0, 0, 0},{1,1,0.5f},OBJECT_CHAIR_UP, 1},
+ {0,(vec3f){0, 0, 0},{1,1,1},OBJECT_SPACE_WINDOW_H, 1},
+ {0,(vec3f){0, 0, 0},{1,1,0.5},OBJECT_ZOMBIE_SPAWNER, 1},
+ {0,(vec3f){0, 0, 0},{1,1,0},OBJECT_LAMP_EAST, 0},
+ {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},
+ {0,(vec3f){0, 0, 0},{8,2,1.0f},OBJECT_GENERATOR, 1},
+ {0,(vec3f){0, 0, 0},{1,4,0.5f},OBJECT_SCHOOL_TABLE, 1},
+ {0,(vec3f){0, 0, 0},{2,1,0.5f},OBJECT_SCHOOL_BENCH, 1},
+ {0,(vec3f){0, 0, 0},{1,1,1.0f},OBJECT_LOCKER, 1},
+ {0,(vec3f){0, 0, 0},{1,1,0.5f},OBJECT_BAR_H, 1},
+ {0,(vec3f){0, 0, 0},{1,1,0.5f},OBJECT_BAR_V, 1},
+ {0,(vec3f){0, 0, 0},{1,1,0.5f},OBJECT_BAR_HV, 1},
+ {0,(vec3f){0, 0, 0},{1,1,0.5f},OBJECT_CLUB_SEAT1, 1},
+ {0,(vec3f){0, 0, 0},{1,1,0.5f},OBJECT_CLUB_SEAT2, 1},
+ {0,(vec3f){0, 0, 0},{1,1,0.5f},OBJECT_CLUB_SEAT3, 1},
+ {0,(vec3f){0, 0, 0},{1,1,0.5f},OBJECT_CLUB_SEAT4, 1},
+ {0,(vec3f){0, 0, 0},{1,1,0.5f},OBJECT_CLUB_WALL1, 1},
+ {0,(vec3f){0, 0, 0},{1,1,0.5f},OBJECT_CLUB_WALL2, 1},
+ {0,(vec3f){0, 0, 0},{1,1,1.0f},OBJECT_CLUB_WALL3, 1},
+ {0,(vec3f){0, 0, 0},{1,1,0.5f},OBJECT_CLUB_SEAT5, 1},
+ {0,(vec3f){0, 0, 0},{1,1,0.5f},OBJECT_CLUB_SEAT6, 1},
+ {0,(vec3f){0, 0, 0},{1,1,0.5f},OBJECT_CLUB_SEAT7, 1},
+ {0,(vec3f){0, 0, 0},{13,3,0},OBJECT_BOWLING_LANE, 0},
+ {0,(vec3f){0, 0, 0},{2,3,1},OBJECT_BOWLING_LANE_END, 1},
+ {0,(vec3f){0, 0, 0},{1,2,1},OBJECT_GLASS_DOOR_V, 0},
+ {0,(vec3f){0, 0, 0},{3,1,0.5f},OBJECT_BOWLING_MACHINE, 1},
+ {0,(vec3f){0, 0, 0},{2,1,1},OBJECT_PAINTING1, 0},
+ {0,(vec3f){0, 0, 0},{2,1,1},OBJECT_PAINTING2, 0},
+ {0,(vec3f){0, 0, 0},{2,1,1},OBJECT_PAINTING3, 0},
+ {0,(vec3f){0, 0, 0},{2,1,1},OBJECT_PAINTING4, 0},
+ {0,(vec3f){0, 0, 0},{2,1,1},OBJECT_PAINTING5, 0},
+ {0,(vec3f){0, 0, 0},{2,1,1},OBJECT_PAINTING6, 0},
+ {0,(vec3f){0, 0, 0},{2,1,1},OBJECT_PAINTING7, 0},
+ {0,(vec3f){0, 0, 0},{2,1,1},OBJECT_PAINTING8, 0},
+ {0,(vec3f){0, 0, 0},{2,1,1},OBJECT_PAINTING9, 0},
+ {0,(vec3f){0, 0, 0},{2,1,1},OBJECT_PAINTING10, 0},
+ {0,(vec3f){0, 0, 0},{10,10,0},OBJECT_FLOORMAT1, 0},
+ {0,(vec3f){0, 0, 0},{10,10,0},OBJECT_FLOORMAT2, 0},
+ {0,(vec3f){0, 0, 0},{1,1,1},OBJECT_METAL_WALL3, 1},
+ {0,(vec3f){0, 0, 0},{1,1,1},OBJECT_METAL_WALL4, 1},
+ {0,(vec3f){0, 0, 0},{1,1,1},OBJECT_METAL_WALL5, 1},
+ {0,(vec3f){0, 0, 0},{1,1,1},OBJECT_METAL_WALL6, 1},
+ {0,(vec3f){0, 0, 0},{1,1,1},OBJECT_METAL_WALL7, 1},
+ {0,(vec3f){0, 0, 0},{1,1,1},OBJECT_METAL_WALL8, 1},
+ {0,(vec3f){0, 0, 0},{1,1,1},OBJECT_METAL_WALL9, 1},
+ {0,(vec3f){0, 0, 0},{1,1,1},OBJECT_METAL_WALL10, 1},
+ };
+ memcpy(object_dict, _localobject_dict, sizeof(_localobject_dict));
+
+ vec2 _local_available_resolutions[] = {
+ (vec2){1366, 769},
+ (vec2){1440, 900},
+ (vec2){1600, 900},
+ (vec2){1920, 1080},
+ (vec2){2560, 1080},
+ (vec2){2560, 1440},
+ (vec2){2560, 1600},
+ (vec2){3440, 1440},
+ (vec2){3840, 2160},
+ (vec2){5120, 1440},
+ };
+ memcpy(available_resolutions, _local_available_resolutions, sizeof(_local_available_resolutions));
+}
+
void init_game() {
log_info("STATE: GAMESTATE_IDLE");
global_state.state = GAMESTATE_IDLE;
diff --git a/src/objects.c b/src/objects.c
index 2574ed7..72535f6 100644
--- a/src/objects.c
+++ b/src/objects.c
@@ -74,7 +74,7 @@ object get_object_at_tile(float x, float y) {
void add_object(object obj) {
object existing_obj = get_object_at_tile(obj.position.x, obj.position.y);
- if (existing_obj.active) {
+ if (existing_obj.active && existing_obj.collision) {
log_info("Space occupied, cannot place object.");
return;
}
@@ -191,6 +191,26 @@ image* get_image_from_objecttype(object_type tile) {
return img_painting9;
case OBJECT_PAINTING10:
return img_painting10;
+ case OBJECT_FLOORMAT1:
+ return img_floormat1;
+ case OBJECT_FLOORMAT2:
+ return img_floormat2;
+ case OBJECT_METAL_WALL3:
+ return img_metal_wall3;
+ case OBJECT_METAL_WALL4:
+ return img_metal_wall4;
+ case OBJECT_METAL_WALL5:
+ return img_metal_wall5;
+ case OBJECT_METAL_WALL6:
+ return img_metal_wall6;
+ case OBJECT_METAL_WALL7:
+ return img_metal_wall7;
+ case OBJECT_METAL_WALL8:
+ return img_metal_wall8;
+ case OBJECT_METAL_WALL9:
+ return img_metal_wall9;
+ case OBJECT_METAL_WALL10:
+ return img_metal_wall10;
default:
return 0;
}
diff --git a/src/zombies.c b/src/zombies.c
index 9826ec2..fe892b4 100644
--- a/src/zombies.c
+++ b/src/zombies.c
@@ -213,7 +213,7 @@ void update_spawners_server() {
float dist = 0.0f;
player p = get_closest_player_to_tile_x(spawner.position.x, spawner.position.y, &dist);
- if (dist >= MAX_DISTANCE_BETWEEN_ZOMBIE_AND_PLAYER && p.id != -1) {
+ if ((dist <= MIN_DISTANCE_BETWEEN_ZOMBIE_AND_PLAYER || dist >= MAX_DISTANCE_BETWEEN_ZOMBIE_AND_PLAYER) && p.id != -1) {
continue;
}