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()
{
}
}
}