private ILivingHouse AddLivingHouse() { var livingHouse = NewInstanceFactory.GetNewInstance <ILivingHouse>(); livingHouse.Cargos.Add(NewInstanceFactory.GetCargoNewInstance <IFreshWater>(1)); livingHouse.Cargos.Add(NewInstanceFactory.GetCargoNewInstance <ISalt>(1)); return(livingHouse); }
private void Produce(IProduce produce, ICargoContainer container) { if (produce == null) { throw new ArgumentNullException(nameof(produce)); } if (!produce.From.Any() && !produce.To.Any()) { return; } //проверяем, что ингридиентов достаточно, чтобы приготовить foreach (var cargoFrom in produce.From) { var fromCargo = container.Cargos.Collection.FirstOrDefault(c => c.Type == cargoFrom.Type); if (fromCargo == null) { return; } if (fromCargo.Count < cargoFrom.Count * produce.Speed) { return; } } //проверяем, что место достаточно, чтобы хранить ингридиенты foreach (var cargoTo in produce.To) { var count = cargoTo.Count * produce.Speed; if (count > CanAddCargoMore(cargoTo.Type, container)) { return; } } //тратим ингридиенты foreach (var cargoFrom in produce.From) { var fromCargo = container.Cargos.Collection.First(c => c.Type == cargoFrom.Type); fromCargo.Count -= cargoFrom.Count * produce.Speed; } //создаем ингридиенты foreach (var cargoTo in produce.To) { var cargoToAdd = NewInstanceFactory.GetNewInstance <ICargo>(cargoTo.Type); cargoToAdd.Count = cargoTo.Count * produce.Speed; AddCargo(cargoToAdd, container); } }
private void ProcessStop(IPlayer player) { var city = FindCityToEnter(player); if (city != null) { var command = NewInstanceFactory.GetNewInstance <IEnterCityServerCommand>(); command.WorldGuid = player.PlayersWorld.Guid; command.PlayerGuid = player.Guid; player.Commands.Add(command); } }
private Tuple <ICity, string[]> AddCity(Tuple <float, float> cooridnates, string[] localCityNames) { var city = NewInstanceFactory.GetNewInstance <ICity>(); city.Name = localCityNames.First(); city.Size = 1; city.X = cooridnates.Item1; city.Y = cooridnates.Item2; localCityNames = localCityNames.Where(c => !string.Equals(c, city.Name, StringComparison.InvariantCultureIgnoreCase)).ToArray(); FillCityByHouses(city); return(new Tuple <ICity, string[]>(city, localCityNames)); }
public Tuple <IWorld, IPlayer> GenerateWorld(string userGuid) { var localCityNames = CityNames.Select(c => c).ToArray(); var world = NewInstanceFactory.GetNewInstance <IWorld>(); WorldRepository.Add(world); world.WorldDate = new DateTime(3000, 1, 1, 0, 0, 0, DateTimeKind.Utc); var player = NewInstanceFactory.GetNewInstance <IPlayer>(); player.UserGuid = userGuid; world.Players.Add(player); for (var i = 0; i < InitializeCityCount; i++) { var cooridnates = GenerateInitializedCityVectorInScreenN(1, 0, world.Cities.Collection); if (cooridnates != null) { var city = AddCity(cooridnates, localCityNames); world.Cities.Add(city.Item1); localCityNames = city.Item2; } } var firstCity = world.Cities.Collection.First(); player.X = firstCity.X; player.Y = firstCity.Y; player.VisibleCities = new[] { firstCity.Guid }; var saltEvaporationFactory = NewInstanceFactory.GetNewInstance <ISaltEvaporationFactory>(); firstCity.Buildings.Add(saltEvaporationFactory); saltEvaporationFactory.Cargos.Add(NewInstanceFactory.GetCargoNewInstance <ISaltWater>(1)); return(new Tuple <IWorld, IPlayer>(world, player)); }