diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/asset_defs.c | 2 | ||||
| -rw-r--r-- | src/editor.c | 24 | ||||
| -rw-r--r-- | src/map.c | 36 | ||||
| -rw-r--r-- | src/objects.c | 8 | ||||
| -rw-r--r-- | src/players.c | 2 | ||||
| -rw-r--r-- | src/zombies.c | 5 |
6 files changed, 66 insertions, 11 deletions
diff --git a/src/asset_defs.c b/src/asset_defs.c index 434d1ed..cccbc7b 100644 --- a/src/asset_defs.c +++ b/src/asset_defs.c @@ -47,9 +47,11 @@ void load_assets() { img_space_control_panel = assets_load_image_from_file("data/imgs/objects/space_control_panel.png"); img_space_control_panel2 = assets_load_image_from_file("data/imgs/objects/space_control_panel2.png"); img_space_window = assets_load_image_from_file("data/imgs/objects/metal_wall_window.png"); + img_space_window_h = assets_load_image_from_file("data/imgs/objects/metal_wall_window_h.png"); img_metal_wall = assets_load_image_from_file("data/imgs/objects/metal_wall.png"); img_metal_wall2 = assets_load_image_from_file("data/imgs/objects/metal_wall2.png"); img_chair_up = assets_load_image_from_file("data/imgs/objects/chair_up.png"); + img_zombie_spawner = assets_load_image_from_file("data/imgs/objects/zombie_spawner.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 1183517..79a5503 100644 --- a/src/editor.c +++ b/src/editor.c @@ -62,6 +62,25 @@ static void update_tile_editor(platform_window* window) { } } +void update_lighting_panel(platform_window* window, vec2 cursor_pos) { + if (keyboard_is_key_pressed(KEY_ENTER)) { + for (int i = 0; i < MAX_LIGHT_EMITTERS; i++) { + light_emitter emitter = loaded_map.light_emitters[i]; + if (emitter.active) continue; + + map_to_load.light_emitters[i].position.x = cursor_pos.x; + map_to_load.light_emitters[i].position.y = cursor_pos.y; + map_to_load.light_emitters[i].position.z = 1; + map_to_load.light_emitters[i].active = 1; + map_to_load.light_emitters[i].brightness = 1.0f; + map_to_load.light_emitters[i].range = 10.0f; + + load_mapdata_into_world(); + return; + } + } +} + void update_editor(platform_window* window) { if (keyboard_is_key_pressed(KEY_F1)) { @@ -97,11 +116,12 @@ void update_editor(platform_window* window) _next_camera_pos.x = -(window->width / 2) + camera_x; _next_camera_pos.y = -(window->height / 2) + camera_y; + vec2 pos = screen_pos_to_world_pos(window, _global_mouse.x + window->width/2, _global_mouse.y + window->height/2); switch (edit_state) { case EDITING_TILES: update_tile_editor(window); break; case EDITING_OBJECTS: update_object_editor(window); break; - case EDITING_LIGHTING: break; + case EDITING_LIGHTING: update_lighting_panel(window, pos); break; } @@ -418,7 +438,7 @@ void update_object_editor(platform_window* window) { case OBJECT_EDITOR_SELECTING: update_object_selection(window, pos); break; - + default: break; } @@ -261,6 +261,16 @@ void load_mapdata_into_world() { // Load objects memcpy(loaded_map.objects, map_to_load.objects, sizeof(loaded_map.objects)); + + // Load special objects + for (int i = 0; i < MAX_OBJECTS; i++) { + object o = loaded_map.objects[i]; + if (!o.active) continue; + + if (o.type == OBJECT_ZOMBIE_SPAWNER) { + create_spawner((vec2){.x = o.position.x, .y = o.position.y}); + } + } } void create_empty_map() { @@ -277,8 +287,8 @@ void create_empty_map() { map_to_load.objects[x] = (object){.active = true, .position = (vec3f){x, 0, 0}, .size = (vec3f){1,1,1}, .type = OBJECT_METAL_WALL}; } - map_to_load.light_emitters[0] = (light_emitter){.brightness = 1.0f, .position = (vec3f){0, 0, 10}, .range = 20.0f, .active = true}; - map_to_load.light_emitters[1] = (light_emitter){.brightness = 1.0f, .position = (vec3f){0, 30, 10}, .range = 20.0f, .active = true}; + //map_to_load.light_emitters[0] = (light_emitter){.brightness = 1.0f, .position = (vec3f){0, 0, 10}, .range = 20.0f, .active = true}; + //map_to_load.light_emitters[1] = (light_emitter){.brightness = 1.0f, .position = (vec3f){0, 30, 10}, .range = 20.0f, .active = true}; load_mapdata_into_world(); } @@ -391,12 +401,13 @@ static void draw_backdrop(platform_window* window) map_info info = get_map_info(window); int tilemap_render_min_y = (_global_camera.y / info.tile_height)-1; - int tilemap_render_max_y = tilemap_render_min_y + (window->height/ info.tile_height) + 1; + int tilemap_render_max_y = tilemap_render_min_y + (window->height/ info.tile_height) + 2; int tilemap_render_min_x = (_global_camera.x / info.tile_width)-1; - int tilemap_render_max_x = tilemap_render_min_x + (window->width/ info.tile_width) + 1; + int tilemap_render_max_x = tilemap_render_min_x + (window->width/ info.tile_width) + 2; - for (int y = -40; y <= 0; y++) + // north of spaceship + for (int y = -40; y <= 7; y++) { if (y < tilemap_render_min_y) continue; if (y > tilemap_render_max_y) continue; @@ -409,6 +420,21 @@ static void draw_backdrop(platform_window* window) renderer->render_image(img_mars_surface, x*info.tile_width, y*info.tile_width, info.tile_width, info.tile_height); } } + + // west of spaceship + for (int y = 0; y <= MAP_SIZE_Y; y++) + { + if (y < tilemap_render_min_y) continue; + if (y > tilemap_render_max_y) continue; + + for (int x = -40; x <= 10; x++) + { + if (x < tilemap_render_min_x) continue; + if (x > tilemap_render_max_x) continue; + + renderer->render_image(img_mars_surface, x*info.tile_width, y*info.tile_width, info.tile_width, info.tile_height); + } + } } static float offset = 0.0f; diff --git a/src/objects.c b/src/objects.c index c723168..7782ff5 100644 --- a/src/objects.c +++ b/src/objects.c @@ -108,6 +108,10 @@ image* get_image_from_objecttype(object_type tile) { return img_metal_wall2; case OBJECT_CHAIR_UP: return img_chair_up; + case OBJECT_SPACE_WINDOW_H: + return img_space_window_h; + case OBJECT_ZOMBIE_SPAWNER: + return img_zombie_spawner; default: return 0; } @@ -148,6 +152,6 @@ void draw_objects(platform_window* window) { } void create_objects() { - create_spawner((vec2){11, 18}); - create_wallitem((vec3f){14, 1, 0}, WALLITEM_GUN, (wall_item_data){.gun = GUN_NOVA}); + //create_spawner((vec2){11, 18}); + //create_wallitem((vec3f){14, 1, 0}, WALLITEM_GUN, (wall_item_data){.gun = GUN_NOVA}); }
\ No newline at end of file diff --git a/src/players.c b/src/players.c index 2454c28..82a2815 100644 --- a/src/players.c +++ b/src/players.c @@ -51,7 +51,7 @@ void spawn_player(u32 id, network_client client) { players[i].active = true; players[i].sec_since_last_shot = 10.0f; players[i].sec_since_last_damage_taken = 10.0f; - players[i].playerx = 3; + players[i].playerx = 30; players[i].playery = 3; players[i].gunx = 0.0f; players[i].guny = 0.0f; diff --git a/src/zombies.c b/src/zombies.c index 04253b8..205097e 100644 --- a/src/zombies.c +++ b/src/zombies.c @@ -54,7 +54,7 @@ void create_spawner(vec2 position) { s.active = true; s.position = position; s.sec_since_last_spawn = 999.0f; - s.sprite = create_sprite(img_spawner, 14, 64, 64, 1.0f); + s.sprite = create_sprite(img_spawner, 1, 256, 384, 1.0f); for (int i = 0; i < MAX_SPAWNERS; i++) { spawner o = spawner_tiles[i]; @@ -198,6 +198,8 @@ void update_spawners_server() { } void draw_spawners(platform_window* window) { + return; + #if 0 map_info info = get_map_info(window); for (int x = 0; x < MAX_SPAWNERS; x++) { @@ -233,6 +235,7 @@ void draw_spawners(platform_window* window) { renderer->render_line(tile.tr.x, tile.tr.y, tile.br.x, tile.br.y, 1, rgb(0,255,255)); // right renderer->render_line(tile.bl.x, tile.bl.y, tile.br.x, tile.br.y, 1, rgb(0,255,255)); // bottom*/ } + #endif } static void draw_path_of_zombie(platform_window* window, zombie o) { |
