10internal class OverlayState : MonoBehaviour
12 public static List<PopupSettings> Popups =
new List<PopupSettings>();
14 private Dictionary<GraphicRaycaster, bool> _originalState =
new Dictionary<GraphicRaycaster, bool>();
15 private CL_GameManager gameManager =
null;
16 private GraphicRaycaster mainGraphicRaycaster =
null;
18 private bool isOpen =
false;
25 if (gameManager ==
null)
26 gameManager = GameObject.Find(
"GameManager")?.GetComponent<CL_GameManager>();
28 var gameIsLoading = gameManager !=
null && gameManager.loading;
29 var playerIsReviving = gameManager !=
null && gameManager.reviving;
44 var gameIsPaused = gameManager !=
null && gameManager.isPaused;
46 var terminalInUse = OS_Manager.inUse;
48 var pauseMenuExists = gameManager !=
null && gameManager.pauseMenu;
49 var canPause = gameManager !=
null && gameManager.canPause;
53 _originalState.Clear();
60 if (!terminalInUse && canPause
61 && !gameIsLoading && !playerIsReviving)
74 newPopup.PopupText =
"Cannot open overlay in terminal.";
78 newPopup.PopupText =
"Cannot open because game cannot be paused.";
80 else if (gameIsLoading)
82 newPopup.PopupText =
"Cannot open overlay because the game is loading.";
84 else if (playerIsReviving)
86 newPopup.PopupText =
"Cannot open overlay because the player is reviving.";
89 newPopup.TimeTillClose = Time.realtimeSinceStartup + newPopup.
PopupTime;
94 else if (mainGraphicRaycaster !=
null)
97 var graphicRaycasters = FindObjectsOfType<GraphicRaycaster>();
98 foreach (var graphicRaycaster
in graphicRaycasters)
100 if (graphicRaycaster ==
null)
103 _originalState[graphicRaycaster] = graphicRaycaster.IsActive();
105 graphicRaycaster.enabled =
false;
108 mainGraphicRaycaster.enabled =
true;
120 if (!terminalInUse && canPause
121 && !gameIsLoading && !playerIsReviving)
123 gameManager?.UnPause();
128 foreach(var originalState
in _originalState)
130 if (originalState.Key ==
null)
133 originalState.Key.enabled =
true;
140 private void OnEnable()
142 mainGraphicRaycaster = gameObject.GetComponent<GraphicRaycaster>();
146 public void Draw(ImGui gui)
148 foreach (var popup
in Popups)
150 if (Time.realtimeSinceStartup < popup.TimeTillClose)
152 QuickPopupWindow.Draw(gui, popup.PopupText);