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; } public MatchEndMenu MatchEndMenu { 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() || !StartManagingMatchEndMenu()) { 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 StartManagingMatchEndMenu() { if (MatchEndMenu == null) { GameObject go = GameObject.Find("Match End Menu"); if (go == null) { Log.Error("Could not find Match End Menu GameObject in loaded scenes!"); return false; } MatchEndMenu = 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(Transform transform) { PauseMenu?.Show(transform); } public void HidePauseMenu() { PauseMenu?.Hide(); } public void ShowMatchEndMenu(Transform transform) { MatchEndMenu?.Show(transform); } public void HideMatchEndMenu() { MatchEndMenu?.Hide(); } public void HideHUD() { hUD?.Hide(); } } }