//Coroutines IEnumerator AddRibbonLayer(TapeData td) { int ribbonLines = 0; #if UNITY_IOS ribbonLines = totalLines; #endif ribbonLines = totalLines - 1; if (lineCount < ribbonLines) { foreach (TickerRibbon tr in TextObjects[tickCount - 1].GetComponent <TextObject>().GetTickerRibbons()) { tr.MakeVisible(); tr.visible = true; if (!td.instant) { yield return(new WaitForSeconds(ribbonAnimDelay)); } } } lineCount++; yield break; }
IEnumerator TickerTheTape(TapeData data) { WaitForSeconds delay = new WaitForSeconds(TickDelay); SetText(data.text); for (int i = 0; i < TextForDisplay.Length; i++) { //Add spaces if robot is covering AddStartRowSpaces(); AddTick(TextForDisplay[i].ToString(), data.include); //update the text of each object so it pushes backwards for (int j = 0; j < tickCount; j++) { if (j < TextObjects.Length) { int count = 0; for (int activeTape = j; activeTape >= 0; activeTape--) { TextObjects[activeTape].GetComponent <TextObject>().SetText(TextForDisplay[count].ToString()); count++; } } } //Check if text is at edge of screen if (ticksInCurrentRow == TextGrid.GetComponent <DynamicGrid>().cellsPerRow&& tickCount > 0) { if (!data.instant) { yield return(new WaitForSeconds(ribbonDelay)); } //Add ribbon row ticksInCurrentRow = 0; yield return(StartCoroutine(AddRibbonLayer(data))); } if (!data.instant) { yield return(delay); } } AddEndRowSpaces(); yield break; }
IEnumerator LoadSavedMessages() { GameObject display; foreach (string s in savedMessages) { if (s != "") { display = Instantiate(DisplayPrefab, gameObject.transform); display.transform.SetAsFirstSibling(); display.GetComponent <TickerDisplay>().SetWidthAndHeight(ScreenWidthAndHeight); TapeData instantData = new TapeData(s, true); instantData.instant = true; yield return(new WaitForFixedUpdate()); display.GetComponent <TickerDisplay>().StartCoroutine("TickerTheTape", instantData); isTicking = false; } } yield break; }