summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.vscode/settings.json3
-rw-r--r--data/imgs/objects/floormat1.pngbin0 -> 2549551 bytes
-rw-r--r--data/imgs/objects/floormat2.pngbin0 -> 2045573 bytes
-rw-r--r--data/imgs/objects/metal_wall10.pngbin0 -> 56589 bytes
-rw-r--r--data/imgs/objects/metal_wall3.pngbin0 -> 71779 bytes
-rw-r--r--data/imgs/objects/metal_wall4.pngbin0 -> 153885 bytes
-rw-r--r--data/imgs/objects/metal_wall5.pngbin0 -> 121043 bytes
-rw-r--r--data/imgs/objects/metal_wall6.pngbin0 -> 57123 bytes
-rw-r--r--data/imgs/objects/metal_wall7.pngbin0 -> 140136 bytes
-rw-r--r--data/imgs/objects/metal_wall8.pngbin0 -> 495 bytes
-rw-r--r--data/imgs/objects/metal_wall9.pngbin0 -> 4809 bytes
-rw-r--r--data/maps/map1.datbin8384008 -> 8384008 bytes
-rw-r--r--data/psd/floormat1.psdbin0 -> 10509220 bytes
-rw-r--r--data/psd/floormat2.psdbin0 -> 8564143 bytes
-rw-r--r--data/psd/metal_wall10.psdbin0 -> 1889148 bytes
-rw-r--r--data/psd/metal_wall4.psdbin0 -> 3663122 bytes
-rw-r--r--data/psd/metal_wall5.psdbin0 -> 3894810 bytes
-rw-r--r--data/psd/metal_wall6.psdbin0 -> 461287 bytes
-rw-r--r--data/psd/metal_wall8.psdbin0 -> 43186 bytes
-rw-r--r--data/psd/metal_wall9.psdbin0 -> 165687 bytes
-rw-r--r--include/asset_defs.h10
-rw-r--r--include/audio.h2
-rw-r--r--include/game.h1
-rw-r--r--include/menu.h13
-rw-r--r--include/objects.h60
-rw-r--r--include/zombies.h3
-rw-r--r--libs/msvc/SDL2_mixer.dllbin0 -> 306688 bytes
-rw-r--r--libs/msvc/SDL2_mixer.libbin0 -> 22068 bytes
-rw-r--r--main.c12
-rw-r--r--msvc.bat11
-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
36 files changed, 170 insertions, 67 deletions
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 928ce35..43dcada 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -6,6 +6,7 @@
"xutility": "c",
"editor.h": "c",
"glass_doors.h": "c",
- "*.rh": "c"
+ "*.rh": "c",
+ "sdl_mixer.h": "c"
}
} \ No newline at end of file
diff --git a/data/imgs/objects/floormat1.png b/data/imgs/objects/floormat1.png
new file mode 100644
index 0000000..285794b
--- /dev/null
+++ b/data/imgs/objects/floormat1.png
Binary files differ
diff --git a/data/imgs/objects/floormat2.png b/data/imgs/objects/floormat2.png
new file mode 100644
index 0000000..b343733
--- /dev/null
+++ b/data/imgs/objects/floormat2.png
Binary files differ
diff --git a/data/imgs/objects/metal_wall10.png b/data/imgs/objects/metal_wall10.png
new file mode 100644
index 0000000..dddc7b2
--- /dev/null
+++ b/data/imgs/objects/metal_wall10.png
Binary files differ
diff --git a/data/imgs/objects/metal_wall3.png b/data/imgs/objects/metal_wall3.png
new file mode 100644
index 0000000..979f69a
--- /dev/null
+++ b/data/imgs/objects/metal_wall3.png
Binary files differ
diff --git a/data/imgs/objects/metal_wall4.png b/data/imgs/objects/metal_wall4.png
new file mode 100644
index 0000000..a1232e2
--- /dev/null
+++ b/data/imgs/objects/metal_wall4.png
Binary files differ
diff --git a/data/imgs/objects/metal_wall5.png b/data/imgs/objects/metal_wall5.png
new file mode 100644
index 0000000..52fde82
--- /dev/null
+++ b/data/imgs/objects/metal_wall5.png
Binary files differ
diff --git a/data/imgs/objects/metal_wall6.png b/data/imgs/objects/metal_wall6.png
new file mode 100644
index 0000000..c418985
--- /dev/null
+++ b/data/imgs/objects/metal_wall6.png
Binary files differ
diff --git a/data/imgs/objects/metal_wall7.png b/data/imgs/objects/metal_wall7.png
new file mode 100644
index 0000000..876d193
--- /dev/null
+++ b/data/imgs/objects/metal_wall7.png
Binary files differ
diff --git a/data/imgs/objects/metal_wall8.png b/data/imgs/objects/metal_wall8.png
new file mode 100644
index 0000000..25bc8da
--- /dev/null
+++ b/data/imgs/objects/metal_wall8.png
Binary files differ
diff --git a/data/imgs/objects/metal_wall9.png b/data/imgs/objects/metal_wall9.png
new file mode 100644
index 0000000..42dfa4f
--- /dev/null
+++ b/data/imgs/objects/metal_wall9.png
Binary files differ
diff --git a/data/maps/map1.dat b/data/maps/map1.dat
index d159157..e01822a 100644
--- a/data/maps/map1.dat
+++ b/data/maps/map1.dat
Binary files differ
diff --git a/data/psd/floormat1.psd b/data/psd/floormat1.psd
new file mode 100644
index 0000000..2865e3f
--- /dev/null
+++ b/data/psd/floormat1.psd
Binary files differ
diff --git a/data/psd/floormat2.psd b/data/psd/floormat2.psd
new file mode 100644
index 0000000..06c4900
--- /dev/null
+++ b/data/psd/floormat2.psd
Binary files differ
diff --git a/data/psd/metal_wall10.psd b/data/psd/metal_wall10.psd
new file mode 100644
index 0000000..83d8b4c
--- /dev/null
+++ b/data/psd/metal_wall10.psd
Binary files differ
diff --git a/data/psd/metal_wall4.psd b/data/psd/metal_wall4.psd
new file mode 100644
index 0000000..96c1a6f
--- /dev/null
+++ b/data/psd/metal_wall4.psd
Binary files differ
diff --git a/data/psd/metal_wall5.psd b/data/psd/metal_wall5.psd
new file mode 100644
index 0000000..1312f19
--- /dev/null
+++ b/data/psd/metal_wall5.psd
Binary files differ
diff --git a/data/psd/metal_wall6.psd b/data/psd/metal_wall6.psd
new file mode 100644
index 0000000..248526e
--- /dev/null
+++ b/data/psd/metal_wall6.psd
Binary files differ
diff --git a/data/psd/metal_wall8.psd b/data/psd/metal_wall8.psd
new file mode 100644
index 0000000..b1b5a9a
--- /dev/null
+++ b/data/psd/metal_wall8.psd
Binary files differ
diff --git a/data/psd/metal_wall9.psd b/data/psd/metal_wall9.psd
new file mode 100644
index 0000000..4f2ce28
--- /dev/null
+++ b/data/psd/metal_wall9.psd
Binary files differ
diff --git a/include/asset_defs.h b/include/asset_defs.h
index 23610b4..0d27bbe 100644
--- a/include/asset_defs.h
+++ b/include/asset_defs.h
@@ -101,6 +101,16 @@ image* img_painting7;
image* img_painting8;
image* img_painting9;
image* img_painting10;
+image* img_floormat1;
+image* img_floormat2;
+image* img_metal_wall3;
+image* img_metal_wall4;
+image* img_metal_wall5;
+image* img_metal_wall6;
+image* img_metal_wall7;
+image* img_metal_wall8;
+image* img_metal_wall9;
+image* img_metal_wall10;
// Throwables
image* img_grenade;
diff --git a/include/audio.h b/include/audio.h
index 8319305..db979df 100644
--- a/include/audio.h
+++ b/include/audio.h
@@ -45,7 +45,7 @@ typedef struct t_audio_event {
#define MAX_AUDIO_EVENTS (NUM_AUDIO_CHANNELS)
audio_event audio_events[MAX_AUDIO_EVENTS] = {0};
int max_audio_events = MAX_AUDIO_EVENTS;
-vec3f global_audio_source_position =(vec3f){-1,-1,-1};
+vec3f global_audio_source_position;
void play_music(Mix_Music* music);
void add_throwable_audio_event_to_queue(audio_event_type event, throwable_type throwable, u32 playerid, vec3f position);
diff --git a/include/game.h b/include/game.h
index 88fd0e1..20a7437 100644
--- a/include/game.h
+++ b/include/game.h
@@ -40,5 +40,6 @@ game global_state = {GAMESTATE_IDLE,DISCONNECTED,0,0};
void init_game();
void start_solo_game();
bool connect_to_game(char* ip, char* port);
+void fill_game_structs();
#endif \ No newline at end of file
diff --git a/include/menu.h b/include/menu.h
index fd74425..1623d51 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -7,18 +7,7 @@
extern int current_res_index;
extern bool is_fullscreen;
-vec2 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},
-};
+vec2 available_resolutions[10];
void update_menu(platform_window* window);
diff --git a/include/objects.h b/include/objects.h
index 9d22942..cb42a04 100644
--- a/include/objects.h
+++ b/include/objects.h
@@ -69,6 +69,16 @@ typedef enum t_object_type {
OBJECT_PAINTING8 = 45,
OBJECT_PAINTING9 = 46,
OBJECT_PAINTING10 = 47,
+ OBJECT_FLOORMAT1 = 48,
+ OBJECT_FLOORMAT2 = 49,
+ OBJECT_METAL_WALL3 = 50,
+ OBJECT_METAL_WALL4 = 51,
+ OBJECT_METAL_WALL5 = 52,
+ OBJECT_METAL_WALL6 = 53,
+ OBJECT_METAL_WALL7 = 54,
+ OBJECT_METAL_WALL8 = 55,
+ OBJECT_METAL_WALL9 = 56,
+ OBJECT_METAL_WALL10 = 57,
OBJECT_END,
} object_type;
@@ -103,55 +113,7 @@ typedef struct t_box {
} box;
// @NEWOBJECT
-object object_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},
-};
+object object_dict[OBJECT_END];
// decoration objects laying on floor.
object decoration_objects[MAX_DECORATION_OBJECTS] = {0};
diff --git a/include/zombies.h b/include/zombies.h
index 85f66df..bb74d23 100644
--- a/include/zombies.h
+++ b/include/zombies.h
@@ -46,6 +46,9 @@ typedef struct t_spawner {
// Despawn distance.
#define MAX_DISTANCE_BETWEEN_ZOMBIE_AND_PLAYER 40
+// Spawners closer than this will not spawn.
+#define MIN_DISTANCE_BETWEEN_ZOMBIE_AND_PLAYER 20
+
#define MAX_SPAWNERS (25)
spawner spawner_tiles[MAX_SPAWNERS] = {0};
diff --git a/libs/msvc/SDL2_mixer.dll b/libs/msvc/SDL2_mixer.dll
new file mode 100644
index 0000000..5e4fef3
--- /dev/null
+++ b/libs/msvc/SDL2_mixer.dll
Binary files differ
diff --git a/libs/msvc/SDL2_mixer.lib b/libs/msvc/SDL2_mixer.lib
new file mode 100644
index 0000000..3381183
--- /dev/null
+++ b/libs/msvc/SDL2_mixer.lib
Binary files differ
diff --git a/main.c b/main.c
index 1e66858..d81dc54 100644
--- a/main.c
+++ b/main.c
@@ -3,6 +3,16 @@
#define ASSET_FONT_COUNT 20
#define NUM_AUDIO_CHANNELS 64
+#include <float.h>
+
+#ifndef __FLT_MAX__
+#define __FLT_MAX__ FLT_MAX
+#endif
+
+#ifndef M_PI
+#define _USE_MATH_DEFINES
+#endif
+
#include "project-base/src/project_base.h"
#include "include/SDL2/SDL_mixer.h"
@@ -91,6 +101,8 @@ void handle_args(int argc, char **argv) {
int main(int argc, char **argv)
{
+ fill_game_structs();
+
platform_init(argc, argv, CONFIG_DIRECTORY);
is_fullscreen = settings_get_number_or_default("FULLSCRN", 1);
diff --git a/msvc.bat b/msvc.bat
new file mode 100644
index 0000000..1ae28c1
--- /dev/null
+++ b/msvc.bat
@@ -0,0 +1,11 @@
+call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
+@set OUT_DIR=build\\
+@set OUT_EXE=zombies
+@set SOURCES=main.c
+@set LIBS=opengl32.lib Advapi32.lib Shell32.lib Ole32.lib User32.lib Pathcch.lib SDL2_mixer.lib
+@set FLAGS=/DMODE_DEBUG /DEBUG:FULL /Ob0 /MT /Oy- /Zi
+
+
+cl /std:c11 /analyze:stacksize 40000 /nologo %FLAGS% /w /MD /EHsc /Isrc /utf-8 %INCLUDES% %SOURCES% /Fe%OUT_DIR%/%OUT_EXE%.exe /Fd%OUT_DIR%/vc140.pdb /Fo%OUT_DIR%/ /link /LIBPATH:libs/msvc %LIBS%
+if "%1"=="-r" call "%OUT_DIR%/%OUT_EXE%.exe"
+if "%1"=="-d" call devenv "%OUT_DIR%/%OUT_EXE%.exe"
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;
}