summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2025-02-24 15:36:34 -0500
committerStar Rauchenberger <fefferburbia@gmail.com>2025-02-24 15:36:34 -0500
commit2128897be0bb267e68b01cc6d9e94d3fe6faa8db (patch)
tree8ff85615a61a220af8a916d732db693585608250
parent24b4fb4f8fa0392c8a44aefa734ff6d558f3583d (diff)
downloadmanifold-garden-archipelago-2128897be0bb267e68b01cc6d9e94d3fe6faa8db.tar.gz
manifold-garden-archipelago-2128897be0bb267e68b01cc6d9e94d3fe6faa8db.tar.bz2
manifold-garden-archipelago-2128897be0bb267e68b01cc6d9e94d3fe6faa8db.zip
Notifications fade one-by-one
-rw-r--r--Notifications.cs20
1 files changed, 17 insertions, 3 deletions
diff --git a/Notifications.cs b/Notifications.cs index 20e5e51..99db0bb 100644 --- a/Notifications.cs +++ b/Notifications.cs
@@ -1,5 +1,6 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.Linq;
3using TMPro; 4using TMPro;
4using UnityEngine; 5using UnityEngine;
5 6
@@ -30,19 +31,24 @@ namespace ManifoldGardenArchipelago
30 31
31 void Update() 32 void Update()
32 { 33 {
33 while (_notifications.Count > 0 && _notifications[_notifications.Count - 1].ReadyToBeDestroyed()) 34 if (_notifications.Count > 0 && _notifications[_notifications.Count - 1].ReadyToBeDestroyed())
34 { 35 {
35 NotificationLine toDestroy = _notifications[_notifications.Count - 1]; 36 NotificationLine toDestroy = _notifications[_notifications.Count - 1];
36 GameObject.Destroy(toDestroy.gameObject); 37 GameObject.Destroy(toDestroy.gameObject);
37 _notifications.RemoveAt(_notifications.Count - 1); 38 _notifications.RemoveAt(_notifications.Count - 1);
38 } 39 }
39 40
41 if (_notifications.Count > 0 && _notifications[_notifications.Count - 1].IsIdling())
42 {
43 _notifications[_notifications.Count - 1].StopIdling();
44 }
45
40 if (_queuedMessages.Count > 0) 46 if (_queuedMessages.Count > 0)
41 { 47 {
42 if (_notifications.Count > 0 && !_notifications[0].ReadyToBeSurplanted()) 48 if (_notifications.Count > 0 && !_notifications[0].ReadyToBeSurplanted())
43 { 49 {
44 if (!_notifications[0].IsMoving() && 50 if (!_notifications[0].IsMoving() &&
45 !(_notifications.Count >= MAX_VISIBLE && !_notifications[_notifications.Count - 1].IsFadingOut())) 51 _notifications.Count(n => !n.IsFadingOut()) < MAX_VISIBLE)
46 { 52 {
47 foreach (var notification in _notifications) 53 foreach (var notification in _notifications)
48 { 54 {
@@ -98,6 +104,7 @@ namespace ManifoldGardenArchipelago
98 private enum FadeState 104 private enum FadeState
99 { 105 {
100 FadingIn, 106 FadingIn,
107 Idling,
101 Waiting, 108 Waiting,
102 FadingOut, 109 FadingOut,
103 ReadyToDestroy, 110 ReadyToDestroy,
@@ -146,7 +153,7 @@ namespace ManifoldGardenArchipelago
146 { 153 {
147 if (_textMeshPro.alpha >= _alphaTarget) 154 if (_textMeshPro.alpha >= _alphaTarget)
148 { 155 {
149 _fadeState = FadeState.Waiting; 156 _fadeState = FadeState.Idling;
150 } 157 }
151 } 158 }
152 else if (_fadeState == FadeState.Waiting) 159 else if (_fadeState == FadeState.Waiting)
@@ -198,6 +205,13 @@ namespace ManifoldGardenArchipelago
198 _moveState = MoveState.Waiting; 205 _moveState = MoveState.Waiting;
199 } 206 }
200 207
208 public bool IsIdling() => _fadeState == FadeState.Idling;
209
210 public void StopIdling()
211 {
212 _fadeState = FadeState.Waiting;
213 }
214
201 public bool IsFadingOut() => _fadeState == FadeState.FadingOut; 215 public bool IsFadingOut() => _fadeState == FadeState.FadingOut;
202 216
203 public bool ReadyToBeDestroyed() => _fadeState == FadeState.ReadyToDestroy; 217 public bool ReadyToBeDestroyed() => _fadeState == FadeState.ReadyToDestroy;