// When message is over, remove message. If message is still going, start quicker message display public void interactWithMessage() { if (messageOver) { // LATER: Oink if (gameManager.pork) { SoundEffectManager.Inst.PlaySoundImmediate("messageDing"); } else { SoundEffectManager.Inst.PlaySoundImmediate("messageDing"); } MessageUI.SetActive(false); endMessage = true; messageOver = false; } else { animateMessage = false; } }
// Display message with letter animation public IEnumerator displayMessage(string message) { char nextLetter; MessageUI.SetActive(true); MessageText.text = ""; animateMessage = true; for (int i = 0; i < message.Length; i++) { nextLetter = message[i]; MessageText.text += nextLetter; if (animateMessage) { yield return(new WaitForSeconds(0.16f * scrollSpeed)); } else { yield return(new WaitForSeconds(0.02f * scrollSpeed)); } } messageOver = true; }
// To execute message displays/functions in the right order public IEnumerator messageWorker() { UIQueueItem curItem = new UIQueueItem(); while (true) { // Wait for another message if (queueHead.next == null) { isMessageToDisplay = false; } // Wait for next message yield return(new WaitUntil(() => isMessageToDisplay)); // Dequeue message curItem = queueHead.next; queueHead.next = curItem.next; // Make shorter if NPC Message if (NPCMessage) { MessageSize.anchorMax = new Vector2(0.67f, 0.31f); MessageText.fontSize = 25; } else { MessageSize.anchorMax = new Vector2(1, 0.31f); MessageText.fontSize = 30; } // Display message, if one exists if (curItem.message != null) { // To stall after initiating coroutine messageOver = false; animateMessage = false; endMessage = false; // Print message StartCoroutine(displayMessage(curItem.message)); // Wait for message to finish yield return(new WaitUntil(() => endMessage)); MessageUI.SetActive(false); } // Execute next function, if one exists if (curItem.ienum != null) { curCoroutine = StartCoroutine(curItem.ienum); yield return(curCoroutine); } // Execute next function, if one exists if (curItem.nextFunction != null) { curItem.nextFunction(); } } }