- El bot i que el arrastre vaja com toca

This commit is contained in:
2023-03-07 19:50:45 +01:00
parent f21e77b7fa
commit 43228c3809
2 changed files with 53 additions and 9 deletions

View File

@@ -151,7 +151,15 @@ namespace actor
if (input::keyDown(SDL_SCANCODE_RIGHT) && act->pos.x<56) { act->push |= PUSH_XP; act->orient=PUSH_XP; moving = true; }
if (input::keyDown(SDL_SCANCODE_UP) && act->pos.y>0) { act->push |= PUSH_YN; act->orient=PUSH_YN; moving = true; }
if (input::keyDown(SDL_SCANCODE_DOWN) && act->pos.y<56) { act->push |= PUSH_YP; act->orient=PUSH_YP; moving = true; }
if (input::keyDown(SDL_SCANCODE_SPACE) && act->react_mask==0 && (act->pos.z==0 || act->below)) { act->react_mask=1; act->react_push=0; act->flags &= uint8_t(~FLAG_GRAVITY); }
if (input::keyDown(SDL_SCANCODE_SPACE) && act->react_mask==0 && (act->pos.z==0 || act->below)) {
act->react_mask=1;
act->react_push=0;
act->flags &= uint8_t(~FLAG_GRAVITY);
if (act->below) {
act->below->above = nullptr;
act->below = nullptr;
}
}
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; }
@@ -263,7 +271,16 @@ namespace actor
}
else
{
if (act->above && act->above->flags & FLAG_PUSHABLE) act->above->push |= PUSH_XN;
if (act->above && act->above->flags & FLAG_PUSHABLE) {
if (act->above->push != 0) {
updatePushable(act->above);
act->above->push = PUSH_XN;
} else {
act->above->push = PUSH_XN;
updatePushable(act->above);
act->above->push = 0;
}
}
actor::setDirty(act);
}
}
@@ -279,7 +296,16 @@ namespace actor
}
else
{
if (act->above && act->above->flags & FLAG_PUSHABLE) act->above->push |= PUSH_XP;
if (act->above && act->above->flags & FLAG_PUSHABLE) {
if (act->above->push != 0) {
updatePushable(act->above);
act->above->push = PUSH_XP;
} else {
act->above->push = PUSH_XP;
updatePushable(act->above);
act->above->push = 0;
}
}
actor::setDirty(act);
}
}
@@ -295,7 +321,16 @@ namespace actor
}
else
{
if (act->above && act->above->flags & FLAG_PUSHABLE) act->above->push |= PUSH_YN;
if (act->above && act->above->flags & FLAG_PUSHABLE) {
if (act->above->push != 0) {
updatePushable(act->above);
act->above->push = PUSH_YN;
} else {
act->above->push = PUSH_YN;
updatePushable(act->above);
act->above->push = 0;
}
}
actor::setDirty(act);
}
}
@@ -311,7 +346,16 @@ namespace actor
}
else
{
if (act->above && act->above->flags & FLAG_PUSHABLE) act->above->push |= PUSH_YP;
if (act->above && act->above->flags & FLAG_PUSHABLE) {
if (act->above->push != 0) {
updatePushable(act->above);
act->above->push = PUSH_YP;
} else {
act->above->push = PUSH_YP;
updatePushable(act->above);
act->above->push = 0;
}
}
actor::setDirty(act);
}
}
@@ -409,8 +453,8 @@ namespace actor
const int ao = (act->flags & FLAG_ANIMATED) ? anims[act->anim_cycle][anim_frame]*act->bmp_rect.w : 0;
draw::draw(x, y, act->bmp_rect.w, act->bmp_rect.h, act->bmp_rect.x+ao, act->bmp_rect.y+oo, flip);
print(x,y,act->pos.x+act->pos.y);
print(x+10,y,act->pos.z);
//print(x,y,act->pos.x+act->pos.y);
//print(x+10,y,act->pos.z);
if (draw_all && act->next) draw(act->next);
}

View File

@@ -17,8 +17,8 @@ void game::init()
box = actor::create({16,16,0}, {8,8,4}, {64,0,32,24}, {0,24});
box->flags = FLAG_MOVING;// | FLAG_PUSHABLE;
box->movement = MOV_X;
box->mov_push = PUSH_XP;
box->movement = MOV_Z;
box->mov_push = PUSH_ZP;
actor::setDirty(box, true);
box = actor::create({32,32,16}, {8,8,8}, {32,0,32,32}, {0,32});