{
struct GlobalAnimPartControlInfo *part;
struct GraphicInfo *c = &anim->control_info;
+ int num_parts = anim->num_parts + (anim->has_base ? 1 : 0);
int state, active_part_nr;
+ int i;
#if 0
printf("::: HandleGlobalAnim_Main: %d, %d => %d\n",
case ANIM_STOP:
anim->state = ANIM_STATE_INACTIVE;
- {
- int num_parts = anim->num_parts + (anim->has_base ? 1 : 0);
- int i;
-
- for (i = 0; i < num_parts; i++)
- StopGlobalAnimSoundAndMusic(&anim->part[i]);
- }
+ for (i = 0; i < num_parts; i++)
+ StopGlobalAnimSoundAndMusic(&anim->part[i]);
return;
if (c->anim_mode & ANIM_ALL || anim->num_parts == 0)
{
- int num_parts = anim->num_parts + (anim->has_base ? 1 : 0);
- int i;
-
#if 0
printf("::: HandleGlobalAnim_Main: %d, %d => %d\n",
anim->mode_nr, anim->nr, num_parts);
part = &anim->part[anim->active_part_nr];
+ // first set all animation parts to "inactive", ...
+ for (i = 0; i < num_parts; i++)
+ anim->part[i].state = ANIM_STATE_INACTIVE;
+
+ // ... then set current animation parts to "running"
part->state = ANIM_STATE_RUNNING;
anim->state = HandleGlobalAnim_Part(part, anim->state);
boolean any_part_clicked = FALSE;
int mode_nr;
- for (mode_nr = 0; mode_nr < NUM_GAME_MODES; mode_nr++)
+ // check game modes in reverse draw order (to stop when clicked)
+ for (mode_nr = NUM_GAME_MODES - 1; mode_nr >= 0; mode_nr--)
{
struct GlobalAnimControlInfo *ctrl = &global_anim_ctrl[mode_nr];
int anim_nr;