using Cryville.Common.Unity.UI; using Cryville.Crtr.Browsing.UI; using Cryville.Crtr.Config; using Cryville.Crtr.Config.UI; using System.Collections.Generic; using TMPro; using UnityEngine; using unity = UnityEngine; namespace Cryville.Crtr.UI { public class Menu : MonoBehaviour { #pragma warning disable IDE0044 [SerializeField] ResourceBrowserMaster m_browserMaster; [SerializeField] ProgressBar m_progressBar; [SerializeField] PropertyMasterPanel m_settingsPanel; [SerializeField] TMP_Text m_title; [SerializeField] GameObject[] m_backBlockingObjects; [SerializeField] GameObject m_contents; #pragma warning restore IDE0044 int frameIndex = 2; bool initialized = false; int totalTasks = 0; #pragma warning disable IDE0051 void Awake() { Game.Init(); m_contents.SetActive(true); m_settingsPanel.Adapter = new DefaultPropertyMasterAdapter(Settings.Default); PushTitle("Chart Browser"); } void Update() { if (!initialized) { int taskCount = Game.NetworkTaskWorker.TaskCount; if (totalTasks < taskCount) totalTasks = taskCount; if (frameIndex > 0) { frameIndex--; return; } m_progressBar.value = totalTasks == 0 ? 1 : (1 - (float)taskCount / totalTasks); if (taskCount == 0) { initialized = true; // TODO Show main } } if (unity::Input.GetKeyDown(KeyCode.Escape)) { Back(); } } void OnEnable() { Application.targetFrameRate = 60; Game.ResumeBackgroundTasks(); } #pragma warning restore IDE0051 readonly Stack _uiStack = new Stack(); public void PushTitle(string title) { _uiStack.Push(title); m_title.SetText(title); } public void Back() { foreach (var obj in m_backBlockingObjects) { if (obj.activeInHierarchy) return; } if (m_browserMaster.Back()) return; if (_uiStack.Count <= 1) return; _uiStack.Pop(); m_title.SetText(_uiStack.Peek()); } public void Quit() { Application.Quit(); } } }