public GameResult Get([FromUri] GameState gameState) { if (!Game.IsOver( gameState.Player1Type, gameState.Player2Type, gameState.BothHumanPlayersPlayed)) { return(new GameResult(gameState, false)); } var firstPlayerChooses = new TurnSelection(gameState.Player1Type) .GetTurn(gameState.Player1Turn); var secondPlayerChooses = new TurnSelection(gameState.Player2Type) .GetTurn(gameState.Player2Turn); var winner = Challenge.ResolveWinner(firstPlayerChooses, secondPlayerChooses); gameState.Player1 = gameState.Player1Type == PlayerType.Human ? gameState.Player1 : (int)firstPlayerChooses; gameState.Player2 = gameState.Player2Type == PlayerType.Human ? gameState.Player2 : (int)secondPlayerChooses; return(GameResultHandling.GetResult(winner, gameState)); }
void EndTurn() { switch (turn) { case TurnSelection.Players: foreach (var p in players) { p.OnTurnEnd(); } turn = TurnSelection.Enemies; break; case TurnSelection.Enemies: foreach (var e in enemies) { e.OnTurnEnd(); } turn = TurnSelection.Players; break; } foreach (var entity in entitiesToAddThisTurn) { enemies.Add(entity as EnemyCombatObject); } entitiesToAddThisTurn.Clear(); StartTurn(); }
public void StartBattle(EncounterScriptableObject encounterSO, List <Player> players, int maxCardForPlayers) { currentEncounter = new Encounter(encounterSO); List <EnemyScriptableObject> enemyList = new List <EnemyScriptableObject>(); foreach (var enemy in currentEncounter.enemies) { enemyList.Add(enemy); } this.players = players; this.enemies = enemyManager.SpawnEnemies(enemyList, this, OnEnemyDeath); this.maxCardForPlayers = maxCardForPlayers; StartCoroutine(DrawFullHand(maxCardForPlayers)); foreach (var p in players) { p.RefreshUI(); } HideTargettingButtons(); turn = TurnSelection.Players; StartTurn(); //FindObjectOfType<AudioManager>().PlayMusic(); }
public void SuccessiveTacticalTurnsBeatPreviousTurns() { foreach (var turn in new [] { Turn.Rock, Turn.Scissors, Turn.Paper }) { var successiveTurn = new TurnSelection(PlayerType.TacticalComputer).GetTurn(turn); Assert.That(Challenge.ResolveWinner(turn, successiveTurn) .Equals(Result.SecondPlayerWins)); } }
public void StartCombat(EncounterScriptableObject encounterSO, List <Player> players, System.Action <bool> callback) { //List<EnemyScriptableObject> enemyList = new List<EnemyScriptableObject>(); int i = 0; foreach (var enemy in encounterSO.enemies) { EnemyCombatObject newEnemy = SpawnEntity(enemy, enemyManager.enemyPanel) as EnemyCombatObject; newEnemy.enemyIndex = this.enemies.Count; newEnemy.transform.localPosition = new Vector3(-encounterSO.enemies.Length / 2 + i, 0f, 0f); newEnemy.transform.localEulerAngles = new Vector3(0, 180f, 0); this.enemies.Add(newEnemy); i++; } enemyManager.SpawnEnemies(this.enemies, OnEnemyDeath); currentEncounter = encounterSO; combatOver = false; i = 0; foreach (var p in players) { if (p.Health < 1) { p.Health = 1; } PlayerCombatObject newPlayer = SpawnEntity(p, playersLocation.transform, hands[i], uis[i]) as PlayerCombatObject; newPlayer.transform.localPosition = new Vector3(-1 + i * 2, 0, 0); this.players.Add(newPlayer); i++; } foreach (var p in this.players) { p.RefreshUI(); } OnCombatEnd += callback; turn = TurnSelection.Players; StartTurn(); }
void EndTurn() { switch (turn) { case TurnSelection.Players: turn = TurnSelection.Enemies; break; case TurnSelection.Enemies: turn = TurnSelection.Players; break; } foreach (var entity in entitiesToAddThisTurn) { enemies.Add(entity as Enemy); } entitiesToAddThisTurn.Clear(); StartTurn(); }