micromissiles-unity/Assets/Scripts/UI/UIManager.cs

127 lines
3.2 KiB
C#
Raw Permalink Normal View History

using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class UIManager : MonoBehaviour
{
public static UIManager Instance { get; private set; }
[SerializeField]
private GameObject _agentStatusPanel;
[SerializeField]
private GameObject _configSelectorPanel;
private TMP_Dropdown _configDropdown;
public TextMeshProUGUI agentPanelText;
public TextMeshProUGUI simTimeText;
public TMP_FontAsset Font;
private UIMode curMode = UIMode.NONE;
// Start is called before the first frame update
void Awake()
{
// singleton
if (Instance == null)
Instance = this;
else
Destroy(gameObject);
}
void Start()
{
_configSelectorPanel.SetActive(false);
SetupConfigSelectorPanel();
//inputManager = InputManager.Instance;
//worldManager = WorldManager.Instance;
}
public void ToggleConfigSelectorPanel(){
_configSelectorPanel.SetActive(!_configSelectorPanel.activeSelf);
}
private void SetupConfigSelectorPanel(){
_configSelectorPanel.GetComponentInChildren<Button>().onClick.AddListener(delegate {
LoadSelectedConfig();
});
_configDropdown = _configSelectorPanel.GetComponentInChildren<TMP_Dropdown>();
PopulateConfigDropdown();
}
private void PopulateConfigDropdown(){
_configDropdown.ClearOptions();
string configPath = Path.Combine(Application.streamingAssetsPath, "Configs");
string[] configFiles = Directory.GetFiles(configPath, "*.json");
List<string> configFileNames = new List<string>();
foreach (string configFile in configFiles)
{
configFileNames.Add(Path.GetFileName(configFile));
}
_configDropdown.AddOptions(configFileNames);
}
private void LoadSelectedConfig(){
string selectedConfig = _configDropdown.options[_configDropdown.value].text;
SimManager.Instance.LoadNewConfig(selectedConfig);
_configSelectorPanel.SetActive(false);
//if(!InputManager.Instance.mouseActive){
// InputManager.Instance.mouseActive = true;
//}
}
public void SetUIMode(UIMode mode){
curMode = mode;
}
public UIMode GetUIMode(){
return curMode;
}
public void SetAgentPanelText(string text)
{
agentPanelText.text = text;
}
public string GetAgentPanelText()
{
return agentPanelText.text;
}
private void UpdateAgentPanel()
{
string agentPanelText = "";
foreach(Agent agent in SimManager.Instance.GetActiveAgents())
{
string jobText = agent.name + "| Phase: " + agent.GetFlightPhase().ToString();
agentPanelText += jobText + "\n";
}
SetAgentPanelText(agentPanelText);
}
private void UpdateSimTimeText()
{
simTimeText.text = "Elapsed Sim Time: " + SimManager.Instance.GetElapsedSimulationTime().ToString("F2");
}
// Update is called once per frame
void Update()
{
//UpdateAgentPanel();
UpdateSimTimeText();
}
}
public enum UIMode {
NONE,
BUILD,
MINE
}