Пример #1
0
        private void CheckPlayerCanLoadToShip(IPlayer player, IReadOnlyCollection <IGood> goods, CargoShip cargoShip)
        {
            var goodType = goods.First().Type;

            if (!cargoShip.CanBeLoaded(goodType))
            {
                throw new GameException($"{goodType} cannot be loaded to ship with capacity {cargoShip.Capacity}");
            }

            var typedShip = GetCargoShipWithGoodTypeOrDefault(goodType);

            if (typedShip != null && typedShip != cargoShip)
            {
                throw new GameException(
                          $"{goodType} barrels already loaded to ship with capacity {typedShip.Capacity}");
            }

            if (typedShip == null &&
                goods.Count > cargoShip.Capacity &&
                Game.CargoShips.Exists(ship => ship.Capacity > cargoShip.Capacity && ship.CanBeLoaded(goodType)))
            {
                throw new GameException($"{goodType} must be loaded to a ship with more capacity");
            }
        }