Exemplo n.º 1
0
        private ILivingHouse AddLivingHouse()
        {
            var livingHouse = NewInstanceFactory.GetNewInstance <ILivingHouse>();

            livingHouse.Cargos.Add(NewInstanceFactory.GetCargoNewInstance <IFreshWater>(1));
            livingHouse.Cargos.Add(NewInstanceFactory.GetCargoNewInstance <ISalt>(1));

            return(livingHouse);
        }
Exemplo n.º 2
0
        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);
            }
        }
Exemplo n.º 3
0
        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);
            }
        }
Exemplo n.º 4
0
        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));
        }
Exemplo n.º 5
0
        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));
        }