コード例 #1
0
        public Task CancelFleet(Guid userId, FleetCancelationData fleetCancelation)
        {
            if (fleetCancelation == null)
            {
                throw new ArgumentNullException(nameof(fleetCancelation));
            }
            EnsureGameIsInProgress();
            EnsureUserIsOnline(userId);
            EnsureTurnIsInProgress(userId);
            var waitingFleets = _state.PlayerStates[userId].WaitingFleets;
            var validator     = new CancelFleetValidator(waitingFleets.Count);

            fleetCancelation.EnsureIsValid(validator);

            var fleet = waitingFleets[fleetCancelation.Index];

            waitingFleets.RemoveAt(fleetCancelation.Index);
            var planet = _map[fleet.From];

            planet.Ships += fleet.Ships;
            return(Task.CompletedTask);
        }