private Waypoint GenerateObjectiveWaypoint(MissionTemplateObjectiveRecord objectiveTemplate, Coordinates objectiveCoordinates, string objectiveName, MissionTemplateRecord template, bool scriptIgnore = false) { var AirOnGroundBehaviorLocations = new List <DBEntryObjectiveTargetBehaviorLocation> { DBEntryObjectiveTargetBehaviorLocation.SpawnOnAirbaseParking, DBEntryObjectiveTargetBehaviorLocation.SpawnOnAirbaseParkingNoHardenedShelter }; var targetDB = Database.Instance.GetEntry <DBEntryObjectiveTarget>(objectiveTemplate.Target); var targetBehaviorLocation = Database.Instance.GetEntry <DBEntryObjectiveTargetBehavior>(objectiveTemplate.TargetBehavior).Location; if (targetDB == null) { throw new BriefingRoomException($"Target \"{targetDB.UIDisplayName}\" not found for objective."); } Coordinates waypointCoordinates = objectiveCoordinates; bool onGround = !targetDB.UnitCategory.IsAircraft() || AirOnGroundBehaviorLocations.Contains(targetBehaviorLocation); // Ground targets = waypoint on the ground var taskDB = Database.Instance.GetEntry <DBEntryObjectiveTask>(objectiveTemplate.Task); if (objectiveTemplate.Options.Contains(ObjectiveOption.InaccurateWaypoint) && !TRANSPORT_TASKS.Contains(taskDB.ID)) { waypointCoordinates += Coordinates.CreateRandom(3.0, 6.0) * Toolbox.NM_TO_METERS; if (template.OptionsMission.Contains("MarkWaypoints")) { DrawingMaker.AddDrawing($"Target Zone {objectiveName}", DrawingType.Circle, waypointCoordinates, "Radius".ToKeyValuePair(6.0 * Toolbox.NM_TO_METERS)); } } else if (TRANSPORT_TASKS.Contains(taskDB.ID)) { DrawingMaker.AddDrawing($"Target Zone {objectiveName}", DrawingType.Circle, waypointCoordinates, "Radius".ToKeyValuePair(500)); } return(new Waypoint(objectiveName, waypointCoordinates, onGround, scriptIgnore)); }
internal static void GenerateObjectiveWPCoordinatesLua(MissionTemplateRecord template, DCSMission mission, List <Waypoint> waypoints, DrawingMaker DrawingMaker) { var scriptWaypoints = waypoints.Where(x => !x.ScriptIgnore).ToList(); for (int i = 0; i < scriptWaypoints.Count; i++) { mission.AppendValue("ScriptObjectives", $"briefingRoom.mission.objectives[{i + 1}].waypoint = {scriptWaypoints[i].Coordinates.ToLuaTable()}\n"); } if (template.OptionsMission.Contains("MarkWaypoints")) { foreach (var waypoint in waypoints) { DrawingMaker.AddDrawing(waypoint.Name, DrawingType.TextBox, waypoint.Coordinates, "Text".ToKeyValuePair(waypoint.Name)); } } }