Pause door props when closed and backgrounded

This commit is contained in:
Ryan Dwyer 2022-11-16 21:08:15 +10:00
parent bd009f7290
commit e6b02156bb
2 changed files with 14 additions and 1 deletions

View File

@ -1854,7 +1854,7 @@ void propsTickPlayer(bool islastplayer)
} else {
op = chrTick(prop);
}
} else if (prop->type & (PROPTYPE_OBJ | PROPTYPE_WEAPON | PROPTYPE_DOOR)) {
} else if (prop->type & (PROPTYPE_OBJ | PROPTYPE_WEAPON)) {
obj = prop->obj;
if (!g_PausableObjs[obj->type]) {
@ -1870,6 +1870,15 @@ void propsTickPlayer(bool islastplayer)
op = TICKOP_CHANGEDLIST;
}
}
} else if (prop->type == PROPTYPE_DOOR) {
struct doorobj *door = prop->door;
op = objTickPlayer(prop);
if (op == TICKOP_NONE && door->mode == DOORMODE_IDLE && door->frac <= 0) {
propPause(prop);
op = TICKOP_CHANGEDLIST;
}
} else if (prop->type == PROPTYPE_EXPLOSION) {
op = explosionTickPlayer(prop);
} else if (prop->type == PROPTYPE_SMOKE) {

View File

@ -16942,6 +16942,10 @@ void doorSetMode(struct doorobj *door, s32 newmode)
{
if (newmode == DOORMODE_OPENING) {
if (door->mode == DOORMODE_IDLE || door->mode == DOORMODE_WAITING) {
if (!door->base.prop->active) {
propUnpause(door->base.prop);
}
doorStartOpen(door);
}