IEnumerator HandleMemorySprites(HitEvent nextHitObject, int playMode) { if (nextHitObject.getColorArray().Length == 4) // Next hit event contains colorArray information { colorArray = nextHitObject.getColorArray(); } yield return(new WaitForSecondsRealtime(scrollDelay / 4000f)); if ((playMode == 1 || playMode == -1) && nextHitObject.IsNote()) // Memory or inverted memory note, draw sprites { FlashManager.Instance.TurnOn(spriteLeftBig, spriteLeftBig.GetComponent <Image>().color, colorArray[0], scrollDelay / 20000f); // 1/20th of scrollDelay FlashManager.Instance.TurnOn(spriteLeftSmall, spriteLeftSmall.GetComponent <Image>().color, colorArray[1], scrollDelay / 20000f); FlashManager.Instance.TurnOn(spriteRightSmall, spriteRightSmall.GetComponent <Image>().color, colorArray[2], scrollDelay / 20000f); FlashManager.Instance.TurnOn(spriteRightBig, spriteRightBig.GetComponent <Image>().color, colorArray[3], scrollDelay / 20000f); } else if (playMode == 0) // Step note, clear sprites { FlashManager.Instance.TurnOn(spriteLeftBig, spriteLeftBig.GetComponent <Image>().color, Color.clear, scrollDelay / 10000f); // 1/10th of scrollDelay FlashManager.Instance.TurnOn(spriteLeftSmall, spriteLeftSmall.GetComponent <Image>().color, Color.clear, scrollDelay / 10000f); FlashManager.Instance.TurnOn(spriteRightSmall, spriteRightSmall.GetComponent <Image>().color, Color.clear, scrollDelay / 10000f); FlashManager.Instance.TurnOn(spriteRightBig, spriteRightBig.GetComponent <Image>().color, Color.clear, scrollDelay / 10000f); } yield return(null); }