public async Task MethodWithDelayAsync(int milliseconds) { await Task.Delay(milliseconds); endResearch = true; MapObjects.Remove(objRes); Console.WriteLine("Исследование закончилось 😎😎😎😎"); // ищем ближайщий объект int minIndex = 0; double min = 0; int i = 0; var objOnMap = MapObjects.GetAll <ObjResearch>(); foreach (var minDist in objOnMap) { if (min == 0) { min = TestModule.Distance(submarine, minDist); i++; continue; } if (min > TestModule.Distance(submarine, minDist)) { min = TestModule.Distance(submarine, minDist); minIndex = i; } i++; } objRes = objOnMap[minIndex]; }
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 RemoveMapUnit(IGameMapObject mapObject) { if (MapObjects.Contains(mapObject)) { MapObjects.Remove(mapObject); mapObject.WorldPosition = new Vector3(-100, -100, -100); } }
public void RemoveMapObject(BaseMapObject obj) { MapObjects.Remove(obj); if (obj is IInteractable interactable) { Interactables.Remove(interactable); } if (obj is User user) { Users.Remove(user); } }
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); }
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; } } }
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 RemoveMapObject(MapObject mapObject) { MapObjects.Remove(mapObject); }
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 void RemoveAirplane(Airplane obj) { MapObjects.Remove(obj); }