using System.Collections; using BlueWater.Audios; using UnityEngine; namespace BlueWater.Enemies.Bosses.SandMole { public class MiniSandMole : SandMole { // Initialize methods #region Initialize methods public override void Initialize() { StartCoroutine(InitializeCoroutine()); } private IEnumerator InitializeCoroutine() { HitBoxCollider.enabled = false; BossHealthPoint.Initialize(false, BossData.MaxHealthPoint, BossData.DisplayName, SandMoleMapController.ParticleInstanceLocation); BossSkillController.Initialize(BossData.SkillDataList); SetMoveSpeed(SandMoleData.MoveSpeed); StopMove(); yield return IsInitialized; yield return StartCoroutine(DissolveCoroutine(0f, 1f, SpawnDissolveTime)); SpineController.SetSkin(SandMoleSkin.Normal.ToString()); var isRoar = false; var roarTrack = SpineController.PlayAnimation(SandMoleAnimation.Roar.ToString(), false); while (!roarTrack.IsComplete) { if (CurrentHealthPoint == 0) yield break; if (roarTrack.TrackTime >= 1f && !isRoar) { AudioManager.Instance.PlaySfx("MiniSandMoleCry"); isRoar = true; } yield return null; } BehaviorTree.EnableBehavior(); HitBoxCollider.enabled = true; } #endregion // Methods #region Methods protected override void Die() { StartCoroutine(DieCoroutine()); } private IEnumerator DieCoroutine() { BossSkillController.StopAllCoroutine(); SandMoleStatus.StopAllCoroutine(); BehaviorTree.DisableBehavior(); StopMove(); HitBoxCollider.enabled = false; if (Rigidbody) { Rigidbody.linearVelocity = Vector3.zero; Rigidbody.isKinematic = true; } SpineController.SetSkin(SandMoleSkin.Idle.ToString()); var dieTrack = SpineController.PlayAnimation(SandMoleAnimation.Die.ToString(), false); yield return new WaitUntil(() => dieTrack.IsComplete); yield return StartCoroutine(DissolveCoroutine(1f, 0f, DieDissolveTime)); Destroy(gameObject); } #endregion } }