projects
/
rocksndiamonds.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
6f25a5c
)
added handling of 'anim'/'post' delay for finished moving animations
author
Holger Schemel
<info@artsoft.org>
Fri, 8 Apr 2016 17:47:06 +0000
(19:47 +0200)
committer
Holger Schemel
<info@artsoft.org>
Fri, 8 Apr 2016 17:47:06 +0000
(19:47 +0200)
src/cartoons.c
patch
|
blob
|
history
diff --git
a/src/cartoons.c
b/src/cartoons.c
index 6768c505f062829e2cd6aa2493bc5a3391f80f91..9b80de87e3ed2685a6da1247c970b6cb37f3c856 100644
(file)
--- a/
src/cartoons.c
+++ b/
src/cartoons.c
@@
-780,11
+780,25
@@
int HandleGlobalAnim_Part(struct GlobalAnimPartControlInfo *part, int state)
return ANIM_STATE_WAITING;
}
return ANIM_STATE_WAITING;
}
+ // check if moving animation has left the visible screen area
if ((part->x <= -g->width && part->step_xoffset <= 0) ||
(part->x >= part->viewport_width && part->step_xoffset >= 0) ||
(part->y <= -g->height && part->step_yoffset <= 0) ||
(part->y >= part->viewport_height && part->step_yoffset >= 0))
if ((part->x <= -g->width && part->step_xoffset <= 0) ||
(part->x >= part->viewport_width && part->step_xoffset >= 0) ||
(part->y <= -g->height && part->step_yoffset <= 0) ||
(part->y >= part->viewport_height && part->step_yoffset >= 0))
- return ANIM_STATE_RESTART;
+ {
+ // do not stop animation before "anim" or "post" counter are finished
+ if (part->anim_delay_counter == 0 &&
+ part->post_delay_counter == 0)
+ {
+ part->post_delay_counter =
+ (c->post_delay_fixed + GetSimpleRandom(c->post_delay_random));
+
+ if (part->post_delay_counter > 0)
+ return ANIM_STATE_RUNNING;
+
+ return ANIM_STATE_RESTART;
+ }
+ }
if (part->anim_delay_counter > 0)
{
if (part->anim_delay_counter > 0)
{
@@
-798,6
+812,7
@@
int HandleGlobalAnim_Part(struct GlobalAnimPartControlInfo *part, int state)
if (part->post_delay_counter > 0)
return ANIM_STATE_RUNNING;
if (part->post_delay_counter > 0)
return ANIM_STATE_RUNNING;
+ // additional state "RUNNING" required to not skip drawing last frame
return ANIM_STATE_RESTART | ANIM_STATE_RUNNING;
}
}
return ANIM_STATE_RESTART | ANIM_STATE_RUNNING;
}
}