protected override void Initialize() { controller = new Controller(); // Создание координат полигона. var polygonCoordinates = new Coordinate[] { new Coordinate(4817367, 6144314), new Coordinate(4817367, 6267072), new Coordinate(4950673, 6267072), new Coordinate(4950673, 6144314), new Coordinate(4817367, 6144314) }; // Создание стандартного полигона по ранее созданным координатам. Territory territory = new Territory(new LinearRing(polygonCoordinates)); Dog dog = new Dog(controller.generateCoordinate(territory)); Human human = new Human(controller.generateCoordinate(territory)); Enemy enemy = new Enemy(controller.generateCoordinate(territory)); territory.dogs.Add(dog); territory.human = human; territory.enemys.Add(enemy); controller.territories.Add(territory); MapObjects.Add(territory); MapObjects.Add(dog); MapObjects.Add(enemy); MapObjects.Add(human); }
public CollectionsViewModel() { Status = TaskStatuses.Success; const double Radius = 10; Collections.Add(new OverpassCollection(new[] { "toilets" }, Radius) { Title = "Toilets", ImageSource = "em173", MakeIconFunc = _ => BitmapCache.GetBitmap("em173.png"), MaxVisibleCount = 100 }); Collections.Add(new OverpassCollection(new[] { "recycling" }, Radius) { Title = "Recycling", ImageSource = "em157", MakeIconFunc = _ => BitmapCache.GetBitmap("em157.png"), MaxVisibleCount = 100 }); var root = new MapObjectCollection() { Title = "Root", MaxVisibleCount = 10 }; root.Add(Collections.ToList()); Collections.Add(root); MapObjects.Add(root); }
protected override void Initialize() { //тут будут жить звери var wildLandCoordinates = new[] { new Coordinate(_leftX, _downY), new Coordinate(_leftX, _upY), new Coordinate(_rightX, _upY), new Coordinate(_rightX, _downY), new Coordinate(_leftX, _downY), }; _wildLand = new Polygon(new LinearRing(wildLandCoordinates)); MapObjects.Add(_wildLand); //Спаун оленей foreach (var coordinate in GenerateCoordinatesAnimal(200)) { MapObjects.Add(new Deer(coordinate, _deerSeed)); } //Спаун волков foreach (var coordinate in GenerateCoordinatesAnimal(300)) { MapObjects.Add(new Wolf(coordinate, _wolfSpeed)); } }
protected override void Initialize() { var generator = ObjectGenerator.GetGenerator(); var wires = ObjectGenerator.GetWires(generator); var consumers = ObjectGenerator.GetConsumers(wires); var elecritians = ObjectGenerator.GetElectritians(); var dispatherStation = ObjectGenerator.GetDispatherStation(); foreach (var el in wires) { MapObjects.Add(el); } foreach (var el in consumers) { MapObjects.Add(el); } foreach (var el in elecritians) { MapObjects.Add(el); } MapObjects.Add(generator); MapObjects.Add(dispatherStation); }
protected override void Initialize() { controller = new Controller(); // Создание координат полигона. var polygonCoordinates = new Coordinate[] { new Coordinate(4817367, 6144314), new Coordinate(4817367, 6267072), new Coordinate(4950673, 6267072), new Coordinate(4950673, 6144314), new Coordinate(4817367, 6144314) }; // Создание стандартного полигона по ранее созданным координатам. controller.tempList.Add(new Temperature(new LinearRing(polygonCoordinates))); var polygonCoordinates2 = new Coordinate[] { new Coordinate(4950673, 6144314), new Coordinate(4950673, 6267072), new Coordinate(5040869, 6267072), new Coordinate(5040869, 6144314), new Coordinate(4950673, 6144314) }; // Создание стандартного полигона по ранее созданным координатам. controller.tempList.Add(new Temperature(new LinearRing(polygonCoordinates2))); MapObjects.Add(controller.tempList[0]); MapObjects.Add(controller.tempList[1]); }
public override void Update(long elapsedMilliseconds) { var deers = MapObjects.GetAll <Deer>(); var wolves = MapObjects.GetAll <Wolf>(); foreach (var deer in deers) { //проверяю чтобы олени не вышли из полигона if (deer.Coordinate.X < _leftX - _barier || deer.Coordinate.Y < _downY - _barier) { deer._speed = _deerSeed; } else if (deer.Coordinate.X > _rightX - _barier || deer.Coordinate.Y > _upY - _barier) { deer._speed = -_deerSeed; } deer.MoveUpRight(); } foreach (var wolf in wolves) { var nearestDeer = deers.Aggregate((deer1, deer2) => PointExtension.Distance((Point)wolf, (Point)deer1) < PointExtension.Distance((Point)wolf, (Point)deer2) ? deer1 : deer2); wolf.MoveUpRight(new Coordinate(nearestDeer.X, nearestDeer.Y)); //Ищем ближайшего волка var minDistance = double.MaxValue; foreach (var _wolf in wolves.Where(_wolf => (PointExtension.Distance((Point)wolf, (Point)_wolf) < minDistance) && (PointExtension.Distance((Point)wolf, (Point)_wolf) > 0))) { minDistance = (PointExtension.Distance((Point)wolf, (Point)_wolf)); } if (minDistance < 250) { if (wolf._flagPack == false) { Console.WriteLine(minDistance); wolf.WolfInThePack(); wolf._flagPack = true; } } else { wolf._speed = _wolfSpeed; wolf._flagPack = false; } if (!wolf.CanEat(nearestDeer)) { continue; } MapObjects.Remove(nearestDeer); deers.Remove(nearestDeer); var newDeerCoordinate = GenerateCoordinatesAnimal(1)[0]; MapObjects.Add(new Deer(newDeerCoordinate, 10)); } }
public void RefreshMapUnits() { var mapUnits = objectTileMap.GetComponentsInChildren <GameUnit>(); if (mapUnits.Any()) { foreach (var unit in mapUnits) { // Add the unit to our list of units and objects on this map if (!MapUnits.Contains(unit)) { MapUnits.Add(unit); } if (!MapObjects.Contains(unit)) { MapObjects.Add(unit); } // And make sure it's Map X/Y coordinates are corred in our grid var unitPosition = objectTileMap.WorldToCell(unit.transform.position); var gridPosition = objectTileMap.CellToWorld(unitPosition); unit.transform.position = gridPosition; TranslateUnityXYToMapXY(unitPosition, out var unitMapX, out var unitMapY); unit.MapX = unitMapX; unit.MapY = unitMapY; } } }
// Этот метод будет вызван один раз при запуске, соответственно тут вся инициализация protected override void Initialize() { State state = new State() { Hunger = 100, // Интервал можно задать через объекты LocalTime HomeTime = new TimeInterval(new LocalTime(20, 0), new LocalTime(18, 23)), }; // Создаём акторов for (int i = 0; i < 2; i++) { Console.WriteLine($"Creating actor {i + 1}"); // Делаем для каждого точку дома и точку работы в квадрате заданного радиуса от точки спавна state.Home = new Point(x + offset, y + offset); state.Job = new Point(x + offset, y + offset); Console.WriteLine($"Home at {state.Home.X}, {state.Home.Y}; " + $"Job at {state.Job.X}, {state.Job.Y}"); // Создаём актора с заданным состоянием // Так как в конструкторе актора состояние копируется, // можно использовать один и тот же объект состояния для инициализации, // при этом каждый актор получит отдельный объект, не связанный с другими Actor actor = new Actor(x, y, state); // Добавляем актора в объекты карты MapObjects.Add(actor); var firstCoordinate = new Coordinate(x, y); var secondCoordinate = new Coordinate(state.Home.X, state.Home.Y); Console.WriteLine($"Coor {firstCoordinate} and {secondCoordinate}"); Console.WriteLine("Building path..."); MapObjects.Add(new Highlighted(new Geometry[] { PathsFinding.GetPath(firstCoordinate, secondCoordinate, "Walking").Result })); Console.WriteLine("Path was builded"); } // Получаем список акторов на карте и выводим их количество var actors = MapObjects.GetAll <Actor>(); Console.WriteLine($"Added {actors.Count} actors"); foreach (var actor in actors) { Console.WriteLine($"Actor on ({actor.Coordinate.X}, {actor.Coordinate.Y})\n" + $"\tHome at {actor.State.Home.X}, {actor.State.Home.Y}\n"); } }
protected override void Initialize() { //Добавление созданных объектов в общий список, доступный всем модулям. Объекты из данного списка отображаются на карте. MapObjects.Add(new Airport(china, 20)); MapObjects.Add(new Airport(moscow, 13)); MapObjects.Add(new Airport(iraq, 9)); MapObjects.Add(new Airport(afganistan, 7)); MapObjects.Add(new Airport(usa, 17)); allAirports = MapObjects.GetAll <Airport>(); }
protected override void Initialize() { // добавляем регион подводной лодки и подлодку MapObjects.Add(new Region(_leftX, _rightX, _upY, _downY).polygon); MapObjects.Add(new Submarine(new Coordinate(-14000000, -7000000), 5000)); // создаем таймер на создание объектов для исследование каждые 5с Init(); //Получим объект подлодки и объекта для исследования objRes = MapObjects.GetAll <ObjResearch>()[0]; submarine = MapObjects.GetAll <Submarine>()[0]; }
protected override void Initialize() { //Добавление созданных объектов в общий список, доступный всем модулям. Объекты из данного списка отображаются на карте. //тут добавить Human1, Human2, Human3, Human4, Animal1, Animal2, Animal3, Animal4 с разными хар-ами. Все они объекты класса VitalFunctions MapObjects.Add(new VitalFunctions(new Coordinate(4956032, 6225636), 1, 100, false, 43, "Human", new Coordinate(4956332, 6225936))); MapObjects.Add(new VitalFunctions(new Coordinate(4956030, 6225750), 1, 98, false, 50, "Human", new Coordinate(4956332, 6225936))); MapObjects.Add(new VitalFunctions(new Coordinate(4956600, 6225750), 1, 95, false, 50, "Human", new Coordinate(4956332, 6225936))); MapObjects.Add(new VitalFunctions(new Coordinate(4955900, 6225855), 1, 97, false, 43, "Animal", new Coordinate(4955800, 6226000))); MapObjects.Add(new VitalFunctions(new Coordinate(4955930, 6225845), 1, 90, false, 50, "Animal", new Coordinate(4955800, 6226000))); MapObjects.Add(new VitalFunctions(new Coordinate(4956000, 6226000), 1, 99, false, 50, "Animal", new Coordinate(4955500, 6225750))); MapObjects.Add(new VitalFunctions(new Coordinate(4955500, 6226200), 1, 89, false, 40, "Human", new Coordinate(4955800, 6225950))); MapObjects.Add(new VitalFunctions(new Coordinate(4955901, 6225901), 1, 91, false, 50, "Human", new Coordinate(4956332, 6225936))); }
public void AddMapObject(BaseMapObject obj) { MapObjects.Add(obj); if (obj is IInteractable interactable) { Interactables.Add(interactable); } if (obj is User user) { Users.Add(user); } }
protected override void Initialize() { //координаты аэропорта var airport1Coordinate = MathExtensions.LatLonToSpherMerc(-34.831747, -56.020034); var airport2Coordinate = new Coordinate(4942686, 6234338); var airport3Coordinate = new Coordinate(-8579292, 4700571); var airport4Coordinate = new Coordinate(15547903, 4259071); var airport5Coordinate = new Coordinate(5241746, -2178150); //создаем аэропорты airport1 = new Airport(airport1Coordinate); airport2 = new Airport(airport2Coordinate); airport3 = new Airport(airport3Coordinate); airport4 = new Airport(airport4Coordinate); airport5 = new Airport(airport5Coordinate); //создаем порты port1 = new Port(new Coordinate(-3991847, -596820)); port2 = new Port(new Coordinate(-4520180, -2299226)); port3 = new Port(new Coordinate(1193641, -381574)); port4 = new Port(new Coordinate(2074195, -3982063)); port5 = new Port(new Coordinate(12914800, -4138606)); //добавляем на карту объекты MapObjects.Add(port1); MapObjects.Add(port2); MapObjects.Add(port3); MapObjects.Add(port4); MapObjects.Add(port5); MapObjects.Add(airport1); MapObjects.Add(airport2); MapObjects.Add(airport3); MapObjects.Add(airport4); MapObjects.Add(airport5); //создаем 5 самолетов airplane1 = CreateAirplane(MathExtensions.LatLonToSpherMerc(-34.831747, -56.020034)); airplane2 = CreateAirplane(new Coordinate(4942686, 6234338)); airplane3 = CreateAirplane(new Coordinate(-8579292, 4700571)); airplane4 = CreateAirplane(new Coordinate(15547903, 4259071)); airplane5 = CreateAirplane(new Coordinate(5241746, -2178150)); //создаем 5 кораблей ship1 = CreateShip(new Coordinate(-3991847, -596820)); ship2 = CreateShip(new Coordinate(-4520180, -2299226)); ship3 = CreateShip(new Coordinate(1193641, -381574)); ship4 = CreateShip(new Coordinate(2074195, -3982063)); ship5 = CreateShip(new Coordinate(12914800, -4138606)); }
/// <summary> /// Вызывается постоянно, здесь можно реализовывать логику перемещений и всего остального, требующего времени. /// </summary> /// <param name="elapsedMilliseconds">TimeNow.ElapsedMilliseconds</param> public override void Update(long elapsedMilliseconds) { // Двигаем самолет. submarine.MoveToObj(MapObjects); if (MapObjects.GetAll <Point>().Count < 10) { int x = random.Next(-6500000, -4500000); int y = random.Next(2500000, 4500000); var obj = new IntrestingObj(new Coordinate(x, y)); MapObjects.Add(obj); } }
void SelectAndShowRandomUrns(double num, double distance, double coord1, double coord2, int index, double volumeMaxUrn) { double countUrl = urns.Count + num; double radius = Math.Sqrt(2.0) * (distance * (Math.Sqrt(num) - 0.8)) / 2; Random rand = new Random(); for (double i = -radius; i < radius && urns.Count < countUrl; i = i + distance) { for (double j = -radius; j < radius && urns.Count < countUrl; j = j + distance) { double rand1 = (rand.NextDouble() * 2 - 1) * (distance / 3); double rand2 = (rand.NextDouble() * 2 - 1) * (distance / 3); urns.Add(new GarbageUrn(coord1 + i + rand1, coord2 + j + rand2, index, volumeMaxUrn)); MapObjects.Add(urns.Last()); } } }
void SelectAndShowRandomСontainer(double num, double distance, double coord1, double coord2, double volumeMaxContainers) { double countContainer = containers.Count + num; double radius = Math.Sqrt(2.0) * (distance * (Math.Sqrt(num) - 0.8)) / 2; Random rand = new Random(); for (double i = -radius; i < radius && containers.Count < countContainer; i = i + distance) { for (double j = -radius; j < radius && containers.Count < countContainer; j = j + distance) { double rand1 = (rand.NextDouble() * 2 - 1) * (distance / 3); double rand2 = (rand.NextDouble() * 2 - 1) * (distance / 3); containers.Add(new GarbageСontainer(coord1 + i + rand1, coord2 + j + rand2, volumeMaxContainers)); MapObjects.Add(containers.Last()); } } }
/// <summary> /// Создает корабль в заданной точке пространства /// </summary> /// <param name="coordinateAirport"></param> /// <returns></returns> public Ship CreateShip(Coordinate coordinateAirport) { Ship ship; LineString line; Random rnd = new Random(); Coordinate coordinateIntermediate = new Coordinate(0, 0); Coordinate coordinateDeparture = coordinateAirport; Coordinate coordinateArrival = new Coordinate(0, 0); double speed = rnd.Next(1000, 2000); do { int rndForCoordinate = rnd.Next(1, 6); switch (rndForCoordinate) { case 1: coordinateArrival = new Coordinate(-3991847, -596820); break; case 2: coordinateArrival = new Coordinate(-4520180, -2299226); break; case 3: coordinateArrival = new Coordinate(1193641, -381574); break; case 4: coordinateArrival = new Coordinate(2074195, -3982063); break; case 5: coordinateArrival = new Coordinate(12914800, -4138606); break; } } while (coordinateDeparture.Equals2D(coordinateArrival)); ship = new Ship(coordinateDeparture, speed, coordinateArrival); var lineCoordinates = new Coordinate[] { ship.coordinateDepartureShip, ship.coordinateArrivalShip }; line = new LineString(lineCoordinates); MapObjects.Add(line); MapObjects.Add(ship); return(ship); }
public override void Update(long elapsedMilliseconds) { // List<Truck> trucks = MapObjects.GetAll<Truck>(); List <Provider> Providers = MapObjects.GetAll <Provider>(); List <Customer> Customers = MapObjects.GetAll <Customer>(); var truks = MapObjects.GetAll <Truck>(); if (truks.Count < 35 && Rand.MayBe(0.2)) { var weight = Rand.GenerateInRange(250, 5000); MapObjects.Add(new Truck(new Coordinate(Providers[Rand.GenerateInRange(0, 17)].Coordinate), weight, Rand.GenerateInRange(80, 130), new Coordinate(Customers[Rand.GenerateInRange(0, 32)].Coordinate))); Console.WriteLine("Машина отправлена " + weight + " кг"); } if (Rand.MayBe(0.001)) { Console.WriteLine("Машина сломалась"); MapObjects.Remove(truks[Rand.GenerateInRange(1, truks.Count - 1)]); } truks = MapObjects.GetAll <Truck>(); foreach (var truck in truks) { if (!truck.InObj()) { truck.Move(); } else if (truck.loaded) { Console.WriteLine("Машина доехала до заказчика"); truck.loaded = false; truck.goHome(); } else if (!truck.loaded) { Console.WriteLine("Машина приехала с заказа"); MapObjects.Remove(truck); } } //Console.WriteLine(MapObjects.GetAll<Truck>().Count); }
/// <summary> /// Создает самолет в заданной точке пространства /// </summary> /// <param name="coordinateAirport"></param> /// <returns></returns> public Airplane CreateAirplane(Coordinate coordinateAirport) { Airplane airplane; LineString line; Random rnd = new Random(); Coordinate coordinateDeparture = coordinateAirport; Coordinate coordinateArrival = new Coordinate(0, 0); double speed = rnd.Next(1000, 2000); do { int rndForCoordinate = rnd.Next(1, 6); switch (rndForCoordinate) { case 1: coordinateArrival = MathExtensions.LatLonToSpherMerc(-34.831747, -56.020034); break; case 2: coordinateArrival = new Coordinate(4942686, 6234338); break; case 3: coordinateArrival = new Coordinate(-8579292, 4700571); break; case 4: coordinateArrival = new Coordinate(15547903, 4259071); break; case 5: coordinateArrival = new Coordinate(5241746, -2178150); break; } } while (coordinateDeparture.Equals2D(coordinateArrival)); airplane = new Airplane(coordinateDeparture, speed, coordinateArrival); var lineCoordinates = new Coordinate[] { airplane.coordinateDepartureAirplane, airplane.coordinateArrivalAirplane }; line = new LineString(lineCoordinates); MapObjects.Add(line); MapObjects.Add(airplane); return(airplane); }
/// <summary> /// Loads MapObjects for the Active Map, iterates through them, and instantiates objects /// based on the information found in the Map ObjectLayers /// </summary> private void LoadMapObjectLayers() { TiledMapObjectLayer _mapEntityObjectLayer = MapCurrent.GetLayer <TiledMapObjectLayer>("Entity Layer"); TiledMapObjectLayer _mapCollisionLayer = MapCurrent.GetLayer <TiledMapObjectLayer>("Collision Layer"); TiledMapObjectLayer _mapAreaDefinitionLayer = MapCurrent.GetLayer <TiledMapObjectLayer>("Area Definitions"); foreach (TiledMapObject _entityObject in _mapEntityObjectLayer.Objects) { switch (_entityObject.Name) { case "mapPlayerSpawn": { // Run Player Spawn Code Here PlayerSpawnX = Convert.ToInt32(_entityObject.Position.X); PlayerSpawnY = Convert.ToInt32(_entityObject.Position.Y); IsPlayerSpawn = true; break; } case "mapTransition": { // Create Transition Objects float destinationX, destinationY; destinationX = Convert.ToInt32(_entityObject.Properties["mapDestinationX"]); destinationY = Convert.ToInt32(_entityObject.Properties["mapDestinationY"]); MapTransitionHandler mapTransition = new MapTransitionHandler(contentManager, _entityObject.Properties["mapDestination"], new Vector2((float)destinationX, (float)destinationY), new Rectangle((int)_entityObject.Position.X, (int)_entityObject.Position.Y, (int)_entityObject.Size.Width, (int)_entityObject.Size.Height), _entityObject.Properties["mapDestinationArea"], _entityObject.Properties["mapDestinationFacing"]); MapObjects.Add(mapTransition); break; } case "mapEntitySpawn": { // Get AssetManager Data AnimationLibrary _animationLibrary = AssetManager.GetAnimationLibrary(_entityObject.Properties["AnimationLibraryName"]); // Spawn the Entity bool isSolid = Convert.ToBoolean(_entityObject.Properties["IsSolid"]); MapEntityStatic _mapEntity = new MapEntityStatic(isSolid, new Vector2(_entityObject.Position.X, _entityObject.Position.Y), (int)_entityObject.Size.Width, (int)_entityObject.Size.Height, _entityObject.Properties["AnimationLibraryName"]); _mapEntity.ConstructAnimationLibrary(_animationLibrary.Name, _entityObject.Properties["CurrentAnimation"]); Entities.Add(_mapEntity); break; } } } foreach (TiledMapObject _collisionObject in _mapCollisionLayer.Objects) { switch (_collisionObject.Name) { case "solidStatic": { MapCollisionSolidStatic solid = new MapCollisionSolidStatic(_collisionObject.Position, (int)_collisionObject.Size.Width, (int)_collisionObject.Size.Height); CollisionObjects.Add(solid); break; } } } foreach (TiledMapObject _areaDefintion in _mapAreaDefinitionLayer.Objects) { MapAreaDefinition area = new MapAreaDefinition(_areaDefintion.Name, new Vector2((int)_areaDefintion.Position.X, (int)_areaDefintion.Position.Y), new Rectangle((int)_areaDefintion.Position.X, (int)_areaDefintion.Position.Y, (int)_areaDefintion.Size.Width, (int)_areaDefintion.Size.Height)); Areas.Add(area); } }
public override void Update(long elapsedMilliseconds) { var waterPump = MapObjects.Get <WaterPump>()[0]; var treatmentFacilities = MapObjects.Get <TreatmentFacilities>()[0]; var reservoir = MapObjects.Get <Reservoir>()[0]; var conduit = MapObjects.GetAll <Conduit>(); var users = MapObjects.GetAll <User>(); var riverWater = MapObjects.GetAll <RiverWater>(); var cleanWater = MapObjects.GetAll <CleanWater>(); // Проверяем не сломан ли насос if (!waterPump.CheckFailure()) { if (reservoir._volumeOfWaterInTheReservoir < reservoir._minVolumeOfWater && waterFromRiver < reservoir._size - reservoir._volumeOfWaterInTheReservoir - 1000) { var water = new RiverWater(new Coordinate(waterIntakeCoord), MoveValue(waterIntakeCoord, waterPumpCoord, 50)); MapObjects.Add(water); waterFromRiver += rnd.Next(800, 1000); Console.WriteLine($"Перемещение {waterFromRiver} литров воды в резервуары"); } if (riverWater != null) { if (errFlag) { Console.WriteLine("Насос в норме!"); errFlag = false; } foreach (var water in riverWater) { water.Move(); if (water.InPlace(waterPump)) { Console.WriteLine("Насос пройден"); (water._moveX, water._moveY) = MoveValue(waterPumpCoord, treatmentFacilitiesCoord, 200); } if (water.InPlace(treatmentFacilities)) { Console.WriteLine("Система очистки пройдена"); (water._moveX, water._moveY) = MoveValue(treatmentFacilitiesCoord, reservoirCoord, 50); } if (water.InPlace(reservoir)) { reservoir.GetWater(waterFromRiver); waterFromRiver = 0; MapObjects.Remove(water); Console.WriteLine($"В резервуаре {reservoir._volumeOfWaterInTheReservoir} тонн воды"); } } } if (users == null) { return; } { foreach (var user in users) { if (user.flag) { continue; } var waterToUserCoord = user.GetNearestPoint(conduit); var waterToUser = new CleanWater(waterToUserCoord, MoveValue(waterToUserCoord, user.Coordinate, rnd.Next(50, 150))); MapObjects.Add(waterToUser); user.flag = true; } if (cleanWater == null) { return; } foreach (var water in cleanWater) { foreach (var user in users.Where(user => water.InPlace(user))) { reservoir.ToGiveWaterOfUser(rnd.Next(5, 25)); MapObjects.Remove(water); MapObjects.Remove(user); var newUserCoord = GenerateCoordinatesUsers(1); MapObjects.Add(new User(newUserCoord.ElementAt(0))); } water.Move(); } } } else { Console.WriteLine("Насос сломался!"); errFlag = true; waterFromRiver = 0; foreach (var river_water in riverWater) { MapObjects.Remove(river_water); } foreach (var clean_water in cleanWater) { MapObjects.Remove(clean_water); } foreach (var user in users) { user.flag = false; } } }
protected override void Initialize() { var waterIntake = new WaterIntake(waterIntakeCoord); MapObjects.Add(waterIntake); var waterPump = new WaterPump(waterPumpCoord, 0.001); MapObjects.Add(waterPump); var treatmentFacilities = new TreatmentFacilities(treatmentFacilitiesCoord); MapObjects.Add(treatmentFacilities); var reservoir = new Reservoir(reservoirCoord); MapObjects.Add(reservoir); var pipeline = new Pipeline(new [] { waterIntakeCoord, waterPumpCoord, treatmentFacilitiesCoord, reservoirCoord }); MapObjects.Add(pipeline); var polygon = new[] { new Coordinate(_leftX, _downY), new Coordinate(_leftX, _upY), new Coordinate(_rightX, _upY), new Coordinate(_rightX, _downY), new Coordinate(_leftX, _downY), }; MapObjects.Add(new LinearRing(polygon)); var conduit = new List <Conduit> { new Conduit(new [] { reservoirCoord, new Coordinate(4969525, 6245020), new Coordinate(4966267, 6234051), new Coordinate(4963209, 6224114) }), new Conduit(new [] { reservoirCoord, new Coordinate(4969525, 6245020), new Coordinate(4959206, 6230638), new Coordinate(4956179, 6225452), new Coordinate(4951896, 6221262) }), new Conduit(new [] { reservoirCoord, new Coordinate(4968154, 6246190), new Coordinate(4961336, 6236609), new Coordinate(4954702, 6227112), new Coordinate(4949605, 6221690) }), new Conduit(new [] { reservoirCoord, new Coordinate(4967380, 6246826), new Coordinate(4960381, 6237949), new Coordinate(4953807, 6229465), new Coordinate(4948304, 6222447) }), new Conduit(new [] { reservoirCoord, new Coordinate(4961298, 6242650), new Coordinate(4953463, 6232370), new Coordinate(4946403, 6223302) }), new Conduit(new [] { reservoirCoord, new Coordinate(4963582, 6249539), new Coordinate(4957782, 6242077), new Coordinate(4949680, 6231834), new Coordinate(4943335, 6223579) }), new Conduit(new [] { reservoirCoord, new Coordinate(4961002, 6251345), new Coordinate(4955260, 6244752), new Coordinate(4946011, 6234357), new Coordinate(4937526, 6224669) }), new Conduit(new [] { reservoirCoord, new Coordinate(4953884, 6251326), new Coordinate(4946164, 6245670), new Coordinate(4939093, 6240548) }), new Conduit(new [] { new Coordinate(4963209, 6224114), new Coordinate(4951896, 6221262), new Coordinate(4949605, 6221690), new Coordinate(4948304, 6222447), new Coordinate(4946403, 6223302), new Coordinate(4943335, 6223579), new Coordinate(4937526, 6224669), new Coordinate(4939093, 6240548) }) }; foreach (var elem in conduit) { MapObjects.Add(elem); } foreach (var coordinate in GenerateCoordinatesUsers(100)) { MapObjects.Add(new User(coordinate)); } }
public void AddMapObject(MapObject mapObject) { mapObject.Layer = this; MapObjects.Add(mapObject); GEOBounds = GEORect.Union(GEOBounds, mapObject.GEOBounds); }
/// <summary> /// Gets a collection of map objects that have the given parent /// </summary> /// <param name="parent">The parent to find map objects for</param> /// <returns>A collection of map objects with the given parent</returns> public static MapObjects GetMapObjects(long parent) { MapObjects toReturn = new MapObjects(); MapObject temp = null; DataTable dt = null; SqlCommand cmd = new SqlCommand(); string query = "SELECT * FROM [MapObject] WHERE Parent = @Parent"; cmd.CommandType = CommandType.Text; cmd.CommandText = query; cmd.Parameters.Add(new SqlParameter("@Parent", SqlDbType.BigInt)).Value = parent; dt = DatabaseHelper.ExecuteQuery(GetConnectionString(), cmd); if (dt != null && dt.Rows.Count > 0) { foreach (DataRow dr in dt.Rows) { temp = new MapObject(); temp.ID = DatabaseHelper.GetValidValueFromObject(dr["ID"], (long)0); temp.Name = DatabaseHelper.GetValidValueFromObject(dr["Name"], string.Empty); if (dr["Structure"] != DBNull.Value) { temp.TileMap = TileMap.CreateTileMapFromByteArray((byte[])dr["Structure"]); } else { temp.TileMap = null; } toReturn.Add(temp); } } return toReturn; }
public override void Update(long elapsedMilliseconds) { int check = 0; for (int i = 0; i < MapObjects.GetAll <VitalFunctions>().Count; i++) { if (ospa.generate(MapObjects.GetAll <VitalFunctions>()[i]) == -1 && checkGenOspa) { MapObjects.Add(new HumanVirus(new Coordinate(MapObjects.GetAll <VitalFunctions>()[i].X + 1, MapObjects.GetAll <VitalFunctions>()[i].Y + 1), "Оспа", "Airborne", 20, MapObjects.GetAll <VitalFunctions>()[i])); Console.WriteLine("Вирус оспы появился на карте!"); checkGenOspa = false; break; } } for (int i = 0; i < MapObjects.GetAll <VitalFunctions>().Count; i++) { if (animVirus.generate(MapObjects.GetAll <VitalFunctions>()[i]) == -1 && checkGenAnim) { MapObjects.Add(new AnimalVirus(new Coordinate(MapObjects.GetAll <VitalFunctions>()[i].X + 1, MapObjects.GetAll <VitalFunctions>()[i].Y + 1), "Вирус животного", "Airborne", 20, MapObjects.GetAll <VitalFunctions>()[i])); Console.WriteLine("Вирус животного появился на карте!"); checkGenAnim = false; break; } } for (int i = 0; i < MapObjects.GetAll <VitalFunctions>().Count; i++) { if (univ.generate(MapObjects.GetAll <VitalFunctions>()[i]) == -1 && checkGenUniv) { MapObjects.Add(new UniversalVirus(new Coordinate(MapObjects.GetAll <VitalFunctions>()[i].X + 1, MapObjects.GetAll <VitalFunctions>()[i].Y + 1), "Универсальный вирус", "Contact", 20, MapObjects.GetAll <VitalFunctions>()[i])); Console.WriteLine("Универсальный вирус появился на карте!" + MapObjects.GetAll <UniversalVirus>()[0]); checkGenUniv = false; break; } } if (checkGenOspa == false && checkGenAnim == false && checkGenUniv == false) { //пытаться заразить всех оспой foreach (var vir in MapObjects.GetAll <HumanVirus>()) { foreach (var person in MapObjects.GetAll <VitalFunctions>()) { if (vir.name == "Оспа") { if (vir.infect(person) == 2) { MapObjects.Add(new HumanVirus(new Coordinate(person.X + 1, person.Y + 1), "Оспа", "Airborne", 20, person)); Console.WriteLine("Вирус оспы добавлен на карту!"); } } } } //пытаться заразить всех животным вирусом foreach (var vir in MapObjects.GetAll <AnimalVirus>()) { foreach (var person in MapObjects.GetAll <VitalFunctions>()) { if (vir.name == "Вирус животного") { if (vir.infect(person) == 2) { MapObjects.Add(new AnimalVirus(new Coordinate(person.X + 1, person.Y + 1), "Вирус животного", "Airborne", 20, person)); Console.WriteLine("Вирус животного добавлен на карту!"); } } } } //пытаться заразить всех универсальным вирусом foreach (var vir in MapObjects.GetAll <UniversalVirus>()) { foreach (var person in MapObjects.GetAll <VitalFunctions>()) { if (vir.name == "Универсальный вирус") { if (vir.infect(person) == 2) { MapObjects.Add(new UniversalVirus(new Coordinate(person.X + 1, person.Y + 1), "Универсальный вирус", "Contact", 20, person)); Console.WriteLine("Универсальный вирус добавлен на карту!"); } } } } foreach (var person in MapObjects.GetAll <VitalFunctions>()) { if (person.infectionName == "Оспа") { Console.WriteLine("Количество человеческих вирусов на карте: " + MapObjects.GetAll <HumanVirus>().Count); if (person.convalescence(ospa, animVirus, univ, 1) == -1) { Console.WriteLine(person + " вылечился"); foreach (var vir in MapObjects.GetAll <HumanVirus>()) { if (vir.hum == person) { Console.WriteLine("Вирус оспы удален с карты!"); MapObjects.Remove(vir); } } } } else if (person.infectionName == "Вирус животного") { Console.WriteLine("Количество животных вирусов на карте: " + MapObjects.GetAll <AnimalVirus>().Count); if (person.convalescence(ospa, animVirus, univ, 2) == -1) { Console.WriteLine(person + " вылечился"); foreach (var vir in MapObjects.GetAll <AnimalVirus>()) { if (vir.animal == person) { Console.WriteLine("Вирус животного удален с карты!"); MapObjects.Remove(vir); } } } } else if (person.infectionName == "Универсальный вирус") { Console.WriteLine("Количество универсальных вирусов на карте: " + MapObjects.GetAll <UniversalVirus>().Count); if (person.convalescence(ospa, animVirus, univ, 3) == -1) { Console.WriteLine(person + " вылечился"); foreach (var vir in MapObjects.GetAll <UniversalVirus>()) { if (vir.who == person) { Console.WriteLine("Универсальный вирус удален с карты!"); MapObjects.Remove(vir); } } } } int go = person.Move(); //идём в рандомное место if (go == -1) { switch (new Random().Next(0, 4)) { case 0: person.CoordTo = new Coordinate(person.Coord.X + new Random().Next(0, 500), person.Coord.Y + new Random().Next(0, 500)); break; case 1: person.CoordTo = new Coordinate(person.Coord.X + new Random().Next(0, 500), person.Coord.Y - new Random().Next(0, 500)); break; case 2: person.CoordTo = new Coordinate(person.Coord.X - new Random().Next(0, 500), person.Coord.Y + new Random().Next(0, 500)); break; case 3: person.CoordTo = new Coordinate(person.Coord.X - new Random().Next(0, 500), person.Coord.Y - new Random().Next(0, 500)); break; } } } foreach (var vir in MapObjects.GetAll <HumanVirus>()) { vir.changeCoord(); } foreach (var vir in MapObjects.GetAll <AnimalVirus>()) { vir.changeCoord(); } foreach (var vir in MapObjects.GetAll <UniversalVirus>()) { vir.changeCoord(); } foreach (var person in MapObjects.GetAll <VitalFunctions>()) { if (person.infected) { Console.WriteLine(person + " болен " + person.infectionName + " и имеет " + person.health + " здоровья"); } } } for (int i = 0; i < MapObjects.GetAll <VitalFunctions>().Count; i++) { if (!MapObjects.GetAll <VitalFunctions>()[i].infected) { check++; } if (check == 7) { Console.WriteLine("Все вылечились!"); } } }
public override Map Parse() { string oldCwd = Directory.GetCurrentDirectory(); Directory.SetCurrentDirectory(Path.GetDirectoryName(AbsolutePath ?? oldCwd)); OnProgressUpdated(this, new ProgressEventArgs(0, "Cleaning up raw input...")); // FIXME: Only strip leading tabs! Or just tabs not within a key or value? string stripped = Raw .Replace("\r", String.Empty) .Replace("\n", String.Empty) .Replace("\t", String.Empty); // Modern Quake sourceports allow for transparency in textures, // indicated by an open curly brace in the texture name. Any open // curly brace that's actually a delimiter will be followed by an // open parenthesis or one or more whitespace characters. Texture // names will instead have ordinary text characters after the brace. List <string> split = stripped.SplitAndKeepDelimiters( $"{OpenDelimiter} ", $"{OpenDelimiter}(", $"{OpenDelimiter}\"", CloseDelimiter).ToList(); split.RemoveAll(s => s.Trim().Length == 0 || s.Trim() == "\""); // The regex patterns above include capture groups to retain some // delimiters in the output, but they end up in the same item in the // list resulting from Split. This ugly loop fixes that. int item = 0; while (item < split.Count) { if (split[item] == "{(") { split[item] = "{"; split[item + 1] = $"({split[item + 1]}"; item++; } else if (split[item] == "{\"") { split[item] = "{"; split[item + 1] = $"\"{split[item + 1]}"; item++; } else { item++; } } OnProgressUpdated(this, new ProgressEventArgs(25, "Creating map objects...")); int i = 0; while (i < split.Count) { int firstBraceIndex = split.IndexOf("{", i); var block = new QuakeBlock(split, firstBraceIndex, Definitions); MapObjects.Add(new QuakeMapObject(block, Definitions, Textures)); i = firstBraceIndex + block.RawLength; } // First build the final worldspawn. int worldspawnIndex = MapObjects.FindIndex(o => o.Definition.ClassName == "worldspawn"); MapObject worldspawn = MapObjects[worldspawnIndex]; foreach (MapObject mo in AllObjects) { Aabb += mo.Aabb; } FixUp(); Directory.SetCurrentDirectory(oldCwd); return(this); }
protected override void Initialize() { #region создание базовых объектов // (Следует обратить внимание, что все координаты у всех геометрических объектов задаются в сферической проекции Меркатора (EPSG:3857).) // Создание координаты точки в начале координат. var pointCoordinate = new Coordinate(0, 0); // Создание стандартной точки в созданных ранее координатах. point = new Point(pointCoordinate); // Создание координат для линии. var lineCoordinates = new Coordinate[] { point.Coordinate, new Coordinate(0, -2000000), new Coordinate(-3000000, -1500000) }; // Создание стандартной кривой линии по ранее созданным координатам. line = new LineString(lineCoordinates); // Создание координат полигона. var polygonCoordinates = new Coordinate[] { new Coordinate(4000000, 5000000), new Coordinate(6000000, 0), new Coordinate(6000000, 6000000), new Coordinate(4000000, 5000000) }; // Создание стандартного полигона по ранее созданным координатам. polygon = new Polygon(new LinearRing(polygonCoordinates)); #endregion #region создание базовых объектов // Добавление созданных объектов в общий список, доступный всем модулям. Объекты из данного списка отображаются на карте. MapObjects.Add(point); MapObjects.Add(line); MapObjects.Add(polygon); #endregion #region создание кастомного объекта и добавление на карту, модификация полигона заменой точки // Координаты самолёта, сконвертированные из Lat/Lon координат. Примерно в аэропорту "Internacional de Carrasco". var airplaneCoordinate = MathExtensions.LatLonToSpherMerc(-34.831747, -56.020034); // Скорость самолета, опять же, в сферической проекции Меркатора. var airplaneSpeed = 1000; // Создание объекта класса "самолет", реализованного в рамках данного модуля. airplane = new Airplane(airplaneCoordinate, airplaneSpeed); // Добавление самолета в список объектов. MapObjects.Add(airplane); // Заменим одну из точек ранее созданного полигона только что созданным самолетом. polygonCoordinates[2] = airplaneCoordinate; #endregion #region демонстрация получения данных из коллекции MapObjects // Коллекция MapObjects нужна не только для хранения и отображения объектов, но ещё и для удобного доступа к ним. // Попробуем получить все объекты, являющиеся строго точками. var onlyPoints = MapObjects.Get <Point>(); // Будет возвращена точка, созданная в самом начале. // А теперь получим все объекты, являющиеся точками и наследующиеся от точек (а также наследников наследников). var allPoints = MapObjects.GetAll <Point>(); // Будет возвращена точка, созданная в самом начале и самолет. // А теперь получим ВСЕ объекты на карте. var allMapObjects = MapObjects.GetAll <Geometry>(); // Будут возвращены все 4 созданных нами объекта. #endregion }
public override void Update(long elapsedMilliseconds) { controller.changeTemperature(); controller.checkLife(); foreach (Temperature it in controller.tempList) { foreach (Rain rain in new List <Rain>(it.rains)) { if (rain.life <= 0) { MapObjects.Remove(rain); it.rains.Remove(rain); } if (it.temperature < 0) { Ice ice = new Ice(rain.Coordinate); MapObjects.Remove(rain); it.rains.Remove(rain); it.ices.Add(ice); MapObjects.Add(ice); } } foreach (Hail hail in new List <Hail>(it.hails)) { if (hail.life <= 0) { Rain rain = new Rain(hail.Coordinate); MapObjects.Remove(hail); it.hails.Remove(hail); it.rains.Add(rain); MapObjects.Add(rain); } } foreach (Snow snow in new List <Snow>(it.snows)) { if (snow.life <= 0) { Rain rain = new Rain(snow.Coordinate); MapObjects.Remove(snow); it.snows.Remove(snow); it.rains.Add(rain); MapObjects.Add(rain); } } foreach (Ice ice in new List <Ice>(it.ices)) { if (ice.life <= 0) { Rain rain = new Rain(ice.Coordinate); MapObjects.Remove(ice); it.ices.Remove(ice); it.rains.Add(rain); MapObjects.Add(rain); } } } controller.createPrecipitation(); foreach (Temperature it in controller.tempList) { foreach (Hail hail in it.hails) { MapObjects.Add(hail); } foreach (Rain rain in it.rains) { MapObjects.Add(rain); } foreach (Snow snow in it.snows) { MapObjects.Add(snow); } } controller.printData(); }
public void AddMapObject(MapObject mapObject) { mapObject.Layer = this; MapObjects.Add(mapObject); }
protected override void Initialize() { var dataProvider = new Provider[] { new Provider(ConvertorCoordinates.DegressToMeter(new Coordinate(44.55142, 48.75034))), new Provider(ConvertorCoordinates.DegressToMeter(new Coordinate(44.59463, 48.78203))), new Provider(ConvertorCoordinates.DegressToMeter(new Coordinate(44.79315, 48.79053))), new Provider(ConvertorCoordinates.DegressToMeter(new Coordinate(44.54144, 48.72569))), new Provider(ConvertorCoordinates.DegressToMeter(new Coordinate(44.5254, 48.5168))), new Provider(ConvertorCoordinates.DegressToMeter(new Coordinate(42.0385, 45.0538))), new Provider(ConvertorCoordinates.DegressToMeter(new Coordinate(48.0301, 46.3132))), new Provider(ConvertorCoordinates.DegressToMeter(new Coordinate(45.4435, 50.1062))), new Provider(ConvertorCoordinates.DegressToMeter(new Coordinate(43.3556, 47.7146))), new Provider(ConvertorCoordinates.DegressToMeter(new Coordinate(43.1807, 47.6345))), new Provider(ConvertorCoordinates.DegressToMeter(new Coordinate(43.52569, 47.51503))), new Provider(ConvertorCoordinates.DegressToMeter(new Coordinate(42.7437, 47.4024))), new Provider(ConvertorCoordinates.DegressToMeter(new Coordinate(42.02164, 47.54088))), new Provider(ConvertorCoordinates.DegressToMeter(new Coordinate(40.1786, 47.7525))), new Provider(ConvertorCoordinates.DegressToMeter(new Coordinate(39.7137, 47.2061))), new Provider(ConvertorCoordinates.DegressToMeter(new Coordinate(39.6152, 47.1747))), new Provider(ConvertorCoordinates.DegressToMeter(new Coordinate(45.9464, 51.4504))), new Provider(ConvertorCoordinates.DegressToMeter(new Coordinate(39.1443, 51.6197))), }; var dataCustomer = new Customer[] { new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(44.4363, 48.6368))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(44.47366, 48.77174))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(44.53234, 48.76605))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(44.4913, 48.7555))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(44.49195, 48.7584))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(44.47033, 48.72298))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(44.4848, 48.7731))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(44.47683, 48.80866))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(44.47119, 48.82178))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(44.30677, 48.83955))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(44.6329, 48.9311))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(44.381, 48.4392))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(44.11571, 48.13854))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(43.63492, 47.97267))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(43.16902, 47.62197))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(43.163, 47.6264))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(43.14769, 47.63192))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(43.14185, 47.62641))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(43.0996, 47.6374))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(42.4064, 47.1396))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(39.67889, 47.26555))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(39.7664, 47.2811))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(45.4278, 50.1479))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(39.1911, 51.6916))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(39.1503, 51.6982))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(44.47876, 48.72114))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(44.50368, 48.73052))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(44.5972, 48.7057))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(44.79771, 48.77864))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(43.1416, 47.6207))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(37.658, 55.6435))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(35.969, 56.837))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(49.0265, 55.8167))), new Customer(ConvertorCoordinates.DegressToMeter(new Coordinate(43.2668, 47.6309))) }; for (int i = 0; i < dataProvider.Length; i++) { MapObjects.Add(dataProvider[i]); } for (int i = 0; i < dataCustomer.Length; i++) { MapObjects.Add(dataCustomer[i]); } }
public void NewObj(object obj) { MapObjects.Add(new ObjResearch(new Coordinate(rnd.Next(_leftX, _rightX), rnd.Next(_downY, _upY)), rnd.Next(2000, 15000))); }