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 --- 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 +- 6 files changed, 118 insertions(+), 4 deletions(-) (limited to 'src') 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