/// <summary> /// Process next turn. /// </summary> public void NextUnitTurn() { if (UnitOnTurn != null) { UnitOnTurn.EndTurn(); } // Remove first unit in queue and add it to the end. UnitOnTurn = UnitsOnBoard[0]; UnitsOnBoard.RemoveAt(0); UnitsOnBoard.Add(UnitOnTurn); // Start its turn. UnitOnTurn.StartTurn(); switch (UnitOnTurn.Allegiance) { case Allegiance.Enemy: turnPanel.SetContent("ENEMY"); AI.Decide(UnitOnTurn); break; case Allegiance.Player: AudioManager.GetManager().PlayCombatSound(playerTurnSignal); turnPanel.SetContent("PLAYER"); ChangePhase(Phase.Action); break; } }
/// <summary> /// On Unit death callback. /// </summary> /// <param name="unit">Dead unit.</param> private void OnUnitDeath(Unit unit) { // Remove unit from turn queue. UnitsOnBoard.Remove(unit); // Remove unit visually. unit.UnregisterDeathCallback(OnUnitDeath); unit.Tile.KillUnit(); // Check for win/lose condition. CheckWinLoseCondition(); }