uglenXD

TitleHeader.cs

Apr 22nd, 2019
39
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.86 KB | None | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using TMPro;
  6.  
  7. public class TitleHeader : MonoBehaviour
  8. {
  9.  
  10.     public Image banner;
  11.     public TextMeshProUGUI titleText;
  12.     public string title { get { return titleText.text; } set { titleText.text = value; } }
  13.  
  14.     public enum DISPLAY_METHOD
  15.     {
  16.         instant,
  17.         slowFade,
  18.         typeWriter,
  19.         floatingSlowFade
  20.     }
  21.     public DISPLAY_METHOD displayMethod = DISPLAY_METHOD.instant;
  22.     public float fadeSpeed = 1;
  23.  
  24.     public void Show(string displayTitle)
  25.     {
  26.         title = displayTitle;
  27.  
  28.         if (isRevealing)
  29.             StopCoroutine(revealing);
  30.  
  31.         if (!cachedBannerPos)
  32.             cachedBannerOriginalPosition = banner.transform.position;
  33.  
  34.         revealing = StartCoroutine(Revealing());
  35.     }
  36.  
  37.     public void Hide()
  38.     {
  39.         if (isRevealing)
  40.             StopCoroutine(revealing);
  41.         revealing = null;
  42.  
  43.         banner.enabled = false;
  44.         titleText.enabled = false;
  45.  
  46.         if (cachedBannerPos)
  47.             banner.transform.position = cachedBannerOriginalPosition;
  48.     }
  49.  
  50.     public bool isRevealing { get { return revealing != null; } }
  51.     Coroutine revealing = null;
  52.     IEnumerator Revealing()
  53.     {
  54.         banner.enabled = true;
  55.         titleText.enabled = true;
  56.         //yield for the current display method.
  57.         switch (displayMethod)
  58.         {
  59.             case DISPLAY_METHOD.instant:
  60.                 banner.color = GlobalF.SetAlpha(banner.color, 1);
  61.                 titleText.color = GlobalF.SetAlpha(titleText.color, 1);
  62.                 break;
  63.             case DISPLAY_METHOD.slowFade:
  64.                 yield return SlowFade();
  65.                 break;
  66.             case DISPLAY_METHOD.floatingSlowFade:
  67.                 yield return FloatingSlowFade();
  68.                 break;
  69.             case DISPLAY_METHOD.typeWriter:
  70.                 yield return TypeWriter();
  71.                 break;
  72.         }
  73.  
  74.         //title is displayed now.
  75.         revealing = null;
  76.     }
  77.  
  78.     IEnumerator SlowFade()
  79.     {
  80.         banner.color = GlobalF.SetAlpha(banner.color, 0);
  81.         titleText.color = GlobalF.SetAlpha(titleText.color, 0);
  82.         while (banner.color.a < 1)
  83.         {
  84.             banner.color = GlobalF.SetAlpha(banner.color, Mathf.MoveTowards(banner.color.a, 1, fadeSpeed * Time.unscaledDeltaTime));
  85.             titleText.color = GlobalF.SetAlpha(titleText.color, banner.color.a);
  86.             yield return new WaitForEndOfFrame();
  87.         }
  88.     }
  89.  
  90.     bool cachedBannerPos = false;
  91.     Vector3 cachedBannerOriginalPosition = Vector3.zero;
  92.     IEnumerator FloatingSlowFade()
  93.     {
  94.         banner.color = GlobalF.SetAlpha(banner.color, 0);
  95.         titleText.color = GlobalF.SetAlpha(titleText.color, 0);
  96.  
  97.         float amount = 25f * ((float)Screen.height / 720f);
  98.         Vector3 downPos = new Vector3(0, amount, 0);
  99.         banner.transform.position = cachedBannerOriginalPosition - downPos;
  100.  
  101.         while (banner.color.a < 1 || banner.transform.position != cachedBannerOriginalPosition)
  102.         {
  103.             banner.color = GlobalF.SetAlpha(banner.color, Mathf.MoveTowards(banner.color.a, 1, fadeSpeed * Time.unscaledDeltaTime));
  104.             titleText.color = GlobalF.SetAlpha(titleText.color, banner.color.a);
  105.  
  106.             banner.transform.position = Vector3.MoveTowards(banner.transform.position, cachedBannerOriginalPosition, 11 * fadeSpeed * Time.unscaledDeltaTime);
  107.             yield return new WaitForEndOfFrame();
  108.         }
  109.     }
  110.  
  111.     IEnumerator TypeWriter()
  112.     {
  113.         banner.color = GlobalF.SetAlpha(banner.color, 1);
  114.         titleText.color = GlobalF.SetAlpha(titleText.color, 1);
  115.         TextArchitect architect = new TextArchitect(titleText, title);
  116.         while (architect.isConstructing)
  117.             yield return new WaitForEndOfFrame();
  118.     }
  119. }
Add Comment
Please, Sign In to add comment