Implemented a WayPoints functionality for GROUPS

WayPoints can be modified on a GROUP.
A function hook is called whenever a group moves over a waypoint.
This commit is contained in:
FlightControl
2016-04-12 14:32:40 +02:00
parent d6d6f40760
commit 6232c9a67c
68 changed files with 16573 additions and 423 deletions

View File

@@ -23,6 +23,7 @@
<li><a href="Client.html">Client</a></li>
<li><a href="DCSAirbase.html">DCSAirbase</a></li>
<li><a href="DCSCoalitionObject.html">DCSCoalitionObject</a></li>
<li><a href="DCSCommand.html">DCSCommand</a></li>
<li><a href="DCSController.html">DCSController</a></li>
<li><a href="DCSGroup.html">DCSGroup</a></li>
<li><a href="DCSObject.html">DCSObject</a></li>
@@ -64,7 +65,81 @@
<p>Taking the lead of AI escorting your flight.</p>
<p>The ESCORT class allows you to interact with escoring AI on your flight and take the lead.</p>
<p>The ESCORT class allows you to interact with escorting AI on your flight and take the lead.
Each escorting group can be commanded with a whole set of radio commands (radio menu in your flight, and then F10).</p>
<p>The radio commands will vary according the category of the group. The richest set of commands are with Helicopters and AirPlanes.
Ships and Ground troops will have a more limited set, but they can provide support through the bombing of targets designated by the other escorts.</p>
<p>Find a summary below of the current available commands:</p>
<p><strong>1. Navigation ...:</strong> Escort group navigation functions:</p>
<ul>
<li><strong>"Hold Position and Stay Low":</strong> Stops the escort group and they will hover 30 meters above the ground at the position they stopped.</li>
<li><strong>"Join-Up and Hold Position NearBy":</strong> The escort group will stop nearby you, and then the group will hover.</li>
<li><strong>"Join-Up and Follow at 100":</strong> The escort group fill follow you at about 100 meters, and they will follow you.</li>
<li><strong>"Join-Up and Follow at 200":</strong> The escort group fill follow you at about 200 meters, and they will follow you.</li>
<li><strong>"Join-Up and Follow at 400":</strong> The escort group fill follow you at about 400 meters, and they will follow you.</li>
<li><strong>"Join-Up and Follow at 800":</strong> The escort group fill follow you at about 800 meters, and they will follow you.</li>
<li><strong>"Flare":</strong> Provides menu commands to let the escort group shoot a flare in the air in a color.</li>
<li><strong>"Smoke":</strong> Provides menu commands to let the escort group smoke the air in a color. Note that smoking is only available for ground and naval troops.</li>
</ul>
<p><strong>2. Report targets ...:</strong> Report targets will make the escort group to report any target that it identifies within a 8km range. Any detected target can be attacked using the 4. Attack nearby targets function. (see below).</p>
<ul>
<li><strong>"Report now":</strong> Will report the current detected targets.</li>
<li><strong>"Report targets on":</strong> Will make the escort group to report detected targets and will fill the "Attack nearby targets" menu list.</li>
<li><strong>"Report targets off":</strong> Will stop detecting targets.</li>
</ul>
<p><strong>3. Scan targets ...:</strong> Menu items to pop-up the escort group for target scanning. After scanning, the escort group will resume with the mission or defined task.</p>
<ul>
<li><strong>"Scan targets 30 seconds":</strong> Scan 30 seconds for targets.</li>
<li><strong>"Scan targets 60 seconds":</strong> Scan 60 seconds for targets.</li>
</ul>
<p><strong>4. Attack targets ...:</strong> This menu item will list all detected targets within a 15km range. Depending on the level of detection (known/unknown) and visuality, the targets type will also be listed.</p>
<p><strong>5. Request assistance from ...:</strong> This menu item will list all detected targets within a 15km range, as with the menu item <strong>Attack Targets</strong>.
This menu item allows to request attack support from other escorts supporting the current client group.
eg. the function allows a player to request support from the Ship escort to attack a target identified by the Plane escort with its Tomahawk missiles.
eg. the function allows a player to request support from other Planes escorting to bomb the unit with illumination missiles or bombs, so that the main plane escort can attack the area.</p>
<p><strong>6. ROE ...:</strong> Defines the Rules of Engagement of the escort group when in flight.</p>
<ul>
<li><strong>"Hold Fire":</strong> The escort group will hold fire.</li>
<li><strong>"Return Fire":</strong> The escort group will return fire.</li>
<li><strong>"Open Fire":</strong> The escort group will open fire on designated targets.</li>
<li><strong>"Weapon Free":</strong> The escort group will engage with any target.</li>
</ul>
<p><strong>7. Evasion ...:</strong> Will define the evasion techniques that the escort group will perform during flight or combat.</p>
<ul>
<li><strong>"Fight until death":</strong> The escort group will have no reaction to threats.</li>
<li><strong>"Use flares, chaff and jammers":</strong> The escort group will use passive defense using flares and jammers. No evasive manoeuvres are executed.</li>
<li><strong>"Evade enemy fire":</strong> The rescort group will evade enemy fire before firing.</li>
<li><strong>"Go below radar and evade fire":</strong> The escort group will perform evasive vertical manoeuvres.</li>
</ul>
<p><strong>8. Resume Mission ...:</strong> Escort groups can have their own mission. This menu item will allow the escort group to resume their Mission from a given waypoint.
Note that this is really fantastic, as you now have the dynamic of taking control of the escort groups, and allowing them to resume their path or mission.</p>
<p><strong>9. Abort Current Task:</strong> Cancel the current task and rejoin formation.</p>
<ol>
<li><h2>ESCORT object construction methods.</h2>
<p>Create a new SPAWN object with the <a href="##(ESCORT).New">ESCORT.New</a> method:</p></li>
<li><p><a href="##(ESCORT).New">ESCORT.New</a>: Creates a new ESCORT object from a <a href="Group.html##(GROUP)">Group#GROUP</a> for a <a href="Client.html##(CLIENT)">Client#CLIENT</a>, with an optional briefing text.</p></li>
<li><h2>ESCORT object initialization methods.</h2>
<p>None.</p></li>
</ol>
<h2>Global(s)</h2>
<table class="function_list">
@@ -93,6 +168,12 @@
<td class="name" nowrap="nowrap"><a href="##(ESCORT).EscortGroup">ESCORT.EscortGroup</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT).EscortMenuResumeMission">ESCORT.EscortMenuResumeMission</a></td>
<td class="summary">
</td>
</tr>
<tr>
@@ -108,7 +189,13 @@
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT).New">ESCORT:New(EscortClient, EscortGroup, EscortName)</a></td>
<td class="name" nowrap="nowrap"><a href="##(ESCORT).JoinUpAndFollow">ESCORT:JoinUpAndFollow(EscortGroup, EscortClient, Distance)</a></td>
<td class="summary">
<p>JoinsUp and Follows a CLIENT.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT).New">ESCORT:New(EscortClient, EscortGroup, EscortName, EscortBriefing)</a></td>
<td class="summary">
<p>ESCORT class constructor for an AI group</p>
</td>
@@ -128,25 +215,49 @@
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT).RegisterRoute">ESCORT:RegisterRoute()</a></td>
<td class="summary">
<p>Registers the waypoints</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT).ReportTargets">ESCORT.ReportTargets</a></td>
<td class="summary">
<p>If true, nearby targets are reported.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT).ReportTargetsScheduler">ESCORT.ReportTargetsScheduler</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT).Targets">ESCORT.Targets</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT).TaskPoints">ESCORT.TaskPoints</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._AssistTarget">ESCORT._AssistTarget(MenuParam)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._AttackTarget">ESCORT._AttackTarget(MenuParam)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._Flare">ESCORT._Flare(MenuParam)</a></td>
<td class="summary">
</td>
</tr>
<tr>
@@ -174,55 +285,19 @@
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._OptionROTEvadeFire">ESCORT._OptionROTEvadeFire(MenuParam)</a></td>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._ROE">ESCORT._ROE(MenuParam)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._OptionROTNoReaction">ESCORT._OptionROTNoReaction(MenuParam)</a></td>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._ROT">ESCORT._ROT(MenuParam)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._OptionROTPassiveDefense">ESCORT._OptionROTPassiveDefense(MenuParam)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._OptionROTVertical">ESCORT._OptionROTVertical(MenuParam)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._ROEHoldFire">ESCORT._ROEHoldFire(MenuParam)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._ROEOpenFire">ESCORT._ROEOpenFire(MenuParam)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._ROEReturnFire">ESCORT._ROEReturnFire(MenuParam)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._ROEWeaponFree">ESCORT._ROEWeaponFree(MenuParam)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._ReportNearbyTargets">ESCORT._ReportNearbyTargets(MenuParam)</a></td>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._ReportNearbyTargetsNow">ESCORT._ReportNearbyTargetsNow(MenuParam)</a></td>
<td class="summary">
</td>
@@ -230,7 +305,7 @@
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._ReportTargetsScheduler">ESCORT:_ReportTargetsScheduler()</a></td>
<td class="summary">
<p>Report Targets Scheduler.</p>
</td>
</tr>
<tr>
@@ -240,13 +315,19 @@
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._ScanTargets30Seconds">ESCORT._ScanTargets30Seconds(MenuParam)</a></td>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._ScanTargets">ESCORT._ScanTargets(MenuParam)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._ScanTargets60Seconds">ESCORT._ScanTargets60Seconds(MenuParam)</a></td>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._Smoke">ESCORT._Smoke(MenuParam)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ESCORT)._SwitchReportNearbyTargets">ESCORT._SwitchReportNearbyTargets(MenuParam)</a></td>
<td class="summary">
</td>
@@ -259,6 +340,18 @@
<td class="name" nowrap="nowrap"><a href="##(MENUPARAM).ParamDistance">MENUPARAM.ParamDistance</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(MENUPARAM).ParamFunction">MENUPARAM.ParamFunction</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(MENUPARAM).ParamMessage">MENUPARAM.ParamMessage</a></td>
<td class="summary">
</td>
</tr>
<tr>
@@ -333,6 +426,20 @@
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Menu.html##(MENU_CLIENT)">Menu#MENU_CLIENT</a></em>
<a id="#(ESCORT).EscortMenuResumeMission" >
<strong>ESCORT.EscortMenuResumeMission</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
@@ -366,8 +473,39 @@
<dl class="function">
<dt>
<a id="#(ESCORT).JoinUpAndFollow" >
<strong>ESCORT:JoinUpAndFollow(EscortGroup, EscortClient, Distance)</strong>
</a>
</dt>
<dd>
<p>JoinsUp and Follows a CLIENT.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Group.html##(GROUP)">Group#GROUP</a> EscortGroup </em></code>: </p>
</li>
<li>
<p><code><em><a href="Client.html##(CLIENT)">Client#CLIENT</a> EscortClient </em></code>: </p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Distance)">DCSTypes#Distance</a> Distance </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ESCORT).New" >
<strong>ESCORT:New(EscortClient, EscortGroup, EscortName)</strong>
<strong>ESCORT:New(EscortClient, EscortGroup, EscortName, EscortBriefing)</strong>
</a>
</dt>
<dd>
@@ -393,6 +531,11 @@ The group AI escorting the EscortClient.</p>
<p><code><em>#string EscortName </em></code>:
Name of the escort.</p>
</li>
<li>
<p><code><em> EscortBriefing </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
@@ -439,6 +582,11 @@ self</p>
</dt>
<dd>
<p>Registers the waypoints</p>
<h3>Return value</h3>
<p><em>#table:</em></p>
</dd>
@@ -455,6 +603,19 @@ self</p>
<p>If true, nearby targets are reported.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ESCORT).ReportTargetsScheduler" >
<strong>ESCORT.ReportTargetsScheduler</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
@@ -469,6 +630,41 @@ self</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(ESCORT).TaskPoints" >
<strong>ESCORT.TaskPoints</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ESCORT)._AssistTarget" >
<strong>ESCORT._AssistTarget(MenuParam)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="##(MENUPARAM)">#MENUPARAM</a> MenuParam </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
@@ -482,6 +678,27 @@ self</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="##(MENUPARAM)">#MENUPARAM</a> MenuParam </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ESCORT)._Flare" >
<strong>ESCORT._Flare(MenuParam)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
@@ -579,8 +796,8 @@ self</p>
<dl class="function">
<dt>
<a id="#(ESCORT)._OptionROTEvadeFire" >
<strong>ESCORT._OptionROTEvadeFire(MenuParam)</strong>
<a id="#(ESCORT)._ROE" >
<strong>ESCORT._ROE(MenuParam)</strong>
</a>
</dt>
<dd>
@@ -600,8 +817,8 @@ self</p>
<dl class="function">
<dt>
<a id="#(ESCORT)._OptionROTNoReaction" >
<strong>ESCORT._OptionROTNoReaction(MenuParam)</strong>
<a id="#(ESCORT)._ROT" >
<strong>ESCORT._ROT(MenuParam)</strong>
</a>
</dt>
<dd>
@@ -621,8 +838,8 @@ self</p>
<dl class="function">
<dt>
<a id="#(ESCORT)._OptionROTPassiveDefense" >
<strong>ESCORT._OptionROTPassiveDefense(MenuParam)</strong>
<a id="#(ESCORT)._ReportNearbyTargetsNow" >
<strong>ESCORT._ReportNearbyTargetsNow(MenuParam)</strong>
</a>
</dt>
<dd>
@@ -642,139 +859,13 @@ self</p>
<dl class="function">
<dt>
<a id="#(ESCORT)._OptionROTVertical" >
<strong>ESCORT._OptionROTVertical(MenuParam)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="##(MENUPARAM)">#MENUPARAM</a> MenuParam </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ESCORT)._ROEHoldFire" >
<strong>ESCORT._ROEHoldFire(MenuParam)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="##(MENUPARAM)">#MENUPARAM</a> MenuParam </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ESCORT)._ROEOpenFire" >
<strong>ESCORT._ROEOpenFire(MenuParam)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="##(MENUPARAM)">#MENUPARAM</a> MenuParam </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ESCORT)._ROEReturnFire" >
<strong>ESCORT._ROEReturnFire(MenuParam)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="##(MENUPARAM)">#MENUPARAM</a> MenuParam </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ESCORT)._ROEWeaponFree" >
<strong>ESCORT._ROEWeaponFree(MenuParam)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="##(MENUPARAM)">#MENUPARAM</a> MenuParam </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ESCORT)._ReportNearbyTargets" >
<strong>ESCORT._ReportNearbyTargets(MenuParam)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> MenuParam </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ESCORT)._ReportTargetsScheduler" >
<strong>ESCORT:_ReportTargetsScheduler()</strong>
</a>
</dt>
<dd>
<p>Report Targets Scheduler.</p>
</dd>
</dl>
@@ -802,8 +893,8 @@ self</p>
<dl class="function">
<dt>
<a id="#(ESCORT)._ScanTargets30Seconds" >
<strong>ESCORT._ScanTargets30Seconds(MenuParam)</strong>
<a id="#(ESCORT)._ScanTargets" >
<strong>ESCORT._ScanTargets(MenuParam)</strong>
</a>
</dt>
<dd>
@@ -823,8 +914,8 @@ self</p>
<dl class="function">
<dt>
<a id="#(ESCORT)._ScanTargets60Seconds" >
<strong>ESCORT._ScanTargets60Seconds(MenuParam)</strong>
<a id="#(ESCORT)._Smoke" >
<strong>ESCORT._Smoke(MenuParam)</strong>
</a>
</dt>
<dd>
@@ -840,6 +931,27 @@ self</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ESCORT)._SwitchReportNearbyTargets" >
<strong>ESCORT._SwitchReportNearbyTargets(MenuParam)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> MenuParam </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<h2><a id="#(MENUPARAM)" >Type <code>MENUPARAM</code></a></h2>
@@ -859,6 +971,34 @@ self</p>
</dd>
</dl>
<dl class="function">
<dt>
<em>#function</em>
<a id="#(MENUPARAM).ParamFunction" >
<strong>MENUPARAM.ParamFunction</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(MENUPARAM).ParamMessage" >
<strong>MENUPARAM.ParamMessage</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">