manager's office safe scene dims the manager's office scene behind it, including the inventory panel

master
immibis 2025-02-19 03:17:36 +01:00
parent 30c06a6efb
commit 4f2a0be43a
3 changed files with 13 additions and 3 deletions

View File

@ -41,6 +41,7 @@ extern struct scene {
struct navmesh *navmesh; // defaults to non-null pointer to empty navmesh
bool use_standard_inventory; // defaults to true
bool dim_background; // defaults to false, because most scenes overwrite the whole screen
} scenes[MAX_STACKED_SCENES];
extern int scene_depth; // number of stacked scenes

View File

@ -39,7 +39,7 @@ void scene_setup(scene *me, int scene, int fromscene) {
create_player(me, 424, 675);
break;
}
top_scene.navmesh = &navmesh_lobby;
me->navmesh = &navmesh_lobby;
if(fromscene == -1) {
push_scene_textbox("Welcome\n\nto\n\ntestgame");
}
@ -58,12 +58,14 @@ void scene_setup(scene *me, int scene, int fromscene) {
create_player(me, 424, 675);
break;
}
top_scene.navmesh = &navmesh_managers_office;
me->navmesh = &navmesh_managers_office;
break;
case SCENE_MANAGERS_OFFICE_SAFE:
scene_add_object(me, OBJID_BACKGROUND, 248, 0, 787, BGHEIGHT, _binary_sprite_managers_office_safe_raw_start);
scene_add_object(me, OBJID_CLOSE_MODAL, 0, 0, 248, 800, nullptr);
scene_add_object(me, OBJID_CLOSE_MODAL, 1035, 0, 1280-1035, 800, nullptr);
me->dim_background = true;
me->use_standard_inventory = false;
break;
case SCENE_BASEMENT:
scene_add_object(me, OBJID_BACKGROUND, 0, 0, BGWIDTH, BGHEIGHT, _binary_sprite_basement_raw_start);
@ -76,7 +78,7 @@ void scene_setup(scene *me, int scene, int fromscene) {
create_player(me, 424, 675);
break;
}
top_scene.navmesh = &navmesh_basement;
me->navmesh = &navmesh_basement;
break;
}
}

View File

@ -507,6 +507,13 @@ bool deliver_script_wakeup(int wakeupMode, int wakeupArg1, int wakeupType, int a
}
void standard_scene_render(scene *s) {
if(s->dim_background) {
uint32_t *ptr = curfb;
for(int i = 0; i < 1280*800; i++, ptr++) {
*ptr = (*ptr >> 2) & 0x3f3f3f;
}
}
struct object *objects = s->objects;
for(int i = 0; i < MAX_OBJECTS_PER_SCENE; i++) {
if(objects[i].id != 0 && objects[i].pixels) {