-sorting out z pushing problems

This commit is contained in:
2023-03-06 19:57:07 +01:00
parent 70d097a173
commit d15d187f41

View File

@@ -90,6 +90,8 @@ namespace actor
if (input::keyDown(SDL_SCANCODE_RIGHT) && act->pos.x<56) { act->push |= PUSH_XP; moving = true; }
if (input::keyDown(SDL_SCANCODE_UP) && act->pos.y>0) { act->push |= PUSH_YN; moving = true; }
if (input::keyDown(SDL_SCANCODE_DOWN) && act->pos.y<56) { act->push |= PUSH_YP; moving = true; }
if (input::keyDown(SDL_SCANCODE_Z) && act->pos.z>0) { act->push |= PUSH_ZN; moving = true; }
if (input::keyDown(SDL_SCANCODE_A) && act->pos.z<56) { act->push |= PUSH_ZP; moving = true; }
if (moving)
{
act->flags |= FLAG_ANIMATED;
@@ -153,6 +155,22 @@ namespace actor
void updatePushable(actor_t *act)
{
if (act->push & PUSH_ZP) {
act->pos.z++;
actor::actor_t *other = actor::get_collision(act);
if (other && other->flags & FLAG_PUSHABLE)
other->push |= PUSH_ZP;
if (act->pos.z>56)
{
act->pos.z--;
if (act->flags & FLAG_MOVING) changeMoving(act);
}
else
{
actor::setDirty(act);
}
}
if (act->push & PUSH_XN) {
act->pos.x--;
actor::actor_t *other = actor::get_collision(act);
@@ -228,20 +246,6 @@ namespace actor
}
}
if (act->push & PUSH_ZP) {
act->pos.z++;
actor::actor_t *other = actor::get_collision(act);
if (other && other->flags & FLAG_PUSHABLE) other->push |= PUSH_ZP;
if (act->pos.z>56)
{
act->pos.z--;
if (act->flags & FLAG_MOVING) changeMoving(act);
}
else
{
actor::setDirty(act);
}
}
}
void updateReactive(actor_t *act)