using System; using System.Collections.Generic; using BlueWater.Audios; using UnityEngine; namespace BlueWater.Maps { public class MapManager : Singleton { [field: SerializeField] public TitanSlimeMapController TitanSlimeMapController { get; private set; } [field: SerializeField] public BossMapController RhinocerosMapController { get; private set; } [field: SerializeField] public SandMoleMapController SandMoleMapController { get; private set; } private List _mapControllers; private MapController _currentMapController; protected override void OnAwake() { _mapControllers = new List(3) { TitanSlimeMapController, RhinocerosMapController, SandMoleMapController }; } // public void InitializeMap() // { // if (_currentMapController != null) // { // _currentMapController.AllDestroyObjects(); // } // // _currentMapController = GetMapController(DataManager.Instance.CurrentSaveStage); // if (_currentMapController != null) // { // _currentMapController.InitializeMap(); // } // } public MapController GetMapController(SaveStage saveStage) { switch (saveStage) { case SaveStage.None: return null; case SaveStage.TitanSlime: return TitanSlimeMapController; case SaveStage.Rhinoceros: return RhinocerosMapController; case SaveStage.SandMole: return SandMoleMapController; default: throw new ArgumentOutOfRangeException(); } } public void HardResetAllMaps() { foreach (var element in _mapControllers) { element.ResetMap(true); } GameManager.Instance.CurrentCombatPlayer.SetCurrentHealthPointMax(); AudioManager.Instance.StopBgm(); } public void CurrentMapRestart() { if (_currentMapController != null) { _currentMapController.ResetMap(); } _currentMapController = GetMapController(DataManager.Instance.CurrentSaveStage); _currentMapController.RestartMap(); } public void MoveSelectStage(int stage) { _currentMapController = GetMapController(DataManager.Instance.CurrentSaveStage); if (_currentMapController != null) { _currentMapController.ResetMap(); } GameManager.Instance.CurrentCombatPlayer.SetCurrentHealthPointMax(); AudioManager.Instance.StopBgm(); var moveMapController = GetMapController((SaveStage)stage); moveMapController.MovePlayer(); } } }