fixed one-frame delay when global animations leave "init" state
[rocksndiamonds.git] / src / anim.c
index c1fb1ee6c2fd5a2efdd7fab4d3b64b76d44e878c..de94b17f88abb50a3a3fc41ce4e0c4e1c27accde 100644 (file)
@@ -1598,7 +1598,7 @@ static int HandleGlobalAnim_Part(struct GlobalAnimPartControlInfo *part,
     if (part->initial_anim_sync_frame > 0)
     {
       if (part->init_delay_counter > 0)
-       part->initial_anim_sync_frame -= part->init_delay_counter - 1;
+       part->initial_anim_sync_frame -= part->init_delay_counter;
       else
        part->initial_anim_sync_frame = anim_sync_frame;
     }
@@ -1630,9 +1630,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)