Merge pull request #117 from FlightControl-Master/Detection

Menu Restructuring and Documentation
This commit is contained in:
Sven Van de Velde 2016-07-22 17:22:12 +02:00 committed by GitHub
commit a634fbb33c
130 changed files with 51091 additions and 2751 deletions

View File

@ -1,76 +1,332 @@
--- Encapsulation of DCS World Menu system in a set of MENU classes.
--- This module contains the MENU classes.
--
-- There is a small note... When you see a class like MENU_COMMAND_COALITION with COMMAND in italic, it acutally represents it like this: `MENU_COMMAND_COALITION`.
--
-- ===
--
-- DCS Menus can be managed using the MENU classes.
-- The advantage of using MENU classes is that it hides the complexity of dealing with menu management in more advanced scanerios where you need to
-- set menus and later remove them, and later set them again. You'll find while using use normal DCS scripting functions, that setting and removing
-- menus is not a easy feat if you have complex menu hierarchies defined.
-- Using the MOOSE menu classes, the removal and refreshing of menus are nicely being handled within these classes, and becomes much more easy.
-- On top, MOOSE implements **variable parameter** passing for command menus.
--
-- There are basically two different MENU class types that you need to use:
--
-- ### To manage **main menus**, the classes begin with **MENU_**:
--
-- * @{Menu#MENU_CLIENT}: Manages main menus for CLIENTs. This manages menus for units with the skill level "Client".
-- * @{Menu#MENU_GROUP}: Manages main menus for GROUPs.
-- * @{Menu#MENU_COALITION}: Manages main menus for whole COALITIONs.
--
-- ### To manage **command menus**, which are menus that allow the player to issue **functions**, the classes begin with **MENU_COMMAND_**:
--
-- * @{Menu#MENU_CLIENT_COMMAND}: Manages command menus for CLIENTs. This manages menus for units with the skill level "Client".
-- * @{Menu#MENU_GROUP_COMMAND}: Manages command menus for GROUPs.
-- * @{Menu#MENU_COALITION_COMMAND}: Manages command menus for whole COALITIONs.
--
-- ===
--
-- The above menus classes **are derived** from 2 main **abstract** classes defined within the MOOSE framework (so don't use these):
--
-- 1) MENU_ BASE classes (don't use them)
-- ======================================
-- The underlying base menu classes are not to be used within your missions. They simply are abstract classes defining a couple of fields that are used by the
-- derived MENU_ classes to manage menus.
--
-- 1.1) @{Menu#MENU_BASE} class, extends @{Base#BASE}
-- --------------------------------------------------
-- The @{#MENU_BASE} class defines the main MENU class where other MENU classes are derived from.
--
-- 1.2) @{Menu#MENU_COMMAND_BASE} class, extends @{Base#BASE}
-- ----------------------------------------------------------
-- The @{#MENU_COMMAND_BASE} class defines the main MENU class where other MENU COMMAND_ classes are derived from, in order to set commands.
--
-- ===
--
-- The next menus define the MENU classes that you can use within your missions:
--
-- 2) MENU COALITION classes
-- =========================
-- The underlying classes manage the menus for whole coalitions.
--
-- 2.1) @{Menu#MENU_COALITION} class, extends @{Menu#MENU_BASE}
-- ------------------------------------------------------------
-- The @{Menu#MENU_COALITION} class manages the main menus for coalitions.
-- You can add menus with the @{#MENU_COALITION.New} method, which constructs a MENU_COALITION object and returns you the object reference.
-- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_COALITION.Remove}.
-- Refer to the respective methods documentation for usage examples.
--
-- 2.2) @{Menu#MENU_COALITION_COMMAND} class, extends @{Menu#MENU_COMMAND_BASE}
-- ----------------------------------------------------------------------------
-- The @{Menu#MENU_COALITION_COMMAND} class manages the command menus for coalitions, which allow players to execute functions during mission execution.
-- You can add menus with the @{#MENU_COALITION_COMMAND.New} method, which constructs a MENU_COALITION_COMMAND object and returns you the object reference.
-- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_COALITION_COMMAND.Remove}.
-- Refer to the respective methods documentation for usage examples.
--
-- ===
--
-- 3) MENU CLIENT classes
-- ======================
-- The underlying classes manage the menus for units with skill level client or player.
--
-- 3.1) @{Menu#MENU_CLIENT} class, extends @{Menu#MENU_BASE}
-- ---------------------------------------------------------
-- The @{Menu#MENU_CLIENT} class manages the main menus for coalitions.
-- You can add menus with the @{#MENU_CLIENT.New} method, which constructs a MENU_CLIENT object and returns you the object reference.
-- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_CLIENT.Remove}.
-- Refer to the respective methods documentation for usage examples.
--
-- 3.2) @{Menu#MENU_CLIENT_COMMAND} class, extends @{Menu#MENU_COMMAND_BASE}
-- -------------------------------------------------------------------------
-- The @{Menu#MENU_CLIENT_COMMAND} class manages the command menus for coalitions, which allow players to execute functions during mission execution.
-- You can add menus with the @{#MENU_CLIENT_COMMAND.New} method, which constructs a MENU_CLIENT_COMMAND object and returns you the object reference.
-- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_CLIENT_COMMAND.Remove}.
-- Refer to the respective methods documentation for usage examples.
--
-- ===
--
-- 4) MENU GROUP classes
-- =====================
-- The underlying classes manage the menus for groups. Note that groups can be inactive, alive or can be destroyed.
--
-- 4.1) @{Menu#MENU_GROUP} class, extends @{Menu#MENU_BASE}
-- --------------------------------------------------------
-- The @{Menu#MENU_GROUP} class manages the main menus for coalitions.
-- You can add menus with the @{#MENU_GROUP.New} method, which constructs a MENU_GROUP object and returns you the object reference.
-- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_GROUP.Remove}.
-- Refer to the respective methods documentation for usage examples.
--
-- 4.2) @{Menu#MENU_GROUP_COMMAND} class, extends @{Menu#MENU_COMMAND_BASE}
-- ------------------------------------------------------------------------
-- The @{Menu#MENU_GROUP_COMMAND} class manages the command menus for coalitions, which allow players to execute functions during mission execution.
-- You can add menus with the @{#MENU_GROUP_COMMAND.New} method, which constructs a MENU_GROUP_COMMAND object and returns you the object reference.
-- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_GROUP_COMMAND.Remove}.
-- Refer to the respective methods documentation for usage examples.
--
-- ===
--
-- ### Contributions: -
-- ### Authors: FlightControl : Design & Programming
--
-- @module Menu
--- The MENU class
-- @type MENU
-- @extends Base#BASE
MENU = {
ClassName = "MENU",
MenuPath = nil,
MenuText = "",
MenuParentPath = nil
}
---
function MENU:New( MenuText, MenuParentPath )
do -- MENU_BASE
-- Arrange meta tables
local Child = BASE:Inherit( self, BASE:New() )
--- The MENU_BASE class
-- @type MENU_BASE
-- @extends Base#BASE
MENU_BASE = {
ClassName = "MENU_BASE",
MenuPath = nil,
MenuText = "",
MenuParentPath = nil
}
--- Consructor
function MENU_BASE:New( MenuText, ParentMenu )
local MenuParentPath = {}
if ParentMenu ~= nil then
MenuParentPath = ParentMenu.MenuPath
end
Child.MenuPath = nil
Child.MenuText = MenuText
Child.MenuParentPath = MenuParentPath
return Child
local self = BASE:Inherit( self, BASE:New() )
self.MenuPath = nil
self.MenuText = MenuText
self.MenuParentPath = MenuParentPath
return self
end
end
--- The COMMANDMENU class
-- @type COMMANDMENU
-- @extends Menu#MENU
COMMANDMENU = {
ClassName = "COMMANDMENU",
CommandMenuFunction = nil,
CommandMenuArgument = nil
}
do -- MENU_COMMAND_BASE
function COMMANDMENU:New( MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument )
--- The MENU_COMMAND_BASE class
-- @type MENU_COMMAND_BASE
-- @field #function MenuCallHandler
-- @extends Menu#MENU_BASE
MENU_COMMAND_BASE = {
ClassName = "MENU_COMMAND_BASE",
CommandMenuFunction = nil,
CommandMenuArgument = nil,
MenuCallHandler = nil,
}
--- Constructor
function MENU_COMMAND_BASE:New( MenuText, ParentMenu, CommandMenuFunction, CommandMenuArguments )
local self = BASE:Inherit( self, MENU_BASE:New( MenuText, ParentMenu ) )
self.CommandMenuFunction = CommandMenuFunction
self.MenuCallHandler = function( CommandMenuArguments )
self.CommandMenuFunction( unpack( CommandMenuArguments ) )
end
return self
end
-- Arrange meta tables
local MenuParentPath = nil
if ParentMenu ~= nil then
MenuParentPath = ParentMenu.MenuPath
end
local Child = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
Child.MenuPath = missionCommands.addCommand( MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument )
Child.CommandMenuFunction = CommandMenuFunction
Child.CommandMenuArgument = CommandMenuArgument
return Child
end
--- The SUBMENU class
-- @type SUBMENU
-- @extends Menu#MENU
SUBMENU = {
ClassName = "SUBMENU"
}
do -- MENU_COALITION
function SUBMENU:New( MenuText, ParentMenu )
--- The MENU_COALITION class
-- @type MENU_COALITION
-- @extends Menu#MENU_BASE
-- @usage
-- -- This demo creates a menu structure for the planes within the red coalition.
-- -- To test, join the planes, then look at the other radio menus (Option F10).
-- -- Then switch planes and check if the menu is still there.
--
-- local Plane1 = CLIENT:FindByName( "Plane 1" )
-- local Plane2 = CLIENT:FindByName( "Plane 2" )
--
--
-- -- This would create a menu for the red coalition under the main DCS "Others" menu.
-- local MenuCoalitionRed = MENU_COALITION:New( coalition.side.RED, "Manage Menus" )
--
--
-- local function ShowStatus( StatusText, Coalition )
--
-- MESSAGE:New( Coalition, 15 ):ToRed()
-- Plane1:Message( StatusText, 15 )
-- Plane2:Message( StatusText, 15 )
-- end
--
-- local MenuStatus -- Menu#MENU_COALITION
-- local MenuStatusShow -- Menu#MENU_COALITION_COMMAND
--
-- local function RemoveStatusMenu()
-- MenuStatus:Remove()
-- end
--
-- local function AddStatusMenu()
--
-- -- This would create a menu for the red coalition under the MenuCoalitionRed menu object.
-- MenuStatus = MENU_COALITION:New( coalition.side.RED, "Status for Planes" )
-- MenuStatusShow = MENU_COALITION_COMMAND:New( coalition.side.RED, "Show Status", MenuStatus, ShowStatus, "Status of planes is ok!", "Message to Red Coalition" )
-- end
--
-- local MenuAdd = MENU_COALITION_COMMAND:New( coalition.side.RED, "Add Status Menu", MenuCoalitionRed, AddStatusMenu )
-- local MenuRemove = MENU_COALITION_COMMAND:New( coalition.side.RED, "Remove Status Menu", MenuCoalitionRed, RemoveStatusMenu )
MENU_COALITION = {
ClassName = "MENU_COALITION"
}
--- MENU_COALITION constructor. Creates a new MENU_COALITION object and creates the menu for a complete coalition.
-- @param #MENU_COALITION self
-- @param DCSCoalition#coalition.side Coalition The coalition owning the menu.
-- @param #string MenuText The text for the menu.
-- @param #table ParentMenu The parent menu. This parameter can be ignored if you want the menu to be located at the perent menu of DCS world (under F10 other).
-- @return #MENU_COALITION self
function MENU_COALITION:New( Coalition, MenuText, ParentMenu )
local self = BASE:Inherit( self, MENU_BASE:New( MenuText, ParentMenu ) )
self:F( { Coalition, MenuText, ParentMenu } )
self.Coalition = Coalition
self.MenuText = MenuText
self.ParentMenu = ParentMenu
self.Menus = {}
self:T( { MenuText } )
self.MenuPath = missionCommands.addSubMenuForCoalition( Coalition, MenuText, self.MenuParentPath )
self:T( { self.MenuPath } )
if ParentMenu and ParentMenu.Menus then
ParentMenu.Menus[self.MenuPath] = self
end
-- Arrange meta tables
local MenuParentPath = nil
if ParentMenu ~= nil then
MenuParentPath = ParentMenu.MenuPath
end
return self
end
--- Removes the sub menus recursively of this MENU_COALITION. Note that the main menu is kept!
-- @param #MENU_COALITION self
-- @return #MENU_COALITION self
function MENU_COALITION:RemoveSubMenus()
self:F( self.MenuPath )
for MenuID, Menu in pairs( self.Menus ) do
Menu:Remove()
end
end
--- Removes the main menu and the sub menus recursively of this MENU_COALITION.
-- @param #MENU_COALITION self
-- @return #nil
function MENU_COALITION:Remove()
self:F( self.MenuPath )
self:RemoveSubMenus()
missionCommands.removeItemForCoalition( self.Coalition, self.MenuPath )
if self.ParentMenu then
self.ParentMenu.Menus[self.MenuPath] = nil
end
return nil
end
local Child = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
Child.MenuPath = missionCommands.addSubMenu( MenuText, MenuParentPath )
return Child
end
do
do -- MENU_COALITION_COMMAND
--- The MENU_COALITION_COMMAND class
-- @type MENU_COALITION_COMMAND
-- @extends Menu#MENU_COMMAND_BASE
MENU_COALITION_COMMAND = {
ClassName = "MENU_COALITION_COMMAND"
}
--- MENU_COALITION constructor. Creates a new radio command item for a coalition, which can invoke a function with parameters.
-- @param #MENU_COALITION_COMMAND self
-- @param DCSCoalition#coalition.side Coalition The coalition owning the menu.
-- @param #string MenuText The text for the menu.
-- @param Menu#MENU_COALITION ParentMenu The parent menu.
-- @param CommandMenuFunction A function that is called when the menu key is pressed.
-- @param CommandMenuArgument An argument for the function. There can only be ONE argument given. So multiple arguments must be wrapped into a table. See the below example how to do this.
-- @return #MENU_COALITION_COMMAND self
function MENU_COALITION_COMMAND:New( Coalition, MenuText, ParentMenu, CommandMenuFunction, ... )
local self = BASE:Inherit( self, MENU_COMMAND_BASE:New( MenuText, ParentMenu, CommandMenuFunction, arg ) )
self.MenuCoalition = Coalition
self.MenuText = MenuText
self.ParentMenu = ParentMenu
self:T( { MenuText, CommandMenuFunction, arg } )
self.MenuPath = missionCommands.addCommandForCoalition( self.MenuCoalition, MenuText, self.MenuParentPath, self.MenuCallHandler, arg )
ParentMenu.Menus[self.MenuPath] = self
return self
end
--- Removes a radio command item for a coalition
-- @param #MENU_COALITION_COMMAND self
-- @return #nil
function MENU_COALITION_COMMAND:Remove()
self:F( self.MenuPath )
missionCommands.removeItemForCoalition( self.MenuCoalition, self.MenuPath )
if self.ParentMenu then
self.ParentMenu.Menus[self.MenuPath] = nil
end
return nil
end
end
do -- MENU_CLIENT
-- This local variable is used to cache the menus registered under clients.
-- Menus don't dissapear when clients are destroyed and restarted.
@ -79,20 +335,70 @@ do
-- These menu classes are handling this logic with this variable.
local _MENUCLIENTS = {}
--- The MENU_CLIENT class
--- MENU_COALITION constructor. Creates a new radio command item for a coalition, which can invoke a function with parameters.
-- @type MENU_CLIENT
-- @extends Menu#MENU
-- @extends Menu#MENU_BASE
-- @usage
-- -- This demo creates a menu structure for the two clients of planes.
-- -- Each client will receive a different menu structure.
-- -- To test, join the planes, then look at the other radio menus (Option F10).
-- -- Then switch planes and check if the menu is still there.
-- -- And play with the Add and Remove menu options.
--
-- -- Note that in multi player, this will only work after the DCS clients bug is solved.
--
-- local function ShowStatus( PlaneClient, StatusText, Coalition )
--
-- MESSAGE:New( Coalition, 15 ):ToRed()
-- PlaneClient:Message( StatusText, 15 )
-- end
--
-- local MenuStatus = {}
--
-- local function RemoveStatusMenu( MenuClient )
-- local MenuClientName = MenuClient:GetName()
-- MenuStatus[MenuClientName]:Remove()
-- end
--
-- --- @param Client#CLIENT MenuClient
-- local function AddStatusMenu( MenuClient )
-- env.info(MenuClient.ClientName)
-- local MenuClientName = MenuClient:GetName()
-- -- This would create a menu for the red coalition under the MenuCoalitionRed menu object.
-- MenuStatus[MenuClientName] = MENU_CLIENT:New( MenuClient, "Status for Planes" )
-- MENU_CLIENT_COMMAND:New( MenuClient, "Show Status", MenuStatus[MenuClientName], ShowStatus, MenuClient, "Status of planes is ok!", "Message to Red Coalition" )
-- end
--
-- SCHEDULER:New( nil,
-- function()
-- local PlaneClient = CLIENT:FindByName( "Plane 1" )
-- if PlaneClient and PlaneClient:IsAlive() then
-- local MenuManage = MENU_CLIENT:New( PlaneClient, "Manage Menus" )
-- MENU_CLIENT_COMMAND:New( PlaneClient, "Add Status Menu Plane 1", MenuManage, AddStatusMenu, PlaneClient )
-- MENU_CLIENT_COMMAND:New( PlaneClient, "Remove Status Menu Plane 1", MenuManage, RemoveStatusMenu, PlaneClient )
-- end
-- end, {}, 10, 10 )
--
-- SCHEDULER:New( nil,
-- function()
-- local PlaneClient = CLIENT:FindByName( "Plane 2" )
-- if PlaneClient and PlaneClient:IsAlive() then
-- local MenuManage = MENU_CLIENT:New( PlaneClient, "Manage Menus" )
-- MENU_CLIENT_COMMAND:New( PlaneClient, "Add Status Menu Plane 2", MenuManage, AddStatusMenu, PlaneClient )
-- MENU_CLIENT_COMMAND:New( PlaneClient, "Remove Status Menu Plane 2", MenuManage, RemoveStatusMenu, PlaneClient )
-- end
-- end, {}, 10, 10 )
MENU_CLIENT = {
ClassName = "MENU_CLIENT"
}
--- Creates a new menu item for a group
-- @param self
-- @param Client#CLIENT MenuClient The Client owning the menu.
--- MENU_CLIENT constructor. Creates a new radio menu item for a client.
-- @param #MENU_CLIENT self
-- @param Client#CLIENT Client The Client owning the menu.
-- @param #string MenuText The text for the menu.
-- @param #table ParentMenu The parent menu.
-- @return #MENU_CLIENT self
function MENU_CLIENT:New( MenuClient, MenuText, ParentMenu )
function MENU_CLIENT:New( Client, MenuText, ParentMenu )
-- Arrange meta tables
local MenuParentPath = {}
@ -100,11 +406,11 @@ do
MenuParentPath = ParentMenu.MenuPath
end
local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
self:F( { MenuClient, MenuText, ParentMenu } )
local self = BASE:Inherit( self, MENU_BASE:New( MenuText, MenuParentPath ) )
self:F( { Client, MenuText, ParentMenu } )
self.MenuClient = MenuClient
self.MenuClientGroupID = MenuClient:GetClientGroupID()
self.MenuClient = Client
self.MenuClientGroupID = Client:GetClientGroupID()
self.MenuParentPath = MenuParentPath
self.MenuText = MenuText
self.ParentMenu = ParentMenu
@ -117,7 +423,7 @@ do
local MenuPath = _MENUCLIENTS[self.MenuClientGroupID]
self:T( { MenuClient:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText } )
self:T( { Client:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText } )
local MenuPathID = table.concat(MenuParentPath) .. "/" .. MenuText
if MenuPath[MenuPathID] then
@ -127,7 +433,7 @@ do
self.MenuPath = missionCommands.addSubMenuForGroup( self.MenuClient:GetClientGroupID(), MenuText, MenuParentPath )
MenuPath[MenuPathID] = self.MenuPath
self:T( { MenuClient:GetClientGroupName(), self.MenuPath } )
self:T( { Client:GetClientGroupName(), self.MenuPath } )
if ParentMenu and ParentMenu.Menus then
ParentMenu.Menus[self.MenuPath] = self
@ -135,7 +441,7 @@ do
return self
end
--- Removes the sub menus recursively of this MENU_CLIENT.
--- Removes the sub menus recursively of this @{#MENU_CLIENT}.
-- @param #MENU_CLIENT self
-- @return #MENU_CLIENT self
function MENU_CLIENT:RemoveSubMenus()
@ -149,7 +455,7 @@ do
--- Removes the sub menus recursively of this MENU_CLIENT.
-- @param #MENU_CLIENT self
-- @return #MENU_CLIENT self
-- @return #nil
function MENU_CLIENT:Remove()
self:F( self.MenuPath )
@ -173,20 +479,20 @@ do
--- The MENU_CLIENT_COMMAND class
-- @type MENU_CLIENT_COMMAND
-- @extends Menu#MENU
-- @extends Menu#MENU_COMMAND
MENU_CLIENT_COMMAND = {
ClassName = "MENU_CLIENT_COMMAND"
}
--- Creates a new radio command item for a group
-- @param self
-- @param Client#CLIENT MenuClient The Client owning the menu.
-- @param MenuText The text for the menu.
-- @param ParentMenu The parent menu.
--- MENU_CLIENT_COMMAND constructor. Creates a new radio command item for a client, which can invoke a function with parameters.
-- @param #MENU_CLIENT_COMMAND self
-- @param Client#CLIENT Client The Client owning the menu.
-- @param #string MenuText The text for the menu.
-- @param #MENU_BASE ParentMenu The parent menu.
-- @param CommandMenuFunction A function that is called when the menu key is pressed.
-- @param CommandMenuArgument An argument for the function.
-- @return Menu#MENU_CLIENT_COMMAND self
function MENU_CLIENT_COMMAND:New( MenuClient, MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument )
function MENU_CLIENT_COMMAND:New( MenuClient, MenuText, ParentMenu, CommandMenuFunction, ... )
-- Arrange meta tables
@ -195,7 +501,7 @@ do
MenuParentPath = ParentMenu.MenuPath
end
local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
local self = BASE:Inherit( self, MENU_COMMAND_BASE:New( MenuText, MenuParentPath, CommandMenuFunction, arg ) ) -- Menu#MENU_CLIENT_COMMAND
self.MenuClient = MenuClient
self.MenuClientGroupID = MenuClient:GetClientGroupID()
@ -209,24 +515,24 @@ do
local MenuPath = _MENUCLIENTS[self.MenuClientGroupID]
self:T( { MenuClient:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText, CommandMenuFunction, CommandMenuArgument } )
self:T( { MenuClient:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText, CommandMenuFunction, arg } )
local MenuPathID = table.concat(MenuParentPath) .. "/" .. MenuText
if MenuPath[MenuPathID] then
missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), MenuPath[MenuPathID] )
end
self.MenuPath = missionCommands.addCommandForGroup( self.MenuClient:GetClientGroupID(), MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument )
self.MenuPath = missionCommands.addCommandForGroup( self.MenuClient:GetClientGroupID(), MenuText, MenuParentPath, self.MenuCallHandler, arg )
MenuPath[MenuPathID] = self.MenuPath
self.CommandMenuFunction = CommandMenuFunction
self.CommandMenuArgument = CommandMenuArgument
ParentMenu.Menus[self.MenuPath] = self
return self
end
--- Removes a menu structure for a client.
-- @param #MENU_CLIENT_COMMAND self
-- @return #nil
function MENU_CLIENT_COMMAND:Remove()
self:F( self.MenuPath )
@ -249,22 +555,73 @@ end
--- MENU_GROUP
do
-- This local variable is used to cache the menus registered under clients.
-- Menus don't dissapear when clients are destroyed and restarted.
-- So every menu for a client created must be tracked so that program logic accidentally does not create
-- This local variable is used to cache the menus registered under groups.
-- Menus don't dissapear when groups for players are destroyed and restarted.
-- So every menu for a client created must be tracked so that program logic accidentally does not create.
-- the same menus twice during initialization logic.
-- These menu classes are handling this logic with this variable.
local _MENUGROUPS = {}
--- The MENU_GROUP class
-- @type MENU_GROUP
-- @extends Menu#MENU
-- @extends Menu#MENU_BASE
-- @usage
-- -- This demo creates a menu structure for the two groups of planes.
-- -- Each group will receive a different menu structure.
-- -- To test, join the planes, then look at the other radio menus (Option F10).
-- -- Then switch planes and check if the menu is still there.
-- -- And play with the Add and Remove menu options.
--
-- -- Note that in multi player, this will only work after the DCS groups bug is solved.
--
-- local function ShowStatus( PlaneGroup, StatusText, Coalition )
--
-- MESSAGE:New( Coalition, 15 ):ToRed()
-- PlaneGroup:Message( StatusText, 15 )
-- end
--
-- local MenuStatus = {}
--
-- local function RemoveStatusMenu( MenuGroup )
-- local MenuGroupName = MenuGroup:GetName()
-- MenuStatus[MenuGroupName]:Remove()
-- end
--
-- --- @param Group#GROUP MenuGroup
-- local function AddStatusMenu( MenuGroup )
-- env.info(MenuGroup.GroupName)
-- local MenuGroupName = MenuGroup:GetName()
-- -- This would create a menu for the red coalition under the MenuCoalitionRed menu object.
-- MenuStatus[MenuGroupName] = MENU_GROUP:New( MenuGroup, "Status for Planes" )
-- MENU_GROUP_COMMAND:New( MenuGroup, "Show Status", MenuStatus[MenuGroupName], ShowStatus, MenuGroup, "Status of planes is ok!", "Message to Red Coalition" )
-- end
--
-- SCHEDULER:New( nil,
-- function()
-- local PlaneGroup = GROUP:FindByName( "Plane 1" )
-- if PlaneGroup and PlaneGroup:IsAlive() then
-- local MenuManage = MENU_GROUP:New( PlaneGroup, "Manage Menus" )
-- MENU_GROUP_COMMAND:New( PlaneGroup, "Add Status Menu Plane 1", MenuManage, AddStatusMenu, PlaneGroup )
-- MENU_GROUP_COMMAND:New( PlaneGroup, "Remove Status Menu Plane 1", MenuManage, RemoveStatusMenu, PlaneGroup )
-- end
-- end, {}, 10, 10 )
--
-- SCHEDULER:New( nil,
-- function()
-- local PlaneGroup = GROUP:FindByName( "Plane 2" )
-- if PlaneGroup and PlaneGroup:IsAlive() then
-- local MenuManage = MENU_GROUP:New( PlaneGroup, "Manage Menus" )
-- MENU_GROUP_COMMAND:New( PlaneGroup, "Add Status Menu Plane 2", MenuManage, AddStatusMenu, PlaneGroup )
-- MENU_GROUP_COMMAND:New( PlaneGroup, "Remove Status Menu Plane 2", MenuManage, RemoveStatusMenu, PlaneGroup )
-- end
-- end, {}, 10, 10 )
--
MENU_GROUP = {
ClassName = "MENU_GROUP"
}
--- Creates a new menu item for a group
-- @param self
--- MENU_GROUP constructor. Creates a new radio menu item for a group.
-- @param #MENU_GROUP self
-- @param Group#GROUP MenuGroup The Group owning the menu.
-- @param #string MenuText The text for the menu.
-- @param #table ParentMenu The parent menu.
@ -277,7 +634,7 @@ do
MenuParentPath = ParentMenu.MenuPath
end
local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
local self = BASE:Inherit( self, MENU_BASE:New( MenuText, MenuParentPath ) )
self:F( { MenuGroup, MenuText, ParentMenu } )
self.MenuGroup = MenuGroup
@ -325,9 +682,9 @@ do
end
--- Removes the sub menus recursively of this MENU_GROUP.
--- Removes the main menu and sub menus recursively of this MENU_GROUP.
-- @param #MENU_GROUP self
-- @return #MENU_GROUP self
-- @return #nil
function MENU_GROUP:Remove()
self:F( self.MenuPath )
@ -353,7 +710,7 @@ do
--- The MENU_GROUP_COMMAND class
-- @type MENU_GROUP_COMMAND
-- @extends Menu#MENU
-- @extends Menu#MENU_BASE
MENU_GROUP_COMMAND = {
ClassName = "MENU_GROUP_COMMAND"
}
@ -366,20 +723,12 @@ do
-- @param CommandMenuFunction A function that is called when the menu key is pressed.
-- @param CommandMenuArgument An argument for the function.
-- @return Menu#MENU_GROUP_COMMAND self
function MENU_GROUP_COMMAND:New( MenuGroup, MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument )
-- Arrange meta tables
local MenuParentPath = {}
if ParentMenu ~= nil then
MenuParentPath = ParentMenu.MenuPath
end
local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
function MENU_GROUP_COMMAND:New( MenuGroup, MenuText, ParentMenu, CommandMenuFunction, ... )
local self = BASE:Inherit( self, MENU_COMMAND_BASE:New( MenuText, ParentMenu, CommandMenuFunction, arg ) )
self.MenuGroup = MenuGroup
self.MenuGroupID = MenuGroup:GetID()
self.MenuParentPath = MenuParentPath
self.MenuText = MenuText
self.ParentMenu = ParentMenu
@ -389,25 +738,25 @@ do
local MenuPath = _MENUGROUPS[self.MenuGroupID]
self:T( { MenuGroup:GetName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText, CommandMenuFunction, CommandMenuArgument } )
self:T( { MenuGroup:GetName(), MenuPath[table.concat(self.MenuParentPath)], self.MenuParentPath, MenuText, CommandMenuFunction, arg } )
local MenuPathID = table.concat(MenuParentPath) .. "/" .. MenuText
local MenuPathID = table.concat(self.MenuParentPath) .. "/" .. MenuText
if MenuPath[MenuPathID] then
missionCommands.removeItemForGroup( self.MenuGroupID, MenuPath[MenuPathID] )
end
self:T( { "Adding for MenuPath ", MenuText, MenuParentPath } )
self.MenuPath = missionCommands.addCommandForGroup( self.MenuGroupID, MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument )
self:T( { "Adding for MenuPath ", MenuText, self.MenuParentPath } )
self.MenuPath = missionCommands.addCommandForGroup( self.MenuGroupID, MenuText, self.MenuParentPath, self.MenuCallHandler, arg )
MenuPath[MenuPathID] = self.MenuPath
self.CommandMenuFunction = CommandMenuFunction
self.CommandMenuArgument = CommandMenuArgument
ParentMenu.Menus[self.MenuPath] = self
return self
end
--- Removes a menu structure for a group.
-- @param #MENU_GROUP_COMMAND self
-- @return #nil
function MENU_GROUP_COMMAND:Remove()
self:F( self.MenuPath )
@ -429,125 +778,3 @@ do
end
--- The MENU_COALITION class
-- @type MENU_COALITION
-- @extends Menu#MENU
MENU_COALITION = {
ClassName = "MENU_COALITION"
}
--- Creates a new coalition menu item
-- @param #MENU_COALITION self
-- @param DCSCoalition#coalition.side Coalition The coalition owning the menu.
-- @param #string MenuText The text for the menu.
-- @param #table ParentMenu The parent menu.
-- @return #MENU_COALITION self
function MENU_COALITION:New( Coalition, MenuText, ParentMenu )
-- Arrange meta tables
local MenuParentPath = {}
if ParentMenu ~= nil then
MenuParentPath = ParentMenu.MenuPath
end
local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
self:F( { Coalition, MenuText, ParentMenu } )
self.Coalition = Coalition
self.MenuParentPath = MenuParentPath
self.MenuText = MenuText
self.ParentMenu = ParentMenu
self.Menus = {}
self:T( { MenuParentPath, MenuText } )
self.MenuPath = missionCommands.addSubMenuForCoalition( self.Coalition, MenuText, MenuParentPath )
self:T( { self.MenuPath } )
if ParentMenu and ParentMenu.Menus then
ParentMenu.Menus[self.MenuPath] = self
end
return self
end
--- Removes the sub menus recursively of this MENU_COALITION.
-- @param #MENU_COALITION self
-- @return #MENU_COALITION self
function MENU_COALITION:RemoveSubMenus()
self:F( self.MenuPath )
for MenuID, Menu in pairs( self.Menus ) do
Menu:Remove()
end
end
--- Removes the sub menus recursively of this MENU_COALITION.
-- @param #MENU_COALITION self
-- @return #MENU_COALITION self
function MENU_COALITION:Remove()
self:F( self.MenuPath )
self:RemoveSubMenus()
missionCommands.removeItemForCoalition( self.MenuCoalition, self.MenuPath )
self.ParentMenu.Menus[self.MenuPath] = nil
return nil
end
--- The MENU_COALITION_COMMAND class
-- @type MENU_COALITION_COMMAND
-- @extends Menu#MENU
MENU_COALITION_COMMAND = {
ClassName = "MENU_COALITION_COMMAND"
}
--- Creates a new radio command item for a group
-- @param #MENU_COALITION_COMMAND self
-- @param DCSCoalition#coalition.side MenuCoalition The coalition owning the menu.
-- @param MenuText The text for the menu.
-- @param ParentMenu The parent menu.
-- @param CommandMenuFunction A function that is called when the menu key is pressed.
-- @param CommandMenuArgument An argument for the function.
-- @return #MENU_COALITION_COMMAND self
function MENU_COALITION_COMMAND:New( MenuCoalition, MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument )
-- Arrange meta tables
local MenuParentPath = {}
if ParentMenu ~= nil then
MenuParentPath = ParentMenu.MenuPath
end
local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
self.MenuCoalition = MenuCoalition
self.MenuParentPath = MenuParentPath
self.MenuText = MenuText
self.ParentMenu = ParentMenu
self:T( { MenuParentPath, MenuText, CommandMenuFunction, CommandMenuArgument } )
self.MenuPath = missionCommands.addCommandForCoalition( self.MenuCoalition, MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument )
self.CommandMenuFunction = CommandMenuFunction
self.CommandMenuArgument = CommandMenuArgument
ParentMenu.Menus[self.MenuPath] = self
return self
end
--- Removes a radio command item for a coalition
-- @param #MENU_COALITION_COMMAND self
-- @return #MENU_COALITION_COMMAND self
function MENU_COALITION_COMMAND:Remove()
self:F( self.MenuPath )
missionCommands.removeItemForCoalition( self.MenuCoalition, self.MenuPath )
self.ParentMenu.Menus[self.MenuPath] = nil
return nil
end

View File

@ -94,7 +94,9 @@ do -- PROCESS_SMOKE_TARGETS
if math.random( 1, ( 100 * self.TargetSetUnit:Count() ) / 4 ) <= 100 then
SCHEDULER:New( self,
function()
SmokeUnit:Smoke( self.SmokeColor, 150 )
if SmokeUnit:IsAlive() then
SmokeUnit:Smoke( self.SmokeColor, 150 )
end
end, {}, math.random( 10, 60 )
)
end

View File

@ -1,5 +1,5 @@
env.info( '*** MOOSE STATIC INCLUDE START *** ' )
env.info( 'Moose Generation Timestamp: 20160721_2013' )
env.info( 'Moose Generation Timestamp: 20160722_1718' )
local base = _G
Include = {}
@ -7175,79 +7175,335 @@ function EVENT:onEvent( Event )
end
end
--- Encapsulation of DCS World Menu system in a set of MENU classes.
--- This module contains the MENU classes.
--
-- There is a small note... When you see a class like MENU_COMMAND_COALITION with COMMAND in italic, it acutally represents it like this: `MENU_COMMAND_COALITION`.
--
-- ===
--
-- DCS Menus can be managed using the MENU classes.
-- The advantage of using MENU classes is that it hides the complexity of dealing with menu management in more advanced scanerios where you need to
-- set menus and later remove them, and later set them again. You'll find while using use normal DCS scripting functions, that setting and removing
-- menus is not a easy feat if you have complex menu hierarchies defined.
-- Using the MOOSE menu classes, the removal and refreshing of menus are nicely being handled within these classes, and becomes much more easy.
-- On top, MOOSE implements **variable parameter** passing for command menus.
--
-- There are basically two different MENU class types that you need to use:
--
-- ### To manage **main menus**, the classes begin with **MENU_**:
--
-- * @{Menu#MENU_CLIENT}: Manages main menus for CLIENTs. This manages menus for units with the skill level "Client".
-- * @{Menu#MENU_GROUP}: Manages main menus for GROUPs.
-- * @{Menu#MENU_COALITION}: Manages main menus for whole COALITIONs.
--
-- ### To manage **command menus**, which are menus that allow the player to issue **functions**, the classes begin with **MENU_COMMAND_**:
--
-- * @{Menu#MENU_CLIENT_COMMAND}: Manages command menus for CLIENTs. This manages menus for units with the skill level "Client".
-- * @{Menu#MENU_GROUP_COMMAND}: Manages command menus for GROUPs.
-- * @{Menu#MENU_COALITION_COMMAND}: Manages command menus for whole COALITIONs.
--
-- ===
--
-- The above menus classes **are derived** from 2 main **abstract** classes defined within the MOOSE framework (so don't use these):
--
-- 1) MENU_ BASE classes (don't use them)
-- ======================================
-- The underlying base menu classes are not to be used within your missions. They simply are abstract classes defining a couple of fields that are used by the
-- derived MENU_ classes to manage menus.
--
-- 1.1) @{Menu#MENU_BASE} class, extends @{Base#BASE}
-- --------------------------------------------------
-- The @{#MENU_BASE} class defines the main MENU class where other MENU classes are derived from.
--
-- 1.2) @{Menu#MENU_COMMAND_BASE} class, extends @{Base#BASE}
-- ----------------------------------------------------------
-- The @{#MENU_COMMAND_BASE} class defines the main MENU class where other MENU COMMAND_ classes are derived from, in order to set commands.
--
-- ===
--
-- The next menus define the MENU classes that you can use within your missions:
--
-- 2) MENU COALITION classes
-- =========================
-- The underlying classes manage the menus for whole coalitions.
--
-- 2.1) @{Menu#MENU_COALITION} class, extends @{Menu#MENU_BASE}
-- ------------------------------------------------------------
-- The @{Menu#MENU_COALITION} class manages the main menus for coalitions.
-- You can add menus with the @{#MENU_COALITION.New} method, which constructs a MENU_COALITION object and returns you the object reference.
-- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_COALITION.Remove}.
-- Refer to the respective methods documentation for usage examples.
--
-- 2.2) @{Menu#MENU_COALITION_COMMAND} class, extends @{Menu#MENU_COMMAND_BASE}
-- ----------------------------------------------------------------------------
-- The @{Menu#MENU_COALITION_COMMAND} class manages the command menus for coalitions, which allow players to execute functions during mission execution.
-- You can add menus with the @{#MENU_COALITION_COMMAND.New} method, which constructs a MENU_COALITION_COMMAND object and returns you the object reference.
-- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_COALITION_COMMAND.Remove}.
-- Refer to the respective methods documentation for usage examples.
--
-- ===
--
-- 3) MENU CLIENT classes
-- ======================
-- The underlying classes manage the menus for units with skill level client or player.
--
-- 3.1) @{Menu#MENU_CLIENT} class, extends @{Menu#MENU_BASE}
-- ---------------------------------------------------------
-- The @{Menu#MENU_CLIENT} class manages the main menus for coalitions.
-- You can add menus with the @{#MENU_CLIENT.New} method, which constructs a MENU_CLIENT object and returns you the object reference.
-- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_CLIENT.Remove}.
-- Refer to the respective methods documentation for usage examples.
--
-- 3.2) @{Menu#MENU_CLIENT_COMMAND} class, extends @{Menu#MENU_COMMAND_BASE}
-- -------------------------------------------------------------------------
-- The @{Menu#MENU_CLIENT_COMMAND} class manages the command menus for coalitions, which allow players to execute functions during mission execution.
-- You can add menus with the @{#MENU_CLIENT_COMMAND.New} method, which constructs a MENU_CLIENT_COMMAND object and returns you the object reference.
-- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_CLIENT_COMMAND.Remove}.
-- Refer to the respective methods documentation for usage examples.
--
-- ===
--
-- 4) MENU GROUP classes
-- =====================
-- The underlying classes manage the menus for groups. Note that groups can be inactive, alive or can be destroyed.
--
-- 4.1) @{Menu#MENU_GROUP} class, extends @{Menu#MENU_BASE}
-- --------------------------------------------------------
-- The @{Menu#MENU_GROUP} class manages the main menus for coalitions.
-- You can add menus with the @{#MENU_GROUP.New} method, which constructs a MENU_GROUP object and returns you the object reference.
-- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_GROUP.Remove}.
-- Refer to the respective methods documentation for usage examples.
--
-- 4.2) @{Menu#MENU_GROUP_COMMAND} class, extends @{Menu#MENU_COMMAND_BASE}
-- ------------------------------------------------------------------------
-- The @{Menu#MENU_GROUP_COMMAND} class manages the command menus for coalitions, which allow players to execute functions during mission execution.
-- You can add menus with the @{#MENU_GROUP_COMMAND.New} method, which constructs a MENU_GROUP_COMMAND object and returns you the object reference.
-- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_GROUP_COMMAND.Remove}.
-- Refer to the respective methods documentation for usage examples.
--
-- ===
--
-- ### Contributions: -
-- ### Authors: FlightControl : Design & Programming
--
-- @module Menu
--- The MENU class
-- @type MENU
-- @extends Base#BASE
MENU = {
ClassName = "MENU",
MenuPath = nil,
MenuText = "",
MenuParentPath = nil
}
---
function MENU:New( MenuText, MenuParentPath )
do -- MENU_BASE
-- Arrange meta tables
local Child = BASE:Inherit( self, BASE:New() )
--- The MENU_BASE class
-- @type MENU_BASE
-- @extends Base#BASE
MENU_BASE = {
ClassName = "MENU_BASE",
MenuPath = nil,
MenuText = "",
MenuParentPath = nil
}
--- Consructor
function MENU_BASE:New( MenuText, ParentMenu )
local MenuParentPath = {}
if ParentMenu ~= nil then
MenuParentPath = ParentMenu.MenuPath
end
Child.MenuPath = nil
Child.MenuText = MenuText
Child.MenuParentPath = MenuParentPath
return Child
local self = BASE:Inherit( self, BASE:New() )
self.MenuPath = nil
self.MenuText = MenuText
self.MenuParentPath = MenuParentPath
return self
end
end
--- The COMMANDMENU class
-- @type COMMANDMENU
-- @extends Menu#MENU
COMMANDMENU = {
ClassName = "COMMANDMENU",
CommandMenuFunction = nil,
CommandMenuArgument = nil
}
do -- MENU_COMMAND_BASE
function COMMANDMENU:New( MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument )
--- The MENU_COMMAND_BASE class
-- @type MENU_COMMAND_BASE
-- @field #function MenuCallHandler
-- @extends Menu#MENU_BASE
MENU_COMMAND_BASE = {
ClassName = "MENU_COMMAND_BASE",
CommandMenuFunction = nil,
CommandMenuArgument = nil,
MenuCallHandler = nil,
}
--- Constructor
function MENU_COMMAND_BASE:New( MenuText, ParentMenu, CommandMenuFunction, CommandMenuArguments )
local self = BASE:Inherit( self, MENU_BASE:New( MenuText, ParentMenu ) )
self.CommandMenuFunction = CommandMenuFunction
self.MenuCallHandler = function( CommandMenuArguments )
self.CommandMenuFunction( unpack( CommandMenuArguments ) )
end
return self
end
-- Arrange meta tables
local MenuParentPath = nil
if ParentMenu ~= nil then
MenuParentPath = ParentMenu.MenuPath
end
local Child = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
Child.MenuPath = missionCommands.addCommand( MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument )
Child.CommandMenuFunction = CommandMenuFunction
Child.CommandMenuArgument = CommandMenuArgument
return Child
end
--- The SUBMENU class
-- @type SUBMENU
-- @extends Menu#MENU
SUBMENU = {
ClassName = "SUBMENU"
}
do -- MENU_COALITION
function SUBMENU:New( MenuText, ParentMenu )
--- The MENU_COALITION class
-- @type MENU_COALITION
-- @extends Menu#MENU_BASE
-- @usage
-- -- This demo creates a menu structure for the planes within the red coalition.
-- -- To test, join the planes, then look at the other radio menus (Option F10).
-- -- Then switch planes and check if the menu is still there.
--
-- local Plane1 = CLIENT:FindByName( "Plane 1" )
-- local Plane2 = CLIENT:FindByName( "Plane 2" )
--
--
-- -- This would create a menu for the red coalition under the main DCS "Others" menu.
-- local MenuCoalitionRed = MENU_COALITION:New( coalition.side.RED, "Manage Menus" )
--
--
-- local function ShowStatus( StatusText, Coalition )
--
-- MESSAGE:New( Coalition, 15 ):ToRed()
-- Plane1:Message( StatusText, 15 )
-- Plane2:Message( StatusText, 15 )
-- end
--
-- local MenuStatus -- Menu#MENU_COALITION
-- local MenuStatusShow -- Menu#MENU_COALITION_COMMAND
--
-- local function RemoveStatusMenu()
-- MenuStatus:Remove()
-- end
--
-- local function AddStatusMenu()
--
-- -- This would create a menu for the red coalition under the MenuCoalitionRed menu object.
-- MenuStatus = MENU_COALITION:New( coalition.side.RED, "Status for Planes" )
-- MenuStatusShow = MENU_COALITION_COMMAND:New( coalition.side.RED, "Show Status", MenuStatus, ShowStatus, "Status of planes is ok!", "Message to Red Coalition" )
-- end
--
-- local MenuAdd = MENU_COALITION_COMMAND:New( coalition.side.RED, "Add Status Menu", MenuCoalitionRed, AddStatusMenu )
-- local MenuRemove = MENU_COALITION_COMMAND:New( coalition.side.RED, "Remove Status Menu", MenuCoalitionRed, RemoveStatusMenu )
MENU_COALITION = {
ClassName = "MENU_COALITION"
}
--- MENU_COALITION constructor. Creates a new MENU_COALITION object and creates the menu for a complete coalition.
-- @param #MENU_COALITION self
-- @param DCSCoalition#coalition.side Coalition The coalition owning the menu.
-- @param #string MenuText The text for the menu.
-- @param #table ParentMenu The parent menu. This parameter can be ignored if you want the menu to be located at the perent menu of DCS world (under F10 other).
-- @return #MENU_COALITION self
function MENU_COALITION:New( Coalition, MenuText, ParentMenu )
local self = BASE:Inherit( self, MENU_BASE:New( MenuText, ParentMenu ) )
self:F( { Coalition, MenuText, ParentMenu } )
self.Coalition = Coalition
self.MenuText = MenuText
self.ParentMenu = ParentMenu
self.Menus = {}
self:T( { MenuText } )
self.MenuPath = missionCommands.addSubMenuForCoalition( Coalition, MenuText, self.MenuParentPath )
self:T( { self.MenuPath } )
if ParentMenu and ParentMenu.Menus then
ParentMenu.Menus[self.MenuPath] = self
end
-- Arrange meta tables
local MenuParentPath = nil
if ParentMenu ~= nil then
MenuParentPath = ParentMenu.MenuPath
end
return self
end
--- Removes the sub menus recursively of this MENU_COALITION. Note that the main menu is kept!
-- @param #MENU_COALITION self
-- @return #MENU_COALITION self
function MENU_COALITION:RemoveSubMenus()
self:F( self.MenuPath )
for MenuID, Menu in pairs( self.Menus ) do
Menu:Remove()
end
end
--- Removes the main menu and the sub menus recursively of this MENU_COALITION.
-- @param #MENU_COALITION self
-- @return #nil
function MENU_COALITION:Remove()
self:F( self.MenuPath )
self:RemoveSubMenus()
missionCommands.removeItemForCoalition( self.Coalition, self.MenuPath )
if self.ParentMenu then
self.ParentMenu.Menus[self.MenuPath] = nil
end
return nil
end
local Child = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
Child.MenuPath = missionCommands.addSubMenu( MenuText, MenuParentPath )
return Child
end
do
do -- MENU_COALITION_COMMAND
--- The MENU_COALITION_COMMAND class
-- @type MENU_COALITION_COMMAND
-- @extends Menu#MENU_COMMAND_BASE
MENU_COALITION_COMMAND = {
ClassName = "MENU_COALITION_COMMAND"
}
--- MENU_COALITION constructor. Creates a new radio command item for a coalition, which can invoke a function with parameters.
-- @param #MENU_COALITION_COMMAND self
-- @param DCSCoalition#coalition.side Coalition The coalition owning the menu.
-- @param #string MenuText The text for the menu.
-- @param Menu#MENU_COALITION ParentMenu The parent menu.
-- @param CommandMenuFunction A function that is called when the menu key is pressed.
-- @param CommandMenuArgument An argument for the function. There can only be ONE argument given. So multiple arguments must be wrapped into a table. See the below example how to do this.
-- @return #MENU_COALITION_COMMAND self
function MENU_COALITION_COMMAND:New( Coalition, MenuText, ParentMenu, CommandMenuFunction, ... )
local self = BASE:Inherit( self, MENU_COMMAND_BASE:New( MenuText, ParentMenu, CommandMenuFunction, arg ) )
self.MenuCoalition = Coalition
self.MenuText = MenuText
self.ParentMenu = ParentMenu
self:T( { MenuText, CommandMenuFunction, arg } )
self.MenuPath = missionCommands.addCommandForCoalition( self.MenuCoalition, MenuText, self.MenuParentPath, self.MenuCallHandler, arg )
ParentMenu.Menus[self.MenuPath] = self
return self
end
--- Removes a radio command item for a coalition
-- @param #MENU_COALITION_COMMAND self
-- @return #nil
function MENU_COALITION_COMMAND:Remove()
self:F( self.MenuPath )
missionCommands.removeItemForCoalition( self.MenuCoalition, self.MenuPath )
if self.ParentMenu then
self.ParentMenu.Menus[self.MenuPath] = nil
end
return nil
end
end
do -- MENU_CLIENT
-- This local variable is used to cache the menus registered under clients.
-- Menus don't dissapear when clients are destroyed and restarted.
@ -7256,20 +7512,70 @@ do
-- These menu classes are handling this logic with this variable.
local _MENUCLIENTS = {}
--- The MENU_CLIENT class
--- MENU_COALITION constructor. Creates a new radio command item for a coalition, which can invoke a function with parameters.
-- @type MENU_CLIENT
-- @extends Menu#MENU
-- @extends Menu#MENU_BASE
-- @usage
-- -- This demo creates a menu structure for the two clients of planes.
-- -- Each client will receive a different menu structure.
-- -- To test, join the planes, then look at the other radio menus (Option F10).
-- -- Then switch planes and check if the menu is still there.
-- -- And play with the Add and Remove menu options.
--
-- -- Note that in multi player, this will only work after the DCS clients bug is solved.
--
-- local function ShowStatus( PlaneClient, StatusText, Coalition )
--
-- MESSAGE:New( Coalition, 15 ):ToRed()
-- PlaneClient:Message( StatusText, 15 )
-- end
--
-- local MenuStatus = {}
--
-- local function RemoveStatusMenu( MenuClient )
-- local MenuClientName = MenuClient:GetName()
-- MenuStatus[MenuClientName]:Remove()
-- end
--
-- --- @param Client#CLIENT MenuClient
-- local function AddStatusMenu( MenuClient )
-- env.info(MenuClient.ClientName)
-- local MenuClientName = MenuClient:GetName()
-- -- This would create a menu for the red coalition under the MenuCoalitionRed menu object.
-- MenuStatus[MenuClientName] = MENU_CLIENT:New( MenuClient, "Status for Planes" )
-- MENU_CLIENT_COMMAND:New( MenuClient, "Show Status", MenuStatus[MenuClientName], ShowStatus, MenuClient, "Status of planes is ok!", "Message to Red Coalition" )
-- end
--
-- SCHEDULER:New( nil,
-- function()
-- local PlaneClient = CLIENT:FindByName( "Plane 1" )
-- if PlaneClient and PlaneClient:IsAlive() then
-- local MenuManage = MENU_CLIENT:New( PlaneClient, "Manage Menus" )
-- MENU_CLIENT_COMMAND:New( PlaneClient, "Add Status Menu Plane 1", MenuManage, AddStatusMenu, PlaneClient )
-- MENU_CLIENT_COMMAND:New( PlaneClient, "Remove Status Menu Plane 1", MenuManage, RemoveStatusMenu, PlaneClient )
-- end
-- end, {}, 10, 10 )
--
-- SCHEDULER:New( nil,
-- function()
-- local PlaneClient = CLIENT:FindByName( "Plane 2" )
-- if PlaneClient and PlaneClient:IsAlive() then
-- local MenuManage = MENU_CLIENT:New( PlaneClient, "Manage Menus" )
-- MENU_CLIENT_COMMAND:New( PlaneClient, "Add Status Menu Plane 2", MenuManage, AddStatusMenu, PlaneClient )
-- MENU_CLIENT_COMMAND:New( PlaneClient, "Remove Status Menu Plane 2", MenuManage, RemoveStatusMenu, PlaneClient )
-- end
-- end, {}, 10, 10 )
MENU_CLIENT = {
ClassName = "MENU_CLIENT"
}
--- Creates a new menu item for a group
-- @param self
-- @param Client#CLIENT MenuClient The Client owning the menu.
--- MENU_CLIENT constructor. Creates a new radio menu item for a client.
-- @param #MENU_CLIENT self
-- @param Client#CLIENT Client The Client owning the menu.
-- @param #string MenuText The text for the menu.
-- @param #table ParentMenu The parent menu.
-- @return #MENU_CLIENT self
function MENU_CLIENT:New( MenuClient, MenuText, ParentMenu )
function MENU_CLIENT:New( Client, MenuText, ParentMenu )
-- Arrange meta tables
local MenuParentPath = {}
@ -7277,11 +7583,11 @@ do
MenuParentPath = ParentMenu.MenuPath
end
local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
self:F( { MenuClient, MenuText, ParentMenu } )
local self = BASE:Inherit( self, MENU_BASE:New( MenuText, MenuParentPath ) )
self:F( { Client, MenuText, ParentMenu } )
self.MenuClient = MenuClient
self.MenuClientGroupID = MenuClient:GetClientGroupID()
self.MenuClient = Client
self.MenuClientGroupID = Client:GetClientGroupID()
self.MenuParentPath = MenuParentPath
self.MenuText = MenuText
self.ParentMenu = ParentMenu
@ -7294,7 +7600,7 @@ do
local MenuPath = _MENUCLIENTS[self.MenuClientGroupID]
self:T( { MenuClient:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText } )
self:T( { Client:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText } )
local MenuPathID = table.concat(MenuParentPath) .. "/" .. MenuText
if MenuPath[MenuPathID] then
@ -7304,7 +7610,7 @@ do
self.MenuPath = missionCommands.addSubMenuForGroup( self.MenuClient:GetClientGroupID(), MenuText, MenuParentPath )
MenuPath[MenuPathID] = self.MenuPath
self:T( { MenuClient:GetClientGroupName(), self.MenuPath } )
self:T( { Client:GetClientGroupName(), self.MenuPath } )
if ParentMenu and ParentMenu.Menus then
ParentMenu.Menus[self.MenuPath] = self
@ -7312,7 +7618,7 @@ do
return self
end
--- Removes the sub menus recursively of this MENU_CLIENT.
--- Removes the sub menus recursively of this @{#MENU_CLIENT}.
-- @param #MENU_CLIENT self
-- @return #MENU_CLIENT self
function MENU_CLIENT:RemoveSubMenus()
@ -7326,7 +7632,7 @@ do
--- Removes the sub menus recursively of this MENU_CLIENT.
-- @param #MENU_CLIENT self
-- @return #MENU_CLIENT self
-- @return #nil
function MENU_CLIENT:Remove()
self:F( self.MenuPath )
@ -7350,20 +7656,20 @@ do
--- The MENU_CLIENT_COMMAND class
-- @type MENU_CLIENT_COMMAND
-- @extends Menu#MENU
-- @extends Menu#MENU_COMMAND
MENU_CLIENT_COMMAND = {
ClassName = "MENU_CLIENT_COMMAND"
}
--- Creates a new radio command item for a group
-- @param self
-- @param Client#CLIENT MenuClient The Client owning the menu.
-- @param MenuText The text for the menu.
-- @param ParentMenu The parent menu.
--- MENU_CLIENT_COMMAND constructor. Creates a new radio command item for a client, which can invoke a function with parameters.
-- @param #MENU_CLIENT_COMMAND self
-- @param Client#CLIENT Client The Client owning the menu.
-- @param #string MenuText The text for the menu.
-- @param #MENU_BASE ParentMenu The parent menu.
-- @param CommandMenuFunction A function that is called when the menu key is pressed.
-- @param CommandMenuArgument An argument for the function.
-- @return Menu#MENU_CLIENT_COMMAND self
function MENU_CLIENT_COMMAND:New( MenuClient, MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument )
function MENU_CLIENT_COMMAND:New( MenuClient, MenuText, ParentMenu, CommandMenuFunction, ... )
-- Arrange meta tables
@ -7372,7 +7678,7 @@ do
MenuParentPath = ParentMenu.MenuPath
end
local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
local self = BASE:Inherit( self, MENU_COMMAND_BASE:New( MenuText, MenuParentPath, CommandMenuFunction, arg ) ) -- Menu#MENU_CLIENT_COMMAND
self.MenuClient = MenuClient
self.MenuClientGroupID = MenuClient:GetClientGroupID()
@ -7386,24 +7692,24 @@ do
local MenuPath = _MENUCLIENTS[self.MenuClientGroupID]
self:T( { MenuClient:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText, CommandMenuFunction, CommandMenuArgument } )
self:T( { MenuClient:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText, CommandMenuFunction, arg } )
local MenuPathID = table.concat(MenuParentPath) .. "/" .. MenuText
if MenuPath[MenuPathID] then
missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), MenuPath[MenuPathID] )
end
self.MenuPath = missionCommands.addCommandForGroup( self.MenuClient:GetClientGroupID(), MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument )
self.MenuPath = missionCommands.addCommandForGroup( self.MenuClient:GetClientGroupID(), MenuText, MenuParentPath, self.MenuCallHandler, arg )
MenuPath[MenuPathID] = self.MenuPath
self.CommandMenuFunction = CommandMenuFunction
self.CommandMenuArgument = CommandMenuArgument
ParentMenu.Menus[self.MenuPath] = self
return self
end
--- Removes a menu structure for a client.
-- @param #MENU_CLIENT_COMMAND self
-- @return #nil
function MENU_CLIENT_COMMAND:Remove()
self:F( self.MenuPath )
@ -7426,22 +7732,73 @@ end
--- MENU_GROUP
do
-- This local variable is used to cache the menus registered under clients.
-- Menus don't dissapear when clients are destroyed and restarted.
-- So every menu for a client created must be tracked so that program logic accidentally does not create
-- This local variable is used to cache the menus registered under groups.
-- Menus don't dissapear when groups for players are destroyed and restarted.
-- So every menu for a client created must be tracked so that program logic accidentally does not create.
-- the same menus twice during initialization logic.
-- These menu classes are handling this logic with this variable.
local _MENUGROUPS = {}
--- The MENU_GROUP class
-- @type MENU_GROUP
-- @extends Menu#MENU
-- @extends Menu#MENU_BASE
-- @usage
-- -- This demo creates a menu structure for the two groups of planes.
-- -- Each group will receive a different menu structure.
-- -- To test, join the planes, then look at the other radio menus (Option F10).
-- -- Then switch planes and check if the menu is still there.
-- -- And play with the Add and Remove menu options.
--
-- -- Note that in multi player, this will only work after the DCS groups bug is solved.
--
-- local function ShowStatus( PlaneGroup, StatusText, Coalition )
--
-- MESSAGE:New( Coalition, 15 ):ToRed()
-- PlaneGroup:Message( StatusText, 15 )
-- end
--
-- local MenuStatus = {}
--
-- local function RemoveStatusMenu( MenuGroup )
-- local MenuGroupName = MenuGroup:GetName()
-- MenuStatus[MenuGroupName]:Remove()
-- end
--
-- --- @param Group#GROUP MenuGroup
-- local function AddStatusMenu( MenuGroup )
-- env.info(MenuGroup.GroupName)
-- local MenuGroupName = MenuGroup:GetName()
-- -- This would create a menu for the red coalition under the MenuCoalitionRed menu object.
-- MenuStatus[MenuGroupName] = MENU_GROUP:New( MenuGroup, "Status for Planes" )
-- MENU_GROUP_COMMAND:New( MenuGroup, "Show Status", MenuStatus[MenuGroupName], ShowStatus, MenuGroup, "Status of planes is ok!", "Message to Red Coalition" )
-- end
--
-- SCHEDULER:New( nil,
-- function()
-- local PlaneGroup = GROUP:FindByName( "Plane 1" )
-- if PlaneGroup and PlaneGroup:IsAlive() then
-- local MenuManage = MENU_GROUP:New( PlaneGroup, "Manage Menus" )
-- MENU_GROUP_COMMAND:New( PlaneGroup, "Add Status Menu Plane 1", MenuManage, AddStatusMenu, PlaneGroup )
-- MENU_GROUP_COMMAND:New( PlaneGroup, "Remove Status Menu Plane 1", MenuManage, RemoveStatusMenu, PlaneGroup )
-- end
-- end, {}, 10, 10 )
--
-- SCHEDULER:New( nil,
-- function()
-- local PlaneGroup = GROUP:FindByName( "Plane 2" )
-- if PlaneGroup and PlaneGroup:IsAlive() then
-- local MenuManage = MENU_GROUP:New( PlaneGroup, "Manage Menus" )
-- MENU_GROUP_COMMAND:New( PlaneGroup, "Add Status Menu Plane 2", MenuManage, AddStatusMenu, PlaneGroup )
-- MENU_GROUP_COMMAND:New( PlaneGroup, "Remove Status Menu Plane 2", MenuManage, RemoveStatusMenu, PlaneGroup )
-- end
-- end, {}, 10, 10 )
--
MENU_GROUP = {
ClassName = "MENU_GROUP"
}
--- Creates a new menu item for a group
-- @param self
--- MENU_GROUP constructor. Creates a new radio menu item for a group.
-- @param #MENU_GROUP self
-- @param Group#GROUP MenuGroup The Group owning the menu.
-- @param #string MenuText The text for the menu.
-- @param #table ParentMenu The parent menu.
@ -7454,7 +7811,7 @@ do
MenuParentPath = ParentMenu.MenuPath
end
local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
local self = BASE:Inherit( self, MENU_BASE:New( MenuText, MenuParentPath ) )
self:F( { MenuGroup, MenuText, ParentMenu } )
self.MenuGroup = MenuGroup
@ -7502,9 +7859,9 @@ do
end
--- Removes the sub menus recursively of this MENU_GROUP.
--- Removes the main menu and sub menus recursively of this MENU_GROUP.
-- @param #MENU_GROUP self
-- @return #MENU_GROUP self
-- @return #nil
function MENU_GROUP:Remove()
self:F( self.MenuPath )
@ -7530,7 +7887,7 @@ do
--- The MENU_GROUP_COMMAND class
-- @type MENU_GROUP_COMMAND
-- @extends Menu#MENU
-- @extends Menu#MENU_BASE
MENU_GROUP_COMMAND = {
ClassName = "MENU_GROUP_COMMAND"
}
@ -7543,20 +7900,12 @@ do
-- @param CommandMenuFunction A function that is called when the menu key is pressed.
-- @param CommandMenuArgument An argument for the function.
-- @return Menu#MENU_GROUP_COMMAND self
function MENU_GROUP_COMMAND:New( MenuGroup, MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument )
-- Arrange meta tables
local MenuParentPath = {}
if ParentMenu ~= nil then
MenuParentPath = ParentMenu.MenuPath
end
local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
function MENU_GROUP_COMMAND:New( MenuGroup, MenuText, ParentMenu, CommandMenuFunction, ... )
local self = BASE:Inherit( self, MENU_COMMAND_BASE:New( MenuText, ParentMenu, CommandMenuFunction, arg ) )
self.MenuGroup = MenuGroup
self.MenuGroupID = MenuGroup:GetID()
self.MenuParentPath = MenuParentPath
self.MenuText = MenuText
self.ParentMenu = ParentMenu
@ -7566,25 +7915,25 @@ do
local MenuPath = _MENUGROUPS[self.MenuGroupID]
self:T( { MenuGroup:GetName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText, CommandMenuFunction, CommandMenuArgument } )
self:T( { MenuGroup:GetName(), MenuPath[table.concat(self.MenuParentPath)], self.MenuParentPath, MenuText, CommandMenuFunction, arg } )
local MenuPathID = table.concat(MenuParentPath) .. "/" .. MenuText
local MenuPathID = table.concat(self.MenuParentPath) .. "/" .. MenuText
if MenuPath[MenuPathID] then
missionCommands.removeItemForGroup( self.MenuGroupID, MenuPath[MenuPathID] )
end
self:T( { "Adding for MenuPath ", MenuText, MenuParentPath } )
self.MenuPath = missionCommands.addCommandForGroup( self.MenuGroupID, MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument )
self:T( { "Adding for MenuPath ", MenuText, self.MenuParentPath } )
self.MenuPath = missionCommands.addCommandForGroup( self.MenuGroupID, MenuText, self.MenuParentPath, self.MenuCallHandler, arg )
MenuPath[MenuPathID] = self.MenuPath
self.CommandMenuFunction = CommandMenuFunction
self.CommandMenuArgument = CommandMenuArgument
ParentMenu.Menus[self.MenuPath] = self
return self
end
--- Removes a menu structure for a group.
-- @param #MENU_GROUP_COMMAND self
-- @return #nil
function MENU_GROUP_COMMAND:Remove()
self:F( self.MenuPath )
@ -7606,128 +7955,6 @@ do
end
--- The MENU_COALITION class
-- @type MENU_COALITION
-- @extends Menu#MENU
MENU_COALITION = {
ClassName = "MENU_COALITION"
}
--- Creates a new coalition menu item
-- @param #MENU_COALITION self
-- @param DCSCoalition#coalition.side Coalition The coalition owning the menu.
-- @param #string MenuText The text for the menu.
-- @param #table ParentMenu The parent menu.
-- @return #MENU_COALITION self
function MENU_COALITION:New( Coalition, MenuText, ParentMenu )
-- Arrange meta tables
local MenuParentPath = {}
if ParentMenu ~= nil then
MenuParentPath = ParentMenu.MenuPath
end
local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
self:F( { Coalition, MenuText, ParentMenu } )
self.Coalition = Coalition
self.MenuParentPath = MenuParentPath
self.MenuText = MenuText
self.ParentMenu = ParentMenu
self.Menus = {}
self:T( { MenuParentPath, MenuText } )
self.MenuPath = missionCommands.addSubMenuForCoalition( self.Coalition, MenuText, MenuParentPath )
self:T( { self.MenuPath } )
if ParentMenu and ParentMenu.Menus then
ParentMenu.Menus[self.MenuPath] = self
end
return self
end
--- Removes the sub menus recursively of this MENU_COALITION.
-- @param #MENU_COALITION self
-- @return #MENU_COALITION self
function MENU_COALITION:RemoveSubMenus()
self:F( self.MenuPath )
for MenuID, Menu in pairs( self.Menus ) do
Menu:Remove()
end
end
--- Removes the sub menus recursively of this MENU_COALITION.
-- @param #MENU_COALITION self
-- @return #MENU_COALITION self
function MENU_COALITION:Remove()
self:F( self.MenuPath )
self:RemoveSubMenus()
missionCommands.removeItemForCoalition( self.MenuCoalition, self.MenuPath )
self.ParentMenu.Menus[self.MenuPath] = nil
return nil
end
--- The MENU_COALITION_COMMAND class
-- @type MENU_COALITION_COMMAND
-- @extends Menu#MENU
MENU_COALITION_COMMAND = {
ClassName = "MENU_COALITION_COMMAND"
}
--- Creates a new radio command item for a group
-- @param #MENU_COALITION_COMMAND self
-- @param DCSCoalition#coalition.side MenuCoalition The coalition owning the menu.
-- @param MenuText The text for the menu.
-- @param ParentMenu The parent menu.
-- @param CommandMenuFunction A function that is called when the menu key is pressed.
-- @param CommandMenuArgument An argument for the function.
-- @return #MENU_COALITION_COMMAND self
function MENU_COALITION_COMMAND:New( MenuCoalition, MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument )
-- Arrange meta tables
local MenuParentPath = {}
if ParentMenu ~= nil then
MenuParentPath = ParentMenu.MenuPath
end
local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
self.MenuCoalition = MenuCoalition
self.MenuParentPath = MenuParentPath
self.MenuText = MenuText
self.ParentMenu = ParentMenu
self:T( { MenuParentPath, MenuText, CommandMenuFunction, CommandMenuArgument } )
self.MenuPath = missionCommands.addCommandForCoalition( self.MenuCoalition, MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument )
self.CommandMenuFunction = CommandMenuFunction
self.CommandMenuArgument = CommandMenuArgument
ParentMenu.Menus[self.MenuPath] = self
return self
end
--- Removes a radio command item for a coalition
-- @param #MENU_COALITION_COMMAND self
-- @return #MENU_COALITION_COMMAND self
function MENU_COALITION_COMMAND:Remove()
self:F( self.MenuPath )
missionCommands.removeItemForCoalition( self.MenuCoalition, self.MenuPath )
self.ParentMenu.Menus[self.MenuPath] = nil
return nil
end
--- This module contains the GROUP class.
--
-- 1) @{Group#GROUP} class, extends @{Controllable#CONTROLLABLE}
@ -27371,7 +27598,9 @@ do -- PROCESS_SMOKE_TARGETS
if math.random( 1, ( 100 * self.TargetSetUnit:Count() ) / 4 ) <= 100 then
SCHEDULER:New( self,
function()
SmokeUnit:Smoke( self.SmokeColor, 150 )
if SmokeUnit:IsAlive() then
SmokeUnit:Smoke( self.SmokeColor, 150 )
end
end, {}, math.random( 10, 60 )
)
end

View File

@ -1,5 +1,5 @@
env.info( '*** MOOSE STATIC INCLUDE START *** ' )
env.info( 'Moose Generation Timestamp: 20160721_2013' )
env.info( 'Moose Generation Timestamp: 20160722_1718' )
local base = _G
Include = {}
@ -7175,79 +7175,335 @@ function EVENT:onEvent( Event )
end
end
--- Encapsulation of DCS World Menu system in a set of MENU classes.
--- This module contains the MENU classes.
--
-- There is a small note... When you see a class like MENU_COMMAND_COALITION with COMMAND in italic, it acutally represents it like this: `MENU_COMMAND_COALITION`.
--
-- ===
--
-- DCS Menus can be managed using the MENU classes.
-- The advantage of using MENU classes is that it hides the complexity of dealing with menu management in more advanced scanerios where you need to
-- set menus and later remove them, and later set them again. You'll find while using use normal DCS scripting functions, that setting and removing
-- menus is not a easy feat if you have complex menu hierarchies defined.
-- Using the MOOSE menu classes, the removal and refreshing of menus are nicely being handled within these classes, and becomes much more easy.
-- On top, MOOSE implements **variable parameter** passing for command menus.
--
-- There are basically two different MENU class types that you need to use:
--
-- ### To manage **main menus**, the classes begin with **MENU_**:
--
-- * @{Menu#MENU_CLIENT}: Manages main menus for CLIENTs. This manages menus for units with the skill level "Client".
-- * @{Menu#MENU_GROUP}: Manages main menus for GROUPs.
-- * @{Menu#MENU_COALITION}: Manages main menus for whole COALITIONs.
--
-- ### To manage **command menus**, which are menus that allow the player to issue **functions**, the classes begin with **MENU_COMMAND_**:
--
-- * @{Menu#MENU_CLIENT_COMMAND}: Manages command menus for CLIENTs. This manages menus for units with the skill level "Client".
-- * @{Menu#MENU_GROUP_COMMAND}: Manages command menus for GROUPs.
-- * @{Menu#MENU_COALITION_COMMAND}: Manages command menus for whole COALITIONs.
--
-- ===
--
-- The above menus classes **are derived** from 2 main **abstract** classes defined within the MOOSE framework (so don't use these):
--
-- 1) MENU_ BASE classes (don't use them)
-- ======================================
-- The underlying base menu classes are not to be used within your missions. They simply are abstract classes defining a couple of fields that are used by the
-- derived MENU_ classes to manage menus.
--
-- 1.1) @{Menu#MENU_BASE} class, extends @{Base#BASE}
-- --------------------------------------------------
-- The @{#MENU_BASE} class defines the main MENU class where other MENU classes are derived from.
--
-- 1.2) @{Menu#MENU_COMMAND_BASE} class, extends @{Base#BASE}
-- ----------------------------------------------------------
-- The @{#MENU_COMMAND_BASE} class defines the main MENU class where other MENU COMMAND_ classes are derived from, in order to set commands.
--
-- ===
--
-- The next menus define the MENU classes that you can use within your missions:
--
-- 2) MENU COALITION classes
-- =========================
-- The underlying classes manage the menus for whole coalitions.
--
-- 2.1) @{Menu#MENU_COALITION} class, extends @{Menu#MENU_BASE}
-- ------------------------------------------------------------
-- The @{Menu#MENU_COALITION} class manages the main menus for coalitions.
-- You can add menus with the @{#MENU_COALITION.New} method, which constructs a MENU_COALITION object and returns you the object reference.
-- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_COALITION.Remove}.
-- Refer to the respective methods documentation for usage examples.
--
-- 2.2) @{Menu#MENU_COALITION_COMMAND} class, extends @{Menu#MENU_COMMAND_BASE}
-- ----------------------------------------------------------------------------
-- The @{Menu#MENU_COALITION_COMMAND} class manages the command menus for coalitions, which allow players to execute functions during mission execution.
-- You can add menus with the @{#MENU_COALITION_COMMAND.New} method, which constructs a MENU_COALITION_COMMAND object and returns you the object reference.
-- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_COALITION_COMMAND.Remove}.
-- Refer to the respective methods documentation for usage examples.
--
-- ===
--
-- 3) MENU CLIENT classes
-- ======================
-- The underlying classes manage the menus for units with skill level client or player.
--
-- 3.1) @{Menu#MENU_CLIENT} class, extends @{Menu#MENU_BASE}
-- ---------------------------------------------------------
-- The @{Menu#MENU_CLIENT} class manages the main menus for coalitions.
-- You can add menus with the @{#MENU_CLIENT.New} method, which constructs a MENU_CLIENT object and returns you the object reference.
-- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_CLIENT.Remove}.
-- Refer to the respective methods documentation for usage examples.
--
-- 3.2) @{Menu#MENU_CLIENT_COMMAND} class, extends @{Menu#MENU_COMMAND_BASE}
-- -------------------------------------------------------------------------
-- The @{Menu#MENU_CLIENT_COMMAND} class manages the command menus for coalitions, which allow players to execute functions during mission execution.
-- You can add menus with the @{#MENU_CLIENT_COMMAND.New} method, which constructs a MENU_CLIENT_COMMAND object and returns you the object reference.
-- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_CLIENT_COMMAND.Remove}.
-- Refer to the respective methods documentation for usage examples.
--
-- ===
--
-- 4) MENU GROUP classes
-- =====================
-- The underlying classes manage the menus for groups. Note that groups can be inactive, alive or can be destroyed.
--
-- 4.1) @{Menu#MENU_GROUP} class, extends @{Menu#MENU_BASE}
-- --------------------------------------------------------
-- The @{Menu#MENU_GROUP} class manages the main menus for coalitions.
-- You can add menus with the @{#MENU_GROUP.New} method, which constructs a MENU_GROUP object and returns you the object reference.
-- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_GROUP.Remove}.
-- Refer to the respective methods documentation for usage examples.
--
-- 4.2) @{Menu#MENU_GROUP_COMMAND} class, extends @{Menu#MENU_COMMAND_BASE}
-- ------------------------------------------------------------------------
-- The @{Menu#MENU_GROUP_COMMAND} class manages the command menus for coalitions, which allow players to execute functions during mission execution.
-- You can add menus with the @{#MENU_GROUP_COMMAND.New} method, which constructs a MENU_GROUP_COMMAND object and returns you the object reference.
-- Using this object reference, you can then remove ALL the menus and submenus underlying automatically with @{#MENU_GROUP_COMMAND.Remove}.
-- Refer to the respective methods documentation for usage examples.
--
-- ===
--
-- ### Contributions: -
-- ### Authors: FlightControl : Design & Programming
--
-- @module Menu
--- The MENU class
-- @type MENU
-- @extends Base#BASE
MENU = {
ClassName = "MENU",
MenuPath = nil,
MenuText = "",
MenuParentPath = nil
}
---
function MENU:New( MenuText, MenuParentPath )
do -- MENU_BASE
-- Arrange meta tables
local Child = BASE:Inherit( self, BASE:New() )
--- The MENU_BASE class
-- @type MENU_BASE
-- @extends Base#BASE
MENU_BASE = {
ClassName = "MENU_BASE",
MenuPath = nil,
MenuText = "",
MenuParentPath = nil
}
--- Consructor
function MENU_BASE:New( MenuText, ParentMenu )
local MenuParentPath = {}
if ParentMenu ~= nil then
MenuParentPath = ParentMenu.MenuPath
end
Child.MenuPath = nil
Child.MenuText = MenuText
Child.MenuParentPath = MenuParentPath
return Child
local self = BASE:Inherit( self, BASE:New() )
self.MenuPath = nil
self.MenuText = MenuText
self.MenuParentPath = MenuParentPath
return self
end
end
--- The COMMANDMENU class
-- @type COMMANDMENU
-- @extends Menu#MENU
COMMANDMENU = {
ClassName = "COMMANDMENU",
CommandMenuFunction = nil,
CommandMenuArgument = nil
}
do -- MENU_COMMAND_BASE
function COMMANDMENU:New( MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument )
--- The MENU_COMMAND_BASE class
-- @type MENU_COMMAND_BASE
-- @field #function MenuCallHandler
-- @extends Menu#MENU_BASE
MENU_COMMAND_BASE = {
ClassName = "MENU_COMMAND_BASE",
CommandMenuFunction = nil,
CommandMenuArgument = nil,
MenuCallHandler = nil,
}
--- Constructor
function MENU_COMMAND_BASE:New( MenuText, ParentMenu, CommandMenuFunction, CommandMenuArguments )
local self = BASE:Inherit( self, MENU_BASE:New( MenuText, ParentMenu ) )
self.CommandMenuFunction = CommandMenuFunction
self.MenuCallHandler = function( CommandMenuArguments )
self.CommandMenuFunction( unpack( CommandMenuArguments ) )
end
return self
end
-- Arrange meta tables
local MenuParentPath = nil
if ParentMenu ~= nil then
MenuParentPath = ParentMenu.MenuPath
end
local Child = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
Child.MenuPath = missionCommands.addCommand( MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument )
Child.CommandMenuFunction = CommandMenuFunction
Child.CommandMenuArgument = CommandMenuArgument
return Child
end
--- The SUBMENU class
-- @type SUBMENU
-- @extends Menu#MENU
SUBMENU = {
ClassName = "SUBMENU"
}
do -- MENU_COALITION
function SUBMENU:New( MenuText, ParentMenu )
--- The MENU_COALITION class
-- @type MENU_COALITION
-- @extends Menu#MENU_BASE
-- @usage
-- -- This demo creates a menu structure for the planes within the red coalition.
-- -- To test, join the planes, then look at the other radio menus (Option F10).
-- -- Then switch planes and check if the menu is still there.
--
-- local Plane1 = CLIENT:FindByName( "Plane 1" )
-- local Plane2 = CLIENT:FindByName( "Plane 2" )
--
--
-- -- This would create a menu for the red coalition under the main DCS "Others" menu.
-- local MenuCoalitionRed = MENU_COALITION:New( coalition.side.RED, "Manage Menus" )
--
--
-- local function ShowStatus( StatusText, Coalition )
--
-- MESSAGE:New( Coalition, 15 ):ToRed()
-- Plane1:Message( StatusText, 15 )
-- Plane2:Message( StatusText, 15 )
-- end
--
-- local MenuStatus -- Menu#MENU_COALITION
-- local MenuStatusShow -- Menu#MENU_COALITION_COMMAND
--
-- local function RemoveStatusMenu()
-- MenuStatus:Remove()
-- end
--
-- local function AddStatusMenu()
--
-- -- This would create a menu for the red coalition under the MenuCoalitionRed menu object.
-- MenuStatus = MENU_COALITION:New( coalition.side.RED, "Status for Planes" )
-- MenuStatusShow = MENU_COALITION_COMMAND:New( coalition.side.RED, "Show Status", MenuStatus, ShowStatus, "Status of planes is ok!", "Message to Red Coalition" )
-- end
--
-- local MenuAdd = MENU_COALITION_COMMAND:New( coalition.side.RED, "Add Status Menu", MenuCoalitionRed, AddStatusMenu )
-- local MenuRemove = MENU_COALITION_COMMAND:New( coalition.side.RED, "Remove Status Menu", MenuCoalitionRed, RemoveStatusMenu )
MENU_COALITION = {
ClassName = "MENU_COALITION"
}
--- MENU_COALITION constructor. Creates a new MENU_COALITION object and creates the menu for a complete coalition.
-- @param #MENU_COALITION self
-- @param DCSCoalition#coalition.side Coalition The coalition owning the menu.
-- @param #string MenuText The text for the menu.
-- @param #table ParentMenu The parent menu. This parameter can be ignored if you want the menu to be located at the perent menu of DCS world (under F10 other).
-- @return #MENU_COALITION self
function MENU_COALITION:New( Coalition, MenuText, ParentMenu )
local self = BASE:Inherit( self, MENU_BASE:New( MenuText, ParentMenu ) )
self:F( { Coalition, MenuText, ParentMenu } )
self.Coalition = Coalition
self.MenuText = MenuText
self.ParentMenu = ParentMenu
self.Menus = {}
self:T( { MenuText } )
self.MenuPath = missionCommands.addSubMenuForCoalition( Coalition, MenuText, self.MenuParentPath )
self:T( { self.MenuPath } )
if ParentMenu and ParentMenu.Menus then
ParentMenu.Menus[self.MenuPath] = self
end
-- Arrange meta tables
local MenuParentPath = nil
if ParentMenu ~= nil then
MenuParentPath = ParentMenu.MenuPath
end
return self
end
--- Removes the sub menus recursively of this MENU_COALITION. Note that the main menu is kept!
-- @param #MENU_COALITION self
-- @return #MENU_COALITION self
function MENU_COALITION:RemoveSubMenus()
self:F( self.MenuPath )
for MenuID, Menu in pairs( self.Menus ) do
Menu:Remove()
end
end
--- Removes the main menu and the sub menus recursively of this MENU_COALITION.
-- @param #MENU_COALITION self
-- @return #nil
function MENU_COALITION:Remove()
self:F( self.MenuPath )
self:RemoveSubMenus()
missionCommands.removeItemForCoalition( self.Coalition, self.MenuPath )
if self.ParentMenu then
self.ParentMenu.Menus[self.MenuPath] = nil
end
return nil
end
local Child = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
Child.MenuPath = missionCommands.addSubMenu( MenuText, MenuParentPath )
return Child
end
do
do -- MENU_COALITION_COMMAND
--- The MENU_COALITION_COMMAND class
-- @type MENU_COALITION_COMMAND
-- @extends Menu#MENU_COMMAND_BASE
MENU_COALITION_COMMAND = {
ClassName = "MENU_COALITION_COMMAND"
}
--- MENU_COALITION constructor. Creates a new radio command item for a coalition, which can invoke a function with parameters.
-- @param #MENU_COALITION_COMMAND self
-- @param DCSCoalition#coalition.side Coalition The coalition owning the menu.
-- @param #string MenuText The text for the menu.
-- @param Menu#MENU_COALITION ParentMenu The parent menu.
-- @param CommandMenuFunction A function that is called when the menu key is pressed.
-- @param CommandMenuArgument An argument for the function. There can only be ONE argument given. So multiple arguments must be wrapped into a table. See the below example how to do this.
-- @return #MENU_COALITION_COMMAND self
function MENU_COALITION_COMMAND:New( Coalition, MenuText, ParentMenu, CommandMenuFunction, ... )
local self = BASE:Inherit( self, MENU_COMMAND_BASE:New( MenuText, ParentMenu, CommandMenuFunction, arg ) )
self.MenuCoalition = Coalition
self.MenuText = MenuText
self.ParentMenu = ParentMenu
self:T( { MenuText, CommandMenuFunction, arg } )
self.MenuPath = missionCommands.addCommandForCoalition( self.MenuCoalition, MenuText, self.MenuParentPath, self.MenuCallHandler, arg )
ParentMenu.Menus[self.MenuPath] = self
return self
end
--- Removes a radio command item for a coalition
-- @param #MENU_COALITION_COMMAND self
-- @return #nil
function MENU_COALITION_COMMAND:Remove()
self:F( self.MenuPath )
missionCommands.removeItemForCoalition( self.MenuCoalition, self.MenuPath )
if self.ParentMenu then
self.ParentMenu.Menus[self.MenuPath] = nil
end
return nil
end
end
do -- MENU_CLIENT
-- This local variable is used to cache the menus registered under clients.
-- Menus don't dissapear when clients are destroyed and restarted.
@ -7256,20 +7512,70 @@ do
-- These menu classes are handling this logic with this variable.
local _MENUCLIENTS = {}
--- The MENU_CLIENT class
--- MENU_COALITION constructor. Creates a new radio command item for a coalition, which can invoke a function with parameters.
-- @type MENU_CLIENT
-- @extends Menu#MENU
-- @extends Menu#MENU_BASE
-- @usage
-- -- This demo creates a menu structure for the two clients of planes.
-- -- Each client will receive a different menu structure.
-- -- To test, join the planes, then look at the other radio menus (Option F10).
-- -- Then switch planes and check if the menu is still there.
-- -- And play with the Add and Remove menu options.
--
-- -- Note that in multi player, this will only work after the DCS clients bug is solved.
--
-- local function ShowStatus( PlaneClient, StatusText, Coalition )
--
-- MESSAGE:New( Coalition, 15 ):ToRed()
-- PlaneClient:Message( StatusText, 15 )
-- end
--
-- local MenuStatus = {}
--
-- local function RemoveStatusMenu( MenuClient )
-- local MenuClientName = MenuClient:GetName()
-- MenuStatus[MenuClientName]:Remove()
-- end
--
-- --- @param Client#CLIENT MenuClient
-- local function AddStatusMenu( MenuClient )
-- env.info(MenuClient.ClientName)
-- local MenuClientName = MenuClient:GetName()
-- -- This would create a menu for the red coalition under the MenuCoalitionRed menu object.
-- MenuStatus[MenuClientName] = MENU_CLIENT:New( MenuClient, "Status for Planes" )
-- MENU_CLIENT_COMMAND:New( MenuClient, "Show Status", MenuStatus[MenuClientName], ShowStatus, MenuClient, "Status of planes is ok!", "Message to Red Coalition" )
-- end
--
-- SCHEDULER:New( nil,
-- function()
-- local PlaneClient = CLIENT:FindByName( "Plane 1" )
-- if PlaneClient and PlaneClient:IsAlive() then
-- local MenuManage = MENU_CLIENT:New( PlaneClient, "Manage Menus" )
-- MENU_CLIENT_COMMAND:New( PlaneClient, "Add Status Menu Plane 1", MenuManage, AddStatusMenu, PlaneClient )
-- MENU_CLIENT_COMMAND:New( PlaneClient, "Remove Status Menu Plane 1", MenuManage, RemoveStatusMenu, PlaneClient )
-- end
-- end, {}, 10, 10 )
--
-- SCHEDULER:New( nil,
-- function()
-- local PlaneClient = CLIENT:FindByName( "Plane 2" )
-- if PlaneClient and PlaneClient:IsAlive() then
-- local MenuManage = MENU_CLIENT:New( PlaneClient, "Manage Menus" )
-- MENU_CLIENT_COMMAND:New( PlaneClient, "Add Status Menu Plane 2", MenuManage, AddStatusMenu, PlaneClient )
-- MENU_CLIENT_COMMAND:New( PlaneClient, "Remove Status Menu Plane 2", MenuManage, RemoveStatusMenu, PlaneClient )
-- end
-- end, {}, 10, 10 )
MENU_CLIENT = {
ClassName = "MENU_CLIENT"
}
--- Creates a new menu item for a group
-- @param self
-- @param Client#CLIENT MenuClient The Client owning the menu.
--- MENU_CLIENT constructor. Creates a new radio menu item for a client.
-- @param #MENU_CLIENT self
-- @param Client#CLIENT Client The Client owning the menu.
-- @param #string MenuText The text for the menu.
-- @param #table ParentMenu The parent menu.
-- @return #MENU_CLIENT self
function MENU_CLIENT:New( MenuClient, MenuText, ParentMenu )
function MENU_CLIENT:New( Client, MenuText, ParentMenu )
-- Arrange meta tables
local MenuParentPath = {}
@ -7277,11 +7583,11 @@ do
MenuParentPath = ParentMenu.MenuPath
end
local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
self:F( { MenuClient, MenuText, ParentMenu } )
local self = BASE:Inherit( self, MENU_BASE:New( MenuText, MenuParentPath ) )
self:F( { Client, MenuText, ParentMenu } )
self.MenuClient = MenuClient
self.MenuClientGroupID = MenuClient:GetClientGroupID()
self.MenuClient = Client
self.MenuClientGroupID = Client:GetClientGroupID()
self.MenuParentPath = MenuParentPath
self.MenuText = MenuText
self.ParentMenu = ParentMenu
@ -7294,7 +7600,7 @@ do
local MenuPath = _MENUCLIENTS[self.MenuClientGroupID]
self:T( { MenuClient:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText } )
self:T( { Client:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText } )
local MenuPathID = table.concat(MenuParentPath) .. "/" .. MenuText
if MenuPath[MenuPathID] then
@ -7304,7 +7610,7 @@ do
self.MenuPath = missionCommands.addSubMenuForGroup( self.MenuClient:GetClientGroupID(), MenuText, MenuParentPath )
MenuPath[MenuPathID] = self.MenuPath
self:T( { MenuClient:GetClientGroupName(), self.MenuPath } )
self:T( { Client:GetClientGroupName(), self.MenuPath } )
if ParentMenu and ParentMenu.Menus then
ParentMenu.Menus[self.MenuPath] = self
@ -7312,7 +7618,7 @@ do
return self
end
--- Removes the sub menus recursively of this MENU_CLIENT.
--- Removes the sub menus recursively of this @{#MENU_CLIENT}.
-- @param #MENU_CLIENT self
-- @return #MENU_CLIENT self
function MENU_CLIENT:RemoveSubMenus()
@ -7326,7 +7632,7 @@ do
--- Removes the sub menus recursively of this MENU_CLIENT.
-- @param #MENU_CLIENT self
-- @return #MENU_CLIENT self
-- @return #nil
function MENU_CLIENT:Remove()
self:F( self.MenuPath )
@ -7350,20 +7656,20 @@ do
--- The MENU_CLIENT_COMMAND class
-- @type MENU_CLIENT_COMMAND
-- @extends Menu#MENU
-- @extends Menu#MENU_COMMAND
MENU_CLIENT_COMMAND = {
ClassName = "MENU_CLIENT_COMMAND"
}
--- Creates a new radio command item for a group
-- @param self
-- @param Client#CLIENT MenuClient The Client owning the menu.
-- @param MenuText The text for the menu.
-- @param ParentMenu The parent menu.
--- MENU_CLIENT_COMMAND constructor. Creates a new radio command item for a client, which can invoke a function with parameters.
-- @param #MENU_CLIENT_COMMAND self
-- @param Client#CLIENT Client The Client owning the menu.
-- @param #string MenuText The text for the menu.
-- @param #MENU_BASE ParentMenu The parent menu.
-- @param CommandMenuFunction A function that is called when the menu key is pressed.
-- @param CommandMenuArgument An argument for the function.
-- @return Menu#MENU_CLIENT_COMMAND self
function MENU_CLIENT_COMMAND:New( MenuClient, MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument )
function MENU_CLIENT_COMMAND:New( MenuClient, MenuText, ParentMenu, CommandMenuFunction, ... )
-- Arrange meta tables
@ -7372,7 +7678,7 @@ do
MenuParentPath = ParentMenu.MenuPath
end
local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
local self = BASE:Inherit( self, MENU_COMMAND_BASE:New( MenuText, MenuParentPath, CommandMenuFunction, arg ) ) -- Menu#MENU_CLIENT_COMMAND
self.MenuClient = MenuClient
self.MenuClientGroupID = MenuClient:GetClientGroupID()
@ -7386,24 +7692,24 @@ do
local MenuPath = _MENUCLIENTS[self.MenuClientGroupID]
self:T( { MenuClient:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText, CommandMenuFunction, CommandMenuArgument } )
self:T( { MenuClient:GetClientGroupName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText, CommandMenuFunction, arg } )
local MenuPathID = table.concat(MenuParentPath) .. "/" .. MenuText
if MenuPath[MenuPathID] then
missionCommands.removeItemForGroup( self.MenuClient:GetClientGroupID(), MenuPath[MenuPathID] )
end
self.MenuPath = missionCommands.addCommandForGroup( self.MenuClient:GetClientGroupID(), MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument )
self.MenuPath = missionCommands.addCommandForGroup( self.MenuClient:GetClientGroupID(), MenuText, MenuParentPath, self.MenuCallHandler, arg )
MenuPath[MenuPathID] = self.MenuPath
self.CommandMenuFunction = CommandMenuFunction
self.CommandMenuArgument = CommandMenuArgument
ParentMenu.Menus[self.MenuPath] = self
return self
end
--- Removes a menu structure for a client.
-- @param #MENU_CLIENT_COMMAND self
-- @return #nil
function MENU_CLIENT_COMMAND:Remove()
self:F( self.MenuPath )
@ -7426,22 +7732,73 @@ end
--- MENU_GROUP
do
-- This local variable is used to cache the menus registered under clients.
-- Menus don't dissapear when clients are destroyed and restarted.
-- So every menu for a client created must be tracked so that program logic accidentally does not create
-- This local variable is used to cache the menus registered under groups.
-- Menus don't dissapear when groups for players are destroyed and restarted.
-- So every menu for a client created must be tracked so that program logic accidentally does not create.
-- the same menus twice during initialization logic.
-- These menu classes are handling this logic with this variable.
local _MENUGROUPS = {}
--- The MENU_GROUP class
-- @type MENU_GROUP
-- @extends Menu#MENU
-- @extends Menu#MENU_BASE
-- @usage
-- -- This demo creates a menu structure for the two groups of planes.
-- -- Each group will receive a different menu structure.
-- -- To test, join the planes, then look at the other radio menus (Option F10).
-- -- Then switch planes and check if the menu is still there.
-- -- And play with the Add and Remove menu options.
--
-- -- Note that in multi player, this will only work after the DCS groups bug is solved.
--
-- local function ShowStatus( PlaneGroup, StatusText, Coalition )
--
-- MESSAGE:New( Coalition, 15 ):ToRed()
-- PlaneGroup:Message( StatusText, 15 )
-- end
--
-- local MenuStatus = {}
--
-- local function RemoveStatusMenu( MenuGroup )
-- local MenuGroupName = MenuGroup:GetName()
-- MenuStatus[MenuGroupName]:Remove()
-- end
--
-- --- @param Group#GROUP MenuGroup
-- local function AddStatusMenu( MenuGroup )
-- env.info(MenuGroup.GroupName)
-- local MenuGroupName = MenuGroup:GetName()
-- -- This would create a menu for the red coalition under the MenuCoalitionRed menu object.
-- MenuStatus[MenuGroupName] = MENU_GROUP:New( MenuGroup, "Status for Planes" )
-- MENU_GROUP_COMMAND:New( MenuGroup, "Show Status", MenuStatus[MenuGroupName], ShowStatus, MenuGroup, "Status of planes is ok!", "Message to Red Coalition" )
-- end
--
-- SCHEDULER:New( nil,
-- function()
-- local PlaneGroup = GROUP:FindByName( "Plane 1" )
-- if PlaneGroup and PlaneGroup:IsAlive() then
-- local MenuManage = MENU_GROUP:New( PlaneGroup, "Manage Menus" )
-- MENU_GROUP_COMMAND:New( PlaneGroup, "Add Status Menu Plane 1", MenuManage, AddStatusMenu, PlaneGroup )
-- MENU_GROUP_COMMAND:New( PlaneGroup, "Remove Status Menu Plane 1", MenuManage, RemoveStatusMenu, PlaneGroup )
-- end
-- end, {}, 10, 10 )
--
-- SCHEDULER:New( nil,
-- function()
-- local PlaneGroup = GROUP:FindByName( "Plane 2" )
-- if PlaneGroup and PlaneGroup:IsAlive() then
-- local MenuManage = MENU_GROUP:New( PlaneGroup, "Manage Menus" )
-- MENU_GROUP_COMMAND:New( PlaneGroup, "Add Status Menu Plane 2", MenuManage, AddStatusMenu, PlaneGroup )
-- MENU_GROUP_COMMAND:New( PlaneGroup, "Remove Status Menu Plane 2", MenuManage, RemoveStatusMenu, PlaneGroup )
-- end
-- end, {}, 10, 10 )
--
MENU_GROUP = {
ClassName = "MENU_GROUP"
}
--- Creates a new menu item for a group
-- @param self
--- MENU_GROUP constructor. Creates a new radio menu item for a group.
-- @param #MENU_GROUP self
-- @param Group#GROUP MenuGroup The Group owning the menu.
-- @param #string MenuText The text for the menu.
-- @param #table ParentMenu The parent menu.
@ -7454,7 +7811,7 @@ do
MenuParentPath = ParentMenu.MenuPath
end
local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
local self = BASE:Inherit( self, MENU_BASE:New( MenuText, MenuParentPath ) )
self:F( { MenuGroup, MenuText, ParentMenu } )
self.MenuGroup = MenuGroup
@ -7502,9 +7859,9 @@ do
end
--- Removes the sub menus recursively of this MENU_GROUP.
--- Removes the main menu and sub menus recursively of this MENU_GROUP.
-- @param #MENU_GROUP self
-- @return #MENU_GROUP self
-- @return #nil
function MENU_GROUP:Remove()
self:F( self.MenuPath )
@ -7530,7 +7887,7 @@ do
--- The MENU_GROUP_COMMAND class
-- @type MENU_GROUP_COMMAND
-- @extends Menu#MENU
-- @extends Menu#MENU_BASE
MENU_GROUP_COMMAND = {
ClassName = "MENU_GROUP_COMMAND"
}
@ -7543,20 +7900,12 @@ do
-- @param CommandMenuFunction A function that is called when the menu key is pressed.
-- @param CommandMenuArgument An argument for the function.
-- @return Menu#MENU_GROUP_COMMAND self
function MENU_GROUP_COMMAND:New( MenuGroup, MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument )
-- Arrange meta tables
local MenuParentPath = {}
if ParentMenu ~= nil then
MenuParentPath = ParentMenu.MenuPath
end
local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
function MENU_GROUP_COMMAND:New( MenuGroup, MenuText, ParentMenu, CommandMenuFunction, ... )
local self = BASE:Inherit( self, MENU_COMMAND_BASE:New( MenuText, ParentMenu, CommandMenuFunction, arg ) )
self.MenuGroup = MenuGroup
self.MenuGroupID = MenuGroup:GetID()
self.MenuParentPath = MenuParentPath
self.MenuText = MenuText
self.ParentMenu = ParentMenu
@ -7566,25 +7915,25 @@ do
local MenuPath = _MENUGROUPS[self.MenuGroupID]
self:T( { MenuGroup:GetName(), MenuPath[table.concat(MenuParentPath)], MenuParentPath, MenuText, CommandMenuFunction, CommandMenuArgument } )
self:T( { MenuGroup:GetName(), MenuPath[table.concat(self.MenuParentPath)], self.MenuParentPath, MenuText, CommandMenuFunction, arg } )
local MenuPathID = table.concat(MenuParentPath) .. "/" .. MenuText
local MenuPathID = table.concat(self.MenuParentPath) .. "/" .. MenuText
if MenuPath[MenuPathID] then
missionCommands.removeItemForGroup( self.MenuGroupID, MenuPath[MenuPathID] )
end
self:T( { "Adding for MenuPath ", MenuText, MenuParentPath } )
self.MenuPath = missionCommands.addCommandForGroup( self.MenuGroupID, MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument )
self:T( { "Adding for MenuPath ", MenuText, self.MenuParentPath } )
self.MenuPath = missionCommands.addCommandForGroup( self.MenuGroupID, MenuText, self.MenuParentPath, self.MenuCallHandler, arg )
MenuPath[MenuPathID] = self.MenuPath
self.CommandMenuFunction = CommandMenuFunction
self.CommandMenuArgument = CommandMenuArgument
ParentMenu.Menus[self.MenuPath] = self
return self
end
--- Removes a menu structure for a group.
-- @param #MENU_GROUP_COMMAND self
-- @return #nil
function MENU_GROUP_COMMAND:Remove()
self:F( self.MenuPath )
@ -7606,128 +7955,6 @@ do
end
--- The MENU_COALITION class
-- @type MENU_COALITION
-- @extends Menu#MENU
MENU_COALITION = {
ClassName = "MENU_COALITION"
}
--- Creates a new coalition menu item
-- @param #MENU_COALITION self
-- @param DCSCoalition#coalition.side Coalition The coalition owning the menu.
-- @param #string MenuText The text for the menu.
-- @param #table ParentMenu The parent menu.
-- @return #MENU_COALITION self
function MENU_COALITION:New( Coalition, MenuText, ParentMenu )
-- Arrange meta tables
local MenuParentPath = {}
if ParentMenu ~= nil then
MenuParentPath = ParentMenu.MenuPath
end
local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
self:F( { Coalition, MenuText, ParentMenu } )
self.Coalition = Coalition
self.MenuParentPath = MenuParentPath
self.MenuText = MenuText
self.ParentMenu = ParentMenu
self.Menus = {}
self:T( { MenuParentPath, MenuText } )
self.MenuPath = missionCommands.addSubMenuForCoalition( self.Coalition, MenuText, MenuParentPath )
self:T( { self.MenuPath } )
if ParentMenu and ParentMenu.Menus then
ParentMenu.Menus[self.MenuPath] = self
end
return self
end
--- Removes the sub menus recursively of this MENU_COALITION.
-- @param #MENU_COALITION self
-- @return #MENU_COALITION self
function MENU_COALITION:RemoveSubMenus()
self:F( self.MenuPath )
for MenuID, Menu in pairs( self.Menus ) do
Menu:Remove()
end
end
--- Removes the sub menus recursively of this MENU_COALITION.
-- @param #MENU_COALITION self
-- @return #MENU_COALITION self
function MENU_COALITION:Remove()
self:F( self.MenuPath )
self:RemoveSubMenus()
missionCommands.removeItemForCoalition( self.MenuCoalition, self.MenuPath )
self.ParentMenu.Menus[self.MenuPath] = nil
return nil
end
--- The MENU_COALITION_COMMAND class
-- @type MENU_COALITION_COMMAND
-- @extends Menu#MENU
MENU_COALITION_COMMAND = {
ClassName = "MENU_COALITION_COMMAND"
}
--- Creates a new radio command item for a group
-- @param #MENU_COALITION_COMMAND self
-- @param DCSCoalition#coalition.side MenuCoalition The coalition owning the menu.
-- @param MenuText The text for the menu.
-- @param ParentMenu The parent menu.
-- @param CommandMenuFunction A function that is called when the menu key is pressed.
-- @param CommandMenuArgument An argument for the function.
-- @return #MENU_COALITION_COMMAND self
function MENU_COALITION_COMMAND:New( MenuCoalition, MenuText, ParentMenu, CommandMenuFunction, CommandMenuArgument )
-- Arrange meta tables
local MenuParentPath = {}
if ParentMenu ~= nil then
MenuParentPath = ParentMenu.MenuPath
end
local self = BASE:Inherit( self, MENU:New( MenuText, MenuParentPath ) )
self.MenuCoalition = MenuCoalition
self.MenuParentPath = MenuParentPath
self.MenuText = MenuText
self.ParentMenu = ParentMenu
self:T( { MenuParentPath, MenuText, CommandMenuFunction, CommandMenuArgument } )
self.MenuPath = missionCommands.addCommandForCoalition( self.MenuCoalition, MenuText, MenuParentPath, CommandMenuFunction, CommandMenuArgument )
self.CommandMenuFunction = CommandMenuFunction
self.CommandMenuArgument = CommandMenuArgument
ParentMenu.Menus[self.MenuPath] = self
return self
end
--- Removes a radio command item for a coalition
-- @param #MENU_COALITION_COMMAND self
-- @return #MENU_COALITION_COMMAND self
function MENU_COALITION_COMMAND:Remove()
self:F( self.MenuPath )
missionCommands.removeItemForCoalition( self.MenuCoalition, self.MenuPath )
self.ParentMenu.Menus[self.MenuPath] = nil
return nil
end
--- This module contains the GROUP class.
--
-- 1) @{Group#GROUP} class, extends @{Controllable#CONTROLLABLE}
@ -27371,7 +27598,9 @@ do -- PROCESS_SMOKE_TARGETS
if math.random( 1, ( 100 * self.TargetSetUnit:Count() ) / 4 ) <= 100 then
SCHEDULER:New( self,
function()
SmokeUnit:Smoke( self.SmokeColor, 150 )
if SmokeUnit:IsAlive() then
SmokeUnit:Smoke( self.SmokeColor, 150 )
end
end, {}, math.random( 10, 60 )
)
end

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,3 @@
routes=
{
}

View File

@ -0,0 +1,209 @@
-- View scripts
-- Copyright (C) 2004, Eagle Dynamics.
DisableCombatViews = false -- F5 & Ctrl-F5
ExternalObjectsLockDistance = 10000.0
ShowTargetInfo = false
CameraTerrainRestriction = true
hAngleRearDefault = 180
vAngleRearDefault = -8.0
vAngleRearMin = -90 -- -8.0
vAngleRearMax = 90.0
dbg_shell = "weapons.shells.PKT_7_62_T" -- 23mm shell
-- dbg_shell = "weapons.shells.2A64_152" -- 152mm shell
dbg_shell_v0 = -1 -- Muzzle speed m/s (-1 - speed from shall database)
dbg_shell_fire_rate = 60
--reformatted per-unit data to be mod system friendly
--this file is no longer should be edited for adding new flyable aircraft , DCS automatically check core database (i.e. where you define your aircraft in aircraft table just define ViewSettings and SnapViews tables)
function default_fighter_player(t)
local res = {
CameraViewAngleLimits = {20.000000,140.000000},
CameraAngleRestriction = {false ,90.000000,0.500000},
EyePoint = {0.05 ,0.000000 ,0.000000},
limits_6DOF = {x = {-0.050000,0.4500000},y ={-0.300000,0.100000},z = {-0.220000,0.220000},roll = 90.000000},
Allow360rotation = false,
CameraAngleLimits = {200,-80.000000,110.000000},
ShoulderSize = 0.2, -- move body when azimuth value more then 90 degrees
}
if t then
for i,o in pairs(t) do
res[i] = o
end
end
return res
end
function fulcrum()
return {
Cockpit = {
default_fighter_player({CockpitLocalPoint = {4.71,1.28,0.000000}})
},
Chase = {
LocalPoint = {1.220000,3.750000,0.000000},
AnglesDefault = {180.000000,-8.000000},
}, -- Chase
Arcade = {
LocalPoint = {-15.080000,6.350000,0.000000},
AnglesDefault = {0.000000,-8.000000},
}, -- Arcade
}
end
ViewSettings = {}
ViewSettings["A-10A"] = {
Cockpit = {
[1] = default_fighter_player({CockpitLocalPoint = {4.300000,1.282000,0.000000},
EyePoint = {0.000000,0.000000,0.000000},
limits_6DOF = {x = {-0.050000,0.600000},
y = {-0.300000,0.100000},
z = {-0.250000,0.250000},
roll = 90.000000}}),
}, -- Cockpit
Chase = {
LocalPoint = {0.600000,3.682000,0.000000},
AnglesDefault = {180.000000,-8.000000},
}, -- Chase
Arcade = {
LocalPoint = {-27.000000,12.000000,0.000000},
AnglesDefault = {0.000000,-12.000000},
}, -- Arcade
}
ViewSettings["A-10C"] = {
Cockpit = {
[1] = default_fighter_player({CockpitLocalPoint = {4.300000,1.282000,0.000000},
EyePoint = {0.000000,0.000000,0.000000},
limits_6DOF = {x = {-0.050000,0.600000},
y = {-0.300000,0.100000},
z = {-0.250000,0.250000},
roll = 90.000000}}),
}, -- Cockpit
Chase = {
LocalPoint = {0.600000,3.682000,0.000000},
AnglesDefault = {180.000000,-8.000000},
}, -- Chase
Arcade = {
LocalPoint = {-27.000000,12.000000,0.000000},
AnglesDefault = {0.000000,-12.000000},
}, -- Arcade
}
ViewSettings["F-15C"] = {
Cockpit = {
[1] = default_fighter_player({CockpitLocalPoint = {6.210000,1.204000,0.000000}})-- player slot 1
}, -- Cockpit
Chase = {
LocalPoint = {2.510000,3.604000,0.000000},
AnglesDefault = {180.000000,-8.000000},
}, -- Chase
Arcade = {
LocalPoint = {-13.790000,6.204000,0.000000},
AnglesDefault = {0.000000,-8.000000},
}, -- Arcade
}
ViewSettings["Ka-50"] = {
Cockpit = {
[1] = {-- player slot 1
CockpitLocalPoint = {3.188000,0.390000,0.000000},
CameraViewAngleLimits = {20.000000,120.000000},
CameraAngleRestriction = {false,60.000000,0.400000},
CameraAngleLimits = {140.000000,-65.000000,90.000000},
EyePoint = {0.090000,0.000000,0.000000},
limits_6DOF = {x = {-0.020000,0.350000},y ={-0.150000,0.165000},z = {-0.170000,0.170000},roll = 90.000000},
},
}, -- Cockpit
Chase = {
LocalPoint = {-0.512000,2.790000,0.000000},
AnglesDefault = {180.000000,-8.000000},
}, -- Chase
Arcade = {
LocalPoint = {-16.812000,5.390000,0.000000},
AnglesDefault = {0.000000,-8.000000},
}, -- Arcade
}
ViewSettings["MiG-29A"] = fulcrum()
ViewSettings["MiG-29G"] = fulcrum()
ViewSettings["MiG-29S"] = fulcrum()
ViewSettings["P-51D"] = {
Cockpit = {
[1] = {-- player slot 1
CockpitLocalPoint = {-1.500000,0.618000,0.000000},
CameraViewAngleLimits = {20.000000,120.000000},
CameraAngleRestriction = {false,90.000000,0.500000},
CameraAngleLimits = {200,-80.000000,90.000000},
EyePoint = {0.025000,0.100000,0.000000},
ShoulderSize = 0.15,
Allow360rotation = false,
limits_6DOF = {x = {-0.050000,0.450000},y ={-0.200000,0.200000},z = {-0.220000,0.220000},roll = 90.000000},
},
}, -- Cockpit
Chase = {
LocalPoint = {0.200000,-0.652000,-0.650000},
AnglesDefault = {0.000000,0.000000},
}, -- Chase
Arcade = {
LocalPoint = {-21.500000,5.618000,0.000000},
AnglesDefault = {0.000000,-8.000000},
}, -- Arcade
}
ViewSettings["Su-25"] = {
Cockpit = {
[1] = default_fighter_player({CockpitLocalPoint = {3.352000,0.506000,0.000000}}),-- player slot 1
}, -- Cockpit
Chase = {
LocalPoint = {-0.348000,2.906000,0.000000},
AnglesDefault = {180.000000,-8.000000},
}, -- Chase
Arcade = {
LocalPoint = {-16.648001,5.506000,0.000000},
AnglesDefault = {0.000000,-8.000000},
}, -- Arcade
}
ViewSettings["Su-25T"] = {
Cockpit = {
[1] = default_fighter_player({CockpitLocalPoint = {3.406000,0.466000,0.000000}}),-- player slot 1
}, -- Cockpit
Chase = {
LocalPoint = {-0.294000,2.866000,0.000000},
AnglesDefault = {180.000000,-8.000000},
}, -- Chase
Arcade = {
LocalPoint = {-16.594000,5.466000,0.000000},
AnglesDefault = {0.000000,-8.000000},
}, -- Arcade
}
ViewSettings["Su-25TM"] = {
Cockpit = {
[1] = {-- player slot 1
CockpitLocalPoint = {4.000000,1.000000,0.000000},
CameraViewAngleLimits = {20.000000,140.000000},
CameraAngleRestriction = {true,90.000000,0.400000},
CameraAngleLimits = {160.000000,-70.000000,90.000000},
EyePoint = {0.000000,0.000000,0.000000},
limits_6DOF = {x = {-0.200000,0.200000},y ={-0.200000,0.200000},z = {-0.200000,0.200000},roll = 60.000000},
},
}, -- Cockpit
Chase = {
LocalPoint = {4.000000,2.000000,0.000000},
AnglesDefault = {180.000000,-8.000000},
}, -- Chase
Arcade = {
LocalPoint = {4.000000,2.000000,0.000000},
AnglesDefault = {180.000000,-8.000000},
}, -- Arcade
}
ViewSettings["Su-27"] = {
Cockpit = {
[1] = default_fighter_player({CockpitLocalPoint = {7.959000,1.419000,0.000000}})-- player slot 1
}, -- Cockpit
Chase = {
LocalPoint = {4.259000,3.819000,0.000000},
AnglesDefault = {180.000000,-8.000000},
}, -- Chase
Arcade = {
LocalPoint = {-12.041000,6.419000,0.000000},
AnglesDefault = {0.000000,-8.000000},
}, -- Arcade
}
ViewSettings["Su-33"] = ViewSettings["Su-27"]

View File

@ -0,0 +1,128 @@
-- View scripts
-- Copyright (C) 2004, Eagle Dynamics.
CockpitMouse = true --false
CockpitMouseSpeedSlow = 1.0
CockpitMouseSpeedNormal = 10.0
CockpitMouseSpeedFast = 20.0
CockpitKeyboardAccelerationSlow = 5.0
CockpitKeyboardAccelerationNormal = 30.0
CockpitKeyboardAccelerationFast = 80.0
CockpitKeyboardZoomAcceleration = 300.0
DisableSnapViewsSaving = false
UseDefaultSnapViews = true
CockpitPanStepHor = 45.0
CockpitPanStepVert = 30.0
CockpitNyMove = true
CockpitHAngleAccelerateTimeMax = 0.15
CockpitVAngleAccelerateTimeMax = 0.15
CockpitZoomAccelerateTimeMax = 0.2
function NaturalHeadMoving(tang, roll, omz)
local r = roll
if r > 90.0 then
r = 180.0 - r
elseif roll < -90.0 then
r = -180.0 - r
end
local hAngle = -0.25 * r
local vAngle = math.min(math.max(0.0, 0.4 * tang + 45.0 * omz), 90.0)
return hAngle, vAngle
end
ExternalMouse = true
ExternalMouseSpeedSlow = 1.0
ExternalMouseSpeedNormal = 5.0
ExternalMouseSpeedFast = 20.0
ExternalViewAngleMin = 3.0
ExternalViewAngleMax = 170.0
ExternalViewAngleDefault = 60.0
ExternalKeyboardZoomAcceleration = 30.0
ExternalKeyboardZoomAccelerateTimeMax = 1.0
ExplosionExpoTime = 4.0
ExternalKeyboardAccelerationSlow = 1.0
ExternalKeyboardAccelerationNormal = 10.0
ExternalKeyboardAccelerationFast = 30.0
ExternalHAngleAccelerateTimeMax = 3.0
ExternalVAngleAccelerateTimeMax = 3.0
ExternalDistAccelerateTimeMax = 3.0
ExternalHAngleLocalAccelerateTimeMax = 3.0
ExternalVAngleLocalAccelerateTimeMax = 3.0
ExternalAngleNormalDiscreteStep = 15.0/ExternalKeyboardAccelerationNormal -- When 'S' is pressed only
ChaseCameraNyMove = true
FreeCameraAngleIncrement = 3.0
FreeCameraDistanceIncrement = 200.0
FreeCameraLeftRightIncrement = 2.0
FreeCameraAltitudeIncrement = 2.0
FreeCameraScalarSpeedAcceleration = 0.1
xMinMap = -300000
xMaxMap = 500000
yMinMap = -400000
yMaxMap = 200000
dxMap = 150000
dyMap = 100000
head_roll_shaking = true
head_roll_shaking_max = 30.0
head_roll_shaking_compensation_gain = 0.3
-- CameraJiggle() and CameraFloat() functions make camera position
-- dependent on FPS so be careful in using the Shift-J command with tracks, please.
-- uncomment to use custom jiggle functions
--[[
function CameraJiggle(t,rnd1,rnd2,rnd3)
local rotX, rotY, rotZ
rotX = 0.05 * rnd1 * math.sin(37.0 * (t - 0.0))
rotY = 0.05 * rnd2 * math.sin(41.0 * (t - 1.0))
rotZ = 0.05 * rnd3 * math.sin(53.0 * (t - 2.0))
return rotX, rotY, rotZ
end
function CameraFloat(t)
local dX, dY, dZ
dX = 0.61 * math.sin(0.7 * t) + 0.047 * math.sin(1.6 * t);
dY = 0.43 * math.sin(0.6 * t) + 0.067 * math.sin(1.7 * t);
dZ = 0.53 * math.sin(1.0 * t) + 0.083 * math.sin(1.9 * t);
return dX, dY, dZ
end
--]]
--Debug keys
DEBUG_TEXT = 1
DEBUG_GEOMETRY = 2
debug_keys = {
[DEBUG_TEXT] = 1,
[DEBUG_GEOMETRY] = 1
}
function onDebugCommand(command)
if command == 10000 then
if debug_keys[DEBUG_TEXT] ~= 0 or debug_keys[DEBUG_GEOMETRY] ~= 0 then
debug_keys[DEBUG_GEOMETRY] = 0
debug_keys[DEBUG_TEXT] = 0
else
debug_keys[DEBUG_GEOMETRY] = 1
debug_keys[DEBUG_TEXT] = 1
end
elseif command == 10001 then
if debug_keys[DEBUG_TEXT] ~= 0 then
debug_keys[DEBUG_TEXT] = 0
else
debug_keys[DEBUG_TEXT] = 1
end
elseif command == 10002 then
if debug_keys[DEBUG_GEOMETRY] ~= 0 then
debug_keys[DEBUG_GEOMETRY] = 0
else
debug_keys[DEBUG_GEOMETRY] = 1
end
end
end
-- gain values for TrackIR , to unify responce on diffrent types of aircraft
TrackIR_gain_x = -0.6
TrackIR_gain_y = 0.3
TrackIR_gain_z = -0.25
TrackIR_gain_roll = -90

View File

@ -0,0 +1,53 @@
mode = ADF_ADF
receiver_mode = ADF_RECEIVER_TLF
homer_selection_method = ADF_HOMER_SELECTION_AUTO
channel = 1
volume = 0.5
local theatre = theatre or "none"
if theatre == 'Caucasus' then
channels = {
[1] = runway_homer_pair(Airdrome[Krasnodar],nil,localizedAirdromeName(terrainAirdromes[Krasnodar])),
[2] = runway_homer_pair(Airdrome[Maykop] ,nil,localizedAirdromeName(terrainAirdromes[Maykop])),
[3] = runway_homer_pair(Airdrome[Krymsk] ,nil,localizedAirdromeName(terrainAirdromes[Krymsk])),
[4] = runway_homer_pair(Airdrome[Anapa] ,nil,localizedAirdromeName(terrainAirdromes[Anapa])),
[5] = runway_homer_pair(Airdrome[Mozdok] ,nil,localizedAirdromeName(terrainAirdromes[Mozdok])),
[6] = runway_homer_pair(Airdrome[Nalchick] ,nil,localizedAirdromeName(terrainAirdromes[Nalchick])),
[7] = runway_homer_pair(Airdrome[MinVody] ,nil,localizedAirdromeName(terrainAirdromes[MinVody])),
[8] = {
[ADF_HOMER_FAR] = NDB(beacons["NDB_KISLOVODSK"]),
[ADF_HOMER_NEAR] = NDB(beacons["NDB_PEREDOVAIA"])
}
}
elseif theatre == 'Nevada' then
local beacons_by_name = {}
for i,o in pairs(beacons) do
if o.name == '' then
beacons_by_name[o.beaconId] = o
else
beacons_by_name[o.name] = o
end
end
local nevada_pair = function (id_1,id_2) return {
[ADF_HOMER_FAR] = NDB(beacons_by_name[id_1]),
[ADF_HOMER_NEAR] = NDB(beacons_by_name[id_2])
}
end
channels = {
nevada_pair('IndianSprings','Groom_Lake'),
nevada_pair('LasVegas','Nellis'),
nevada_pair("Milford","GOFFS"),
nevada_pair("Tonopah","Mina"),
nevada_pair("WilsonCreek","CedarCity"),
nevada_pair("BryceCanyon","MormonMesa"),
nevada_pair("Beatty","Bishop"),
nevada_pair("Coaldale","PeachSprings"),
nevada_pair("BoulderCity","Mercury"),
}
end

View File

@ -0,0 +1,880 @@
SAT_SYS_GLONASS = 0
SAT_SYS_GPS = 1
almanac = {}
--GPS
almanac[0] = {}
almanac[0]["System"] = SAT_SYS_GPS
almanac[0]["Number"] = 1
almanac[0]["Orbital"] = "F"
almanac[0]["Eccentricity"] = 6.294000e-003
almanac[0]["Time_of_Applicability"] = 5.898240e+005
almanac[0]["Orbital_Inclination"] = 9.885676e-001
almanac[0]["Rate_of_Right_Ascen"] = -7.862702e-009
almanac[0]["SQRT_A"] = 5.153700e+003
almanac[0]["Right_Ascen_at_Week"] = 8.096750e-001
almanac[0]["Argument_of_Perigee"] = -1.777773e+000
almanac[0]["Mean_Anom"] = -5.315745e-001
almanac[0]["week"] = 1390
almanac[1] = {}
almanac[1]["System"] = SAT_SYS_GPS
almanac[1]["Number"] = 2
almanac[1]["Orbital"] = "C"
almanac[1]["Eccentricity"] = 8.794000e-003
almanac[1]["Time_of_Applicability"] = 5.898240e+005
almanac[1]["Orbital_Inclination"] = 9.487811e-001
almanac[1]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[1]["SQRT_A"] = 5.153700e+003
almanac[1]["Right_Ascen_at_Week"] = -1.329172e+000
almanac[1]["Argument_of_Perigee"] = 2.138637e+000
almanac[1]["Mean_Anom"] = 7.311702e-001
almanac[1]["week"] = 1390
almanac[2] = {}
almanac[2]["System"] = SAT_SYS_GPS
almanac[2]["Number"] = 3
almanac[2]["Orbital"] = "F"
almanac[2]["Eccentricity"] = 8.424000e-003
almanac[2]["Time_of_Applicability"] = 5.898240e+005
almanac[2]["Orbital_Inclination"] = 9.262804e-001
almanac[2]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[2]["SQRT_A"] = 5.153600e+003
almanac[2]["Right_Ascen_at_Week"] = -2.341514e+000
almanac[2]["Argument_of_Perigee"] = 6.749357e-001
almanac[2]["Mean_Anom"] = -2.296153e-001
almanac[2]["week"] = 1389
almanac[3] = {}
almanac[3]["System"] = SAT_SYS_GPS
almanac[3]["Number"] = 4
almanac[3]["Orbital"] = "D"
almanac[3]["Eccentricity"] = 7.413000e-003
almanac[3]["Time_of_Applicability"] = 5.898240e+005
almanac[3]["Orbital_Inclination"] = 9.482889e-001
almanac[3]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[3]["SQRT_A"] = 5.153600e+003
almanac[3]["Right_Ascen_at_Week"] = -1.309589e+000
almanac[3]["Argument_of_Perigee"] = 1.623504e-001
almanac[3]["Mean_Anom"] = -3.022943e+000
almanac[3]["week"] = 1390
almanac[4] = {}
almanac[4]["System"] = SAT_SYS_GPS
almanac[4]["Number"] = 5
almanac[4]["Orbital"] = "B"
almanac[4]["Eccentricity"] = 7.432000e-003
almanac[4]["Time_of_Applicability"] = 5.898240e+005
almanac[4]["Orbital_Inclination"] = 9.387437e-001
almanac[4]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[4]["SQRT_A"] = 5.153700e+003
almanac[4]["Right_Ascen_at_Week"] = 2.779487e+000
almanac[4]["Argument_of_Perigee"] = 1.099033e+000
almanac[4]["Mean_Anom"] = 2.970984e+000
almanac[4]["week"] = 1390
almanac[5] = {}
almanac[5]["System"] = SAT_SYS_GPS
almanac[5]["Number"] = 6
almanac[5]["Orbital"] = "C"
almanac[5]["Eccentricity"] = 6.020000e-003
almanac[5]["Time_of_Applicability"] = 5.898240e+005
almanac[5]["Orbital_Inclination"] = 9.337591e-001
almanac[5]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[5]["SQRT_A"] = 5.153600e+003
almanac[5]["Right_Ascen_at_Week"] = -2.407627e+000
almanac[5]["Argument_of_Perigee"] = -1.788263e+000
almanac[5]["Mean_Anom"] = -2.149877e+000
almanac[5]["week"] = 1390
almanac[6] = {}
almanac[6]["System"] = SAT_SYS_GPS
almanac[6]["Number"] = 7
almanac[6]["Orbital"] = "C"
almanac[6]["Eccentricity"] = 1.052400e-002
almanac[6]["Time_of_Applicability"] = 5.898240e+005
almanac[6]["Orbital_Inclination"] = 9.353229e-001
almanac[6]["Rate_of_Right_Ascen"] = -8.080868e-009
almanac[6]["SQRT_A"] = 5.153700e+003
almanac[6]["Right_Ascen_at_Week"] = -2.433580e+000
almanac[6]["Argument_of_Perigee"] = -1.767301e+000
almanac[6]["Mean_Anom"] = -3.141503e+000
almanac[6]["week"] = 1390
almanac[7] = {}
almanac[7]["System"] = SAT_SYS_GPS
almanac[7]["Number"] = 8
almanac[7]["Orbital"] = "A"
almanac[7]["Eccentricity"] = 9.822000e-003
almanac[7]["Time_of_Applicability"] = 5.898240e+005
almanac[7]["Orbital_Inclination"] = 9.741390e-001
almanac[7]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[7]["SQRT_A"] = 5.153600e+003
almanac[7]["Right_Ascen_at_Week"] = 1.857849e+000
almanac[7]["Argument_of_Perigee"] = 2.674034e+000
almanac[7]["Mean_Anom"] = -2.009745e+000
almanac[7]["week"] = 1390
almanac[8] = {}
almanac[8]["System"] = SAT_SYS_GPS
almanac[8]["Number"] = 9
almanac[8]["Orbital"] = "A"
almanac[8]["Eccentricity"] = 1.839300e-002
almanac[8]["Time_of_Applicability"] = 5.898240e+005
almanac[8]["Orbital_Inclination"] = 9.617541e-001
almanac[8]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[8]["SQRT_A"] = 5.153600e+003
almanac[8]["Right_Ascen_at_Week"] = 1.777005e+000
almanac[8]["Argument_of_Perigee"] = 1.274962e+000
almanac[8]["Mean_Anom"] = -2.349578e+000
almanac[8]["week"] = 1390
almanac[9] = {}
almanac[9]["System"] = SAT_SYS_GPS
almanac[9]["Number"] = 10
almanac[9]["Orbital"] = "E"
almanac[9]["Eccentricity"] = 7.061000e-003
almanac[9]["Time_of_Applicability"] = 5.898240e+005
almanac[9]["Orbital_Inclination"] = 9.728876e-001
almanac[9]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[9]["SQRT_A"] = 5.153600e+003
almanac[9]["Right_Ascen_at_Week"] = -2.563014e-001
almanac[9]["Argument_of_Perigee"] = 4.377980e-001
almanac[9]["Mean_Anom"] = 1.210716e+000
almanac[9]["week"] = 1390
almanac[10] = {}
almanac[10]["System"] = SAT_SYS_GPS
almanac[10]["Number"] = 11
almanac[10]["Orbital"] = "D"
almanac[10]["Eccentricity"] = 5.744000e-003
almanac[10]["Time_of_Applicability"] = 5.898240e+005
almanac[10]["Orbital_Inclination"] = 8.959309e-001
almanac[10]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[10]["SQRT_A"] = 5.153600e+003
almanac[10]["Right_Ascen_at_Week"] = -1.478816e+000
almanac[10]["Argument_of_Perigee"] = 3.750011e-001
almanac[10]["Mean_Anom"] = -1.522048e+000
almanac[10]["week"] = 1390
almanac[11] = {}
almanac[11]["System"] = SAT_SYS_GPS
almanac[11]["Number"] = 13
almanac[11]["Orbital"] = "F"
almanac[11]["Eccentricity"] = 3.088000e-003
almanac[11]["Time_of_Applicability"] = 5.898240e+005
almanac[11]["Orbital_Inclination"] = 9.927564e-001
almanac[11]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[11]["SQRT_A"] = 5.153700e+003
almanac[11]["Right_Ascen_at_Week"] = 7.956600e-001
almanac[11]["Argument_of_Perigee"] = 1.279395e+000
almanac[11]["Mean_Anom"] = 1.004349e+000
almanac[11]["week"] = 1390
almanac[12] = {}
almanac[12]["System"] = SAT_SYS_GPS
almanac[12]["Number"] = 14
almanac[12]["Orbital"] = "F"
almanac[12]["Eccentricity"] = 2.591000e-003
almanac[12]["Time_of_Applicability"] = 5.898240e+005
almanac[12]["Orbital_Inclination"] = 9.868729e-001
almanac[12]["Rate_of_Right_Ascen"] = -7.885391e-009
almanac[12]["SQRT_A"] = 5.153600e+003
almanac[12]["Right_Ascen_at_Week"] = 7.819592e-001
almanac[12]["Argument_of_Perigee"] = -2.158621e+000
almanac[12]["Mean_Anom"] = 5.412611e-001
almanac[12]["week"] = 1390
almanac[13] = {}
almanac[13]["System"] = SAT_SYS_GPS
almanac[13]["Number"] = 15
almanac[13]["Orbital"] = "D"
almanac[13]["Eccentricity"] = 9.828000e-003
almanac[13]["Time_of_Applicability"] = 3.194880e+005
almanac[13]["Orbital_Inclination"] = 9.554204e-001
almanac[13]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[13]["SQRT_A"] = 5.153600e+003
almanac[13]["Right_Ascen_at_Week"] = -1.123869e+000
almanac[13]["Argument_of_Perigee"] = 2.690266e+000
almanac[13]["Mean_Anom"] = 2.220476e+000
almanac[13]["week"] = 1389
almanac[14] = {}
almanac[14]["System"] = SAT_SYS_GPS
almanac[14]["Number"] = 16
almanac[14]["Orbital"] = "B"
almanac[14]["Eccentricity"] = 3.494000e-003
almanac[14]["Time_of_Applicability"] = 5.898240e+005
almanac[14]["Orbital_Inclination"] = 9.629340e-001
almanac[14]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[14]["SQRT_A"] = 5.153700e+003
almanac[14]["Right_Ascen_at_Week"] = 2.873124e+000
almanac[14]["Argument_of_Perigee"] = -7.819243e-001
almanac[14]["Mean_Anom"] = 2.623629e+000
almanac[14]["week"] = 1390
almanac[15] = {}
almanac[15]["System"] = SAT_SYS_GPS
almanac[15]["Number"] = 17
almanac[15]["Orbital"] = "C"
almanac[15]["Eccentricity"] = 2.141000e-003
almanac[15]["Time_of_Applicability"] = 5.898240e+005
almanac[15]["Orbital_Inclination"] = 9.601170e-001
almanac[15]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[15]["SQRT_A"] = 5.153700e+003
almanac[15]["Right_Ascen_at_Week"] = -2.371499e+000
almanac[15]["Argument_of_Perigee"] = 3.087694e+000
almanac[15]["Mean_Anom"] = 1.611217e+000
almanac[15]["week"] = 1390
almanac[16] = {}
almanac[16]["System"] = SAT_SYS_GPS
almanac[16]["Number"] = 18
almanac[16]["Orbital"] = "E"
almanac[16]["Eccentricity"] = 7.636000e-003
almanac[16]["Time_of_Applicability"] = 5.898240e+005
almanac[16]["Orbital_Inclination"] = 9.569597e-001
almanac[16]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[16]["SQRT_A"] = 5.153700e+003
almanac[16]["Right_Ascen_at_Week"] = -2.359858e-001
almanac[16]["Argument_of_Perigee"] = -2.649216e+000
almanac[16]["Mean_Anom"] = 2.675029e+000
almanac[16]["week"] = 1390
almanac[17] = {}
almanac[17]["System"] = SAT_SYS_GPS
almanac[17]["Number"] = 19
almanac[17]["Orbital"] = "C"
almanac[17]["Eccentricity"] = 3.602000e-003
almanac[17]["Time_of_Applicability"] = 5.898240e+005
almanac[17]["Orbital_Inclination"] = 9.580209e-001
almanac[17]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[17]["SQRT_A"] = 5.153600e+003
almanac[17]["Right_Ascen_at_Week"] = -2.312385e+000
almanac[17]["Argument_of_Perigee"] = -1.161079e+000
almanac[17]["Mean_Anom"] = 1.310619e+000
almanac[17]["week"] = 1390
almanac[18] = {}
almanac[18]["System"] = SAT_SYS_GPS
almanac[18]["Number"] = 20
almanac[18]["Orbital"] = "E"
almanac[18]["Eccentricity"] = 2.796000e-003
almanac[18]["Time_of_Applicability"] = 5.898240e+005
almanac[18]["Orbital_Inclination"] = 9.564693e-001
almanac[18]["Rate_of_Right_Ascen"] = -7.908080e-009
almanac[18]["SQRT_A"] = 5.153600e+003
almanac[18]["Right_Ascen_at_Week"] = -2.889565e-001
almanac[18]["Argument_of_Perigee"] = 1.379612e+000
almanac[18]["Mean_Anom"] = 2.461750e+000
almanac[18]["week"] = 1390
almanac[19] = {}
almanac[19]["System"] = SAT_SYS_GPS
almanac[19]["Number"] = 21
almanac[19]["Orbital"] = "D"
almanac[19]["Eccentricity"] = 1.162900e-002
almanac[19]["Time_of_Applicability"] = 5.898240e+005
almanac[19]["Orbital_Inclination"] = 9.418592e-001
almanac[19]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[19]["SQRT_A"] = 5.153600e+003
almanac[19]["Right_Ascen_at_Week"] = -1.289972e+000
almanac[19]["Argument_of_Perigee"] = -2.923686e+000
almanac[19]["Mean_Anom"] = -2.349194e+000
almanac[19]["week"] = 1390
almanac[20] = {}
almanac[20]["System"] = SAT_SYS_GPS
almanac[20]["Number"] = 22
almanac[20]["Orbital"] = "E"
almanac[20]["Eccentricity"] = 4.893000e-003
almanac[20]["Time_of_Applicability"] = 5.898240e+005
almanac[20]["Orbital_Inclination"] = 9.545093e-001
almanac[20]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[20]["SQRT_A"] = 5.153600e+003
almanac[20]["Right_Ascen_at_Week"] = -2.280969e-001
almanac[20]["Argument_of_Perigee"] = -1.674502e+000
almanac[20]["Mean_Anom"] = 1.106852e+000
almanac[20]["week"] = 1390
almanac[21] = {}
almanac[21]["System"] = SAT_SYS_GPS
almanac[21]["Number"] = 23
almanac[21]["Orbital"] = "F"
almanac[21]["Eccentricity"] = 4.822000e-003
almanac[21]["Time_of_Applicability"] = 5.898240e+005
almanac[21]["Orbital_Inclination"] = 9.691247e-001
almanac[21]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[21]["SQRT_A"] = 5.153700e+003
almanac[21]["Right_Ascen_at_Week"] = 7.667399e-001
almanac[21]["Argument_of_Perigee"] = 2.497634e+000
almanac[21]["Mean_Anom"] = 3.184700e-001
almanac[21]["week"] = 1390
almanac[22] = {}
almanac[22]["System"] = SAT_SYS_GPS
almanac[22]["Number"] = 24
almanac[22]["Orbital"] = "D"
almanac[22]["Eccentricity"] = 9.277000e-003
almanac[22]["Time_of_Applicability"] = 5.898240e+005
almanac[22]["Orbital_Inclination"] = 9.585183e-001
almanac[22]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[22]["SQRT_A"] = 5.153900e+003
almanac[22]["Right_Ascen_at_Week"] = -1.274840e+000
almanac[22]["Argument_of_Perigee"] = -8.815651e-001
almanac[22]["Mean_Anom"] = -1.695551e+000
almanac[22]["week"] = 1390
almanac[23] = {}
almanac[23]["System"] = SAT_SYS_GPS
almanac[23]["Number"] = 25
almanac[23]["Orbital"] = "A"
almanac[23]["Eccentricity"] = 1.257400e-002
almanac[23]["Time_of_Applicability"] = 5.898240e+005
almanac[23]["Orbital_Inclination"] = 9.551027e-001
almanac[23]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[23]["SQRT_A"] = 5.153600e+003
almanac[23]["Right_Ascen_at_Week"] = 1.721853e+000
almanac[23]["Argument_of_Perigee"] = -1.329870e+000
almanac[23]["Mean_Anom"] = -1.769623e+000
almanac[23]["week"] = 1390
almanac[24] = {}
almanac[24]["System"] = SAT_SYS_GPS
almanac[24]["Number"] = 26
almanac[24]["Orbital"] = "F"
almanac[24]["Eccentricity"] = 1.745700e-002
almanac[24]["Time_of_Applicability"] = 5.898240e+005
almanac[24]["Orbital_Inclination"] = 9.908749e-001
almanac[24]["Rate_of_Right_Ascen"] = -7.840012e-009
almanac[24]["SQRT_A"] = 5.153700e+003
almanac[24]["Right_Ascen_at_Week"] = 7.961836e-001
almanac[24]["Argument_of_Perigee"] = 8.161502e-001
almanac[24]["Mean_Anom"] = -5.841961e-001
almanac[24]["week"] = 1390
almanac[25] = {}
almanac[25]["System"] = SAT_SYS_GPS
almanac[25]["Number"] = 27
almanac[25]["Orbital"] = "A"
almanac[25]["Eccentricity"] = 1.991000e-002
almanac[25]["Time_of_Applicability"] = 5.898240e+005
almanac[25]["Orbital_Inclination"] = 9.596563e-001
almanac[25]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[25]["SQRT_A"] = 5.153600e+003
almanac[25]["Right_Ascen_at_Week"] = 1.754124e+000
almanac[25]["Argument_of_Perigee"] = -1.900854e+000
almanac[25]["Mean_Anom"] = 3.046487e+000
almanac[25]["week"] = 1390
almanac[26] = {}
almanac[26]["System"] = SAT_SYS_GPS
almanac[26]["Number"] = 28
almanac[26]["Orbital"] = "B"
almanac[26]["Eccentricity"] = 1.162800e-002
almanac[26]["Time_of_Applicability"] = 5.898240e+005
almanac[26]["Orbital_Inclination"] = 9.610106e-001
almanac[26]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[26]["SQRT_A"] = 5.153600e+003
almanac[26]["Right_Ascen_at_Week"] = 2.882583e+000
almanac[26]["Argument_of_Perigee"] = -2.242868e+000
almanac[26]["Mean_Anom"] = 1.860642e+000
almanac[26]["week"] = 1390
almanac[27] = {}
almanac[27]["System"] = SAT_SYS_GPS
almanac[27]["Number"] = 29
almanac[27]["Orbital"] = "F"
almanac[27]["Eccentricity"] = 9.462000e-003
almanac[27]["Time_of_Applicability"] = 1.474560e+005
almanac[27]["Orbital_Inclination"] = 9.874838e-001
almanac[27]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[27]["SQRT_A"] = 5.153700e+003
almanac[27]["Right_Ascen_at_Week"] = 7.647503e-001
almanac[27]["Argument_of_Perigee"] = -8.614589e-001
almanac[27]["Mean_Anom"] = -4.488983e-001
almanac[27]["week"] = 1390
almanac[28] = {}
almanac[28]["System"] = SAT_SYS_GPS
almanac[28]["Number"] = 30
almanac[28]["Orbital"] = "B"
almanac[28]["Eccentricity"] = 9.296000e-003
almanac[28]["Time_of_Applicability"] = 5.898240e+005
almanac[28]["Orbital_Inclination"] = 9.452992e-001
almanac[28]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[28]["SQRT_A"] = 5.153600e+003
almanac[28]["Right_Ascen_at_Week"] = 2.826698e+000
almanac[28]["Argument_of_Perigee"] = 1.306413e+000
almanac[28]["Mean_Anom"] = 2.148725e+000
almanac[28]["week"] = 1390
--GLONASS
--1 îðáèòàëüíàÿ ïëîñêîñòü, íîìåðà 1-8
almanac[29] = {}
almanac[29]["System"] = SAT_SYS_GLONASS
almanac[29]["Number"] = 1
almanac[29]["Orbital"] = 1
almanac[29]["GLONASS_Data"] = {}
almanac[29]["GLONASS_Data"]["NKU_Number"] = 796
almanac[29]["GLONASS_Data"]["Cosmos_Number"] = 2411
almanac[29]["Eccentricity"] = 1.184000e-003
almanac[29]["Time_of_Applicability"] = 0.000000e+000
almanac[29]["Orbital_Inclination"] = 1.126443e+000
almanac[29]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[29]["SQRT_A"] = 5.050500e+003
almanac[29]["Right_Ascen_at_Week"] = 5.979807e+000
almanac[29]["Argument_of_Perigee"] = 2.622634e+000
almanac[29]["Mean_Anom"] = -5.519651e+000
almanac[29]["week"] = 1390
almanac[29]["Commit_date"] = "06.02.2005"
almanac[29]["Life_dates"] = {}
almanac[30] = {}
almanac[30]["System"] = SAT_SYS_GLONASS
almanac[30]["Number"] = 2
almanac[30]["Orbital"] = 1
almanac[30]["GLONASS_Data"] = {}
almanac[30]["GLONASS_Data"]["NKU_Number"] = 794
almanac[30]["GLONASS_Data"]["Cosmos_Number"] = 2401
almanac[30]["Eccentricity"] = 4.486000e-003
almanac[30]["Time_of_Applicability"] = 0.000000e+000
almanac[30]["Orbital_Inclination"] = 1.128459e+000
almanac[30]["Rate_of_Right_Ascen"] = -6.759654e-009
almanac[30]["SQRT_A"] = 5.050500e+003
almanac[30]["Right_Ascen_at_Week"] = 5.997871e+000
almanac[30]["Argument_of_Perigee"] = 1.709531e+000
almanac[30]["Mean_Anom"] = -5.367633e+000
almanac[30]["week"] = 1390
almanac[30]["Commit_date"] = "02.02.2004"
almanac[30]["Life_dates"] = {}
almanac[31] = {}
almanac[31]["System"] = SAT_SYS_GLONASS
almanac[31]["Number"] = 3
almanac[31]["Orbital"] = 1
almanac[31]["GLONASS_Data"] = {}
almanac[31]["GLONASS_Data"]["NKU_Number"] = 789
almanac[31]["GLONASS_Data"]["Cosmos_Number"] = 2381
almanac[31]["Eccentricity"] = 2.459000e-003
almanac[31]["Time_of_Applicability"] = 0.000000e+000
almanac[31]["Orbital_Inclination"] = 1.122958e+000
almanac[31]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[31]["SQRT_A"] = 5.050500e+003
almanac[31]["Right_Ascen_at_Week"] = 5.960713e+000
almanac[31]["Argument_of_Perigee"] = -2.683407e+000
almanac[31]["Mean_Anom"] = -1.791788e+000
almanac[31]["week"] = 1390
almanac[31]["Commit_date"] = "04.01.2002"
almanac[31]["Life_dates"] = {}
almanac[32] = {}
almanac[32]["System"] = SAT_SYS_GLONASS
almanac[32]["Number"] = 4
almanac[32]["Orbital"] = 1
almanac[32]["GLONASS_Data"] = {}
almanac[32]["GLONASS_Data"]["NKU_Number"] = 795
almanac[29]["GLONASS_Data"]["Cosmos_Number"] = 2403
almanac[32]["Eccentricity"] = 4.054000e-003
almanac[32]["Time_of_Applicability"] = 0.000000e+000
almanac[32]["Orbital_Inclination"] = 1.128543e+000
almanac[32]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[32]["SQRT_A"] = 5.050500e+003
almanac[32]["Right_Ascen_at_Week"] = 5.998081e+000
almanac[32]["Argument_of_Perigee"] = 1.497160e+000
almanac[32]["Mean_Anom"] = -4.293681e-001
almanac[32]["week"] = 1390
almanac[32]["Commit_date"] = "29.01.2004"
almanac[32]["Life_dates"] = {}
almanac[33] = {}
almanac[33]["System"] = SAT_SYS_GLONASS
almanac[33]["Number"] = 5
almanac[33]["Orbital"] = 1
almanac[33]["GLONASS_Data"] = {}
almanac[33]["GLONASS_Data"]["NKU_Number"] = 711
almanac[33]["GLONASS_Data"]["Cosmos_Number"] = 2382
almanac[33]["Eccentricity"] = 7.040000e-004
almanac[33]["Time_of_Applicability"] = 0.000000e+000
almanac[33]["Orbital_Inclination"] = 1.122886e+000
almanac[33]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[33]["SQRT_A"] = 5.050600e+003
almanac[33]["Right_Ascen_at_Week"] = 5.960713e+000
almanac[33]["Argument_of_Perigee"] = 2.740933e+000
almanac[33]["Mean_Anom"] = -2.523604e+000
almanac[33]["week"] = 1390
almanac[33]["Commit_date"] = "13.02.2003"
almanac[33]["Life_dates"] = {}
almanac[34] = {}
almanac[34]["System"] = SAT_SYS_GLONASS
almanac[34]["Number"] = 6
almanac[34]["Orbital"] = 1
almanac[34]["GLONASS_Data"] = {}
almanac[34]["GLONASS_Data"]["NKU_Number"] = 701
almanac[34]["GLONASS_Data"]["Cosmos_Number"] = 2404
almanac[34]["Eccentricity"] = 4.766000e-003
almanac[34]["Time_of_Applicability"] = 0.000000e+000
almanac[34]["Orbital_Inclination"] = 1.128276e+000
almanac[34]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[34]["SQRT_A"] = 5.050500e+003
almanac[34]["Right_Ascen_at_Week"] = 5.997906e+000
almanac[34]["Argument_of_Perigee"] = 1.802417e+000
almanac[34]["Mean_Anom"] = -2.426512e+000
almanac[34]["week"] = 1390
almanac[34]["Commit_date"] = "08.12.2004"
almanac[34]["Life_dates"] = {}
almanac[35] = {}
almanac[35]["System"] = SAT_SYS_GLONASS
almanac[35]["Number"] = 7
almanac[35]["Orbital"] = 1
almanac[35]["GLONASS_Data"] = {}
almanac[35]["GLONASS_Data"]["NKU_Number"] = 712
almanac[35]["GLONASS_Data"]["Cosmos_Number"] = 2413
almanac[35]["Eccentricity"] = 7.570000e-004
almanac[35]["Time_of_Applicability"] = 0.000000e+000
almanac[35]["Orbital_Inclination"] = 1.126344e+000
almanac[35]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[35]["SQRT_A"] = 5.050500e+003
almanac[35]["Right_Ascen_at_Week"] = 5.979388e+000
almanac[35]["Argument_of_Perigee"] = 2.566068e+000
almanac[35]["Mean_Anom"] = -3.921228e+000
almanac[35]["week"] = 1390
almanac[35]["Commit_date"] = "07.10.2005"
almanac[35]["Life_dates"] = {}
almanac[36] = {}
almanac[36]["System"] = SAT_SYS_GLONASS
almanac[36]["GLONASS_Data"] = {}
almanac[36]["Number"] = 8
almanac[36]["Orbital"] = 1
almanac[36]["GLONASS_Data"] = {}
almanac[36]["GLONASS_Data"]["NKU_Number"] = 797
almanac[36]["GLONASS_Data"]["Cosmos_Number"] = 2412
almanac[36]["Eccentricity"] = 4.060000e-004
almanac[36]["Time_of_Applicability"] = 0.000000e+000
almanac[36]["Orbital_Inclination"] = 1.126564e+000
almanac[36]["Rate_of_Right_Ascen"] = -6.785834e-009
almanac[36]["SQRT_A"] = 5.050600e+003
almanac[36]["Right_Ascen_at_Week"] = 5.980069e+000
almanac[36]["Argument_of_Perigee"] = 2.673633e+000
almanac[36]["Mean_Anom"] = -4.812026e+000
almanac[36]["week"] = 1390
almanac[36]["Commit_date"] = "06.02.2005"
almanac[36]["Life_dates"] = {}
--3 îðáèòàëüíàÿ ïëîñêîñòü, íîìåðà 17-24
almanac[37] = {}
almanac[37]["System"] = SAT_SYS_GLONASS
almanac[37]["Number"] = 17
almanac[37]["Orbital"] = 3
almanac[37]["GLONASS_Data"] = {}
almanac[37]["GLONASS_Data"]["NKU_Number"] = 787
almanac[37]["GLONASS_Data"]["Cosmos_Number"] = 2375
almanac[37]["Eccentricity"] = 5.670000e-004
almanac[37]["Time_of_Applicability"] = 0.000000e+000
almanac[37]["Orbital_Inclination"] = 1.126524e+000
almanac[37]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[37]["SQRT_A"] = 5.050500e+003
almanac[37]["Right_Ascen_at_Week"] = 3.895554e+000
almanac[37]["Argument_of_Perigee"] = 6.085085e-001
almanac[37]["Mean_Anom"] = -2.977407e+000
almanac[37]["week"] = 1390
almanac[37]["Commit_date"] = "04.11.2000"
almanac[37]["Life_dates"] = {}
almanac[38] = {}
almanac[38]["System"] = SAT_SYS_GLONASS
almanac[38]["Number"] = 18
almanac[38]["Orbital"] = 3
almanac[38]["GLONASS_Data"] = {}
almanac[38]["GLONASS_Data"]["NKU_Number"] = 783
almanac[38]["GLONASS_Data"]["Cosmos_Number"] = 2374
almanac[38]["Eccentricity"] = 4.520000e-003
almanac[38]["Time_of_Applicability"] = 0.000000e+000
almanac[38]["Orbital_Inclination"] = 1.126239e+000
almanac[38]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[38]["SQRT_A"] = 5.050600e+003
almanac[38]["Right_Ascen_at_Week"] = 3.894071e+000
almanac[38]["Argument_of_Perigee"] = -2.509589e+000
almanac[38]["Mean_Anom"] = -1.020057e+000
almanac[38]["week"] = 1390
almanac[38]["Commit_date"] = "05.01.2001"
almanac[38]["Life_dates"] = {}
almanac[39] = {}
almanac[39]["System"] = SAT_SYS_GLONASS
almanac[39]["Number"] = 19
almanac[39]["Orbital"] = 3
almanac[39]["GLONASS_Data"] = {}
almanac[39]["GLONASS_Data"]["NKU_Number"] = 798
almanac[39]["GLONASS_Data"]["Cosmos_Number"] = 2417
almanac[39]["Eccentricity"] = 2.023000e-003
almanac[39]["Time_of_Applicability"] = 0.000000e+000
almanac[39]["Orbital_Inclination"] = 1.132205e+000
almanac[39]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[39]["SQRT_A"] = 5.050500e+003
almanac[39]["Right_Ascen_at_Week"] = 3.884018e+000
almanac[39]["Argument_of_Perigee"] = 2.718313e+000
almanac[39]["Mean_Anom"] = -3.933620e-001
almanac[39]["week"] = 1390
almanac[39]["Commit_date"] = "22.01.2006"
almanac[39]["Life_dates"] = {}
almanac[40] = {}
almanac[40]["System"] = SAT_SYS_GLONASS
almanac[40]["Number"] = 20
almanac[40]["Orbital"] = 3
almanac[40]["GLONASS_Data"] = {}
almanac[40]["GLONASS_Data"]["NKU_Number"] = 793
almanac[40]["GLONASS_Data"]["Cosmos_Number"] = 2396
almanac[40]["Eccentricity"] = 1.822000e-003
almanac[40]["Time_of_Applicability"] = 0.000000e+000
almanac[40]["Orbital_Inclination"] = 1.129789e+000
almanac[40]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[40]["SQRT_A"] = 5.050500e+003
almanac[40]["Right_Ascen_at_Week"] = 3.896863e+000
almanac[40]["Argument_of_Perigee"] = 2.723776e+000
almanac[40]["Mean_Anom"] = -1.193647e+000
almanac[40]["week"] = 1390
almanac[40]["Commit_date"] = "31.01.2003"
almanac[40]["Life_dates"] = {}
almanac[41] = {}
almanac[41]["System"] = SAT_SYS_GLONASS
almanac[41]["Number"] = 21
almanac[41]["Orbital"] = 3
almanac[41]["GLONASS_Data"] = {}
almanac[41]["GLONASS_Data"]["NKU_Number"] = 792
almanac[41]["GLONASS_Data"]["Cosmos_Number"] = 2395
almanac[41]["Eccentricity"] = 5.290000e-004
almanac[41]["Time_of_Applicability"] = 0.000000e+000
almanac[41]["Orbital_Inclination"] = 1.129957e+000
almanac[41]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[41]["SQRT_A"] = 5.050500e+003
almanac[41]["Right_Ascen_at_Week"] = 3.897806e+000
almanac[41]["Argument_of_Perigee"] = -9.519367e-001
almanac[41]["Mean_Anom"] = -4.578920e+000
almanac[41]["week"] = 1390
almanac[41]["Commit_date"] = "31.01.2003"
almanac[41]["Life_dates"] = {}
almanac[42] = {}
almanac[42]["System"] = SAT_SYS_GLONASS
almanac[42]["Number"] = 22
almanac[42]["Orbital"] = 3
almanac[42]["GLONASS_Data"] = {}
almanac[42]["GLONASS_Data"]["NKU_Number"] = 791
almanac[42]["GLONASS_Data"]["Cosmos_Number"] = 2394
almanac[42]["Eccentricity"] = 9.200000e-005
almanac[42]["Time_of_Applicability"] = 0.000000e+000
almanac[42]["Orbital_Inclination"] = 1.129742e+000
almanac[42]["Rate_of_Right_Ascen"] = -6.740456e-009
almanac[42]["SQRT_A"] = 5.050500e+003
almanac[42]["Right_Ascen_at_Week"] = 3.897404e+000
almanac[42]["Argument_of_Perigee"] = 2.518211e+000
almanac[42]["Mean_Anom"] = -2.530167e+000
almanac[42]["week"] = 1390
almanac[42]["Commit_date"] = "21.01.2003"
almanac[42]["Life_dates"] = {}
almanac[43] = {}
almanac[43]["System"] = SAT_SYS_GLONASS
almanac[43]["Number"] = 23
almanac[43]["Orbital"] = 3
almanac[43]["GLONASS_Data"] = {}
almanac[43]["GLONASS_Data"]["NKU_Number"] = 714
almanac[43]["GLONASS_Data"]["Cosmos_Number"] = 2419
almanac[43]["Eccentricity"] = 8.730000e-004
almanac[43]["Time_of_Applicability"] = 0.000000e+000
almanac[43]["Orbital_Inclination"] = 1.132105e+000
almanac[43]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[43]["SQRT_A"] = 5.050500e+003
almanac[43]["Right_Ascen_at_Week"] = 3.883808e+000
almanac[43]["Argument_of_Perigee"] = -3.039139e-001
almanac[43]["Mean_Anom"] = -5.228304e-001
almanac[43]["week"] = 1390
almanac[43]["Commit_date"] = "31.08.2006"
almanac[43]["Life_dates"] = {}
almanac[44] = {}
almanac[44]["System"] = SAT_SYS_GLONASS
almanac[44]["Number"] = 24
almanac[44]["Orbital"] = 3
almanac[44]["GLONASS_Data"] = {}
almanac[44]["GLONASS_Data"]["NKU_Number"] = 713
almanac[44]["GLONASS_Data"]["Cosmos_Number"] = 2418
almanac[44]["Eccentricity"] = 2.044000e-003
almanac[44]["Time_of_Applicability"] = 0.000000e+000
almanac[44]["Orbital_Inclination"] = 1.132430e+000
almanac[44]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[44]["SQRT_A"] = 5.050500e+003
almanac[44]["Right_Ascen_at_Week"] = 3.883983e+000
almanac[44]["Argument_of_Perigee"] = -3.722784e-001
almanac[44]["Mean_Anom"] = -1.240457e+000
almanac[44]["week"] = 1390
almanac[44]["Commit_date"] = "31.08.2006"
almanac[44]["Life_dates"] = {}
--2 îðáèòàëüíàÿ ïëîñêîñòü, íîìåðà 9-16
almanac[45] = {}
almanac[45]["System"] = SAT_SYS_GLONASS
almanac[45]["Number"] = 9
almanac[45]["Orbital"] = 2
almanac[45]["GLONASS_Data"] = {}
almanac[45]["GLONASS_Data"]["NKU_Number"] = "N/A"
almanac[45]["GLONASS_Data"]["Cosmos_Number"] = "N/A"
almanac[45]["Eccentricity"] = 1.184000e-003
almanac[45]["Time_of_Applicability"] = 0.000000e+000
almanac[45]["Orbital_Inclination"] = 1.126443e+000
almanac[45]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[45]["SQRT_A"] = 5.050500e+003
almanac[45]["Right_Ascen_at_Week"] = 1.79067e+000
almanac[45]["Argument_of_Perigee"] = 2.88430067
almanac[45]["Mean_Anom"] = -5.519651e+000
almanac[45]["week"] = 1390
almanac[45]["Commit_date"] = "N/A"
almanac[45]["Life_dates"] = {}
almanac[46] = {}
almanac[46]["System"] = SAT_SYS_GLONASS
almanac[46]["Number"] = 10
almanac[46]["Orbital"] = 2
almanac[46]["GLONASS_Data"] = {}
almanac[46]["GLONASS_Data"]["NKU_Number"] = "N/A"
almanac[46]["GLONASS_Data"]["Cosmos_Number"] = "N/A"
almanac[46]["Eccentricity"] = 1.184000e-003
almanac[46]["Time_of_Applicability"] = 0.000000e+000
almanac[46]["Orbital_Inclination"] = 1.126443e+000
almanac[46]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[46]["SQRT_A"] = 5.050500e+003
almanac[46]["Right_Ascen_at_Week"] = 1.79067e+000
almanac[46]["Argument_of_Perigee"] = 3.66930067
almanac[46]["Mean_Anom"] = -5.519651e+000
almanac[46]["week"] = 1390
almanac[46]["Commit_date"] = "N/A"
almanac[46]["Life_dates"] = {}
almanac[47] = {}
almanac[47]["System"] = SAT_SYS_GLONASS
almanac[47]["Number"] = 11
almanac[47]["Orbital"] = 2
almanac[47]["GLONASS_Data"] = {}
almanac[47]["GLONASS_Data"]["NKU_Number"] = "N/A"
almanac[47]["GLONASS_Data"]["Cosmos_Number"] = "N/A"
almanac[47]["Eccentricity"] = 1.184000e-003
almanac[47]["Time_of_Applicability"] = 0.000000e+000
almanac[47]["Orbital_Inclination"] = 1.126443e+000
almanac[47]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[47]["SQRT_A"] = 5.050500e+003
almanac[47]["Right_Ascen_at_Week"] = 1.79067e+000
almanac[47]["Argument_of_Perigee"] = 4.45430067
almanac[47]["Mean_Anom"] = -5.519651e+000
almanac[47]["week"] = 1390
almanac[47]["Commit_date"] = "N/A"
almanac[47]["Life_dates"] = {}
almanac[48] = {}
almanac[48]["System"] = SAT_SYS_GLONASS
almanac[48]["Number"] = 12
almanac[48]["Orbital"] = 2
almanac[48]["GLONASS_Data"] = {}
almanac[48]["GLONASS_Data"]["NKU_Number"] = "N/A"
almanac[48]["GLONASS_Data"]["Cosmos_Number"] = "N/A"
almanac[48]["Eccentricity"] = 1.184000e-003
almanac[48]["Time_of_Applicability"] = 0.000000e+000
almanac[48]["Orbital_Inclination"] = 1.126443e+000
almanac[48]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[48]["SQRT_A"] = 5.050500e+003
almanac[48]["Right_Ascen_at_Week"] = 1.79067e+000
almanac[48]["Argument_of_Perigee"] = 5.23930067
almanac[48]["Mean_Anom"] = -5.519651e+000
almanac[48]["week"] = 1390
almanac[48]["Commit_date"] = "N/A"
almanac[48]["Life_dates"] = {}
almanac[49] = {}
almanac[49]["System"] = SAT_SYS_GLONASS
almanac[49]["Number"] = 13
almanac[49]["Orbital"] = 2
almanac[49]["GLONASS_Data"] = {}
almanac[49]["GLONASS_Data"]["NKU_Number"] = "N/A"
almanac[49]["GLONASS_Data"]["Cosmos_Number"] = "N/A"
almanac[49]["Eccentricity"] = 1.184000e-003
almanac[49]["Time_of_Applicability"] = 0.000000e+000
almanac[49]["Orbital_Inclination"] = 1.126443e+000
almanac[49]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[49]["SQRT_A"] = 5.050500e+003
almanac[49]["Right_Ascen_at_Week"] = 1.79067e+000
almanac[49]["Argument_of_Perigee"] = 6.02430067
almanac[49]["Mean_Anom"] = -5.519651e+000
almanac[49]["week"] = 1390
almanac[49]["Commit_date"] = "N/A"
almanac[49]["Life_dates"] = {}
almanac[50] = {}
almanac[50]["System"] = SAT_SYS_GLONASS
almanac[50]["Number"] = 14
almanac[50]["Orbital"] = 2
almanac[50]["GLONASS_Data"] = {}
almanac[50]["GLONASS_Data"]["NKU_Number"] = "N/A"
almanac[50]["GLONASS_Data"]["Cosmos_Number"] = "N/A"
almanac[50]["Eccentricity"] = 1.184000e-003
almanac[50]["Time_of_Applicability"] = 0.000000e+000
almanac[50]["Orbital_Inclination"] = 1.126443e+000
almanac[50]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[50]["SQRT_A"] = 5.050500e+003
almanac[50]["Right_Ascen_at_Week"] = 1.79067e+000
almanac[50]["Argument_of_Perigee"] = 0.52930067
almanac[50]["Mean_Anom"] = -5.519651e+000
almanac[50]["week"] = 1390
almanac[50]["Commit_date"] = "N/A"
almanac[50]["Life_dates"] = {}
almanac[51] = {}
almanac[51]["System"] = SAT_SYS_GLONASS
almanac[51]["Number"] = 15
almanac[51]["Orbital"] = 2
almanac[51]["GLONASS_Data"] = {}
almanac[51]["GLONASS_Data"]["NKU_Number"] = "N/A"
almanac[51]["GLONASS_Data"]["Cosmos_Number"] = "N/A"
almanac[51]["Eccentricity"] = 1.184000e-003
almanac[51]["Time_of_Applicability"] = 0.000000e+000
almanac[51]["Orbital_Inclination"] = 1.126443e+000
almanac[51]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[51]["SQRT_A"] = 5.050500e+003
almanac[51]["Right_Ascen_at_Week"] = 1.79067e+000
almanac[51]["Argument_of_Perigee"] = 1.31430067
almanac[51]["Mean_Anom"] = -5.519651e+000
almanac[51]["week"] = 1390
almanac[51]["Commit_date"] = "N/A"
almanac[51]["Life_dates"] = {}
almanac[52] = {}
almanac[52]["System"] = SAT_SYS_GLONASS
almanac[52]["Number"] = 16
almanac[52]["Orbital"] = 2
almanac[52]["GLONASS_Data"] = {}
almanac[52]["GLONASS_Data"]["NKU_Number"] = "N/A"
almanac[52]["GLONASS_Data"]["Cosmos_Number"] = "N/A"
almanac[52]["Eccentricity"] = 1.184000e-003
almanac[52]["Time_of_Applicability"] = 0.000000e+000
almanac[52]["Orbital_Inclination"] = 1.126443e+000
almanac[52]["Rate_of_Right_Ascen"] = 0.000000e+000
almanac[52]["SQRT_A"] = 5.050500e+003
almanac[52]["Right_Ascen_at_Week"] = 1.79067e+000
almanac[52]["Argument_of_Perigee"] = 2.09930067
almanac[52]["Mean_Anom"] = -5.519651e+000
almanac[52]["week"] = 1390
almanac[52]["Commit_date"] = "N/A"
almanac[52]["Life_dates"] = {}
SA_mode = false
AS_mode = false

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
local FACGroup = GROUP:FindByName( "FAC Group" )
local FACDetection = DETECTION_UNITGROUPS:New( FACGroup, 1000, 250 )
local FACClientSet = SET_CLIENT:New():FilterCoalitions( "blue" ):FilterStart()
local FACReporting = FAC_REPORTING:New( FACClientSet, FACDetection )

View File

@ -0,0 +1,245 @@
dictionary =
{
["DictKey_GroupName_63"] = "Target #011",
["DictKey_WptName_201"] = "",
["DictKey_UnitName_52"] = "Target #007",
["DictKey_UnitName_67"] = "Target #012",
["DictKey_WptName_185"] = "",
["DictKey_WptName_86"] = "",
["DictKey_WptName_138"] = "",
["DictKey_GroupName_96"] = "Target #022",
["DictKey_WptName_113"] = "",
["DictKey_WptName_194"] = "",
["DictKey_WptName_41"] = "",
["DictKey_UnitName_73"] = "Target #014",
["DictKey_GroupName_21"] = "FAC Group #004",
["DictKey_WptName_198"] = "",
["DictKey_WptName_31"] = "",
["DictKey_ActionText_30"] = "BASE:TraceClass( \"DETECTION_UNITGROUPS\" )\
BASE:TraceClass( \"SET_UNIT\" )\
BASE:TraceClass( \"FAC_REPORT\" )\
BASE:TraceLevel( 2 )",
["DictKey_WptName_114"] = "",
["DictKey_WptName_112"] = "",
["DictKey_GroupName_102"] = "New Vehicle Group",
["DictKey_WptName_145"] = "",
["DictKey_UnitName_25"] = "Unit #004",
["DictKey_UnitName_197"] = "Target #026",
["DictKey_WptName_123"] = "",
["DictKey_GroupName_51"] = "Target #007",
["DictKey_WptName_215"] = "",
["DictKey_WptName_59"] = "",
["DictKey_WptName_13"] = "",
["DictKey_WptName_124"] = "",
["DictKey_WptName_212"] = "",
["DictKey_WptName_217"] = "",
["DictKey_UnitName_76"] = "Target #015",
["DictKey_WptName_199"] = "",
["DictKey_WptName_134"] = "",
["DictKey_WptName_181"] = "",
["DictKey_WptName_109"] = "",
["DictKey_GroupName_45"] = "Target #005",
["DictKey_WptName_77"] = "",
["DictKey_GroupName_32"] = "Target #001",
["DictKey_UnitName_190"] = "Target #025",
["DictKey_WptName_147"] = "",
["DictKey_WptName_101"] = "",
["DictKey_GroupName_42"] = "Target #004",
["DictKey_GroupName_84"] = "Target #018",
["DictKey_GroupName_189"] = "Target #025",
["DictKey_UnitName_155"] = "Target #017",
["DictKey_WptName_47"] = "",
["DictKey_GroupName_203"] = "Target #027",
["DictKey_UnitName_43"] = "Target #004",
["DictKey_UnitName_61"] = "Target #010",
["DictKey_WptName_56"] = "",
["DictKey_WptName_157"] = "",
["DictKey_WptName_233"] = "",
["DictKey_GroupName_78"] = "Target #016",
["DictKey_WptName_153"] = "",
["DictKey_UnitName_49"] = "Target #006",
["DictKey_WptName_187"] = "",
["DictKey_UnitName_223"] = "Target #011",
["DictKey_WptName_23"] = "",
["DictKey_WptName_172"] = "",
["DictKey_WptName_214"] = "",
["DictKey_WptName_188"] = "",
["DictKey_WptName_151"] = "",
["DictKey_descriptionRedTask_2"] = "",
["DictKey_WptName_38"] = "",
["DictKey_WptName_71"] = "",
["DictKey_UnitName_183"] = "Target #024",
["DictKey_WptName_144"] = "",
["DictKey_WptName_178"] = "",
["DictKey_UnitName_12"] = "Unit #1",
["DictKey_WptName_139"] = "",
["DictKey_WptName_205"] = "",
["DictKey_WptName_17"] = "",
["DictKey_UnitName_211"] = "Target #028",
["DictKey_WptName_104"] = "",
["DictKey_WptName_14"] = "",
["DictKey_UnitName_103"] = "Unit #1",
["DictKey_WptName_158"] = "",
["DictKey_UnitName_227"] = "Target #013",
["DictKey_WptName_216"] = "",
["DictKey_WptName_120"] = "",
["DictKey_WptName_225"] = "",
["DictKey_UnitName_37"] = "Target #002",
["DictKey_WptName_200"] = "",
["DictKey_GroupName_18"] = "FAC Group #003",
["DictKey_GroupName_222"] = "Target #011",
["DictKey_WptName_179"] = "",
["DictKey_UnitName_176"] = "Target #020",
["DictKey_WptName_236"] = "",
["DictKey_GroupName_81"] = "Target #017",
["DictKey_WptName_130"] = "",
["DictKey_UnitName_46"] = "Target #005",
["DictKey_WptName_92"] = "",
["DictKey_GroupName_36"] = "Target #002",
["DictKey_WptName_140"] = "",
["DictKey_UnitName_40"] = "Target #003",
["DictKey_WptName_121"] = "",
["DictKey_WptName_119"] = "",
["DictKey_WptName_174"] = "",
["DictKey_GroupName_72"] = "Target #014",
["DictKey_GroupName_75"] = "Target #015",
["DictKey_GroupName_66"] = "Target #012",
["DictKey_WptName_167"] = "",
["DictKey_WptName_9"] = "",
["DictKey_WptName_116"] = "",
["DictKey_WptName_220"] = "",
["DictKey_UnitName_79"] = "Target #016",
["DictKey_WptName_137"] = "",
["DictKey_GroupName_93"] = "Target #021",
["DictKey_WptName_132"] = "",
["DictKey_GroupName_27"] = "FAC Group #006",
["DictKey_WptName_65"] = "",
["DictKey_UnitName_22"] = "Unit #003",
["DictKey_WptName_152"] = "",
["DictKey_WptName_95"] = "",
["DictKey_WptName_206"] = "",
["DictKey_UnitName_169"] = "Target #019",
["DictKey_WptName_122"] = "",
["DictKey_UnitName_19"] = "Unit #002",
["DictKey_sortie_4"] = "",
["DictKey_GroupName_161"] = "Target #010",
["DictKey_WptName_240"] = "",
["DictKey_GroupName_175"] = "Target #020",
["DictKey_GroupName_99"] = "Target #023",
["DictKey_UnitName_85"] = "Target #018",
["DictKey_WptName_80"] = "",
["DictKey_WptName_133"] = "",
["DictKey_WptName_235"] = "",
["DictKey_WptName_202"] = "",
["DictKey_UnitName_91"] = "Target #020",
["DictKey_GroupName_57"] = "Target #009",
["DictKey_UnitName_94"] = "Target #021",
["DictKey_UnitName_162"] = "Target #010",
["DictKey_WptName_177"] = "",
["DictKey_GroupName_60"] = "Target #010",
["DictKey_WptName_110"] = "",
["DictKey_WptName_207"] = "",
["DictKey_WptName_239"] = "",
["DictKey_WptName_50"] = "",
["DictKey_UnitName_106"] = "FAC Client",
["DictKey_GroupName_105"] = "FAC Client Group",
["DictKey_UnitName_58"] = "Target #009",
["DictKey_GroupName_48"] = "Target #006",
["DictKey_WptName_26"] = "",
["DictKey_WptName_171"] = "",
["DictKey_GroupName_196"] = "Target #026",
["DictKey_GroupName_54"] = "Target #008",
["DictKey_GroupName_39"] = "Target #003",
["DictKey_WptName_89"] = "",
["DictKey_WptName_237"] = "",
["DictKey_GroupName_87"] = "Target #019",
["DictKey_UnitName_97"] = "Target #022",
["DictKey_WptName_128"] = "",
["DictKey_UnitName_82"] = "Target #017",
["DictKey_UnitName_28"] = "Unit #005",
["DictKey_WptName_98"] = "",
["DictKey_WptName_180"] = "",
["DictKey_WptName_159"] = "",
["DictKey_WptName_166"] = "",
["DictKey_WptName_208"] = "",
["DictKey_WptName_193"] = "",
["DictKey_WptName_238"] = "",
["DictKey_WptName_191"] = "",
["DictKey_descriptionText_1"] = "",
["DictKey_UnitName_55"] = "Target #008",
["DictKey_WptName_232"] = "",
["DictKey_WptName_107"] = "",
["DictKey_WptName_115"] = "",
["DictKey_WptName_229"] = "",
["DictKey_WptName_108"] = "",
["DictKey_WptName_149"] = "",
["DictKey_WptName_142"] = "",
["DictKey_UnitName_100"] = "Target #023",
["DictKey_WptName_170"] = "",
["DictKey_WptName_164"] = "",
["DictKey_WptName_74"] = "",
["DictKey_WptName_141"] = "",
["DictKey_WptName_143"] = "",
["DictKey_UnitName_33"] = "Target #001",
["DictKey_GroupName_69"] = "Target #013",
["DictKey_WptName_127"] = "",
["DictKey_WptName_129"] = "",
["DictKey_WptName_213"] = "",
["DictKey_GroupName_24"] = "FAC Group #005",
["DictKey_WptName_186"] = "",
["DictKey_GroupName_7"] = "FAC Group",
["DictKey_WptName_148"] = "",
["DictKey_WptName_146"] = "",
["DictKey_WptName_230"] = "",
["DictKey_WptName_156"] = "",
["DictKey_GroupName_154"] = "Target #017",
["DictKey_UnitName_64"] = "Target #011",
["DictKey_GroupName_218"] = "Target #010",
["DictKey_UnitName_219"] = "Target #010",
["DictKey_WptName_68"] = "",
["DictKey_UnitName_88"] = "Target #019",
["DictKey_WptName_160"] = "",
["DictKey_WptName_10"] = "",
["DictKey_GroupName_210"] = "Target #028",
["DictKey_WptName_163"] = "",
["DictKey_WptName_234"] = "",
["DictKey_WptName_195"] = "",
["DictKey_WptName_221"] = "",
["DictKey_UnitName_204"] = "Target #027",
["DictKey_UnitName_16"] = "Unit #001",
["DictKey_WptName_135"] = "",
["DictKey_WptName_131"] = "",
["DictKey_WptName_228"] = "",
["DictKey_WptName_231"] = "",
["DictKey_WptName_165"] = "",
["DictKey_WptName_224"] = "",
["DictKey_GroupName_11"] = "FAC Group #001",
["DictKey_UnitName_70"] = "Target #013",
["DictKey_GroupName_226"] = "Target #013",
["DictKey_WptName_20"] = "",
["DictKey_GroupName_15"] = "FAC Group #002",
["DictKey_WptName_150"] = "",
["DictKey_WptName_126"] = "",
["DictKey_WptName_29"] = "",
["DictKey_WptName_173"] = "",
["DictKey_WptName_83"] = "",
["DictKey_WptName_241"] = "",
["DictKey_WptName_62"] = "",
["DictKey_GroupName_168"] = "Target #019",
["DictKey_WptName_118"] = "",
["DictKey_WptName_53"] = "",
["DictKey_WptName_136"] = "",
["DictKey_GroupName_182"] = "Target #024",
["DictKey_descriptionBlueTask_3"] = "",
["DictKey_WptName_192"] = "",
["DictKey_WptName_117"] = "",
["DictKey_WptName_125"] = "",
["DictKey_WptName_44"] = "",
["DictKey_GroupName_90"] = "Target #020",
["DictKey_WptName_111"] = "",
["DictKey_WptName_35"] = "",
["DictKey_WptName_184"] = "",
["DictKey_WptName_209"] = "",
["DictKey_WptName_34"] = "",
["DictKey_UnitName_8"] = "FAC Unit",
} -- end of dictionary

View File

@ -0,0 +1,5 @@
mapResource =
{
["ResKey_Action_5"] = "Moose.lua",
["ResKey_Action_6"] = "Moose_Test_FAC.lua",
} -- end of mapResource

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,212 @@
options =
{
["difficulty"] =
{
["fuel"] = false,
["labels"] = false,
["easyRadar"] = false,
["easyCommunication"] = true,
["miniHUD"] = false,
["setGlobal"] = true,
["birds"] = 0,
["optionsView"] = "optview_all",
["permitCrash"] = true,
["immortal"] = false,
["avionicsLanguage"] = "native",
["cockpitVisualRM"] = true,
["padlock"] = true,
["reports"] = true,
["hideStick"] = false,
["radio"] = true,
["map"] = true,
["externalViews"] = true,
["spectatorExternalViews"] = true,
["cockpitLanguage"] = "english",
["tips"] = true,
["userSnapView"] = true,
["units"] = "metric",
["impostors"] = "medium",
["iconsTheme"] = "nato",
["easyFlight"] = false,
["weapons"] = false,
["cockpitStatusBarAllowed"] = false,
["geffect"] = "realistic",
}, -- end of ["difficulty"]
["playerName"] = "Killer",
["graphics"] =
{
["OculusRift"] = false,
["color"] = "32",
["preloadRadius"] = 73885,
["heatBlr"] = 2,
["scenes"] = "high",
["water"] = 2,
["visibRange"] = "High",
["treesVisibility"] = 25000,
["aspect"] = 1.7777777777778,
["lights"] = 2,
["HDR"] = 1,
["MSAA"] = 6,
["civTraffic"] = "high",
["clutterMaxDistance"] = 1500,
["terrainTextures"] = "max",
["multiMonitorSetup"] = "1camera",
["shadowTree"] = true,
["fullScreen"] = false,
["disableAero"] = false,
["DOF"] = 0,
["clouds"] = 1,
["flatTerrainShadows"] = 1,
["cockpitShadows"] = true,
["height"] = 900,
["width"] = 1600,
["shadows"] = 5,
["textures"] = 2,
["sync"] = true,
["LensEffects"] = 3,
["anisotropy"] = 4,
["TranspSSAA"] = false,
["haze"] = 1,
["effects"] = 3,
}, -- end of ["graphics"]
["plugins"] =
{
["CA"] =
{
["kompass_options"] = 1,
["ground_target_info"] = true,
["ground_aim_helper"] = true,
["ground_platform_shake"] = true,
["ground_automatic"] = true,
}, -- end of ["CA"]
["M-2000C"] =
{
["TDC_"] = false,
["CPLocalList"] = "default",
}, -- end of ["M-2000C"]
["A-10C"] =
{
["CPLocalList"] = "default",
}, -- end of ["A-10C"]
["FC3"] =
{
["CPLocalList_F-15C"] = "default",
["CPLocalList_MiG-29S"] = "default",
["CPLocalList_MiG-29A"] = "default",
["CPLocalList_Su-25"] = "default",
["CPLocalList_A-10A"] = "default",
["CPLocalList_Su-27"] = "chinese",
["CPLocalList_MiG-29G"] = "default",
["CPLocalList_Su-33"] = "default",
}, -- end of ["FC3"]
["Hawk"] =
{
["CPLocalList"] = "high",
}, -- end of ["Hawk"]
["P-51D"] =
{
["assistance"] = 100,
["CPLocalList"] = "default",
["autoRudder"] = false,
}, -- end of ["P-51D"]
["TF-51D"] =
{
["assistance"] = 100,
["CPLocalList"] = "default",
["autoRudder"] = false,
}, -- end of ["TF-51D"]
["MiG-21Bis"] =
{
["Engine"] = false,
["Shake"] = 100,
["CustomCockpit"] = false,
["Reticle"] = false,
["Freeze"] = false,
}, -- end of ["MiG-21Bis"]
["F-86F"] =
{
["landSeatAdjustF86"] = true,
["CPLocalList"] = "default",
["NoseWheelSteeringSimpleBehaviourF86"] = true,
["gunCamera"] = 0,
}, -- end of ["F-86F"]
["Su-25T"] =
{
["CPLocalList"] = "default",
}, -- end of ["Su-25T"]
["Mi-8MTV2"] =
{
["altMi8TrimmingMethod"] = false,
["Mi8AutopilotAdjustment"] = false,
["Mi8RudderTrimmer"] = false,
["controlHelperMi8"] = false,
["CPLocalList"] = "default",
["weapTooltipsMi8"] = true,
["Mi8FOV"] = 120,
}, -- end of ["Mi-8MTV2"]
["MiG-15bis"] =
{
["autoLeanToAimMiG15"] = true,
["CPLocalList"] = "chinese",
["gunCamera"] = 0,
["aiHelper"] = false,
}, -- end of ["MiG-15bis"]
["FW-190D9"] =
{
["assistance"] = 100,
["CPLocalList"] = "default",
["autoRudder"] = false,
}, -- end of ["FW-190D9"]
["UH-1H"] =
{
["UHRudderTrimmer"] = false,
["autoPilot"] = true,
["altUHTrimmingMethod"] = false,
["CPLocalList"] = "default",
["weapTooltips"] = true,
["UHTrackIRAiming"] = true,
}, -- end of ["UH-1H"]
["Ka-50"] =
{
["altTrimmingMethod"] = false,
["Ka50RudderTrimmer"] = false,
["CPLocalList"] = "english",
}, -- end of ["Ka-50"]
}, -- end of ["plugins"]
["views"] =
{
["cockpit"] =
{
["mirrors"] = false,
["reflections"] = false,
["avionics"] = 3,
["russianHud"] = false,
}, -- end of ["cockpit"]
}, -- end of ["views"]
["sound"] =
{
["hear_in_helmet"] = true,
["headphones"] = -15,
["cockpit"] = 0,
["GBreathEffect"] = true,
["gui"] = 0,
["volume"] = 0,
["radioSpeech"] = true,
["music"] = -100,
["subtitles"] = true,
["world"] = 0,
}, -- end of ["sound"]
["miscellaneous"] =
{
["headmove"] = true,
["f5_nearest_ac"] = true,
["f11_free_camera"] = true,
["F2_view_effects"] = 2,
["f10_awacs"] = true,
["Coordinate_Display"] = "Lat Long",
["accidental_failures"] = false,
["force_feedback_enabled"] = true,
["synchronize_controls"] = false,
["show_pilot_body"] = true,
}, -- end of ["miscellaneous"]
} -- end of options

View File

@ -0,0 +1,807 @@
warehouses =
{
["airports"] =
{
[12] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [12]
[13] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [13]
[14] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [14]
[15] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [15]
[16] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [16]
[17] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [17]
[18] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [18]
[19] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [19]
[20] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [20]
[21] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [21]
[22] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [22]
[23] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [23]
[24] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [24]
[25] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [25]
[26] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [26]
[27] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [27]
[28] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [28]
[29] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [29]
[30] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [30]
[31] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [31]
[32] =
{
["gasoline"] =
{
["InitFuel"] = 100,
}, -- end of ["gasoline"]
["unlimitedMunitions"] = true,
["methanol_mixture"] =
{
["InitFuel"] = 100,
}, -- end of ["methanol_mixture"]
["OperatingLevel_Air"] = 10,
["diesel"] =
{
["InitFuel"] = 100,
}, -- end of ["diesel"]
["speed"] = 16.666666,
["size"] = 100,
["periodicity"] = 30,
["suppliers"] =
{
}, -- end of ["suppliers"]
["coalition"] = "NEUTRAL",
["jet_fuel"] =
{
["InitFuel"] = 100,
}, -- end of ["jet_fuel"]
["OperatingLevel_Eqp"] = 10,
["unlimitedFuel"] = true,
["aircrafts"] =
{
}, -- end of ["aircrafts"]
["weapons"] =
{
}, -- end of ["weapons"]
["OperatingLevel_Fuel"] = 10,
["unlimitedAircrafts"] = true,
}, -- end of [32]
}, -- end of ["airports"]
["warehouses"] =
{
}, -- end of ["warehouses"]
} -- end of warehouses

View File

@ -0,0 +1,57 @@
do
-- This demo creates a menu structure for the two clients of planes.
-- Each client will receive a different menu structure.
-- To test, join the planes, then look at the other radio menus (Option F10).
-- Then switch planes and check if the menu is still there.
-- And play with the Add and Remove menu options.
-- Note that in multi player, this will only work after the DCS clients bug is solved.
local function ShowStatus( PlaneClient, StatusText, Coalition )
MESSAGE:New( Coalition, 15 ):ToRed()
PlaneClient:Message( StatusText, 15 )
end
local MenuStatus = {}
local function RemoveStatusMenu( MenuClient )
local MenuClientName = MenuClient:GetName()
MenuStatus[MenuClientName]:Remove()
end
--- @param Client#CLIENT MenuClient
local function AddStatusMenu( MenuClient )
env.info(MenuClient.ClientName)
local MenuClientName = MenuClient:GetName()
-- This would create a menu for the red coalition under the MenuCoalitionRed menu object.
MenuStatus[MenuClientName] = MENU_CLIENT:New( MenuClient, "Status for Planes" )
MENU_CLIENT_COMMAND:New( MenuClient, "Show Status", MenuStatus[MenuClientName], ShowStatus, MenuClient, "Status of planes is ok!", "Message to Red Coalition" )
end
SCHEDULER:New( nil,
function()
local PlaneClient = CLIENT:FindByName( "Plane 1" )
if PlaneClient and PlaneClient:IsAlive() then
local MenuManage = MENU_CLIENT:New( PlaneClient, "Manage Menus" )
MENU_CLIENT_COMMAND:New( PlaneClient, "Add Status Menu Plane 1", MenuManage, AddStatusMenu, PlaneClient )
MENU_CLIENT_COMMAND:New( PlaneClient, "Remove Status Menu Plane 1", MenuManage, RemoveStatusMenu, PlaneClient )
end
end, {}, 10, 10 )
SCHEDULER:New( nil,
function()
local PlaneClient = CLIENT:FindByName( "Plane 2" )
if PlaneClient and PlaneClient:IsAlive() then
local MenuManage = MENU_CLIENT:New( PlaneClient, "Manage Menus" )
MENU_CLIENT_COMMAND:New( PlaneClient, "Add Status Menu Plane 2", MenuManage, AddStatusMenu, PlaneClient )
MENU_CLIENT_COMMAND:New( PlaneClient, "Remove Status Menu Plane 2", MenuManage, RemoveStatusMenu, PlaneClient )
end
end, {}, 10, 10 )
end

View File

@ -0,0 +1,43 @@
do
-- This demo creates a menu structure for the planes within the red coalition.
-- To test, join the planes, then look at the other radio menus (Option F10).
-- Then switch planes and check if the menu is still there.
local Plane1 = CLIENT:FindByName( "Plane 1" )
local Plane2 = CLIENT:FindByName( "Plane 2" )
-- This would create a menu for the red coalition under the main DCS "Others" menu.
local MenuCoalitionRed = MENU_COALITION:New( coalition.side.RED, "Manage Menus" )
local function ShowStatus( StatusText, Coalition )
MESSAGE:New( Coalition, 15 ):ToRed()
Plane1:Message( StatusText, 15 )
Plane2:Message( StatusText, 15 )
end
local MenuStatus -- Menu#MENU_COALITION
local MenuStatusShow -- Menu#MENU_COALITION_COMMAND
local function RemoveStatusMenu()
MenuStatus:Remove()
end
local function AddStatusMenu()
-- This would create a menu for the red coalition under the MenuCoalitionRed menu object.
MenuStatus = MENU_COALITION:New( coalition.side.RED, "Status for Planes" )
MenuStatusShow = MENU_COALITION_COMMAND:New( coalition.side.RED, "Show Status", MenuStatus, ShowStatus, "Status of planes is ok!", "Message to Red Coalition" )
end
local MenuAdd = MENU_COALITION_COMMAND:New( coalition.side.RED, "Add Status Menu", MenuCoalitionRed, AddStatusMenu )
local MenuRemove = MENU_COALITION_COMMAND:New( coalition.side.RED, "Remove Status Menu", MenuCoalitionRed, RemoveStatusMenu )
end

View File

@ -0,0 +1,57 @@
do
-- This demo creates a menu structure for the two groups of planes.
-- Each group will receive a different menu structure.
-- To test, join the planes, then look at the other radio menus (Option F10).
-- Then switch planes and check if the menu is still there.
-- And play with the Add and Remove menu options.
-- Note that in multi player, this will only work after the DCS groups bug is solved.
local function ShowStatus( PlaneGroup, StatusText, Coalition )
MESSAGE:New( Coalition, 15 ):ToRed()
PlaneGroup:Message( StatusText, 15 )
end
local MenuStatus = {}
local function RemoveStatusMenu( MenuGroup )
local MenuGroupName = MenuGroup:GetName()
MenuStatus[MenuGroupName]:Remove()
end
--- @param Group#GROUP MenuGroup
local function AddStatusMenu( MenuGroup )
env.info(MenuGroup.GroupName)
local MenuGroupName = MenuGroup:GetName()
-- This would create a menu for the red coalition under the MenuCoalitionRed menu object.
MenuStatus[MenuGroupName] = MENU_GROUP:New( MenuGroup, "Status for Planes" )
MENU_GROUP_COMMAND:New( MenuGroup, "Show Status", MenuStatus[MenuGroupName], ShowStatus, MenuGroup, "Status of planes is ok!", "Message to Red Coalition" )
end
SCHEDULER:New( nil,
function()
local PlaneGroup = GROUP:FindByName( "Plane 1" )
if PlaneGroup and PlaneGroup:IsAlive() then
local MenuManage = MENU_GROUP:New( PlaneGroup, "Manage Menus" )
MENU_GROUP_COMMAND:New( PlaneGroup, "Add Status Menu Plane 1", MenuManage, AddStatusMenu, PlaneGroup )
MENU_GROUP_COMMAND:New( PlaneGroup, "Remove Status Menu Plane 1", MenuManage, RemoveStatusMenu, PlaneGroup )
end
end, {}, 10, 10 )
SCHEDULER:New( nil,
function()
local PlaneGroup = GROUP:FindByName( "Plane 2" )
if PlaneGroup and PlaneGroup:IsAlive() then
local MenuManage = MENU_GROUP:New( PlaneGroup, "Manage Menus" )
MENU_GROUP_COMMAND:New( PlaneGroup, "Add Status Menu Plane 2", MenuManage, AddStatusMenu, PlaneGroup )
MENU_GROUP_COMMAND:New( PlaneGroup, "Remove Status Menu Plane 2", MenuManage, RemoveStatusMenu, PlaneGroup )
end
end, {}, 10, 10 )
end

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>
@ -276,6 +277,12 @@ These tracing levels were defined to avoid bulks of tracing to be generated by l
<td class="name" nowrap="nowrap"><a href="##(BASE).GetClassNameAndID">BASE:GetClassNameAndID()</a></td>
<td class="summary">
<p>Get the ClassName + ClassID of the class instance.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(BASE).GetParent">BASE:GetParent(Child)</a></td>
<td class="summary">
<p>This is the worker method to retrieve the Parent class.</p>
</td>
</tr>
<tr>
@ -291,9 +298,9 @@ These tracing levels were defined to avoid bulks of tracing to be generated by l
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(BASE).Inherited">BASE:Inherited(Child)</a></td>
<td class="name" nowrap="nowrap"><a href="##(BASE).IsTrace">BASE:IsTrace()</a></td>
<td class="summary">
<p>This is the worker method to retrieve the Parent class.</p>
<p>Enquires if tracing is on (for the class).</p>
</td>
</tr>
<tr>
@ -357,7 +364,7 @@ These tracing levels were defined to avoid bulks of tracing to be generated by l
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(BASE).TraceOnOff">BASE.TraceOnOff(BASE, TraceOnOff, self)</a></td>
<td class="name" nowrap="nowrap"><a href="##(BASE).TraceOnOff">BASE:TraceOnOff(TraceOnOff)</a></td>
<td class="summary">
<p>Set trace on or off
Note that when trace is off, no debug statement is performed, increasing performance!
@ -821,6 +828,33 @@ The ClassName of the class instance.</p>
<p><em>#string:</em>
The ClassName + ClassID of the class instance.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(BASE).GetParent" >
<strong>BASE:GetParent(Child)</strong>
</a>
</dt>
<dd>
<p>This is the worker method to retrieve the Parent class.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="##(BASE)">#BASE</a> Child </em></code>:
is the Child class from which the Parent class needs to be retrieved.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(BASE)">#BASE</a>:</em></p>
</dd>
</dl>
<dl class="function">
@ -885,26 +919,17 @@ Child</p>
<dl class="function">
<dt>
<a id="#(BASE).Inherited" >
<strong>BASE:Inherited(Child)</strong>
<a id="#(BASE).IsTrace" >
<strong>BASE:IsTrace()</strong>
</a>
</dt>
<dd>
<p>This is the worker method to retrieve the Parent class.</p>
<p>Enquires if tracing is on (for the class).</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="##(BASE)">#BASE</a> Child </em></code>:
is the Child class from which the Parent class needs to be retrieved.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(BASE)">#BASE</a>:</em></p>
<p><em>#boolean:</em></p>
</dd>
@ -1160,7 +1185,7 @@ true = trace all methods in MOOSE.</p>
<dt>
<a id="#(BASE).TraceOnOff" >
<strong>BASE.TraceOnOff(BASE, TraceOnOff, self)</strong>
<strong>BASE:TraceOnOff(TraceOnOff)</strong>
</a>
</dt>
<dd>
@ -1173,24 +1198,13 @@ When Moose is loaded statically, (as one file), tracing is switched off by defau
<p>So tracing must be switched on manually in your mission if you are using Moose statically.
When moose is loading dynamically (for moose class development), tracing is switched on by default.</p>
<h3>Parameters</h3>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> BASE </em></code>:
self</p>
</li>
<li>
<p><code><em>#boolean TraceOnOff </em></code>:
Switch the tracing on or off.</p>
</li>
<li>
<p><code><em> self </em></code>: </p>
</li>
</ul>
<h3>Usage:</h3>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>
@ -339,6 +340,12 @@ This is different from the EnRoute tasks, where the targets of the task need to
<td class="name" nowrap="nowrap"><a href="##(CONTROLLABLE).GetDetectedTargets">CONTROLLABLE:GetDetectedTargets(DetectVisual, DetectOptical, DetectRadar, DetectIRST, DetectRWR, DetectDLINK)</a></td>
<td class="summary">
<p>Return the detected targets of the controllable.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CONTROLLABLE).GetMessage">CONTROLLABLE:GetMessage(Message, Duration)</a></td>
<td class="summary">
<p>Returns a message with the callsign embedded (if there is one).</p>
</td>
</tr>
<tr>
@ -357,6 +364,42 @@ This is different from the EnRoute tasks, where the targets of the task need to
<td class="name" nowrap="nowrap"><a href="##(CONTROLLABLE).IsTargetDetected">CONTROLLABLE:IsTargetDetected(DCSObject)</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CONTROLLABLE).Message">CONTROLLABLE:Message(Message, Duration)</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="##(CONTROLLABLE).MessageToAll">CONTROLLABLE:MessageToAll(Message, Duration)</a></td>
<td class="summary">
<p>Send a message to all coalitions.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CONTROLLABLE).MessageToBlue">CONTROLLABLE:MessageToBlue(Message, Duration)</a></td>
<td class="summary">
<p>Send a message to the blue coalition.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CONTROLLABLE).MessageToClient">CONTROLLABLE:MessageToClient(Message, Duration, Client)</a></td>
<td class="summary">
<p>Send a message to a client.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(CONTROLLABLE).MessageToGroup">CONTROLLABLE:MessageToGroup(Message, Duration, MessageGroup)</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="##(CONTROLLABLE).MessageToRed">CONTROLLABLE:MessageToRed(Message, Duration)</a></td>
<td class="summary">
<p>Send a message to the red coalition.</p>
</td>
</tr>
<tr>
@ -1303,6 +1346,39 @@ If no detection method is given, the detection will use all the available method
<p><em>#table:</em>
DetectedTargets</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CONTROLLABLE).GetMessage" >
<strong>CONTROLLABLE:GetMessage(Message, Duration)</strong>
</a>
</dt>
<dd>
<p>Returns a message with the callsign embedded (if there is one).</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string Message </em></code>:
The message text</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Duration)">DCSTypes#Duration</a> Duration </em></code>:
The duration of the message.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="Message.html##(MESSAGE)">Message#MESSAGE</a>:</em></p>
</dd>
</dl>
<dl class="function">
@ -1366,6 +1442,204 @@ The mission route defined by points.</p>
<dl class="function">
<dt>
<a id="#(CONTROLLABLE).Message" >
<strong>CONTROLLABLE:Message(Message, Duration)</strong>
</a>
</dt>
<dd>
<p>Send a message to the players in the <a href="Group.html">Group</a>.</p>
<p>The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string Message </em></code>:
The message text</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Duration)">DCSTypes#Duration</a> Duration </em></code>:
The duration of the message.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CONTROLLABLE).MessageToAll" >
<strong>CONTROLLABLE:MessageToAll(Message, Duration)</strong>
</a>
</dt>
<dd>
<p>Send a message to all coalitions.</p>
<p>The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string Message </em></code>:
The message text</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Duration)">DCSTypes#Duration</a> Duration </em></code>:
The duration of the message.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CONTROLLABLE).MessageToBlue" >
<strong>CONTROLLABLE:MessageToBlue(Message, Duration)</strong>
</a>
</dt>
<dd>
<p>Send a message to the blue coalition.</p>
<p>The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string Message </em></code>:
The message text</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Duration)">DCSTypes#Duration</a> Duration </em></code>:
The duration of the message.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CONTROLLABLE).MessageToClient" >
<strong>CONTROLLABLE:MessageToClient(Message, Duration, Client)</strong>
</a>
</dt>
<dd>
<p>Send a message to a client.</p>
<p>The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string Message </em></code>:
The message text</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Duration)">DCSTypes#Duration</a> Duration </em></code>:
The duration of the message.</p>
</li>
<li>
<p><code><em><a href="Client.html##(CLIENT)">Client#CLIENT</a> Client </em></code>:
The client object receiving the message.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CONTROLLABLE).MessageToGroup" >
<strong>CONTROLLABLE:MessageToGroup(Message, Duration, MessageGroup)</strong>
</a>
</dt>
<dd>
<p>Send a message to a <a href="Group.html">Group</a>.</p>
<p>The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string Message </em></code>:
The message text</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Duration)">DCSTypes#Duration</a> Duration </em></code>:
The duration of the message.</p>
</li>
<li>
<p><code><em><a href="Group.html##(GROUP)">Group#GROUP</a> MessageGroup </em></code>:
The GROUP object receiving the message.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CONTROLLABLE).MessageToRed" >
<strong>CONTROLLABLE:MessageToRed(Message, Duration)</strong>
</a>
</dt>
<dd>
<p>Send a message to the red coalition.</p>
<p>The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string Message </em></code>:
The message text</p>
</li>
<li>
<p><code><em><a href="DCSTYpes.html##(Duration)">DCSTYpes#Duration</a> Duration </em></code>:
The duration of the message.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(CONTROLLABLE).New" >
<strong>CONTROLLABLE:New(ControllableName)</strong>
</a>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<li>DCSWorld</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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<li><a href="DCSWorld.html">DCSWorld</a></li>
<li>DCScountry</li>
<li><a href="DCStimer.html">DCStimer</a></li>
<li><a href="DCStrigger.html">DCStrigger</a></li>
<li><a href="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<li><a href="DCSWorld.html">DCSWorld</a></li>
<li><a href="DCScountry.html">DCScountry</a></li>
<li>DCStimer</li>
<li><a href="DCStrigger.html">DCStrigger</a></li>
<li><a href="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -0,0 +1,129 @@
<!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>DCStrigger</li>
<li><a href="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
<li><a href="DESTROYRADARSTASK.html">DESTROYRADARSTASK</a></li>
<li><a href="DESTROYUNITTYPESTASK.html">DESTROYUNITTYPESTASK</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="GOHOMETASK.html">GOHOMETASK</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="NOTASK.html">NOTASK</a></li>
<li><a href="Object.html">Object</a></li>
<li><a href="PICKUPTASK.html">PICKUPTASK</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</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_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>
<li><a href="Task_Client_Menu.html">Task_Client_Menu</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>
<li><a href="routines.html">routines</a></li>
</ul>
</div>
<div id="content">
<h1>Module <code>DCStrigger</code></h1>
<h2>Global(s)</h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="#trigger">trigger</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2>Global(s)</h2>
<dl class="function">
<dt>
<em><a href="##(timer)">#timer</a></em>
<a id="trigger" >
<strong>trigger</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<h2><a id="#(DCStrigger)" >Type <code>DCStrigger</code></a></h2>
<h2><a id="#(timer)" >Type <code>timer</code></a></h2>
</div>
</div>
</body>
</html>

View File

@ -37,6 +37,7 @@
<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>DEPLOYTASK</li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li>DESTROYBASETASK</li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li>DESTROYGROUPSTASK</li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

File diff suppressed because it is too large Load Diff

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>
@ -118,11 +119,29 @@ If an ad-hoc report is requested, use the method <a href="DetectionManager.html#
<hr/>
<h1>2) <a href="DetectionManager.html##(FAC_REPORTING)">DetectionManager#FAC_REPORTING</a> class, extends <a href="DetectionManager.html##(DETECTION_MANAGER)">DetectionManager#DETECTION_MANAGER</a></h1>
<p>The <a href="DetectionManager.html##(FAC_REPORTING)">DetectionManager#FAC_REPORTING</a> class implements detected units reporting. Reporting can be controlled using the reporting methods available in the <a href="DetectionManager.html##(DETECTION_MANAGER)">DetectionManager#DETECTION_MANAGER</a> class.</p>
<h1>2) <a href="DetectionManager.html##(DETECTION_REPORTING)">DetectionManager#DETECTION_REPORTING</a> class, extends <a href="DetectionManager.html##(DETECTION_MANAGER)">DetectionManager#DETECTION_MANAGER</a></h1>
<p>The <a href="DetectionManager.html##(DETECTION_REPORTING)">DetectionManager#DETECTION_REPORTING</a> class implements detected units reporting. Reporting can be controlled using the reporting methods available in the <a href="DetectionManager.html##(DETECTION_MANAGER)">DetectionManager#DETECTION_MANAGER</a> class.</p>
<h2>2.1) FAC_REPORTING constructor:</h2>
<p>The <a href="DetectionManager.html##(FAC_REPORTING).New">DetectionManager#FAC_REPORTING.New</a>() method creates a new FAC_REPORTING instance.</p>
<h2>2.1) DETECTION_REPORTING constructor:</h2>
<p>The <a href="DetectionManager.html##(DETECTION_REPORTING).New">DetectionManager#DETECTION_REPORTING.New</a>() method creates a new DETECTION_REPORTING instance.</p>
<hr/>
<h1>3) <a href="##(DETECTION_DISPATCHER)">#DETECTION_DISPATCHER</a> class, extends <a href="##(DETECTION_MANAGER)">#DETECTION_MANAGER</a></h1>
<p>The <a href="##(DETECTION_DISPATCHER)">#DETECTION_DISPATCHER</a> class implements the dynamic dispatching of tasks upon groups of detected units determined a <a href="Set.html">Set</a> of FAC (groups).
The FAC will detect units, will group them, and will dispatch <a href="Task.html">Task</a>s to groups. Depending on the type of target detected, different tasks will be dispatched.
Find a summary below describing for which situation a task type is created:</p>
<ul>
<li><strong>CAS Task</strong>: Is created when there are enemy ground units within range of the FAC, while there are friendly units in the FAC perimeter.</li>
<li><strong>BAI Task</strong>: Is created when there are enemy ground units within range of the FAC, while there are NO other friendly units within the FAC perimeter.</li>
<li><strong>SEAD Task</strong>: Is created when there are enemy ground units wihtin range of the FAC, with air search radars.</li>
</ul>
<p>Other task types will follow...</p>
<h2>3.1) DETECTION_DISPATCHER constructor:</h2>
<p>The <a href="##(DETECTION_DISPATCHER).New">DETECTION_DISPATCHER.New</a>() method creates a new DETECTION_DISPATCHER instance.</p>
<hr/>
@ -132,6 +151,12 @@ If an ad-hoc report is requested, use the method <a href="DetectionManager.html#
<h2>Global(s)</h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="#DETECTION_DISPATCHER">DETECTION_DISPATCHER</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#DETECTION_MANAGER">DETECTION_MANAGER</a></td>
<td class="summary">
@ -139,18 +164,82 @@ If an ad-hoc report is requested, use the method <a href="DetectionManager.html#
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#FAC_REPORTING">FAC_REPORTING</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="#TASK_DISPATCHER">TASK_DISPATCHER</a></td>
<td class="name" nowrap="nowrap"><a href="#DETECTION_REPORTING">DETECTION_REPORTING</a></td>
<td class="summary">
</td>
</tr>
</table>
<h2><a id="#(DETECTION_DISPATCHER)">Type <code>DETECTION_DISPATCHER</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_DISPATCHER).ClassName">DETECTION_DISPATCHER.ClassName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_DISPATCHER).CommandCenter">DETECTION_DISPATCHER.CommandCenter</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_DISPATCHER).Detection">DETECTION_DISPATCHER.Detection</a></td>
<td class="summary">
<p>The DETECTION_BASE object that is used to report the detected objects.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_DISPATCHER).EvaluateBAI">DETECTION_DISPATCHER:EvaluateBAI(DetectedArea, FriendlyCoalition)</a></td>
<td class="summary">
<p>Creates a BAI task when there are targets for it.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_DISPATCHER).EvaluateCAS">DETECTION_DISPATCHER:EvaluateCAS(DetectedArea)</a></td>
<td class="summary">
<p>Creates a CAS task when there are targets for it.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_DISPATCHER).EvaluateRemoveTask">DETECTION_DISPATCHER:EvaluateRemoveTask(Mission, Task, DetectedArea)</a></td>
<td class="summary">
<p>Evaluates the removal of the Task from the Mission.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_DISPATCHER).EvaluateSEAD">DETECTION_DISPATCHER:EvaluateSEAD(DetectedArea)</a></td>
<td class="summary">
<p>Creates a SEAD task when there are targets for it.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_DISPATCHER).Mission">DETECTION_DISPATCHER.Mission</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_DISPATCHER).New">DETECTION_DISPATCHER:New(SetGroup, Detection, Mission, CommandCenter)</a></td>
<td class="summary">
<p>DETECTION_DISPATCHER constructor.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_DISPATCHER).ProcessDetected">DETECTION_DISPATCHER:ProcessDetected(Detection)</a></td>
<td class="summary">
<p>Assigns tasks in relation to the detected items to the <a href="Set.html##(SET_GROUP)">Set#SET_GROUP</a>.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_DISPATCHER).SetGroup">DETECTION_DISPATCHER.SetGroup</a></td>
<td class="summary">
<p>The groups to which the FAC will report to.</p>
</td>
</tr>
</table>
<h2><a id="#(DETECTION_MANAGER)">Type <code>DETECTION_MANAGER</code></a></h2>
<table class="function_list">
<tr>
@ -239,104 +328,40 @@ If an ad-hoc report is requested, use the method <a href="DetectionManager.html#
</tr>
</table>
<h2><a id="#(FAC_REPORTING)">Type <code>FAC_REPORTING</code></a></h2>
<h2><a id="#(DETECTION_REPORTING)">Type <code>DETECTION_REPORTING</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(FAC_REPORTING).ClassName">FAC_REPORTING.ClassName</a></td>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_REPORTING).ClassName">DETECTION_REPORTING.ClassName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(FAC_REPORTING).Detection">FAC_REPORTING.Detection</a></td>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_REPORTING).Detection">DETECTION_REPORTING.Detection</a></td>
<td class="summary">
<p>The DETECTION_BASE object that is used to report the detected objects.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(FAC_REPORTING).GetDetectedItemsText">FAC_REPORTING:GetDetectedItemsText(DetectedSet)</a></td>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_REPORTING).GetDetectedItemsText">DETECTION_REPORTING:GetDetectedItemsText(DetectedSet)</a></td>
<td class="summary">
<p>Creates a string of the detected items in a <a href="Detection.html">Detection</a>.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(FAC_REPORTING).New">FAC_REPORTING:New(SetGroup, Detection)</a></td>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_REPORTING).New">DETECTION_REPORTING:New(SetGroup, Detection)</a></td>
<td class="summary">
<p>FAC_REPORTING constructor.</p>
<p>DETECTION_REPORTING constructor.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(FAC_REPORTING).ProcessDetected">FAC_REPORTING:ProcessDetected(Group, Detection)</a></td>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_REPORTING).ProcessDetected">DETECTION_REPORTING:ProcessDetected(Group, Detection)</a></td>
<td class="summary">
<p>Reports the detected items to the <a href="Set.html##(SET_GROUP)">Set#SET_GROUP</a>.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(FAC_REPORTING).SetGroup">FAC_REPORTING.SetGroup</a></td>
<td class="summary">
<p>The groups to which the FAC will report to.</p>
</td>
</tr>
</table>
<h2><a id="#(TASK_DISPATCHER)">Type <code>TASK_DISPATCHER</code></a></h2>
<table class="function_list">
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_DISPATCHER).ClassName">TASK_DISPATCHER.ClassName</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_DISPATCHER).CommandCenter">TASK_DISPATCHER.CommandCenter</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_DISPATCHER).Detection">TASK_DISPATCHER.Detection</a></td>
<td class="summary">
<p>The DETECTION_BASE object that is used to report the detected objects.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_DISPATCHER).EvaluateTaskCAS">TASK_DISPATCHER:EvaluateTaskCAS(Mission, DetectedArea)</a></td>
<td class="summary">
<p>Creates a CAS task when there are targets for it.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_DISPATCHER).EvaluateTaskSEAD">TASK_DISPATCHER:EvaluateTaskSEAD(Mission, DetectedArea)</a></td>
<td class="summary">
<p>Creates a SEAD task when there are targets for it.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_DISPATCHER).GetDetectedItemsText">TASK_DISPATCHER:GetDetectedItemsText(DetectedSet)</a></td>
<td class="summary">
<p>Creates a string of the detected items in a <a href="Detection.html">Detection</a>.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_DISPATCHER).Mission">TASK_DISPATCHER.Mission</a></td>
<td class="summary">
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_DISPATCHER).New">TASK_DISPATCHER:New(SetGroup, Detection, Mission, CommandCenter)</a></td>
<td class="summary">
<p>TASK_DISPATCHER constructor.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_DISPATCHER).ProcessDetected">TASK_DISPATCHER:ProcessDetected(Group, Detection, TaskGroup)</a></td>
<td class="summary">
<p>Assigns tasks in relation to the detected items to the <a href="Set.html##(SET_GROUP)">Set#SET_GROUP</a>.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(TASK_DISPATCHER).SetGroup">TASK_DISPATCHER.SetGroup</a></td>
<td class="name" nowrap="nowrap"><a href="##(DETECTION_REPORTING).SetGroup">DETECTION_REPORTING.SetGroup</a></td>
<td class="summary">
<p>The groups to which the FAC will report to.</p>
</td>
@ -347,6 +372,20 @@ If an ad-hoc report is requested, use the method <a href="DetectionManager.html#
<dl class="function">
<dt>
<em><a href="##(DETECTION_DISPATCHER)">#DETECTION_DISPATCHER</a></em>
<a id="DETECTION_DISPATCHER" >
<strong>DETECTION_DISPATCHER</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="##(DETECTION_MANAGER)">#DETECTION_MANAGER</a></em>
<a id="DETECTION_MANAGER" >
<strong>DETECTION_MANAGER</strong>
@ -361,9 +400,30 @@ If an ad-hoc report is requested, use the method <a href="DetectionManager.html#
<dl class="function">
<dt>
<em><a href="##(FAC_REPORTING)">#FAC_REPORTING</a></em>
<a id="FAC_REPORTING" >
<strong>FAC_REPORTING</strong>
<em><a href="##(DETECTION_REPORTING)">#DETECTION_REPORTING</a></em>
<a id="DETECTION_REPORTING" >
<strong>DETECTION_REPORTING</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<h2><a id="#(DetectionManager)" >Type <code>DetectionManager</code></a></h2>
<h2><a id="#(DETECTION_DISPATCHER)" >Type <code>DETECTION_DISPATCHER</code></a></h2>
<p>DETECTION_DISPATCHER class.</p>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(DETECTION_DISPATCHER).ClassName" >
<strong>DETECTION_DISPATCHER.ClassName</strong>
</a>
</dt>
<dd>
@ -375,9 +435,9 @@ If an ad-hoc report is requested, use the method <a href="DetectionManager.html#
<dl class="function">
<dt>
<em><a href="##(TASK_DISPATCHER)">#TASK_DISPATCHER</a></em>
<a id="TASK_DISPATCHER" >
<strong>TASK_DISPATCHER</strong>
<em><a href="Group.html##(GROUP)">Group#GROUP</a></em>
<a id="#(DETECTION_DISPATCHER).CommandCenter" >
<strong>DETECTION_DISPATCHER.CommandCenter</strong>
</a>
</dt>
<dd>
@ -386,8 +446,249 @@ If an ad-hoc report is requested, use the method <a href="DetectionManager.html#
</dd>
</dl>
<h2><a id="#(DetectionManager)" >Type <code>DetectionManager</code></a></h2>
<dl class="function">
<dt>
<em><a href="Detection.html##(DETECTION_BASE)">Detection#DETECTION_BASE</a></em>
<a id="#(DETECTION_DISPATCHER).Detection" >
<strong>DETECTION_DISPATCHER.Detection</strong>
</a>
</dt>
<dd>
<p>The DETECTION_BASE object that is used to report the detected objects.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(DETECTION_DISPATCHER).EvaluateBAI" >
<strong>DETECTION_DISPATCHER:EvaluateBAI(DetectedArea, FriendlyCoalition)</strong>
</a>
</dt>
<dd>
<p>Creates a BAI task when there are targets for it.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Detection.html##(DETECTION_AREAS.DetectedArea)">Detection#DETECTION_AREAS.DetectedArea</a> DetectedArea </em></code>: </p>
</li>
<li>
<p><code><em> FriendlyCoalition </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="Task.html##(TASK_BASE)">Task#TASK_BASE</a>:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(DETECTION_DISPATCHER).EvaluateCAS" >
<strong>DETECTION_DISPATCHER:EvaluateCAS(DetectedArea)</strong>
</a>
</dt>
<dd>
<p>Creates a CAS task when there are targets for it.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Detection.html##(DETECTION_AREAS.DetectedArea)">Detection#DETECTION_AREAS.DetectedArea</a> DetectedArea </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="Task.html##(TASK_BASE)">Task#TASK_BASE</a>:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(DETECTION_DISPATCHER).EvaluateRemoveTask" >
<strong>DETECTION_DISPATCHER:EvaluateRemoveTask(Mission, Task, DetectedArea)</strong>
</a>
</dt>
<dd>
<p>Evaluates the removal of the Task from the Mission.</p>
<p>Can only occur when the DetectedArea is Changed AND the state of the Task is "Planned".</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Mission.html##(MISSION)">Mission#MISSION</a> Mission </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="Detection.html##(DETECTION_AREAS.DetectedArea)">Detection#DETECTION_AREAS.DetectedArea</a> DetectedArea </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="Task.html##(TASK_BASE)">Task#TASK_BASE</a>:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(DETECTION_DISPATCHER).EvaluateSEAD" >
<strong>DETECTION_DISPATCHER:EvaluateSEAD(DetectedArea)</strong>
</a>
</dt>
<dd>
<p>Creates a SEAD task when there are targets for it.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Detection.html##(DETECTION_AREAS.DetectedArea)">Detection#DETECTION_AREAS.DetectedArea</a> DetectedArea </em></code>: </p>
</li>
</ul>
<h3>Return values</h3>
<ol>
<li>
<p><em><a href="Set.html##(SET_UNIT)">Set#SET_UNIT</a>:</em>
TargetSetUnit: The target set of units.</p>
</li>
<li>
<p><em>#nil:</em>
If there are no targets to be set.</p>
</li>
</ol>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Mission.html##(MISSION)">Mission#MISSION</a></em>
<a id="#(DETECTION_DISPATCHER).Mission" >
<strong>DETECTION_DISPATCHER.Mission</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(DETECTION_DISPATCHER).New" >
<strong>DETECTION_DISPATCHER:New(SetGroup, Detection, Mission, CommandCenter)</strong>
</a>
</dt>
<dd>
<p>DETECTION_DISPATCHER constructor.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Set.html##(SET_GROUP)">Set#SET_GROUP</a> SetGroup </em></code>: </p>
</li>
<li>
<p><code><em><a href="Detection.html##(DETECTION_BASE)">Detection#DETECTION_BASE</a> Detection </em></code>: </p>
</li>
<li>
<p><code><em> Mission </em></code>: </p>
</li>
<li>
<p><code><em> CommandCenter </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(DETECTION_DISPATCHER)">#DETECTION_DISPATCHER</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(DETECTION_DISPATCHER).ProcessDetected" >
<strong>DETECTION_DISPATCHER:ProcessDetected(Detection)</strong>
</a>
</dt>
<dd>
<p>Assigns tasks in relation to the detected items to the <a href="Set.html##(SET_GROUP)">Set#SET_GROUP</a>.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Detection.html##(DETECTION_AREAS)">Detection#DETECTION_AREAS</a> Detection </em></code>:
The detection created by the <a href="Detection.html##(DETECTION_AREAS)">Detection#DETECTION_AREAS</a> object.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em>#boolean:</em>
Return true if you want the task assigning to continue... false will cancel the loop.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Set.html##(SET_GROUP)">Set#SET_GROUP</a></em>
<a id="#(DETECTION_DISPATCHER).SetGroup" >
<strong>DETECTION_DISPATCHER.SetGroup</strong>
</a>
</dt>
<dd>
<p>The groups to which the FAC will report to.</p>
</dd>
</dl>
<h2><a id="#(DETECTION_MANAGER)" >Type <code>DETECTION_MANAGER</code></a></h2>
<p>DETECTION_MANAGER class.</p>
@ -675,17 +976,17 @@ self</p>
</dd>
</dl>
<h2><a id="#(FAC_REPORTING)" >Type <code>FAC_REPORTING</code></a></h2>
<h2><a id="#(DETECTION_REPORTING)" >Type <code>DETECTION_REPORTING</code></a></h2>
<p>FAC_REPORTING class.</p>
<p>DETECTION_REPORTING class.</p>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(FAC_REPORTING).ClassName" >
<strong>FAC_REPORTING.ClassName</strong>
<a id="#(DETECTION_REPORTING).ClassName" >
<strong>DETECTION_REPORTING.ClassName</strong>
</a>
</dt>
<dd>
@ -698,8 +999,8 @@ self</p>
<dt>
<em><a href="Detection.html##(DETECTION_BASE)">Detection#DETECTION_BASE</a></em>
<a id="#(FAC_REPORTING).Detection" >
<strong>FAC_REPORTING.Detection</strong>
<a id="#(DETECTION_REPORTING).Detection" >
<strong>DETECTION_REPORTING.Detection</strong>
</a>
</dt>
<dd>
@ -711,8 +1012,8 @@ self</p>
<dl class="function">
<dt>
<a id="#(FAC_REPORTING).GetDetectedItemsText" >
<strong>FAC_REPORTING:GetDetectedItemsText(DetectedSet)</strong>
<a id="#(DETECTION_REPORTING).GetDetectedItemsText" >
<strong>DETECTION_REPORTING:GetDetectedItemsText(DetectedSet)</strong>
</a>
</dt>
<dd>
@ -738,13 +1039,13 @@ self</p>
<dl class="function">
<dt>
<a id="#(FAC_REPORTING).New" >
<strong>FAC_REPORTING:New(SetGroup, Detection)</strong>
<a id="#(DETECTION_REPORTING).New" >
<strong>DETECTION_REPORTING:New(SetGroup, Detection)</strong>
</a>
</dt>
<dd>
<p>FAC_REPORTING constructor.</p>
<p>DETECTION_REPORTING constructor.</p>
<h3>Parameters</h3>
<ul>
@ -755,13 +1056,13 @@ self</p>
</li>
<li>
<p><code><em><a href="Detection.html##(DETECTION_UNITGROUPS)">Detection#DETECTION_UNITGROUPS</a> Detection </em></code>: </p>
<p><code><em><a href="Detection.html##(DETECTION_AREAS)">Detection#DETECTION_AREAS</a> Detection </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(FAC_REPORTING)">#FAC_REPORTING</a>:</em>
<p><em><a href="##(DETECTION_REPORTING)">#DETECTION_REPORTING</a>:</em>
self</p>
</dd>
@ -769,8 +1070,8 @@ self</p>
<dl class="function">
<dt>
<a id="#(FAC_REPORTING).ProcessDetected" >
<strong>FAC_REPORTING:ProcessDetected(Group, Detection)</strong>
<a id="#(DETECTION_REPORTING).ProcessDetected" >
<strong>DETECTION_REPORTING:ProcessDetected(Group, Detection)</strong>
</a>
</dt>
<dd>
@ -787,7 +1088,7 @@ The <a href="Group.html">Group</a> object to where the report needs to go.</p>
</li>
<li>
<p><code><em><a href="Detection.html##(DETECTION_UNITGROUPS)">Detection#DETECTION_UNITGROUPS</a> Detection </em></code>:
<p><code><em><a href="Detection.html##(DETECTION_AREAS)">Detection#DETECTION_AREAS</a> Detection </em></code>:
The detection created by the <a href="Detection.html##(DETECTION_BASE)">Detection#DETECTION_BASE</a> object.</p>
</li>
@ -803,252 +1104,8 @@ Return true if you want the reporting to continue... false will cancel the repor
<dt>
<em><a href="Set.html##(SET_GROUP)">Set#SET_GROUP</a></em>
<a id="#(FAC_REPORTING).SetGroup" >
<strong>FAC_REPORTING.SetGroup</strong>
</a>
</dt>
<dd>
<p>The groups to which the FAC will report to.</p>
</dd>
</dl>
<h2><a id="#(TASK_DISPATCHER)" >Type <code>TASK_DISPATCHER</code></a></h2>
<p>TASK_DISPATCHER class.</p>
<h3>Field(s)</h3>
<dl class="function">
<dt>
<em>#string</em>
<a id="#(TASK_DISPATCHER).ClassName" >
<strong>TASK_DISPATCHER.ClassName</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Group.html##(GROUP)">Group#GROUP</a></em>
<a id="#(TASK_DISPATCHER).CommandCenter" >
<strong>TASK_DISPATCHER.CommandCenter</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Detection.html##(DETECTION_BASE)">Detection#DETECTION_BASE</a></em>
<a id="#(TASK_DISPATCHER).Detection" >
<strong>TASK_DISPATCHER.Detection</strong>
</a>
</dt>
<dd>
<p>The DETECTION_BASE object that is used to report the detected objects.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(TASK_DISPATCHER).EvaluateTaskCAS" >
<strong>TASK_DISPATCHER:EvaluateTaskCAS(Mission, DetectedArea)</strong>
</a>
</dt>
<dd>
<p>Creates a CAS task when there are targets for it.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Mission.html##(MISSION)">Mission#MISSION</a> Mission </em></code>: </p>
</li>
<li>
<p><code><em><a href="Detection.html##(DETECTION_UNITGROUPS.DetectedArea)">Detection#DETECTION_UNITGROUPS.DetectedArea</a> DetectedArea </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em>#string:</em>
Message explaining which task was added.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(TASK_DISPATCHER).EvaluateTaskSEAD" >
<strong>TASK_DISPATCHER:EvaluateTaskSEAD(Mission, DetectedArea)</strong>
</a>
</dt>
<dd>
<p>Creates a SEAD task when there are targets for it.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Mission.html##(MISSION)">Mission#MISSION</a> Mission </em></code>: </p>
</li>
<li>
<p><code><em><a href="Detection.html##(DETECTION_UNITGROUPS.DetectedArea)">Detection#DETECTION_UNITGROUPS.DetectedArea</a> DetectedArea </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em>#string:</em>
Message explaining which task was added.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(TASK_DISPATCHER).GetDetectedItemsText" >
<strong>TASK_DISPATCHER:GetDetectedItemsText(DetectedSet)</strong>
</a>
</dt>
<dd>
<p>Creates a string of the detected items in a <a href="Detection.html">Detection</a>.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Set.html##(SET_UNIT)">Set#SET_UNIT</a> DetectedSet </em></code>:
The detected Set created by the <a href="Detection.html##(DETECTION_BASE)">Detection#DETECTION_BASE</a> object.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em>#string:</em>
The text</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Mission.html##(MISSION)">Mission#MISSION</a></em>
<a id="#(TASK_DISPATCHER).Mission" >
<strong>TASK_DISPATCHER.Mission</strong>
</a>
</dt>
<dd>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(TASK_DISPATCHER).New" >
<strong>TASK_DISPATCHER:New(SetGroup, Detection, Mission, CommandCenter)</strong>
</a>
</dt>
<dd>
<p>TASK_DISPATCHER constructor.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Set.html##(SET_GROUP)">Set#SET_GROUP</a> SetGroup </em></code>: </p>
</li>
<li>
<p><code><em><a href="Detection.html##(DETECTION_BASE)">Detection#DETECTION_BASE</a> Detection </em></code>: </p>
</li>
<li>
<p><code><em> Mission </em></code>: </p>
</li>
<li>
<p><code><em> CommandCenter </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(TASK_DISPATCHER)">#TASK_DISPATCHER</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(TASK_DISPATCHER).ProcessDetected" >
<strong>TASK_DISPATCHER:ProcessDetected(Group, Detection, TaskGroup)</strong>
</a>
</dt>
<dd>
<p>Assigns tasks in relation to the detected items to the <a href="Set.html##(SET_GROUP)">Set#SET_GROUP</a>.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Group.html##(GROUP)">Group#GROUP</a> Group </em></code>:
The <a href="Group.html">Group</a> object to where the report needs to go.</p>
</li>
<li>
<p><code><em><a href="Detection.html##(DETECTION_UNITGROUPS)">Detection#DETECTION_UNITGROUPS</a> Detection </em></code>:
The detection created by the <a href="Detection.html##(DETECTION_UNITGROUPS)">Detection#DETECTION_UNITGROUPS</a> object.</p>
</li>
<li>
<p><code><em> TaskGroup </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em>#boolean:</em>
Return true if you want the task assigning to continue... false will cancel the loop.</p>
</dd>
</dl>
<dl class="function">
<dt>
<em><a href="Set.html##(SET_GROUP)">Set#SET_GROUP</a></em>
<a id="#(TASK_DISPATCHER).SetGroup" >
<strong>TASK_DISPATCHER.SetGroup</strong>
<a id="#(DETECTION_REPORTING).SetGroup" >
<strong>DETECTION_REPORTING.SetGroup</strong>
</a>
</dt>
<dd>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>
@ -156,6 +157,12 @@
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnBirthForUnit">EVENT:OnBirthForUnit(EventDCSUnitName, EventFunction, EventSelf)</a></td>
<td class="summary">
<p>Set a new listener for an S<em>EVENT</em>BIRTH event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnBirthRemove">EVENT:OnBirthRemove(EventSelf)</a></td>
<td class="summary">
<p>Stop listening to S<em>EVENT</em>BIRTH event.</p>
</td>
</tr>
<tr>
@ -174,6 +181,12 @@
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnCrashForUnit">EVENT:OnCrashForUnit(EventDCSUnitName, EventFunction, EventSelf)</a></td>
<td class="summary">
<p>Set a new listener for an S<em>EVENT</em>CRASH event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnCrashRemove">EVENT:OnCrashRemove(EventSelf)</a></td>
<td class="summary">
<p>Stop listening to S<em>EVENT</em>CRASH event.</p>
</td>
</tr>
<tr>
@ -192,6 +205,12 @@
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnDeadForUnit">EVENT:OnDeadForUnit(EventDCSUnitName, EventFunction, EventSelf)</a></td>
<td class="summary">
<p>Set a new listener for an S<em>EVENT</em>DEAD event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnDeadRemove">EVENT:OnDeadRemove(EventSelf)</a></td>
<td class="summary">
<p>Stop listening to S<em>EVENT</em>DEAD event.</p>
</td>
</tr>
<tr>
@ -204,12 +223,24 @@
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnEngineShutDownForUnit">EVENT:OnEngineShutDownForUnit(EventDCSUnitName, EventFunction, EventSelf)</a></td>
<td class="summary">
<p>Set a new listener for an S<em>EVENT</em>ENGINE_SHUTDOWN event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnEngineShutDownRemove">EVENT:OnEngineShutDownRemove(EventSelf)</a></td>
<td class="summary">
<p>Stop listening to S<em>EVENT</em>ENGINE_SHUTDOWN event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnEngineStartUpForUnit">EVENT:OnEngineStartUpForUnit(EventDCSUnitName, EventFunction, EventSelf)</a></td>
<td class="summary">
<p>Set a new listener for an S<em>EVENT</em>ENGINE_STARTUP event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnEngineStartUpRemove">EVENT:OnEngineStartUpRemove(EventSelf)</a></td>
<td class="summary">
<p>Stop listening to S<em>EVENT</em>ENGINE_STARTUP event.</p>
</td>
</tr>
<tr>
@ -240,18 +271,30 @@
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnHitForUnit">EVENT:OnHitForUnit(EventDCSUnitName, EventFunction, EventSelf)</a></td>
<td class="summary">
<p>Set a new listener for an S<em>EVENT</em>HIT event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnHitRemove">EVENT:OnHitRemove(EventSelf)</a></td>
<td class="summary">
<p>Stop listening to S<em>EVENT</em>HIT event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnLandForTemplate">EVENT:OnLandForTemplate(EventTemplate, EventFunction, EventSelf)</a></td>
<td class="summary">
<p>Create an OnDead event handler for a group</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnLandForUnit">EVENT:OnLandForUnit(EventDCSUnitName, EventFunction, EventSelf)</a></td>
<td class="summary">
<p>Set a new listener for an S<em>EVENT</em>LAND event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnLandRemove">EVENT:OnLandRemove(EventSelf)</a></td>
<td class="summary">
<p>Stop listening to S<em>EVENT</em>LAND event.</p>
</td>
</tr>
<tr>
@ -264,42 +307,78 @@
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnPilotDeadForUnit">EVENT:OnPilotDeadForUnit(EventDCSUnitName, EventFunction, EventSelf)</a></td>
<td class="summary">
<p>Set a new listener for an S<em>EVENT</em>PILOT_DEAD event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnPilotDeadRemove">EVENT:OnPilotDeadRemove(EventSelf)</a></td>
<td class="summary">
<p>Stop listening to S<em>EVENT</em>PILOT_DEAD event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnPlayerEnterRemove">EVENT:OnPlayerEnterRemove(EventSelf)</a></td>
<td class="summary">
<p>Stop listening to S<em>EVENT</em>PLAYER<em>ENTER</em>UNIT event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnPlayerEnterUnit">EVENT:OnPlayerEnterUnit(EventFunction, EventSelf)</a></td>
<td class="summary">
<p>Set a new listener for an S<em>EVENT</em>PLAYER<em>ENTER</em>UNIT event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnPlayerLeaveRemove">EVENT:OnPlayerLeaveRemove(EventSelf)</a></td>
<td class="summary">
<p>Stop listening to S<em>EVENT</em>PLAYER<em>LEAVE</em>UNIT event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnPlayerLeaveUnit">EVENT:OnPlayerLeaveUnit(EventFunction, EventSelf)</a></td>
<td class="summary">
<p>Set a new listener for an S<em>EVENT</em>PLAYER<em>LEAVE</em>UNIT event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnShot">EVENT:OnShot(EventFunction, EventSelf)</a></td>
<td class="summary">
<p>Set a new listener for an S<em>EVENT</em>SHOT event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnShotForUnit">EVENT:OnShotForUnit(EventDCSUnitName, EventFunction, EventSelf)</a></td>
<td class="summary">
<p>Set a new listener for an S<em>EVENT</em>SHOT event for a unit.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnShotRemove">EVENT:OnShotRemove(EventSelf)</a></td>
<td class="summary">
<p>Stop listening to S<em>EVENT</em>SHOT event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnTakeOffForTemplate">EVENT:OnTakeOffForTemplate(EventTemplate, EventFunction, EventSelf)</a></td>
<td class="summary">
<p>Create an OnDead event handler for a group</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnTakeOffForUnit">EVENT:OnTakeOffForUnit(EventDCSUnitName, EventFunction, EventSelf)</a></td>
<td class="summary">
<p>Set a new listener for an S<em>EVENT</em>TAKEOFF event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).OnTakeOffRemove">EVENT:OnTakeOffRemove(EventSelf)</a></td>
<td class="summary">
<p>Stop listening to S<em>EVENT</em>TAKEOFF event.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(EVENT).Remove">EVENT:Remove(EventSelf, EventID)</a></td>
<td class="summary">
<p>Removes an Events entry</p>
</td>
</tr>
<tr>
@ -678,6 +757,32 @@ The function to be called when the event occurs for the unit.</p>
<p><em><a href="##(EVENT)">#EVENT</a>:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(EVENT).OnBirthRemove" >
<strong>EVENT:OnBirthRemove(EventSelf)</strong>
</a>
</dt>
<dd>
<p>Stop listening to S<em>EVENT</em>BIRTH event.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Base.html##(BASE)">Base#BASE</a> EventSelf </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(EVENT)">#EVENT</a>:</em></p>
</dd>
</dl>
<dl class="function">
@ -791,6 +896,32 @@ The self instance of the class for which the event is.</p>
<p><em><a href="##(EVENT)">#EVENT</a>:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(EVENT).OnCrashRemove" >
<strong>EVENT:OnCrashRemove(EventSelf)</strong>
</a>
</dt>
<dd>
<p>Stop listening to S<em>EVENT</em>CRASH event.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Base.html##(BASE)">Base#BASE</a> EventSelf </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(EVENT)">#EVENT</a>:</em></p>
</dd>
</dl>
<dl class="function">
@ -904,6 +1035,32 @@ The self instance of the class for which the event is.</p>
<p><em><a href="##(EVENT)">#EVENT</a>:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(EVENT).OnDeadRemove" >
<strong>EVENT:OnDeadRemove(EventSelf)</strong>
</a>
</dt>
<dd>
<p>Stop listening to S<em>EVENT</em>DEAD event.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Base.html##(BASE)">Base#BASE</a> EventSelf </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(EVENT)">#EVENT</a>:</em></p>
</dd>
</dl>
<dl class="function">
@ -980,6 +1137,32 @@ The self instance of the class for which the event is.</p>
<p><em><a href="##(EVENT)">#EVENT</a>:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(EVENT).OnEngineShutDownRemove" >
<strong>EVENT:OnEngineShutDownRemove(EventSelf)</strong>
</a>
</dt>
<dd>
<p>Stop listening to S<em>EVENT</em>ENGINE_SHUTDOWN event.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Base.html##(BASE)">Base#BASE</a> EventSelf </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(EVENT)">#EVENT</a>:</em></p>
</dd>
</dl>
<dl class="function">
@ -1018,6 +1201,32 @@ The self instance of the class for which the event is.</p>
<p><em><a href="##(EVENT)">#EVENT</a>:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(EVENT).OnEngineStartUpRemove" >
<strong>EVENT:OnEngineStartUpRemove(EventSelf)</strong>
</a>
</dt>
<dd>
<p>Stop listening to S<em>EVENT</em>ENGINE_STARTUP event.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Base.html##(BASE)">Base#BASE</a> EventSelf </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(EVENT)">#EVENT</a>:</em></p>
</dd>
</dl>
<dl class="function">
@ -1218,31 +1427,19 @@ The self instance of the class for which the event is.</p>
<dl class="function">
<dt>
<a id="#(EVENT).OnLandForTemplate" >
<strong>EVENT:OnLandForTemplate(EventTemplate, EventFunction, EventSelf)</strong>
<a id="#(EVENT).OnHitRemove" >
<strong>EVENT:OnHitRemove(EventSelf)</strong>
</a>
</dt>
<dd>
<p>Create an OnDead event handler for a group</p>
<p>Stop listening to S<em>EVENT</em>HIT event.</p>
<h3>Parameters</h3>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em>#table EventTemplate </em></code>: </p>
</li>
<li>
<p><code><em>#function EventFunction </em></code>:
The function to be called when the event occurs for the unit.</p>
</li>
<li>
<p><code><em> EventSelf </em></code>:
The self instance of the class for which the event is.</p>
<p><code><em><a href="Base.html##(BASE)">Base#BASE</a> EventSelf </em></code>: </p>
</li>
</ul>
@ -1256,6 +1453,37 @@ The self instance of the class for which the event is.</p>
<dl class="function">
<dt>
<a id="#(EVENT).OnLandForTemplate" >
<strong>EVENT:OnLandForTemplate(EventTemplate, EventFunction, EventSelf)</strong>
</a>
</dt>
<dd>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em> EventTemplate </em></code>: </p>
</li>
<li>
<p><code><em> EventFunction </em></code>: </p>
</li>
<li>
<p><code><em> EventSelf </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(EVENT).OnLandForUnit" >
<strong>EVENT:OnLandForUnit(EventDCSUnitName, EventFunction, EventSelf)</strong>
</a>
@ -1289,6 +1517,32 @@ The self instance of the class for which the event is.</p>
<p><em><a href="##(EVENT)">#EVENT</a>:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(EVENT).OnLandRemove" >
<strong>EVENT:OnLandRemove(EventSelf)</strong>
</a>
</dt>
<dd>
<p>Stop listening to S<em>EVENT</em>LAND event.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Base.html##(BASE)">Base#BASE</a> EventSelf </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(EVENT)">#EVENT</a>:</em></p>
</dd>
</dl>
<dl class="function">
@ -1359,6 +1613,58 @@ The self instance of the class for which the event is.</p>
<p><em><a href="##(EVENT)">#EVENT</a>:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(EVENT).OnPilotDeadRemove" >
<strong>EVENT:OnPilotDeadRemove(EventSelf)</strong>
</a>
</dt>
<dd>
<p>Stop listening to S<em>EVENT</em>PILOT_DEAD event.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Base.html##(BASE)">Base#BASE</a> EventSelf </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(EVENT)">#EVENT</a>:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(EVENT).OnPlayerEnterRemove" >
<strong>EVENT:OnPlayerEnterRemove(EventSelf)</strong>
</a>
</dt>
<dd>
<p>Stop listening to S<em>EVENT</em>PLAYER<em>ENTER</em>UNIT event.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Base.html##(BASE)">Base#BASE</a> EventSelf </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(EVENT)">#EVENT</a>:</em></p>
</dd>
</dl>
<dl class="function">
@ -1397,26 +1703,19 @@ The self instance of the class for which the event is.</p>
<dl class="function">
<dt>
<a id="#(EVENT).OnPlayerLeaveUnit" >
<strong>EVENT:OnPlayerLeaveUnit(EventFunction, EventSelf)</strong>
<a id="#(EVENT).OnPlayerLeaveRemove" >
<strong>EVENT:OnPlayerLeaveRemove(EventSelf)</strong>
</a>
</dt>
<dd>
<p>Set a new listener for an S<em>EVENT</em>PLAYER<em>LEAVE</em>UNIT event.</p>
<p>Stop listening to S<em>EVENT</em>PLAYER<em>LEAVE</em>UNIT event.</p>
<h3>Parameters</h3>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em>#function EventFunction </em></code>:
The function to be called when the event occurs for the unit.</p>
</li>
<li>
<p><code><em><a href="Base.html##(BASE)">Base#BASE</a> EventSelf </em></code>:
The self instance of the class for which the event is.</p>
<p><code><em><a href="Base.html##(BASE)">Base#BASE</a> EventSelf </em></code>: </p>
</li>
</ul>
@ -1430,34 +1729,53 @@ The self instance of the class for which the event is.</p>
<dl class="function">
<dt>
<a id="#(EVENT).OnPlayerLeaveUnit" >
<strong>EVENT:OnPlayerLeaveUnit(EventFunction, EventSelf)</strong>
</a>
</dt>
<dd>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em> EventFunction </em></code>: </p>
</li>
<li>
<p><code><em> EventSelf </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(EVENT).OnShot" >
<strong>EVENT:OnShot(EventFunction, EventSelf)</strong>
</a>
</dt>
<dd>
<p>Set a new listener for an S<em>EVENT</em>SHOT event.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#function EventFunction </em></code>:
The function to be called when the event occurs for the unit.</p>
<p><code><em> EventFunction </em></code>: </p>
</li>
<li>
<p><code><em><a href="Base.html##(BASE)">Base#BASE</a> EventSelf </em></code>:
The self instance of the class for which the event is.</p>
<p><code><em> EventSelf </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(EVENT)">#EVENT</a>:</em></p>
</dd>
</dl>
<dl class="function">
@ -1501,31 +1819,19 @@ The self instance of the class for which the event is.</p>
<dl class="function">
<dt>
<a id="#(EVENT).OnTakeOffForTemplate" >
<strong>EVENT:OnTakeOffForTemplate(EventTemplate, EventFunction, EventSelf)</strong>
<a id="#(EVENT).OnShotRemove" >
<strong>EVENT:OnShotRemove(EventSelf)</strong>
</a>
</dt>
<dd>
<p>Create an OnDead event handler for a group</p>
<p>Stop listening to S<em>EVENT</em>SHOT event.</p>
<h3>Parameters</h3>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em>#table EventTemplate </em></code>: </p>
</li>
<li>
<p><code><em>#function EventFunction </em></code>:
The function to be called when the event occurs for the unit.</p>
</li>
<li>
<p><code><em> EventSelf </em></code>:
The self instance of the class for which the event is.</p>
<p><code><em><a href="Base.html##(BASE)">Base#BASE</a> EventSelf </em></code>: </p>
</li>
</ul>
@ -1539,6 +1845,37 @@ The self instance of the class for which the event is.</p>
<dl class="function">
<dt>
<a id="#(EVENT).OnTakeOffForTemplate" >
<strong>EVENT:OnTakeOffForTemplate(EventTemplate, EventFunction, EventSelf)</strong>
</a>
</dt>
<dd>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em> EventTemplate </em></code>: </p>
</li>
<li>
<p><code><em> EventFunction </em></code>: </p>
</li>
<li>
<p><code><em> EventSelf </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(EVENT).OnTakeOffForUnit" >
<strong>EVENT:OnTakeOffForUnit(EventDCSUnitName, EventFunction, EventSelf)</strong>
</a>
@ -1572,6 +1909,64 @@ The self instance of the class for which the event is.</p>
<p><em><a href="##(EVENT)">#EVENT</a>:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(EVENT).OnTakeOffRemove" >
<strong>EVENT:OnTakeOffRemove(EventSelf)</strong>
</a>
</dt>
<dd>
<p>Stop listening to S<em>EVENT</em>TAKEOFF event.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Base.html##(BASE)">Base#BASE</a> EventSelf </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(EVENT)">#EVENT</a>:</em></p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(EVENT).Remove" >
<strong>EVENT:Remove(EventSelf, EventID)</strong>
</a>
</dt>
<dd>
<p>Removes an Events entry</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Base.html##(BASE)">Base#BASE</a> EventSelf </em></code>:
The self instance of the class for which the event is.</p>
</li>
<li>
<p><code><em><a href="DCSWorld.html##(world.event)">DCSWorld#world.event</a> EventID </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(EVENT.Events)">#EVENT.Events</a>:</em></p>
</dd>
</dl>
<dl class="function">

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>
@ -377,12 +378,6 @@ Use the following Zone validation methods on the group:</p>
<td class="name" nowrap="nowrap"><a href="##(GROUP).GetMaxVelocity">GROUP:GetMaxVelocity()</a></td>
<td class="summary">
<p>Returns the current maximum velocity of the group.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(GROUP).GetMessage">GROUP:GetMessage(Message, Duration)</a></td>
<td class="summary">
<p>Returns a message for a coalition or a client.</p>
</td>
</tr>
<tr>
@ -503,42 +498,6 @@ Use the following Zone validation methods on the group:</p>
<td class="name" nowrap="nowrap"><a href="##(GROUP).IsShip">GROUP:IsShip()</a></td>
<td class="summary">
<p>Returns if the DCS Group contains Ships.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(GROUP).Message">GROUP:Message(Message, Duration)</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="##(GROUP).MessageToAll">GROUP:MessageToAll(Message, Duration)</a></td>
<td class="summary">
<p>Send a message to all coalitions.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(GROUP).MessageToBlue">GROUP:MessageToBlue(Message, Duration)</a></td>
<td class="summary">
<p>Send a message to the blue coalition.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(GROUP).MessageToClient">GROUP:MessageToClient(Message, Duration, Client)</a></td>
<td class="summary">
<p>Send a message to a client.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(GROUP).MessageToGroup">GROUP:MessageToGroup(Message, Duration, MessageGroup, MsgGroup)</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="##(GROUP).MessageToRed">GROUP:MessageToRed(Message, Duration)</a></td>
<td class="summary">
<p>Send a message to the red coalition.</p>
</td>
</tr>
<tr>
@ -983,39 +942,6 @@ Maximum height found.</p>
<p><em>#number:</em>
Maximum velocity found.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(GROUP).GetMessage" >
<strong>GROUP:GetMessage(Message, Duration)</strong>
</a>
</dt>
<dd>
<p>Returns a message for a coalition or a client.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string Message </em></code>:
The message text</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Duration)">DCSTypes#Duration</a> Duration </em></code>:
The duration of the message.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="Message.html##(MESSAGE)">Message#MESSAGE</a>:</em></p>
</dd>
</dl>
<dl class="function">
@ -1428,209 +1354,6 @@ true if DCS Group contains Ships.</p>
<dl class="function">
<dt>
<a id="#(GROUP).Message" >
<strong>GROUP:Message(Message, Duration)</strong>
</a>
</dt>
<dd>
<p>Send a message to the players in the <a href="Group.html">Group</a>.</p>
<p>The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string Message </em></code>:
The message text</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Duration)">DCSTypes#Duration</a> Duration </em></code>:
The duration of the message.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(GROUP).MessageToAll" >
<strong>GROUP:MessageToAll(Message, Duration)</strong>
</a>
</dt>
<dd>
<p>Send a message to all coalitions.</p>
<p>The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string Message </em></code>:
The message text</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Duration)">DCSTypes#Duration</a> Duration </em></code>:
The duration of the message.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(GROUP).MessageToBlue" >
<strong>GROUP:MessageToBlue(Message, Duration)</strong>
</a>
</dt>
<dd>
<p>Send a message to the blue coalition.</p>
<p>The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string Message </em></code>:
The message text</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Duration)">DCSTypes#Duration</a> Duration </em></code>:
The duration of the message.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(GROUP).MessageToClient" >
<strong>GROUP:MessageToClient(Message, Duration, Client)</strong>
</a>
</dt>
<dd>
<p>Send a message to a client.</p>
<p>The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string Message </em></code>:
The message text</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Duration)">DCSTypes#Duration</a> Duration </em></code>:
The duration of the message.</p>
</li>
<li>
<p><code><em><a href="Client.html##(CLIENT)">Client#CLIENT</a> Client </em></code>:
The client object receiving the message.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(GROUP).MessageToGroup" >
<strong>GROUP:MessageToGroup(Message, Duration, MessageGroup, MsgGroup)</strong>
</a>
</dt>
<dd>
<p>Send a message to a <a href="Group.html">Group</a>.</p>
<p>The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string Message </em></code>:
The message text</p>
</li>
<li>
<p><code><em><a href="DCSTypes.html##(Duration)">DCSTypes#Duration</a> Duration </em></code>:
The duration of the message.</p>
</li>
<li>
<p><code><em><a href="Group.html##(GROUP)">Group#GROUP</a> MessageGroup </em></code>:
The GROUP object receiving the message.</p>
</li>
<li>
<p><code><em> MsgGroup </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(GROUP).MessageToRed" >
<strong>GROUP:MessageToRed(Message, Duration)</strong>
</a>
</dt>
<dd>
<p>Send a message to the red coalition.</p>
<p>The message will appear in the message area. The message will begin with the callsign of the group and the type of the first unit sending the message.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em>#string Message </em></code>:
The message text</p>
</li>
<li>
<p><code><em><a href="DCSTYpes.html##(Duration)">DCSTYpes#Duration</a> Duration </em></code>:
The duration of the message.</p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(GROUP).Register" >
<strong>GROUP:Register(GroupName)</strong>
</a>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>
@ -142,12 +143,6 @@ A <a href="CLIENT.html">CLIENT</a> needs to be registered within the <a href="MI
<td class="name" nowrap="nowrap"><a href="##(MISSION).AddTask">MISSION:AddTask(Task)</a></td>
<td class="summary">
<p>Register a <a href="Task.html">Task</a> to be completed within the <a href="Mission.html">Mission</a>.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(MISSION).AssignTaskToGroup">MISSION.AssignTaskToGroup(MenuParam)</a></td>
<td class="summary">
</td>
</tr>
<tr>
@ -166,12 +161,6 @@ A <a href="CLIENT.html">CLIENT</a> needs to be registered within the <a href="MI
<td class="name" nowrap="nowrap"><a href="##(MISSION).Completed">MISSION:Completed()</a></td>
<td class="summary">
<p>Set a Mission to completed.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(MISSION).CreateTaskMenus">MISSION:CreateTaskMenus(TaskGroup)</a></td>
<td class="summary">
<p>Fill mission menu for the Group.</p>
</td>
</tr>
<tr>
@ -193,7 +182,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).GetMissionMenu">MISSION:GetMissionMenu()</a></td>
<td class="name" nowrap="nowrap"><a href="##(MISSION).GetMissionMenu">MISSION:GetMissionMenu(TaskGroup)</a></td>
<td class="summary">
<p>Gets the mission menu for the coalition.</p>
</td>
@ -202,6 +191,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).GetName">MISSION:GetName()</a></td>
<td class="summary">
<p>Gets the mission name.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(MISSION).GetNextTaskID">MISSION:GetNextTaskID(Task)</a></td>
<td class="summary">
<p>Return the next <a href="Task.html">Task</a> ID to be completed within the <a href="Mission.html">Mission</a>. </p>
</td>
</tr>
<tr>
@ -211,9 +206,9 @@ 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).GetTask">MISSION:GetTask(TaskNumber)</a></td>
<td class="name" nowrap="nowrap"><a href="##(MISSION).GetTask">MISSION.GetTask(TaskIndex, TaskID, self, TaskName)</a></td>
<td class="summary">
<p>Get the TASK identified by the TaskNumber from the Mission.</p>
</td>
</tr>
<tr>
@ -346,6 +341,18 @@ 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).RemoveTask">MISSION:RemoveTask(Task)</a></td>
<td class="summary">
<p>Removes a <a href="Task.html">Task</a> to be completed within the <a href="Mission.html">Mission</a>.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(MISSION).RemoveTaskMenu">MISSION:RemoveTaskMenu(Task)</a></td>
<td class="summary">
<p>Removes a Task menu.</p>
</td>
</tr>
<tr>
@ -373,9 +380,15 @@ 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).SetMissionMenu">MISSION:SetMissionMenu()</a></td>
<td class="name" nowrap="nowrap"><a href="##(MISSION).SetAssignedMenu">MISSION:SetAssignedMenu(Task, MenuText)</a></td>
<td class="summary">
<p>Sets the mission menu for the coalition.</p>
<p>Sets the Assigned Task menu.</p>
</td>
</tr>
<tr>
<td class="name" nowrap="nowrap"><a href="##(MISSION).SetPlannedMenu">MISSION:SetPlannedMenu()</a></td>
<td class="summary">
<p>Sets the Planned Task menu.</p>
</td>
</tr>
<tr>
@ -776,27 +789,6 @@ is the <a href="Task.html">Task</a> object.</p>
<p><em><a href="Task.html##(TASK_BASE)">Task#TASK_BASE</a>:</em>
The task added.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(MISSION).AssignTaskToGroup" >
<strong>MISSION.AssignTaskToGroup(MenuParam)</strong>
</a>
</dt>
<dd>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> MenuParam </em></code>: </p>
</li>
</ul>
</dd>
</dl>
<dl class="function">
@ -842,32 +834,6 @@ self</p>
<p>Set a Mission to completed.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(MISSION).CreateTaskMenus" >
<strong>MISSION:CreateTaskMenus(TaskGroup)</strong>
</a>
</dt>
<dd>
<p>Fill mission menu for the Group.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em> TaskGroup </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(MISSION)">#MISSION</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
@ -942,13 +908,21 @@ local BomberClient = Mission:FindClient( "Bomber" )</code></pre>
<dt>
<a id="#(MISSION).GetMissionMenu" >
<strong>MISSION:GetMissionMenu()</strong>
<strong>MISSION:GetMissionMenu(TaskGroup)</strong>
</a>
</dt>
<dd>
<p>Gets the mission menu for the coalition.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Group.html##(GROUP)">Group#GROUP</a> TaskGroup </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="Menu.html##(MENU_COALITION)">Menu#MENU_COALITION</a>:</em>
@ -977,6 +951,33 @@ self</p>
<dl class="function">
<dt>
<a id="#(MISSION).GetNextTaskID" >
<strong>MISSION:GetNextTaskID(Task)</strong>
</a>
</dt>
<dd>
<p>Return the next <a href="Task.html">Task</a> ID to be completed within the <a href="Mission.html">Mission</a>. </p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Task.html##(TASK_BASE)">Task#TASK_BASE</a> Task </em></code>:
is the <a href="Task.html">Task</a> object.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="Task.html##(TASK_BASE)">Task#TASK_BASE</a>:</em>
The task added.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(MISSION).GetScoring" >
<strong>MISSION:GetScoring()</strong>
</a>
@ -996,21 +997,56 @@ Scoring</p>
<dt>
<a id="#(MISSION).GetTask" >
<strong>MISSION:GetTask(TaskNumber)</strong>
<strong>MISSION.GetTask(TaskIndex, TaskID, self, TaskName)</strong>
</a>
</dt>
<dd>
<p>Get the TASK identified by the TaskNumber from the Mission.</p>
<p>This function is useful in GoalFunctions.</p>
<h3>Parameter</h3>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em> TaskNumber </em></code>: </p>
<p><code><em>#string TaskIndex </em></code>:
is the Index of the <a href="Task.html">Task</a> within the <a href="Mission.html">Mission</a>.</p>
</li>
<li>
<p><code><em>#number TaskID </em></code>:
is the ID of the <a href="Task.html">Task</a> within the <a href="Mission.html">Mission</a>.</p>
</li>
<li>
<p><code><em> self </em></code>: </p>
</li>
<li>
<p><code><em> TaskName </em></code>: </p>
</li>
</ul>
<h3>Return values</h3>
<ol>
<li>
<p><em><a href="Task.html##(TASK_BASE)">Task#TASK_BASE</a>:</em>
The Task</p>
</li>
<li>
<p><em>#nil:</em>
Returns nil if no task was found.</p>
</li>
</ol>
</dd>
</dl>
<dl class="function">
@ -1371,6 +1407,63 @@ self</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(MISSION).RemoveTask" >
<strong>MISSION:RemoveTask(Task)</strong>
</a>
</dt>
<dd>
<p>Removes a <a href="Task.html">Task</a> to be completed within the <a href="Mission.html">Mission</a>.</p>
<p>Note that there can be multiple <a href="Task.html">Task</a>s registered to be completed.
Each Task can be set a certain Goals. The Mission will not be completed until all Goals are reached.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Task.html##(TASK_BASE)">Task#TASK_BASE</a> Task </em></code>:
is the <a href="Task.html">Task</a> object.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em>#nil:</em>
The cleaned Task reference.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(MISSION).RemoveTaskMenu" >
<strong>MISSION:RemoveTaskMenu(Task)</strong>
</a>
</dt>
<dd>
<p>Removes a Task menu.</p>
<h3>Parameter</h3>
<ul>
<li>
<p><code><em><a href="Task.html##(TASK_BASE)">Task#TASK_BASE</a> Task </em></code>: </p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(MISSION)">#MISSION</a>:</em>
self</p>
</dd>
</dl>
<dl class="function">
@ -1433,14 +1526,28 @@ self</p>
<dl class="function">
<dt>
<a id="#(MISSION).SetMissionMenu" >
<strong>MISSION:SetMissionMenu()</strong>
<a id="#(MISSION).SetAssignedMenu" >
<strong>MISSION:SetAssignedMenu(Task, MenuText)</strong>
</a>
</dt>
<dd>
<p>Sets the mission menu for the coalition.</p>
<p>Sets the Assigned Task menu.</p>
<h3>Parameters</h3>
<ul>
<li>
<p><code><em><a href="Task.html##(TASK_BASE)">Task#TASK_BASE</a> Task </em></code>: </p>
</li>
<li>
<p><code><em>#string MenuText </em></code>:
The menu text.</p>
</li>
</ul>
<h3>Return value</h3>
<p><em><a href="##(MISSION)">#MISSION</a>:</em>
@ -1451,6 +1558,19 @@ self</p>
<dl class="function">
<dt>
<a id="#(MISSION).SetPlannedMenu" >
<strong>MISSION:SetPlannedMenu()</strong>
</a>
</dt>
<dd>
<p>Sets the Planned Task menu.</p>
</dd>
</dl>
<dl class="function">
<dt>
<a id="#(MISSION).StatusToClients" >
<strong>MISSION:StatusToClients()</strong>
</a>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

File diff suppressed because it is too large Load Diff

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

View File

@ -37,6 +37,7 @@
<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="DEPLOYTASK.html">DEPLOYTASK</a></li>
<li><a href="DESTROYBASETASK.html">DESTROYBASETASK</a></li>
<li><a href="DESTROYGROUPSTASK.html">DESTROYGROUPSTASK</a></li>
@ -62,8 +63,9 @@
<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_CAS.html">Process_CAS</a></li>
<li><a href="Process_SEAD.html">Process_SEAD</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_Smoke.html">Process_Smoke</a></li>
<li><a href="ROUTETASK.html">ROUTETASK</a></li>
<li><a href="STAGE.html">STAGE</a></li>
<li><a href="Scheduler.html">Scheduler</a></li>
@ -74,7 +76,6 @@
<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.html">Task</a></li>
<li><a href="Task_Assign.html">Task_Assign</a></li>
<li><a href="Task_CAS.html">Task_CAS</a></li>

Some files were not shown because too many files have changed in this diff Show More