removed redundant code
[rocksndiamonds.git] / src / anim.c
index 0e866110cb24cd4a6ec290dabe928f4ee60bb727..8b307ea4482f1c54d0a892ea4250b689cc04ec37 100644 (file)
@@ -1393,7 +1393,7 @@ static void InitGlobalAnim_Triggered_ByCustomElement(int nr, int page,
       if (!(part2->state & ANIM_STATE_RUNNING))
        continue;
 
-      if (isClickablePart(part2, mask))
+      if (isClickablePart(part2, mask) && !part2->triggered)
       {
        struct GraphicInfo *c = &part2->control_info;
 
@@ -1411,6 +1411,10 @@ static void InitGlobalAnim_Triggered_ByCustomElement(int nr, int page,
 
        part2->triggered = TRUE;
 
+       // do not trigger any other animation if CE change event was consumed
+       if (c->style == STYLE_CONSUME_CE_EVENT)
+         return;
+
 #if 0
        Debug("anim:InitGlobalAnim_Triggered_ByCustomElement",
              "%d.%d TRIGGERED BY CE %d", anim2_nr, part2_nr, nr + 1);
@@ -1592,12 +1596,7 @@ static int HandleGlobalAnim_Part(struct GlobalAnimPartControlInfo *part,
       part->init_event_state)
   {
     if (part->initial_anim_sync_frame > 0)
-    {
-      if (part->init_delay_counter > 0)
-       part->initial_anim_sync_frame -= part->init_delay_counter - 1;
-      else
-       part->initial_anim_sync_frame = anim_sync_frame;
-    }
+      part->initial_anim_sync_frame = anim_sync_frame;
 
     part->init_delay_counter = 1;
     part->init_event_state = FALSE;
@@ -1626,9 +1625,13 @@ static int HandleGlobalAnim_Part(struct GlobalAnimPartControlInfo *part,
 
       HandleGlobalAnimDelay(part, ANIM_DELAY_INIT,  "START [INIT_DELAY]");
       HandleGlobalAnimEvent(part, ANIM_EVENT_START, "START [ANIM]");
-    }
 
-    return ANIM_STATE_WAITING;
+      // continue with state ANIM_STATE_RUNNING (set below)
+    }
+    else
+    {
+      return ANIM_STATE_WAITING;
+    }
   }
 
   if (part->init_event_state)