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(); }
private void OnBattleStart() { _battleState = new InProgress(_battleState.GetRound() + 1); OnBattleContinuation(); }