Beispiel #1
0
        private void OnBattleContinuation()
        {
            while (_battleState.GetRound() < Config.MaxRoundCount)
            {
                for (var i = 0; i < Config.MaxRoundCount; i++)
                {
                    while (_battleHelper.GetCurrentAttackQueue().Count != 0)
                    {
                        var action = _battleHelper.OnNextAction();
                        if (action is Defence)
                        {
                            Config.Logger.LogMessage($"{action.Stack().Unit.GetType().Name} is defending");
                        }
                        else if (action is Await)
                        {
                            _battleHelper.OnAwait(action.Stack());
                        }

                        var loser = _battleHelper.CheckLoser();
                        if (loser == null)
                        {
                            continue;
                        }
                        var winner = loser.Equals(_battleHelper.GetFirstPlayer())
                            ? _battleHelper.GetFirstPlayer()
                            : _battleHelper.GetSecondPlayer();
                        _battleState = new PlayerWon(_battleState.GetRound(), winner);
                        OnBattleFinish();
                        return;
                    }
                    _battleHelper.OnNextTurn();
                }
                _battleState = new InProgress(_battleState.GetRound() + 1);
            }

            _battleState = new TimeLimit();
            OnBattleFinish();
        }
Beispiel #2
0
 private void OnBattleStart()
 {
     _battleState = new InProgress(_battleState.GetRound() + 1);
     OnBattleContinuation();
 }