From 8e1f74a92bd759aa601d5319d1aa77658defe423 Mon Sep 17 00:00:00 2001 From: Mark Joshwel Date: Sat, 15 Feb 2025 00:36:25 +0800 Subject: [PATCH] game(scripts): standardise StoryTyping --- Game/Assets/Scripts/StoryTyping.cs | 55 ++++++++++++++---------------- 1 file changed, 26 insertions(+), 29 deletions(-) diff --git a/Game/Assets/Scripts/StoryTyping.cs b/Game/Assets/Scripts/StoryTyping.cs index caff7bc..62715f6 100644 --- a/Game/Assets/Scripts/StoryTyping.cs +++ b/Game/Assets/Scripts/StoryTyping.cs @@ -1,68 +1,65 @@ /* -Author: Reza and Wailam -Date: 14/2/25 -Description: For text to appear itself for storytelling -*/ + * Author: Reza and Wai Lam + * Date: 14/2/25 + * Description: For texts to appear themselves for storytelling + */ using System.Collections; -using System.Collections.Generic; -using UnityEngine; using TMPro; +using UnityEngine; using UnityEngine.SceneManagement; public class StoryTyping : MonoBehaviour { [Header("Message Settings")] // Custom message for this trigger - [TextArea(3, 5)] public string[] storyLines; + [TextArea(3, 5)] + public string[] storyLines; public TMP_Text storyText; // Speed at which text appears - public float typingSpeed = 0.05f; + public float typingSpeed = 0.05f; - public string nextSceneName = "NextScene"; - - private int currentLine = 0; + public string nextSceneName = "NextScene"; public CanvasGroup fadeCanvasGroup; // Assign in Inspector - public float fadeDuration = 1f; // Duration for fade in/out - public float displayDuration = 5f; + public float fadeDuration = 1f; // Duration for fade in/out + public float displayDuration = 5f; + + private int _currentLine; private void Start() { // Start typing the first line if there are any lines - if (storyLines.Length > 0) - { - StartCoroutine(TypeText()); - } + if (storyLines.Length > 0) StartCoroutine(TypeText()); } - IEnumerator TypeText() + private IEnumerator TypeText() { // Loop through each line of text - while (currentLine < storyLines.Length) + while (_currentLine < storyLines.Length) { - string fullText = storyLines[currentLine]; - string currentText = ""; + var fullText = storyLines[_currentLine]; + var currentText = ""; // Type out the current line character by character - for (int i = 0; i < fullText.Length; i++) + foreach (var t in fullText) { - currentText += fullText[i]; + currentText += t; storyText.text = currentText; yield return new WaitForSeconds(typingSpeed); } - currentLine++; // Move to the next line - yield return new WaitForSeconds(displayDuration); // Wait briefly before displaying the next line + _currentLine++; // Move to the next line + yield return new WaitForSeconds(displayDuration); // Wait briefly before displaying the next line } // After all lines are typed, trigger fade and load the next scene StartCoroutine(FadeToBlack()); } - IEnumerator FadeToBlack() + private IEnumerator FadeToBlack() { // Fade to black yield return StartCoroutine(Fade(0f, 1f, fadeDuration)); @@ -71,16 +68,16 @@ public class StoryTyping : MonoBehaviour SceneManager.LoadScene(nextSceneName); } - IEnumerator Fade(float startAlpha, float endAlpha, float duration) + private IEnumerator Fade(float startAlpha, float endAlpha, float duration) { - float elapsed = 0f; + var elapsed = 0f; fadeCanvasGroup.alpha = startAlpha; // Fade over the specified duration while (elapsed < duration) { elapsed += Time.deltaTime; - float t = elapsed / duration; + var t = elapsed / duration; fadeCanvasGroup.alpha = Mathf.Lerp(startAlpha, endAlpha, t); yield return null;