using System.Collections; using BlueWater.Maps; using Sirenix.OdinInspector; using UnityEngine; namespace BlueWater.Enemies.Bosses.GhostBarrel { public enum LavaBarrelSkill { None = 0, } public enum LavaBarrelSkin { } public enum LavaBarrelAnimation { None = 0, Empty, Idle, In, Out } public class LavaBarrel : SpineBoss { // Variables #region Variables public LavaBarrelData LavaBarrelData { get; private set; } public GhostBarrelMapController GhostBarrelMapController { get; private set; } #endregion // Unity events #region Unity events protected override void OnDestroy() { base.OnDestroy(); //BossHealthPoint.OnHealthChanged -= SummonMiniSandMole; } #endregion // Initialize methods #region Initialize methods protected override void InitializeComponents() { base.InitializeComponents(); LavaBarrelData = BossData as LavaBarrelData; GhostBarrelMapController = MapManager.Instance.GhostBarrelMapController; } public override void Initialize() { StartCoroutine(InitializeCoroutine()); } private IEnumerator InitializeCoroutine() { HitBoxCollider.enabled = false; BossHealthPoint.Initialize(true, BossData.MaxHealthPoint, BossData.DisplayName, GhostBarrelMapController.ParticleInstanceLocation); BossSkillController.Initialize(BossData.SkillDataList); SpineController.PlayAnimation(BoomBarrelAnimation.Empty.ToString(), false); yield return StartCoroutine(DissolveCoroutine(0f, 1f, SpawnDissolveTime)); BehaviorTree.EnableBehavior(); HitBoxCollider.enabled = true; } #endregion // Methods #region Methods protected override void Die() { StartCoroutine(DieCoroutine()); } private IEnumerator DieCoroutine() { BossSkillController.StopAllCoroutine(); BehaviorTree.DisableBehavior(); HitBoxCollider.enabled = false; if (Rigidbody) { Rigidbody.linearVelocity = Vector3.zero; Rigidbody.isKinematic = true; } // TODO : 죽는 애니메이션 추가 //SpineController.SetSkin(SandMoleSkin.Idle.ToString()); //var dieTrack = SpineController.PlayAnimation(SandMoleAnimation.Die.ToString(), false); //await SpineController.WaitForAnimationCompletion(dieTrack); yield return StartCoroutine(DissolveCoroutine(1f, 0f, DieDissolveTime)); Destroy(gameObject); } #endregion } }