Esempio n. 1
0
        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));
        }
Esempio n. 2
0
    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();
    }
Esempio n. 3
0
    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();
    }
Esempio n. 4
0
        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));
            }
        }
Esempio n. 5
0
    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();
    }
Esempio n. 6
0
    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();
    }