Merge remote-tracking branch 'refs/remotes/origin/master' into Moose-Release

This commit is contained in:
FlightControl 2016-12-19 10:48:10 +01:00
commit 74bbd59dde
82 changed files with 534 additions and 10168 deletions

View File

@ -1,594 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<link rel="stylesheet" href="stylesheet.css" type="text/css"/>
</head>
<body>
<div id="container">
<div id="product">
<div id="product_logo"></div>
<div id="product_name"><big><b></b></big></div>
<div id="product_description"></div>
</div>
<div id="main">
<div id="navigation">
<h2>Modules</h2>
<ul><li>
<a href="index.html">index</a>
</li></ul>
<ul>
<li>AIBalancer</li>
<li><a href="Account.html">Account</a></li>
<li><a href="Airbase.html">Airbase</a></li>
<li><a href="AirbasePolice.html">AirbasePolice</a></li>
<li><a href="Assign.html">Assign</a></li>
<li><a href="Base.html">Base</a></li>
<li><a href="Cargo.html">Cargo</a></li>
<li><a href="CleanUp.html">CleanUp</a></li>
<li><a href="Client.html">Client</a></li>
<li><a href="Controllable.html">Controllable</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>
<li><a href="DCSTask.html">DCSTask</a></li>
<li><a href="DCSTypes.html">DCSTypes</a></li>
<li><a href="DCSUnit.html">DCSUnit</a></li>
<li><a href="DCSWorld.html">DCSWorld</a></li>
<li><a href="DCScountry.html">DCScountry</a></li>
<li><a href="DCStimer.html">DCStimer</a></li>
<li><a href="DCStrigger.html">DCStrigger</a></li>
<li><a href="Database.html">Database</a></li>
<li><a href="Detection.html">Detection</a></li>
<li><a href="DetectionManager.html">DetectionManager</a></li>
<li><a href="Escort.html">Escort</a></li>
<li><a href="Event.html">Event</a></li>
<li><a href="Group.html">Group</a></li>
<li><a href="Identifiable.html">Identifiable</a></li>
<li><a href="MOVEMENT.html">MOVEMENT</a></li>
<li><a href="Menu.html">Menu</a></li>
<li><a href="Message.html">Message</a></li>
<li><a href="MissileTrainer.html">MissileTrainer</a></li>
<li><a href="Mission.html">Mission</a></li>
<li><a href="Object.html">Object</a></li>
<li><a href="Patrol.html">Patrol</a></li>
<li><a href="Point.html">Point</a></li>
<li><a href="Positionable.html">Positionable</a></li>
<li><a href="Process.html">Process</a></li>
<li><a href="Process_JTAC.html">Process_JTAC</a></li>
<li><a href="Process_Pickup.html">Process_Pickup</a></li>
<li><a href="Process_Smoke.html">Process_Smoke</a></li>
<li><a href="Route.html">Route</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
<li><a href="Scoring.html">Scoring</a></li>
<li><a href="Sead.html">Sead</a></li>
<li><a href="Set.html">Set</a></li>
<li><a href="Spawn.html">Spawn</a></li>
<li><a href="StateMachine.html">StateMachine</a></li>
<li><a href="Static.html">Static</a></li>
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
<li><a href="Zone.html">Zone</a></li>
<li><a href="env.html">env</a></li>
<li><a href="land.html">land</a></li>
</ul>
</div>
<div id="content">
<h1>Module <code>AIBalancer</code></h1>
<p>This module contains the AIBALANCER class.</p>
<hr/>
<h1>1) <a href="AIBalancer.html##(AIBALANCER)">AIBalancer#AIBALANCER</a> class, extends <a href="Base.html##(BASE)">Base#BASE</a></h1>
<p>The <a href="AIBalancer.html##(AIBALANCER)">AIBalancer#AIBALANCER</a> class controls the dynamic spawning of AI GROUPS depending on a SET<em>CLIENT.
There will be as many AI GROUPS spawned as there at CLIENTS in SET</em>CLIENT not spawned.
The AIBalancer uses the <a href="PatrolZone.html##(PATROLZONE)">PatrolZone#PATROLZONE</a> class to make AI patrol an zone until the fuel treshold is reached.</p>
<h2>1.1) AIBALANCER construction method:</h2>
<p>Create a new AIBALANCER object with the <a href="##(AIBALANCER).New">AIBALANCER.New</a> method:</p>
<ul>
<li><a href="##(AIBALANCER).New">AIBALANCER.New</a>: Creates a new AIBALANCER object.</li>
</ul>
<h2>1.2) AIBALANCER returns AI to Airbases:</h2>
<p>You can configure to have the AI to return to:</p>
<ul>
<li><a href="##(AIBALANCER).ReturnToHomeAirbase">AIBALANCER.ReturnToHomeAirbase</a>: Returns the AI to the home <a href="Airbase.html##(AIRBASE)">Airbase#AIRBASE</a>.</li>
<li><a href="##(AIBALANCER).ReturnToNearestAirbases">AIBALANCER.ReturnToNearestAirbases</a>: Returns the AI to the nearest friendly <a href="Airbase.html##(AIRBASE)">Airbase#AIRBASE</a>.</li>
</ul>
<h2>1.3) AIBALANCER allows AI to patrol specific zones:</h2>
<p>Use <a href="AIBalancer.html##(AIBALANCER).SetPatrolZone">AIBalancer#AIBALANCER.SetPatrolZone</a>() to specify a zone where the AI needs to patrol.</p>
<hr/>
<h1><strong>API CHANGE HISTORY</strong></h1>
<p>The underlying change log documents the API changes. Please read this carefully. The following notation is used:</p>
<ul>
<li><strong>Added</strong> parts are expressed in bold type face.</li>
<li><em>Removed</em> parts are expressed in italic type face.</li>
</ul>
<p>Hereby the change log:</p>
<p>2016-08-17: SPAWN:<strong>InitCleanUp</strong>( SpawnCleanUpInterval ) replaces SPAWN:<em>CleanUp</em>( SpawnCleanUpInterval )</p>
<ul>
<li>Want to ensure that the methods starting with <strong>Init</strong> are the first called methods before any <em>Spawn</em> method is called!</li>
<li>This notation makes it now more clear which methods are initialization methods and which methods are Spawn enablement methods.</li>
</ul>
<hr/>
<h1>AUTHORS and CONTRIBUTIONS</h1>
<h3>Contributions:</h3>
<ul>
<li><p><strong>Dutch_Baron (James)</strong>: Who you can search on the Eagle Dynamics Forums. <br/>
Working together with James has resulted in the creation of the AIBALANCER class. <br/>
James has shared his ideas on balancing AI with air units, and together we made a first design which you can use now :-)</p></li>
<li><p><strong>SNAFU</strong>:
Had a couple of mails with the guys to validate, if the same concept in the GCI/CAP script could be reworked within MOOSE.
None of the script code has been used however within the new AIBALANCER moose class.</p></li>
</ul>
<h3>Authors:</h3>
<ul>
<li>FlightControl: Framework Design &amp; Programming</li>
</ul>
<h2>Global(s)</h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="#AIBALANCER">AIBALANCER</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2><a id="#(AIBALANCER)">Type <code>AIBALANCER</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(AIBALANCER).AIGroups">AIBALANCER.AIGroups</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AIBALANCER).ClassName">AIBALANCER.ClassName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AIBALANCER).GetPatrolZone">AIBALANCER:GetPatrolZone()</a></td>
<td class="summary">
<p>Get the <a href="PatrolZone.html">PatrolZone</a> object assigned by the <a href="AIBalancer.html">AIBalancer</a> object.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AIBALANCER).New">AIBALANCER:New(SetClient, SpawnAI)</a></td>
<td class="summary">
<p>Creates a new AIBALANCER object, building a set of units belonging to a coalitions, categories, countries, types or with defined prefix names.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AIBALANCER).PatrolZone">AIBALANCER.PatrolZone</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AIBALANCER).PatrolZones">AIBALANCER.PatrolZones</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AIBALANCER).ReturnAirbaseSet">AIBALANCER.ReturnAirbaseSet</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AIBALANCER).ReturnToHomeAirbase">AIBALANCER:ReturnToHomeAirbase(ReturnTresholdRange)</a></td>
<td class="summary">
<p>Returns the AI to the home <a href="Airbase.html##(AIRBASE)">Airbase#AIRBASE</a>.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AIBALANCER).ReturnToNearestAirbases">AIBALANCER:ReturnToNearestAirbases(ReturnTresholdRange, ReturnAirbaseSet)</a></td>
<td class="summary">
<p>Returns the AI to the nearest friendly <a href="Airbase.html##(AIRBASE)">Airbase#AIRBASE</a>.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AIBALANCER).ReturnTresholdRange">AIBALANCER.ReturnTresholdRange</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AIBALANCER).SetClient">AIBALANCER.SetClient</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AIBALANCER).SetPatrolZone">AIBALANCER:SetPatrolZone(PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed)</a></td>
<td class="summary">
<p>Let the AI patrol a <a href="Zone.html">Zone</a> with a given Speed range and Altitude range.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AIBALANCER).SpawnAI">AIBALANCER.SpawnAI</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AIBALANCER).ToHomeAirbase">AIBALANCER.ToHomeAirbase</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AIBALANCER).ToNearestAirbase">AIBALANCER.ToNearestAirbase</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AIBALANCER)._ClientAliveMonitorScheduler">AIBALANCER:_ClientAliveMonitorScheduler()</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2>Global(s)</h2>
<dl class="function">
<dt>
<em><a href="##(AIBALANCER)">#AIBALANCER</a></em>
<a id="AIBALANCER" >
<strong>AIBALANCER</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<h2><a id="#(AIBalancer)" >Type <code>AIBalancer</code></a></h2>
<h2><a id="#(AIBALANCER)" >Type <code>AIBALANCER</code></a></h2>
<p>AIBALANCER class</p>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em></em>
<a id="#(AIBALANCER).AIGroups" >
<strong>AIBALANCER.AIGroups</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(AIBALANCER).ClassName" >
<strong>AIBALANCER.ClassName</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AIBALANCER).GetPatrolZone" >
<strong>AIBALANCER:GetPatrolZone()</strong>
</a>
</dt>
<dd>
<p>Get the <a href="PatrolZone.html">PatrolZone</a> object assigned by the <a href="AIBalancer.html">AIBalancer</a> object.</p>
<h3>Return value</h3>
<p><em><a href="PatrolZone.html##(PATROLZONE)">PatrolZone#PATROLZONE</a>:</em>
PatrolZone The <a href="PatrolZone.html">PatrolZone</a> where the AI needs to patrol.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AIBALANCER).New" >
<strong>AIBALANCER:New(SetClient, SpawnAI)</strong>
</a>
</dt>
<dd>
<p>Creates a new AIBALANCER object, building a set of units belonging to a coalitions, categories, countries, types or with defined prefix names.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em> SetClient </em></code>:
A SET_CLIENT object that will contain the CLIENT objects to be monitored if they are alive or not (joined by a player).</p>
</li>
<li>
<p><code><em> SpawnAI </em></code>:
A SPAWN object that will spawn the AI units required, balancing the SetClient.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(AIBALANCER)">#AIBALANCER</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="PatrolZone.html##(PATROLZONE)">PatrolZone#PATROLZONE</a></em>
<a id="#(AIBALANCER).PatrolZone" >
<strong>AIBALANCER.PatrolZone</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(AIBALANCER).PatrolZones" >
<strong>AIBALANCER.PatrolZones</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Set.html##(SET_AIRBASE)">Set#SET_AIRBASE</a></em>
<a id="#(AIBALANCER).ReturnAirbaseSet" >
<strong>AIBALANCER.ReturnAirbaseSet</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AIBALANCER).ReturnToHomeAirbase" >
<strong>AIBALANCER:ReturnToHomeAirbase(ReturnTresholdRange)</strong>
</a>
</dt>
<dd>
<p>Returns the AI to the home <a href="Airbase.html##(AIRBASE)">Airbase#AIRBASE</a>.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="DCSTypes.html##(Distance)">DCSTypes#Distance</a> ReturnTresholdRange </em></code>:
If there is an enemy <a href="Client.html##(CLIENT)">Client#CLIENT</a> within the ReturnTresholdRange given in meters, the AI will not return to the nearest <a href="Airbase.html##(AIRBASE)">Airbase#AIRBASE</a>.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AIBALANCER).ReturnToNearestAirbases" >
<strong>AIBALANCER:ReturnToNearestAirbases(ReturnTresholdRange, ReturnAirbaseSet)</strong>
</a>
</dt>
<dd>
<p>Returns the AI to the nearest friendly <a href="Airbase.html##(AIRBASE)">Airbase#AIRBASE</a>.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="DCSTypes.html##(Distance)">DCSTypes#Distance</a> ReturnTresholdRange </em></code>:
If there is an enemy <a href="Client.html##(CLIENT)">Client#CLIENT</a> within the ReturnTresholdRange given in meters, the AI will not return to the nearest <a href="Airbase.html##(AIRBASE)">Airbase#AIRBASE</a>.</p>
</li>
<li>
<p><code><em><a href="Set.html##(SET_AIRBASE)">Set#SET_AIRBASE</a> ReturnAirbaseSet </em></code>:
The SET of <a href="Set.html##(SET_AIRBASE)">Set#SET_AIRBASE</a>s to evaluate where to return to.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Distance)">DCSTypes#Distance</a></em>
<a id="#(AIBALANCER).ReturnTresholdRange" >
<strong>AIBALANCER.ReturnTresholdRange</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Set.html##(SET_CLIENT)">Set#SET_CLIENT</a></em>
<a id="#(AIBALANCER).SetClient" >
<strong>AIBALANCER.SetClient</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AIBALANCER).SetPatrolZone" >
<strong>AIBALANCER:SetPatrolZone(PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed)</strong>
</a>
</dt>
<dd>
<p>Let the AI patrol a <a href="Zone.html">Zone</a> with a given Speed range and Altitude range.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="PatrolZone.html##(PATROLZONE)">PatrolZone#PATROLZONE</a> PatrolZone </em></code>:
The <a href="PatrolZone.html">PatrolZone</a> where the AI needs to patrol.</p>
</li>
<li>
<p><code><em> PatrolFloorAltitude </em></code>: </p>
</li>
<li>
<p><code><em> PatrolCeilingAltitude </em></code>: </p>
</li>
<li>
<p><code><em> PatrolMinSpeed </em></code>: </p>
</li>
<li>
<p><code><em> PatrolMaxSpeed </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="PatrolZone.html##(PATROLZONE)">PatrolZone#PATROLZONE</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Spawn.html##(SPAWN)">Spawn#SPAWN</a></em>
<a id="#(AIBALANCER).SpawnAI" >
<strong>AIBALANCER.SpawnAI</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#boolean</em>
<a id="#(AIBALANCER).ToHomeAirbase" >
<strong>AIBALANCER.ToHomeAirbase</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#boolean</em>
<a id="#(AIBALANCER).ToNearestAirbase" >
<strong>AIBALANCER.ToNearestAirbase</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AIBALANCER)._ClientAliveMonitorScheduler" >
<strong>AIBALANCER:_ClientAliveMonitorScheduler()</strong>
</a>
</dt>
<dd>
</dd>
</dl>
</div>
</div>
</body>
</html>

View File

@ -1,732 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<link rel="stylesheet" href="stylesheet.css" type="text/css"/>
</head>
<body>
<div id="container">
<div id="product">
<div id="product_logo"></div>
<div id="product_name"><big><b></b></big></div>
<div id="product_description"></div>
</div>
<div id="main">
<div id="navigation">
<h2>Modules</h2>
<ul><li>
<a href="index.html">index</a>
</li></ul>
<ul>
<li><a href="AIBalancer.html">AIBalancer</a></li>
<li>AI_PatrolZone</li>
<li><a href="Airbase.html">Airbase</a></li>
<li><a href="AirbasePolice.html">AirbasePolice</a></li>
<li><a href="Base.html">Base</a></li>
<li><a href="Cargo.html">Cargo</a></li>
<li><a href="CleanUp.html">CleanUp</a></li>
<li><a href="Client.html">Client</a></li>
<li><a href="Controllable.html">Controllable</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>
<li><a href="DCSTask.html">DCSTask</a></li>
<li><a href="DCSTypes.html">DCSTypes</a></li>
<li><a href="DCSUnit.html">DCSUnit</a></li>
<li><a href="DCSWorld.html">DCSWorld</a></li>
<li><a href="DCScountry.html">DCScountry</a></li>
<li><a href="DCStimer.html">DCStimer</a></li>
<li><a href="DCStrigger.html">DCStrigger</a></li>
<li><a href="Database.html">Database</a></li>
<li><a href="Detection.html">Detection</a></li>
<li><a href="DetectionManager.html">DetectionManager</a></li>
<li><a href="Escort.html">Escort</a></li>
<li><a href="Event.html">Event</a></li>
<li><a href="Group.html">Group</a></li>
<li><a href="Identifiable.html">Identifiable</a></li>
<li><a href="MOVEMENT.html">MOVEMENT</a></li>
<li><a href="Menu.html">Menu</a></li>
<li><a href="Message.html">Message</a></li>
<li><a href="MissileTrainer.html">MissileTrainer</a></li>
<li><a href="Mission.html">Mission</a></li>
<li><a href="Object.html">Object</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li>
<li><a href="Positionable.html">Positionable</a></li>
<li><a href="Process.html">Process</a></li>
<li><a href="Process_Destroy.html">Process_Destroy</a></li>
<li><a href="Process_JTAC.html">Process_JTAC</a></li>
<li><a href="Process_Pickup.html">Process_Pickup</a></li>
<li><a href="Process_Smoke.html">Process_Smoke</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
<li><a href="Scoring.html">Scoring</a></li>
<li><a href="Sead.html">Sead</a></li>
<li><a href="Set.html">Set</a></li>
<li><a href="Spawn.html">Spawn</a></li>
<li><a href="StateMachine.html">StateMachine</a></li>
<li><a href="Static.html">Static</a></li>
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_Route.html">Task_Route</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
<li><a href="Utils.html">Utils</a></li>
<li><a href="Zone.html">Zone</a></li>
<li><a href="env.html">env</a></li>
<li><a href="land.html">land</a></li>
<li><a href="routines.html">routines</a></li>
</ul>
</div>
<div id="content">
<h1>Module <code>AI_PatrolZone</code></h1>
<p>This module contains the AI_PATROLZONE class.</p>
<hr/>
<h1>1) <a href="##(AI_PATROLZONE)">#AI_PATROLZONE</a> class, extends <a href="StateMachine.html##(STATEMACHINE)">StateMachine#STATEMACHINE</a></h1>
<p>The <a href="##(AI_PATROLZONE)">#AI_PATROLZONE</a> class implements the core functions to patrol a <a href="Zone.html">Zone</a> by an AIR <a href="Controllable.html">Controllable</a>.
The patrol algorithm works that for each airplane patrolling, upon arrival at the patrol zone,
a random point is selected as the route point within the 3D space, within the given boundary limits.
The airplane will fly towards the random 3D point within the patrol zone, using a random speed within the given altitude and speed limits.
Upon arrival at the random 3D point, a new 3D random point will be selected within the patrol zone using the given limits.
This cycle will continue until a fuel treshold has been reached by the airplane.
When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p>
<h2>1.1) AI_PATROLZONE constructor:</h2>
<ul>
<li><a href="##(AI_PATROLZONE).New">AI_PATROLZONE.New</a>(): Creates a new AI_PATROLZONE object.</li>
</ul>
<h2>1.2) AI_PATROLZONE state machine:</h2>
<p>The AI_PATROLZONE is a state machine: it manages the different events and states of the AIControllable it is controlling.</p>
<h3>1.2.1) AI_PATROLZONE Events:</h3>
<ul>
<li><a href="##(AI_PATROLZONE).Route">AI_PATROLZONE.Route</a>( AIControllable ): A new 3D route point is selected and the AIControllable will fly towards that point with the given speed.</li>
<li><a href="##(AI_PATROLZONE).Patrol">AI_PATROLZONE.Patrol</a>( AIControllable ): The AIControllable reports it is patrolling. This event is called every 30 seconds.</li>
<li><a href="##(AI_PATROLZONE).RTB">AI_PATROLZONE.RTB</a>( AIControllable ): The AIControllable will report return to base.</li>
<li><a href="##(AI_PATROLZONE).End">AI_PATROLZONE.End</a>( AIControllable ): The end of the AI_PATROLZONE process.</li>
<li><a href="##(AI_PATROLZONE).Dead">AI_PATROLZONE.Dead</a>( AIControllable ): The AIControllable is dead. The AI_PATROLZONE process will be ended.</li>
</ul>
<h3>1.2.2) AI_PATROLZONE States:</h3>
<ul>
<li><strong>Route</strong>: A new 3D route point is selected and the AIControllable will fly towards that point with the given speed.</li>
<li><strong>Patrol</strong>: The AIControllable is patrolling. This state is set every 30 seconds, so every 30 seconds, a state transition function can be used.</li>
<li><strong>RTB</strong>: The AIControllable reports it wants to return to the base.</li>
<li><strong>Dead</strong>: The AIControllable is dead ...</li>
<li><strong>End</strong>: The process has come to an end.</li>
</ul>
<h3>1.2.3) AI_PATROLZONE state transition functions:</h3>
<p>State transition functions can be set <strong>by the mission designer</strong> customizing or improving the behaviour of the state.
There are 2 moments when state transition functions will be called by the state machine:</p>
<ul>
<li><p><strong>Before</strong> the state transition.
The state transition function needs to start with the name <strong>OnBefore + the name of the state</strong>.
If the state transition function returns false, then the processing of the state transition will not be done!
If you want to change the behaviour of the AIControllable at this event, return false,
but then you'll need to specify your own logic using the AIControllable!</p></li>
<li><p><strong>After</strong> the state transition.
The state transition function needs to start with the name <strong>OnAfter + the name of the state</strong>.
These state transition functions need to provide a return value, which is specified at the function description.</p></li>
</ul>
<p>An example how to manage a state transition for an AI_PATROLZONE object <strong>Patrol</strong> for the state <strong>RTB</strong>:</p>
<pre><code> local PatrolZoneGroup = GROUP:FindByName( "Patrol Zone" )
local PatrolZone = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
local PatrolSpawn = SPAWN:New( "Patrol Group" )
local PatrolGroup = PatrolSpawn:Spawn()
local Patrol = AI_PATROLZONE:New( PatrolZone, 3000, 6000, 300, 600 )
Patrol:SetControllable( PatrolGroup )
Patrol:ManageFuel( 0.2, 60 )
</code></pre>
<p><strong>OnBefore</strong>RTB( AIGroup ) will be called by the AI_PATROLZONE object when the AIGroup reports RTB, but <strong>before</strong> the RTB default action is processed by the AI_PATROLZONE object.</p>
<pre><code> --- State transition function for the AI\_PATROLZONE **Patrol** object
-- @param #AI_PATROLZONE self
-- @param Controllable#CONTROLLABLE AIGroup
-- @return #boolean If false is returned, then the OnAfter state transition function will not be called.
function Patrol:OnBeforeRTB( AIGroup )
AIGroup:MessageToRed( "Returning to base", 20 )
end
</code></pre>
<p><strong>OnAfter</strong>RTB( AIGroup ) will be called by the AI_PATROLZONE object when the AIGroup reports RTB, but <strong>after</strong> the RTB default action was processed by the AI_PATROLZONE object.</p>
<pre><code> --- State transition function for the AI\_PATROLZONE **Patrol** object
-- @param #AI_PATROLZONE self
-- @param Controllable#CONTROLLABLE AIGroup
-- @return #Controllable#CONTROLLABLE The new AIGroup object that is set to be patrolling the zone.
function Patrol:OnAfterRTB( AIGroup )
return PatrolSpawn:Spawn()
end
</code></pre>
<h2>1.3) Manage the AI_PATROLZONE parameters:</h2>
<p>The following methods are available to modify the parameters of a AI_PATROLZONE object:</p>
<ul>
<li><a href="##(AI_PATROLZONE).SetControllable">AI_PATROLZONE.SetControllable</a>(): Set the AIControllable.</li>
<li><a href="##(AI_PATROLZONE).GetControllable">AI_PATROLZONE.GetControllable</a>(): Get the AIControllable.</li>
<li><a href="##(AI_PATROLZONE).SetSpeed">AI_PATROLZONE.SetSpeed</a>(): Set the patrol speed of the AI, for the next patrol.</li>
<li><a href="##(AI_PATROLZONE).SetAltitude">AI_PATROLZONE.SetAltitude</a>(): Set altitude of the AI, for the next patrol.</li>
</ul>
<h2>1.3) Manage the out of fuel in the AI_PATROLZONE:</h2>
<p>When the AIControllable is out of fuel, it is required that a new AIControllable is started, before the old AIControllable can return to the home base.
Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated.
When the fuel treshold is reached, the AIControllable will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_PATROLZONE.
Once the time is finished, the old AIControllable will return to the base.
Use the method <a href="##(AI_PATROLZONE).ManageFuel">AI_PATROLZONE.ManageFuel</a>() to have this proces in place.</p>
<hr/>
<h1><strong>API CHANGE HISTORY</strong></h1>
<p>The underlying change log documents the API changes. Please read this carefully. The following notation is used:</p>
<ul>
<li><strong>Added</strong> parts are expressed in bold type face.</li>
<li><em>Removed</em> parts are expressed in italic type face.</li>
</ul>
<p>Hereby the change log:</p>
<p>2016-08-17: AI_PATROLZONE:New( <strong>PatrolSpawn,</strong> PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed ) replaces AI_PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed )</p>
<p>2016-07-01: Initial class and API.</p>
<hr/>
<h1>AUTHORS and CONTRIBUTIONS</h1>
<h3>Contributions:</h3>
<ul>
<li><strong>DutchBaron</strong>: Testing.</li>
<li><strong>Pikey</strong>: Testing and API concept review.</li>
</ul>
<h3>Authors:</h3>
<ul>
<li><strong>FlightControl</strong>: Design &amp; Programming.</li>
</ul>
<h2>Global(s)</h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="#AI_PATROLZONE">AI_PATROLZONE</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#_NewPatrolRoute">_NewPatrolRoute(AIControllable)</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2><a id="#(AI_PATROLZONE)">Type <code>AI_PATROLZONE</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).AIControllable">AI_PATROLZONE.AIControllable</a></td>
<td class="summary">
<p>The <a href="Controllable.html">Controllable</a> patrolling.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).ClassName">AI_PATROLZONE.ClassName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).ManageFuel">AI_PATROLZONE:ManageFuel(PatrolFuelTresholdPercentage, PatrolOutOfFuelOrbitTime)</a></td>
<td class="summary">
<p>When the AIControllable is out of fuel, it is required that a new AIControllable is started, before the old AIControllable can return to the home base.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).New">AI_PATROLZONE:New(PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed)</a></td>
<td class="summary">
<p>Creates a new AI_PATROLZONE object</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).PatrolCeilingAltitude">AI_PATROLZONE.PatrolCeilingAltitude</a></td>
<td class="summary">
<p>The highest altitude in meters where to execute the patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).PatrolFloorAltitude">AI_PATROLZONE.PatrolFloorAltitude</a></td>
<td class="summary">
<p>The lowest altitude in meters where to execute the patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).PatrolFuelTresholdPercentage">AI_PATROLZONE.PatrolFuelTresholdPercentage</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).PatrolManageFuel">AI_PATROLZONE.PatrolManageFuel</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).PatrolMaxSpeed">AI_PATROLZONE.PatrolMaxSpeed</a></td>
<td class="summary">
<p>The maximum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).PatrolMinSpeed">AI_PATROLZONE.PatrolMinSpeed</a></td>
<td class="summary">
<p>The minimum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).PatrolOutOfFuelOrbitTime">AI_PATROLZONE.PatrolOutOfFuelOrbitTime</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).PatrolZone">AI_PATROLZONE.PatrolZone</a></td>
<td class="summary">
<p>The <a href="Zone.html">Zone</a> where the patrol needs to be executed.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).SetAltitude">AI_PATROLZONE:SetAltitude(PatrolFloorAltitude, PatrolCeilingAltitude)</a></td>
<td class="summary">
<p>Sets the floor and ceiling altitude of the patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).SetSpeed">AI_PATROLZONE:SetSpeed(PatrolMinSpeed, PatrolMaxSpeed)</a></td>
<td class="summary">
<p>Sets (modifies) the minimum and maximum speed of the patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).onenterPatrol">AI_PATROLZONE:onenterPatrol()</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(AI_PATROLZONE).onenterRoute">AI_PATROLZONE:onenterRoute()</a></td>
<td class="summary">
<p>Defines a new patrol route using the <a href="AI_PatrolZone.html">AI_PatrolZone</a> parameters and settings.</p>
</td>
</tr>
</table>
<h2>Global(s)</h2>
<dl class="function">
<dt>
<em><a href="##(AI_PATROLZONE)">#AI_PATROLZONE</a></em>
<a id="AI_PATROLZONE" >
<strong>AI_PATROLZONE</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="_NewPatrolRoute" >
<strong>_NewPatrolRoute(AIControllable)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Controllable.html##(CONTROLLABLE)">Controllable#CONTROLLABLE</a> AIControllable </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<h2><a id="#(AI_PatrolZone)" >Type <code>AI_PatrolZone</code></a></h2>
<h2><a id="#(AI_PATROLZONE)" >Type <code>AI_PATROLZONE</code></a></h2>
<p>AI_PATROLZONE class</p>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em><a href="Controllable.html##(CONTROLLABLE)">Controllable#CONTROLLABLE</a></em>
<a id="#(AI_PATROLZONE).AIControllable" >
<strong>AI_PATROLZONE.AIControllable</strong>
</a>
</dt>
<dd>
<p>The <a href="Controllable.html">Controllable</a> patrolling.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(AI_PATROLZONE).ClassName" >
<strong>AI_PATROLZONE.ClassName</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_PATROLZONE).ManageFuel" >
<strong>AI_PATROLZONE:ManageFuel(PatrolFuelTresholdPercentage, PatrolOutOfFuelOrbitTime)</strong>
</a>
</dt>
<dd>
<p>When the AIControllable is out of fuel, it is required that a new AIControllable is started, before the old AIControllable can return to the home base.</p>
<p>Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated.
When the fuel treshold is reached, the AIControllable will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the AI_PATROLZONE.
Once the time is finished, the old AIControllable will return to the base.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#number PatrolFuelTresholdPercentage </em></code>:
The treshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel.</p>
</li>
<li>
<p><code><em>#number PatrolOutOfFuelOrbitTime </em></code>:
The amount of seconds the out of fuel AIControllable will orbit before returning to the base.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(AI_PATROLZONE)">#AI_PATROLZONE</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_PATROLZONE).New" >
<strong>AI_PATROLZONE:New(PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed)</strong>
</a>
</dt>
<dd>
<p>Creates a new AI_PATROLZONE object</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Zone.html##(ZONE_BASE)">Zone#ZONE_BASE</a> PatrolZone </em></code>:
The <a href="Zone.html">Zone</a> where the patrol needs to be executed.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a> PatrolFloorAltitude </em></code>:
The lowest altitude in meters where to execute the patrol.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a> PatrolCeilingAltitude </em></code>:
The highest altitude in meters where to execute the patrol.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a> PatrolMinSpeed </em></code>:
The minimum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a> PatrolMaxSpeed </em></code>:
The maximum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(AI_PATROLZONE)">#AI_PATROLZONE</a>:</em>
self</p>
<h3>Usage:</h3>
<pre class="example"><code>-- Define a new AI_PATROLZONE Object. This PatrolArea will patrol an AIControllable within PatrolZone between 3000 and 6000 meters, with a variying speed between 600 and 900 km/h.
PatrolZone = ZONE:New( 'PatrolZone' )
PatrolSpawn = SPAWN:New( 'Patrol Group' )
PatrolArea = AI_PATROLZONE:New( PatrolZone, 3000, 6000, 600, 900 )</code></pre>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a></em>
<a id="#(AI_PATROLZONE).PatrolCeilingAltitude" >
<strong>AI_PATROLZONE.PatrolCeilingAltitude</strong>
</a>
</dt>
<dd>
<p>The highest altitude in meters where to execute the patrol.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a></em>
<a id="#(AI_PATROLZONE).PatrolFloorAltitude" >
<strong>AI_PATROLZONE.PatrolFloorAltitude</strong>
</a>
</dt>
<dd>
<p>The lowest altitude in meters where to execute the patrol.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(AI_PATROLZONE).PatrolFuelTresholdPercentage" >
<strong>AI_PATROLZONE.PatrolFuelTresholdPercentage</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#boolean</em>
<a id="#(AI_PATROLZONE).PatrolManageFuel" >
<strong>AI_PATROLZONE.PatrolManageFuel</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a></em>
<a id="#(AI_PATROLZONE).PatrolMaxSpeed" >
<strong>AI_PATROLZONE.PatrolMaxSpeed</strong>
</a>
</dt>
<dd>
<p>The maximum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a></em>
<a id="#(AI_PATROLZONE).PatrolMinSpeed" >
<strong>AI_PATROLZONE.PatrolMinSpeed</strong>
</a>
</dt>
<dd>
<p>The minimum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(AI_PATROLZONE).PatrolOutOfFuelOrbitTime" >
<strong>AI_PATROLZONE.PatrolOutOfFuelOrbitTime</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Zone.html##(ZONE_BASE)">Zone#ZONE_BASE</a></em>
<a id="#(AI_PATROLZONE).PatrolZone" >
<strong>AI_PATROLZONE.PatrolZone</strong>
</a>
</dt>
<dd>
<p>The <a href="Zone.html">Zone</a> where the patrol needs to be executed.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_PATROLZONE).SetAltitude" >
<strong>AI_PATROLZONE:SetAltitude(PatrolFloorAltitude, PatrolCeilingAltitude)</strong>
</a>
</dt>
<dd>
<p>Sets the floor and ceiling altitude of the patrol.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a> PatrolFloorAltitude </em></code>:
The lowest altitude in meters where to execute the patrol.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a> PatrolCeilingAltitude </em></code>:
The highest altitude in meters where to execute the patrol.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(AI_PATROLZONE)">#AI_PATROLZONE</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_PATROLZONE).SetSpeed" >
<strong>AI_PATROLZONE:SetSpeed(PatrolMinSpeed, PatrolMaxSpeed)</strong>
</a>
</dt>
<dd>
<p>Sets (modifies) the minimum and maximum speed of the patrol.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a> PatrolMinSpeed </em></code>:
The minimum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a> PatrolMaxSpeed </em></code>:
The maximum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(AI_PATROLZONE)">#AI_PATROLZONE</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_PATROLZONE).onenterPatrol" >
<strong>AI_PATROLZONE:onenterPatrol()</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(AI_PATROLZONE).onenterRoute" >
<strong>AI_PATROLZONE:onenterRoute()</strong>
</a>
</dt>
<dd>
<p>Defines a new patrol route using the <a href="AI_PatrolZone.html">AI_PatrolZone</a> parameters and settings.</p>
<h3>Return value</h3>
<p><em><a href="##(AI_PATROLZONE)">#AI_PATROLZONE</a>:</em>
self</p>
</dd>
</dl>
</div>
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -1,717 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<link rel="stylesheet" href="stylesheet.css" type="text/css"/>
</head>
<body>
<div id="container">
<div id="product">
<div id="product_logo"></div>
<div id="product_name"><big><b></b></big></div>
<div id="product_description"></div>
</div>
<div id="main">
<div id="navigation">
<h2>Modules</h2>
<ul><li>
<a href="index.html">index</a>
</li></ul>
<ul>
<li><a href="AIBalancer.html">AIBalancer</a></li>
<li><a href="AI_PatrolZone.html">AI_PatrolZone</a></li>
<li><a href="Airbase.html">Airbase</a></li>
<li><a href="AirbasePolice.html">AirbasePolice</a></li>
<li><a href="Base.html">Base</a></li>
<li><a href="Cargo.html">Cargo</a></li>
<li><a href="CleanUp.html">CleanUp</a></li>
<li><a href="Client.html">Client</a></li>
<li><a href="Controllable.html">Controllable</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>
<li><a href="DCSTask.html">DCSTask</a></li>
<li><a href="DCSTypes.html">DCSTypes</a></li>
<li><a href="DCSUnit.html">DCSUnit</a></li>
<li><a href="DCSWorld.html">DCSWorld</a></li>
<li><a href="DCScountry.html">DCScountry</a></li>
<li><a href="DCStimer.html">DCStimer</a></li>
<li><a href="DCStrigger.html">DCStrigger</a></li>
<li><a href="Database.html">Database</a></li>
<li><a href="Detection.html">Detection</a></li>
<li><a href="DetectionManager.html">DetectionManager</a></li>
<li><a href="Escort.html">Escort</a></li>
<li><a href="Event.html">Event</a></li>
<li><a href="Group.html">Group</a></li>
<li><a href="Identifiable.html">Identifiable</a></li>
<li><a href="MOVEMENT.html">MOVEMENT</a></li>
<li><a href="Menu.html">Menu</a></li>
<li><a href="Message.html">Message</a></li>
<li><a href="MissileTrainer.html">MissileTrainer</a></li>
<li><a href="Mission.html">Mission</a></li>
<li><a href="Object.html">Object</a></li>
<li>PatrolZone</li>
<li><a href="Point.html">Point</a></li>
<li><a href="Positionable.html">Positionable</a></li>
<li><a href="Process.html">Process</a></li>
<li><a href="Process_Destroy.html">Process_Destroy</a></li>
<li><a href="Process_JTAC.html">Process_JTAC</a></li>
<li><a href="Process_Pickup.html">Process_Pickup</a></li>
<li><a href="Process_Smoke.html">Process_Smoke</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
<li><a href="Scoring.html">Scoring</a></li>
<li><a href="Sead.html">Sead</a></li>
<li><a href="Set.html">Set</a></li>
<li><a href="Spawn.html">Spawn</a></li>
<li><a href="StateMachine.html">StateMachine</a></li>
<li><a href="Static.html">Static</a></li>
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_Route.html">Task_Route</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
<li><a href="Utils.html">Utils</a></li>
<li><a href="Zone.html">Zone</a></li>
<li><a href="env.html">env</a></li>
<li><a href="land.html">land</a></li>
<li><a href="routines.html">routines</a></li>
</ul>
</div>
<div id="content">
<h1>Module <code>PatrolZone</code></h1>
<p>This module contains the PATROLZONE class.</p>
<hr/>
<h1>1) <a href="##(PATROLZONE)">#PATROLZONE</a> class, extends <a href="Base.html##(BASE)">Base#BASE</a></h1>
<p>The <a href="##(PATROLZONE)">#PATROLZONE</a> class implements the core functions to patrol a <a href="Zone.html">Zone</a> by air units.
The PATROLZONE class will guide the airplanes towards the patrolzone.
The patrol algorithm works that for each airplane patrolling, upon arrival at the patrol zone,
a random point is selected as the route point within the 3D space, within the given boundary limits.
The airplane will fly towards the random point using a randomly selected speed within given boundary limits.
Upon arrival at the random point, a new random point will be selected within the patrol zone within boundary limits.
This cycle will continue until a fuel treshold has been reached by the airplane.
When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p>
<h2>1.1) PATROLZONE constructor:</h2>
<p><a href="##(PATROLZONE).New">PATROLZONE.New</a>(): Creates a new PATROLZONE object.</p>
<h2>1.2) Modify the PATROLZONE parameters:</h2>
<p>The following methods are available to modify the parameters of a PATROLZONE object:</p>
<ul>
<li><a href="##(PATROLZONE).SetGroup">PATROLZONE.SetGroup</a>(): Set the AI Patrol Group.</li>
<li><a href="##(PATROLZONE).SetSpeed">PATROLZONE.SetSpeed</a>(): Set the patrol speed of the AI, for the next patrol.</li>
<li><a href="##(PATROLZONE).SetAltitude">PATROLZONE.SetAltitude</a>(): Set altitude of the AI, for the next patrol.</li>
</ul>
<h2>1.3) Manage the out of fuel in the PATROLZONE:</h2>
<p>When the PatrolGroup is out of fuel, it is required that a new PatrolGroup is started, before the old PatrolGroup can return to the home base.
Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated.
When the fuel treshold is reached, the PatrolGroup will continue for a given time its patrol task in orbit, while a new PatrolGroup is targetted to the PATROLZONE.
Once the time is finished, the old PatrolGroup will return to the base.
Use the method <a href="##(PATROLZONE).ManageFuel">PATROLZONE.ManageFuel</a>() to have this proces in place.</p>
<hr/>
<h1><strong>API CHANGE HISTORY</strong></h1>
<p>The underlying change log documents the API changes. Please read this carefully. The following notation is used:</p>
<ul>
<li><strong>Added</strong> parts are expressed in bold type face.</li>
<li><em>Removed</em> parts are expressed in italic type face.</li>
</ul>
<p>Hereby the change log:</p>
<p>2016-08-17: PATROLZONE:New( <strong>PatrolSpawn,</strong> PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed ) replaces PATROLZONE:New( PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed )</p>
<p>2016-07-01: Initial class and API.</p>
<hr/>
<h1>AUTHORS and CONTRIBUTIONS</h1>
<h3>Contributions:</h3>
<ul>
<li><strong>DutchBaron</strong>: Testing.</li>
</ul>
<h3>Authors:</h3>
<ul>
<li><strong>FlightControl</strong>: Design &amp; Programming</li>
</ul>
<h2>Global(s)</h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="#PATROLZONE">PATROLZONE</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#_NewPatrolRoute">_NewPatrolRoute(PatrolGroup)</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2><a id="#(PATROLZONE)">Type <code>PATROLZONE</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).ClassName">PATROLZONE.ClassName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).ManageFuel">PATROLZONE:ManageFuel(PatrolFuelTresholdPercentage, PatrolOutOfFuelOrbitTime)</a></td>
<td class="summary">
<p>When the PatrolGroup is out of fuel, it is required that a new PatrolGroup is started, before the old PatrolGroup can return to the home base.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).New">PATROLZONE:New(PatrolSpawn, PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed)</a></td>
<td class="summary">
<p>Creates a new PATROLZONE object, taking a <a href="Group.html">Group</a> object as a parameter.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).NewPatrolRoute">PATROLZONE:NewPatrolRoute()</a></td>
<td class="summary">
<p>Defines a new patrol route using the <a href="PatrolZone.html">PatrolZone</a> parameters and settings.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolCeilingAltitude">PATROLZONE.PatrolCeilingAltitude</a></td>
<td class="summary">
<p>The highest altitude in meters where to execute the patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolFloorAltitude">PATROLZONE.PatrolFloorAltitude</a></td>
<td class="summary">
<p>The lowest altitude in meters where to execute the patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolFuelTresholdPercentage">PATROLZONE.PatrolFuelTresholdPercentage</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolGroup">PATROLZONE.PatrolGroup</a></td>
<td class="summary">
<p>The <a href="Group.html">Group</a> patrolling.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolGroupTemplateName">PATROLZONE.PatrolGroupTemplateName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolManageFuel">PATROLZONE.PatrolManageFuel</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolMaxSpeed">PATROLZONE.PatrolMaxSpeed</a></td>
<td class="summary">
<p>The maximum speed of the <a href="Group.html">Group</a> in km/h.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolMinSpeed">PATROLZONE.PatrolMinSpeed</a></td>
<td class="summary">
<p>The minimum speed of the <a href="Group.html">Group</a> in km/h.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolOutOfFuelMonitor">PATROLZONE.PatrolOutOfFuelMonitor</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolOutOfFuelOrbitTime">PATROLZONE.PatrolOutOfFuelOrbitTime</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).PatrolZone">PATROLZONE.PatrolZone</a></td>
<td class="summary">
<p>The <a href="Zone.html">Zone</a> where the patrol needs to be executed.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).SetAltitude">PATROLZONE:SetAltitude(PatrolFloorAltitude, PatrolCeilingAltitude)</a></td>
<td class="summary">
<p>Sets the floor and ceiling altitude of the patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).SetGroup">PATROLZONE:SetGroup(PatrolGroup)</a></td>
<td class="summary">
<p>Set the <a href="Group.html">Group</a> to act as the Patroller.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PATROLZONE).SetSpeed">PATROLZONE:SetSpeed(PatrolMinSpeed, PatrolMaxSpeed)</a></td>
<td class="summary">
<p>Sets (modifies) the minimum and maximum speed of the patrol.</p>
</td>
</tr>
</table>
<h2>Global(s)</h2>
<dl class="function">
<dt>
<em><a href="##(PATROLZONE)">#PATROLZONE</a></em>
<a id="PATROLZONE" >
<strong>PATROLZONE</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="_NewPatrolRoute" >
<strong>_NewPatrolRoute(PatrolGroup)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Group.html##(GROUP)">Group#GROUP</a> PatrolGroup </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<h2><a id="#(PatrolZone)" >Type <code>PatrolZone</code></a></h2>
<h2><a id="#(PATROLZONE)" >Type <code>PATROLZONE</code></a></h2>
<p>PATROLZONE class</p>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(PATROLZONE).ClassName" >
<strong>PATROLZONE.ClassName</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PATROLZONE).ManageFuel" >
<strong>PATROLZONE:ManageFuel(PatrolFuelTresholdPercentage, PatrolOutOfFuelOrbitTime)</strong>
</a>
</dt>
<dd>
<p>When the PatrolGroup is out of fuel, it is required that a new PatrolGroup is started, before the old PatrolGroup can return to the home base.</p>
<p>Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated.
When the fuel treshold is reached, the PatrolGroup will continue for a given time its patrol task in orbit, while a new PatrolGroup is targetted to the PATROLZONE.
Once the time is finished, the old PatrolGroup will return to the base.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#number PatrolFuelTresholdPercentage </em></code>:
The treshold in percentage (between 0 and 1) when the PatrolGroup is considered to get out of fuel.</p>
</li>
<li>
<p><code><em>#number PatrolOutOfFuelOrbitTime </em></code>:
The amount of seconds the out of fuel PatrolGroup will orbit before returning to the base.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PATROLZONE)">#PATROLZONE</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PATROLZONE).New" >
<strong>PATROLZONE:New(PatrolSpawn, PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed)</strong>
</a>
</dt>
<dd>
<p>Creates a new PATROLZONE object, taking a <a href="Group.html">Group</a> object as a parameter.</p>
<p>The GROUP needs to be alive.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Spawn.html##(SPAWN)">Spawn#SPAWN</a> PatrolSpawn </em></code>:
The <a href="SPAWN.html">SPAWN</a> object to spawn new group objects when required due to the fuel treshold.</p>
</li>
<li>
<p><code><em><a href="Zone.html##(ZONE_BASE)">Zone#ZONE_BASE</a> PatrolZone </em></code>:
The <a href="Zone.html">Zone</a> where the patrol needs to be executed.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a> PatrolFloorAltitude </em></code>:
The lowest altitude in meters where to execute the patrol.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a> PatrolCeilingAltitude </em></code>:
The highest altitude in meters where to execute the patrol.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a> PatrolMinSpeed </em></code>:
The minimum speed of the <a href="Group.html">Group</a> in km/h.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a> PatrolMaxSpeed </em></code>:
The maximum speed of the <a href="Group.html">Group</a> in km/h.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PATROLZONE)">#PATROLZONE</a>:</em>
self</p>
<h3>Usage:</h3>
<pre class="example"><code>-- Define a new PATROLZONE Object. This PatrolArea will patrol a group within PatrolZone between 3000 and 6000 meters, with a variying speed between 600 and 900 km/h.
PatrolZone = ZONE:New( 'PatrolZone' )
PatrolSpawn = SPAWN:New( "Patrol Group" )
PatrolArea = PATROLZONE:New( PatrolSpawn, PatrolZone, 3000, 6000, 600, 900 )</code></pre>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PATROLZONE).NewPatrolRoute" >
<strong>PATROLZONE:NewPatrolRoute()</strong>
</a>
</dt>
<dd>
<p>Defines a new patrol route using the <a href="PatrolZone.html">PatrolZone</a> parameters and settings.</p>
<h3>Return value</h3>
<p><em><a href="##(PATROLZONE)">#PATROLZONE</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a></em>
<a id="#(PATROLZONE).PatrolCeilingAltitude" >
<strong>PATROLZONE.PatrolCeilingAltitude</strong>
</a>
</dt>
<dd>
<p>The highest altitude in meters where to execute the patrol.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a></em>
<a id="#(PATROLZONE).PatrolFloorAltitude" >
<strong>PATROLZONE.PatrolFloorAltitude</strong>
</a>
</dt>
<dd>
<p>The lowest altitude in meters where to execute the patrol.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PATROLZONE).PatrolFuelTresholdPercentage" >
<strong>PATROLZONE.PatrolFuelTresholdPercentage</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Group.html##(GROUP)">Group#GROUP</a></em>
<a id="#(PATROLZONE).PatrolGroup" >
<strong>PATROLZONE.PatrolGroup</strong>
</a>
</dt>
<dd>
<p>The <a href="Group.html">Group</a> patrolling.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PATROLZONE).PatrolGroupTemplateName" >
<strong>PATROLZONE.PatrolGroupTemplateName</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#boolean</em>
<a id="#(PATROLZONE).PatrolManageFuel" >
<strong>PATROLZONE.PatrolManageFuel</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a></em>
<a id="#(PATROLZONE).PatrolMaxSpeed" >
<strong>PATROLZONE.PatrolMaxSpeed</strong>
</a>
</dt>
<dd>
<p>The maximum speed of the <a href="Group.html">Group</a> in km/h.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a></em>
<a id="#(PATROLZONE).PatrolMinSpeed" >
<strong>PATROLZONE.PatrolMinSpeed</strong>
</a>
</dt>
<dd>
<p>The minimum speed of the <a href="Group.html">Group</a> in km/h.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PATROLZONE).PatrolOutOfFuelMonitor" >
<strong>PATROLZONE.PatrolOutOfFuelMonitor</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PATROLZONE).PatrolOutOfFuelOrbitTime" >
<strong>PATROLZONE.PatrolOutOfFuelOrbitTime</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Zone.html##(ZONE_BASE)">Zone#ZONE_BASE</a></em>
<a id="#(PATROLZONE).PatrolZone" >
<strong>PATROLZONE.PatrolZone</strong>
</a>
</dt>
<dd>
<p>The <a href="Zone.html">Zone</a> where the patrol needs to be executed.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PATROLZONE).SetAltitude" >
<strong>PATROLZONE:SetAltitude(PatrolFloorAltitude, PatrolCeilingAltitude)</strong>
</a>
</dt>
<dd>
<p>Sets the floor and ceiling altitude of the patrol.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a> PatrolFloorAltitude </em></code>:
The lowest altitude in meters where to execute the patrol.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a> PatrolCeilingAltitude </em></code>:
The highest altitude in meters where to execute the patrol.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PATROLZONE)">#PATROLZONE</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PATROLZONE).SetGroup" >
<strong>PATROLZONE:SetGroup(PatrolGroup)</strong>
</a>
</dt>
<dd>
<p>Set the <a href="Group.html">Group</a> to act as the Patroller.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Group.html##(GROUP)">Group#GROUP</a> PatrolGroup </em></code>:
The <a href="Group.html">Group</a> patrolling.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PATROLZONE)">#PATROLZONE</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PATROLZONE).SetSpeed" >
<strong>PATROLZONE:SetSpeed(PatrolMinSpeed, PatrolMaxSpeed)</strong>
</a>
</dt>
<dd>
<p>Sets (modifies) the minimum and maximum speed of the patrol.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a> PatrolMinSpeed </em></code>:
The minimum speed of the <a href="Group.html">Group</a> in km/h.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a> PatrolMaxSpeed </em></code>:
The maximum speed of the <a href="Group.html">Group</a> in km/h.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PATROLZONE)">#PATROLZONE</a>:</em>
self</p>
</dd>
</dl>
</div>
</div>
</body>
</html>

View File

@ -1,415 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<link rel="stylesheet" href="stylesheet.css" type="text/css"/>
</head>
<body>
<div id="container">
<div id="product">
<div id="product_logo"></div>
<div id="product_name"><big><b></b></big></div>
<div id="product_description"></div>
</div>
<div id="main">
<div id="navigation">
<h2>Modules</h2>
<ul><li>
<a href="index.html">index</a>
</li></ul>
<ul>
<li><a href="AIBalancer.html">AIBalancer</a></li>
<li><a href="Account.html">Account</a></li>
<li><a href="Airbase.html">Airbase</a></li>
<li><a href="AirbasePolice.html">AirbasePolice</a></li>
<li><a href="Assign.html">Assign</a></li>
<li><a href="Base.html">Base</a></li>
<li><a href="Cargo.html">Cargo</a></li>
<li><a href="CleanUp.html">CleanUp</a></li>
<li><a href="Client.html">Client</a></li>
<li><a href="Controllable.html">Controllable</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>
<li><a href="DCSTask.html">DCSTask</a></li>
<li><a href="DCSTypes.html">DCSTypes</a></li>
<li><a href="DCSUnit.html">DCSUnit</a></li>
<li><a href="DCSWorld.html">DCSWorld</a></li>
<li><a href="DCScountry.html">DCScountry</a></li>
<li><a href="DCStimer.html">DCStimer</a></li>
<li><a href="DCStrigger.html">DCStrigger</a></li>
<li><a href="Database.html">Database</a></li>
<li><a href="Detection.html">Detection</a></li>
<li><a href="DetectionManager.html">DetectionManager</a></li>
<li><a href="Escort.html">Escort</a></li>
<li><a href="Event.html">Event</a></li>
<li><a href="Group.html">Group</a></li>
<li><a href="Identifiable.html">Identifiable</a></li>
<li><a href="MOVEMENT.html">MOVEMENT</a></li>
<li><a href="Menu.html">Menu</a></li>
<li><a href="Message.html">Message</a></li>
<li><a href="MissileTrainer.html">MissileTrainer</a></li>
<li><a href="Mission.html">Mission</a></li>
<li><a href="Object.html">Object</a></li>
<li><a href="Patrol.html">Patrol</a></li>
<li><a href="Point.html">Point</a></li>
<li><a href="Positionable.html">Positionable</a></li>
<li>Process</li>
<li><a href="Process_JTAC.html">Process_JTAC</a></li>
<li><a href="Process_Pickup.html">Process_Pickup</a></li>
<li><a href="Process_Smoke.html">Process_Smoke</a></li>
<li><a href="Route.html">Route</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
<li><a href="Scoring.html">Scoring</a></li>
<li><a href="Sead.html">Sead</a></li>
<li><a href="Set.html">Set</a></li>
<li><a href="Spawn.html">Spawn</a></li>
<li><a href="StateMachine.html">StateMachine</a></li>
<li><a href="Static.html">Static</a></li>
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
<li><a href="Zone.html">Zone</a></li>
<li><a href="env.html">env</a></li>
<li><a href="land.html">land</a></li>
</ul>
</div>
<div id="content">
<h1>Module <code>Process</code></h1>
<h2>Global(s)</h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="#PROCESS">PROCESS</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2><a id="#(PROCESS)">Type <code>PROCESS</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS).AddScore">PROCESS:AddScore(Task, State, ScoreText, Score, ProcessStatus)</a></td>
<td class="summary">
<p>Adds a score for the PROCESS to be achieved.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS).ClassName">PROCESS.ClassName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS).MissionMenu">PROCESS.MissionMenu</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS).New">PROCESS:New(ProcessName, Task, ProcessUnit, FSMT)</a></td>
<td class="summary">
<p>Instantiates a new TASK Base.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS).NextEvent">PROCESS.NextEvent</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS).OnStateChange">PROCESS:OnStateChange(ProcessUnit, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function for a PROCESS</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS).ProcessGroup">PROCESS.ProcessGroup</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS).ProcessName">PROCESS.ProcessName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS).Scores">PROCESS.Scores</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS).Task">PROCESS.Task</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2>Global(s)</h2>
<dl class="function">
<dt>
<em><a href="##(PROCESS)">#PROCESS</a></em>
<a id="PROCESS" >
<strong>PROCESS</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<h2><a id="#(Process)" >Type <code>Process</code></a></h2>
<h2><a id="#(PROCESS)" >Type <code>PROCESS</code></a></h2>
<p>The PROCESS class</p>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<a id="#(PROCESS).AddScore" >
<strong>PROCESS:AddScore(Task, State, ScoreText, Score, ProcessStatus)</strong>
</a>
</dt>
<dd>
<p>Adds a score for the PROCESS to be achieved.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Task.html##(TASK_BASE)">Task#TASK_BASE</a> Task </em></code>:
The task for which the process needs to account score.</p>
</li>
<li>
<p><code><em>#string State </em></code>:
is the state of the process when the score needs to be given. (See the relevant state descriptions of the process).</p>
</li>
<li>
<p><code><em>#string ScoreText </em></code>:
is a text describing the score that is given according the status.</p>
</li>
<li>
<p><code><em>#number Score </em></code>:
is a number providing the score of the status.</p>
</li>
<li>
<p><code><em> ProcessStatus </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PROCESS)">#PROCESS</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(PROCESS).ClassName" >
<strong>PROCESS.ClassName</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Menu.html##(MENU_GROUP)">Menu#MENU_GROUP</a></em>
<a id="#(PROCESS).MissionMenu" >
<strong>PROCESS.MissionMenu</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS).New" >
<strong>PROCESS:New(ProcessName, Task, ProcessUnit, FSMT)</strong>
</a>
</dt>
<dd>
<p>Instantiates a new TASK Base.</p>
<p>Should never be used. Interface Class.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string ProcessName </em></code>: </p>
</li>
<li>
<p><code><em><a href="Task.html##(TASK_BASE)">Task#TASK_BASE</a> Task </em></code>: </p>
</li>
<li>
<p><code><em><a href="Unit.html##(UNIT)">Unit#UNIT</a> ProcessUnit </em></code>: </p>
</li>
<li>
<p><code><em> FSMT </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PROCESS)">#PROCESS</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS).NextEvent" >
<strong>PROCESS.NextEvent</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS).OnStateChange" >
<strong>PROCESS:OnStateChange(ProcessUnit, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function for a PROCESS</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Controllable.html##(CONTROLLABLE)">Controllable#CONTROLLABLE</a> ProcessUnit </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Group.html##(GROUP)">Group#GROUP</a></em>
<a id="#(PROCESS).ProcessGroup" >
<strong>PROCESS.ProcessGroup</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(PROCESS).ProcessName" >
<strong>PROCESS.ProcessName</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PROCESS).Scores" >
<strong>PROCESS.Scores</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Task.html##(TASK_BASE)">Task#TASK_BASE</a></em>
<a id="#(PROCESS).Task" >
<strong>PROCESS.Task</strong>
</a>
</dt>
<dd>
</dd>
</dl>
</div>
</div>
</body>
</html>

View File

@ -1,692 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<link rel="stylesheet" href="stylesheet.css" type="text/css"/>
</head>
<body>
<div id="container">
<div id="product">
<div id="product_logo"></div>
<div id="product_name"><big><b></b></big></div>
<div id="product_description"></div>
</div>
<div id="main">
<div id="navigation">
<h2>Modules</h2>
<ul><li>
<a href="index.html">index</a>
</li></ul>
<ul>
<li><a href="AIBalancer.html">AIBalancer</a></li>
<li><a href="Airbase.html">Airbase</a></li>
<li><a href="AirbasePolice.html">AirbasePolice</a></li>
<li><a href="Base.html">Base</a></li>
<li><a href="Cargo.html">Cargo</a></li>
<li><a href="CleanUp.html">CleanUp</a></li>
<li><a href="Client.html">Client</a></li>
<li><a href="Controllable.html">Controllable</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>
<li><a href="DCSTask.html">DCSTask</a></li>
<li><a href="DCSTypes.html">DCSTypes</a></li>
<li><a href="DCSUnit.html">DCSUnit</a></li>
<li><a href="DCSWorld.html">DCSWorld</a></li>
<li><a href="DCScountry.html">DCScountry</a></li>
<li><a href="DCStimer.html">DCStimer</a></li>
<li><a href="DCStrigger.html">DCStrigger</a></li>
<li><a href="Database.html">Database</a></li>
<li><a href="Detection.html">Detection</a></li>
<li><a href="DetectionManager.html">DetectionManager</a></li>
<li><a href="Escort.html">Escort</a></li>
<li><a href="Event.html">Event</a></li>
<li><a href="Group.html">Group</a></li>
<li><a href="Identifiable.html">Identifiable</a></li>
<li><a href="MOVEMENT.html">MOVEMENT</a></li>
<li><a href="Menu.html">Menu</a></li>
<li><a href="Message.html">Message</a></li>
<li><a href="MissileTrainer.html">MissileTrainer</a></li>
<li><a href="Mission.html">Mission</a></li>
<li><a href="Object.html">Object</a></li>
<li><a href="Point.html">Point</a></li>
<li><a href="Positionable.html">Positionable</a></li>
<li><a href="Process.html">Process</a></li>
<li>Process_Destroy</li>
<li><a href="Process_JTAC.html">Process_JTAC</a></li>
<li><a href="Process_PatrolZone.html">Process_PatrolZone</a></li>
<li><a href="Process_Pickup.html">Process_Pickup</a></li>
<li><a href="Process_Smoke.html">Process_Smoke</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
<li><a href="Scoring.html">Scoring</a></li>
<li><a href="Sead.html">Sead</a></li>
<li><a href="Set.html">Set</a></li>
<li><a href="Spawn.html">Spawn</a></li>
<li><a href="StateMachine.html">StateMachine</a></li>
<li><a href="Static.html">Static</a></li>
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_Route.html">Task_Route</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
<li><a href="Zone.html">Zone</a></li>
<li><a href="env.html">env</a></li>
<li><a href="land.html">land</a></li>
</ul>
</div>
<div id="content">
<h1>Module <code>Process_Destroy</code></h1>
<h2>Global(s)</h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="#PROCESS_DESTROY">PROCESS_DESTROY</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2><a id="#(PROCESS_DESTROY)">Type <code>PROCESS_DESTROY</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_DESTROY).ClassName">PROCESS_DESTROY.ClassName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_DESTROY).DisplayCategory">PROCESS_DESTROY.DisplayCategory</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_DESTROY).DisplayCount">PROCESS_DESTROY.DisplayCount</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_DESTROY).DisplayInterval">PROCESS_DESTROY.DisplayInterval</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_DESTROY).DisplayMessage">PROCESS_DESTROY.DisplayMessage</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_DESTROY).DisplayTime">PROCESS_DESTROY.DisplayTime</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_DESTROY).EventDead">PROCESS_DESTROY:EventDead(Event)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_DESTROY).Fsm">PROCESS_DESTROY.Fsm</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_DESTROY).New">PROCESS_DESTROY:New(Task, ProcessUnit, TargetSetUnit, ProcessName)</a></td>
<td class="summary">
<p>Creates a new DESTROY process.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_DESTROY).OnDestroyed">PROCESS_DESTROY:OnDestroyed(Fsm, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function for a PROCESS</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_DESTROY).OnHitTarget">PROCESS_DESTROY:OnHitTarget(Fsm, Event, From, To, Event)</a></td>
<td class="summary">
<p>StateMachine callback function for a PROCESS</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_DESTROY).OnKilled">PROCESS_DESTROY:OnKilled(Fsm, Event, From, To, DCSEvent)</a></td>
<td class="summary">
<p>StateMachine callback function for a PROCESS</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_DESTROY).OnMoreTargets">PROCESS_DESTROY:OnMoreTargets(Fsm, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function for a PROCESS</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_DESTROY).OnRestart">PROCESS_DESTROY:OnRestart(Fsm, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function for a PROCESS</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_DESTROY).OnStart">PROCESS_DESTROY:OnStart(Fsm, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function for a PROCESS</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_DESTROY).OnWaiting">PROCESS_DESTROY:OnWaiting(Fsm, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function for a PROCESS</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_DESTROY).ProcessUnit">PROCESS_DESTROY.ProcessUnit</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_DESTROY).TargetSetUnit">PROCESS_DESTROY.TargetSetUnit</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2>Global(s)</h2>
<dl class="function">
<dt>
<em><a href="##(PROCESS_DESTROY)">#PROCESS_DESTROY</a></em>
<a id="PROCESS_DESTROY" >
<strong>PROCESS_DESTROY</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<h2><a id="#(Process_Destroy)" >Type <code>Process_Destroy</code></a></h2>
<h2><a id="#(PROCESS_DESTROY)" >Type <code>PROCESS_DESTROY</code></a></h2>
<p>PROCESS_DESTROY class</p>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(PROCESS_DESTROY).ClassName" >
<strong>PROCESS_DESTROY.ClassName</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(PROCESS_DESTROY).DisplayCategory" >
<strong>PROCESS_DESTROY.DisplayCategory</strong>
</a>
</dt>
<dd>
<p> Targets is the default display category</p>
</dd>
</dl>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(PROCESS_DESTROY).DisplayCount" >
<strong>PROCESS_DESTROY.DisplayCount</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(PROCESS_DESTROY).DisplayInterval" >
<strong>PROCESS_DESTROY.DisplayInterval</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#boolean</em>
<a id="#(PROCESS_DESTROY).DisplayMessage" >
<strong>PROCESS_DESTROY.DisplayMessage</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(PROCESS_DESTROY).DisplayTime" >
<strong>PROCESS_DESTROY.DisplayTime</strong>
</a>
</dt>
<dd>
<p> 10 seconds is the default</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_DESTROY).EventDead" >
<strong>PROCESS_DESTROY:EventDead(Event)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Event.html##(EVENTDATA)">Event#EVENTDATA</a> Event </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PROCESS_DESTROY).Fsm" >
<strong>PROCESS_DESTROY.Fsm</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_DESTROY).New" >
<strong>PROCESS_DESTROY:New(Task, ProcessUnit, TargetSetUnit, ProcessName)</strong>
</a>
</dt>
<dd>
<p>Creates a new DESTROY process.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Task.html##(TASK)">Task#TASK</a> Task </em></code>: </p>
</li>
<li>
<p><code><em><a href="Unit.html##(UNIT)">Unit#UNIT</a> ProcessUnit </em></code>: </p>
</li>
<li>
<p><code><em><a href="Set.html##(SET_UNIT)">Set#SET_UNIT</a> TargetSetUnit </em></code>: </p>
</li>
<li>
<p><code><em> ProcessName </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PROCESS_DESTROY)">#PROCESS_DESTROY</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_DESTROY).OnDestroyed" >
<strong>PROCESS_DESTROY:OnDestroyed(Fsm, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function for a PROCESS</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="StateMachine.html##(STATEMACHINE_PROCESS)">StateMachine#STATEMACHINE_PROCESS</a> Fsm </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_DESTROY).OnHitTarget" >
<strong>PROCESS_DESTROY:OnHitTarget(Fsm, Event, From, To, Event)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function for a PROCESS</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="StateMachine.html##(STATEMACHINE_PROCESS)">StateMachine#STATEMACHINE_PROCESS</a> Fsm </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
<li>
<p><code><em><a href="Event.html##(EVENTDATA)">Event#EVENTDATA</a> Event </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_DESTROY).OnKilled" >
<strong>PROCESS_DESTROY:OnKilled(Fsm, Event, From, To, DCSEvent)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function for a PROCESS</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="StateMachine.html##(STATEMACHINE_PROCESS)">StateMachine#STATEMACHINE_PROCESS</a> Fsm </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
<li>
<p><code><em><a href="Event.html##(EVENTDATA)">Event#EVENTDATA</a> DCSEvent </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_DESTROY).OnMoreTargets" >
<strong>PROCESS_DESTROY:OnMoreTargets(Fsm, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function for a PROCESS</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="StateMachine.html##(STATEMACHINE_PROCESS)">StateMachine#STATEMACHINE_PROCESS</a> Fsm </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_DESTROY).OnRestart" >
<strong>PROCESS_DESTROY:OnRestart(Fsm, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function for a PROCESS</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="StateMachine.html##(STATEMACHINE_PROCESS)">StateMachine#STATEMACHINE_PROCESS</a> Fsm </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_DESTROY).OnStart" >
<strong>PROCESS_DESTROY:OnStart(Fsm, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function for a PROCESS</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="StateMachine.html##(STATEMACHINE_PROCESS)">StateMachine#STATEMACHINE_PROCESS</a> Fsm </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_DESTROY).OnWaiting" >
<strong>PROCESS_DESTROY:OnWaiting(Fsm, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function for a PROCESS</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="StateMachine.html##(STATEMACHINE_PROCESS)">StateMachine#STATEMACHINE_PROCESS</a> Fsm </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Unit.html##(UNIT)">Unit#UNIT</a></em>
<a id="#(PROCESS_DESTROY).ProcessUnit" >
<strong>PROCESS_DESTROY.ProcessUnit</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Set.html##(SET_UNIT)">Set#SET_UNIT</a></em>
<a id="#(PROCESS_DESTROY).TargetSetUnit" >
<strong>PROCESS_DESTROY.TargetSetUnit</strong>
</a>
</dt>
<dd>
</dd>
</dl>
</div>
</div>
</body>
</html>

View File

@ -1,786 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<link rel="stylesheet" href="stylesheet.css" type="text/css"/>
</head>
<body>
<div id="container">
<div id="product">
<div id="product_logo"></div>
<div id="product_name"><big><b></b></big></div>
<div id="product_description"></div>
</div>
<div id="main">
<div id="navigation">
<h2>Modules</h2>
<ul><li>
<a href="index.html">index</a>
</li></ul>
<ul>
<li><a href="AIBalancer.html">AIBalancer</a></li>
<li><a href="Airbase.html">Airbase</a></li>
<li><a href="AirbasePolice.html">AirbasePolice</a></li>
<li><a href="Base.html">Base</a></li>
<li><a href="Cargo.html">Cargo</a></li>
<li><a href="CleanUp.html">CleanUp</a></li>
<li><a href="Client.html">Client</a></li>
<li><a href="Controllable.html">Controllable</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>
<li><a href="DCSTask.html">DCSTask</a></li>
<li><a href="DCSTypes.html">DCSTypes</a></li>
<li><a href="DCSUnit.html">DCSUnit</a></li>
<li><a href="DCSWorld.html">DCSWorld</a></li>
<li><a href="DCScountry.html">DCScountry</a></li>
<li><a href="DCStimer.html">DCStimer</a></li>
<li><a href="DCStrigger.html">DCStrigger</a></li>
<li><a href="Database.html">Database</a></li>
<li><a href="Detection.html">Detection</a></li>
<li><a href="DetectionManager.html">DetectionManager</a></li>
<li><a href="Escort.html">Escort</a></li>
<li><a href="Event.html">Event</a></li>
<li><a href="Group.html">Group</a></li>
<li><a href="Identifiable.html">Identifiable</a></li>
<li><a href="MOVEMENT.html">MOVEMENT</a></li>
<li><a href="Menu.html">Menu</a></li>
<li><a href="Message.html">Message</a></li>
<li><a href="MissileTrainer.html">MissileTrainer</a></li>
<li><a href="Mission.html">Mission</a></li>
<li><a href="Object.html">Object</a></li>
<li><a href="Point.html">Point</a></li>
<li><a href="Positionable.html">Positionable</a></li>
<li><a href="Process.html">Process</a></li>
<li><a href="Process_Destroy.html">Process_Destroy</a></li>
<li><a href="Process_JTAC.html">Process_JTAC</a></li>
<li>Process_PatrolZone</li>
<li><a href="Process_Pickup.html">Process_Pickup</a></li>
<li><a href="Process_Smoke.html">Process_Smoke</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
<li><a href="Scoring.html">Scoring</a></li>
<li><a href="Sead.html">Sead</a></li>
<li><a href="Set.html">Set</a></li>
<li><a href="Spawn.html">Spawn</a></li>
<li><a href="StateMachine.html">StateMachine</a></li>
<li><a href="Static.html">Static</a></li>
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_Route.html">Task_Route</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
<li><a href="Zone.html">Zone</a></li>
<li><a href="env.html">env</a></li>
<li><a href="land.html">land</a></li>
</ul>
</div>
<div id="content">
<h1>Module <code>Process_PatrolZone</code></h1>
<p>(AI) Make AI patrol routes or zones.</p>
<hr/>
<h1>1) <a href="##(PROCESS_PATROLZONE)">#PROCESS_PATROLZONE</a> class, extends <a href="StateMachine.html##(STATEMACHINE)">StateMachine#STATEMACHINE</a></h1>
<p>The <a href="##(PROCESS_PATROLZONE)">#PROCESS_PATROLZONE</a> class implements the core functions to patrol a <a href="Zone.html">Zone</a> by an AIR <a href="Controllable.html">Controllable</a> <a href="Group.html">Group</a>.
The patrol algorithm works that for each airplane patrolling, upon arrival at the patrol zone,
a random point is selected as the route point within the 3D space, within the given boundary limits.
The airplane will fly towards the random 3D point within the patrol zone, using a random speed within the given altitude and speed limits.
Upon arrival at the random 3D point, a new 3D random point will be selected within the patrol zone using the given limits.
This cycle will continue until a fuel treshold has been reached by the airplane.
When the fuel treshold has been reached, the airplane will fly towards the nearest friendly airbase and will land.</p>
<h2>1.1) PROCESS_PATROLZONE constructor:</h2>
<ul>
<li><a href="##(PROCESS_PATROLZONE).New">PROCESS_PATROLZONE.New</a>(): Creates a new PROCESS_PATROLZONE object.</li>
</ul>
<h2>1.2) PROCESS_PATROLZONE state machine:</h2>
<p>The PROCESS_PATROLZONE is a state machine: it manages the different events and states of the AIControllable it is controlling.</p>
<h3>1.2.1) PROCESS_PATROLZONE Events:</h3>
<ul>
<li><a href="##(PROCESS_PATROLZONE).Route">PROCESS_PATROLZONE.Route</a>( AIControllable ): A new 3D route point is selected and the AIControllable will fly towards that point with the given speed.</li>
<li><a href="##(PROCESS_PATROLZONE).Patrol">PROCESS_PATROLZONE.Patrol</a>( AIControllable ): The AIControllable reports it is patrolling. This event is called every 30 seconds.</li>
<li><a href="##(PROCESS_PATROLZONE).RTB">PROCESS_PATROLZONE.RTB</a>( AIControllable ): The AIControllable will report return to base.</li>
<li><a href="##(PROCESS_PATROLZONE).End">PROCESS_PATROLZONE.End</a>( AIControllable ): The end of the PROCESS_PATROLZONE process.</li>
<li><a href="##(PROCESS_PATROLZONE).Dead">PROCESS_PATROLZONE.Dead</a>( AIControllable ): The AIControllable is dead. The PROCESS_PATROLZONE process will be ended.</li>
</ul>
<h3>1.2.2) PROCESS_PATROLZONE States:</h3>
<ul>
<li><strong>Route</strong>: A new 3D route point is selected and the AIControllable will fly towards that point with the given speed.</li>
<li><strong>Patrol</strong>: The AIControllable is patrolling. This state is set every 30 seconds, so every 30 seconds, a state transition function can be used.</li>
<li><strong>RTB</strong>: The AIControllable reports it wants to return to the base.</li>
<li><strong>Dead</strong>: The AIControllable is dead ...</li>
<li><strong>End</strong>: The process has come to an end.</li>
</ul>
<h3>1.2.3) PROCESS_PATROLZONE state transition functions:</h3>
<p>State transition functions can be set <strong>by the mission designer</strong> customizing or improving the behaviour of the state.
There are 2 moments when state transition functions will be called by the state machine:</p>
<ul>
<li><p><strong>Before</strong> the state transition.
The state transition function needs to start with the name <strong>OnBefore + the name of the state</strong>.
If the state transition function returns false, then the processing of the state transition will not be done!
If you want to change the behaviour of the AIControllable at this event, return false,
but then you'll need to specify your own logic using the AIControllable!</p></li>
<li><p><strong>After</strong> the state transition.
The state transition function needs to start with the name <strong>OnAfter + the name of the state</strong>.
These state transition functions need to provide a return value, which is specified at the function description.</p></li>
</ul>
<p>An example how to manage a state transition for an PROCESS_PATROLZONE object <strong>Patrol</strong> for the state <strong>RTB</strong>:</p>
<pre><code> local PatrolZoneGroup = GROUP:FindByName( "Patrol Zone" )
local PatrolZone = ZONE_POLYGON:New( "PatrolZone", PatrolZoneGroup )
local PatrolSpawn = SPAWN:New( "Patrol Group" )
local PatrolGroup = PatrolSpawn:Spawn()
local Patrol = PROCESS_PATROLZONE:New( PatrolZone, 3000, 6000, 300, 600 )
Patrol:SetControllable( PatrolGroup )
Patrol:ManageFuel( 0.2, 60 )
</code></pre>
<p><strong>OnBefore</strong>RTB( AIGroup ) will be called by the PROCESS_PATROLZONE object when the AIGroup reports RTB, but <strong>before</strong> the RTB default action is processed by the PROCESS_PATROLZONE object.</p>
<pre><code> --- State transition function for the PROCESS\_PATROLZONE **Patrol** object
-- @param #PROCESS_PATROLZONE self
-- @param Controllable#CONTROLLABLE AIGroup
-- @return #boolean If false is returned, then the OnAfter state transition function will not be called.
function Patrol:OnBeforeRTB( AIGroup )
AIGroup:MessageToRed( "Returning to base", 20 )
end
</code></pre>
<p><strong>OnAfter</strong>RTB( AIGroup ) will be called by the PROCESS_PATROLZONE object when the AIGroup reports RTB, but <strong>after</strong> the RTB default action was processed by the PROCESS_PATROLZONE object.</p>
<pre><code> --- State transition function for the PROCESS\_PATROLZONE **Patrol** object
-- @param #PROCESS_PATROLZONE self
-- @param Controllable#CONTROLLABLE AIGroup
-- @return #Controllable#CONTROLLABLE The new AIGroup object that is set to be patrolling the zone.
function Patrol:OnAfterRTB( AIGroup )
return PatrolSpawn:Spawn()
end
</code></pre>
<h2>1.3) Manage the PROCESS_PATROLZONE parameters:</h2>
<p>The following methods are available to modify the parameters of a PROCESS_PATROLZONE object:</p>
<ul>
<li><a href="##(PROCESS_PATROLZONE).SetControllable">PROCESS_PATROLZONE.SetControllable</a>(): Set the AIControllable.</li>
<li><a href="##(PROCESS_PATROLZONE).GetControllable">PROCESS_PATROLZONE.GetControllable</a>(): Get the AIControllable.</li>
<li><a href="##(PROCESS_PATROLZONE).SetSpeed">PROCESS_PATROLZONE.SetSpeed</a>(): Set the patrol speed of the AI, for the next patrol.</li>
<li><a href="##(PROCESS_PATROLZONE).SetAltitude">PROCESS_PATROLZONE.SetAltitude</a>(): Set altitude of the AI, for the next patrol.</li>
</ul>
<h2>1.3) Manage the out of fuel in the PROCESS_PATROLZONE:</h2>
<p>When the AIControllable is out of fuel, it is required that a new AIControllable is started, before the old AIControllable can return to the home base.
Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated.
When the fuel treshold is reached, the AIControllable will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the PROCESS_PATROLZONE.
Once the time is finished, the old AIControllable will return to the base.
Use the method <a href="##(PROCESS_PATROLZONE).ManageFuel">PROCESS_PATROLZONE.ManageFuel</a>() to have this proces in place.</p>
<hr/>
<h1><strong>API CHANGE HISTORY</strong></h1>
<p>The underlying change log documents the API changes. Please read this carefully. The following notation is used:</p>
<ul>
<li><strong>Added</strong> parts are expressed in bold type face.</li>
<li><em>Removed</em> parts are expressed in italic type face.</li>
</ul>
<p>Hereby the change log:</p>
<p>2016-09-01: Initial class and API.</p>
<hr/>
<h1>AUTHORS and CONTRIBUTIONS</h1>
<h3>Contributions:</h3>
<ul>
<li><strong>DutchBaron</strong>: Testing.</li>
<li><strong>Pikey</strong>: Testing and API concept review.</li>
</ul>
<h3>Authors:</h3>
<ul>
<li><strong>FlightControl</strong>: Design &amp; Programming.</li>
</ul>
<h2>Global(s)</h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="#PROCESS_PATROLZONE">PROCESS_PATROLZONE</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#_NewPatrolRoute">_NewPatrolRoute(AIControllable)</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2><a id="#(PROCESS_PATROLZONE)">Type <code>PROCESS_PATROLZONE</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_PATROLZONE).AIControllable">PROCESS_PATROLZONE.AIControllable</a></td>
<td class="summary">
<p>The <a href="Controllable.html">Controllable</a> patrolling.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_PATROLZONE).ClassName">PROCESS_PATROLZONE.ClassName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_PATROLZONE).ManageFuel">PROCESS_PATROLZONE:ManageFuel(PatrolFuelTresholdPercentage, PatrolOutOfFuelOrbitTime)</a></td>
<td class="summary">
<p>When the AIControllable is out of fuel, it is required that a new AIControllable is started, before the old AIControllable can return to the home base.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_PATROLZONE).New">PROCESS_PATROLZONE:New(PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed)</a></td>
<td class="summary">
<p>Creates a new PROCESS_PATROLZONE object</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_PATROLZONE).OnAfterRoute">PROCESS_PATROLZONE:OnAfterRoute(Controllable)</a></td>
<td class="summary">
<p>OnAfter State Transition Function</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_PATROLZONE).OnBeforeRoute">PROCESS_PATROLZONE:OnBeforeRoute(Controllable)</a></td>
<td class="summary">
<p>OnBefore State Transition Function</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_PATROLZONE).PatrolCeilingAltitude">PROCESS_PATROLZONE.PatrolCeilingAltitude</a></td>
<td class="summary">
<p>The highest altitude in meters where to execute the patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_PATROLZONE).PatrolFloorAltitude">PROCESS_PATROLZONE.PatrolFloorAltitude</a></td>
<td class="summary">
<p>The lowest altitude in meters where to execute the patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_PATROLZONE).PatrolFuelTresholdPercentage">PROCESS_PATROLZONE.PatrolFuelTresholdPercentage</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_PATROLZONE).PatrolManageFuel">PROCESS_PATROLZONE.PatrolManageFuel</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_PATROLZONE).PatrolMaxSpeed">PROCESS_PATROLZONE.PatrolMaxSpeed</a></td>
<td class="summary">
<p>The maximum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_PATROLZONE).PatrolMinSpeed">PROCESS_PATROLZONE.PatrolMinSpeed</a></td>
<td class="summary">
<p>The minimum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_PATROLZONE).PatrolOutOfFuelOrbitTime">PROCESS_PATROLZONE.PatrolOutOfFuelOrbitTime</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_PATROLZONE).PatrolZone">PROCESS_PATROLZONE.PatrolZone</a></td>
<td class="summary">
<p>The <a href="Zone.html">Zone</a> where the patrol needs to be executed.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_PATROLZONE).SetAltitude">PROCESS_PATROLZONE:SetAltitude(PatrolFloorAltitude, PatrolCeilingAltitude)</a></td>
<td class="summary">
<p>Sets the floor and ceiling altitude of the patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_PATROLZONE).SetSpeed">PROCESS_PATROLZONE:SetSpeed(PatrolMinSpeed, PatrolMaxSpeed)</a></td>
<td class="summary">
<p>Sets (modifies) the minimum and maximum speed of the patrol.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_PATROLZONE).onenterPatrol">PROCESS_PATROLZONE:onenterPatrol()</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_PATROLZONE).onenterRoute">PROCESS_PATROLZONE:onenterRoute()</a></td>
<td class="summary">
<p>Defines a new patrol route using the <a href="Process_PatrolZone.html">Process_PatrolZone</a> parameters and settings.</p>
</td>
</tr>
</table>
<h2>Global(s)</h2>
<dl class="function">
<dt>
<em><a href="##(PROCESS_PATROLZONE)">#PROCESS_PATROLZONE</a></em>
<a id="PROCESS_PATROLZONE" >
<strong>PROCESS_PATROLZONE</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="_NewPatrolRoute" >
<strong>_NewPatrolRoute(AIControllable)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Controllable.html##(CONTROLLABLE)">Controllable#CONTROLLABLE</a> AIControllable </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<h2><a id="#(Process_PatrolZone)" >Type <code>Process_PatrolZone</code></a></h2>
<h2><a id="#(PROCESS_PATROLZONE)" >Type <code>PROCESS_PATROLZONE</code></a></h2>
<p>PROCESS_PATROLZONE class</p>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em><a href="Controllable.html##(CONTROLLABLE)">Controllable#CONTROLLABLE</a></em>
<a id="#(PROCESS_PATROLZONE).AIControllable" >
<strong>PROCESS_PATROLZONE.AIControllable</strong>
</a>
</dt>
<dd>
<p>The <a href="Controllable.html">Controllable</a> patrolling.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(PROCESS_PATROLZONE).ClassName" >
<strong>PROCESS_PATROLZONE.ClassName</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_PATROLZONE).ManageFuel" >
<strong>PROCESS_PATROLZONE:ManageFuel(PatrolFuelTresholdPercentage, PatrolOutOfFuelOrbitTime)</strong>
</a>
</dt>
<dd>
<p>When the AIControllable is out of fuel, it is required that a new AIControllable is started, before the old AIControllable can return to the home base.</p>
<p>Therefore, with a parameter and a calculation of the distance to the home base, the fuel treshold is calculated.
When the fuel treshold is reached, the AIControllable will continue for a given time its patrol task in orbit, while a new AIControllable is targetted to the PROCESS_PATROLZONE.
Once the time is finished, the old AIControllable will return to the base.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#number PatrolFuelTresholdPercentage </em></code>:
The treshold in percentage (between 0 and 1) when the AIControllable is considered to get out of fuel.</p>
</li>
<li>
<p><code><em>#number PatrolOutOfFuelOrbitTime </em></code>:
The amount of seconds the out of fuel AIControllable will orbit before returning to the base.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PROCESS_PATROLZONE)">#PROCESS_PATROLZONE</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_PATROLZONE).New" >
<strong>PROCESS_PATROLZONE:New(PatrolZone, PatrolFloorAltitude, PatrolCeilingAltitude, PatrolMinSpeed, PatrolMaxSpeed)</strong>
</a>
</dt>
<dd>
<p>Creates a new PROCESS_PATROLZONE object</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Zone.html##(ZONE_BASE)">Zone#ZONE_BASE</a> PatrolZone </em></code>:
The <a href="Zone.html">Zone</a> where the patrol needs to be executed.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a> PatrolFloorAltitude </em></code>:
The lowest altitude in meters where to execute the patrol.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a> PatrolCeilingAltitude </em></code>:
The highest altitude in meters where to execute the patrol.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a> PatrolMinSpeed </em></code>:
The minimum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a> PatrolMaxSpeed </em></code>:
The maximum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PROCESS_PATROLZONE)">#PROCESS_PATROLZONE</a>:</em>
self</p>
<h3>Usage:</h3>
<pre class="example"><code>-- Define a new PROCESS_PATROLZONE Object. This PatrolArea will patrol an AIControllable within PatrolZone between 3000 and 6000 meters, with a variying speed between 600 and 900 km/h.
PatrolZone = ZONE:New( 'PatrolZone' )
PatrolSpawn = SPAWN:New( 'Patrol Group' )
PatrolArea = PROCESS_PATROLZONE:New( PatrolZone, 3000, 6000, 600, 900 )</code></pre>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_PATROLZONE).OnAfterRoute" >
<strong>PROCESS_PATROLZONE:OnAfterRoute(Controllable)</strong>
</a>
</dt>
<dd>
<p>OnAfter State Transition Function</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Controllable.html##(CONTROLLABLE)">Controllable#CONTROLLABLE</a> Controllable </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_PATROLZONE).OnBeforeRoute" >
<strong>PROCESS_PATROLZONE:OnBeforeRoute(Controllable)</strong>
</a>
</dt>
<dd>
<p>OnBefore State Transition Function</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Controllable.html##(CONTROLLABLE)">Controllable#CONTROLLABLE</a> Controllable </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em>#boolean:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a></em>
<a id="#(PROCESS_PATROLZONE).PatrolCeilingAltitude" >
<strong>PROCESS_PATROLZONE.PatrolCeilingAltitude</strong>
</a>
</dt>
<dd>
<p>The highest altitude in meters where to execute the patrol.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a></em>
<a id="#(PROCESS_PATROLZONE).PatrolFloorAltitude" >
<strong>PROCESS_PATROLZONE.PatrolFloorAltitude</strong>
</a>
</dt>
<dd>
<p>The lowest altitude in meters where to execute the patrol.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PROCESS_PATROLZONE).PatrolFuelTresholdPercentage" >
<strong>PROCESS_PATROLZONE.PatrolFuelTresholdPercentage</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#boolean</em>
<a id="#(PROCESS_PATROLZONE).PatrolManageFuel" >
<strong>PROCESS_PATROLZONE.PatrolManageFuel</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a></em>
<a id="#(PROCESS_PATROLZONE).PatrolMaxSpeed" >
<strong>PROCESS_PATROLZONE.PatrolMaxSpeed</strong>
</a>
</dt>
<dd>
<p>The maximum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a></em>
<a id="#(PROCESS_PATROLZONE).PatrolMinSpeed" >
<strong>PROCESS_PATROLZONE.PatrolMinSpeed</strong>
</a>
</dt>
<dd>
<p>The minimum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PROCESS_PATROLZONE).PatrolOutOfFuelOrbitTime" >
<strong>PROCESS_PATROLZONE.PatrolOutOfFuelOrbitTime</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Zone.html##(ZONE_BASE)">Zone#ZONE_BASE</a></em>
<a id="#(PROCESS_PATROLZONE).PatrolZone" >
<strong>PROCESS_PATROLZONE.PatrolZone</strong>
</a>
</dt>
<dd>
<p>The <a href="Zone.html">Zone</a> where the patrol needs to be executed.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_PATROLZONE).SetAltitude" >
<strong>PROCESS_PATROLZONE:SetAltitude(PatrolFloorAltitude, PatrolCeilingAltitude)</strong>
</a>
</dt>
<dd>
<p>Sets the floor and ceiling altitude of the patrol.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a> PatrolFloorAltitude </em></code>:
The lowest altitude in meters where to execute the patrol.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Altitude)">DCSTypes#Altitude</a> PatrolCeilingAltitude </em></code>:
The highest altitude in meters where to execute the patrol.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PROCESS_PATROLZONE)">#PROCESS_PATROLZONE</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_PATROLZONE).SetSpeed" >
<strong>PROCESS_PATROLZONE:SetSpeed(PatrolMinSpeed, PatrolMaxSpeed)</strong>
</a>
</dt>
<dd>
<p>Sets (modifies) the minimum and maximum speed of the patrol.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a> PatrolMinSpeed </em></code>:
The minimum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Speed)">DCSTypes#Speed</a> PatrolMaxSpeed </em></code>:
The maximum speed of the <a href="Controllable.html">Controllable</a> in km/h.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PROCESS_PATROLZONE)">#PROCESS_PATROLZONE</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_PATROLZONE).onenterPatrol" >
<strong>PROCESS_PATROLZONE:onenterPatrol()</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_PATROLZONE).onenterRoute" >
<strong>PROCESS_PATROLZONE:onenterRoute()</strong>
</a>
</dt>
<dd>
<p>Defines a new patrol route using the <a href="Process_PatrolZone.html">Process_PatrolZone</a> parameters and settings.</p>
<h3>Return value</h3>
<p><em><a href="##(PROCESS_PATROLZONE)">#PROCESS_PATROLZONE</a>:</em>
self</p>
</dd>
</dl>
</div>
</div>
</body>
</html>

View File

@ -1,487 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<link rel="stylesheet" href="stylesheet.css" type="text/css"/>
</head>
<body>
<div id="container">
<div id="product">
<div id="product_logo"></div>
<div id="product_name"><big><b></b></big></div>
<div id="product_description"></div>
</div>
<div id="main">
<div id="navigation">
<h2>Modules</h2>
<ul><li>
<a href="index.html">index</a>
</li></ul>
<ul>
<li><a href="AIBalancer.html">AIBalancer</a></li>
<li><a href="Account.html">Account</a></li>
<li><a href="Airbase.html">Airbase</a></li>
<li><a href="AirbasePolice.html">AirbasePolice</a></li>
<li><a href="Assign.html">Assign</a></li>
<li><a href="Base.html">Base</a></li>
<li><a href="Cargo.html">Cargo</a></li>
<li><a href="CleanUp.html">CleanUp</a></li>
<li><a href="Client.html">Client</a></li>
<li><a href="Controllable.html">Controllable</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>
<li><a href="DCSTask.html">DCSTask</a></li>
<li><a href="DCSTypes.html">DCSTypes</a></li>
<li><a href="DCSUnit.html">DCSUnit</a></li>
<li><a href="DCSWorld.html">DCSWorld</a></li>
<li><a href="DCScountry.html">DCScountry</a></li>
<li><a href="DCStimer.html">DCStimer</a></li>
<li><a href="DCStrigger.html">DCStrigger</a></li>
<li><a href="Database.html">Database</a></li>
<li><a href="Detection.html">Detection</a></li>
<li><a href="DetectionManager.html">DetectionManager</a></li>
<li><a href="Escort.html">Escort</a></li>
<li><a href="Event.html">Event</a></li>
<li><a href="Group.html">Group</a></li>
<li><a href="Identifiable.html">Identifiable</a></li>
<li><a href="MOVEMENT.html">MOVEMENT</a></li>
<li><a href="Menu.html">Menu</a></li>
<li><a href="Message.html">Message</a></li>
<li><a href="MissileTrainer.html">MissileTrainer</a></li>
<li><a href="Mission.html">Mission</a></li>
<li><a href="Object.html">Object</a></li>
<li><a href="Patrol.html">Patrol</a></li>
<li><a href="Point.html">Point</a></li>
<li><a href="Positionable.html">Positionable</a></li>
<li><a href="Process.html">Process</a></li>
<li><a href="Process_JTAC.html">Process_JTAC</a></li>
<li><a href="Process_Pickup.html">Process_Pickup</a></li>
<li>Process_Smoke</li>
<li><a href="Route.html">Route</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
<li><a href="Scoring.html">Scoring</a></li>
<li><a href="Sead.html">Sead</a></li>
<li><a href="Set.html">Set</a></li>
<li><a href="Spawn.html">Spawn</a></li>
<li><a href="StateMachine.html">StateMachine</a></li>
<li><a href="Static.html">Static</a></li>
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
<li><a href="Zone.html">Zone</a></li>
<li><a href="env.html">env</a></li>
<li><a href="land.html">land</a></li>
</ul>
</div>
<div id="content">
<h1>Module <code>Process_Smoke</code></h1>
<h2>Global(s)</h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="#PROCESS_SMOKE_TARGETS">PROCESS_SMOKE_TARGETS</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2><a id="#(PROCESS_SMOKE_TARGETS)">Type <code>PROCESS_SMOKE_TARGETS</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_SMOKE_TARGETS).ClassName">PROCESS_SMOKE_TARGETS.ClassName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_SMOKE_TARGETS).Menu">PROCESS_SMOKE_TARGETS.Menu</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_SMOKE_TARGETS).MenuSmokeBlue">PROCESS_SMOKE_TARGETS.MenuSmokeBlue</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_SMOKE_TARGETS).MenuSmokeGreen">PROCESS_SMOKE_TARGETS.MenuSmokeGreen</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_SMOKE_TARGETS).MenuSmokeOrange">PROCESS_SMOKE_TARGETS.MenuSmokeOrange</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_SMOKE_TARGETS).MenuSmokeRed">PROCESS_SMOKE_TARGETS.MenuSmokeRed</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_SMOKE_TARGETS).MenuSmokeWhite">PROCESS_SMOKE_TARGETS.MenuSmokeWhite</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_SMOKE_TARGETS).New">PROCESS_SMOKE_TARGETS:New(Task, Unit, ProcessUnit, TargetSetUnit, TargetZone)</a></td>
<td class="summary">
<p>Creates a new task assignment state machine.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_SMOKE_TARGETS).OnSmoking">PROCESS_SMOKE_TARGETS:OnSmoking(Fsm, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function for a TASK2</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_SMOKE_TARGETS).OnStart">PROCESS_SMOKE_TARGETS:OnStart(Fsm, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function for a TASK2</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_SMOKE_TARGETS).ProcessUnit">PROCESS_SMOKE_TARGETS.ProcessUnit</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_SMOKE_TARGETS).TargetSetUnit">PROCESS_SMOKE_TARGETS.TargetSetUnit</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_SMOKE_TARGETS).TargetZone">PROCESS_SMOKE_TARGETS.TargetZone</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_SMOKE_TARGETS).Task">PROCESS_SMOKE_TARGETS.Task</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2>Global(s)</h2>
<dl class="function">
<dt>
<em><a href="##(PROCESS_SMOKE_TARGETS)">#PROCESS_SMOKE_TARGETS</a></em>
<a id="PROCESS_SMOKE_TARGETS" >
<strong>PROCESS_SMOKE_TARGETS</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<h2><a id="#(Process_Smoke)" >Type <code>Process_Smoke</code></a></h2>
<h2><a id="#(PROCESS_SMOKE_TARGETS)" >Type <code>PROCESS_SMOKE_TARGETS</code></a></h2>
<p>PROCESS<em>SMOKE</em>TARGETS class</p>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(PROCESS_SMOKE_TARGETS).ClassName" >
<strong>PROCESS_SMOKE_TARGETS.ClassName</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PROCESS_SMOKE_TARGETS).Menu" >
<strong>PROCESS_SMOKE_TARGETS.Menu</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PROCESS_SMOKE_TARGETS).MenuSmokeBlue" >
<strong>PROCESS_SMOKE_TARGETS.MenuSmokeBlue</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PROCESS_SMOKE_TARGETS).MenuSmokeGreen" >
<strong>PROCESS_SMOKE_TARGETS.MenuSmokeGreen</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PROCESS_SMOKE_TARGETS).MenuSmokeOrange" >
<strong>PROCESS_SMOKE_TARGETS.MenuSmokeOrange</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PROCESS_SMOKE_TARGETS).MenuSmokeRed" >
<strong>PROCESS_SMOKE_TARGETS.MenuSmokeRed</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PROCESS_SMOKE_TARGETS).MenuSmokeWhite" >
<strong>PROCESS_SMOKE_TARGETS.MenuSmokeWhite</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_SMOKE_TARGETS).New" >
<strong>PROCESS_SMOKE_TARGETS:New(Task, Unit, ProcessUnit, TargetSetUnit, TargetZone)</strong>
</a>
</dt>
<dd>
<p>Creates a new task assignment state machine.</p>
<p>The process will request from the menu if it accepts the task, if not, the unit is removed from the simulator.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Task.html##(TASK)">Task#TASK</a> Task </em></code>: </p>
</li>
<li>
<p><code><em><a href="Unit.html##(UNIT)">Unit#UNIT</a> Unit </em></code>: </p>
</li>
<li>
<p><code><em> ProcessUnit </em></code>: </p>
</li>
<li>
<p><code><em> TargetSetUnit </em></code>: </p>
</li>
<li>
<p><code><em> TargetZone </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PROCESS_SMOKE_TARGETS)">#PROCESS<em>SMOKE</em>TARGETS</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_SMOKE_TARGETS).OnSmoking" >
<strong>PROCESS_SMOKE_TARGETS:OnSmoking(Fsm, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function for a TASK2</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="StateMachine.html##(STATEMACHINE_PROCESS)">StateMachine#STATEMACHINE_PROCESS</a> Fsm </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_SMOKE_TARGETS).OnStart" >
<strong>PROCESS_SMOKE_TARGETS:OnStart(Fsm, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function for a TASK2</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="StateMachine.html##(STATEMACHINE_TASK)">StateMachine#STATEMACHINE_TASK</a> Fsm </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Unit.html##(UNIT)">Unit#UNIT</a></em>
<a id="#(PROCESS_SMOKE_TARGETS).ProcessUnit" >
<strong>PROCESS_SMOKE_TARGETS.ProcessUnit</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Set.html##(SET_UNIT)">Set#SET_UNIT</a></em>
<a id="#(PROCESS_SMOKE_TARGETS).TargetSetUnit" >
<strong>PROCESS_SMOKE_TARGETS.TargetSetUnit</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Zone.html##(ZONE_BASE)">Zone#ZONE_BASE</a></em>
<a id="#(PROCESS_SMOKE_TARGETS).TargetZone" >
<strong>PROCESS_SMOKE_TARGETS.TargetZone</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Task.html##(TASK_BASE)">Task#TASK_BASE</a></em>
<a id="#(PROCESS_SMOKE_TARGETS).Task" >
<strong>PROCESS_SMOKE_TARGETS.Task</strong>
</a>
</dt>
<dd>
</dd>
</dl>
</div>
</div>
</body>
</html>

View File

@ -1,867 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<link rel="stylesheet" href="stylesheet.css" type="text/css"/>
</head>
<body>
<div id="container">
<div id="product">
<div id="product_logo"></div>
<div id="product_name"><big><b></b></big></div>
<div id="product_description"></div>
</div>
<div id="main">
<div id="navigation">
<h2>Modules</h2>
<ul><li>
<a href="index.html">index</a>
</li></ul>
<ul>
<li><a href="AIBalancer.html">AIBalancer</a></li>
<li><a href="Airbase.html">Airbase</a></li>
<li><a href="AirbasePolice.html">AirbasePolice</a></li>
<li><a href="Base.html">Base</a></li>
<li><a href="Cargo.html">Cargo</a></li>
<li><a href="CleanUp.html">CleanUp</a></li>
<li><a href="Client.html">Client</a></li>
<li><a href="Controllable.html">Controllable</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>
<li><a href="DCSTask.html">DCSTask</a></li>
<li><a href="DCSTypes.html">DCSTypes</a></li>
<li><a href="DCSUnit.html">DCSUnit</a></li>
<li><a href="DCSWorld.html">DCSWorld</a></li>
<li><a href="DCScountry.html">DCScountry</a></li>
<li><a href="DCStimer.html">DCStimer</a></li>
<li><a href="DCStrigger.html">DCStrigger</a></li>
<li><a href="Database.html">Database</a></li>
<li><a href="Detection.html">Detection</a></li>
<li><a href="DetectionManager.html">DetectionManager</a></li>
<li><a href="Escort.html">Escort</a></li>
<li><a href="Event.html">Event</a></li>
<li><a href="Group.html">Group</a></li>
<li><a href="Identifiable.html">Identifiable</a></li>
<li><a href="MOVEMENT.html">MOVEMENT</a></li>
<li><a href="Menu.html">Menu</a></li>
<li><a href="Message.html">Message</a></li>
<li><a href="MissileTrainer.html">MissileTrainer</a></li>
<li><a href="Mission.html">Mission</a></li>
<li><a href="Object.html">Object</a></li>
<li><a href="PatrolZone.html">PatrolZone</a></li>
<li><a href="Point.html">Point</a></li>
<li><a href="Positionable.html">Positionable</a></li>
<li><a href="Process.html">Process</a></li>
<li><a href="Process_Destroy.html">Process_Destroy</a></li>
<li><a href="Process_JTAC.html">Process_JTAC</a></li>
<li><a href="Process_Pickup.html">Process_Pickup</a></li>
<li><a href="Process_Smoke.html">Process_Smoke</a></li>
<li>STAGE</li>
<li><a href="Scheduler.html">Scheduler</a></li>
<li><a href="Scoring.html">Scoring</a></li>
<li><a href="Sead.html">Sead</a></li>
<li><a href="Set.html">Set</a></li>
<li><a href="Spawn.html">Spawn</a></li>
<li><a href="StateMachine.html">StateMachine</a></li>
<li><a href="Static.html">Static</a></li>
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_Route.html">Task_Route</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
<li><a href="Utils.html">Utils</a></li>
<li><a href="Zone.html">Zone</a></li>
<li><a href="env.html">env</a></li>
<li><a href="land.html">land</a></li>
<li><a href="routines.html">routines</a></li>
</ul>
</div>
<div id="content">
<h1>Module <code>STAGE</code></h1>
<p>Stages within a <a href="TASK.html">TASK</a> within a <a href="MISSION.html">MISSION</a>.</p>
<p>All of the STAGE functionality is considered internally administered and not to be used by any Mission designer.</p>
<h2>Global(s)</h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="#CargoStatic">CargoStatic</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#STAGE">STAGE</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#STAGEARRIVE">STAGEARRIVE</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#STAGEBRIEF">STAGEBRIEF</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#STAGEDONE">STAGEDONE</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#STAGEGROUPSDESTROYED">STAGEGROUPSDESTROYED</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#STAGELANDED">STAGELANDED</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#STAGELANDING">STAGELANDING</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#STAGELOAD">STAGELOAD</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#STAGEROUTE">STAGEROUTE</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#STAGESTART">STAGESTART</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#STAGEUNLOAD">STAGEUNLOAD</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#STAGE_CARGO_INIT">STAGE_CARGO_INIT</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#STAGE_CARGO_LOAD">STAGE_CARGO_LOAD</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#_TransportStage">_TransportStage</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#_TransportStageAction">_TransportStageAction</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#_TransportStageTime">_TransportStageTime</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2><a id="#(STAGE)" >Type <code>STAGE</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(STAGE).ClassName">STAGE.ClassName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(STAGE).Execute">STAGE:Execute(Mission, Client, Task)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(STAGE).Executing">STAGE:Executing(Mission, Client, Task)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(STAGE).FREQUENCY">STAGE.FREQUENCY</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(STAGE).Frequency">STAGE.Frequency</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(STAGE).MSG">STAGE.MSG</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(STAGE).MessageCount">STAGE.MessageCount</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(STAGE).MessageFlash">STAGE.MessageFlash</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(STAGE).MessageInterval">STAGE.MessageInterval</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(STAGE).MessageShow">STAGE.MessageShow</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(STAGE).MessageShown">STAGE.MessageShown</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(STAGE).Name">STAGE.Name</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(STAGE).New">STAGE:New()</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(STAGE).StageType">STAGE.StageType</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(STAGE).Validate">STAGE:Validate(Mission, Client, Task)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(STAGE).WaitTime">STAGE.WaitTime</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2><a id="#(STAGEBRIEF)">Type <code>STAGEBRIEF</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(STAGEBRIEF).StageBriefingTime">STAGEBRIEF.StageBriefingTime</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2>Global(s)</h2>
<dl class="function">
<dt>
<em></em>
<a id="CargoStatic" >
<strong>CargoStatic</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="##(STAGE)">#STAGE</a></em>
<a id="STAGE" >
<strong>STAGE</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="STAGEARRIVE" >
<strong>STAGEARRIVE</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="STAGEBRIEF" >
<strong>STAGEBRIEF</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="STAGEDONE" >
<strong>STAGEDONE</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="STAGEGROUPSDESTROYED" >
<strong>STAGEGROUPSDESTROYED</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="STAGELANDED" >
<strong>STAGELANDED</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="STAGELANDING" >
<strong>STAGELANDING</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="STAGELOAD" >
<strong>STAGELOAD</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="STAGEROUTE" >
<strong>STAGEROUTE</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="STAGESTART" >
<strong>STAGESTART</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="STAGEUNLOAD" >
<strong>STAGEUNLOAD</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="STAGE_CARGO_INIT" >
<strong>STAGE_CARGO_INIT</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="STAGE_CARGO_LOAD" >
<strong>STAGE_CARGO_LOAD</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="_TransportStage" >
<strong>_TransportStage</strong>
</a>
</dt>
<dd>
<p> _TransportStage: Defines the different stages of which of transport missions can be in. This table is internal and is used to control the sequence of messages, actions and flow.</p>
<ul>
<li>_TransportStage.START</li>
<li>_TransportStage.ROUTE</li>
<li>_TransportStage.LAND</li>
<li>_TransportStage.EXECUTE</li>
<li>_TransportStage.DONE</li>
<li>_TransportStage.REMOVE
--</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="_TransportStageAction" >
<strong>_TransportStageAction</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="_TransportStageTime" >
<strong>_TransportStageTime</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<h2><a id="#(STAGE)" >Type <code>STAGE</code></a></h2>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(STAGE).ClassName" >
<strong>STAGE.ClassName</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(STAGE).Execute" >
<strong>STAGE:Execute(Mission, Client, Task)</strong>
</a>
</dt>
<dd>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em> Mission </em></code>: </p>
</li>
<li>
<p><code><em> Client </em></code>: </p>
</li>
<li>
<p><code><em> Task </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(STAGE).Executing" >
<strong>STAGE:Executing(Mission, Client, Task)</strong>
</a>
</dt>
<dd>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em> Mission </em></code>: </p>
</li>
<li>
<p><code><em> Client </em></code>: </p>
</li>
<li>
<p><code><em> Task </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(STAGE).FREQUENCY" >
<strong>STAGE.FREQUENCY</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(STAGE).Frequency" >
<strong>STAGE.Frequency</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(STAGE).MSG" >
<strong>STAGE.MSG</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(STAGE).MessageCount" >
<strong>STAGE.MessageCount</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#boolean</em>
<a id="#(STAGE).MessageFlash" >
<strong>STAGE.MessageFlash</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(STAGE).MessageInterval" >
<strong>STAGE.MessageInterval</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#boolean</em>
<a id="#(STAGE).MessageShow" >
<strong>STAGE.MessageShow</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(STAGE).MessageShown" >
<strong>STAGE.MessageShown</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(STAGE).Name" >
<strong>STAGE.Name</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(STAGE).New" >
<strong>STAGE:New()</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(STAGE).StageType" >
<strong>STAGE.StageType</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(STAGE).Validate" >
<strong>STAGE:Validate(Mission, Client, Task)</strong>
</a>
</dt>
<dd>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em> Mission </em></code>: </p>
</li>
<li>
<p><code><em> Client </em></code>: </p>
</li>
<li>
<p><code><em> Task </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(STAGE).WaitTime" >
<strong>STAGE.WaitTime</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<h2><a id="#(STAGEARRIVE)" >Type <code>STAGEARRIVE</code></a></h2>
<h2><a id="#(STAGEBRIEF)" >Type <code>STAGEBRIEF</code></a></h2>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em></em>
<a id="#(STAGEBRIEF).StageBriefingTime" >
<strong>STAGEBRIEF.StageBriefingTime</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<h2><a id="#(STAGELANDING)" >Type <code>STAGELANDING</code></a></h2>
<h2><a id="#(STAGEROUTE)" >Type <code>STAGEROUTE</code></a></h2>
<h2><a id="#(STAGEUNLOAD)" >Type <code>STAGEUNLOAD</code></a></h2>
</div>
</div>
</body>
</html>

File diff suppressed because it is too large Load Diff

View File

@ -1,802 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<link rel="stylesheet" href="stylesheet.css" type="text/css"/>
</head>
<body>
<div id="container">
<div id="product">
<div id="product_logo"></div>
<div id="product_name"><big><b></b></big></div>
<div id="product_description"></div>
</div>
<div id="main">
<div id="navigation">
<h2>Modules</h2>
<ul><li>
<a href="index.html">index</a>
</li></ul>
<ul>
<li><a href="AIBalancer.html">AIBalancer</a></li>
<li><a href="Airbase.html">Airbase</a></li>
<li><a href="AirbasePolice.html">AirbasePolice</a></li>
<li><a href="Base.html">Base</a></li>
<li><a href="Cargo.html">Cargo</a></li>
<li><a href="CleanUp.html">CleanUp</a></li>
<li><a href="Client.html">Client</a></li>
<li><a href="Controllable.html">Controllable</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>
<li><a href="DCSTask.html">DCSTask</a></li>
<li><a href="DCSTypes.html">DCSTypes</a></li>
<li><a href="DCSUnit.html">DCSUnit</a></li>
<li><a href="DCSWorld.html">DCSWorld</a></li>
<li><a href="DCScountry.html">DCScountry</a></li>
<li><a href="DCStimer.html">DCStimer</a></li>
<li><a href="DCStrigger.html">DCStrigger</a></li>
<li><a href="Database.html">Database</a></li>
<li><a href="Detection.html">Detection</a></li>
<li><a href="DetectionManager.html">DetectionManager</a></li>
<li><a href="Escort.html">Escort</a></li>
<li><a href="Event.html">Event</a></li>
<li><a href="Group.html">Group</a></li>
<li><a href="Identifiable.html">Identifiable</a></li>
<li><a href="MOVEMENT.html">MOVEMENT</a></li>
<li><a href="Menu.html">Menu</a></li>
<li><a href="Message.html">Message</a></li>
<li><a href="MissileTrainer.html">MissileTrainer</a></li>
<li><a href="Mission.html">Mission</a></li>
<li><a href="Object.html">Object</a></li>
<li><a href="Point.html">Point</a></li>
<li><a href="Positionable.html">Positionable</a></li>
<li><a href="Process.html">Process</a></li>
<li><a href="Process_Destroy.html">Process_Destroy</a></li>
<li><a href="Process_JTAC.html">Process_JTAC</a></li>
<li><a href="Process_PatrolZone.html">Process_PatrolZone</a></li>
<li><a href="Process_Pickup.html">Process_Pickup</a></li>
<li><a href="Process_Smoke.html">Process_Smoke</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
<li><a href="Scoring.html">Scoring</a></li>
<li><a href="Sead.html">Sead</a></li>
<li><a href="Set.html">Set</a></li>
<li><a href="Spawn.html">Spawn</a></li>
<li><a href="StateMachine.html">StateMachine</a></li>
<li><a href="Static.html">Static</a></li>
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li>Task_Assign</li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_Route.html">Task_Route</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
<li><a href="Zone.html">Zone</a></li>
<li><a href="env.html">env</a></li>
<li><a href="land.html">land</a></li>
</ul>
</div>
<div id="content">
<h1>Module <code>Task_Assign</code></h1>
<p>This module contains the PROCESS_ASSIGN classes.</p>
<hr/>
<h1>1) <a href="Task_Assign.html##(TASK_ASSIGN_ACCEPT)">Task<em>Assign#TASK</em>ASSIGN_ACCEPT</a> class, extends <a href="Task.html##(TASK_BASE)">Task#TASK_BASE</a></h1>
<p>The <a href="Task_Assign.html##(TASK_ASSIGN_ACCEPT)">Task<em>Assign#TASK</em>ASSIGN_ACCEPT</a> class accepts by default a task for a player. No player intervention is allowed to reject the task.</p>
<h1>2) <a href="Task_Assign.html##(TASK_ASSIGN_MENU_ACCEPT)">Task<em>Assign#TASK</em>ASSIGN<em>MENU</em>ACCEPT</a> class, extends <a href="Task.html##(TASK_BASE)">Task#TASK_BASE</a></h1>
<p>The <a href="Task_Assign.html##(TASK_ASSIGN_MENU_ACCEPT)">Task<em>Assign#TASK</em>ASSIGN<em>MENU</em>ACCEPT</a> class accepts a task when the player accepts the task through an added menu option.
This assignment type is useful to conditionally allow the player to choose whether or not he would accept the task.
The assignment type also allows to reject the task.</p>
<h2>Global(s)</h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="#PROCESS_ASSIGN_ACCEPT">PROCESS_ASSIGN_ACCEPT</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#PROCESS_ASSIGN_MENU_ACCEPT">PROCESS_ASSIGN_MENU_ACCEPT</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2><a id="#(PROCESS_ASSIGN_ACCEPT)">Type <code>PROCESS_ASSIGN_ACCEPT</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_ACCEPT).ClassName">PROCESS_ASSIGN_ACCEPT.ClassName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_ACCEPT).Fsm">PROCESS_ASSIGN_ACCEPT.Fsm</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_ACCEPT).New">PROCESS_ASSIGN_ACCEPT:New(Task, Unit, ProcessUnit, TaskBriefing)</a></td>
<td class="summary">
<p>Creates a new task assignment state machine.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_ACCEPT).OnAssigned">PROCESS_ASSIGN_ACCEPT:OnAssigned(Fsm, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function for a TASK2</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_ACCEPT).ProcessUnit">PROCESS_ASSIGN_ACCEPT.ProcessUnit</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_ACCEPT).TargetZone">PROCESS_ASSIGN_ACCEPT.TargetZone</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_ACCEPT).Task">PROCESS_ASSIGN_ACCEPT.Task</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_ACCEPT).TaskBriefing">PROCESS_ASSIGN_ACCEPT.TaskBriefing</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2><a id="#(PROCESS_ASSIGN_MENU_ACCEPT)">Type <code>PROCESS_ASSIGN_MENU_ACCEPT</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_MENU_ACCEPT).ClassName">PROCESS_ASSIGN_MENU_ACCEPT.ClassName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_MENU_ACCEPT).Fsm">PROCESS_ASSIGN_MENU_ACCEPT.Fsm</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_MENU_ACCEPT).Menu">PROCESS_ASSIGN_MENU_ACCEPT.Menu</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_MENU_ACCEPT).MenuAcceptTask">PROCESS_ASSIGN_MENU_ACCEPT.MenuAcceptTask</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_MENU_ACCEPT).MenuAssign">PROCESS_ASSIGN_MENU_ACCEPT:MenuAssign()</a></td>
<td class="summary">
<p>Menu function.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_MENU_ACCEPT).MenuReject">PROCESS_ASSIGN_MENU_ACCEPT:MenuReject()</a></td>
<td class="summary">
<p>Menu function.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_MENU_ACCEPT).MenuRejectTask">PROCESS_ASSIGN_MENU_ACCEPT.MenuRejectTask</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_MENU_ACCEPT).MenuText">PROCESS_ASSIGN_MENU_ACCEPT.MenuText</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_MENU_ACCEPT).New">PROCESS_ASSIGN_MENU_ACCEPT:New(Task, Unit, ProcessUnit, TaskBriefing)</a></td>
<td class="summary">
<p>Creates a new task assignment state machine.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_MENU_ACCEPT).OnAssign">PROCESS_ASSIGN_MENU_ACCEPT:OnAssign(Fsm, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function for a TASK2</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_MENU_ACCEPT).OnReject">PROCESS_ASSIGN_MENU_ACCEPT:OnReject(Fsm, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function for a TASK2</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_MENU_ACCEPT).OnStart">PROCESS_ASSIGN_MENU_ACCEPT:OnStart(Fsm, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function for a TASK2</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_MENU_ACCEPT).ProcessUnit">PROCESS_ASSIGN_MENU_ACCEPT.ProcessUnit</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_MENU_ACCEPT).TargetZone">PROCESS_ASSIGN_MENU_ACCEPT.TargetZone</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_MENU_ACCEPT).Task">PROCESS_ASSIGN_MENU_ACCEPT.Task</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ASSIGN_MENU_ACCEPT).TaskBriefing">PROCESS_ASSIGN_MENU_ACCEPT.TaskBriefing</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2>Global(s)</h2>
<dl class="function">
<dt>
<em><a href="##(PROCESS_ASSIGN_ACCEPT)">#PROCESS_ASSIGN_ACCEPT</a></em>
<a id="PROCESS_ASSIGN_ACCEPT" >
<strong>PROCESS_ASSIGN_ACCEPT</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="##(PROCESS_ASSIGN_MENU_ACCEPT)">#PROCESS_ASSIGN_MENU_ACCEPT</a></em>
<a id="PROCESS_ASSIGN_MENU_ACCEPT" >
<strong>PROCESS_ASSIGN_MENU_ACCEPT</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<h2><a id="#(Task_Assign)" >Type <code>Task_Assign</code></a></h2>
<h2><a id="#(PROCESS_ASSIGN_ACCEPT)" >Type <code>PROCESS_ASSIGN_ACCEPT</code></a></h2>
<p>PROCESS<em>ASSIGN</em>ACCEPT class</p>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(PROCESS_ASSIGN_ACCEPT).ClassName" >
<strong>PROCESS_ASSIGN_ACCEPT.ClassName</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PROCESS_ASSIGN_ACCEPT).Fsm" >
<strong>PROCESS_ASSIGN_ACCEPT.Fsm</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_ASSIGN_ACCEPT).New" >
<strong>PROCESS_ASSIGN_ACCEPT:New(Task, Unit, ProcessUnit, TaskBriefing)</strong>
</a>
</dt>
<dd>
<p>Creates a new task assignment state machine.</p>
<p>The process will accept the task by default, no player intervention accepted.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Task.html##(TASK)">Task#TASK</a> Task </em></code>: </p>
</li>
<li>
<p><code><em><a href="Unit.html##(UNIT)">Unit#UNIT</a> Unit </em></code>: </p>
</li>
<li>
<p><code><em> ProcessUnit </em></code>: </p>
</li>
<li>
<p><code><em> TaskBriefing </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PROCESS_ASSIGN_ACCEPT)">#PROCESS<em>ASSIGN</em>ACCEPT</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_ASSIGN_ACCEPT).OnAssigned" >
<strong>PROCESS_ASSIGN_ACCEPT:OnAssigned(Fsm, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function for a TASK2</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="StateMachine.html##(STATEMACHINE_PROCESS)">StateMachine#STATEMACHINE_PROCESS</a> Fsm </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Unit.html##(UNIT)">Unit#UNIT</a></em>
<a id="#(PROCESS_ASSIGN_ACCEPT).ProcessUnit" >
<strong>PROCESS_ASSIGN_ACCEPT.ProcessUnit</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Zone.html##(ZONE_BASE)">Zone#ZONE_BASE</a></em>
<a id="#(PROCESS_ASSIGN_ACCEPT).TargetZone" >
<strong>PROCESS_ASSIGN_ACCEPT.TargetZone</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Task.html##(TASK_BASE)">Task#TASK_BASE</a></em>
<a id="#(PROCESS_ASSIGN_ACCEPT).Task" >
<strong>PROCESS_ASSIGN_ACCEPT.Task</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PROCESS_ASSIGN_ACCEPT).TaskBriefing" >
<strong>PROCESS_ASSIGN_ACCEPT.TaskBriefing</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<h2><a id="#(PROCESS_ASSIGN_MENU_ACCEPT)" >Type <code>PROCESS_ASSIGN_MENU_ACCEPT</code></a></h2>
<p>PROCESS<em>ASSIGN</em>MENU_ACCEPT class</p>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(PROCESS_ASSIGN_MENU_ACCEPT).ClassName" >
<strong>PROCESS_ASSIGN_MENU_ACCEPT.ClassName</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PROCESS_ASSIGN_MENU_ACCEPT).Fsm" >
<strong>PROCESS_ASSIGN_MENU_ACCEPT.Fsm</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PROCESS_ASSIGN_MENU_ACCEPT).Menu" >
<strong>PROCESS_ASSIGN_MENU_ACCEPT.Menu</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PROCESS_ASSIGN_MENU_ACCEPT).MenuAcceptTask" >
<strong>PROCESS_ASSIGN_MENU_ACCEPT.MenuAcceptTask</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_ASSIGN_MENU_ACCEPT).MenuAssign" >
<strong>PROCESS_ASSIGN_MENU_ACCEPT:MenuAssign()</strong>
</a>
</dt>
<dd>
<p>Menu function.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_ASSIGN_MENU_ACCEPT).MenuReject" >
<strong>PROCESS_ASSIGN_MENU_ACCEPT:MenuReject()</strong>
</a>
</dt>
<dd>
<p>Menu function.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PROCESS_ASSIGN_MENU_ACCEPT).MenuRejectTask" >
<strong>PROCESS_ASSIGN_MENU_ACCEPT.MenuRejectTask</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PROCESS_ASSIGN_MENU_ACCEPT).MenuText" >
<strong>PROCESS_ASSIGN_MENU_ACCEPT.MenuText</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_ASSIGN_MENU_ACCEPT).New" >
<strong>PROCESS_ASSIGN_MENU_ACCEPT:New(Task, Unit, ProcessUnit, TaskBriefing)</strong>
</a>
</dt>
<dd>
<p>Creates a new task assignment state machine.</p>
<p>The process will request from the menu if it accepts the task, if not, the unit is removed from the simulator.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Task.html##(TASK)">Task#TASK</a> Task </em></code>: </p>
</li>
<li>
<p><code><em><a href="Unit.html##(UNIT)">Unit#UNIT</a> Unit </em></code>: </p>
</li>
<li>
<p><code><em> ProcessUnit </em></code>: </p>
</li>
<li>
<p><code><em> TaskBriefing </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PROCESS_ASSIGN_MENU_ACCEPT)">#PROCESS<em>ASSIGN</em>MENU_ACCEPT</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_ASSIGN_MENU_ACCEPT).OnAssign" >
<strong>PROCESS_ASSIGN_MENU_ACCEPT:OnAssign(Fsm, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function for a TASK2</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="StateMachine.html##(STATEMACHINE_PROCESS)">StateMachine#STATEMACHINE_PROCESS</a> Fsm </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_ASSIGN_MENU_ACCEPT).OnReject" >
<strong>PROCESS_ASSIGN_MENU_ACCEPT:OnReject(Fsm, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function for a TASK2</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="StateMachine.html##(STATEMACHINE_PROCESS)">StateMachine#STATEMACHINE_PROCESS</a> Fsm </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_ASSIGN_MENU_ACCEPT).OnStart" >
<strong>PROCESS_ASSIGN_MENU_ACCEPT:OnStart(Fsm, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function for a TASK2</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="StateMachine.html##(STATEMACHINE_TASK)">StateMachine#STATEMACHINE_TASK</a> Fsm </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Unit.html##(UNIT)">Unit#UNIT</a></em>
<a id="#(PROCESS_ASSIGN_MENU_ACCEPT).ProcessUnit" >
<strong>PROCESS_ASSIGN_MENU_ACCEPT.ProcessUnit</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Zone.html##(ZONE_BASE)">Zone#ZONE_BASE</a></em>
<a id="#(PROCESS_ASSIGN_MENU_ACCEPT).TargetZone" >
<strong>PROCESS_ASSIGN_MENU_ACCEPT.TargetZone</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Task.html##(TASK_BASE)">Task#TASK_BASE</a></em>
<a id="#(PROCESS_ASSIGN_MENU_ACCEPT).Task" >
<strong>PROCESS_ASSIGN_MENU_ACCEPT.Task</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PROCESS_ASSIGN_MENU_ACCEPT).TaskBriefing" >
<strong>PROCESS_ASSIGN_MENU_ACCEPT.TaskBriefing</strong>
</a>
</dt>
<dd>
</dd>
</dl>
</div>
</div>
</body>
</html>

View File

@ -1,416 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<link rel="stylesheet" href="stylesheet.css" type="text/css"/>
</head>
<body>
<div id="container">
<div id="product">
<div id="product_logo"></div>
<div id="product_name"><big><b></b></big></div>
<div id="product_description"></div>
</div>
<div id="main">
<div id="navigation">
<h2>Modules</h2>
<ul><li>
<a href="index.html">index</a>
</li></ul>
<ul>
<li><a href="AI_Balancer.html">AI_Balancer</a></li>
<li><a href="Account.html">Account</a></li>
<li><a href="Airbase.html">Airbase</a></li>
<li><a href="AirbasePolice.html">AirbasePolice</a></li>
<li><a href="Assign.html">Assign</a></li>
<li><a href="Base.html">Base</a></li>
<li><a href="Cargo.html">Cargo</a></li>
<li><a href="CleanUp.html">CleanUp</a></li>
<li><a href="Client.html">Client</a></li>
<li><a href="CommandCenter.html">CommandCenter</a></li>
<li><a href="Controllable.html">Controllable</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>
<li><a href="DCSTask.html">DCSTask</a></li>
<li><a href="DCSTypes.html">DCSTypes</a></li>
<li><a href="DCSUnit.html">DCSUnit</a></li>
<li><a href="DCSWorld.html">DCSWorld</a></li>
<li><a href="DCScountry.html">DCScountry</a></li>
<li><a href="DCStimer.html">DCStimer</a></li>
<li><a href="DCStrigger.html">DCStrigger</a></li>
<li><a href="Database.html">Database</a></li>
<li><a href="Detection.html">Detection</a></li>
<li><a href="Escort.html">Escort</a></li>
<li><a href="Event.html">Event</a></li>
<li><a href="Fsm.html">Fsm</a></li>
<li><a href="Group.html">Group</a></li>
<li><a href="Identifiable.html">Identifiable</a></li>
<li><a href="MOVEMENT.html">MOVEMENT</a></li>
<li><a href="Menu.html">Menu</a></li>
<li><a href="Message.html">Message</a></li>
<li><a href="MissileTrainer.html">MissileTrainer</a></li>
<li><a href="Mission.html">Mission</a></li>
<li><a href="Object.html">Object</a></li>
<li><a href="Patrol.html">Patrol</a></li>
<li><a href="Point.html">Point</a></li>
<li><a href="Positionable.html">Positionable</a></li>
<li><a href="Process_JTAC.html">Process_JTAC</a></li>
<li><a href="Process_Pickup.html">Process_Pickup</a></li>
<li><a href="Route.html">Route</a></li>
<li><a href="ScheduleDispatcher.html">ScheduleDispatcher</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
<li><a href="Scoring.html">Scoring</a></li>
<li><a href="Sead.html">Sead</a></li>
<li><a href="Set.html">Set</a></li>
<li><a href="Smoke.html">Smoke</a></li>
<li><a href="Spawn.html">Spawn</a></li>
<li><a href="Static.html">Static</a></li>
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li>Task_Client_Menu</li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
<li><a href="Utils.html">Utils</a></li>
<li><a href="Zone.html">Zone</a></li>
<li><a href="env.html">env</a></li>
<li><a href="land.html">land</a></li>
<li><a href="routines.html">routines</a></li>
</ul>
</div>
<div id="content">
<h1>Module <code>Task_Client_Menu</code></h1>
<h2>Global(s)</h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="#TASK2_MENU_CLIENT">TASK2_MENU_CLIENT</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2><a id="#(TASK2_MENU_CLIENT)">Type <code>TASK2_MENU_CLIENT</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK2_MENU_CLIENT).ClassName">TASK2_MENU_CLIENT.ClassName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK2_MENU_CLIENT).Fsm">TASK2_MENU_CLIENT.Fsm</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK2_MENU_CLIENT).Menu">TASK2_MENU_CLIENT.Menu</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK2_MENU_CLIENT).MenuAssign">TASK2_MENU_CLIENT:MenuAssign()</a></td>
<td class="summary">
<p>Menu function.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK2_MENU_CLIENT).MenuTask">TASK2_MENU_CLIENT.MenuTask</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK2_MENU_CLIENT).MenuText">TASK2_MENU_CLIENT.MenuText</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK2_MENU_CLIENT).New">TASK2_MENU_CLIENT:New(Mission, TaskUnit, MenuText)</a></td>
<td class="summary">
<p>Creates a new MENU handling machine.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK2_MENU_CLIENT).OnAssign">TASK2_MENU_CLIENT:OnAssign(Fsm, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function for a TASK2</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK2_MENU_CLIENT).OnMenu">TASK2_MENU_CLIENT:OnMenu(Fsm, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function for a TASK2</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK2_MENU_CLIENT).TargetSet">TASK2_MENU_CLIENT.TargetSet</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK2_MENU_CLIENT).TaskUnit">TASK2_MENU_CLIENT.TaskUnit</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2>Global(s)</h2>
<dl class="function">
<dt>
<em><a href="##(TASK2_MENU_CLIENT)">#TASK2_MENU_CLIENT</a></em>
<a id="TASK2_MENU_CLIENT" >
<strong>TASK2_MENU_CLIENT</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<h2><a id="#(Task_Client_Menu)" >Type <code>Task_Client_Menu</code></a></h2>
<h2><a id="#(TASK2_MENU_CLIENT)" >Type <code>TASK2_MENU_CLIENT</code></a></h2>
<p>TASK2<em>MENU</em>CLIENT class</p>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(TASK2_MENU_CLIENT).ClassName" >
<strong>TASK2_MENU_CLIENT.ClassName</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(TASK2_MENU_CLIENT).Fsm" >
<strong>TASK2_MENU_CLIENT.Fsm</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(TASK2_MENU_CLIENT).Menu" >
<strong>TASK2_MENU_CLIENT.Menu</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(TASK2_MENU_CLIENT).MenuAssign" >
<strong>TASK2_MENU_CLIENT:MenuAssign()</strong>
</a>
</dt>
<dd>
<p>Menu function.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Core.Menu.html##(MENU_CLIENT_COMMAND)">Core.Menu#MENU_CLIENT_COMMAND</a></em>
<a id="#(TASK2_MENU_CLIENT).MenuTask" >
<strong>TASK2_MENU_CLIENT.MenuTask</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(TASK2_MENU_CLIENT).MenuText" >
<strong>TASK2_MENU_CLIENT.MenuText</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(TASK2_MENU_CLIENT).New" >
<strong>TASK2_MENU_CLIENT:New(Mission, TaskUnit, MenuText)</strong>
</a>
</dt>
<dd>
<p>Creates a new MENU handling machine.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Tasking.Mission.html##(MISSION)">Tasking.Mission#MISSION</a> Mission </em></code>: </p>
</li>
<li>
<p><code><em><a href="Wrapper.Unit.html##(UNIT)">Wrapper.Unit#UNIT</a> TaskUnit </em></code>: </p>
</li>
<li>
<p><code><em>#string MenuText </em></code>:
The text of the menu item.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(TASK2_MENU_CLIENT)">#TASK2<em>MENU</em>CLIENT</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(TASK2_MENU_CLIENT).OnAssign" >
<strong>TASK2_MENU_CLIENT:OnAssign(Fsm, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function for a TASK2</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Core.Fsm.html##(FSM_TASK)">Core.Fsm#FSM_TASK</a> Fsm </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(TASK2_MENU_CLIENT).OnMenu" >
<strong>TASK2_MENU_CLIENT:OnMenu(Fsm, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function for a TASK2</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Core.Fsm.html##(FSM_TASK)">Core.Fsm#FSM_TASK</a> Fsm </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Core.Set.html##(SET_UNIT)">Core.Set#SET_UNIT</a></em>
<a id="#(TASK2_MENU_CLIENT).TargetSet" >
<strong>TASK2_MENU_CLIENT.TargetSet</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Wrapper.Unit.html##(UNIT)">Wrapper.Unit#UNIT</a></em>
<a id="#(TASK2_MENU_CLIENT).TaskUnit" >
<strong>TASK2_MENU_CLIENT.TaskUnit</strong>
</a>
</dt>
<dd>
</dd>
</dl>
</div>
</div>
</body>
</html>

View File

@ -1,426 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<link rel="stylesheet" href="stylesheet.css" type="text/css"/>
</head>
<body>
<div id="container">
<div id="product">
<div id="product_logo"></div>
<div id="product_name"><big><b></b></big></div>
<div id="product_description"></div>
</div>
<div id="main">
<div id="navigation">
<h2>Modules</h2>
<ul><li>
<a href="index.html">index</a>
</li></ul>
<ul>
<li><a href="AIBalancer.html">AIBalancer</a></li>
<li><a href="Airbase.html">Airbase</a></li>
<li><a href="AirbasePolice.html">AirbasePolice</a></li>
<li><a href="Base.html">Base</a></li>
<li><a href="Cargo.html">Cargo</a></li>
<li><a href="CleanUp.html">CleanUp</a></li>
<li><a href="Client.html">Client</a></li>
<li><a href="Controllable.html">Controllable</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>
<li><a href="DCSTask.html">DCSTask</a></li>
<li><a href="DCSTypes.html">DCSTypes</a></li>
<li><a href="DCSUnit.html">DCSUnit</a></li>
<li><a href="DCSWorld.html">DCSWorld</a></li>
<li><a href="DCScountry.html">DCScountry</a></li>
<li><a href="DCStimer.html">DCStimer</a></li>
<li><a href="DCStrigger.html">DCStrigger</a></li>
<li><a href="Database.html">Database</a></li>
<li><a href="Detection.html">Detection</a></li>
<li><a href="DetectionManager.html">DetectionManager</a></li>
<li><a href="Escort.html">Escort</a></li>
<li><a href="Event.html">Event</a></li>
<li><a href="Group.html">Group</a></li>
<li><a href="Identifiable.html">Identifiable</a></li>
<li><a href="MOVEMENT.html">MOVEMENT</a></li>
<li><a href="Menu.html">Menu</a></li>
<li><a href="Message.html">Message</a></li>
<li><a href="MissileTrainer.html">MissileTrainer</a></li>
<li><a href="Mission.html">Mission</a></li>
<li><a href="Object.html">Object</a></li>
<li><a href="Point.html">Point</a></li>
<li><a href="Positionable.html">Positionable</a></li>
<li><a href="Process.html">Process</a></li>
<li><a href="Process_Destroy.html">Process_Destroy</a></li>
<li><a href="Process_JTAC.html">Process_JTAC</a></li>
<li><a href="Process_PatrolZone.html">Process_PatrolZone</a></li>
<li><a href="Process_Pickup.html">Process_Pickup</a></li>
<li><a href="Process_Smoke.html">Process_Smoke</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
<li><a href="Scoring.html">Scoring</a></li>
<li><a href="Sead.html">Sead</a></li>
<li><a href="Set.html">Set</a></li>
<li><a href="Spawn.html">Spawn</a></li>
<li><a href="StateMachine.html">StateMachine</a></li>
<li><a href="Static.html">Static</a></li>
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li>Task_Route</li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
<li><a href="Zone.html">Zone</a></li>
<li><a href="env.html">env</a></li>
<li><a href="land.html">land</a></li>
</ul>
</div>
<div id="content">
<h1>Module <code>Task_Route</code></h1>
<h2>Global(s)</h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="#PROCESS_ROUTE">PROCESS_ROUTE</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2><a id="#(PROCESS_ROUTE)">Type <code>PROCESS_ROUTE</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ROUTE).ClassName">PROCESS_ROUTE.ClassName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ROUTE).DisplayCategory">PROCESS_ROUTE.DisplayCategory</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ROUTE).DisplayCount">PROCESS_ROUTE.DisplayCount</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ROUTE).DisplayInterval">PROCESS_ROUTE.DisplayInterval</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ROUTE).DisplayMessage">PROCESS_ROUTE.DisplayMessage</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ROUTE).DisplayTime">PROCESS_ROUTE.DisplayTime</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ROUTE).Fsm">PROCESS_ROUTE.Fsm</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ROUTE).New">PROCESS_ROUTE:New(Task, Unit, ProcessUnit, TargetZone)</a></td>
<td class="summary">
<p>Creates a new routing state machine.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ROUTE).OnLeaveUnArrived">PROCESS_ROUTE:OnLeaveUnArrived(Fsm, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function for a TASK2</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ROUTE).ProcessUnit">PROCESS_ROUTE.ProcessUnit</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ROUTE).TASK">PROCESS_ROUTE.TASK</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(PROCESS_ROUTE).TargetZone">PROCESS_ROUTE.TargetZone</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2>Global(s)</h2>
<dl class="function">
<dt>
<em><a href="##(PROCESS_ROUTE)">#PROCESS_ROUTE</a></em>
<a id="PROCESS_ROUTE" >
<strong>PROCESS_ROUTE</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<h2><a id="#(Task_Route)" >Type <code>Task_Route</code></a></h2>
<h2><a id="#(PROCESS_ROUTE)" >Type <code>PROCESS_ROUTE</code></a></h2>
<p>PROCESS_ROUTE class</p>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(PROCESS_ROUTE).ClassName" >
<strong>PROCESS_ROUTE.ClassName</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(PROCESS_ROUTE).DisplayCategory" >
<strong>PROCESS_ROUTE.DisplayCategory</strong>
</a>
</dt>
<dd>
<p> Route is the default display category</p>
</dd>
</dl>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(PROCESS_ROUTE).DisplayCount" >
<strong>PROCESS_ROUTE.DisplayCount</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(PROCESS_ROUTE).DisplayInterval" >
<strong>PROCESS_ROUTE.DisplayInterval</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#boolean</em>
<a id="#(PROCESS_ROUTE).DisplayMessage" >
<strong>PROCESS_ROUTE.DisplayMessage</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(PROCESS_ROUTE).DisplayTime" >
<strong>PROCESS_ROUTE.DisplayTime</strong>
</a>
</dt>
<dd>
<p> 10 seconds is the default</p>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(PROCESS_ROUTE).Fsm" >
<strong>PROCESS_ROUTE.Fsm</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_ROUTE).New" >
<strong>PROCESS_ROUTE:New(Task, Unit, ProcessUnit, TargetZone)</strong>
</a>
</dt>
<dd>
<p>Creates a new routing state machine.</p>
<p>The task will route a CLIENT to a ZONE until the CLIENT is within that ZONE.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Task.html##(TASK)">Task#TASK</a> Task </em></code>: </p>
</li>
<li>
<p><code><em><a href="Unit.html##(UNIT)">Unit#UNIT</a> Unit </em></code>: </p>
</li>
<li>
<p><code><em> ProcessUnit </em></code>: </p>
</li>
<li>
<p><code><em> TargetZone </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(PROCESS_ROUTE)">#PROCESS_ROUTE</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(PROCESS_ROUTE).OnLeaveUnArrived" >
<strong>PROCESS_ROUTE:OnLeaveUnArrived(Fsm, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function for a TASK2</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="StateMachine.html##(STATEMACHINE_PROCESS)">StateMachine#STATEMACHINE_PROCESS</a> Fsm </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Unit.html##(UNIT)">Unit#UNIT</a></em>
<a id="#(PROCESS_ROUTE).ProcessUnit" >
<strong>PROCESS_ROUTE.ProcessUnit</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Task.html##(TASK)">Task#TASK</a></em>
<a id="#(PROCESS_ROUTE).TASK" >
<strong>PROCESS_ROUTE.TASK</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Zone.html##(ZONE_BASE)">Zone#ZONE_BASE</a></em>
<a id="#(PROCESS_ROUTE).TargetZone" >
<strong>PROCESS_ROUTE.TargetZone</strong>
</a>
</dt>
<dd>
</dd>
</dl>
</div>
</div>
</body>
</html>

View File

@ -1,776 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<link rel="stylesheet" href="stylesheet.css" type="text/css"/>
</head>
<body>
<div id="container">
<div id="product">
<div id="product_logo"></div>
<div id="product_name"><big><b></b></big></div>
<div id="product_description"></div>
</div>
<div id="main">
<div id="navigation">
<h2>Modules</h2>
<ul><li>
<a href="index.html">index</a>
</li></ul>
<ul>
<li><a href="AIBalancer.html">AIBalancer</a></li>
<li><a href="Airbase.html">Airbase</a></li>
<li><a href="AirbasePolice.html">AirbasePolice</a></li>
<li><a href="Assign.html">Assign</a></li>
<li><a href="Base.html">Base</a></li>
<li><a href="Cargo.html">Cargo</a></li>
<li><a href="CleanUp.html">CleanUp</a></li>
<li><a href="Client.html">Client</a></li>
<li><a href="Controllable.html">Controllable</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>
<li><a href="DCSTask.html">DCSTask</a></li>
<li><a href="DCSTypes.html">DCSTypes</a></li>
<li><a href="DCSUnit.html">DCSUnit</a></li>
<li><a href="DCSWorld.html">DCSWorld</a></li>
<li><a href="DCScountry.html">DCScountry</a></li>
<li><a href="DCStimer.html">DCStimer</a></li>
<li><a href="DCStrigger.html">DCStrigger</a></li>
<li><a href="Database.html">Database</a></li>
<li><a href="Detection.html">Detection</a></li>
<li><a href="DetectionManager.html">DetectionManager</a></li>
<li><a href="Escort.html">Escort</a></li>
<li><a href="Event.html">Event</a></li>
<li><a href="Group.html">Group</a></li>
<li><a href="Identifiable.html">Identifiable</a></li>
<li><a href="MOVEMENT.html">MOVEMENT</a></li>
<li><a href="Menu.html">Menu</a></li>
<li><a href="Message.html">Message</a></li>
<li><a href="MissileTrainer.html">MissileTrainer</a></li>
<li><a href="Mission.html">Mission</a></li>
<li><a href="Object.html">Object</a></li>
<li><a href="Patrol.html">Patrol</a></li>
<li><a href="Point.html">Point</a></li>
<li><a href="Positionable.html">Positionable</a></li>
<li><a href="Process.html">Process</a></li>
<li><a href="Process_JTAC.html">Process_JTAC</a></li>
<li><a href="Process_Pickup.html">Process_Pickup</a></li>
<li><a href="Process_Smoke.html">Process_Smoke</a></li>
<li><a href="Route.html">Route</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
<li><a href="Scoring.html">Scoring</a></li>
<li><a href="Sead.html">Sead</a></li>
<li><a href="Set.html">Set</a></li>
<li><a href="Spawn.html">Spawn</a></li>
<li><a href="StateMachine.html">StateMachine</a></li>
<li><a href="Static.html">Static</a></li>
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li>TrackHits</li>
<li><a href="Unit.html">Unit</a></li>
<li><a href="Zone.html">Zone</a></li>
<li><a href="env.html">env</a></li>
<li><a href="land.html">land</a></li>
</ul>
</div>
<div id="content">
<h1>Module <code>TrackHits</code></h1>
<p>(SP) (MP) (FSM) Detect, count and report successful hits to DCS objects.</p>
<hr/>
<h1><a href="##(ACCOUNT)">#ACCOUNT</a> FSM class, extends <a href="Process.html##(PROCESS)">Process#PROCESS</a></h1>
<p>The <a href="##(ACCOUNT_DEADS)">#ACCOUNT_DEADS</a> class detects, counts and reports successful hits to DCS objects.
The process is given a <a href="Set.html">Set</a> of units that will be tracked upon successful destruction.
The process will end after each target has been successfully destroyed.
Each successful destruction will trigger a status change.</p>
<h2>1.1) ACCOUNT_DEADS constructor:</h2>
<ul>
<li><a href="##(ACCOUNT_DEADS).New">ACCOUNT_DEADS.New</a>(): Creates a new ACCOUNT_DEADS object.</li>
</ul>
<h2>1.2) ACCOUNT state machine:</h2>
<p>The ACCOUNT is a state machine: it manages the different events and states of the Controllable it is controlling.</p>
<h3>1.2.1) ACCOUNT <strong>Events</strong>:</h3>
<p>Event methods are available (dynamically allocated by the state machine), that accomodate for state transitions to occur in the process.
There are two types of event methods:</p>
<ul>
<li><strong>Immediate</strong>: The event method has exactly the name of the event.</li>
<li><strong>Delayed</strong>: The event method starts with a __ + the name of the event. The first parameter of the event method is a number value, expressing the delay in seconds when the event will be executed. </li>
</ul>
<p>These are the events defined in this class:</p>
<ul>
<li><strong>Start</strong>: The process is started. The process will go into the Waiting state.</li>
<li><strong>Event</strong>: A relevant event has occured that needs to be accounted for. The process will go into the Account state.</li>
<li><strong>More</strong>: There are more DCS events that need to be accounted for. The process will go back into the Waiting state.</li>
<li><strong>NoMore</strong>: There are no more DCS events that need to be accounted for. The process will go into the Success state.</li>
</ul>
<h3>1.2.2) ACCOUNT <strong>States</strong>:</h3>
<ul>
<li><strong>Assigned</strong>: The player is assigned to the task. This is the initialization state for the process.</li>
<li><strong>Waiting</strong>: The process is awaiting an DCS event to occur within the simulator. This event is called automatically every 1 second.</li>
<li><strong>Account</strong>: The relevant DCS event has occurred, and is accounted for.</li>
<li><strong>Success (*)</strong>: All DCS events were accounted for. </li>
<li><strong>Failed (*)</strong>: The process has failed.</li>
</ul>
<p>(*) End states of the process.</p>
<h3>1.2.3) ACCOUNT_DEADS state transition functions:</h3>
<p>State transition functions can be set <strong>by the mission designer</strong> customizing or improving the behaviour of the state.
There are 2 moments when state transition functions will be called by the state machine:</p>
<ul>
<li><p><strong>Before</strong> the state transition.
The state transition function needs to start with the name <strong>OnBefore + the name of the state</strong>.
If the state transition function returns false, then the processing of the state transition will not be done!
If you want to change the behaviour of the AIControllable at this event, return false,
but then you'll need to specify your own logic using the AIControllable!</p></li>
<li><p><strong>After</strong> the state transition.
The state transition function needs to start with the name <strong>OnAfter + the name of the state</strong>.
These state transition functions need to provide a return value, which is specified at the function description.</p></li>
</ul>
<h2>1.3) Manage the ACCOUNT_DEADS parameters:</h2>
<p>The following methods are available to modify the parameters of a ACCOUNT_DEADS object:</p>
<h2>Global(s)</h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="#ACCOUNT_DEADS">ACCOUNT_DEADS</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2><a id="#(ACCOUNT_DEADS)">Type <code>ACCOUNT_DEADS</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(ACCOUNT_DEADS).ClassName">ACCOUNT_DEADS.ClassName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ACCOUNT_DEADS).DisplayCategory">ACCOUNT_DEADS.DisplayCategory</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ACCOUNT_DEADS).DisplayCount">ACCOUNT_DEADS.DisplayCount</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ACCOUNT_DEADS).DisplayInterval">ACCOUNT_DEADS.DisplayInterval</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ACCOUNT_DEADS).DisplayMessage">ACCOUNT_DEADS.DisplayMessage</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ACCOUNT_DEADS).DisplayTime">ACCOUNT_DEADS.DisplayTime</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ACCOUNT_DEADS).EventDead">ACCOUNT_DEADS:EventDead(Event)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ACCOUNT_DEADS).Fsm">ACCOUNT_DEADS.Fsm</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ACCOUNT_DEADS).New">ACCOUNT_DEADS:New(ProcessUnit, TargetSetUnit, TaskName)</a></td>
<td class="summary">
<p>Creates a new DESTROY process.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ACCOUNT_DEADS).OnDestroyed">ACCOUNT_DEADS:OnDestroyed(ProcessUnit, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ACCOUNT_DEADS).OnHitTarget">ACCOUNT_DEADS:OnHitTarget(ProcessUnit, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ACCOUNT_DEADS).OnKilled">ACCOUNT_DEADS:OnKilled(ProcessUnit, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ACCOUNT_DEADS).OnMoreTargets">ACCOUNT_DEADS:OnMoreTargets(ProcessUnit, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ACCOUNT_DEADS).OnRestart">ACCOUNT_DEADS:OnRestart(ProcessUnit, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ACCOUNT_DEADS).OnStart">ACCOUNT_DEADS:OnStart(ProcessUnit, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ACCOUNT_DEADS).OnWaiting">ACCOUNT_DEADS:OnWaiting(ProcessUnit, Event, From, To)</a></td>
<td class="summary">
<p>StateMachine callback function</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ACCOUNT_DEADS).TargetSetUnit">ACCOUNT_DEADS.TargetSetUnit</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(ACCOUNT_DEADS).TaskName">ACCOUNT_DEADS.TaskName</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2><a id="#(ASSIGN_MENU_ACCEPT)">Type <code>ASSIGN_MENU_ACCEPT</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(ASSIGN_MENU_ACCEPT).DisplayCount">ASSIGN_MENU_ACCEPT.DisplayCount</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2>Global(s)</h2>
<dl class="function">
<dt>
<em><a href="##(ACCOUNT_DEADS)">#ACCOUNT_DEADS</a></em>
<a id="ACCOUNT_DEADS" >
<strong>ACCOUNT_DEADS</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<h2><a id="#(TrackHits)" >Type <code>TrackHits</code></a></h2>
<h2><a id="#(ACCOUNT_DEADS)" >Type <code>ACCOUNT_DEADS</code></a></h2>
<p>ACCOUNT_DEADS class</p>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(ACCOUNT_DEADS).ClassName" >
<strong>ACCOUNT_DEADS.ClassName</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(ACCOUNT_DEADS).DisplayCategory" >
<strong>ACCOUNT_DEADS.DisplayCategory</strong>
</a>
</dt>
<dd>
<p> Targets is the default display category</p>
</dd>
</dl>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(ACCOUNT_DEADS).DisplayCount" >
<strong>ACCOUNT_DEADS.DisplayCount</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(ACCOUNT_DEADS).DisplayInterval" >
<strong>ACCOUNT_DEADS.DisplayInterval</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#boolean</em>
<a id="#(ACCOUNT_DEADS).DisplayMessage" >
<strong>ACCOUNT_DEADS.DisplayMessage</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(ACCOUNT_DEADS).DisplayTime" >
<strong>ACCOUNT_DEADS.DisplayTime</strong>
</a>
</dt>
<dd>
<p> 10 seconds is the default</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ACCOUNT_DEADS).EventDead" >
<strong>ACCOUNT_DEADS:EventDead(Event)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Event.html##(EVENTDATA)">Event#EVENTDATA</a> Event </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(ACCOUNT_DEADS).Fsm" >
<strong>ACCOUNT_DEADS.Fsm</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ACCOUNT_DEADS).New" >
<strong>ACCOUNT_DEADS:New(ProcessUnit, TargetSetUnit, TaskName)</strong>
</a>
</dt>
<dd>
<p>Creates a new DESTROY process.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Unit.html##(UNIT)">Unit#UNIT</a> ProcessUnit </em></code>: </p>
</li>
<li>
<p><code><em><a href="Set.html##(SET_UNIT)">Set#SET_UNIT</a> TargetSetUnit </em></code>: </p>
</li>
<li>
<p><code><em>#string TaskName </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(ACCOUNT_DEADS)">#ACCOUNT_DEADS</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ACCOUNT_DEADS).OnDestroyed" >
<strong>ACCOUNT_DEADS:OnDestroyed(ProcessUnit, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Controllable.html##(CONTROLLABLE)">Controllable#CONTROLLABLE</a> ProcessUnit </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ACCOUNT_DEADS).OnHitTarget" >
<strong>ACCOUNT_DEADS:OnHitTarget(ProcessUnit, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Controllable.html##(CONTROLLABLE)">Controllable#CONTROLLABLE</a> ProcessUnit </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ACCOUNT_DEADS).OnKilled" >
<strong>ACCOUNT_DEADS:OnKilled(ProcessUnit, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Controllable.html##(CONTROLLABLE)">Controllable#CONTROLLABLE</a> ProcessUnit </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ACCOUNT_DEADS).OnMoreTargets" >
<strong>ACCOUNT_DEADS:OnMoreTargets(ProcessUnit, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Controllable.html##(CONTROLLABLE)">Controllable#CONTROLLABLE</a> ProcessUnit </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ACCOUNT_DEADS).OnRestart" >
<strong>ACCOUNT_DEADS:OnRestart(ProcessUnit, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Controllable.html##(CONTROLLABLE)">Controllable#CONTROLLABLE</a> ProcessUnit </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ACCOUNT_DEADS).OnStart" >
<strong>ACCOUNT_DEADS:OnStart(ProcessUnit, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Controllable.html##(CONTROLLABLE)">Controllable#CONTROLLABLE</a> ProcessUnit </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(ACCOUNT_DEADS).OnWaiting" >
<strong>ACCOUNT_DEADS:OnWaiting(ProcessUnit, Event, From, To)</strong>
</a>
</dt>
<dd>
<p>StateMachine callback function</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Controllable.html##(CONTROLLABLE)">Controllable#CONTROLLABLE</a> ProcessUnit </em></code>: </p>
</li>
<li>
<p><code><em>#string Event </em></code>: </p>
</li>
<li>
<p><code><em>#string From </em></code>: </p>
</li>
<li>
<p><code><em>#string To </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Set.html##(SET_UNIT)">Set#SET_UNIT</a></em>
<a id="#(ACCOUNT_DEADS).TargetSetUnit" >
<strong>ACCOUNT_DEADS.TargetSetUnit</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em></em>
<a id="#(ACCOUNT_DEADS).TaskName" >
<strong>ACCOUNT_DEADS.TaskName</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<h2><a id="#(ASSIGN_MENU_ACCEPT)" >Type <code>ASSIGN_MENU_ACCEPT</code></a></h2>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em>#number</em>
<a id="#(ASSIGN_MENU_ACCEPT).DisplayCount" >
<strong>ASSIGN_MENU_ACCEPT.DisplayCount</strong>
</a>
</dt>
<dd>
</dd>
</dl>
</div>
</div>
</body>
</html>

168
README.md Normal file
View File

@ -0,0 +1,168 @@
# Context
MOOSE is a **M**ission **O**bject **O**riented **S**cripting **E**nvironment, and is meant for mission designers and mission hosters.
It allows to quickly setup complex missions using pre-scripted scenarios using the available classes within the MOOSE Framework.
MOOSE is currently still in alpha version, but will evolve over time. Right now, it has been updated to work with DCS world 1.5. and 2.0.
You can find the source of MOOSE here on GITHUB. It is free for download:
https://github.com/FlightControl-Master/MOOSE/
Note: MOOSE is complementary to [MIST](https://github.com/mrSkortch/MissionScriptingTools/releases), so if you use MIST in parallel with MOOSE objects, this should work.
# Goals
The goal of MOOSE is to allow mission designers to enhance their scripting with mission orchestration objects, which can be instantiated from defined classes within the framework. This will allow to write mission scripts with minimal code embedded. Of course, the richness of the framework will determine the richness of the misson scenarios. We can expect that MOOSE will evolve over time, as more missions will be designed within the framework.
# MOOSE Directory Structure
* Moose Development: Contains the collection of lua files that define the MOOSE classes. You can use this directory to build the dynamic luadoc documentation intellisense in your eclipse development environment.
* Moose Mission Setup: Contains the Moose.lua file to be included in your scripts when using MOOSE classes (see below the point Mission Design with Moose).
* Moose Test Missions: Contains a directory structure with Moose Test Missions and examples. In each directory, you will find a miz file and a lua file containing the main mission script.
* Moose Training: Contains the documentation of Moose generated with luadoc from the Moose source code. The presentations used during the videos in my [youtube channel](https://www.youtube.com/channel/UCjrA9j5LQoWsG4SpS8i79Qg), are also to be found here.
# Mission Design with Moose
In order to create a mission using MOOSE, you'll have to include a file named **Moose.lua**:
1. Create a new mission in the DCS World Mission Editor.
2. In the mission editor, create a new trigger.
3. Name the trigger Moose Load and let it execute only at MISSION START.
4. Add an action DO SCRIPT FILE (without a condition, so the middle column must be empty).
5. In the action, browse to the **[Moose.lua](https://github.com/FlightControl-Master/MOOSE/tree/master/Moose%20Mission%20Setup)** file in the **Moose Mission Setup** directory, and include this file within your mission.
6. Make sure that the "Moose Load" trigger is completely at the top of your mission.
Voila, MOOSE is now included in your mission. During the execution of this mission, all MOOSE classes will be loaded, and all MOOSE initializations will be exectuted before any other mission action is executed.
IMPORTANT NOTE: When a new version of MOOSE is released, you'll have to UPDATE the Moose.lua file in EACH OF YOUR MISSION.
This can be a tedious task, and for this purpose, a tool has been developed that will update the Moose.lua files automatically within your missions.
Refer to the tool at [Moose Mission Setup\Moose Mission Update](https://github.com/FlightControl-Master/MOOSE/tree/master/Moose%20Mission%20Setup/Moose%20Mission%20Update) directory for further information included in the [READ.ME]() file.
# MOOSE Classes
The following classes are currently embedded within MOOSE and can be included within your mission scripts:
## MOOSE Core Classes
These classes define the base building blocks of the MOOSE framework. These classes are heavily used within the MOOSE framework.
* [BASE](Documentation/Base.html): The main class from which all MOOSE classes are derived from. The BASE class contains essential functions to support inheritance and MOOSE object execution tracing (logging within the DCS.log file in the saved games folder of the user).
* [DATABASE](Documentation/Database.html): Creates a collection of GROUPS[], UNITS[], CLIENTS[] and managed these sets automatically. Provides an API set to retrieve a GROUP, UNIT or CLIENT instance from the _DATABASE object using defined APIs. The collections are maintained dynamically during the execution of the mission, so when players join, leave, when units are created or destroyed, the collections are dynamically updated.
* [EVENT](Documentation/Event.html): Provides the Event Dispatcher base class to handle DCS Events, being fired upon registered events within the DCS simulator. Note that EVENT is used by BASE, exposing OnEvent() methods to catch these DCS events.
* [FSM](Documentation/Fsm.html): The main FSM class can be used to build a Finite State Machine. The derived FSM_ classes provide Finite State Machine building capability for CONTROLLABLEs, ACT_ (Task Actions) classes, TASKs and SETs.
* [MENU](Documentation/Menu.html): Set Menu options (F10) for All Players, Coalitions, Groups, Clients. MENU also manages the recursive removal of menus, which is a big asset!
* [SETS](Documentation/Set.html): Create SETs of MOOSE objects. SETs can be created for GROUPs, UNITs, AIRBASEs, ...
The SET can be filtered with defined filter criteria.
Iterators are available that iterate through the GROUPSET, calling a function for each object within the SET.
* [MESSAGE](Documentation/Message.html): A message publishing system, displaying messages to Clients, Coalitions or All players.
* [POINTS](Documentation/Point.html): A set of point classes to manage the 2D or 3D simulation space, through an extensive method library.
The POINT_VEC3 class manages the 3D simulation space, while the POINT_VEC2 class manages the 2D simulation space.
* [ZONES](Documentation/Zone.html): A set of zone classes that provide the functionality to validate the presence of GROUPS, UNITS, CLIENTS, STATICS within a certain ZONE. The zones can take various forms and can be movable.
* [SCHEDULER](Documentation/Scheduler.html): This class implements a timer scheduler that will call at optional specified intervals repeatedly or just one time a scheduled function.
## MOOSE Wrapper Classes
MOOSE Wrapper Classes provide an object oriented hierarchical mechanism to manage the DCS objects within the simulator.
Wrapper classes provide another easier mechanism to control Groups, Units, Statics, Airbases and other objects.
* **[OBJECT](Documentation/Object.html)**: This class provides the base for MOOSE objects.
* **[IDENTIFIABLE](Documentation/Identifiable.html)**: This class provides the base for MOOSE identifiable objects, which is every object within the simulator :-).
* **[POSITIONABLE](Documentation/Positionable.html)**: This class provides the base for MOOSE positionable objects. These are AIRBASEs, STATICs, GROUPs, UNITs ...
* **[CONTROLLABLE](Documentation/Controllable.html)**: This class provides the base for MOOSE controllable objects. These are GROUPs, UNITs, CLIENTs.
* **[AIRBASE](Documentation/Airbase.html)**: This class wraps a DCS Airbase object within the simulator.
* **[GROUP](Documentation/Group.html)**: This class wraps a DCS Group objects within the simulator, which are currently alive.
It provides a more extensive API set.
It takes an abstraction of the complexity to give tasks, commands and set various options to DCS Groups.
Additionally, the GROUP class provides a much richer API to identify various properties of the DCS Group.
For each DCS Group created object within a running mission, a GROUP object will be created automatically, beging managed within the DATABASE.
* **[UNIT](Documentation/Unit.html)**: This class wraps a DCS Unit object within the simulator, which are currently alive. It provides a more extensive API set, as well takes an abstraction of the complexity to give commands and set various options to DCS Units. Additionally, the UNIT class provides a much richer API to identify various properties of the DCS Unit. For each DCS Unit object created within a running mission, a UNIT object will be created automatically, that is stored within the DATABASE, under the _DATABASE object.
the UNIT class provides a more extensive API set, taking an abstraction of the complexity to give tasks, commands and set various options to DCS Units.
For each DCS Unit created object within a running mission, a UNIT object will be created automatically, beging managed within the DATABASE.
* **[CLIENT](Documentation/Client.html)**: This class wraps a DCS Unit object within the simulator, which has a skill Client or Player.
The CLIENT class derives from the UNIT class, thus contains the complete UNIT API set, and additionally, the CLIENT class provides an API set to manage players joining or leaving clients, sending messages to players, and manage the state of units joined by players. For each DCS Unit object created within a running mission that can be joined by a player, a CLIENT object will be created automatically, that is stored within the DATABASE, under the _DATABASE object.
* **[STATIC](Documentation/Static.html)**: This class wraps a DCS StaticObject object within the simulator.
The STATIC class derives from the POSITIONABLE class, thus contains also the position API set.
## MOOSE Functional Classes
* [SPAWN](Documentation/Spawn.html): Spawn new groups (and units) during mission execution.
* [ESCORT](Moose Training/Documentation/Escort.html): Makes groups consisting of helicopters, airplanes, ground troops or ships within a mission joining your flight. You can control these groups through the ratio menu during your flight. Available commands are around: Navigation, Position Hold, Reporting (Target Detection), Attacking, Assisted Attacks, ROE, Evasion, Mission Execution and more ...
* [MISSILETRAINER](Moose Training/Documentation/MissileTrainer.html): Missile trainer, it destroys missiles when they are within a certain range of player airplanes, displays tracking and alert messages of missile launches; approach; destruction, and configure with radio menu commands. Various APIs available to configure the trainer.
* [DETECTION](Moose Training/Documentation/Detection.html): Detect other units using the available sensors of the detection unit. The DETECTION_BASE derived classes will provide different methods how the sets of detected objects are built.
## MOOSE AI Controlling Classes
* [AI_BALANCER](Documentation/AI_Balancer.html): Compensate in a multi player mission the abscence of players with dynamically spawned AI air units. When players join CLIENTS, the AI will either be destroyed, or will fly back to the home or nearest friendly airbase.
* [AI_PATROLZONE](Documentation/AI_PatrolZone.html): Make an alive AI Group patrol a zone derived from the ZONE_BASE class. Manage out-of-fuel events and set altitude and speed ranges for the patrol.
* [FAC](Moose Training/Documentation/Fac.html): Using the DETECTION_BASE derived classes, detected objects can be reported in different ways to a set of clients (SET_CLIENT). FAC_BASE derived classes will provide target detection reporting and control using the radio menu.
* [FOLLOW](Moose Training/Documentation/Follow.html): Build large air formations using the FOLLOW class.
# MOOSE Tutorials and Examples
You can download [test missions](https://github.com/FlightControl-Master/MOOSE/tree/master/Test%20Missions) to have examples and learn the syntax and usage of the MOOSE classes.
There are [Video Tutorials](https://www.youtube.com/channel/UCjrA9j5LQoWsG4SpS8i79Qg) on my YOUTUBE channel on which you can learn some coding aspects with mission execution demos, as well as some of the tooling and internal mechanisms within MOOSE.
In the triggers section, there is a flag (9999) that will decide how MOOSE will be loaded. When flag 9999 is set, MOOSE will be dynamically loaded. When flag 9999 is off, MOOSE will be loaded embedded. Note that when loaded embedded, **your mission must include the last Moose_Embedded.lua file**. So, ensure that the last file is included in the DO SCRIPT section when MOOSE got an update!
# Credits
Note that the framework is based on code i've written myself, but some of it is also based on code that i've seen as great scripting code and ideas, and which i've revised. I see this framework evolving towards a broader public, and the ownership may dissapear (or parts of it). Consider this code public domain. Therefore a list of credits to all who have or are contributing (this list will increase over time): Grimes, Prof_Hilactic, xcom, the 476 virtual squadron team, ...
You'll notice that within this framework, there are functions used from mist. I've taken the liberty to copy those atomic mist functions that are very nice and useful, and used those.
**Grimes**
Without the effort of Grimes with MIST and his continuous documentation, the development of MOOSE would not have been possible. MOOSE is not replacing MIST, but is compensating it.
**Prof_hilactic**
SEAD Defenses. I've taken the script, and reworded it to fit within MOOSE. The script within MOOSE is hardly recognizable anymore from the original. Find here the posts: http://forums.eagle.ru/showpost.php?...59&postcount=1
**xcom**
His contribution is related to the Event logging system. I've analyzed and studied his scripts, and reworked it a bit to use it also within the framework (I've also tweaked it a bit). Find his post here: http://forums.eagle.ru/showpost.php?...73&postcount=1
**Dutch_Baron (James)**
Working together with James has resulted in the creation of the AIBALANCER class. James has shared his ideas on balancing AI with air units, and together we made a first design which you can use now :-)
**Stuka (Danny)**
Working together with Danny has resulted in the MISSILETRAINER class. Stuka has shared his ideas and together we made a design. Together with the 476 virtual team, we tested this CLASS, and got much positive feedback!
**Mechanic (G<>bor)**
Worked together with G<>bor to create the concept of the DETECTION and FAC classes. Mechanic shared his ideas and concepts to group detected targets into sets within detection zones... Will continue to work with G<>bor to workout the DETECTION and FAC classes.
**Shadoh**
Interacted on the eagle dynamics forum to build the FOLLOW class to build large WWII airplane formations.
For the rest I also would like to thank the numerous feedback and help and assistance of the moose community at SLACK.COM.
Note that there is a vast amount of other scripts out there.
I may contact you personally to ask for your contribution / permission if i can use your idea or script to tweak it to the framework.
Parts of these scripts will have to be redesigned to fit it into an OO framework.
The rest of the framework functions and class definitions were my own developments, especially the core of MOOSE.
Trust I've spent hours and hours investigating, trying and writing and documenting code building this framework.
Hope you think the idea is great and useful.

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
@ -2428,7 +2427,6 @@ The UNIT carrying the package.</p>
<dl class="function">
<dt>
<em></em>
<a id="#(AI_CARGO_UNIT).CargoCarrier" >
<strong>AI_CARGO_UNIT.CargoCarrier</strong>
</a>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
@ -180,7 +179,7 @@
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(COMMANDCENTER).MessageToGroup">COMMANDCENTER:MessageToGroup(Message, TaskGroup)</a></td>
<td class="name" nowrap="nowrap"><a href="##(COMMANDCENTER).MessageToGroup">COMMANDCENTER:MessageToGroup(Message, TaskGroup, Name)</a></td>
<td class="summary">
<p>Send a CC message to a GROUP.</p>
</td>
@ -506,7 +505,7 @@ Group#GROUP</p>
<dt>
<a id="#(COMMANDCENTER).MessageToGroup" >
<strong>COMMANDCENTER:MessageToGroup(Message, TaskGroup)</strong>
<strong>COMMANDCENTER:MessageToGroup(Message, TaskGroup, Name)</strong>
</a>
</dt>
<dd>
@ -517,12 +516,18 @@ Group#GROUP</p>
<ul>
<li>
<p><code><em> Message </em></code>: </p>
<p><code><em>#string Message </em></code>: </p>
</li>
<li>
<p><code><em> TaskGroup </em></code>: </p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> TaskGroup </em></code>: </p>
</li>
<li>
<p><code><em><a href="##(sring)">#sring</a> Name </em></code>:
(optional) The name of the Group used as a prefix for the message to the Group. If not provided, there will be nothing shown.</p>
</li>
</ul>
@ -758,6 +763,8 @@ Group#GROUP</p>
<h2><a id="#(list)" >Type <code>list</code></a></h2>
<h2><a id="#(sring)" >Type <code>sring</code></a></h2>
</div>
</div>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
@ -273,6 +272,12 @@ Use the following Zone validation methods on the group:</p>
<td class="name" nowrap="nowrap"><a href="##(GROUP).AllOnGround">GROUP:AllOnGround()</a></td>
<td class="summary">
<p>Returns if all units of the group are on the ground or landed.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(GROUP).CalculateThreatLevelA2G">GROUP:CalculateThreatLevelA2G()</a></td>
<td class="summary">
<p>Calculate the maxium A2G threat level of the Group.</p>
</td>
</tr>
<tr>
@ -579,6 +584,19 @@ Use the following Zone validation methods on the group:</p>
<p><em>#boolean:</em>
All units on the ground result.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(GROUP).CalculateThreatLevelA2G" >
<strong>GROUP:CalculateThreatLevelA2G()</strong>
</a>
</dt>
<dd>
<p>Calculate the maxium A2G threat level of the Group.</p>
</dd>
</dl>
<dl class="function">

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
@ -136,6 +135,12 @@
<td class="name" nowrap="nowrap"><a href="##(IDENTIFIABLE).ClassName">IDENTIFIABLE.ClassName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(IDENTIFIABLE).GetCallsign">IDENTIFIABLE:GetCallsign()</a></td>
<td class="summary">
<p>Gets the CallSign of the IDENTIFIABLE, which is a blank by default.</p>
</td>
</tr>
<tr>
@ -234,6 +239,24 @@
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(IDENTIFIABLE).GetCallsign" >
<strong>IDENTIFIABLE:GetCallsign()</strong>
</a>
</dt>
<dd>
<p>Gets the CallSign of the IDENTIFIABLE, which is a blank by default.</p>
<h3>Return value</h3>
<p><em>#string:</em>
The CallSign of the IDENTIFIABLE.</p>
</dd>
</dl>
<dl class="function">

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
@ -358,6 +357,12 @@ A <a href="CLIENT.html">CLIENT</a> needs to be registered within the <a href="MI
<td class="name" nowrap="nowrap"><a href="##(MISSION).REPEAT">MISSION.REPEAT</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(MISSION).RemoveMenu">MISSION:RemoveMenu()</a></td>
<td class="summary">
<p>Removes the Planned Task menu.</p>
</td>
</tr>
<tr>
@ -415,7 +420,7 @@ A <a href="CLIENT.html">CLIENT</a> needs to be registered within the <a href="MI
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(MISSION).SetMenu">MISSION:SetMenu(CommandCenterMenu)</a></td>
<td class="name" nowrap="nowrap"><a href="##(MISSION).SetMenu">MISSION:SetMenu()</a></td>
<td class="summary">
<p>Sets the Planned Task menu.</p>
</td>
@ -1562,6 +1567,19 @@ self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(MISSION).RemoveMenu" >
<strong>MISSION:RemoveMenu()</strong>
</a>
</dt>
<dd>
<p>Removes the Planned Task menu.</p>
</dd>
</dl>
<dl class="function">
@ -1752,21 +1770,13 @@ self</p>
<dt>
<a id="#(MISSION).SetMenu" >
<strong>MISSION:SetMenu(CommandCenterMenu)</strong>
<strong>MISSION:SetMenu()</strong>
</a>
</dt>
<dd>
<p>Sets the Planned Task menu.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Core.Menu.html##(MENU_COALITION)">Core.Menu#MENU_COALITION</a> CommandCenterMenu </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
@ -156,7 +155,7 @@
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).GetMessage">POSITIONABLE:GetMessage(Message, Duration)</a></td>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).GetMessage">POSITIONABLE:GetMessage(Message, Duration, Name)</a></td>
<td class="summary">
<p>Returns a message with the callsign embedded (if there is one).</p>
</td>
@ -216,43 +215,43 @@
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).Message">POSITIONABLE:Message(Message, Duration)</a></td>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).Message">POSITIONABLE:Message(Message, Duration, Name)</a></td>
<td class="summary">
<p>Send a message to the players in the <a href="Group.html">Group</a>.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).MessageToAll">POSITIONABLE:MessageToAll(Message, Duration)</a></td>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).MessageToAll">POSITIONABLE:MessageToAll(Message, Duration, Name)</a></td>
<td class="summary">
<p>Send a message to all coalitions.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).MessageToBlue">POSITIONABLE:MessageToBlue(Message, Duration)</a></td>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).MessageToBlue">POSITIONABLE:MessageToBlue(Message, Duration, Name)</a></td>
<td class="summary">
<p>Send a message to the blue coalition.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).MessageToClient">POSITIONABLE:MessageToClient(Message, Duration, Client)</a></td>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).MessageToClient">POSITIONABLE:MessageToClient(Message, Duration, Client, Name)</a></td>
<td class="summary">
<p>Send a message to a client.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).MessageToCoalition">POSITIONABLE:MessageToCoalition(Message, Duration, MessageCoalition)</a></td>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).MessageToCoalition">POSITIONABLE:MessageToCoalition(Message, Duration, Name, MessageCoalition)</a></td>
<td class="summary">
<p>Send a message to a coalition.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).MessageToGroup">POSITIONABLE:MessageToGroup(Message, Duration, MessageGroup)</a></td>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).MessageToGroup">POSITIONABLE:MessageToGroup(Message, Duration, MessageGroup, Name)</a></td>
<td class="summary">
<p>Send a message to a <a href="Group.html">Group</a>.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).MessageToRed">POSITIONABLE:MessageToRed(Message, Duration)</a></td>
<td class="name" nowrap="nowrap"><a href="##(POSITIONABLE).MessageToRed">POSITIONABLE:MessageToRed(Message, Duration, Name)</a></td>
<td class="summary">
<p>Send a message to the red coalition.</p>
</td>
@ -376,7 +375,7 @@ The POSTIONABLE heading</p>
<dt>
<a id="#(POSITIONABLE).GetMessage" >
<strong>POSITIONABLE:GetMessage(Message, Duration)</strong>
<strong>POSITIONABLE:GetMessage(Message, Duration, Name)</strong>
</a>
</dt>
<dd>
@ -396,6 +395,12 @@ The message text</p>
<p><code><em><a href="Dcs.DCSTypes.html##(Duration)">Dcs.DCSTypes#Duration</a> Duration </em></code>:
The duration of the message.</p>
</li>
<li>
<p><code><em>#string Name </em></code>:
(optional) The Name of the sender. If not provided, the Name is the type of the Positionable.</p>
</li>
</ul>
<h3>Return value</h3>
@ -669,7 +674,7 @@ The POSITIONABLE is not existing or alive. </p>
<dt>
<a id="#(POSITIONABLE).Message" >
<strong>POSITIONABLE:Message(Message, Duration)</strong>
<strong>POSITIONABLE:Message(Message, Duration, Name)</strong>
</a>
</dt>
<dd>
@ -692,6 +697,12 @@ The message text</p>
<p><code><em><a href="Dcs.DCSTypes.html##(Duration)">Dcs.DCSTypes#Duration</a> Duration </em></code>:
The duration of the message.</p>
</li>
<li>
<p><code><em>#string Name </em></code>:
(optional) The Name of the sender. If not provided, the Name is the type of the Positionable.</p>
</li>
</ul>
</dd>
@ -700,7 +711,7 @@ The duration of the message.</p>
<dt>
<a id="#(POSITIONABLE).MessageToAll" >
<strong>POSITIONABLE:MessageToAll(Message, Duration)</strong>
<strong>POSITIONABLE:MessageToAll(Message, Duration, Name)</strong>
</a>
</dt>
<dd>
@ -723,6 +734,12 @@ The message text</p>
<p><code><em><a href="Dcs.DCSTypes.html##(Duration)">Dcs.DCSTypes#Duration</a> Duration </em></code>:
The duration of the message.</p>
</li>
<li>
<p><code><em>#string Name </em></code>:
(optional) The Name of the sender. If not provided, the Name is the type of the Positionable.</p>
</li>
</ul>
</dd>
@ -731,7 +748,7 @@ The duration of the message.</p>
<dt>
<a id="#(POSITIONABLE).MessageToBlue" >
<strong>POSITIONABLE:MessageToBlue(Message, Duration)</strong>
<strong>POSITIONABLE:MessageToBlue(Message, Duration, Name)</strong>
</a>
</dt>
<dd>
@ -754,6 +771,12 @@ The message text</p>
<p><code><em><a href="Dcs.DCSTypes.html##(Duration)">Dcs.DCSTypes#Duration</a> Duration </em></code>:
The duration of the message.</p>
</li>
<li>
<p><code><em>#string Name </em></code>:
(optional) The Name of the sender. If not provided, the Name is the type of the Positionable.</p>
</li>
</ul>
</dd>
@ -762,7 +785,7 @@ The duration of the message.</p>
<dt>
<a id="#(POSITIONABLE).MessageToClient" >
<strong>POSITIONABLE:MessageToClient(Message, Duration, Client)</strong>
<strong>POSITIONABLE:MessageToClient(Message, Duration, Client, Name)</strong>
</a>
</dt>
<dd>
@ -791,6 +814,12 @@ The duration of the message.</p>
<p><code><em><a href="Wrapper.Client.html##(CLIENT)">Wrapper.Client#CLIENT</a> Client </em></code>:
The client object receiving the message.</p>
</li>
<li>
<p><code><em>#string Name </em></code>:
(optional) The Name of the sender. If not provided, the Name is the type of the Positionable.</p>
</li>
</ul>
</dd>
@ -799,7 +828,7 @@ The client object receiving the message.</p>
<dt>
<a id="#(POSITIONABLE).MessageToCoalition" >
<strong>POSITIONABLE:MessageToCoalition(Message, Duration, MessageCoalition)</strong>
<strong>POSITIONABLE:MessageToCoalition(Message, Duration, Name, MessageCoalition)</strong>
</a>
</dt>
<dd>
@ -825,6 +854,12 @@ The duration of the message.</p>
</li>
<li>
<p><code><em>#string Name </em></code>:
(optional) The Name of the sender. If not provided, the Name is the type of the Positionable.</p>
</li>
<li>
<p><code><em> MessageCoalition </em></code>: </p>
</li>
@ -835,7 +870,7 @@ The duration of the message.</p>
<dt>
<a id="#(POSITIONABLE).MessageToGroup" >
<strong>POSITIONABLE:MessageToGroup(Message, Duration, MessageGroup)</strong>
<strong>POSITIONABLE:MessageToGroup(Message, Duration, MessageGroup, Name)</strong>
</a>
</dt>
<dd>
@ -864,6 +899,12 @@ The duration of the message.</p>
<p><code><em><a href="Wrapper.Group.html##(GROUP)">Wrapper.Group#GROUP</a> MessageGroup </em></code>:
The GROUP object receiving the message.</p>
</li>
<li>
<p><code><em>#string Name </em></code>:
(optional) The Name of the sender. If not provided, the Name is the type of the Positionable.</p>
</li>
</ul>
</dd>
@ -872,7 +913,7 @@ The GROUP object receiving the message.</p>
<dt>
<a id="#(POSITIONABLE).MessageToRed" >
<strong>POSITIONABLE:MessageToRed(Message, Duration)</strong>
<strong>POSITIONABLE:MessageToRed(Message, Duration, Name)</strong>
</a>
</dt>
<dd>
@ -895,6 +936,12 @@ The message text</p>
<p><code><em><a href="Dcs.DCSTYpes.html##(Duration)">Dcs.DCSTYpes#Duration</a> Duration </em></code>:
The duration of the message.</p>
</li>
<li>
<p><code><em>#string Name </em></code>:
(optional) The Name of the sender. If not provided, the Name is the type of the Positionable.</p>
</li>
</ul>
</dd>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
@ -907,6 +906,12 @@ The following iterator methods are currently available within the SET</em>AIRBAS
<td class="name" nowrap="nowrap"><a href="##(SET_UNIT).AddUnitsByName">SET_UNIT:AddUnitsByName(AddUnitNames)</a></td>
<td class="summary">
<p>Add UNIT(s) to SET_UNIT.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(SET_UNIT).CalculateThreatLevelA2G">SET_UNIT:CalculateThreatLevelA2G()</a></td>
<td class="summary">
<p>Calculate the maxium A2G threat level of the SET_UNIT.</p>
</td>
</tr>
<tr>
@ -3350,6 +3355,19 @@ A single name or an array of UNIT names.</p>
<p><em><a href="##(SET_UNIT)">#SET_UNIT</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(SET_UNIT).CalculateThreatLevelA2G" >
<strong>SET_UNIT:CalculateThreatLevelA2G()</strong>
</a>
</dt>
<dd>
<p>Calculate the maxium A2G threat level of the SET_UNIT.</p>
</dd>
</dl>
<dl class="function">

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
@ -1703,6 +1702,9 @@ The group that was spawned. You can use this group for further actions.</p>
<p> Don't repeat the group from Take-Off till Landing and back Take-Off by ReSpawning.</p>
</dd>
</dl>
<dl class="function">
@ -2497,7 +2499,7 @@ Spawn_BE_KA50 = SPAWN:New( 'BE KA-50@RAMP-Ground Defense' ):Schedule( 600, 0.5 )
<p> Flag that indicates if all the Groups of the SpawnGroup need to be visible when Spawned.</p>
<p> When the first Spawn executes, all the Groups need to be made visible before start.</p>
</dd>
</dl>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li>StaticObject</li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li>Task</li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
@ -140,12 +139,6 @@ Use the method <a href="##(TASK).AddScore">TASK.AddScore</a>() to add scores whe
<h2>Global(s)</h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="#PlayerNameText">PlayerNameText</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#TASK">TASK</a></td>
<td class="summary">
@ -695,20 +688,6 @@ Use the method <a href="##(TASK).AddScore">TASK.AddScore</a>() to add scores whe
<dl class="function">
<dt>
<em></em>
<a id="PlayerNameText" >
<strong>PlayerNameText</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="##(TASK)">#TASK</a></em>
<a id="TASK" >
<strong>TASK</strong>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li>Task_A2G</li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li>Task_PICKUP</li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li>Task_SEAD</li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li>Unit</li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>
@ -407,12 +406,6 @@
<td class="name" nowrap="nowrap"><a href="Task_A2G.html">Task_A2G</a></td>
<td class="summary">
<p>(AI) (SP) (MP) Tasking for Air to Ground Processes.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="Task_Client_Menu.html">Task_Client_Menu</a></td>
<td class="summary">
</td>
</tr>
<tr>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

View File

@ -71,7 +71,6 @@
<li><a href="StaticObject.html">StaticObject</a></li>
<li><a href="Task.html">Task</a></li>
<li><a href="Task_A2G.html">Task_A2G</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</a></li>
<li><a href="Task_PICKUP.html">Task_PICKUP</a></li>
<li><a href="Task_SEAD.html">Task_SEAD</a></li>
<li><a href="Unit.html">Unit</a></li>

202
docs/README.md Normal file
View File

@ -0,0 +1,202 @@
# Context
MOOSE is a **M**ission **O**bject **O**riented **S**cripting **E**nvironment, and is meant for mission designers and mission hosters.
It allows to quickly setup complex missions using pre-scripted scenarios using the available classes within the MOOSE Framework.
MOOSE is currently still in alpha version, but will evolve over time. Right now, it has been updated to work with DCS world 1.5. and 2.0.
You can find the source of MOOSE here on GITHUB. It is free for download:
https://github.com/FlightControl-Master/MOOSE/
Note: MOOSE is complementary to [MIST](https://github.com/mrSkortch/MissionScriptingTools/releases), so if you use MIST in parallel with MOOSE objects, this should work.
# Goals
The goal of MOOSE is to allow mission designers to enhance their scripting with mission orchestration objects, which can be instantiated from defined classes within the framework. This will allow to write mission scripts with minimal code embedded. Of course, the richness of the framework will determine the richness of the misson scenarios. We can expect that MOOSE will evolve over time, as more missions will be designed within the framework.
# MOOSE Directory Structure
* Moose Development: Contains the collection of lua files that define the MOOSE classes. You can use this directory to build the dynamic luadoc documentation intellisense in your eclipse development environment.
* Moose Mission Setup: Contains the Moose.lua file to be included in your scripts when using MOOSE classes (see below the point Mission Design with Moose).
* Moose Test Missions: Contains a directory structure with Moose Test Missions and examples. In each directory, you will find a miz file and a lua file containing the main mission script.
* Moose Training: Contains the documentation of Moose generated with luadoc from the Moose source code. The presentations used during the videos in my [youtube channel](https://www.youtube.com/channel/UCjrA9j5LQoWsG4SpS8i79Qg), are also to be found here.
# Mission Design with Moose
In order to create a mission using MOOSE, you'll have to include a file named **Moose.lua**:
1. Create a new mission in the DCS World Mission Editor.
2. In the mission editor, create a new trigger.
3. Name the trigger Moose Load and let it execute only at MISSION START.
4. Add an action DO SCRIPT FILE (without a condition, so the middle column must be empty).
5. In the action, browse to the **[Moose.lua](https://github.com/FlightControl-Master/MOOSE/tree/master/Moose%20Mission%20Setup)** file in the **Moose Mission Setup** directory, and include this file within your mission.
6. Make sure that the "Moose Load" trigger is completely at the top of your mission.
Voila, MOOSE is now included in your mission. During the execution of this mission, all MOOSE classes will be loaded, and all MOOSE initializations will be exectuted before any other mission action is executed.
IMPORTANT NOTE: When a new version of MOOSE is released, you'll have to UPDATE the Moose.lua file in EACH OF YOUR MISSION.
This can be a tedious task, and for this purpose, a tool has been developed that will update the Moose.lua files automatically within your missions.
Refer to the tool at [Moose Mission Setup\Moose Mission Update](https://github.com/FlightControl-Master/MOOSE/tree/master/Moose%20Mission%20Setup/Moose%20Mission%20Update) directory for further information included in the [READ.ME]() file.
# MOOSE Classes
The following classes are currently embedded within MOOSE and can be included within your mission scripts:
## MOOSE Core Classes
These classes define the base building blocks of the MOOSE framework. These classes are heavily used within the MOOSE framework.
* [BASE](Documentation/Base.html): The main class from which all MOOSE classes are derived from. The BASE class contains essential functions to support inheritance and MOOSE object execution tracing (logging within the DCS.log file in the saved games folder of the user).
* [DATABASE](Documentation/Database.html): Creates a collection of GROUPS[], UNITS[], CLIENTS[] and managed these sets automatically. Provides an API set to retrieve a GROUP, UNIT or CLIENT instance from the _DATABASE object using defined APIs. The collections are maintained dynamically during the execution of the mission, so when players join, leave, when units are created or destroyed, the collections are dynamically updated.
* [EVENT](Documentation/Event.html): Provides the Event Dispatcher base class to handle DCS Events, being fired upon registered events within the DCS simulator. Note that EVENT is used by BASE, exposing OnEvent() methods to catch these DCS events.
* [FSM](Documentation/Fsm.html): The main FSM class can be used to build a Finite State Machine. The derived FSM_ classes provide Finite State Machine building capability for CONTROLLABLEs, ACT_ (Task Actions) classes, TASKs and SETs.
* [MENU](Documentation/Menu.html): Set Menu options (F10) for All Players, Coalitions, Groups, Clients. MENU also manages the recursive removal of menus, which is a big asset!
* [SETS](Documentation/Set.html): Create SETs of MOOSE objects. SETs can be created for GROUPs, UNITs, AIRBASEs, ...
The SET can be filtered with defined filter criteria.
Iterators are available that iterate through the GROUPSET, calling a function for each object within the SET.
* [MESSAGE](Documentation/Message.html): A message publishing system, displaying messages to Clients, Coalitions or All players.
* [POINTS](Documentation/Point.html): A set of point classes to manage the 2D or 3D simulation space, through an extensive method library.
The POINT_VEC3 class manages the 3D simulation space, while the POINT_VEC2 class manages the 2D simulation space.
* [ZONES](Documentation/Zone.html): A set of zone classes that provide the functionality to validate the presence of GROUPS, UNITS, CLIENTS, STATICS within a certain ZONE. The zones can take various forms and can be movable.
* [SCHEDULER](Documentation/Scheduler.html): This class implements a timer scheduler that will call at optional specified intervals repeatedly or just one time a scheduled function.
## MOOSE Wrapper Classes
MOOSE Wrapper Classes provide an object oriented hierarchical mechanism to manage the DCS objects within the simulator.
Wrapper classes provide another easier mechanism to control Groups, Units, Statics, Airbases and other objects.
* **[OBJECT](Documentation/Object.html)**: This class provides the base for MOOSE objects.
* **[IDENTIFIABLE](Documentation/Identifiable.html)**: This class provides the base for MOOSE identifiable objects, which is every object within the simulator :-).
* **[POSITIONABLE](Documentation/Positionable.html)**: This class provides the base for MOOSE positionable objects. These are AIRBASEs, STATICs, GROUPs, UNITs ...
* **[CONTROLLABLE](Documentation/Controllable.html)**: This class provides the base for MOOSE controllable objects. These are GROUPs, UNITs, CLIENTs.
* **[AIRBASE](Documentation/Airbase.html)**: This class wraps a DCS Airbase object within the simulator.
* **[GROUP](Documentation/Group.html)**: This class wraps a DCS Group objects within the simulator, which are currently alive.
It provides a more extensive API set.
It takes an abstraction of the complexity to give tasks, commands and set various options to DCS Groups.
Additionally, the GROUP class provides a much richer API to identify various properties of the DCS Group.
For each DCS Group created object within a running mission, a GROUP object will be created automatically, beging managed within the DATABASE.
* **[UNIT](Documentation/Unit.html)**: This class wraps a DCS Unit object within the simulator, which are currently alive. It provides a more extensive API set, as well takes an abstraction of the complexity to give commands and set various options to DCS Units. Additionally, the UNIT class provides a much richer API to identify various properties of the DCS Unit. For each DCS Unit object created within a running mission, a UNIT object will be created automatically, that is stored within the DATABASE, under the _DATABASE object.
the UNIT class provides a more extensive API set, taking an abstraction of the complexity to give tasks, commands and set various options to DCS Units.
For each DCS Unit created object within a running mission, a UNIT object will be created automatically, beging managed within the DATABASE.
* **[CLIENT](Documentation/Client.html)**: This class wraps a DCS Unit object within the simulator, which has a skill Client or Player.
The CLIENT class derives from the UNIT class, thus contains the complete UNIT API set, and additionally, the CLIENT class provides an API set to manage players joining or leaving clients, sending messages to players, and manage the state of units joined by players. For each DCS Unit object created within a running mission that can be joined by a player, a CLIENT object will be created automatically, that is stored within the DATABASE, under the _DATABASE object.
* **[STATIC](Documentation/Static.html)**: This class wraps a DCS StaticObject object within the simulator.
The STATIC class derives from the POSITIONABLE class, thus contains also the position API set.
## MOOSE Functional Classes
MOOSE Functional Classes provide various functions that are useful in mission design.
* [SPAWN](Documentation/Spawn.html): Spawn new groups (and units) during mission execution.
* [ESCORT](Moose Training/Documentation/Escort.html): Makes groups consisting of helicopters, airplanes, ground troops or ships within a mission joining your flight. You can control these groups through the ratio menu during your flight. Available commands are around: Navigation, Position Hold, Reporting (Target Detection), Attacking, Assisted Attacks, ROE, Evasion, Mission Execution and more ...
* [MISSILETRAINER](Moose Training/Documentation/MissileTrainer.html): Missile trainer, it destroys missiles when they are within a certain range of player airplanes, displays tracking and alert messages of missile launches; approach; destruction, and configure with radio menu commands. Various APIs available to configure the trainer.
* [DETECTION](Moose Training/Documentation/Detection.html): Detect other units using the available sensors of the detection unit. The DETECTION_BASE derived classes will provide different methods how the sets of detected objects are built.
## MOOSE AI Controlling Classes
MOOSE AI Controlling Classes provide mechanisms to control AI over long lasting processes.
These AI Controlling Classes are based on FSM (Finite State Machine) Classes, and provided an encapsulated way to make AI behave or execute an activity.
* [AI_BALANCER](Documentation/AI_Balancer.html): Compensate in a multi player mission the abscence of players with dynamically spawned AI air units. When players join CLIENTS, the AI will either be destroyed, or will fly back to the home or nearest friendly airbase.
* [AI_PATROLZONE](Documentation/AI_PatrolZone.html): Make an alive AI Group patrol a zone derived from the ZONE_BASE class. Manage out-of-fuel events and set altitude and speed ranges for the patrol.
* [AI_CARGO](Documentation/AI_Cargo.html): Make AI behave as cargo. Various CARGO types exist.
## MOOSE Tasking Classes
MOOSE Tasking Classes provide a comprehensive Mission Orchestration System.
Through COMMANDCENTERs, multiple logical MISSIONs can be orchestrated for coalitions.
Within each MISSION, various TASKs can be defined.
Each TASK has a TASK ACTION flow, which is the flow that a player (hosted by a UNIT) within the simulator needs to follow and accomplish.
* [COMMANDCENTER](Documentation/CommandCenter.html): Orchestrates various logical MISSIONs for a coalition.
* [MISSION](Documentation/Mission.html): Each MISSION has various TASKs to be executed and accomplished by players.
* [TASK](Documentation/Task.html): Each TASK has a status, and has a TASK ACTION flow for each Player acting and executing the TASK.
* [TASK_SEAD](Documentation/Task_SEAD.html): Models a SEAD Task, where a Player is routed towards an attack zone, and various SEADing targets need to be eliminated.
* [TASK_A2G](Documentation/Task_A2G.html): Models a A2G Task, where a Player is routed towards an attack zone, and various A2G targets need to be eliminated.
## MOOSE Action Classes
MOOSE Action Classes are task action sub-flows, that can be used and combined, to quickly define a comprehensive end-to-end task action flow.
For example, for the SEAD Task, the task action flow combines the actions ASSIGN, ROUTE, ACCOUNT and ASSIST task action sub-flows.
* [ACT_ASSIGN](Documentation/Assign.html): Mechanism to accept a TASK by a player. For example, assign the task only after the player accepts the task using the menu.
* [ACT_ROUTE](Documentation/Route.html): Mechanisms to route players to zones or any other positionable coordinate. For example, route a player towards a zone.
* [ACT_ACCOUNT](Documentation/Account.html): Mechanisms to account various events within the simulator. For example, account the dead events, accounting dead units within a Target SET within a ZONE.
* [ACT_ASSIST](Documentation/Assist.html): Mechanisms to assist players executing a task. For example, acquire targets through smoking them.
# MOOSE Tutorials and Examples
You can download [test missions](https://github.com/FlightControl-Master/MOOSE/tree/master/Test%20Missions) to have examples and learn the syntax and usage of the MOOSE classes.
There are [Video Tutorials](https://www.youtube.com/channel/UCjrA9j5LQoWsG4SpS8i79Qg) on my YOUTUBE channel on which you can learn some coding aspects with mission execution demos, as well as some of the tooling and internal mechanisms within MOOSE.
In the triggers section, there is a flag (9999) that will decide how MOOSE will be loaded. When flag 9999 is set, MOOSE will be dynamically loaded. When flag 9999 is off, MOOSE will be loaded embedded. Note that when loaded embedded, **your mission must include the last Moose_Embedded.lua file**. So, ensure that the last file is included in the DO SCRIPT section when MOOSE got an update!
# Credits
Note that the framework is based on code i've written myself, but some of it is also based on code that i've seen as great scripting code and ideas, and which i've revised. I see this framework evolving towards a broader public, and the ownership may dissapear (or parts of it). Consider this code public domain. Therefore a list of credits to all who have or are contributing (this list will increase over time): Grimes, Prof_Hilactic, xcom, the 476 virtual squadron team, ...
You'll notice that within this framework, there are functions used from mist. I've taken the liberty to copy those atomic mist functions that are very nice and useful, and used those.
**Grimes**
Without the effort of Grimes with MIST and his continuous documentation, the development of MOOSE would not have been possible. MOOSE is not replacing MIST, but is compensating it.
**Prof_hilactic**
SEAD Defenses. I've taken the script, and reworded it to fit within MOOSE. The script within MOOSE is hardly recognizable anymore from the original. Find here the posts: http://forums.eagle.ru/showpost.php?...59&postcount=1
**xcom**
His contribution is related to the Event logging system. I've analyzed and studied his scripts, and reworked it a bit to use it also within the framework (I've also tweaked it a bit). Find his post here: http://forums.eagle.ru/showpost.php?...73&postcount=1
**Dutch_Baron (James)**
Working together with James has resulted in the creation of the AIBALANCER class. James has shared his ideas on balancing AI with air units, and together we made a first design which you can use now :-)
**Stuka (Danny)**
Working together with Danny has resulted in the MISSILETRAINER class. Stuka has shared his ideas and together we made a design. Together with the 476 virtual team, we tested this CLASS, and got much positive feedback!
**Mechanic (G<>bor)**
Worked together with G<>bor to create the concept of the DETECTION and FAC classes. Mechanic shared his ideas and concepts to group detected targets into sets within detection zones... Will continue to work with G<>bor to workout the DETECTION and FAC classes.
**Shadoh**
Interacted on the eagle dynamics forum to build the FOLLOW class to build large WWII airplane formations.
For the rest I also would like to thank the numerous feedback and help and assistance of the moose community at SLACK.COM.
Note that there is a vast amount of other scripts out there.
I may contact you personally to ask for your contribution / permission if i can use your idea or script to tweak it to the framework.
Parts of these scripts will have to be redesigned to fit it into an OO framework.
The rest of the framework functions and class definitions were my own developments, especially the core of MOOSE.
Trust I've spent hours and hours investigating, trying and writing and documenting code building this framework.
Hope you think the idea is great and useful.

1
docs/_config.yml Normal file
View File

@ -0,0 +1 @@
theme: jekyll-theme-architect