private void Update() { switch (currentGameState) { case GameState.StartOfTurn: iconHandler.UpdatePlayerIcons(); //Check if win if (currentLord.GetLandCount() <= 0 && currentLord.GetArmies() <= 0 && currentLord.GetWealth() <= 0) { //go to next lord, this lord is out JumpToNextLord(); } else if (currentLord.GetLandCount() >= 5) { //WIN Debug.Log(currentLord.lordName + " won the round!"); currentGameState = GameState.RoundOver; } else { currentGameState = GameState.PlayerIncome; } break; case GameState.PlayerIncome: soundsSource.PlayOneShot(coinSound); currentLord.ReceiveIncome(); currentLord.SpendToMaintainArmies(); currentGameState = GameState.PlayerChoosingAction; break; case GameState.PlayerChoosingAction: if (currentLord is AILord) { //do random AI thing ((AILord)currentLord).TakeRandomAction(); } //Otherwise, do nothing as it is handled by the UI break; case GameState.PlayerDecidingTrades: //Do nothing, this is handled by the UI break; case GameState.PlayerSpecifyingTrade: break; case GameState.EndOfTurn: //print current lord currentLord.PrintLord(); JumpToNextLord(); currentGameState = GameState.StartOfTurn; break; case GameState.RoundOver: //check winner -> currentPlayer currentLord.IncreaseKingPoints(); //Make sure old king does not persist foreach (Player player in players) { if (player != currentLord && player.IsKing()) { player.RemoveKingStatus(); } } //check if current player has won the game if (currentLord.GetKingPoints() > kingPointsToWin) { //Win the game mainOptionScreen.SetActive(false); gameVictoryScreen.SetActive(true); currentGameState = GameState.GameOver; //Set text gameVictoryMessage.text = currentLord.lordName + " has become legend!"; } else { //Round Won mainOptionScreen.SetActive(false); roundVictoryScreen.SetActive(true); currentGameState = GameState.EndOfTurn; //set text roundVictoryMessage.text = currentLord.lordName + " has become king!"; } break; case GameState.GameOver: Debug.Log(currentLord.lordName + " has won the game!"); break; } }