public static List <MissionSpot> GetMissionSpotsFromUnitsOnZone(IZone zone, bool collectFindRadius = false) { var spots = new List <MissionSpot>(); var fieldTerminals = zone.Units.Where(u => u is FieldTerminal).ToList(); foreach (var fieldTerminal in fieldTerminals) { var ms = new MissionSpot(MissionSpotType.fieldterminal, fieldTerminal.CurrentPosition, zone.Id); spots.Add(ms); } var missionStructures = zone.Units.Where(u => u is MissionStructure).Cast <MissionStructure>().ToList(); foreach (var missionStructure in missionStructures) { MissionSpotType spotType; switch (missionStructure.TargetType) { case MissionTargetType.use_itemsupply: spotType = MissionSpotType.itemsupply; break; case MissionTargetType.submit_item: spotType = MissionSpotType.kiosk; break; default: spotType = MissionSpotType.mswitch; break; } var ms = new MissionSpot(spotType, missionStructure.CurrentPosition, zone.Id); if (collectFindRadius) { var missionTarget = _missionDataCache.GetTargetByStructureUnit(missionStructure); ms.SetFindRadius(missionTarget.FindRadius); } spots.Add(ms); } return(spots); }
public static List <MissionSpot> GetRandomPointSpotsFromTargets(ZoneConfiguration zoneConfig, bool collectFindRadius = false) { var pointTargets = _missionDataCache.GetAllMissionTargets.Where(t => t.Type == MissionTargetType.rnd_point && t.ZoneId == zoneConfig.Id).ToList(); var result = new List <MissionSpot>(pointTargets.Count); foreach (var missionTarget in pointTargets) { var ms = new MissionSpot(MissionSpotType.randompoint, missionTarget.targetPosition, zoneConfig.Id); if (collectFindRadius) { ms.SetFindRadius(missionTarget.FindRadius); } result.Add(ms); } return(result); }