Added 4 more rooms: hallway1/2/3 and cloakroom

master
immibis 2025-02-19 05:40:33 +01:00
parent a04abd101a
commit 80a307de5f
13 changed files with 236 additions and 29 deletions

View File

@ -104,6 +104,10 @@ void blit(int x, int y, int width, int height, uint32_t *pixels);
#define SCENE_MANAGERS_OFFICE_SAFE 3
#define SCENE_BASEMENT 4
#define SCENE_TEXTBOX 5
#define SCENE_HALLWAY1 6
#define SCENE_HALLWAY2 7
#define SCENE_HALLWAY3 8
#define SCENE_CLOAKROOM 9
// game.cpp
void scene_setup(scene *s, int scene, int fromscene);

113
game.cpp
View File

@ -13,14 +13,16 @@ extern const char _binary_sprite_lobby_raw_start[];
extern const char _binary_sprite_managers_office_raw_start[];
extern const char _binary_sprite_managers_office_safe_raw_start[];
extern const char _binary_sprite_basement_raw_start[];
extern const char _binary_sprite_cloakroom_raw_start[];
extern const char _binary_sprite_hallway1_raw_start[];
extern const char _binary_sprite_hallway2_raw_start[];
extern const char _binary_sprite_hallway3_raw_start[];
extern const char _binary_sprite_item_pager_raw_start[];
extern const char _binary_sprite_stickman_raw_start[];
extern struct navmesh navmesh_lobby;
extern struct navmesh navmesh_managers_office;
extern struct navmesh navmesh_basement;
extern struct level_predef_data predef_basement, predef_lobby, predef_managers_office;
extern struct navmesh navmesh_lobby, navmesh_managers_office, navmesh_basement, navmesh_cloakroom, navmesh_hallway1, navmesh_hallway2, navmesh_hallway3;
extern struct level_predef_data predef_basement, predef_lobby, predef_managers_office, predef_cloakroom, predef_hallway1, predef_hallway2, predef_hallway3;
static void create_player(scene *me, int x, int y) {
const int WIDTH=51, HEIGHT=111;
@ -33,12 +35,9 @@ void scene_setup(scene *me, int scene, int fromscene) {
scene_add_object(me, OBJID_BACKGROUND, 0, 0, BGWIDTH, BGHEIGHT, _binary_sprite_lobby_raw_start);
scene_load_predef(me, &predef_lobby);
switch(fromscene) {
case SCENE_MANAGERS_OFFICE:
create_player(me, 256, 445);
break;
default:
create_player(me, 424, 675);
break;
case SCENE_MANAGERS_OFFICE: create_player(me, 256, 445); break;
case SCENE_CLOAKROOM: create_player(me, 777, 443); break;
default: create_player(me, 424, 675); break;
}
me->navmesh = &navmesh_lobby;
if(fromscene == -1) {
@ -49,15 +48,10 @@ void scene_setup(scene *me, int scene, int fromscene) {
scene_add_object(me, OBJID_BACKGROUND, 0, 0, BGWIDTH, BGHEIGHT, _binary_sprite_managers_office_raw_start);
scene_load_predef(me, &predef_managers_office);
switch(fromscene) {
case SCENE_LOBBY:
create_player(me, 804, 708);
break;
case SCENE_BASEMENT:
create_player(me, 408, 559);
break;
default:
create_player(me, 424, 675);
break;
case SCENE_LOBBY: create_player(me, 804, 708); break;
case SCENE_BASEMENT: create_player(me, 408, 559); break;
case SCENE_HALLWAY1: create_player(me, 664, 419); break;
default: create_player(me, 424, 675); break;
}
me->navmesh = &navmesh_managers_office;
break;
@ -74,16 +68,41 @@ void scene_setup(scene *me, int scene, int fromscene) {
if(!savefile.got_pager_from_basement) {
scene_add_object(me, OBJID_PAGER, 556, 520, 87, 87, _binary_sprite_item_pager_raw_start);
}
switch(fromscene) {
case SCENE_MANAGERS_OFFICE:
create_player(me, 435, 404);
break;
default:
create_player(me, 424, 675);
break;
}
create_player(me, 435, 404);
me->navmesh = &navmesh_basement;
break;
case SCENE_CLOAKROOM:
scene_add_object(me, OBJID_BACKGROUND, 0, 0, BGWIDTH, BGHEIGHT, _binary_sprite_cloakroom_raw_start);
scene_load_predef(me, &predef_cloakroom);
me->navmesh = &navmesh_cloakroom;
create_player(me, 361, 714);
break;
case SCENE_HALLWAY1:
scene_add_object(me, OBJID_BACKGROUND, 0, 0, BGWIDTH, BGHEIGHT, _binary_sprite_hallway1_raw_start);
scene_load_predef(me, &predef_hallway1);
me->navmesh = &navmesh_hallway1;
switch(fromscene) {
case SCENE_MANAGERS_OFFICE: default: create_player(me, 531, 714); break;
case SCENE_HALLWAY2: create_player(me, 553, 75); break;
}
break;
case SCENE_HALLWAY2:
scene_add_object(me, OBJID_BACKGROUND, 0, 0, BGWIDTH, BGHEIGHT, _binary_sprite_hallway2_raw_start);
scene_load_predef(me, &predef_hallway2);
me->navmesh = &navmesh_hallway2;
switch(fromscene) {
case SCENE_HALLWAY1: default: create_player(me, 531, 714); break;
case SCENE_HALLWAY3: create_player(me, 553, 75); break;
}
break;
case SCENE_HALLWAY3:
scene_add_object(me, OBJID_BACKGROUND, 0, 0, BGWIDTH, BGHEIGHT, _binary_sprite_hallway3_raw_start);
scene_load_predef(me, &predef_hallway3);
me->navmesh = &navmesh_hallway3;
switch(fromscene) {
case SCENE_HALLWAY2: default: create_player(me, 531, 714); break;
}
break;
}
}
@ -200,6 +219,9 @@ void onclick(int curscene, struct object *obj) {
case OBJID_LEAVE_ROOM:
start_player_walk_to_point_then(obj->x + obj->width/2, obj->y + obj->height, do_leave_lobby_on_walk_finish);
return;
case OBJID_LOBBY_TO_CLOAKROOM:
start_player_walk_to_point_then_transition_scene(777, 441, SCENE_CLOAKROOM);
return;
}
break;
case SCENE_MANAGERS_OFFICE:
@ -213,6 +235,9 @@ void onclick(int curscene, struct object *obj) {
case OBJID_MANAGERS_OFFICE_TRAPDOOR:
start_player_walk_to_point_then_transition_scene(408, 559, SCENE_BASEMENT);
return;
case OBJID_MANAGERS_OFFICE_TO_HALLWAY:
start_player_walk_to_point_then_transition_scene(665, 418, SCENE_HALLWAY1);
return;
}
break;
case SCENE_BASEMENT:
@ -228,6 +253,40 @@ void onclick(int curscene, struct object *obj) {
return;
}
break;
case SCENE_CLOAKROOM:
switch(obj->id) {
case OBJID_LEAVE_ROOM:
start_player_walk_to_point_then_transition_scene(obj->x + obj->width/2, obj->y + obj->height, SCENE_LOBBY);
return;
}
break;
case SCENE_HALLWAY1:
switch(obj->id) {
case OBJID_LEAVE_ROOM:
start_player_walk_to_point_then_transition_scene(obj->x + obj->width/2, obj->y + obj->height, SCENE_MANAGERS_OFFICE);
return;
case OBJID_NEXT_ROOM:
start_player_walk_to_point_then_transition_scene(obj->x + obj->width/2, obj->y + obj->height, SCENE_HALLWAY2);
return;
}
break;
case SCENE_HALLWAY2:
switch(obj->id) {
case OBJID_LEAVE_ROOM:
start_player_walk_to_point_then_transition_scene(obj->x + obj->width/2, obj->y + obj->height, SCENE_HALLWAY1);
return;
case OBJID_NEXT_ROOM:
start_player_walk_to_point_then_transition_scene(obj->x + obj->width/2, obj->y + obj->height, SCENE_HALLWAY3);
return;
}
break;
case SCENE_HALLWAY3:
switch(obj->id) {
case OBJID_LEAVE_ROOM:
start_player_walk_to_point_then_transition_scene(obj->x + obj->width/2, obj->y + obj->height, SCENE_HALLWAY2);
return;
}
break;
}
}

14
navmesh/cloakroom.tmx Normal file
View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="34" height="25" tilewidth="32" tileheight="32" infinite="0" nextlayerid="5" nextobjectid="3">
<imagelayer id="2" name="Image Layer 1">
<image source="../build/default/cloakroom.png" width="1066" height="800"/>
</imagelayer>
<objectgroup id="4" name="navmesh">
<object id="1" x="245" y="418">
<polygon points="0,0 -171,296 753,296 581,0"/>
</object>
</objectgroup>
<objectgroup id="3" name="clickable">
<object id="2" name="OBJID_LEAVE_ROOM" x="283" y="437" width="157" height="276"/>
</objectgroup>
</map>

39
navmesh/hallway1.tmx Normal file
View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="34" height="25" tilewidth="32" tileheight="32" infinite="0" nextlayerid="5" nextobjectid="12">
<imagelayer id="2" name="Image Layer 1">
<image source="../build/default/hallway1.png" width="1066" height="800"/>
</imagelayer>
<objectgroup id="4" name="navmesh">
<object id="2" x="346" y="714">
<polygon points="0,0 119,-173 45,-173"/>
</object>
<object id="3" x="600" y="517">
<polygon points="0,0 70,200 46,0"/>
</object>
<object id="4" x="346" y="714">
<polygon points="0,0 324,3 254,-197 119,-173"/>
</object>
<object id="5" x="465" y="541">
<polygon points="0,0 67,-164 107,-158 135,-24"/>
</object>
<object id="6" x="532" y="377">
<polygon points="0,0 0,-108 51,-176 74,-176 91,-41 40,6"/>
</object>
<object id="7" x="572" y="383">
<polygon points="0,0 57,5 51,-47"/>
</object>
<object id="8" x="532" y="269">
<polygon points="0,0 -73,2 -24,-174 39,-168 51,-68"/>
</object>
<object id="9" x="508" y="95">
<polygon points="0,0 5,-21 83,-21 84,-6 63,6"/>
</object>
<object id="10" x="571" y="101">
<polygon points="0,0 23,0 21,-12"/>
</object>
</objectgroup>
<objectgroup id="3" name="clickable">
<object id="1" name="OBJID_LEAVE_ROOM" x="466" y="439" width="155" height="277"/>
<object id="11" name="OBJID_NEXT_ROOM" x="511" y="1" width="80" height="74"/>
</objectgroup>
</map>

42
navmesh/hallway2.tmx Normal file
View File

@ -0,0 +1,42 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="34" height="25" tilewidth="32" tileheight="32" infinite="0" nextlayerid="5" nextobjectid="13">
<imagelayer id="2" name="Image Layer 1">
<image source="../build/default/hallway2.png" width="1066" height="800"/>
</imagelayer>
<objectgroup id="4" name="navmesh">
<object id="3" x="513" y="76">
<polygon points="0,0 14,18 79,16 77,1"/>
</object>
<object id="4" x="513" y="76">
<polygon points="0,0 -6,20 14,18"/>
</object>
<object id="5" x="592" y="92">
<polygon points="0,0 3,23 -25,23 -65,2"/>
</object>
<object id="6" x="527" y="94">
<polygon points="0,0 40,21 10,269 -14,270"/>
</object>
<object id="7" x="513" y="364">
<polygon points="0,0 -46,82 -46,159 132,155 120,56 24,-1"/>
</object>
<object id="8" x="513" y="364">
<polygon points="0,0 -47,5 -46,82"/>
</object>
<object id="9" x="466" y="369">
<polygon points="0,0 -17,-43 -50,78 1,77"/>
</object>
<object id="10" x="467" y="523">
<polygon points="0,0 -14,86 190,87 178,-4"/>
</object>
<object id="11" x="453" y="609">
<polygon points="0,0 -106,105 218,105 204,1"/>
</object>
<object id="12" x="453" y="609">
<polygon points="0,0 -79,1 -106,105"/>
</object>
</objectgroup>
<objectgroup id="3" name="clickable">
<object id="1" name="OBJID_LEAVE_ROOM" x="485" y="654" width="43" height="54"/>
<object id="2" name="OBJID_NEXT_ROOM" x="510" y="1" width="85" height="74"/>
</objectgroup>
</map>

44
navmesh/hallway3.tmx Normal file
View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="34" height="25" tilewidth="32" tileheight="32" infinite="0" nextlayerid="5" nextobjectid="14">
<imagelayer id="2" name="Image Layer 1">
<image source="../build/default/hallway3.png" width="1066" height="800"/>
</imagelayer>
<objectgroup id="4" name="navmesh">
<object id="2" x="483" y="476">
<polygon points="0,0 -91,66 -137,240 189,239 167,69 79,-3"/>
</object>
<object id="3" x="483" y="476">
<polygon points="0,0 -74,-4 -91,66"/>
</object>
<object id="4" x="562" y="473">
<polygon points="0,0 88,72 78,-3"/>
</object>
<object id="5" x="562" y="473">
<polygon points="0,0 -79,3 -67,-144 -9,-146"/>
</object>
<object id="7" x="495" y="329">
<polygon points="0,0 -40,-35 -49,-2"/>
</object>
<object id="8" x="553" y="328">
<polygon points="0,-1 11,-13 68,-15 70,-3"/>
</object>
<object id="9" x="564" y="315">
<polygon points="0,0 -11,-110 -27,-124 -76,-140 -109,-21 -69,14 -11,12"/>
</object>
<object id="10" x="537" y="191">
<polygon points="0,0 33,-3 39,13 16,14"/>
</object>
<object id="11" x="570" y="188">
<polygon points="0,0 35,-1 38,15 6,16"/>
</object>
<object id="12" x="488" y="175">
<polygon points="0,0 49,16 82,13 73,-59 20,-78"/>
</object>
<object id="13" x="508" y="97">
<polygon points="0,0 6,-21 82,-21 88,17 53,19"/>
</object>
</objectgroup>
<objectgroup id="3" name="clickable">
<object id="1" name="OBJID_LEAVE_ROOM" x="486" y="654" width="41" height="57"/>
</objectgroup>
</map>

View File

@ -1,11 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="40" height="25" tilewidth="32" tileheight="32" infinite="0" nextlayerid="5" nextobjectid="20">
<map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="40" height="25" tilewidth="32" tileheight="32" infinite="0" nextlayerid="5" nextobjectid="21">
<imagelayer id="2" name="Image Layer 1">
<image source="../build/default/lobby.png" width="1066" height="800"/>
</imagelayer>
<objectgroup id="3" name="clickable">
<object id="1" name="OBJID_DOOR_TO_MANAGERS_OFFICE_FROM_LOBBY" x="227" y="312" width="64" height="128"/>
<object id="19" name="OBJID_LEAVE_ROOM" x="468" y="720" width="83" height="79"/>
<object id="20" name="OBJID_LOBBY_TO_CLOAKROOM" x="752" y="319" width="51" height="121"/>
</objectgroup>
<objectgroup id="4" name="navmesh">
<object id="10" x="178" y="440">

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="30" height="20" tilewidth="32" tileheight="32" infinite="0" nextlayerid="5" nextobjectid="24">
<map version="1.9" tiledversion="1.9.2" orientation="orthogonal" renderorder="right-down" width="30" height="20" tilewidth="32" tileheight="32" infinite="0" nextlayerid="5" nextobjectid="25">
<imagelayer id="2" name="Image Layer 1">
<image source="../build/default/managers_office.png" width="1280" height="800"/>
</imagelayer>
@ -46,5 +46,6 @@
<object id="23" name="OBJID_MANAGERS_OFFICE_SAFE" x="784" y="417">
<polygon points="0,0 1,-122 150,-122 193,-79 192,75 40,75"/>
</object>
<object id="24" name="OBJID_MANAGERS_OFFICE_TO_HALLWAY" x="614" y="236" width="105" height="181"/>
</objectgroup>
</map>

View File

@ -14,5 +14,8 @@
#define OBJID_MENUBAR 14
#define OBJID_LEAVE_ROOM 15
#define OBJID_PAGER 16
#define OBJID_NEXT_ROOM 17
#define OBJID_LOBBY_TO_CLOAKROOM 18
#define OBJID_MANAGERS_OFFICE_TO_HALLWAY 19
#define OBJID_INVENTORY_SLOTS 0x10000000 // + slot number

BIN
sprites/cloakroom.xcf Normal file

Binary file not shown.

BIN
sprites/hallway1.xcf Normal file

Binary file not shown.

BIN
sprites/hallway2.xcf Normal file

Binary file not shown.

BIN
sprites/hallway3.xcf Normal file

Binary file not shown.