diff --git a/source/actor.cpp b/source/actor.cpp index f3b4237..5e16aae 100644 --- a/source/actor.cpp +++ b/source/actor.cpp @@ -9,7 +9,6 @@ namespace actor {0, 1, 0, 2}, {0, 1, 2, 3} }; - static uint8_t anim_frame=0; actor_t *first = nullptr; actor_t *dirty = nullptr; @@ -32,6 +31,8 @@ namespace actor act->push = act->mov_push = PUSH_NONE; act->below = act->above = nullptr; act->prev = act->next = nullptr; + act->anim_wait = act->anim_wait_count = 0; + act->anim_frame=0; return act; } @@ -111,15 +112,9 @@ namespace actor else if (act2->pos.z >= act1->pos.z+act1->size.z) { return false; } else { return false; } } -int peiv = 0; + void reorder() { - // [TODO] QUE LA VELOCITAT DE ANIMACIÓ SIGA CONFIGURABLE - //if (peiv==2) { - anim_frame=(anim_frame+1)%4; - // peiv=0; - //} peiv++; - while (dirty) { if (first) @@ -535,6 +530,13 @@ int peiv = 0; { actor_t *next = act->next; + if (act->anim_wait_count==act->anim_wait) { + act->anim_frame=(act->anim_frame+1)%4; + act->anim_wait_count=0; + } else { + act->anim_wait++; + } + if (act->flags & FLAG_HERO) updateUserInput(act); if (act->flags & FLAG_MOVING) updateMoving(act); //if (act->flags & FLAG_PUSHABLE) @@ -579,7 +581,7 @@ int peiv = 0; const bool flip = ( (act->flags & FLAG_ORIENTABLE) && (act->orient==PUSH_XN || act->orient==PUSH_YP) ) ? DRAW_FLIP_HORIZONTAL : DRAW_FLIP_NONE; const int oo = ( (act->flags & FLAG_ORIENTABLE) && (act->orient==PUSH_XN || act->orient==PUSH_YN) ) ? act->bmp_rect.h : 0; - 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][act->anim_frame]*act->bmp_rect.w : 0; draw::pushSource(); draw::setSource(act->surface); diff --git a/source/actor.h b/source/actor.h index 5d9afc5..2cd0703 100644 --- a/source/actor.h +++ b/source/actor.h @@ -44,6 +44,9 @@ namespace actor uint8_t orient; uint8_t anim_cycle; + uint8_t anim_frame; + uint8_t anim_wait; + uint8_t anim_wait_count; uint8_t flags; uint8_t push;