public void PlayAnimation() { AnimationPattern animationPattern = animationPatterns[animationPatternIndex]; List <AnimationPatternSignal> animationPatternSignals = animationPattern.GetAnimationPatternSignals(); float animationSpeedModifier = 1; if (framesGiven > 0) { animationSpeedModifier = animationPattern.GetTotalFrames() / framesGiven; } int i = 0; foreach (AnimationPatternSignal signal in animationPatternSignals) { if (i == 0) { overworldObjectCoordinator.animationQueue.Enqueue(Animate(signal.GetSpriteIndex(), SECONDS_PER_FRAME * signal.GetStartFrame() * animationSpeedModifier)); } else { int frameDifference = GetFrameDifference(signal, animationPatternSignals[i - 1]); overworldObjectCoordinator.animationQueue.Enqueue(Animate(signal.GetSpriteIndex(), SECONDS_PER_FRAME * frameDifference * animationSpeedModifier)); } i++; } }