private void GiveCharacters(List <Character> characters, CharacterOwner characterOwner)
 {
     foreach (Character character in characters)
     {
         characterOwner.AddOwnedCharacter(character);
     }
 }
 private void Start()
 {
     players.Clear();
     InitializePlayersAndCharacters();
     currentPlayer = players[0];
     players[0].OnTurnGiven();
 }
 public void CheckForComputerTurnSkip()
 {
     if (Input.GetKeyDown(Constants.SKIP_COMPUTER_TURN_KEY))
     {
         currentPlayer = players.Find(player => player is HumanPlayer);
         currentPlayer.OnTurnGiven();
     }
 }
 public void CheckForCurrentPlayerLoss()
 {
     if (currentPlayer.HaveAllCharactersDied())
     {
         currentPlayer.Lose();
         CharacterOwner playerWhoLost = currentPlayer;
         GiveTurnToNextPlayer();
         players.Remove(playerWhoLost);
     }
 }
        public void GiveTurnToNextPlayer()
        {
            currentPlayer.MakeOwnedCharactersUnplayable();
            int nextPlayerIndex = players.IndexOf(currentPlayer) + 1;

            if (nextPlayerIndex >= players.Count)
            {
                nextPlayerIndex = 0;
            }
            if (players.ElementAt(nextPlayerIndex) != null)
            {
                currentPlayer = players.ElementAt(nextPlayerIndex);
            }
        }
 public bool HasWon(CharacterOwner characterOwner)
 {
     return(players.Contains(characterOwner) && players.Count <= 1);
 }