using System.Collections.Generic; using System.Reflection; using log4net; using UnityEngine; namespace Managers { /// /// Manages dynamic UI elements which can be triggered from everywhere. /// public class UIManager : MonoBehaviour { private static ILog Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); [SerializeField] public bool IsUIActiveScene { get; set; } public HUD hUD { get; private set; } public Announcments announcments { get; private set; } public PauseMenu pauseMenu { get; private set; } /// /// Globally accessible member to use manager with. /// public static UIManager G { get; private set; } void Awake() { G = this; Log.Info("Awake"); } public bool StartManagingMatchUI() { if (!StartManagingHUD() || !StartManagingAnnouncements() || !StartManagingPauseMenu()) { Log.Error("Problems when starting in game match UI."); return false; } return true; } public bool StartManagingHUD() { if (hUD == null) { GameObject go = GameObject.Find("HUD"); if (go == null) { Log.Error("Could not find HUD GameObject in loaded scenes!"); return false; } hUD = go.GetComponent(); } return true; } public bool StartManagingPauseMenu() { if (pauseMenu == null) { GameObject go = GameObject.Find("Paused Menu"); if (go == null) { Log.Error("Could not find Pause Menu GameObject in loaded scenes!"); return false; } pauseMenu = go.GetComponent(); } return true; } public bool StartManagingAnnouncements() { if (announcments == null) { GameObject go = GameObject.Find("Announcer UI"); if (go == null) { Log.Error("Could not find Pause Menu GameObject in loaded scenes!"); return false; } announcments = go.GetComponent(); } return true; } public void AssignHUDElementsToPlayers(List players) { foreach (Player p in players) { Ship s = p.spawnedCharacter.GetComponent(); s.boostUI = hUD.boostCapacities[p.playerNumber - 1].GetComponent(); s.boostUI.SetPlayerName(p); hUD.boostCapacities[p.playerNumber - 1].gameObject.SetActive(true); } } public void StartInputPrompt(Dictionary unassignedPlayers) { foreach (int playerNumber in unassignedPlayers.Keys) { hUD.StartJoinPrompt(unassignedPlayers[playerNumber]); } } public void ShowMatchStartPrompt() { announcments.AnnounceText("Press Start/Enter \n to start the match!"); } public void HideAnnouncement() { announcments.StopAnnouncement(); } public void ShowPauseMenu() { } public void HidePauseMenu() { } } }