From 544f338b8e9ea010eccedbfa24bee5c97b7d3621 Mon Sep 17 00:00:00 2001 From: Aldrik Ramaekers Date: Thu, 16 May 2024 16:37:39 +0200 Subject: walls, msvc building --- .vscode/settings.json | 3 +- data/imgs/objects/floormat1.png | Bin 0 -> 2549551 bytes data/imgs/objects/floormat2.png | Bin 0 -> 2045573 bytes data/imgs/objects/metal_wall10.png | Bin 0 -> 56589 bytes data/imgs/objects/metal_wall3.png | Bin 0 -> 71779 bytes data/imgs/objects/metal_wall4.png | Bin 0 -> 153885 bytes data/imgs/objects/metal_wall5.png | Bin 0 -> 121043 bytes data/imgs/objects/metal_wall6.png | Bin 0 -> 57123 bytes data/imgs/objects/metal_wall7.png | Bin 0 -> 140136 bytes data/imgs/objects/metal_wall8.png | Bin 0 -> 495 bytes data/imgs/objects/metal_wall9.png | Bin 0 -> 4809 bytes data/maps/map1.dat | Bin 8384008 -> 8384008 bytes data/psd/floormat1.psd | Bin 0 -> 10509220 bytes data/psd/floormat2.psd | Bin 0 -> 8564143 bytes data/psd/metal_wall10.psd | Bin 0 -> 1889148 bytes data/psd/metal_wall4.psd | Bin 0 -> 3663122 bytes data/psd/metal_wall5.psd | Bin 0 -> 3894810 bytes data/psd/metal_wall6.psd | Bin 0 -> 461287 bytes data/psd/metal_wall8.psd | Bin 0 -> 43186 bytes data/psd/metal_wall9.psd | Bin 0 -> 165687 bytes include/asset_defs.h | 10 +++++ include/audio.h | 2 +- include/game.h | 1 + include/menu.h | 13 +----- include/objects.h | 60 +++++----------------------- include/zombies.h | 3 ++ libs/msvc/SDL2_mixer.dll | Bin 0 -> 306688 bytes libs/msvc/SDL2_mixer.lib | Bin 0 -> 22068 bytes main.c | 12 ++++++ msvc.bat | 11 +++++ src/allocator.c | 2 +- src/asset_defs.c | 10 +++++ src/editor.c | 6 ++- src/game.c | 80 +++++++++++++++++++++++++++++++++++++ src/objects.c | 22 +++++++++- src/zombies.c | 2 +- 36 files changed, 170 insertions(+), 67 deletions(-) create mode 100644 data/imgs/objects/floormat1.png create mode 100644 data/imgs/objects/floormat2.png create mode 100644 data/imgs/objects/metal_wall10.png create mode 100644 data/imgs/objects/metal_wall3.png create mode 100644 data/imgs/objects/metal_wall4.png create mode 100644 data/imgs/objects/metal_wall5.png create mode 100644 data/imgs/objects/metal_wall6.png create mode 100644 data/imgs/objects/metal_wall7.png create mode 100644 data/imgs/objects/metal_wall8.png create mode 100644 data/imgs/objects/metal_wall9.png create mode 100644 data/psd/floormat1.psd create mode 100644 data/psd/floormat2.psd create mode 100644 data/psd/metal_wall10.psd create mode 100644 data/psd/metal_wall4.psd create mode 100644 data/psd/metal_wall5.psd create mode 100644 data/psd/metal_wall6.psd create mode 100644 data/psd/metal_wall8.psd create mode 100644 data/psd/metal_wall9.psd create mode 100644 libs/msvc/SDL2_mixer.dll create mode 100644 libs/msvc/SDL2_mixer.lib create mode 100644 msvc.bat 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 Binary files /dev/null and b/data/imgs/objects/floormat1.png differ diff --git a/data/imgs/objects/floormat2.png b/data/imgs/objects/floormat2.png new file mode 100644 index 0000000..b343733 Binary files /dev/null and b/data/imgs/objects/floormat2.png differ diff --git a/data/imgs/objects/metal_wall10.png b/data/imgs/objects/metal_wall10.png new file mode 100644 index 0000000..dddc7b2 Binary files /dev/null and b/data/imgs/objects/metal_wall10.png differ diff --git a/data/imgs/objects/metal_wall3.png b/data/imgs/objects/metal_wall3.png new file mode 100644 index 0000000..979f69a Binary files /dev/null and b/data/imgs/objects/metal_wall3.png differ diff --git a/data/imgs/objects/metal_wall4.png b/data/imgs/objects/metal_wall4.png new file mode 100644 index 0000000..a1232e2 Binary files /dev/null and b/data/imgs/objects/metal_wall4.png differ diff --git a/data/imgs/objects/metal_wall5.png b/data/imgs/objects/metal_wall5.png new file mode 100644 index 0000000..52fde82 Binary files /dev/null and b/data/imgs/objects/metal_wall5.png differ diff --git a/data/imgs/objects/metal_wall6.png b/data/imgs/objects/metal_wall6.png new file mode 100644 index 0000000..c418985 Binary files /dev/null and b/data/imgs/objects/metal_wall6.png differ diff --git a/data/imgs/objects/metal_wall7.png b/data/imgs/objects/metal_wall7.png new file mode 100644 index 0000000..876d193 Binary files /dev/null and b/data/imgs/objects/metal_wall7.png differ diff --git a/data/imgs/objects/metal_wall8.png b/data/imgs/objects/metal_wall8.png new file mode 100644 index 0000000..25bc8da Binary files /dev/null and b/data/imgs/objects/metal_wall8.png differ diff --git a/data/imgs/objects/metal_wall9.png b/data/imgs/objects/metal_wall9.png new file mode 100644 index 0000000..42dfa4f Binary files /dev/null and b/data/imgs/objects/metal_wall9.png differ diff --git a/data/maps/map1.dat b/data/maps/map1.dat index d159157..e01822a 100644 Binary files a/data/maps/map1.dat and b/data/maps/map1.dat differ diff --git a/data/psd/floormat1.psd b/data/psd/floormat1.psd new file mode 100644 index 0000000..2865e3f Binary files /dev/null and b/data/psd/floormat1.psd differ diff --git a/data/psd/floormat2.psd b/data/psd/floormat2.psd new file mode 100644 index 0000000..06c4900 Binary files /dev/null and b/data/psd/floormat2.psd differ diff --git a/data/psd/metal_wall10.psd b/data/psd/metal_wall10.psd new file mode 100644 index 0000000..83d8b4c Binary files /dev/null and b/data/psd/metal_wall10.psd differ diff --git a/data/psd/metal_wall4.psd b/data/psd/metal_wall4.psd new file mode 100644 index 0000000..96c1a6f Binary files /dev/null and b/data/psd/metal_wall4.psd differ diff --git a/data/psd/metal_wall5.psd b/data/psd/metal_wall5.psd new file mode 100644 index 0000000..1312f19 Binary files /dev/null and b/data/psd/metal_wall5.psd differ diff --git a/data/psd/metal_wall6.psd b/data/psd/metal_wall6.psd new file mode 100644 index 0000000..248526e Binary files /dev/null and b/data/psd/metal_wall6.psd differ diff --git a/data/psd/metal_wall8.psd b/data/psd/metal_wall8.psd new file mode 100644 index 0000000..b1b5a9a Binary files /dev/null and b/data/psd/metal_wall8.psd differ diff --git a/data/psd/metal_wall9.psd b/data/psd/metal_wall9.psd new file mode 100644 index 0000000..4f2ce28 Binary files /dev/null and b/data/psd/metal_wall9.psd 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 Binary files /dev/null and b/libs/msvc/SDL2_mixer.dll differ diff --git a/libs/msvc/SDL2_mixer.lib b/libs/msvc/SDL2_mixer.lib new file mode 100644 index 0000000..3381183 Binary files /dev/null and b/libs/msvc/SDL2_mixer.lib 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 + +#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; } -- cgit v1.2.3-70-g09d2