void UpdateState() { Move(); if (m_CurrentTime >= m_TimeBetweenActions) { BossStates action = (BossStates)UnityEngine.Random.Range(0, Enum.GetNames(typeof(BossStates)).Length); switch (action) { case BossStates.ATTACK_1: m_SpaceshipBehaviour.UsePrimaryInventorySlot(FireType.SINUSOIDAL); break; case BossStates.ATTACK_2: m_SpaceshipBehaviour.UsePrimaryInventorySlot(FireType.CIRCLE); break; case BossStates.ATTACK_3: m_InventoryBehaviour.SetSecondarySlot(ItemType.Missile); m_SpaceshipBehaviour.UseSecondaryInventorySlot(); break; case BossStates.INVULNERAVILITY: m_InventoryBehaviour.SetSecondarySlot(ItemType.Invulnerability); m_SpaceshipBehaviour.UseSecondaryInventorySlot(); break; } m_CurrentTime = 0; } if (!m_IsRageMode && m_SpaceshipBehaviour.m_Health <= m_MaxHealth / 2) { EnterRageMode(); } }
public void UseSecondaryInventorySlot() { if (!m_IsDead) { ItemType item = m_Inventory.GetSecondarySlot(); switch (item) { case ItemType.Missile: Vector3 missilePosition = new Vector3(transform.position.x + m_BulletOffsetX, transform.position.y, transform.position.z); Fire(missilePosition, m_MissileBullet, m_MissileBulletRotation); m_AudioSource.PlayOneShot(m_MissileAudio); break; case ItemType.Invulnerability: ApplyInvulnerabilityPowerup(); break; case ItemType.Empty: m_AudioSource.PlayOneShot(m_EmptyAudio); break; } m_Inventory.SetSecondarySlot(ItemType.Empty); } }