CapersProject/Assets/02.Scripts/Ui/Combat/CombatUiManager.cs
2024-10-29 15:45:18 +09:00

150 lines
5.3 KiB
C#

using System.Collections.Generic;
using BlueWater.Maps;
using DG.Tweening;
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
namespace BlueWater.Uis
{
public class CombatUiManager : Singleton<CombatUiManager>
{
[field: Title("UI")]
[field: SerializeField]
public Canvas MainCanvas { get; private set; }
[field: SerializeField]
public RectTransform MainCanvasRect { get; private set; }
[field: SerializeField]
public CombatSkillUi CombatSkillUi { get; private set; }
[field: SerializeField]
public FieldBossHealthPointUi FieldBossHealthPointUi { get; private set; }
[field: SerializeField]
public PlayerHealthPointUi PlayerHealthPointUi { get; private set; }
[field: SerializeField]
public ItemLootUi ItemLootUi { get; private set; }
[field: SerializeField]
public CombatItemInventoryUi CombatItemInventoryUi { get; private set; }
[field: SerializeField]
public GameOverPopupUi GameOverPopupUi { get; private set; }
[field: SerializeField]
public ClearPopupUi ClearPopupUi { get; private set; }
[field: SerializeField]
public MenuPopupUi CombatMenuPopupUi { get; private set; }
[field: SerializeField]
public CombatTutorialUi CombatTutorialUi { get; private set; }
[field: SerializeField]
public MenuPopupUi DevelopMenuPopupUi { get; private set; }
[SerializeField]
private Image _fadeImage;
protected override void OnAwake()
{
InitializeComponents();
}
private void Start()
{
EventManager.OnFadeInOut += FadeInOut;
Invoke(nameof(StartTutorial), 0.1f);
}
private void StartTutorial()
{
CombatTutorialUi.ShowFirstTutorialUi();
}
private void OnDestroy()
{
if (Quitting) return;
EventManager.OnFadeInOut -= FadeInOut;
}
[Button("셋팅 초기화")]
private void InitializeComponents()
{
MainCanvas = GetComponent<Canvas>();
MainCanvasRect = MainCanvas.GetComponent<RectTransform>();
CombatSkillUi = MainCanvas.transform.Find("CombatSkillUi").GetComponent<CombatSkillUi>();
FieldBossHealthPointUi = MainCanvas.transform.Find("FieldBossHealthPointUi").GetComponent<FieldBossHealthPointUi>();
PlayerHealthPointUi = MainCanvas.transform.Find("PlayerHealthPointUi").GetComponent<PlayerHealthPointUi>();
ItemLootUi = MainCanvas.transform.Find("ItemLootUi").GetComponent<ItemLootUi>();
CombatItemInventoryUi = MainCanvas.transform.Find("CombatItemInventoryUi").GetComponent<CombatItemInventoryUi>();
GameOverPopupUi = MainCanvas.transform.Find("GameOverPopupUi").GetComponent<GameOverPopupUi>();
ClearPopupUi = MainCanvas.transform.Find("ClearPopupUi").GetComponent<ClearPopupUi>();
CombatMenuPopupUi = MainCanvas.transform.Find("CombatMenuPopupUi").GetComponent<MenuPopupUi>();
CombatTutorialUi = MainCanvas.transform.Find("CombatTutorialUi").GetComponent<CombatTutorialUi>();
DevelopMenuPopupUi = MainCanvas.transform.Find("DevelopMenuPopupUi").GetComponent<MenuPopupUi>();
_fadeImage = MainCanvas.transform.Find("FadeImage").GetComponent<Image>();
}
public void FadeInOut(float fadeInTime, float fadeOutTime, Color? fadeColor = null, float delayAfterFadeIn = 0f)
{
var newColor = new Color(1f, 1f, 1f, 0f);
if (fadeColor != null)
{
newColor = (Color)fadeColor;
}
_fadeImage.color = newColor;
_fadeImage.enabled = true;
_fadeImage.DOFade(1f, fadeInTime).OnComplete(() =>
{
DOVirtual.DelayedCall(delayAfterFadeIn, () =>
{
_fadeImage.DOFade(0f, fadeOutTime).OnComplete(() =>
{
_fadeImage.enabled = false;
});
});
});
}
public void HardResetAllMaps()
{
MapManager.Instance.HardResetAllMaps();
PopupUiController.CloseAllPopup();
}
public void RestartCurrentStage()
{
MapManager.Instance.RestartCurrentMap();
PopupUiController.CloseAllPopup();
}
public void MoveSelectStage(int stage)
{
MapManager.Instance.MoveSelectStage(stage);
PopupUiController.CloseAllPopup();
}
public void MoveTitleScene()
{
PostProcessingManager.Instance.ToggleRendererFeature(RendererFeatureName.GrayscaleRenderPassFeature, false);
VisualFeedbackManager.Instance.SetBaseTimeScale(1f);
SceneManager.LoadScene("00.CombatTitle");
}
public void QuitGame()
{
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else
Application.Quit();
#endif
}
}
}