using System.Collections; using BlueWater.Audios; using BlueWater.Enemies; using BlueWater.Enemies.Bosses; using BlueWater.Uis; using Sirenix.OdinInspector; using UnityEngine; namespace BlueWater.Maps { public class BossMapController : MapController { [SerializeField, Required] protected Transform BossSpawnTransform; [SerializeField] protected BossType BossType; public override void InitializeMap() { AllDestroyObjects(); if (GameManager.Instance) { var player = GameManager.Instance.CurrentCombatPlayer; if (player) { Destroy(player.gameObject); } GameManager.Instance.InstantiateCombatPlayer(PlayerSpawnTransform.position); } DataManager.Instance.CurrentSaveStage = SaveStage; if (!string.IsNullOrEmpty(BGMName)) { AudioManager.Instance.PlayBgm(BGMName); } InitializeBoss(); // 보스 override로 추가 } protected virtual void InitializeBoss() { EnemyManager.Instance.InstantiateBoss(BossType, BossSpawnTransform.position, EnemyInstantiateLocation); } public override void MapClear() { StartCoroutine(nameof(MapClearCoroutine)); } protected virtual IEnumerator MapClearCoroutine() { VisualFeedbackManager.Instance.SetBaseTimeScale(0.1f); CombatUiManager.Instance.FadeInOut(); var elapsedTime = 0f; while (elapsedTime <= 3f) { elapsedTime += Time.unscaledDeltaTime; yield return null; } AllDestroyEnemy(); VisualFeedbackManager.Instance.SetBaseTimeScale(1f); elapsedTime = 0f; while (elapsedTime <= 2f) { elapsedTime += Time.unscaledDeltaTime; yield return null; } CombatUiManager.Instance.ClearPopupUi.Open(CombatUiManager.Instance.PopupUiList); } } }