From 4b565aabb5d3778cede44ce0a7955a9ed7bf9fc9 Mon Sep 17 00:00:00 2001 From: immibis Date: Wed, 19 Feb 2025 19:15:44 +0100 Subject: [PATCH] Integrate stairway1 and hallwayb1-3 into game and fix missing player start point --- game.cpp | 59 +++++++++++++++++++++++++++++++++++++++++++- navmesh/hallway1.tmx | 5 +++- 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/game.cpp b/game.cpp index 44f761c..3538f8d 100644 --- a/game.cpp +++ b/game.cpp @@ -14,7 +14,8 @@ extern const char _binary_sprite_item_pager_raw_start[]; extern const char _binary_sprite_stickman_raw_start[]; -extern const struct level_predef_data predef_basement, predef_lobby, predef_managers_office, predef_cloakroom, predef_hallway1, predef_hallway2, predef_hallway3; +extern const struct level_predef_data predef_basement, predef_lobby, predef_managers_office, predef_cloakroom, predef_hallway1, predef_hallway2, predef_hallway3, + predef_stairway1, predef_hallwayb1, predef_hallwayb2, predef_hallwayb3; static void create_player(scene *me, int x, int y) { const int WIDTH=51, HEIGHT=111; @@ -88,6 +89,22 @@ void scene_setup(scene *me, int scene, int fromscene) { scene_load_predef(me, &predef_hallway3); create_player_startpt(me, fromscene); break; + case SCENE_STAIRWAY1: + scene_load_predef(me, &predef_stairway1); + create_player_startpt(me, fromscene); + break; + case SCENE_HALLWAY_B1: + scene_load_predef(me, &predef_hallwayb1); + create_player_startpt(me, fromscene); + break; + case SCENE_HALLWAY_B2: + scene_load_predef(me, &predef_hallwayb2); + create_player_startpt(me, fromscene); + break; + case SCENE_HALLWAY_B3: + scene_load_predef(me, &predef_hallwayb3); + create_player_startpt(me, fromscene); + break; } } @@ -253,6 +270,9 @@ void onclick(int curscene, struct object *obj) { case OBJID_NEXT_ROOM: start_player_walk_to_point_then_transition_scene(obj->x + obj->width/2, obj->y + obj->height, SCENE_HALLWAY2); return; + case OBJID_GO_LEFT: + start_player_walk_to_point_then_transition_scene(obj->x + obj->width/2, obj->y + obj->height, SCENE_STAIRWAY1); + return; } break; case SCENE_HALLWAY2: @@ -272,6 +292,43 @@ void onclick(int curscene, struct object *obj) { return; } break; + case SCENE_STAIRWAY1: + switch(obj->id) { + case OBJID_STAIRWAY1_TOP: + start_player_walk_to_point_then_transition_scene(obj->x + obj->width/2, obj->y + obj->height, SCENE_HALLWAY_B2); + return; + case OBJID_STAIRWAY1_BOTTOM: + start_player_walk_to_point_then_transition_scene(obj->x + obj->width/2, obj->y + obj->height, SCENE_HALLWAY1); + return; + } + break; + case SCENE_HALLWAY_B1: + switch(obj->id) { + case OBJID_GO_RIGHT: + start_player_walk_to_point_then_transition_scene(obj->x + obj->width/2, obj->y + obj->height, SCENE_HALLWAY_B2); + return; + } + break; + case SCENE_HALLWAY_B2: + switch(obj->id) { + case OBJID_GO_LEFT: + start_player_walk_to_point_then_transition_scene(obj->x + obj->width/2, obj->y + obj->height, SCENE_HALLWAY_B1); + return; + case OBJID_GO_RIGHT: + start_player_walk_to_point_then_transition_scene(obj->x + obj->width/2, obj->y + obj->height, SCENE_HALLWAY_B3); + return; + case OBJID_LEAVE_ROOM: + start_player_walk_to_point_then_transition_scene(obj->x + obj->width/2, obj->y + obj->height, SCENE_STAIRWAY1); + return; + } + break; + case SCENE_HALLWAY_B3: + switch(obj->id) { + case OBJID_GO_LEFT: + start_player_walk_to_point_then_transition_scene(obj->x + obj->width/2, obj->y + obj->height, SCENE_HALLWAY_B2); + return; + } + break; } } diff --git a/navmesh/hallway1.tmx b/navmesh/hallway1.tmx index bdb7d4f..e5bdd33 100644 --- a/navmesh/hallway1.tmx +++ b/navmesh/hallway1.tmx @@ -1,5 +1,5 @@ - + @@ -46,5 +46,8 @@ + + +