Exemplo n.º 1
0
    private void NextTurn(object sender, EventArgs eventArgs)
    {
        Debug.Log(CurrentCombat);
        if (!CurrentCombat.IsPlayerTurn)
        {
            foreach (var enemy in Enemies)
            {
                enemy.PerformCombatAction();
            }
        }

        if (eventArgs is CombatEventArgs combatEventArgs)
        {
            //Debug.Log(combatEventArgs.TurnNumber);
        }

        CombatHistory.Enqueue(CurrentCombat);

        TurnNumber++;

        CurrentHand = Game.PlayerDeck.DrawHand();
        GetNewHand?.Invoke(CurrentHand);

        var lastCombat = CurrentCombat;

        CurrentCombat = new Combat
        {
            OnTurnCompleted = NextTurn,
            TurnNumber      = TurnNumber,
            IsPlayerTurn    = !lastCombat.IsPlayerTurn
        };
    }
Exemplo n.º 2
0
    public void StartCombat(bool playerStarts)
    {
        CurrentHand = Game.PlayerDeck.DrawHand();
        GetNewHand?.Invoke(CurrentHand);
        CombatHistory = new Queue <Combat>();
        TurnNumber    = 1;

        CurrentCombat = new Combat
        {
            OnTurnCompleted = NextTurn,
            CardsInCombat   = new List <Card>(),
            TurnNumber      = TurnNumber,
            IsPlayerTurn    = playerStarts
        };

        //Spawn Enemies
        int enemyCount      = Random.Range(1, 5);
        int enemyPoolAmount = Game.EnemyPool.Count;

        for (var i = 0; i < enemyCount; i++)
        {
            var enemyToSpawn = Game.Spawner.SpawnEnemy(Game.EnemyPool[Random.Range(0, enemyPoolAmount)], i);
            this.Enemies.Add(enemyToSpawn);
        }



        //CurrentCombat.EndTurn();
    }