- El bot i que el arrastre vaja com toca
This commit is contained in:
@@ -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_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_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_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_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 (input::keyDown(SDL_SCANCODE_A) && act->pos.z<56) { act->push |= PUSH_ZP; moving = true; }
|
||||||
|
|
||||||
@@ -263,7 +271,16 @@ namespace actor
|
|||||||
}
|
}
|
||||||
else
|
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);
|
actor::setDirty(act);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -279,7 +296,16 @@ namespace actor
|
|||||||
}
|
}
|
||||||
else
|
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);
|
actor::setDirty(act);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -295,7 +321,16 @@ namespace actor
|
|||||||
}
|
}
|
||||||
else
|
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);
|
actor::setDirty(act);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -311,7 +346,16 @@ namespace actor
|
|||||||
}
|
}
|
||||||
else
|
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);
|
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;
|
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);
|
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,y,act->pos.x+act->pos.y);
|
||||||
print(x+10,y,act->pos.z);
|
//print(x+10,y,act->pos.z);
|
||||||
if (draw_all && act->next) draw(act->next);
|
if (draw_all && act->next) draw(act->next);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ void game::init()
|
|||||||
|
|
||||||
box = actor::create({16,16,0}, {8,8,4}, {64,0,32,24}, {0,24});
|
box = actor::create({16,16,0}, {8,8,4}, {64,0,32,24}, {0,24});
|
||||||
box->flags = FLAG_MOVING;// | FLAG_PUSHABLE;
|
box->flags = FLAG_MOVING;// | FLAG_PUSHABLE;
|
||||||
box->movement = MOV_X;
|
box->movement = MOV_Z;
|
||||||
box->mov_push = PUSH_XP;
|
box->mov_push = PUSH_ZP;
|
||||||
actor::setDirty(box, true);
|
actor::setDirty(box, true);
|
||||||
|
|
||||||
box = actor::create({32,32,16}, {8,8,8}, {32,0,32,32}, {0,32});
|
box = actor::create({32,32,16}, {8,8,8}, {32,0,32,32}, {0,32});
|
||||||
|
|||||||
Reference in New Issue
Block a user