diff --git a/Moose Development/Moose/Airbase.lua b/Moose Development/Moose/Airbase.lua
index 970e8ddfa..ec1e47e21 100644
--- a/Moose Development/Moose/Airbase.lua
+++ b/Moose Development/Moose/Airbase.lua
@@ -41,9 +41,9 @@
-- @module Airbase
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Message" )
+
+
+
--- The AIRBASE class
-- @type AIRBASE
diff --git a/Moose Development/Moose/Base.lua b/Moose Development/Moose/Base.lua
index 47045deed..1d91baca7 100644
--- a/Moose Development/Moose/Base.lua
+++ b/Moose Development/Moose/Base.lua
@@ -53,7 +53,7 @@
-- @module Base
-- @author FlightControl
-Include.File( "Routines" )
+
local _TraceOn = true
local _TraceLevel = 1
diff --git a/Moose Development/Moose/Cargo.lua b/Moose Development/Moose/Cargo.lua
index ea54dde1b..33c4461e1 100644
--- a/Moose Development/Moose/Cargo.lua
+++ b/Moose Development/Moose/Cargo.lua
@@ -1,10 +1,10 @@
--- CARGO Classes
-- @module CARGO
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Message" )
-Include.File( "Scheduler" )
+
+
+
+
--- Clients are those Groups defined within the Mission Editor that have the skillset defined as "Client" or "Player".
diff --git a/Moose Development/Moose/CleanUp.lua b/Moose Development/Moose/CleanUp.lua
index 936318ef1..71554252b 100644
--- a/Moose Development/Moose/CleanUp.lua
+++ b/Moose Development/Moose/CleanUp.lua
@@ -2,11 +2,11 @@
-- @module CleanUp
-- @author Flightcontrol
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Mission" )
-Include.File( "Client" )
-Include.File( "Task" )
+
+
+
+
+
--- The CLEANUP class.
-- @type CLEANUP
@@ -58,7 +58,6 @@ function CLEANUP:_DestroyGroup( GroupObject, CleanUpGroupName )
self:F( { GroupObject, CleanUpGroupName } )
if GroupObject then -- and GroupObject:isExist() then
- --MESSAGE:New( "Destroy Group " .. CleanUpGroupName, CleanUpGroupName, 1, CleanUpGroupName ):ToAll()
trigger.action.deactivateGroup(GroupObject)
self:T( { "GroupObject Destroyed", GroupObject } )
end
@@ -72,7 +71,6 @@ function CLEANUP:_DestroyUnit( CleanUpUnit, CleanUpUnitName )
self:F( { CleanUpUnit, CleanUpUnitName } )
if CleanUpUnit then
- --MESSAGE:New( "Destroy " .. CleanUpUnitName, CleanUpUnitName, 1, CleanUpUnitName ):ToAll()
local CleanUpGroup = Unit.getGroup(CleanUpUnit)
-- TODO Client bug in 1.5.3
if CleanUpGroup and CleanUpGroup:isExist() then
@@ -142,7 +140,6 @@ function CLEANUP:_EventCrash( Event )
self:F( { Event } )
--TODO: This stuff is not working due to a DCS bug. Burning units cannot be destroyed.
- --MESSAGE:New( "Crash ", "Crash", 10, "Crash" ):ToAll()
-- self:T("before getGroup")
-- local _grp = Unit.getGroup(event.initiator)-- Identify the group that fired
-- self:T("after getGroup")
@@ -277,7 +274,6 @@ function CLEANUP:_CleanUpScheduler()
--self:T( CleanUpUnitVec2 )
local CleanUpSurfaceType = land.getSurfaceType(CleanUpUnitVec2)
--self:T( CleanUpSurfaceType )
- --MESSAGE:New( "Surface " .. CleanUpUnitName .. " = " .. CleanUpSurfaceTypeText[CleanUpSurfaceType], CleanUpUnitName, 10, CleanUpUnitName ):ToAll()
if CleanUpUnit and CleanUpUnit:getLife() <= CleanUpUnit:getLife0() * 0.95 then
if CleanUpSurfaceType == land.SurfaceType.RUNWAY then
@@ -309,7 +305,6 @@ function CLEANUP:_CleanUpScheduler()
else
UnitData.CleanUpTime = timer.getTime()
UnitData.CleanUpMoved = true
- --MESSAGE:New( "Moved " .. CleanUpUnitName, CleanUpUnitName, 10, CleanUpUnitName ):ToAll()
end
end
diff --git a/Moose Development/Moose/Client.lua b/Moose Development/Moose/Client.lua
index 4326d11cf..690d4ef8e 100644
--- a/Moose Development/Moose/Client.lua
+++ b/Moose Development/Moose/Client.lua
@@ -37,10 +37,10 @@
-- @module Client
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Cargo" )
-Include.File( "Message" )
+
+
+
+
--- The CLIENT class
@@ -462,16 +462,16 @@ function CLIENT:Message( Message, MessageDuration, MessageId, MessageCategory, M
else
self.Messages[MessageId].MessageInterval = MessageInterval
end
- MESSAGE:New( Message, MessageCategory, MessageDuration, MessageId ):ToClient( self )
+ MESSAGE:New( Message, MessageDuration, MessageCategory ):ToClient( self )
else
if self:GetClientGroupDCSUnit() and not self:GetClientGroupDCSUnit():inAir() then
if timer.getTime() - self.Messages[MessageId].MessageTime >= self.Messages[MessageId].MessageDuration + 10 then
- MESSAGE:New( Message, MessageCategory, MessageDuration, MessageId ):ToClient( self )
+ MESSAGE:New( Message, MessageDuration , MessageCategory):ToClient( self )
self.Messages[MessageId].MessageTime = timer.getTime()
end
else
if timer.getTime() - self.Messages[MessageId].MessageTime >= self.Messages[MessageId].MessageDuration + self.Messages[MessageId].MessageInterval then
- MESSAGE:New( Message, MessageCategory, MessageDuration, MessageId ):ToClient( self )
+ MESSAGE:New( Message, MessageDuration, MessageCategory ):ToClient( self )
self.Messages[MessageId].MessageTime = timer.getTime()
end
end
diff --git a/Moose Development/Moose/Database.lua b/Moose Development/Moose/Database.lua
index 95a89355a..38d6891b4 100644
--- a/Moose Development/Moose/Database.lua
+++ b/Moose Development/Moose/Database.lua
@@ -32,15 +32,15 @@
-- @module Database
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Menu" )
-Include.File( "Group" )
-Include.File( "Static" )
-Include.File( "Unit" )
-Include.File( "Event" )
-Include.File( "Client" )
-Include.File( "Scheduler" )
+
+
+
+
+
+
+
+
+
--- DATABASE class
diff --git a/Moose Development/Moose/DeployTask.lua b/Moose Development/Moose/DeployTask.lua
index 4bd0cf65c..5a346b3f9 100644
--- a/Moose Development/Moose/DeployTask.lua
+++ b/Moose Development/Moose/DeployTask.lua
@@ -1,7 +1,7 @@
--- A DEPLOYTASK orchestrates the deployment of CARGO within a specific landing zone.
-- @module DEPLOYTASK
-Include.File( "Task" )
+
--- A DeployTask
-- @type DEPLOYTASK
diff --git a/Moose Development/Moose/DestroyBaseTask.lua b/Moose Development/Moose/DestroyBaseTask.lua
index 3cef73cd5..b057605ba 100644
--- a/Moose Development/Moose/DestroyBaseTask.lua
+++ b/Moose Development/Moose/DestroyBaseTask.lua
@@ -4,7 +4,7 @@
-- @see DESTROYUNITTYPESTASK
-- @see DESTROY_RADARS_TASK
-Include.File("Task")
+
--- The DESTROYBASETASK class
-- @type DESTROYBASETASK
diff --git a/Moose Development/Moose/DestroyGroupsTask.lua b/Moose Development/Moose/DestroyGroupsTask.lua
index 38cd98fb6..d98d9e710 100644
--- a/Moose Development/Moose/DestroyGroupsTask.lua
+++ b/Moose Development/Moose/DestroyGroupsTask.lua
@@ -1,7 +1,7 @@
--- DESTROYGROUPSTASK
-- @module DESTROYGROUPSTASK
-Include.File("DestroyBaseTask")
+
--- The DESTROYGROUPSTASK class
-- @type
diff --git a/Moose Development/Moose/DestroyRadarsTask.lua b/Moose Development/Moose/DestroyRadarsTask.lua
index 347ad4181..3b1ac5167 100644
--- a/Moose Development/Moose/DestroyRadarsTask.lua
+++ b/Moose Development/Moose/DestroyRadarsTask.lua
@@ -1,7 +1,7 @@
--- Task class to destroy radar installations.
-- @module DESTROYRADARSTASK
-Include.File("DestroyBaseTask")
+
--- The DESTROYRADARS class
-- @type
diff --git a/Moose Development/Moose/DestroyUnitTypesTask.lua b/Moose Development/Moose/DestroyUnitTypesTask.lua
index a4001ccd4..c8683fc6c 100644
--- a/Moose Development/Moose/DestroyUnitTypesTask.lua
+++ b/Moose Development/Moose/DestroyUnitTypesTask.lua
@@ -1,7 +1,7 @@
--- Set TASK to destroy certain unit types.
-- @module DESTROYUNITTYPESTASK
-Include.File("DestroyBaseTask")
+
--- The DESTROYUNITTYPESTASK class
-- @type
diff --git a/Moose Development/Moose/Escort.lua b/Moose Development/Moose/Escort.lua
index 6fc0d5a49..355a576fb 100644
--- a/Moose Development/Moose/Escort.lua
+++ b/Moose Development/Moose/Escort.lua
@@ -102,11 +102,11 @@
-- @module Escort
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Database" )
-Include.File( "Group" )
-Include.File( "Zone" )
+
+
+
+
+
---
-- @type ESCORT
diff --git a/Moose Development/Moose/Event.lua b/Moose Development/Moose/Event.lua
index 75cfca6ff..e58e8a2ec 100644
--- a/Moose Development/Moose/Event.lua
+++ b/Moose Development/Moose/Event.lua
@@ -2,9 +2,6 @@
-- @module Event
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-
--- The EVENT structure
-- @type EVENT
-- @field #EVENT.Events Events
diff --git a/Moose Development/Moose/GoHomeTask.lua b/Moose Development/Moose/GoHomeTask.lua
index 4f302f5a1..35461ea34 100644
--- a/Moose Development/Moose/GoHomeTask.lua
+++ b/Moose Development/Moose/GoHomeTask.lua
@@ -1,8 +1,6 @@
--- A GOHOMETASK orchestrates the travel back to the home base, which is a specific zone defined within the ME.
-- @module GOHOMETASK
-Include.File("Task")
-
--- The GOHOMETASK class
-- @type
GOHOMETASK = {
diff --git a/Moose Development/Moose/Group.lua b/Moose Development/Moose/Group.lua
index a63d742a5..4778c31c5 100644
--- a/Moose Development/Moose/Group.lua
+++ b/Moose Development/Moose/Group.lua
@@ -146,11 +146,6 @@
-- @module Group
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Message" )
-Include.File( "Unit" )
-
--- The GROUP class
-- @type GROUP
-- @extends Base#BASE
@@ -2672,7 +2667,7 @@ function GROUP:Message( Message, Duration )
local DCSGroup = self:GetDCSGroup()
if DCSGroup then
- return MESSAGE:New( Message, self:GetCallsign() .. " (" .. self:GetTypeName() .. ")", Duration, self:GetClassNameAndID() )
+ return MESSAGE:New( Message, Duration, self:GetCallsign() .. " (" .. self:GetTypeName() .. ")" )
end
return nil
diff --git a/Moose Development/Moose/Menu.lua b/Moose Development/Moose/Menu.lua
index e5bdfa778..cdad61304 100644
--- a/Moose Development/Moose/Menu.lua
+++ b/Moose Development/Moose/Menu.lua
@@ -1,9 +1,6 @@
--- Encapsulation of DCS World Menu system in a set of MENU classes.
-- @module Menu
-Include.File( "Routines" )
-Include.File( "Base" )
-
--- The MENU class
-- @type MENU
-- @extends Base#BASE
diff --git a/Moose Development/Moose/Message.lua b/Moose Development/Moose/Message.lua
index 423d23e2c..b55a48c6f 100644
--- a/Moose Development/Moose/Message.lua
+++ b/Moose Development/Moose/Message.lua
@@ -1,17 +1,30 @@
---- Message System to display Messages for Clients and Coalitions or All.
--- Messages are grouped on the display panel per Category to improve readability for the players.
+--- This module contains the MESSAGE class.
+--
+-- 1) @{Message#MESSAGE} class, extends @{Base#BASE}
+-- =================================================
+-- Message System to display Messages to Clients, Coalitions or All.
-- Messages are shown on the display panel for an amount of seconds, and will then disappear.
--- Messages are identified by an ID. The messages with the same ID belonging to the same category will be overwritten if they were still being displayed on the display panel.
--- Messages are created with MESSAGE:@{New}().
--- Messages are sent to Clients with MESSAGE:@{ToClient}().
--- Messages are sent to Coalitions with MESSAGE:@{ToCoalition}().
--- Messages are sent to All Players with MESSAGE:@{ToAll}().
+-- Messages can contain a category which is indicating the category of the message.
+--
+-- 1.1) MESSAGE construction methods
+-- ---------------------------------
+-- Messages are created with @{Message#MESSAGE.New}. Note that when the MESSAGE object is created, no message is sent yet.
+-- To send messages, you need to use the To functions.
+--
+-- 1.2) Send messages with MESSAGE To methods
+-- ------------------------------------------
+-- Messages are sent to:
+--
+-- * Clients with @{Message#MESSAGE.ToClient}.
+-- * Coalitions with @{Message#MESSAGE.ToCoalition}.
+-- * All Players with @{Message#MESSAGE.ToAll}.
+--
-- @module Message
-
-Include.File( "Base" )
+-- @author FlightControl
--- The MESSAGE class
-- @type MESSAGE
+-- @extends Base#BASE
MESSAGE = {
ClassName = "MESSAGE",
MessageCategory = 0,
@@ -22,9 +35,8 @@ MESSAGE = {
--- Creates a new MESSAGE object. Note that these MESSAGE objects are not yet displayed on the display panel. You must use the functions @{ToClient} or @{ToCoalition} or @{ToAll} to send these Messages to the respective recipients.
-- @param self
-- @param #string MessageText is the text of the Message.
--- @param #string MessageCategory is a string expressing the Category of the Message. Messages are grouped on the display panel per Category to improve readability.
-- @param #number MessageDuration is a number in seconds of how long the MESSAGE should be shown on the display panel.
--- @param #string MessageID is a string expressing the ID of the Message.
+-- @param #string MessageCategory (optional) is a string expressing the "category" of the Message. The category will be shown as the first text in the message followed by a ": ".
-- @return #MESSAGE
-- @usage
-- -- Create a series of new Messages.
@@ -32,15 +44,15 @@ MESSAGE = {
-- -- MessageRED is meant to be sent to the RED players only, for 10 seconds, and is classified as "End of Mission", with ID "Win".
-- -- MessageClient1 is meant to be sent to a Client, for 25 seconds, and is classified as "Score", with ID "Score".
-- -- MessageClient1 is meant to be sent to a Client, for 25 seconds, and is classified as "Score", with ID "Score".
--- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" )
--- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" )
--- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" )
--- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" )
-function MESSAGE:New( MessageText, MessageCategory, MessageDuration, MessageID )
+-- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", 25, "End of Mission" )
+-- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", 25, "Penalty" )
+-- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", 25, "Score" )
+-- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", 25, "Score")
+function MESSAGE:New( MessageText, MessageDuration, MessageCategory )
local self = BASE:Inherit( self, BASE:New() )
- self:F( { MessageText, MessageCategory, MessageDuration, MessageID } )
+ self:F( { MessageText, MessageDuration, MessageCategory } )
- -- When no messagecategory is given, we don't show it as a title...
+ -- When no MessageCategory is given, we don't show it as a title...
if MessageCategory and MessageCategory ~= "" then
self.MessageCategory = MessageCategory .. ": "
else
@@ -48,7 +60,6 @@ function MESSAGE:New( MessageText, MessageCategory, MessageDuration, MessageID )
end
self.MessageDuration = MessageDuration
- self.MessageID = MessageID
self.MessageTime = timer.getTime()
self.MessageText = MessageText
@@ -174,77 +185,77 @@ end
---- The MESSAGEQUEUE class
--- @type MESSAGEQUEUE
-MESSAGEQUEUE = {
- ClientGroups = {},
- CoalitionSides = {}
-}
-
-function MESSAGEQUEUE:New( RefreshInterval )
- local self = BASE:Inherit( self, BASE:New() )
- self:F( { RefreshInterval } )
-
- self.RefreshInterval = RefreshInterval
-
- --self.DisplayFunction = routines.scheduleFunction( self._DisplayMessages, { self }, 0, RefreshInterval )
- self.DisplayFunction = SCHEDULER:New( self, self._DisplayMessages, {}, 0, RefreshInterval )
-
- return self
-end
-
---- This function is called automatically by the MESSAGEQUEUE scheduler.
-function MESSAGEQUEUE:_DisplayMessages()
-
- -- First we display all messages that a coalition needs to receive... Also those who are not in a client (CA module clients...).
- for CoalitionSideID, CoalitionSideData in pairs( self.CoalitionSides ) do
- for MessageID, MessageData in pairs( CoalitionSideData.Messages ) do
- if MessageData.MessageSent == false then
- --trigger.action.outTextForCoalition( CoalitionSideID, MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration )
- MessageData.MessageSent = true
- end
- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime()
- if MessageTimeLeft <= 0 then
- MessageData = nil
- end
- end
- end
-
- -- Then we send the messages for each individual client, but also to be included are those Coalition messages for the Clients who belong to a coalition.
- -- Because the Client messages will overwrite the Coalition messages (for that Client).
- for ClientGroupName, ClientGroupData in pairs( self.ClientGroups ) do
- for MessageID, MessageData in pairs( ClientGroupData.Messages ) do
- if MessageData.MessageGroup == false then
- trigger.action.outTextForGroup( Group.getByName(ClientGroupName):getID(), MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration )
- MessageData.MessageGroup = true
- end
- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime()
- if MessageTimeLeft <= 0 then
- MessageData = nil
- end
- end
-
- -- Now check if the Client also has messages that belong to the Coalition of the Client...
- for CoalitionSideID, CoalitionSideData in pairs( self.CoalitionSides ) do
- for MessageID, MessageData in pairs( CoalitionSideData.Messages ) do
- local CoalitionGroup = Group.getByName( ClientGroupName )
- if CoalitionGroup and CoalitionGroup:getCoalition() == CoalitionSideID then
- if MessageData.MessageCoalition == false then
- trigger.action.outTextForGroup( Group.getByName(ClientGroupName):getID(), MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration )
- MessageData.MessageCoalition = true
- end
- end
- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime()
- if MessageTimeLeft <= 0 then
- MessageData = nil
- end
- end
- end
- end
-
- return true
-end
-
---- The _MessageQueue object is created when the MESSAGE class module is loaded.
---_MessageQueue = MESSAGEQUEUE:New( 0.5 )
-
+----- The MESSAGEQUEUE class
+---- @type MESSAGEQUEUE
+--MESSAGEQUEUE = {
+-- ClientGroups = {},
+-- CoalitionSides = {}
+--}
+--
+--function MESSAGEQUEUE:New( RefreshInterval )
+-- local self = BASE:Inherit( self, BASE:New() )
+-- self:F( { RefreshInterval } )
+--
+-- self.RefreshInterval = RefreshInterval
+--
+-- --self.DisplayFunction = routines.scheduleFunction( self._DisplayMessages, { self }, 0, RefreshInterval )
+-- self.DisplayFunction = SCHEDULER:New( self, self._DisplayMessages, {}, 0, RefreshInterval )
+--
+-- return self
+--end
+--
+----- This function is called automatically by the MESSAGEQUEUE scheduler.
+--function MESSAGEQUEUE:_DisplayMessages()
+--
+-- -- First we display all messages that a coalition needs to receive... Also those who are not in a client (CA module clients...).
+-- for CoalitionSideID, CoalitionSideData in pairs( self.CoalitionSides ) do
+-- for MessageID, MessageData in pairs( CoalitionSideData.Messages ) do
+-- if MessageData.MessageSent == false then
+-- --trigger.action.outTextForCoalition( CoalitionSideID, MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration )
+-- MessageData.MessageSent = true
+-- end
+-- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime()
+-- if MessageTimeLeft <= 0 then
+-- MessageData = nil
+-- end
+-- end
+-- end
+--
+-- -- Then we send the messages for each individual client, but also to be included are those Coalition messages for the Clients who belong to a coalition.
+-- -- Because the Client messages will overwrite the Coalition messages (for that Client).
+-- for ClientGroupName, ClientGroupData in pairs( self.ClientGroups ) do
+-- for MessageID, MessageData in pairs( ClientGroupData.Messages ) do
+-- if MessageData.MessageGroup == false then
+-- trigger.action.outTextForGroup( Group.getByName(ClientGroupName):getID(), MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration )
+-- MessageData.MessageGroup = true
+-- end
+-- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime()
+-- if MessageTimeLeft <= 0 then
+-- MessageData = nil
+-- end
+-- end
+--
+-- -- Now check if the Client also has messages that belong to the Coalition of the Client...
+-- for CoalitionSideID, CoalitionSideData in pairs( self.CoalitionSides ) do
+-- for MessageID, MessageData in pairs( CoalitionSideData.Messages ) do
+-- local CoalitionGroup = Group.getByName( ClientGroupName )
+-- if CoalitionGroup and CoalitionGroup:getCoalition() == CoalitionSideID then
+-- if MessageData.MessageCoalition == false then
+-- trigger.action.outTextForGroup( Group.getByName(ClientGroupName):getID(), MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration )
+-- MessageData.MessageCoalition = true
+-- end
+-- end
+-- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime()
+-- if MessageTimeLeft <= 0 then
+-- MessageData = nil
+-- end
+-- end
+-- end
+-- end
+--
+-- return true
+--end
+--
+----- The _MessageQueue object is created when the MESSAGE class module is loaded.
+----_MessageQueue = MESSAGEQUEUE:New( 0.5 )
+--
diff --git a/Moose Development/Moose/MissileTrainer.lua b/Moose Development/Moose/MissileTrainer.lua
index d7773c502..57520d508 100644
--- a/Moose Development/Moose/MissileTrainer.lua
+++ b/Moose Development/Moose/MissileTrainer.lua
@@ -70,9 +70,6 @@
-- @author FlightControl
-Include.File( "Client" )
-Include.File( "Scheduler" )
-
--- The MISSILETRAINER class
-- @type MISSILETRAINER
-- @extends Base#BASE
@@ -217,9 +214,9 @@ function MISSILETRAINER:InitMessagesOnOff( MessagesOnOff )
self.MessagesOnOff = MessagesOnOff
if self.MessagesOnOff == true then
- MESSAGE:New( "Messages ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Messages ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Messages OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Messages OFF", 15, "Menu" ):ToAll()
end
return self
@@ -234,9 +231,9 @@ function MISSILETRAINER:InitTrackingToAll( TrackingToAll )
self.TrackingToAll = TrackingToAll
if self.TrackingToAll == true then
- MESSAGE:New( "Missile tracking to all players ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Missile tracking to all players ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Missile tracking to all players OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Missile tracking to all players OFF", 15, "Menu" ):ToAll()
end
return self
@@ -251,9 +248,9 @@ function MISSILETRAINER:InitTrackingOnOff( TrackingOnOff )
self.TrackingOnOff = TrackingOnOff
if self.TrackingOnOff == true then
- MESSAGE:New( "Missile tracking ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Missile tracking ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Missile tracking OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Missile tracking OFF", 15, "Menu" ):ToAll()
end
return self
@@ -272,7 +269,7 @@ function MISSILETRAINER:InitTrackingFrequency( TrackingFrequency )
self.TrackingFrequency = 0.5
end
if self.TrackingFrequency then
- MESSAGE:New( "Missile tracking frequency is " .. self.TrackingFrequency .. " seconds.", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Missile tracking frequency is " .. self.TrackingFrequency .. " seconds.", 15, "Menu" ):ToAll()
end
return self
@@ -287,9 +284,9 @@ function MISSILETRAINER:InitAlertsToAll( AlertsToAll )
self.AlertsToAll = AlertsToAll
if self.AlertsToAll == true then
- MESSAGE:New( "Alerts to all players ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Alerts to all players ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Alerts to all players OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Alerts to all players OFF", 15, "Menu" ):ToAll()
end
return self
@@ -304,9 +301,9 @@ function MISSILETRAINER:InitAlertsHitsOnOff( AlertsHitsOnOff )
self.AlertsHitsOnOff = AlertsHitsOnOff
if self.AlertsHitsOnOff == true then
- MESSAGE:New( "Alerts Hits ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Alerts Hits ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Alerts Hits OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Alerts Hits OFF", 15, "Menu" ):ToAll()
end
return self
@@ -321,9 +318,9 @@ function MISSILETRAINER:InitAlertsLaunchesOnOff( AlertsLaunchesOnOff )
self.AlertsLaunchesOnOff = AlertsLaunchesOnOff
if self.AlertsLaunchesOnOff == true then
- MESSAGE:New( "Alerts Launches ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Alerts Launches ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Alerts Launches OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Alerts Launches OFF", 15, "Menu" ):ToAll()
end
return self
@@ -338,9 +335,9 @@ function MISSILETRAINER:InitRangeOnOff( DetailsRangeOnOff )
self.DetailsRangeOnOff = DetailsRangeOnOff
if self.DetailsRangeOnOff == true then
- MESSAGE:New( "Range display ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Range display ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Range display OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Range display OFF", 15, "Menu" ):ToAll()
end
return self
@@ -355,9 +352,9 @@ function MISSILETRAINER:InitBearingOnOff( DetailsBearingOnOff )
self.DetailsBearingOnOff = DetailsBearingOnOff
if self.DetailsBearingOnOff == true then
- MESSAGE:New( "Bearing display OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Bearing display OFF", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Bearing display OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Bearing display OFF", 15, "Menu" ):ToAll()
end
return self
@@ -372,9 +369,9 @@ function MISSILETRAINER:InitMenusOnOff( MenusOnOff )
self.MenusOnOff = MenusOnOff
if self.MenusOnOff == true then
- MESSAGE:New( "Menus are ENABLED (only when a player rejoins a slot)", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Menus are ENABLED (only when a player rejoins a slot)", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Menus are DISABLED", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Menus are DISABLED", 15, "Menu" ):ToAll()
end
return self
@@ -425,7 +422,7 @@ function MISSILETRAINER._MenuMessages( MenuParameters )
if MenuParameters.Distance ~= nil then
self.Distance = MenuParameters.Distance
- MESSAGE:New( "Hit detection distance set to " .. self.Distance .. " meters", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Hit detection distance set to " .. self.Distance .. " meters", 15, "Menu" ):ToAll()
end
end
@@ -461,7 +458,7 @@ function MISSILETRAINER:_EventShot( Event )
string.format( "%s launched a %s",
TrainerSourceUnit:GetTypeName(),
TrainerWeaponName
- ) .. self:_AddRange( Client, TrainerWeapon ) .. self:_AddBearing( Client, TrainerWeapon ),"Launch Alert", 5, "ID" )
+ ) .. self:_AddRange( Client, TrainerWeapon ) .. self:_AddBearing( Client, TrainerWeapon ), 5, "Launch Alert" )
if self.AlertsToAll then
Message:ToAll()
@@ -576,7 +573,7 @@ function MISSILETRAINER:_TrackMissiles()
TrainerWeapon:getTypeName(),
TrainerSourceUnit:GetTypeName(),
TrainerTargetUnit:GetPlayerName()
- ),"Hit Alert", 15, "ID" )
+ ), 15, "Hit Alert" )
if self.AlertsToAll == true then
Message:ToAll()
@@ -597,7 +594,7 @@ function MISSILETRAINER:_TrackMissiles()
string.format( "%s launched by %s self destructed!",
TrainerWeaponTypeName,
TrainerSourceUnit:GetTypeName()
- ),"Tracking", 5, "ID" )
+ ), 5, "Tracking" )
if self.AlertsToAll == true then
Message:ToAll()
@@ -671,7 +668,7 @@ function MISSILETRAINER:_TrackMissiles()
-- Once the Player Client and the Other Player Client tracking messages are prepared, show them.
if ClientData.MessageToClient ~= "" or ClientData.MessageToAll ~= "" then
- local Message = MESSAGE:New( ClientData.MessageToClient .. ClientData.MessageToAll, "Tracking", 1, "ID" ):ToClient( Client )
+ local Message = MESSAGE:New( ClientData.MessageToClient .. ClientData.MessageToAll, 1, "Tracking" ):ToClient( Client )
end
end
end
diff --git a/Moose Development/Moose/Mission.lua b/Moose Development/Moose/Mission.lua
index 764f26425..e67271d5c 100644
--- a/Moose Development/Moose/Mission.lua
+++ b/Moose Development/Moose/Mission.lua
@@ -2,11 +2,6 @@
-- A @{CLIENT} needs to be registered within the @{MISSION} through the function @{AddClient}. A @{TASK} needs to be registered within the @{MISSION} through the function @{AddTask}.
-- @module Mission
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Client" )
-Include.File( "Task" )
-
--- The MISSION class
-- @type MISSION
-- @extends Base#BASE
@@ -191,7 +186,7 @@ function MISSION:ReportToAll()
for TaskID, TaskData in pairs( Tasks ) do
TaskText = TaskText .. " - Task " .. TaskID .. ": " .. TaskData.Name .. ": " .. TaskData:GetGoalProgress() .. "\n"
end
- MESSAGE:New( self.MissionCoalition .. ' "' .. self.Name .. '": ' .. self.MissionStatus .. ' ( ' .. self.MissionPriority .. ' mission )' .. AlivePlayers .. "\n" .. TaskText:gsub("\n$",""), "Mission Command: Mission Report", 10, self.Name .. '/Status'):ToAll()
+ MESSAGE:New( self.MissionCoalition .. ' "' .. self.Name .. '": ' .. self.MissionStatus .. ' ( ' .. self.MissionPriority .. ' mission )' .. AlivePlayers .. "\n" .. TaskText:gsub("\n$",""), 10, "Mission Command: Mission Report" ):ToAll()
end
@@ -650,7 +645,7 @@ function MISSIONSCHEDULER:TimeShow()
self.TimeIntervalCount = self.TimeIntervalCount + 1
if self.TimeIntervalCount >= self.TimeTriggerShow then
local TimeMsg = string.format("%00d", ( self.TimeSeconds / 60 ) - ( timer.getTime() / 60 )) .. ' minutes left until mission reload.'
- MESSAGE:New( TimeMsg, "Mission time", self.TimeShow, '/TimeMsg' ):ToAll()
+ MESSAGE:New( TimeMsg, self.TimeShow, "Mission time" ):ToAll()
self.TimeIntervalCount = 0
end
end
diff --git a/Moose Development/Moose/Moose.lua b/Moose Development/Moose/Moose.lua
index 123f51481..5221d8f73 100644
--- a/Moose Development/Moose/Moose.lua
+++ b/Moose Development/Moose/Moose.lua
@@ -2,8 +2,73 @@
Include.File( "Routines" )
Include.File( "Base" )
-Include.File( "Database" )
+Include.File( "Scheduler" )
Include.File( "Event" )
+Include.File( "Menu" )
+Include.File( "Group" )
+Include.File( "Unit" )
+Include.File( "Zone" )
+Include.File( "Client" )
+Include.File( "Static" )
+Include.File( "Database" )
+Include.File( "Set" )
+Include.File( "Point" )
+Include.File( "Moose" )
+Include.File( "Scoring" )
+Include.File( "Cargo" )
+Include.File( "Message" )
+Include.File( "Stage" )
+Include.File( "Task" )
+Include.File( "GoHomeTask" )
+Include.File( "DestroyBaseTask" )
+Include.File( "DestroyGroupsTask" )
+Include.File( "DestroyRadarsTask" )
+Include.File( "DestroyUnitTypesTask" )
+Include.File( "PickupTask" )
+Include.File( "DeployTask" )
+Include.File( "NoTask" )
+Include.File( "RouteTask" )
+Include.File( "Mission" )
+Include.File( "CleanUp" )
+Include.File( "Spawn" )
+Include.File( "Movement" )
+Include.File( "Sead" )
+Include.File( "Escort" )
+Include.File( "MissileTrainer" )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-- The order of the declarations is important here. Don't touch it.
diff --git a/Moose Development/Moose/Movement.lua b/Moose Development/Moose/Movement.lua
index 2b7bb7bee..9ea15f0ae 100644
--- a/Moose Development/Moose/Movement.lua
+++ b/Moose Development/Moose/Movement.lua
@@ -5,8 +5,6 @@
-- on defined intervals (currently every minute).
-- @module MOVEMENT
-Include.File( "Routines" )
-
--- the MOVEMENT class
-- @type
MOVEMENT = {
diff --git a/Moose Development/Moose/NoTask.lua b/Moose Development/Moose/NoTask.lua
index 016ba955e..f3fa13554 100644
--- a/Moose Development/Moose/NoTask.lua
+++ b/Moose Development/Moose/NoTask.lua
@@ -1,8 +1,6 @@
--- A NOTASK is a dummy activity... But it will show a Mission Briefing...
-- @module NOTASK
-Include.File("Task")
-
--- The NOTASK class
-- @type
NOTASK = {
diff --git a/Moose Development/Moose/PickupTask.lua b/Moose Development/Moose/PickupTask.lua
index 7cbec30a6..84593c751 100644
--- a/Moose Development/Moose/PickupTask.lua
+++ b/Moose Development/Moose/PickupTask.lua
@@ -2,9 +2,6 @@
-- @module PICKUPTASK
-- @parent TASK
-Include.File("Task")
-Include.File("Cargo")
-
--- The PICKUPTASK class
-- @type
PICKUPTASK = {
diff --git a/Moose Development/Moose/Point.lua b/Moose Development/Moose/Point.lua
index e0dfa6cdb..f45175397 100644
--- a/Moose Development/Moose/Point.lua
+++ b/Moose Development/Moose/Point.lua
@@ -25,10 +25,6 @@
-- @module Point
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Point" )
-
--- The POINT_VEC3 class
-- @type POINT_VEC3
-- @extends Base#BASE
diff --git a/Moose Development/Moose/Routines.lua b/Moose Development/Moose/Routines.lua
index 58abae93f..5235f218b 100644
--- a/Moose Development/Moose/Routines.lua
+++ b/Moose Development/Moose/Routines.lua
@@ -2,10 +2,6 @@
-- @module routines
-- @author Flightcontrol
---Include.File( "Trace" )
---Include.File( "Message" )
-
-
env.setErrorMessageBoxEnabled(false)
--- Extract of MIST functions.
@@ -2310,19 +2306,19 @@ end
function MessageToAll( MsgText, MsgTime, MsgName )
--trace.f()
- MESSAGE:New( MsgText, "Message", MsgTime, MsgName ):ToCoalition( coalition.side.RED ):ToCoalition( coalition.side.BLUE )
+ MESSAGE:New( MsgText, MsgTime, "Message" ):ToCoalition( coalition.side.RED ):ToCoalition( coalition.side.BLUE )
end
function MessageToRed( MsgText, MsgTime, MsgName )
--trace.f()
- MESSAGE:New( MsgText, "To Red Coalition", MsgTime, MsgName ):ToCoalition( coalition.side.RED )
+ MESSAGE:New( MsgText, MsgTime, "To Red Coalition" ):ToCoalition( coalition.side.RED )
end
function MessageToBlue( MsgText, MsgTime, MsgName )
--trace.f()
- MESSAGE:New( MsgText, "To Blue Coalition", MsgTime, MsgName ):ToCoalition( coalition.side.RED )
+ MESSAGE:New( MsgText, MsgTime, "To Blue Coalition" ):ToCoalition( coalition.side.RED )
end
function getCarrierHeight( CarrierGroup )
diff --git a/Moose Development/Moose/Scheduler.lua b/Moose Development/Moose/Scheduler.lua
index 259933c68..ad45956f6 100644
--- a/Moose Development/Moose/Scheduler.lua
+++ b/Moose Development/Moose/Scheduler.lua
@@ -20,10 +20,6 @@
-- @module Scheduler
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-
-
--- The SCHEDULER class
-- @type SCHEDULER
-- @extends Base#BASE
diff --git a/Moose Development/Moose/Scoring.lua b/Moose Development/Moose/Scoring.lua
index 5d2a9dc15..f853a4bb4 100644
--- a/Moose Development/Moose/Scoring.lua
+++ b/Moose Development/Moose/Scoring.lua
@@ -7,13 +7,6 @@
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Menu" )
-Include.File( "Group" )
-Include.File( "Event" )
-
-
--- The Scoring class
-- @type SCORING
-- @field Players A collection of the current players that have joined the game.
@@ -176,7 +169,7 @@ function SCORING:_EventOnDeadOrCrash( Event )
MESSAGE:New( "Player '" .. PlayerName .. "' killed a friendly " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " ..
PlayerData.Kill[TargetCategory][TargetType].PenaltyKill .. " times. Penalty: -" .. PlayerData.Kill[TargetCategory][TargetType].Penalty ..
". Score Total:" .. PlayerData.Score - PlayerData.Penalty,
- "", 5, "/PENALTY" .. PlayerName .. "/" .. InitUnitName ):ToAll()
+ 5 ):ToAll()
self:ScoreCSV( PlayerName, "KILL_PENALTY", 1, -125, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType )
else
PlayerData.Score = PlayerData.Score + 10
@@ -185,7 +178,7 @@ function SCORING:_EventOnDeadOrCrash( Event )
MESSAGE:New( "Player '" .. PlayerName .. "' killed an enemy " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " ..
PlayerData.Kill[TargetCategory][TargetType].ScoreKill .. " times. Score: " .. PlayerData.Kill[TargetCategory][TargetType].Score ..
". Score Total:" .. PlayerData.Score - PlayerData.Penalty,
- "", 5, "/SCORE" .. PlayerName .. "/" .. InitUnitName ):ToAll()
+ 5 ):ToAll()
self:ScoreCSV( PlayerName, "KILL_SCORE", 1, 10, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType )
end
end
@@ -236,9 +229,7 @@ function SCORING:_AddPlayerFromUnit( UnitData )
self.Players[PlayerName].PenaltyCoalition = self.Players[PlayerName].PenaltyCoalition + 1
MESSAGE:New( "Player '" .. PlayerName .. "' changed coalition from " .. _SCORINGCoalition[self.Players[PlayerName].UnitCoalition] .. " to " .. _SCORINGCoalition[UnitCoalition] ..
"(changed " .. self.Players[PlayerName].PenaltyCoalition .. " times the coalition). 50 Penalty points added.",
- "",
- 2,
- "/PENALTYCOALITION" .. PlayerName
+ 2
):ToAll()
self:ScoreCSV( PlayerName, "COALITION_PENALTY", 1, -50, self.Players[PlayerName].UnitName, _SCORINGCoalition[self.Players[PlayerName].UnitCoalition], _SCORINGCategory[self.Players[PlayerName].UnitCategory], self.Players[PlayerName].UnitType,
UnitName, _SCORINGCoalition[UnitCoalition], _SCORINGCategory[UnitCategory], UnitData:getTypeName() )
@@ -252,9 +243,7 @@ function SCORING:_AddPlayerFromUnit( UnitData )
if self.Players[PlayerName].Penalty > 100 then
if self.Players[PlayerName].PenaltyWarning < 1 then
MESSAGE:New( "Player '" .. PlayerName .. "': WARNING! If you continue to commit FRATRICIDE and have a PENALTY score higher than 150, you will be COURT MARTIALED and DISMISSED from this mission! \nYour total penalty is: " .. self.Players[PlayerName].Penalty,
- "",
- 30,
- "/PENALTYCOALITION" .. PlayerName
+ 30
):ToAll()
self.Players[PlayerName].PenaltyWarning = self.Players[PlayerName].PenaltyWarning + 1
end
@@ -264,9 +253,7 @@ function SCORING:_AddPlayerFromUnit( UnitData )
ClientGroup = GROUP:NewFromDCSUnit( UnitData )
ClientGroup:Destroy()
MESSAGE:New( "Player '" .. PlayerName .. "' committed FRATRICIDE, he will be COURT MARTIALED and is DISMISSED from this mission!",
- "",
- 10,
- "/PENALTYCOALITION" .. PlayerName
+ 10
):ToAll()
end
@@ -294,7 +281,7 @@ function SCORING:_AddMissionTaskScore( PlayerUnit, MissionName, Score )
MESSAGE:New( "Player '" .. PlayerName .. "' has finished another Task in Mission '" .. MissionName .. "'. " ..
Score .. " Score points added.",
- "", 20, "/SCORETASK" .. PlayerName ):ToAll()
+ 20 ):ToAll()
self:ScoreCSV( PlayerName, "TASK_" .. MissionName:gsub( ' ', '_' ), 1, Score, PlayerUnit:getName() )
end
@@ -311,7 +298,7 @@ function SCORING:_AddMissionScore( MissionName, Score )
PlayerData.Mission[MissionName].ScoreMission = PlayerData.Mission[MissionName].ScoreMission + Score
MESSAGE:New( "Player '" .. PlayerName .. "' has finished Mission '" .. MissionName .. "'. " ..
Score .. " Score points added.",
- "", 20, "/SCOREMISSION" .. PlayerName ):ToAll()
+ 20 ):ToAll()
self:ScoreCSV( PlayerName, "MISSION_" .. MissionName:gsub( ' ', '_' ), 1, Score )
end
end
@@ -421,9 +408,7 @@ function SCORING:_EventOnHit( Event )
MESSAGE:New( "Player '" .. InitPlayerName .. "' hit a friendly " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " ..
self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].PenaltyHit .. " times. Penalty: -" .. self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Penalty ..
". Score Total:" .. self.Players[InitPlayerName].Score - self.Players[InitPlayerName].Penalty,
- "",
- 2,
- "/PENALTY" .. InitPlayerName .. "/" .. InitUnitName
+ 2
):ToAll()
self:ScoreCSV( InitPlayerName, "HIT_PENALTY", 1, -25, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType )
else
@@ -433,9 +418,7 @@ function SCORING:_EventOnHit( Event )
MESSAGE:New( "Player '" .. InitPlayerName .. "' hit a target " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " ..
self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].ScoreHit .. " times. Score: " .. self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Score ..
". Score Total:" .. self.Players[InitPlayerName].Score - self.Players[InitPlayerName].Penalty,
- "",
- 2,
- "/SCORE" .. InitPlayerName .. "/" .. InitUnitName
+ 2
):ToAll()
self:ScoreCSV( InitPlayerName, "HIT_SCORE", 1, 1, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType )
end
@@ -556,7 +539,7 @@ function SCORING:ReportScoreAll()
PlayerMessage = PlayerMessage .. string.format( "Player '%s' Score:%d (%d Score -%d Penalties)%s", PlayerName, PlayerScore - PlayerPenalty, PlayerScore, PlayerPenalty, ScoreMessage )
end
end
- MESSAGE:New( PlayerMessage, "Player Scores", 30, "AllPlayerScores"):ToAll()
+ MESSAGE:New( PlayerMessage, 30, "Player Scores" ):ToAll()
end
@@ -669,7 +652,7 @@ function SCORING:ReportScorePlayer()
PlayerMessage = PlayerMessage .. string.format( "Player '%s' Score = %d ( %d Score, -%d Penalties ):%s", PlayerName, PlayerScore - PlayerPenalty, PlayerScore, PlayerPenalty, ScoreMessage )
end
end
- MESSAGE:New( PlayerMessage, "Player Scores", 30, "AllPlayerScores"):ToAll()
+ MESSAGE:New( PlayerMessage, 30, "Player Scores" ):ToAll()
end
diff --git a/Moose Development/Moose/Sead.lua b/Moose Development/Moose/Sead.lua
index dd47ff2e5..489c1ecf9 100644
--- a/Moose Development/Moose/Sead.lua
+++ b/Moose Development/Moose/Sead.lua
@@ -3,13 +3,6 @@
-- @author to be searched on the forum
-- @author (co) Flightcontrol (Modified and enriched with functionality)
-Include.File( "Routines" )
-Include.File( "Event" )
-Include.File( "Base" )
-Include.File( "Mission" )
-Include.File( "Client" )
-Include.File( "Task" )
-
--- The SEAD class
-- @type SEAD
-- @extends Base#BASE
diff --git a/Moose Development/Moose/Set.lua b/Moose Development/Moose/Set.lua
index 8b9190c68..775e3005c 100644
--- a/Moose Development/Moose/Set.lua
+++ b/Moose Development/Moose/Set.lua
@@ -181,14 +181,6 @@
-- @module Set
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Menu" )
-Include.File( "Group" )
-Include.File( "Unit" )
-Include.File( "Event" )
-Include.File( "Client" )
-
--- SET_BASE class
-- @type SET_BASE
-- @extends Base#BASE
diff --git a/Moose Development/Moose/Spawn.lua b/Moose Development/Moose/Spawn.lua
index 93715afe6..3a2e588b6 100644
--- a/Moose Development/Moose/Spawn.lua
+++ b/Moose Development/Moose/Spawn.lua
@@ -74,14 +74,6 @@
-- @module Spawn
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Database" )
-Include.File( "Group" )
-Include.File( "Zone" )
-Include.File( "Event" )
-Include.File( "Scheduler" )
-
--- SPAWN Class
-- @type SPAWN
-- @extends Base#BASE
@@ -783,7 +775,7 @@ end
-- If no index is given, it will return the first group in the list.
-- @param #SPAWN self
-- @param #number SpawnIndex The index of the group to return.
--- @return Group#GROUP
+-- @return Group#GROUP self
function SPAWN:GetGroupFromIndex( SpawnIndex )
self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnIndex } )
diff --git a/Moose Development/Moose/Stage.lua b/Moose Development/Moose/Stage.lua
index d28c22c7d..839fcb500 100644
--- a/Moose Development/Moose/Stage.lua
+++ b/Moose Development/Moose/Stage.lua
@@ -2,11 +2,11 @@
-- @module STAGE
-- @author Flightcontrol
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Mission" )
-Include.File( "Client" )
-Include.File( "Task" )
+
+
+
+
+
--- The STAGE class
-- @type
diff --git a/Moose Development/Moose/StatHandler.lua b/Moose Development/Moose/StatHandler.lua
index 22b6072b3..1e3f2b29f 100644
--- a/Moose Development/Moose/StatHandler.lua
+++ b/Moose Development/Moose/StatHandler.lua
@@ -1,7 +1,7 @@
--- Provides a logging of statistics in a running DCS Mission.
-- @script eStatHandler
-Include.File( "Routines" )
+
--Handler table
diff --git a/Moose Development/Moose/Static.lua b/Moose Development/Moose/Static.lua
index ba6467023..76e385b57 100644
--- a/Moose Development/Moose/Static.lua
+++ b/Moose Development/Moose/Static.lua
@@ -31,9 +31,9 @@
-- @module Static
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Message" )
+
+
+
--- The STATIC class
diff --git a/Moose Development/Moose/Task.lua b/Moose Development/Moose/Task.lua
index 68cd199e1..09e38917e 100644
--- a/Moose Development/Moose/Task.lua
+++ b/Moose Development/Moose/Task.lua
@@ -1,11 +1,11 @@
--- The TASK Classes define major end-to-end activities within a MISSION. The TASK Class is the Master Class to orchestrate these activities. From this class, many concrete TASK classes are inherited.
-- @module TASK
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Mission" )
-Include.File( "Client" )
-Include.File( "Stage" )
+
+
+
+
+
--- The TASK class
-- @type TASK
diff --git a/Moose Development/Moose/Unit.lua b/Moose Development/Moose/Unit.lua
index cdb8a43f8..8d1a1c1fb 100644
--- a/Moose Development/Moose/Unit.lua
+++ b/Moose Development/Moose/Unit.lua
@@ -68,9 +68,9 @@
-- @module Unit
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Message" )
+
+
+
--- The UNIT class
-- @type UNIT
diff --git a/Moose Development/Moose/Zone.lua b/Moose Development/Moose/Zone.lua
index a27c3f1df..7a93f1616 100644
--- a/Moose Development/Moose/Zone.lua
+++ b/Moose Development/Moose/Zone.lua
@@ -62,10 +62,10 @@
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Message" )
-Include.File( "Point" )
+
+
+
+
diff --git a/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua b/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua
index 0f7292e6f..52bfe1b8a 100644
--- a/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua
+++ b/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua
@@ -1,5 +1,5 @@
env.info( '*** MOOSE STATIC INCLUDE START *** ' )
-env.info( 'Moose Generation Timestamp: 20160608_1752' )
+env.info( 'Moose Generation Timestamp: 20160609_1242' )
local base = _G
env.info("Loading MOOSE " .. base.timer.getAbsTime() )
@@ -28,10 +28,6 @@ env.info("Loaded MOOSE Include Engine")
-- @module routines
-- @author Flightcontrol
---Include.File( "Trace" )
---Include.File( "Message" )
-
-
env.setErrorMessageBoxEnabled(false)
--- Extract of MIST functions.
@@ -2336,19 +2332,19 @@ end
function MessageToAll( MsgText, MsgTime, MsgName )
--trace.f()
- MESSAGE:New( MsgText, "Message", MsgTime, MsgName ):ToCoalition( coalition.side.RED ):ToCoalition( coalition.side.BLUE )
+ MESSAGE:New( MsgText, MsgTime, "Message" ):ToCoalition( coalition.side.RED ):ToCoalition( coalition.side.BLUE )
end
function MessageToRed( MsgText, MsgTime, MsgName )
--trace.f()
- MESSAGE:New( MsgText, "To Red Coalition", MsgTime, MsgName ):ToCoalition( coalition.side.RED )
+ MESSAGE:New( MsgText, MsgTime, "To Red Coalition" ):ToCoalition( coalition.side.RED )
end
function MessageToBlue( MsgText, MsgTime, MsgName )
--trace.f()
- MESSAGE:New( MsgText, "To Blue Coalition", MsgTime, MsgName ):ToCoalition( coalition.side.RED )
+ MESSAGE:New( MsgText, MsgTime, "To Blue Coalition" ):ToCoalition( coalition.side.RED )
end
function getCarrierHeight( CarrierGroup )
@@ -2603,7 +2599,7 @@ env.info(( 'Init: Scripts Loaded v1.1' ))
-- @module Base
-- @author FlightControl
-Include.File( "Routines" )
+
local _TraceOn = true
local _TraceLevel = 1
@@ -3076,10 +3072,6 @@ end
-- @module Scheduler
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-
-
--- The SCHEDULER class
-- @type SCHEDULER
-- @extends Base#BASE
@@ -3200,9 +3192,6 @@ end
-- @module Event
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-
--- The EVENT structure
-- @type EVENT
-- @field #EVENT.Events Events
@@ -3710,9 +3699,6 @@ end
--- Encapsulation of DCS World Menu system in a set of MENU classes.
-- @module Menu
-Include.File( "Routines" )
-Include.File( "Base" )
-
--- The MENU class
-- @type MENU
-- @extends Base#BASE
@@ -4226,11 +4212,6 @@ end
-- @module Group
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Message" )
-Include.File( "Unit" )
-
--- The GROUP class
-- @type GROUP
-- @extends Base#BASE
@@ -6752,7 +6733,7 @@ function GROUP:Message( Message, Duration )
local DCSGroup = self:GetDCSGroup()
if DCSGroup then
- return MESSAGE:New( Message, self:GetCallsign() .. " (" .. self:GetTypeName() .. ")", Duration, self:GetClassNameAndID() )
+ return MESSAGE:New( Message, Duration, self:GetCallsign() .. " (" .. self:GetTypeName() .. ")" )
end
return nil
@@ -6892,9 +6873,9 @@ end
-- @module Unit
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Message" )
+
+
+
--- The UNIT class
-- @type UNIT
@@ -7684,10 +7665,10 @@ end
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Message" )
-Include.File( "Point" )
+
+
+
+
@@ -8138,10 +8119,10 @@ end
-- @module Client
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Cargo" )
-Include.File( "Message" )
+
+
+
+
--- The CLIENT class
@@ -8563,16 +8544,16 @@ function CLIENT:Message( Message, MessageDuration, MessageId, MessageCategory, M
else
self.Messages[MessageId].MessageInterval = MessageInterval
end
- MESSAGE:New( Message, MessageCategory, MessageDuration, MessageId ):ToClient( self )
+ MESSAGE:New( Message, MessageDuration, MessageCategory ):ToClient( self )
else
if self:GetClientGroupDCSUnit() and not self:GetClientGroupDCSUnit():inAir() then
if timer.getTime() - self.Messages[MessageId].MessageTime >= self.Messages[MessageId].MessageDuration + 10 then
- MESSAGE:New( Message, MessageCategory, MessageDuration, MessageId ):ToClient( self )
+ MESSAGE:New( Message, MessageDuration , MessageCategory):ToClient( self )
self.Messages[MessageId].MessageTime = timer.getTime()
end
else
if timer.getTime() - self.Messages[MessageId].MessageTime >= self.Messages[MessageId].MessageDuration + self.Messages[MessageId].MessageInterval then
- MESSAGE:New( Message, MessageCategory, MessageDuration, MessageId ):ToClient( self )
+ MESSAGE:New( Message, MessageDuration, MessageCategory ):ToClient( self )
self.Messages[MessageId].MessageTime = timer.getTime()
end
end
@@ -8612,9 +8593,9 @@ end
-- @module Static
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Message" )
+
+
+
--- The STATIC class
@@ -8694,15 +8675,15 @@ end
-- @module Database
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Menu" )
-Include.File( "Group" )
-Include.File( "Static" )
-Include.File( "Unit" )
-Include.File( "Event" )
-Include.File( "Client" )
-Include.File( "Scheduler" )
+
+
+
+
+
+
+
+
+
--- DATABASE class
@@ -9462,14 +9443,6 @@ end
-- @module Set
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Menu" )
-Include.File( "Group" )
-Include.File( "Unit" )
-Include.File( "Event" )
-Include.File( "Client" )
-
--- SET_BASE class
-- @type SET_BASE
-- @extends Base#BASE
@@ -10465,10 +10438,6 @@ end
-- @module Point
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Point" )
-
--- The POINT_VEC3 class
-- @type POINT_VEC3
-- @extends Base#BASE
@@ -10637,8 +10606,73 @@ end
Include.File( "Routines" )
Include.File( "Base" )
-Include.File( "Database" )
+Include.File( "Scheduler" )
Include.File( "Event" )
+Include.File( "Menu" )
+Include.File( "Group" )
+Include.File( "Unit" )
+Include.File( "Zone" )
+Include.File( "Client" )
+Include.File( "Static" )
+Include.File( "Database" )
+Include.File( "Set" )
+Include.File( "Point" )
+Include.File( "Moose" )
+Include.File( "Scoring" )
+Include.File( "Cargo" )
+Include.File( "Message" )
+Include.File( "Stage" )
+Include.File( "Task" )
+Include.File( "GoHomeTask" )
+Include.File( "DestroyBaseTask" )
+Include.File( "DestroyGroupsTask" )
+Include.File( "DestroyRadarsTask" )
+Include.File( "DestroyUnitTypesTask" )
+Include.File( "PickupTask" )
+Include.File( "DeployTask" )
+Include.File( "NoTask" )
+Include.File( "RouteTask" )
+Include.File( "Mission" )
+Include.File( "CleanUp" )
+Include.File( "Spawn" )
+Include.File( "Movement" )
+Include.File( "Sead" )
+Include.File( "Escort" )
+Include.File( "MissileTrainer" )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-- The order of the declarations is important here. Don't touch it.
@@ -10657,13 +10691,6 @@ _DATABASE = DATABASE:New() -- Database#DATABASE
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Menu" )
-Include.File( "Group" )
-Include.File( "Event" )
-
-
--- The Scoring class
-- @type SCORING
-- @field Players A collection of the current players that have joined the game.
@@ -10826,7 +10853,7 @@ function SCORING:_EventOnDeadOrCrash( Event )
MESSAGE:New( "Player '" .. PlayerName .. "' killed a friendly " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " ..
PlayerData.Kill[TargetCategory][TargetType].PenaltyKill .. " times. Penalty: -" .. PlayerData.Kill[TargetCategory][TargetType].Penalty ..
". Score Total:" .. PlayerData.Score - PlayerData.Penalty,
- "", 5, "/PENALTY" .. PlayerName .. "/" .. InitUnitName ):ToAll()
+ 5 ):ToAll()
self:ScoreCSV( PlayerName, "KILL_PENALTY", 1, -125, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType )
else
PlayerData.Score = PlayerData.Score + 10
@@ -10835,7 +10862,7 @@ function SCORING:_EventOnDeadOrCrash( Event )
MESSAGE:New( "Player '" .. PlayerName .. "' killed an enemy " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " ..
PlayerData.Kill[TargetCategory][TargetType].ScoreKill .. " times. Score: " .. PlayerData.Kill[TargetCategory][TargetType].Score ..
". Score Total:" .. PlayerData.Score - PlayerData.Penalty,
- "", 5, "/SCORE" .. PlayerName .. "/" .. InitUnitName ):ToAll()
+ 5 ):ToAll()
self:ScoreCSV( PlayerName, "KILL_SCORE", 1, 10, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType )
end
end
@@ -10886,9 +10913,7 @@ function SCORING:_AddPlayerFromUnit( UnitData )
self.Players[PlayerName].PenaltyCoalition = self.Players[PlayerName].PenaltyCoalition + 1
MESSAGE:New( "Player '" .. PlayerName .. "' changed coalition from " .. _SCORINGCoalition[self.Players[PlayerName].UnitCoalition] .. " to " .. _SCORINGCoalition[UnitCoalition] ..
"(changed " .. self.Players[PlayerName].PenaltyCoalition .. " times the coalition). 50 Penalty points added.",
- "",
- 2,
- "/PENALTYCOALITION" .. PlayerName
+ 2
):ToAll()
self:ScoreCSV( PlayerName, "COALITION_PENALTY", 1, -50, self.Players[PlayerName].UnitName, _SCORINGCoalition[self.Players[PlayerName].UnitCoalition], _SCORINGCategory[self.Players[PlayerName].UnitCategory], self.Players[PlayerName].UnitType,
UnitName, _SCORINGCoalition[UnitCoalition], _SCORINGCategory[UnitCategory], UnitData:getTypeName() )
@@ -10902,9 +10927,7 @@ function SCORING:_AddPlayerFromUnit( UnitData )
if self.Players[PlayerName].Penalty > 100 then
if self.Players[PlayerName].PenaltyWarning < 1 then
MESSAGE:New( "Player '" .. PlayerName .. "': WARNING! If you continue to commit FRATRICIDE and have a PENALTY score higher than 150, you will be COURT MARTIALED and DISMISSED from this mission! \nYour total penalty is: " .. self.Players[PlayerName].Penalty,
- "",
- 30,
- "/PENALTYCOALITION" .. PlayerName
+ 30
):ToAll()
self.Players[PlayerName].PenaltyWarning = self.Players[PlayerName].PenaltyWarning + 1
end
@@ -10914,9 +10937,7 @@ function SCORING:_AddPlayerFromUnit( UnitData )
ClientGroup = GROUP:NewFromDCSUnit( UnitData )
ClientGroup:Destroy()
MESSAGE:New( "Player '" .. PlayerName .. "' committed FRATRICIDE, he will be COURT MARTIALED and is DISMISSED from this mission!",
- "",
- 10,
- "/PENALTYCOALITION" .. PlayerName
+ 10
):ToAll()
end
@@ -10944,7 +10965,7 @@ function SCORING:_AddMissionTaskScore( PlayerUnit, MissionName, Score )
MESSAGE:New( "Player '" .. PlayerName .. "' has finished another Task in Mission '" .. MissionName .. "'. " ..
Score .. " Score points added.",
- "", 20, "/SCORETASK" .. PlayerName ):ToAll()
+ 20 ):ToAll()
self:ScoreCSV( PlayerName, "TASK_" .. MissionName:gsub( ' ', '_' ), 1, Score, PlayerUnit:getName() )
end
@@ -10961,7 +10982,7 @@ function SCORING:_AddMissionScore( MissionName, Score )
PlayerData.Mission[MissionName].ScoreMission = PlayerData.Mission[MissionName].ScoreMission + Score
MESSAGE:New( "Player '" .. PlayerName .. "' has finished Mission '" .. MissionName .. "'. " ..
Score .. " Score points added.",
- "", 20, "/SCOREMISSION" .. PlayerName ):ToAll()
+ 20 ):ToAll()
self:ScoreCSV( PlayerName, "MISSION_" .. MissionName:gsub( ' ', '_' ), 1, Score )
end
end
@@ -11071,9 +11092,7 @@ function SCORING:_EventOnHit( Event )
MESSAGE:New( "Player '" .. InitPlayerName .. "' hit a friendly " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " ..
self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].PenaltyHit .. " times. Penalty: -" .. self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Penalty ..
". Score Total:" .. self.Players[InitPlayerName].Score - self.Players[InitPlayerName].Penalty,
- "",
- 2,
- "/PENALTY" .. InitPlayerName .. "/" .. InitUnitName
+ 2
):ToAll()
self:ScoreCSV( InitPlayerName, "HIT_PENALTY", 1, -25, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType )
else
@@ -11083,9 +11102,7 @@ function SCORING:_EventOnHit( Event )
MESSAGE:New( "Player '" .. InitPlayerName .. "' hit a target " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " ..
self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].ScoreHit .. " times. Score: " .. self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Score ..
". Score Total:" .. self.Players[InitPlayerName].Score - self.Players[InitPlayerName].Penalty,
- "",
- 2,
- "/SCORE" .. InitPlayerName .. "/" .. InitUnitName
+ 2
):ToAll()
self:ScoreCSV( InitPlayerName, "HIT_SCORE", 1, 1, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType )
end
@@ -11206,7 +11223,7 @@ function SCORING:ReportScoreAll()
PlayerMessage = PlayerMessage .. string.format( "Player '%s' Score:%d (%d Score -%d Penalties)%s", PlayerName, PlayerScore - PlayerPenalty, PlayerScore, PlayerPenalty, ScoreMessage )
end
end
- MESSAGE:New( PlayerMessage, "Player Scores", 30, "AllPlayerScores"):ToAll()
+ MESSAGE:New( PlayerMessage, 30, "Player Scores" ):ToAll()
end
@@ -11319,7 +11336,7 @@ function SCORING:ReportScorePlayer()
PlayerMessage = PlayerMessage .. string.format( "Player '%s' Score = %d ( %d Score, -%d Penalties ):%s", PlayerName, PlayerScore - PlayerPenalty, PlayerScore, PlayerPenalty, ScoreMessage )
end
end
- MESSAGE:New( PlayerMessage, "Player Scores", 30, "AllPlayerScores"):ToAll()
+ MESSAGE:New( PlayerMessage, 30, "Player Scores" ):ToAll()
end
@@ -11469,10 +11486,10 @@ end
--- CARGO Classes
-- @module CARGO
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Message" )
-Include.File( "Scheduler" )
+
+
+
+
--- Clients are those Groups defined within the Mission Editor that have the skillset defined as "Client" or "Player".
@@ -12546,20 +12563,32 @@ function CARGO_SLINGLOAD:UnLoad( Client, TargetZoneName )
return Cargo
end
---- Message System to display Messages for Clients and Coalitions or All.
--- Messages are grouped on the display panel per Category to improve readability for the players.
+--- This module contains the MESSAGE class.
+--
+-- 1) @{Message#MESSAGE} class, extends @{Base#BASE}
+-- =================================================
+-- Message System to display Messages to Clients, Coalitions or All.
-- Messages are shown on the display panel for an amount of seconds, and will then disappear.
--- Messages are identified by an ID. The messages with the same ID belonging to the same category will be overwritten if they were still being displayed on the display panel.
--- Messages are created with MESSAGE:@{New}().
--- Messages are sent to Clients with MESSAGE:@{ToClient}().
--- Messages are sent to Coalitions with MESSAGE:@{ToCoalition}().
--- Messages are sent to All Players with MESSAGE:@{ToAll}().
+-- Messages can contain a category which is indicating the category of the message.
+--
+-- 1.1) MESSAGE construction methods
+-- ---------------------------------
+-- Messages are created with MESSAGE:@{New}. Note that when the MESSAGE object is created, no message is sent yet.
+-- To send messages, you need to use the To functions.
+--
+-- 1.2) Send messages with MESSAGE To methods
+-- ------------------------------------------
+-- Messages are sent to:
+-- * Clients with MESSAGE:@{ToClient}().
+-- * Coalitions with MESSAGE:@{ToCoalition}().
+-- * All Players with MESSAGE:@{ToAll}().
+--
-- @module Message
-
-Include.File( "Base" )
+-- @author FlightControl
--- The MESSAGE class
-- @type MESSAGE
+-- @extends Base#BASE
MESSAGE = {
ClassName = "MESSAGE",
MessageCategory = 0,
@@ -12570,9 +12599,8 @@ MESSAGE = {
--- Creates a new MESSAGE object. Note that these MESSAGE objects are not yet displayed on the display panel. You must use the functions @{ToClient} or @{ToCoalition} or @{ToAll} to send these Messages to the respective recipients.
-- @param self
-- @param #string MessageText is the text of the Message.
--- @param #string MessageCategory is a string expressing the Category of the Message. Messages are grouped on the display panel per Category to improve readability.
-- @param #number MessageDuration is a number in seconds of how long the MESSAGE should be shown on the display panel.
--- @param #string MessageID is a string expressing the ID of the Message.
+-- @param #string MessageCategory (optional) is a string expressing the "category" of the Message. The category will be shown as the first text in the message followed by a ": ".
-- @return #MESSAGE
-- @usage
-- -- Create a series of new Messages.
@@ -12580,15 +12608,15 @@ MESSAGE = {
-- -- MessageRED is meant to be sent to the RED players only, for 10 seconds, and is classified as "End of Mission", with ID "Win".
-- -- MessageClient1 is meant to be sent to a Client, for 25 seconds, and is classified as "Score", with ID "Score".
-- -- MessageClient1 is meant to be sent to a Client, for 25 seconds, and is classified as "Score", with ID "Score".
--- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" )
--- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" )
--- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" )
--- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" )
-function MESSAGE:New( MessageText, MessageCategory, MessageDuration, MessageID )
+-- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", 25, "End of Mission" )
+-- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", 25, "Penalty" )
+-- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", 25, "Score" )
+-- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", 25, "Score")
+function MESSAGE:New( MessageText, MessageDuration, MessageCategory )
local self = BASE:Inherit( self, BASE:New() )
- self:F( { MessageText, MessageCategory, MessageDuration, MessageID } )
+ self:F( { MessageText, MessageDuration, MessageCategory } )
- -- When no messagecategory is given, we don't show it as a title...
+ -- When no MessageCategory is given, we don't show it as a title...
if MessageCategory and MessageCategory ~= "" then
self.MessageCategory = MessageCategory .. ": "
else
@@ -12596,7 +12624,6 @@ function MESSAGE:New( MessageText, MessageCategory, MessageDuration, MessageID )
end
self.MessageDuration = MessageDuration
- self.MessageID = MessageID
self.MessageTime = timer.getTime()
self.MessageText = MessageText
@@ -12722,89 +12749,89 @@ end
---- The MESSAGEQUEUE class
--- @type MESSAGEQUEUE
-MESSAGEQUEUE = {
- ClientGroups = {},
- CoalitionSides = {}
-}
-
-function MESSAGEQUEUE:New( RefreshInterval )
- local self = BASE:Inherit( self, BASE:New() )
- self:F( { RefreshInterval } )
-
- self.RefreshInterval = RefreshInterval
-
- --self.DisplayFunction = routines.scheduleFunction( self._DisplayMessages, { self }, 0, RefreshInterval )
- self.DisplayFunction = SCHEDULER:New( self, self._DisplayMessages, {}, 0, RefreshInterval )
-
- return self
-end
-
---- This function is called automatically by the MESSAGEQUEUE scheduler.
-function MESSAGEQUEUE:_DisplayMessages()
-
- -- First we display all messages that a coalition needs to receive... Also those who are not in a client (CA module clients...).
- for CoalitionSideID, CoalitionSideData in pairs( self.CoalitionSides ) do
- for MessageID, MessageData in pairs( CoalitionSideData.Messages ) do
- if MessageData.MessageSent == false then
- --trigger.action.outTextForCoalition( CoalitionSideID, MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration )
- MessageData.MessageSent = true
- end
- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime()
- if MessageTimeLeft <= 0 then
- MessageData = nil
- end
- end
- end
-
- -- Then we send the messages for each individual client, but also to be included are those Coalition messages for the Clients who belong to a coalition.
- -- Because the Client messages will overwrite the Coalition messages (for that Client).
- for ClientGroupName, ClientGroupData in pairs( self.ClientGroups ) do
- for MessageID, MessageData in pairs( ClientGroupData.Messages ) do
- if MessageData.MessageGroup == false then
- trigger.action.outTextForGroup( Group.getByName(ClientGroupName):getID(), MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration )
- MessageData.MessageGroup = true
- end
- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime()
- if MessageTimeLeft <= 0 then
- MessageData = nil
- end
- end
-
- -- Now check if the Client also has messages that belong to the Coalition of the Client...
- for CoalitionSideID, CoalitionSideData in pairs( self.CoalitionSides ) do
- for MessageID, MessageData in pairs( CoalitionSideData.Messages ) do
- local CoalitionGroup = Group.getByName( ClientGroupName )
- if CoalitionGroup and CoalitionGroup:getCoalition() == CoalitionSideID then
- if MessageData.MessageCoalition == false then
- trigger.action.outTextForGroup( Group.getByName(ClientGroupName):getID(), MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration )
- MessageData.MessageCoalition = true
- end
- end
- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime()
- if MessageTimeLeft <= 0 then
- MessageData = nil
- end
- end
- end
- end
-
- return true
-end
-
---- The _MessageQueue object is created when the MESSAGE class module is loaded.
---_MessageQueue = MESSAGEQUEUE:New( 0.5 )
-
+----- The MESSAGEQUEUE class
+---- @type MESSAGEQUEUE
+--MESSAGEQUEUE = {
+-- ClientGroups = {},
+-- CoalitionSides = {}
+--}
+--
+--function MESSAGEQUEUE:New( RefreshInterval )
+-- local self = BASE:Inherit( self, BASE:New() )
+-- self:F( { RefreshInterval } )
+--
+-- self.RefreshInterval = RefreshInterval
+--
+-- --self.DisplayFunction = routines.scheduleFunction( self._DisplayMessages, { self }, 0, RefreshInterval )
+-- self.DisplayFunction = SCHEDULER:New( self, self._DisplayMessages, {}, 0, RefreshInterval )
+--
+-- return self
+--end
+--
+----- This function is called automatically by the MESSAGEQUEUE scheduler.
+--function MESSAGEQUEUE:_DisplayMessages()
+--
+-- -- First we display all messages that a coalition needs to receive... Also those who are not in a client (CA module clients...).
+-- for CoalitionSideID, CoalitionSideData in pairs( self.CoalitionSides ) do
+-- for MessageID, MessageData in pairs( CoalitionSideData.Messages ) do
+-- if MessageData.MessageSent == false then
+-- --trigger.action.outTextForCoalition( CoalitionSideID, MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration )
+-- MessageData.MessageSent = true
+-- end
+-- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime()
+-- if MessageTimeLeft <= 0 then
+-- MessageData = nil
+-- end
+-- end
+-- end
+--
+-- -- Then we send the messages for each individual client, but also to be included are those Coalition messages for the Clients who belong to a coalition.
+-- -- Because the Client messages will overwrite the Coalition messages (for that Client).
+-- for ClientGroupName, ClientGroupData in pairs( self.ClientGroups ) do
+-- for MessageID, MessageData in pairs( ClientGroupData.Messages ) do
+-- if MessageData.MessageGroup == false then
+-- trigger.action.outTextForGroup( Group.getByName(ClientGroupName):getID(), MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration )
+-- MessageData.MessageGroup = true
+-- end
+-- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime()
+-- if MessageTimeLeft <= 0 then
+-- MessageData = nil
+-- end
+-- end
+--
+-- -- Now check if the Client also has messages that belong to the Coalition of the Client...
+-- for CoalitionSideID, CoalitionSideData in pairs( self.CoalitionSides ) do
+-- for MessageID, MessageData in pairs( CoalitionSideData.Messages ) do
+-- local CoalitionGroup = Group.getByName( ClientGroupName )
+-- if CoalitionGroup and CoalitionGroup:getCoalition() == CoalitionSideID then
+-- if MessageData.MessageCoalition == false then
+-- trigger.action.outTextForGroup( Group.getByName(ClientGroupName):getID(), MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration )
+-- MessageData.MessageCoalition = true
+-- end
+-- end
+-- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime()
+-- if MessageTimeLeft <= 0 then
+-- MessageData = nil
+-- end
+-- end
+-- end
+-- end
+--
+-- return true
+--end
+--
+----- The _MessageQueue object is created when the MESSAGE class module is loaded.
+----_MessageQueue = MESSAGEQUEUE:New( 0.5 )
+--
--- Stages within a @{TASK} within a @{MISSION}. All of the STAGE functionality is considered internally administered and not to be used by any Mission designer.
-- @module STAGE
-- @author Flightcontrol
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Mission" )
-Include.File( "Client" )
-Include.File( "Task" )
+
+
+
+
+
--- The STAGE class
-- @type
@@ -13766,11 +13793,11 @@ _TransportStageAction = {
--- The TASK Classes define major end-to-end activities within a MISSION. The TASK Class is the Master Class to orchestrate these activities. From this class, many concrete TASK classes are inherited.
-- @module TASK
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Mission" )
-Include.File( "Client" )
-Include.File( "Stage" )
+
+
+
+
+
--- The TASK class
-- @type TASK
@@ -14231,8 +14258,6 @@ end
--- A GOHOMETASK orchestrates the travel back to the home base, which is a specific zone defined within the ME.
-- @module GOHOMETASK
-Include.File("Task")
-
--- The GOHOMETASK class
-- @type
GOHOMETASK = {
@@ -14269,7 +14294,7 @@ end
-- @see DESTROYUNITTYPESTASK
-- @see DESTROY_RADARS_TASK
-Include.File("Task")
+
--- The DESTROYBASETASK class
-- @type DESTROYBASETASK
@@ -14347,7 +14372,7 @@ end
--- DESTROYGROUPSTASK
-- @module DESTROYGROUPSTASK
-Include.File("DestroyBaseTask")
+
--- The DESTROYGROUPSTASK class
-- @type
@@ -14404,7 +14429,7 @@ end
--- Task class to destroy radar installations.
-- @module DESTROYRADARSTASK
-Include.File("DestroyBaseTask")
+
--- The DESTROYRADARS class
-- @type
@@ -14445,7 +14470,7 @@ end
--- Set TASK to destroy certain unit types.
-- @module DESTROYUNITTYPESTASK
-Include.File("DestroyBaseTask")
+
--- The DESTROYUNITTYPESTASK class
-- @type
@@ -14498,9 +14523,6 @@ end
-- @module PICKUPTASK
-- @parent TASK
-Include.File("Task")
-Include.File("Cargo")
-
--- The PICKUPTASK class
-- @type
PICKUPTASK = {
@@ -14653,7 +14675,7 @@ end
--- A DEPLOYTASK orchestrates the deployment of CARGO within a specific landing zone.
-- @module DEPLOYTASK
-Include.File( "Task" )
+
--- A DeployTask
-- @type DEPLOYTASK
@@ -14811,8 +14833,6 @@ end
--- A NOTASK is a dummy activity... But it will show a Mission Briefing...
-- @module NOTASK
-Include.File("Task")
-
--- The NOTASK class
-- @type
NOTASK = {
@@ -14880,11 +14900,6 @@ end
-- A @{CLIENT} needs to be registered within the @{MISSION} through the function @{AddClient}. A @{TASK} needs to be registered within the @{MISSION} through the function @{AddTask}.
-- @module Mission
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Client" )
-Include.File( "Task" )
-
--- The MISSION class
-- @type MISSION
-- @extends Base#BASE
@@ -15069,7 +15084,7 @@ function MISSION:ReportToAll()
for TaskID, TaskData in pairs( Tasks ) do
TaskText = TaskText .. " - Task " .. TaskID .. ": " .. TaskData.Name .. ": " .. TaskData:GetGoalProgress() .. "\n"
end
- MESSAGE:New( self.MissionCoalition .. ' "' .. self.Name .. '": ' .. self.MissionStatus .. ' ( ' .. self.MissionPriority .. ' mission )' .. AlivePlayers .. "\n" .. TaskText:gsub("\n$",""), "Mission Command: Mission Report", 10, self.Name .. '/Status'):ToAll()
+ MESSAGE:New( self.MissionCoalition .. ' "' .. self.Name .. '": ' .. self.MissionStatus .. ' ( ' .. self.MissionPriority .. ' mission )' .. AlivePlayers .. "\n" .. TaskText:gsub("\n$",""), 10, "Mission Command: Mission Report" ):ToAll()
end
@@ -15528,7 +15543,7 @@ function MISSIONSCHEDULER:TimeShow()
self.TimeIntervalCount = self.TimeIntervalCount + 1
if self.TimeIntervalCount >= self.TimeTriggerShow then
local TimeMsg = string.format("%00d", ( self.TimeSeconds / 60 ) - ( timer.getTime() / 60 )) .. ' minutes left until mission reload.'
- MESSAGE:New( TimeMsg, "Mission time", self.TimeShow, '/TimeMsg' ):ToAll()
+ MESSAGE:New( TimeMsg, self.TimeShow, "Mission time" ):ToAll()
self.TimeIntervalCount = 0
end
end
@@ -15551,11 +15566,11 @@ end
-- @module CleanUp
-- @author Flightcontrol
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Mission" )
-Include.File( "Client" )
-Include.File( "Task" )
+
+
+
+
+
--- The CLEANUP class.
-- @type CLEANUP
@@ -15607,7 +15622,6 @@ function CLEANUP:_DestroyGroup( GroupObject, CleanUpGroupName )
self:F( { GroupObject, CleanUpGroupName } )
if GroupObject then -- and GroupObject:isExist() then
- --MESSAGE:New( "Destroy Group " .. CleanUpGroupName, CleanUpGroupName, 1, CleanUpGroupName ):ToAll()
trigger.action.deactivateGroup(GroupObject)
self:T( { "GroupObject Destroyed", GroupObject } )
end
@@ -15621,7 +15635,6 @@ function CLEANUP:_DestroyUnit( CleanUpUnit, CleanUpUnitName )
self:F( { CleanUpUnit, CleanUpUnitName } )
if CleanUpUnit then
- --MESSAGE:New( "Destroy " .. CleanUpUnitName, CleanUpUnitName, 1, CleanUpUnitName ):ToAll()
local CleanUpGroup = Unit.getGroup(CleanUpUnit)
-- TODO Client bug in 1.5.3
if CleanUpGroup and CleanUpGroup:isExist() then
@@ -15691,7 +15704,6 @@ function CLEANUP:_EventCrash( Event )
self:F( { Event } )
--TODO: This stuff is not working due to a DCS bug. Burning units cannot be destroyed.
- --MESSAGE:New( "Crash ", "Crash", 10, "Crash" ):ToAll()
-- self:T("before getGroup")
-- local _grp = Unit.getGroup(event.initiator)-- Identify the group that fired
-- self:T("after getGroup")
@@ -15826,7 +15838,6 @@ function CLEANUP:_CleanUpScheduler()
--self:T( CleanUpUnitVec2 )
local CleanUpSurfaceType = land.getSurfaceType(CleanUpUnitVec2)
--self:T( CleanUpSurfaceType )
- --MESSAGE:New( "Surface " .. CleanUpUnitName .. " = " .. CleanUpSurfaceTypeText[CleanUpSurfaceType], CleanUpUnitName, 10, CleanUpUnitName ):ToAll()
if CleanUpUnit and CleanUpUnit:getLife() <= CleanUpUnit:getLife0() * 0.95 then
if CleanUpSurfaceType == land.SurfaceType.RUNWAY then
@@ -15858,7 +15869,6 @@ function CLEANUP:_CleanUpScheduler()
else
UnitData.CleanUpTime = timer.getTime()
UnitData.CleanUpMoved = true
- --MESSAGE:New( "Moved " .. CleanUpUnitName, CleanUpUnitName, 10, CleanUpUnitName ):ToAll()
end
end
@@ -15952,14 +15962,6 @@ end
-- @module Spawn
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Database" )
-Include.File( "Group" )
-Include.File( "Zone" )
-Include.File( "Event" )
-Include.File( "Scheduler" )
-
--- SPAWN Class
-- @type SPAWN
-- @extends Base#BASE
@@ -16661,7 +16663,7 @@ end
-- If no index is given, it will return the first group in the list.
-- @param #SPAWN self
-- @param #number SpawnIndex The index of the group to return.
--- @return Group#GROUP
+-- @return Group#GROUP self
function SPAWN:GetGroupFromIndex( SpawnIndex )
self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnIndex } )
@@ -17147,8 +17149,6 @@ end
-- on defined intervals (currently every minute).
-- @module MOVEMENT
-Include.File( "Routines" )
-
--- the MOVEMENT class
-- @type
MOVEMENT = {
@@ -17275,13 +17275,6 @@ end
-- @author to be searched on the forum
-- @author (co) Flightcontrol (Modified and enriched with functionality)
-Include.File( "Routines" )
-Include.File( "Event" )
-Include.File( "Base" )
-Include.File( "Mission" )
-Include.File( "Client" )
-Include.File( "Task" )
-
--- The SEAD class
-- @type SEAD
-- @extends Base#BASE
@@ -17511,11 +17504,11 @@ end
-- @module Escort
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Database" )
-Include.File( "Group" )
-Include.File( "Zone" )
+
+
+
+
+
---
-- @type ESCORT
@@ -18764,9 +18757,6 @@ end
-- @author FlightControl
-Include.File( "Client" )
-Include.File( "Scheduler" )
-
--- The MISSILETRAINER class
-- @type MISSILETRAINER
-- @extends Base#BASE
@@ -18911,9 +18901,9 @@ function MISSILETRAINER:InitMessagesOnOff( MessagesOnOff )
self.MessagesOnOff = MessagesOnOff
if self.MessagesOnOff == true then
- MESSAGE:New( "Messages ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Messages ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Messages OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Messages OFF", 15, "Menu" ):ToAll()
end
return self
@@ -18928,9 +18918,9 @@ function MISSILETRAINER:InitTrackingToAll( TrackingToAll )
self.TrackingToAll = TrackingToAll
if self.TrackingToAll == true then
- MESSAGE:New( "Missile tracking to all players ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Missile tracking to all players ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Missile tracking to all players OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Missile tracking to all players OFF", 15, "Menu" ):ToAll()
end
return self
@@ -18945,9 +18935,9 @@ function MISSILETRAINER:InitTrackingOnOff( TrackingOnOff )
self.TrackingOnOff = TrackingOnOff
if self.TrackingOnOff == true then
- MESSAGE:New( "Missile tracking ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Missile tracking ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Missile tracking OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Missile tracking OFF", 15, "Menu" ):ToAll()
end
return self
@@ -18966,7 +18956,7 @@ function MISSILETRAINER:InitTrackingFrequency( TrackingFrequency )
self.TrackingFrequency = 0.5
end
if self.TrackingFrequency then
- MESSAGE:New( "Missile tracking frequency is " .. self.TrackingFrequency .. " seconds.", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Missile tracking frequency is " .. self.TrackingFrequency .. " seconds.", 15, "Menu" ):ToAll()
end
return self
@@ -18981,9 +18971,9 @@ function MISSILETRAINER:InitAlertsToAll( AlertsToAll )
self.AlertsToAll = AlertsToAll
if self.AlertsToAll == true then
- MESSAGE:New( "Alerts to all players ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Alerts to all players ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Alerts to all players OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Alerts to all players OFF", 15, "Menu" ):ToAll()
end
return self
@@ -18998,9 +18988,9 @@ function MISSILETRAINER:InitAlertsHitsOnOff( AlertsHitsOnOff )
self.AlertsHitsOnOff = AlertsHitsOnOff
if self.AlertsHitsOnOff == true then
- MESSAGE:New( "Alerts Hits ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Alerts Hits ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Alerts Hits OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Alerts Hits OFF", 15, "Menu" ):ToAll()
end
return self
@@ -19015,9 +19005,9 @@ function MISSILETRAINER:InitAlertsLaunchesOnOff( AlertsLaunchesOnOff )
self.AlertsLaunchesOnOff = AlertsLaunchesOnOff
if self.AlertsLaunchesOnOff == true then
- MESSAGE:New( "Alerts Launches ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Alerts Launches ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Alerts Launches OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Alerts Launches OFF", 15, "Menu" ):ToAll()
end
return self
@@ -19032,9 +19022,9 @@ function MISSILETRAINER:InitRangeOnOff( DetailsRangeOnOff )
self.DetailsRangeOnOff = DetailsRangeOnOff
if self.DetailsRangeOnOff == true then
- MESSAGE:New( "Range display ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Range display ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Range display OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Range display OFF", 15, "Menu" ):ToAll()
end
return self
@@ -19049,9 +19039,9 @@ function MISSILETRAINER:InitBearingOnOff( DetailsBearingOnOff )
self.DetailsBearingOnOff = DetailsBearingOnOff
if self.DetailsBearingOnOff == true then
- MESSAGE:New( "Bearing display OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Bearing display OFF", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Bearing display OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Bearing display OFF", 15, "Menu" ):ToAll()
end
return self
@@ -19066,9 +19056,9 @@ function MISSILETRAINER:InitMenusOnOff( MenusOnOff )
self.MenusOnOff = MenusOnOff
if self.MenusOnOff == true then
- MESSAGE:New( "Menus are ENABLED (only when a player rejoins a slot)", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Menus are ENABLED (only when a player rejoins a slot)", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Menus are DISABLED", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Menus are DISABLED", 15, "Menu" ):ToAll()
end
return self
@@ -19119,7 +19109,7 @@ function MISSILETRAINER._MenuMessages( MenuParameters )
if MenuParameters.Distance ~= nil then
self.Distance = MenuParameters.Distance
- MESSAGE:New( "Hit detection distance set to " .. self.Distance .. " meters", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Hit detection distance set to " .. self.Distance .. " meters", 15, "Menu" ):ToAll()
end
end
@@ -19155,7 +19145,7 @@ function MISSILETRAINER:_EventShot( Event )
string.format( "%s launched a %s",
TrainerSourceUnit:GetTypeName(),
TrainerWeaponName
- ) .. self:_AddRange( Client, TrainerWeapon ) .. self:_AddBearing( Client, TrainerWeapon ),"Launch Alert", 5, "ID" )
+ ) .. self:_AddRange( Client, TrainerWeapon ) .. self:_AddBearing( Client, TrainerWeapon ), 5, "Launch Alert" )
if self.AlertsToAll then
Message:ToAll()
@@ -19270,7 +19260,7 @@ function MISSILETRAINER:_TrackMissiles()
TrainerWeapon:getTypeName(),
TrainerSourceUnit:GetTypeName(),
TrainerTargetUnit:GetPlayerName()
- ),"Hit Alert", 15, "ID" )
+ ), 15, "Hit Alert" )
if self.AlertsToAll == true then
Message:ToAll()
@@ -19291,7 +19281,7 @@ function MISSILETRAINER:_TrackMissiles()
string.format( "%s launched by %s self destructed!",
TrainerWeaponTypeName,
TrainerSourceUnit:GetTypeName()
- ),"Tracking", 5, "ID" )
+ ), 5, "Tracking" )
if self.AlertsToAll == true then
Message:ToAll()
@@ -19365,7 +19355,7 @@ function MISSILETRAINER:_TrackMissiles()
-- Once the Player Client and the Other Player Client tracking messages are prepared, show them.
if ClientData.MessageToClient ~= "" or ClientData.MessageToAll ~= "" then
- local Message = MESSAGE:New( ClientData.MessageToClient .. ClientData.MessageToAll, "Tracking", 1, "ID" ):ToClient( Client )
+ local Message = MESSAGE:New( ClientData.MessageToClient .. ClientData.MessageToAll, 1, "Tracking" ):ToClient( Client )
end
end
end
diff --git a/Moose Mission Setup/Moose.lua b/Moose Mission Setup/Moose.lua
index 0f7292e6f..52bfe1b8a 100644
--- a/Moose Mission Setup/Moose.lua
+++ b/Moose Mission Setup/Moose.lua
@@ -1,5 +1,5 @@
env.info( '*** MOOSE STATIC INCLUDE START *** ' )
-env.info( 'Moose Generation Timestamp: 20160608_1752' )
+env.info( 'Moose Generation Timestamp: 20160609_1242' )
local base = _G
env.info("Loading MOOSE " .. base.timer.getAbsTime() )
@@ -28,10 +28,6 @@ env.info("Loaded MOOSE Include Engine")
-- @module routines
-- @author Flightcontrol
---Include.File( "Trace" )
---Include.File( "Message" )
-
-
env.setErrorMessageBoxEnabled(false)
--- Extract of MIST functions.
@@ -2336,19 +2332,19 @@ end
function MessageToAll( MsgText, MsgTime, MsgName )
--trace.f()
- MESSAGE:New( MsgText, "Message", MsgTime, MsgName ):ToCoalition( coalition.side.RED ):ToCoalition( coalition.side.BLUE )
+ MESSAGE:New( MsgText, MsgTime, "Message" ):ToCoalition( coalition.side.RED ):ToCoalition( coalition.side.BLUE )
end
function MessageToRed( MsgText, MsgTime, MsgName )
--trace.f()
- MESSAGE:New( MsgText, "To Red Coalition", MsgTime, MsgName ):ToCoalition( coalition.side.RED )
+ MESSAGE:New( MsgText, MsgTime, "To Red Coalition" ):ToCoalition( coalition.side.RED )
end
function MessageToBlue( MsgText, MsgTime, MsgName )
--trace.f()
- MESSAGE:New( MsgText, "To Blue Coalition", MsgTime, MsgName ):ToCoalition( coalition.side.RED )
+ MESSAGE:New( MsgText, MsgTime, "To Blue Coalition" ):ToCoalition( coalition.side.RED )
end
function getCarrierHeight( CarrierGroup )
@@ -2603,7 +2599,7 @@ env.info(( 'Init: Scripts Loaded v1.1' ))
-- @module Base
-- @author FlightControl
-Include.File( "Routines" )
+
local _TraceOn = true
local _TraceLevel = 1
@@ -3076,10 +3072,6 @@ end
-- @module Scheduler
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-
-
--- The SCHEDULER class
-- @type SCHEDULER
-- @extends Base#BASE
@@ -3200,9 +3192,6 @@ end
-- @module Event
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-
--- The EVENT structure
-- @type EVENT
-- @field #EVENT.Events Events
@@ -3710,9 +3699,6 @@ end
--- Encapsulation of DCS World Menu system in a set of MENU classes.
-- @module Menu
-Include.File( "Routines" )
-Include.File( "Base" )
-
--- The MENU class
-- @type MENU
-- @extends Base#BASE
@@ -4226,11 +4212,6 @@ end
-- @module Group
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Message" )
-Include.File( "Unit" )
-
--- The GROUP class
-- @type GROUP
-- @extends Base#BASE
@@ -6752,7 +6733,7 @@ function GROUP:Message( Message, Duration )
local DCSGroup = self:GetDCSGroup()
if DCSGroup then
- return MESSAGE:New( Message, self:GetCallsign() .. " (" .. self:GetTypeName() .. ")", Duration, self:GetClassNameAndID() )
+ return MESSAGE:New( Message, Duration, self:GetCallsign() .. " (" .. self:GetTypeName() .. ")" )
end
return nil
@@ -6892,9 +6873,9 @@ end
-- @module Unit
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Message" )
+
+
+
--- The UNIT class
-- @type UNIT
@@ -7684,10 +7665,10 @@ end
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Message" )
-Include.File( "Point" )
+
+
+
+
@@ -8138,10 +8119,10 @@ end
-- @module Client
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Cargo" )
-Include.File( "Message" )
+
+
+
+
--- The CLIENT class
@@ -8563,16 +8544,16 @@ function CLIENT:Message( Message, MessageDuration, MessageId, MessageCategory, M
else
self.Messages[MessageId].MessageInterval = MessageInterval
end
- MESSAGE:New( Message, MessageCategory, MessageDuration, MessageId ):ToClient( self )
+ MESSAGE:New( Message, MessageDuration, MessageCategory ):ToClient( self )
else
if self:GetClientGroupDCSUnit() and not self:GetClientGroupDCSUnit():inAir() then
if timer.getTime() - self.Messages[MessageId].MessageTime >= self.Messages[MessageId].MessageDuration + 10 then
- MESSAGE:New( Message, MessageCategory, MessageDuration, MessageId ):ToClient( self )
+ MESSAGE:New( Message, MessageDuration , MessageCategory):ToClient( self )
self.Messages[MessageId].MessageTime = timer.getTime()
end
else
if timer.getTime() - self.Messages[MessageId].MessageTime >= self.Messages[MessageId].MessageDuration + self.Messages[MessageId].MessageInterval then
- MESSAGE:New( Message, MessageCategory, MessageDuration, MessageId ):ToClient( self )
+ MESSAGE:New( Message, MessageDuration, MessageCategory ):ToClient( self )
self.Messages[MessageId].MessageTime = timer.getTime()
end
end
@@ -8612,9 +8593,9 @@ end
-- @module Static
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Message" )
+
+
+
--- The STATIC class
@@ -8694,15 +8675,15 @@ end
-- @module Database
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Menu" )
-Include.File( "Group" )
-Include.File( "Static" )
-Include.File( "Unit" )
-Include.File( "Event" )
-Include.File( "Client" )
-Include.File( "Scheduler" )
+
+
+
+
+
+
+
+
+
--- DATABASE class
@@ -9462,14 +9443,6 @@ end
-- @module Set
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Menu" )
-Include.File( "Group" )
-Include.File( "Unit" )
-Include.File( "Event" )
-Include.File( "Client" )
-
--- SET_BASE class
-- @type SET_BASE
-- @extends Base#BASE
@@ -10465,10 +10438,6 @@ end
-- @module Point
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Point" )
-
--- The POINT_VEC3 class
-- @type POINT_VEC3
-- @extends Base#BASE
@@ -10637,8 +10606,73 @@ end
Include.File( "Routines" )
Include.File( "Base" )
-Include.File( "Database" )
+Include.File( "Scheduler" )
Include.File( "Event" )
+Include.File( "Menu" )
+Include.File( "Group" )
+Include.File( "Unit" )
+Include.File( "Zone" )
+Include.File( "Client" )
+Include.File( "Static" )
+Include.File( "Database" )
+Include.File( "Set" )
+Include.File( "Point" )
+Include.File( "Moose" )
+Include.File( "Scoring" )
+Include.File( "Cargo" )
+Include.File( "Message" )
+Include.File( "Stage" )
+Include.File( "Task" )
+Include.File( "GoHomeTask" )
+Include.File( "DestroyBaseTask" )
+Include.File( "DestroyGroupsTask" )
+Include.File( "DestroyRadarsTask" )
+Include.File( "DestroyUnitTypesTask" )
+Include.File( "PickupTask" )
+Include.File( "DeployTask" )
+Include.File( "NoTask" )
+Include.File( "RouteTask" )
+Include.File( "Mission" )
+Include.File( "CleanUp" )
+Include.File( "Spawn" )
+Include.File( "Movement" )
+Include.File( "Sead" )
+Include.File( "Escort" )
+Include.File( "MissileTrainer" )
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-- The order of the declarations is important here. Don't touch it.
@@ -10657,13 +10691,6 @@ _DATABASE = DATABASE:New() -- Database#DATABASE
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Menu" )
-Include.File( "Group" )
-Include.File( "Event" )
-
-
--- The Scoring class
-- @type SCORING
-- @field Players A collection of the current players that have joined the game.
@@ -10826,7 +10853,7 @@ function SCORING:_EventOnDeadOrCrash( Event )
MESSAGE:New( "Player '" .. PlayerName .. "' killed a friendly " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " ..
PlayerData.Kill[TargetCategory][TargetType].PenaltyKill .. " times. Penalty: -" .. PlayerData.Kill[TargetCategory][TargetType].Penalty ..
". Score Total:" .. PlayerData.Score - PlayerData.Penalty,
- "", 5, "/PENALTY" .. PlayerName .. "/" .. InitUnitName ):ToAll()
+ 5 ):ToAll()
self:ScoreCSV( PlayerName, "KILL_PENALTY", 1, -125, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType )
else
PlayerData.Score = PlayerData.Score + 10
@@ -10835,7 +10862,7 @@ function SCORING:_EventOnDeadOrCrash( Event )
MESSAGE:New( "Player '" .. PlayerName .. "' killed an enemy " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " ..
PlayerData.Kill[TargetCategory][TargetType].ScoreKill .. " times. Score: " .. PlayerData.Kill[TargetCategory][TargetType].Score ..
". Score Total:" .. PlayerData.Score - PlayerData.Penalty,
- "", 5, "/SCORE" .. PlayerName .. "/" .. InitUnitName ):ToAll()
+ 5 ):ToAll()
self:ScoreCSV( PlayerName, "KILL_SCORE", 1, 10, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType )
end
end
@@ -10886,9 +10913,7 @@ function SCORING:_AddPlayerFromUnit( UnitData )
self.Players[PlayerName].PenaltyCoalition = self.Players[PlayerName].PenaltyCoalition + 1
MESSAGE:New( "Player '" .. PlayerName .. "' changed coalition from " .. _SCORINGCoalition[self.Players[PlayerName].UnitCoalition] .. " to " .. _SCORINGCoalition[UnitCoalition] ..
"(changed " .. self.Players[PlayerName].PenaltyCoalition .. " times the coalition). 50 Penalty points added.",
- "",
- 2,
- "/PENALTYCOALITION" .. PlayerName
+ 2
):ToAll()
self:ScoreCSV( PlayerName, "COALITION_PENALTY", 1, -50, self.Players[PlayerName].UnitName, _SCORINGCoalition[self.Players[PlayerName].UnitCoalition], _SCORINGCategory[self.Players[PlayerName].UnitCategory], self.Players[PlayerName].UnitType,
UnitName, _SCORINGCoalition[UnitCoalition], _SCORINGCategory[UnitCategory], UnitData:getTypeName() )
@@ -10902,9 +10927,7 @@ function SCORING:_AddPlayerFromUnit( UnitData )
if self.Players[PlayerName].Penalty > 100 then
if self.Players[PlayerName].PenaltyWarning < 1 then
MESSAGE:New( "Player '" .. PlayerName .. "': WARNING! If you continue to commit FRATRICIDE and have a PENALTY score higher than 150, you will be COURT MARTIALED and DISMISSED from this mission! \nYour total penalty is: " .. self.Players[PlayerName].Penalty,
- "",
- 30,
- "/PENALTYCOALITION" .. PlayerName
+ 30
):ToAll()
self.Players[PlayerName].PenaltyWarning = self.Players[PlayerName].PenaltyWarning + 1
end
@@ -10914,9 +10937,7 @@ function SCORING:_AddPlayerFromUnit( UnitData )
ClientGroup = GROUP:NewFromDCSUnit( UnitData )
ClientGroup:Destroy()
MESSAGE:New( "Player '" .. PlayerName .. "' committed FRATRICIDE, he will be COURT MARTIALED and is DISMISSED from this mission!",
- "",
- 10,
- "/PENALTYCOALITION" .. PlayerName
+ 10
):ToAll()
end
@@ -10944,7 +10965,7 @@ function SCORING:_AddMissionTaskScore( PlayerUnit, MissionName, Score )
MESSAGE:New( "Player '" .. PlayerName .. "' has finished another Task in Mission '" .. MissionName .. "'. " ..
Score .. " Score points added.",
- "", 20, "/SCORETASK" .. PlayerName ):ToAll()
+ 20 ):ToAll()
self:ScoreCSV( PlayerName, "TASK_" .. MissionName:gsub( ' ', '_' ), 1, Score, PlayerUnit:getName() )
end
@@ -10961,7 +10982,7 @@ function SCORING:_AddMissionScore( MissionName, Score )
PlayerData.Mission[MissionName].ScoreMission = PlayerData.Mission[MissionName].ScoreMission + Score
MESSAGE:New( "Player '" .. PlayerName .. "' has finished Mission '" .. MissionName .. "'. " ..
Score .. " Score points added.",
- "", 20, "/SCOREMISSION" .. PlayerName ):ToAll()
+ 20 ):ToAll()
self:ScoreCSV( PlayerName, "MISSION_" .. MissionName:gsub( ' ', '_' ), 1, Score )
end
end
@@ -11071,9 +11092,7 @@ function SCORING:_EventOnHit( Event )
MESSAGE:New( "Player '" .. InitPlayerName .. "' hit a friendly " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " ..
self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].PenaltyHit .. " times. Penalty: -" .. self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Penalty ..
". Score Total:" .. self.Players[InitPlayerName].Score - self.Players[InitPlayerName].Penalty,
- "",
- 2,
- "/PENALTY" .. InitPlayerName .. "/" .. InitUnitName
+ 2
):ToAll()
self:ScoreCSV( InitPlayerName, "HIT_PENALTY", 1, -25, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType )
else
@@ -11083,9 +11102,7 @@ function SCORING:_EventOnHit( Event )
MESSAGE:New( "Player '" .. InitPlayerName .. "' hit a target " .. TargetUnitCategory .. " ( " .. TargetType .. " ) " ..
self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].ScoreHit .. " times. Score: " .. self.Players[InitPlayerName].Hit[TargetCategory][TargetUnitName].Score ..
". Score Total:" .. self.Players[InitPlayerName].Score - self.Players[InitPlayerName].Penalty,
- "",
- 2,
- "/SCORE" .. InitPlayerName .. "/" .. InitUnitName
+ 2
):ToAll()
self:ScoreCSV( InitPlayerName, "HIT_SCORE", 1, 1, InitUnitName, InitUnitCoalition, InitUnitCategory, InitUnitType, TargetUnitName, TargetUnitCoalition, TargetUnitCategory, TargetUnitType )
end
@@ -11206,7 +11223,7 @@ function SCORING:ReportScoreAll()
PlayerMessage = PlayerMessage .. string.format( "Player '%s' Score:%d (%d Score -%d Penalties)%s", PlayerName, PlayerScore - PlayerPenalty, PlayerScore, PlayerPenalty, ScoreMessage )
end
end
- MESSAGE:New( PlayerMessage, "Player Scores", 30, "AllPlayerScores"):ToAll()
+ MESSAGE:New( PlayerMessage, 30, "Player Scores" ):ToAll()
end
@@ -11319,7 +11336,7 @@ function SCORING:ReportScorePlayer()
PlayerMessage = PlayerMessage .. string.format( "Player '%s' Score = %d ( %d Score, -%d Penalties ):%s", PlayerName, PlayerScore - PlayerPenalty, PlayerScore, PlayerPenalty, ScoreMessage )
end
end
- MESSAGE:New( PlayerMessage, "Player Scores", 30, "AllPlayerScores"):ToAll()
+ MESSAGE:New( PlayerMessage, 30, "Player Scores" ):ToAll()
end
@@ -11469,10 +11486,10 @@ end
--- CARGO Classes
-- @module CARGO
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Message" )
-Include.File( "Scheduler" )
+
+
+
+
--- Clients are those Groups defined within the Mission Editor that have the skillset defined as "Client" or "Player".
@@ -12546,20 +12563,32 @@ function CARGO_SLINGLOAD:UnLoad( Client, TargetZoneName )
return Cargo
end
---- Message System to display Messages for Clients and Coalitions or All.
--- Messages are grouped on the display panel per Category to improve readability for the players.
+--- This module contains the MESSAGE class.
+--
+-- 1) @{Message#MESSAGE} class, extends @{Base#BASE}
+-- =================================================
+-- Message System to display Messages to Clients, Coalitions or All.
-- Messages are shown on the display panel for an amount of seconds, and will then disappear.
--- Messages are identified by an ID. The messages with the same ID belonging to the same category will be overwritten if they were still being displayed on the display panel.
--- Messages are created with MESSAGE:@{New}().
--- Messages are sent to Clients with MESSAGE:@{ToClient}().
--- Messages are sent to Coalitions with MESSAGE:@{ToCoalition}().
--- Messages are sent to All Players with MESSAGE:@{ToAll}().
+-- Messages can contain a category which is indicating the category of the message.
+--
+-- 1.1) MESSAGE construction methods
+-- ---------------------------------
+-- Messages are created with MESSAGE:@{New}. Note that when the MESSAGE object is created, no message is sent yet.
+-- To send messages, you need to use the To functions.
+--
+-- 1.2) Send messages with MESSAGE To methods
+-- ------------------------------------------
+-- Messages are sent to:
+-- * Clients with MESSAGE:@{ToClient}().
+-- * Coalitions with MESSAGE:@{ToCoalition}().
+-- * All Players with MESSAGE:@{ToAll}().
+--
-- @module Message
-
-Include.File( "Base" )
+-- @author FlightControl
--- The MESSAGE class
-- @type MESSAGE
+-- @extends Base#BASE
MESSAGE = {
ClassName = "MESSAGE",
MessageCategory = 0,
@@ -12570,9 +12599,8 @@ MESSAGE = {
--- Creates a new MESSAGE object. Note that these MESSAGE objects are not yet displayed on the display panel. You must use the functions @{ToClient} or @{ToCoalition} or @{ToAll} to send these Messages to the respective recipients.
-- @param self
-- @param #string MessageText is the text of the Message.
--- @param #string MessageCategory is a string expressing the Category of the Message. Messages are grouped on the display panel per Category to improve readability.
-- @param #number MessageDuration is a number in seconds of how long the MESSAGE should be shown on the display panel.
--- @param #string MessageID is a string expressing the ID of the Message.
+-- @param #string MessageCategory (optional) is a string expressing the "category" of the Message. The category will be shown as the first text in the message followed by a ": ".
-- @return #MESSAGE
-- @usage
-- -- Create a series of new Messages.
@@ -12580,15 +12608,15 @@ MESSAGE = {
-- -- MessageRED is meant to be sent to the RED players only, for 10 seconds, and is classified as "End of Mission", with ID "Win".
-- -- MessageClient1 is meant to be sent to a Client, for 25 seconds, and is classified as "Score", with ID "Score".
-- -- MessageClient1 is meant to be sent to a Client, for 25 seconds, and is classified as "Score", with ID "Score".
--- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" )
--- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" )
--- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" )
--- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" )
-function MESSAGE:New( MessageText, MessageCategory, MessageDuration, MessageID )
+-- MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", 25, "End of Mission" )
+-- MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", 25, "Penalty" )
+-- MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", 25, "Score" )
+-- MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", 25, "Score")
+function MESSAGE:New( MessageText, MessageDuration, MessageCategory )
local self = BASE:Inherit( self, BASE:New() )
- self:F( { MessageText, MessageCategory, MessageDuration, MessageID } )
+ self:F( { MessageText, MessageDuration, MessageCategory } )
- -- When no messagecategory is given, we don't show it as a title...
+ -- When no MessageCategory is given, we don't show it as a title...
if MessageCategory and MessageCategory ~= "" then
self.MessageCategory = MessageCategory .. ": "
else
@@ -12596,7 +12624,6 @@ function MESSAGE:New( MessageText, MessageCategory, MessageDuration, MessageID )
end
self.MessageDuration = MessageDuration
- self.MessageID = MessageID
self.MessageTime = timer.getTime()
self.MessageText = MessageText
@@ -12722,89 +12749,89 @@ end
---- The MESSAGEQUEUE class
--- @type MESSAGEQUEUE
-MESSAGEQUEUE = {
- ClientGroups = {},
- CoalitionSides = {}
-}
-
-function MESSAGEQUEUE:New( RefreshInterval )
- local self = BASE:Inherit( self, BASE:New() )
- self:F( { RefreshInterval } )
-
- self.RefreshInterval = RefreshInterval
-
- --self.DisplayFunction = routines.scheduleFunction( self._DisplayMessages, { self }, 0, RefreshInterval )
- self.DisplayFunction = SCHEDULER:New( self, self._DisplayMessages, {}, 0, RefreshInterval )
-
- return self
-end
-
---- This function is called automatically by the MESSAGEQUEUE scheduler.
-function MESSAGEQUEUE:_DisplayMessages()
-
- -- First we display all messages that a coalition needs to receive... Also those who are not in a client (CA module clients...).
- for CoalitionSideID, CoalitionSideData in pairs( self.CoalitionSides ) do
- for MessageID, MessageData in pairs( CoalitionSideData.Messages ) do
- if MessageData.MessageSent == false then
- --trigger.action.outTextForCoalition( CoalitionSideID, MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration )
- MessageData.MessageSent = true
- end
- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime()
- if MessageTimeLeft <= 0 then
- MessageData = nil
- end
- end
- end
-
- -- Then we send the messages for each individual client, but also to be included are those Coalition messages for the Clients who belong to a coalition.
- -- Because the Client messages will overwrite the Coalition messages (for that Client).
- for ClientGroupName, ClientGroupData in pairs( self.ClientGroups ) do
- for MessageID, MessageData in pairs( ClientGroupData.Messages ) do
- if MessageData.MessageGroup == false then
- trigger.action.outTextForGroup( Group.getByName(ClientGroupName):getID(), MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration )
- MessageData.MessageGroup = true
- end
- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime()
- if MessageTimeLeft <= 0 then
- MessageData = nil
- end
- end
-
- -- Now check if the Client also has messages that belong to the Coalition of the Client...
- for CoalitionSideID, CoalitionSideData in pairs( self.CoalitionSides ) do
- for MessageID, MessageData in pairs( CoalitionSideData.Messages ) do
- local CoalitionGroup = Group.getByName( ClientGroupName )
- if CoalitionGroup and CoalitionGroup:getCoalition() == CoalitionSideID then
- if MessageData.MessageCoalition == false then
- trigger.action.outTextForGroup( Group.getByName(ClientGroupName):getID(), MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration )
- MessageData.MessageCoalition = true
- end
- end
- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime()
- if MessageTimeLeft <= 0 then
- MessageData = nil
- end
- end
- end
- end
-
- return true
-end
-
---- The _MessageQueue object is created when the MESSAGE class module is loaded.
---_MessageQueue = MESSAGEQUEUE:New( 0.5 )
-
+----- The MESSAGEQUEUE class
+---- @type MESSAGEQUEUE
+--MESSAGEQUEUE = {
+-- ClientGroups = {},
+-- CoalitionSides = {}
+--}
+--
+--function MESSAGEQUEUE:New( RefreshInterval )
+-- local self = BASE:Inherit( self, BASE:New() )
+-- self:F( { RefreshInterval } )
+--
+-- self.RefreshInterval = RefreshInterval
+--
+-- --self.DisplayFunction = routines.scheduleFunction( self._DisplayMessages, { self }, 0, RefreshInterval )
+-- self.DisplayFunction = SCHEDULER:New( self, self._DisplayMessages, {}, 0, RefreshInterval )
+--
+-- return self
+--end
+--
+----- This function is called automatically by the MESSAGEQUEUE scheduler.
+--function MESSAGEQUEUE:_DisplayMessages()
+--
+-- -- First we display all messages that a coalition needs to receive... Also those who are not in a client (CA module clients...).
+-- for CoalitionSideID, CoalitionSideData in pairs( self.CoalitionSides ) do
+-- for MessageID, MessageData in pairs( CoalitionSideData.Messages ) do
+-- if MessageData.MessageSent == false then
+-- --trigger.action.outTextForCoalition( CoalitionSideID, MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration )
+-- MessageData.MessageSent = true
+-- end
+-- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime()
+-- if MessageTimeLeft <= 0 then
+-- MessageData = nil
+-- end
+-- end
+-- end
+--
+-- -- Then we send the messages for each individual client, but also to be included are those Coalition messages for the Clients who belong to a coalition.
+-- -- Because the Client messages will overwrite the Coalition messages (for that Client).
+-- for ClientGroupName, ClientGroupData in pairs( self.ClientGroups ) do
+-- for MessageID, MessageData in pairs( ClientGroupData.Messages ) do
+-- if MessageData.MessageGroup == false then
+-- trigger.action.outTextForGroup( Group.getByName(ClientGroupName):getID(), MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration )
+-- MessageData.MessageGroup = true
+-- end
+-- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime()
+-- if MessageTimeLeft <= 0 then
+-- MessageData = nil
+-- end
+-- end
+--
+-- -- Now check if the Client also has messages that belong to the Coalition of the Client...
+-- for CoalitionSideID, CoalitionSideData in pairs( self.CoalitionSides ) do
+-- for MessageID, MessageData in pairs( CoalitionSideData.Messages ) do
+-- local CoalitionGroup = Group.getByName( ClientGroupName )
+-- if CoalitionGroup and CoalitionGroup:getCoalition() == CoalitionSideID then
+-- if MessageData.MessageCoalition == false then
+-- trigger.action.outTextForGroup( Group.getByName(ClientGroupName):getID(), MessageData.MessageCategory .. '\n' .. MessageData.MessageText:gsub("\n$",""):gsub("\n$",""), MessageData.MessageDuration )
+-- MessageData.MessageCoalition = true
+-- end
+-- end
+-- local MessageTimeLeft = ( MessageData.MessageTime + MessageData.MessageDuration ) - timer.getTime()
+-- if MessageTimeLeft <= 0 then
+-- MessageData = nil
+-- end
+-- end
+-- end
+-- end
+--
+-- return true
+--end
+--
+----- The _MessageQueue object is created when the MESSAGE class module is loaded.
+----_MessageQueue = MESSAGEQUEUE:New( 0.5 )
+--
--- Stages within a @{TASK} within a @{MISSION}. All of the STAGE functionality is considered internally administered and not to be used by any Mission designer.
-- @module STAGE
-- @author Flightcontrol
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Mission" )
-Include.File( "Client" )
-Include.File( "Task" )
+
+
+
+
+
--- The STAGE class
-- @type
@@ -13766,11 +13793,11 @@ _TransportStageAction = {
--- The TASK Classes define major end-to-end activities within a MISSION. The TASK Class is the Master Class to orchestrate these activities. From this class, many concrete TASK classes are inherited.
-- @module TASK
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Mission" )
-Include.File( "Client" )
-Include.File( "Stage" )
+
+
+
+
+
--- The TASK class
-- @type TASK
@@ -14231,8 +14258,6 @@ end
--- A GOHOMETASK orchestrates the travel back to the home base, which is a specific zone defined within the ME.
-- @module GOHOMETASK
-Include.File("Task")
-
--- The GOHOMETASK class
-- @type
GOHOMETASK = {
@@ -14269,7 +14294,7 @@ end
-- @see DESTROYUNITTYPESTASK
-- @see DESTROY_RADARS_TASK
-Include.File("Task")
+
--- The DESTROYBASETASK class
-- @type DESTROYBASETASK
@@ -14347,7 +14372,7 @@ end
--- DESTROYGROUPSTASK
-- @module DESTROYGROUPSTASK
-Include.File("DestroyBaseTask")
+
--- The DESTROYGROUPSTASK class
-- @type
@@ -14404,7 +14429,7 @@ end
--- Task class to destroy radar installations.
-- @module DESTROYRADARSTASK
-Include.File("DestroyBaseTask")
+
--- The DESTROYRADARS class
-- @type
@@ -14445,7 +14470,7 @@ end
--- Set TASK to destroy certain unit types.
-- @module DESTROYUNITTYPESTASK
-Include.File("DestroyBaseTask")
+
--- The DESTROYUNITTYPESTASK class
-- @type
@@ -14498,9 +14523,6 @@ end
-- @module PICKUPTASK
-- @parent TASK
-Include.File("Task")
-Include.File("Cargo")
-
--- The PICKUPTASK class
-- @type
PICKUPTASK = {
@@ -14653,7 +14675,7 @@ end
--- A DEPLOYTASK orchestrates the deployment of CARGO within a specific landing zone.
-- @module DEPLOYTASK
-Include.File( "Task" )
+
--- A DeployTask
-- @type DEPLOYTASK
@@ -14811,8 +14833,6 @@ end
--- A NOTASK is a dummy activity... But it will show a Mission Briefing...
-- @module NOTASK
-Include.File("Task")
-
--- The NOTASK class
-- @type
NOTASK = {
@@ -14880,11 +14900,6 @@ end
-- A @{CLIENT} needs to be registered within the @{MISSION} through the function @{AddClient}. A @{TASK} needs to be registered within the @{MISSION} through the function @{AddTask}.
-- @module Mission
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Client" )
-Include.File( "Task" )
-
--- The MISSION class
-- @type MISSION
-- @extends Base#BASE
@@ -15069,7 +15084,7 @@ function MISSION:ReportToAll()
for TaskID, TaskData in pairs( Tasks ) do
TaskText = TaskText .. " - Task " .. TaskID .. ": " .. TaskData.Name .. ": " .. TaskData:GetGoalProgress() .. "\n"
end
- MESSAGE:New( self.MissionCoalition .. ' "' .. self.Name .. '": ' .. self.MissionStatus .. ' ( ' .. self.MissionPriority .. ' mission )' .. AlivePlayers .. "\n" .. TaskText:gsub("\n$",""), "Mission Command: Mission Report", 10, self.Name .. '/Status'):ToAll()
+ MESSAGE:New( self.MissionCoalition .. ' "' .. self.Name .. '": ' .. self.MissionStatus .. ' ( ' .. self.MissionPriority .. ' mission )' .. AlivePlayers .. "\n" .. TaskText:gsub("\n$",""), 10, "Mission Command: Mission Report" ):ToAll()
end
@@ -15528,7 +15543,7 @@ function MISSIONSCHEDULER:TimeShow()
self.TimeIntervalCount = self.TimeIntervalCount + 1
if self.TimeIntervalCount >= self.TimeTriggerShow then
local TimeMsg = string.format("%00d", ( self.TimeSeconds / 60 ) - ( timer.getTime() / 60 )) .. ' minutes left until mission reload.'
- MESSAGE:New( TimeMsg, "Mission time", self.TimeShow, '/TimeMsg' ):ToAll()
+ MESSAGE:New( TimeMsg, self.TimeShow, "Mission time" ):ToAll()
self.TimeIntervalCount = 0
end
end
@@ -15551,11 +15566,11 @@ end
-- @module CleanUp
-- @author Flightcontrol
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Mission" )
-Include.File( "Client" )
-Include.File( "Task" )
+
+
+
+
+
--- The CLEANUP class.
-- @type CLEANUP
@@ -15607,7 +15622,6 @@ function CLEANUP:_DestroyGroup( GroupObject, CleanUpGroupName )
self:F( { GroupObject, CleanUpGroupName } )
if GroupObject then -- and GroupObject:isExist() then
- --MESSAGE:New( "Destroy Group " .. CleanUpGroupName, CleanUpGroupName, 1, CleanUpGroupName ):ToAll()
trigger.action.deactivateGroup(GroupObject)
self:T( { "GroupObject Destroyed", GroupObject } )
end
@@ -15621,7 +15635,6 @@ function CLEANUP:_DestroyUnit( CleanUpUnit, CleanUpUnitName )
self:F( { CleanUpUnit, CleanUpUnitName } )
if CleanUpUnit then
- --MESSAGE:New( "Destroy " .. CleanUpUnitName, CleanUpUnitName, 1, CleanUpUnitName ):ToAll()
local CleanUpGroup = Unit.getGroup(CleanUpUnit)
-- TODO Client bug in 1.5.3
if CleanUpGroup and CleanUpGroup:isExist() then
@@ -15691,7 +15704,6 @@ function CLEANUP:_EventCrash( Event )
self:F( { Event } )
--TODO: This stuff is not working due to a DCS bug. Burning units cannot be destroyed.
- --MESSAGE:New( "Crash ", "Crash", 10, "Crash" ):ToAll()
-- self:T("before getGroup")
-- local _grp = Unit.getGroup(event.initiator)-- Identify the group that fired
-- self:T("after getGroup")
@@ -15826,7 +15838,6 @@ function CLEANUP:_CleanUpScheduler()
--self:T( CleanUpUnitVec2 )
local CleanUpSurfaceType = land.getSurfaceType(CleanUpUnitVec2)
--self:T( CleanUpSurfaceType )
- --MESSAGE:New( "Surface " .. CleanUpUnitName .. " = " .. CleanUpSurfaceTypeText[CleanUpSurfaceType], CleanUpUnitName, 10, CleanUpUnitName ):ToAll()
if CleanUpUnit and CleanUpUnit:getLife() <= CleanUpUnit:getLife0() * 0.95 then
if CleanUpSurfaceType == land.SurfaceType.RUNWAY then
@@ -15858,7 +15869,6 @@ function CLEANUP:_CleanUpScheduler()
else
UnitData.CleanUpTime = timer.getTime()
UnitData.CleanUpMoved = true
- --MESSAGE:New( "Moved " .. CleanUpUnitName, CleanUpUnitName, 10, CleanUpUnitName ):ToAll()
end
end
@@ -15952,14 +15962,6 @@ end
-- @module Spawn
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Database" )
-Include.File( "Group" )
-Include.File( "Zone" )
-Include.File( "Event" )
-Include.File( "Scheduler" )
-
--- SPAWN Class
-- @type SPAWN
-- @extends Base#BASE
@@ -16661,7 +16663,7 @@ end
-- If no index is given, it will return the first group in the list.
-- @param #SPAWN self
-- @param #number SpawnIndex The index of the group to return.
--- @return Group#GROUP
+-- @return Group#GROUP self
function SPAWN:GetGroupFromIndex( SpawnIndex )
self:F( { self.SpawnTemplatePrefix, self.SpawnAliasPrefix, SpawnIndex } )
@@ -17147,8 +17149,6 @@ end
-- on defined intervals (currently every minute).
-- @module MOVEMENT
-Include.File( "Routines" )
-
--- the MOVEMENT class
-- @type
MOVEMENT = {
@@ -17275,13 +17275,6 @@ end
-- @author to be searched on the forum
-- @author (co) Flightcontrol (Modified and enriched with functionality)
-Include.File( "Routines" )
-Include.File( "Event" )
-Include.File( "Base" )
-Include.File( "Mission" )
-Include.File( "Client" )
-Include.File( "Task" )
-
--- The SEAD class
-- @type SEAD
-- @extends Base#BASE
@@ -17511,11 +17504,11 @@ end
-- @module Escort
-- @author FlightControl
-Include.File( "Routines" )
-Include.File( "Base" )
-Include.File( "Database" )
-Include.File( "Group" )
-Include.File( "Zone" )
+
+
+
+
+
---
-- @type ESCORT
@@ -18764,9 +18757,6 @@ end
-- @author FlightControl
-Include.File( "Client" )
-Include.File( "Scheduler" )
-
--- The MISSILETRAINER class
-- @type MISSILETRAINER
-- @extends Base#BASE
@@ -18911,9 +18901,9 @@ function MISSILETRAINER:InitMessagesOnOff( MessagesOnOff )
self.MessagesOnOff = MessagesOnOff
if self.MessagesOnOff == true then
- MESSAGE:New( "Messages ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Messages ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Messages OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Messages OFF", 15, "Menu" ):ToAll()
end
return self
@@ -18928,9 +18918,9 @@ function MISSILETRAINER:InitTrackingToAll( TrackingToAll )
self.TrackingToAll = TrackingToAll
if self.TrackingToAll == true then
- MESSAGE:New( "Missile tracking to all players ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Missile tracking to all players ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Missile tracking to all players OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Missile tracking to all players OFF", 15, "Menu" ):ToAll()
end
return self
@@ -18945,9 +18935,9 @@ function MISSILETRAINER:InitTrackingOnOff( TrackingOnOff )
self.TrackingOnOff = TrackingOnOff
if self.TrackingOnOff == true then
- MESSAGE:New( "Missile tracking ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Missile tracking ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Missile tracking OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Missile tracking OFF", 15, "Menu" ):ToAll()
end
return self
@@ -18966,7 +18956,7 @@ function MISSILETRAINER:InitTrackingFrequency( TrackingFrequency )
self.TrackingFrequency = 0.5
end
if self.TrackingFrequency then
- MESSAGE:New( "Missile tracking frequency is " .. self.TrackingFrequency .. " seconds.", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Missile tracking frequency is " .. self.TrackingFrequency .. " seconds.", 15, "Menu" ):ToAll()
end
return self
@@ -18981,9 +18971,9 @@ function MISSILETRAINER:InitAlertsToAll( AlertsToAll )
self.AlertsToAll = AlertsToAll
if self.AlertsToAll == true then
- MESSAGE:New( "Alerts to all players ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Alerts to all players ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Alerts to all players OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Alerts to all players OFF", 15, "Menu" ):ToAll()
end
return self
@@ -18998,9 +18988,9 @@ function MISSILETRAINER:InitAlertsHitsOnOff( AlertsHitsOnOff )
self.AlertsHitsOnOff = AlertsHitsOnOff
if self.AlertsHitsOnOff == true then
- MESSAGE:New( "Alerts Hits ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Alerts Hits ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Alerts Hits OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Alerts Hits OFF", 15, "Menu" ):ToAll()
end
return self
@@ -19015,9 +19005,9 @@ function MISSILETRAINER:InitAlertsLaunchesOnOff( AlertsLaunchesOnOff )
self.AlertsLaunchesOnOff = AlertsLaunchesOnOff
if self.AlertsLaunchesOnOff == true then
- MESSAGE:New( "Alerts Launches ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Alerts Launches ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Alerts Launches OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Alerts Launches OFF", 15, "Menu" ):ToAll()
end
return self
@@ -19032,9 +19022,9 @@ function MISSILETRAINER:InitRangeOnOff( DetailsRangeOnOff )
self.DetailsRangeOnOff = DetailsRangeOnOff
if self.DetailsRangeOnOff == true then
- MESSAGE:New( "Range display ON", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Range display ON", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Range display OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Range display OFF", 15, "Menu" ):ToAll()
end
return self
@@ -19049,9 +19039,9 @@ function MISSILETRAINER:InitBearingOnOff( DetailsBearingOnOff )
self.DetailsBearingOnOff = DetailsBearingOnOff
if self.DetailsBearingOnOff == true then
- MESSAGE:New( "Bearing display OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Bearing display OFF", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Bearing display OFF", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Bearing display OFF", 15, "Menu" ):ToAll()
end
return self
@@ -19066,9 +19056,9 @@ function MISSILETRAINER:InitMenusOnOff( MenusOnOff )
self.MenusOnOff = MenusOnOff
if self.MenusOnOff == true then
- MESSAGE:New( "Menus are ENABLED (only when a player rejoins a slot)", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Menus are ENABLED (only when a player rejoins a slot)", 15, "Menu" ):ToAll()
else
- MESSAGE:New( "Menus are DISABLED", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Menus are DISABLED", 15, "Menu" ):ToAll()
end
return self
@@ -19119,7 +19109,7 @@ function MISSILETRAINER._MenuMessages( MenuParameters )
if MenuParameters.Distance ~= nil then
self.Distance = MenuParameters.Distance
- MESSAGE:New( "Hit detection distance set to " .. self.Distance .. " meters", "Menu", 15, "ID" ):ToAll()
+ MESSAGE:New( "Hit detection distance set to " .. self.Distance .. " meters", 15, "Menu" ):ToAll()
end
end
@@ -19155,7 +19145,7 @@ function MISSILETRAINER:_EventShot( Event )
string.format( "%s launched a %s",
TrainerSourceUnit:GetTypeName(),
TrainerWeaponName
- ) .. self:_AddRange( Client, TrainerWeapon ) .. self:_AddBearing( Client, TrainerWeapon ),"Launch Alert", 5, "ID" )
+ ) .. self:_AddRange( Client, TrainerWeapon ) .. self:_AddBearing( Client, TrainerWeapon ), 5, "Launch Alert" )
if self.AlertsToAll then
Message:ToAll()
@@ -19270,7 +19260,7 @@ function MISSILETRAINER:_TrackMissiles()
TrainerWeapon:getTypeName(),
TrainerSourceUnit:GetTypeName(),
TrainerTargetUnit:GetPlayerName()
- ),"Hit Alert", 15, "ID" )
+ ), 15, "Hit Alert" )
if self.AlertsToAll == true then
Message:ToAll()
@@ -19291,7 +19281,7 @@ function MISSILETRAINER:_TrackMissiles()
string.format( "%s launched by %s self destructed!",
TrainerWeaponTypeName,
TrainerSourceUnit:GetTypeName()
- ),"Tracking", 5, "ID" )
+ ), 5, "Tracking" )
if self.AlertsToAll == true then
Message:ToAll()
@@ -19365,7 +19355,7 @@ function MISSILETRAINER:_TrackMissiles()
-- Once the Player Client and the Other Player Client tracking messages are prepared, show them.
if ClientData.MessageToClient ~= "" or ClientData.MessageToAll ~= "" then
- local Message = MESSAGE:New( ClientData.MessageToClient .. ClientData.MessageToAll, "Tracking", 1, "ID" ):ToClient( Client )
+ local Message = MESSAGE:New( ClientData.MessageToClient .. ClientData.MessageToAll, 1, "Tracking" ):ToClient( Client )
end
end
end
diff --git a/Moose Test Missions/Moose_Test_CLEANUP/Moose_Test_CLEANUP.lua b/Moose Test Missions/Moose_Test_CLEANUP/Moose_Test_CLEANUP.lua
index 1066f424a..fe8b75910 100644
--- a/Moose Test Missions/Moose_Test_CLEANUP/Moose_Test_CLEANUP.lua
+++ b/Moose Test Missions/Moose_Test_CLEANUP/Moose_Test_CLEANUP.lua
@@ -1,6 +1,6 @@
-Include.File( 'Cleanup' )
-Include.File( 'Spawn' )
-Include.File( 'Event')
+
+
+
Clean = CLEANUP:New( 'CLEAN_BATUMI', 180 )
diff --git a/Moose Test Missions/Moose_Test_CLEANUP/Moose_Test_CLEANUP.miz b/Moose Test Missions/Moose_Test_CLEANUP/Moose_Test_CLEANUP.miz
index 7dbf52cac..2ddd4a78b 100644
Binary files a/Moose Test Missions/Moose_Test_CLEANUP/Moose_Test_CLEANUP.miz and b/Moose Test Missions/Moose_Test_CLEANUP/Moose_Test_CLEANUP.miz differ
diff --git a/Moose Test Missions/Moose_Test_DATABASE/Moose_Test_DATABASE.lua b/Moose Test Missions/Moose_Test_DATABASE/Moose_Test_DATABASE.lua
deleted file mode 100644
index d299d3501..000000000
--- a/Moose Test Missions/Moose_Test_DATABASE/Moose_Test_DATABASE.lua
+++ /dev/null
@@ -1,108 +0,0 @@
-
-Include.File( 'UnitSet' )
-Include.File( 'GroupSet' )
-Include.File( 'Spawn' )
-
-DBBluePlanes = UNITSET:New()
- :FilterCoalitions( "blue" )
- :FilterCategories( "plane" )
- :FilterStart()
-
-DBRedVehicles = UNITSET:New()
- :FilterCoalitions( "red" )
- :FilterCategories( "ground" )
- :FilterStart()
-
-DBShips = UNITSET:New()
- :FilterCategories( "ship" )
- :FilterStart()
-
-DBBelgium = UNITSET:New()
- :FilterCategories( "helicopter" )
- :FilterCountries( "BELGIUM" )
- :FilterStart()
-
-DBNorthKorea = UNITSET:New()
- :FilterCountries( "NORTH_KOREA" )
- :FilterStart()
-
-DBKA50Vinson = UNITSET:New()
- :FilterTypes( { "Ka-50", "VINSON" } )
- :FilterStart()
-
-DBBluePlanesGroup = GROUPSET:New()
- :FilterCoalitions( "blue" )
- :FilterCategories( "plane" )
- :FilterStart()
-
-DBNorthKoreaGroup = GROUPSET:New()
- :FilterCountries( "NORTH_KOREA" )
- :FilterStart()
-
-DBBluePlanes:Flush()
-DBRedVehicles:Flush()
-DBShips:Flush()
-DBBelgium:Flush()
-DBNorthKorea:Flush()
-DBKA50Vinson:Flush()
-DBBluePlanesGroup:Flush()
-DBNorthKoreaGroup:Flush()
-
-
-SpawnUS_Plane = SPAWN:New( 'Database Spawn Test USA Plane')
-GroupUS_Plane = SpawnUS_Plane:Spawn()
-
-SpawnUS_Vehicle = SPAWN:New( 'Database Spawn Test USA Vehicle')
-GroupUS_Vehicle = SpawnUS_Vehicle:Spawn()
-
-SpawnUS_Ship = SPAWN:New( 'Database Spawn Test USA Ship')
-GroupUS_Ship = SpawnUS_Ship:Spawn()
-
-SpawnRU_Vehicle = SPAWN:New( 'Database Spawn Test RUSSIA Vehicle')
-GroupRU_Vehicle = SpawnRU_Vehicle:Spawn()
-
-SpawnRU_Ship = SPAWN:New( 'Database Spawn Test RUSSIA Ship')
-GroupRU_Ship = SpawnRU_Ship:Spawn()
-
-SpawnUS_AttackVehicle = SPAWN:New( 'Database Spawn Test USA Attack Vehicle' )
-SpawnRU_AttackVehicle = SPAWN:New( 'Database Spawn Test RUSSIA Attack Vehicle' )
-
-for i = 1, 2 do
- GroupRU_AttackVehicle = SpawnRU_AttackVehicle:SpawnInZone( ZONE:New("Spawn Zone RU"), true)
- GroupUS_AttackVehicle = SpawnUS_AttackVehicle:SpawnInZone( ZONE:New("Spawn Zone US"), true)
-end
-
-
---DBBlue:TraceDatabase()
-SCHEDULER:New( DBBluePlanes, DBBluePlanes.Flush, { }, 1 )
-SCHEDULER:New( DBRedVehicles, DBRedVehicles.Flush, { }, 1 )
-SCHEDULER:New( DBShips, DBShips.Flush, { }, 1 )
-SCHEDULER:New( DBBelgium, DBBelgium.Flush, { }, 1 )
-SCHEDULER:New( DBNorthKorea, DBNorthKorea.Flush, { }, 1 )
-SCHEDULER:New( DBKA50Vinson, DBKA50Vinson.Flush, { }, 1 )
-
-SCHEDULER:New( DBBluePlanesGroup, DBBluePlanesGroup.Flush, { }, 1 )
-SCHEDULER:New( DBNorthKoreaGroup, DBNorthKoreaGroup.Flush, { }, 1 )
-
-DBRedVehicles
- :ForEachUnit( function( MooseUnit )
- DBRedVehicles:T( MooseUnit:GetName() )
- end )
-
-local function FlushPlayers()
-
- _DATABASE:E( "FlushPlayers" )
- _DATABASE
- :ForEachPlayerAlive( function( Player )
- _DATABASE:E( Player )
- MESSAGE:New( Player, "Test", 5, "Player Test" ):ToAll()
- return true
- end )
- return true
-end
-
-_DATABASE:E( "Schedule" )
-local PlayerShow = SCHEDULER:New( nil, FlushPlayers, {}, 1, 10 )
-
-
-
diff --git a/Moose Test Missions/Moose_Test_DATABASE/Moose_Test_DATABASE.miz b/Moose Test Missions/Moose_Test_DATABASE/Moose_Test_DATABASE.miz
deleted file mode 100644
index 0ec5118d7..000000000
Binary files a/Moose Test Missions/Moose_Test_DATABASE/Moose_Test_DATABASE.miz and /dev/null differ
diff --git a/Moose Test Missions/Moose_Test_DESTROY/MOOSE_Test_DESTROY.miz b/Moose Test Missions/Moose_Test_DESTROY/MOOSE_Test_DESTROY.miz
index adef34e4c..e1d4bb895 100644
Binary files a/Moose Test Missions/Moose_Test_DESTROY/MOOSE_Test_DESTROY.miz and b/Moose Test Missions/Moose_Test_DESTROY/MOOSE_Test_DESTROY.miz differ
diff --git a/Moose Test Missions/Moose_Test_DESTROY/Moose_Test_DESTROY.lua b/Moose Test Missions/Moose_Test_DESTROY/Moose_Test_DESTROY.lua
index 2caa20805..a6efabd7f 100644
--- a/Moose Test Missions/Moose_Test_DESTROY/Moose_Test_DESTROY.lua
+++ b/Moose Test Missions/Moose_Test_DESTROY/Moose_Test_DESTROY.lua
@@ -1,13 +1,3 @@
--- MOOSE include files.
-Include.File( "Mission" )
-Include.File( "Client" )
-Include.File( "DestroyGroupsTask" )
-Include.File( "DestroyRadarsTask" )
-Include.File( "DestroyUnitTypesTask" )
-Include.File( "Group" )
-Include.File( "Unit" )
-Include.File( "Zone" )
-Include.File( "Event" )
do
local Mission = MISSION:New( 'Destroy Gound', 'Ground', 'Briefing', 'CCCP' )
diff --git a/Moose Test Missions/Moose_Test_ESCORT/MOOSE_Test_ESCORT.lua b/Moose Test Missions/Moose_Test_ESCORT/MOOSE_Test_ESCORT.lua
index e6803dad4..732b5b5ac 100644
--- a/Moose Test Missions/Moose_Test_ESCORT/MOOSE_Test_ESCORT.lua
+++ b/Moose Test Missions/Moose_Test_ESCORT/MOOSE_Test_ESCORT.lua
@@ -1,7 +1,7 @@
-Include.File( "Mission" )
-Include.File( "Client" )
-Include.File( "Spawn" )
-Include.File( "Escort" )
+
+
+
+
diff --git a/Moose Test Missions/Moose_Test_ESCORT/MOOSE_Test_ESCORT.miz b/Moose Test Missions/Moose_Test_ESCORT/MOOSE_Test_ESCORT.miz
index 17306c194..355f1f252 100644
Binary files a/Moose Test Missions/Moose_Test_ESCORT/MOOSE_Test_ESCORT.miz and b/Moose Test Missions/Moose_Test_ESCORT/MOOSE_Test_ESCORT.miz differ
diff --git a/Moose Test Missions/Moose_Test_MISSILETRAINER/Moose_Test_MISSILETRAINER.lua b/Moose Test Missions/Moose_Test_MISSILETRAINER/Moose_Test_MISSILETRAINER.lua
index c8d4596ff..b28f6644d 100644
--- a/Moose Test Missions/Moose_Test_MISSILETRAINER/Moose_Test_MISSILETRAINER.lua
+++ b/Moose Test Missions/Moose_Test_MISSILETRAINER/Moose_Test_MISSILETRAINER.lua
@@ -2,7 +2,7 @@
-- Only use Include.File when developing new MOOSE classes.
-- When using Moose.lua in the DO SCIPTS FILE initialization box,
-- these Include.File statements are not needed, because all classes within Moose will be loaded.
-Include.File("MissileTrainer")
+
-- This is an example of a global
local Trainer = MISSILETRAINER
diff --git a/Moose Test Missions/Moose_Test_MISSILETRAINER/Moose_Test_MISSILETRAINER.miz b/Moose Test Missions/Moose_Test_MISSILETRAINER/Moose_Test_MISSILETRAINER.miz
index 018d968c3..69c931104 100644
Binary files a/Moose Test Missions/Moose_Test_MISSILETRAINER/Moose_Test_MISSILETRAINER.miz and b/Moose Test Missions/Moose_Test_MISSILETRAINER/Moose_Test_MISSILETRAINER.miz differ
diff --git a/Moose Test Missions/Moose_Test_SEAD/MOOSE_Test_SEAD.miz b/Moose Test Missions/Moose_Test_SEAD/MOOSE_Test_SEAD.miz
index b154eabb3..07d8b34a1 100644
Binary files a/Moose Test Missions/Moose_Test_SEAD/MOOSE_Test_SEAD.miz and b/Moose Test Missions/Moose_Test_SEAD/MOOSE_Test_SEAD.miz differ
diff --git a/Moose Test Missions/Moose_Test_SEAD/Moose_Test_SEAD.lua b/Moose Test Missions/Moose_Test_SEAD/Moose_Test_SEAD.lua
index 736f8600e..ea28a16be 100644
--- a/Moose Test Missions/Moose_Test_SEAD/Moose_Test_SEAD.lua
+++ b/Moose Test Missions/Moose_Test_SEAD/Moose_Test_SEAD.lua
@@ -1,4 +1,4 @@
-Include.File( "Sead" )
+
-- CCCP SEAD Defenses
diff --git a/Moose Test Missions/Moose_Test_SET_GROUP/Moose_Test_SET_GROUP.lua b/Moose Test Missions/Moose_Test_SET_GROUP/Moose_Test_SET_GROUP.lua
index d5ed824df..be6eb4cad 100644
--- a/Moose Test Missions/Moose_Test_SET_GROUP/Moose_Test_SET_GROUP.lua
+++ b/Moose Test Missions/Moose_Test_SET_GROUP/Moose_Test_SET_GROUP.lua
@@ -1,6 +1,6 @@
-Include.File( 'Set' )
-Include.File( 'Spawn' )
+
+
SetVehicles = SET_GROUP:New()
diff --git a/Moose Test Missions/Moose_Test_SET_GROUP/Moose_Test_SET_GROUP.miz b/Moose Test Missions/Moose_Test_SET_GROUP/Moose_Test_SET_GROUP.miz
index d479a16e0..0dfc8dcb6 100644
Binary files a/Moose Test Missions/Moose_Test_SET_GROUP/Moose_Test_SET_GROUP.miz and b/Moose Test Missions/Moose_Test_SET_GROUP/Moose_Test_SET_GROUP.miz differ
diff --git a/Moose Test Missions/Moose_Test_SPAWN/MOOSE_Test_SPAWN.lua b/Moose Test Missions/Moose_Test_SPAWN/MOOSE_Test_SPAWN.lua
index c2f784faa..cbab519b1 100644
--- a/Moose Test Missions/Moose_Test_SPAWN/MOOSE_Test_SPAWN.lua
+++ b/Moose Test Missions/Moose_Test_SPAWN/MOOSE_Test_SPAWN.lua
@@ -1,4 +1,4 @@
-Include.File( "Spawn" )
+
-- Tests Anapa: Spawn Basics
diff --git a/Moose Test Missions/Moose_Test_SPAWN/MOOSE_Test_SPAWN.miz b/Moose Test Missions/Moose_Test_SPAWN/MOOSE_Test_SPAWN.miz
index f29ec7778..d7288cbcd 100644
Binary files a/Moose Test Missions/Moose_Test_SPAWN/MOOSE_Test_SPAWN.miz and b/Moose Test Missions/Moose_Test_SPAWN/MOOSE_Test_SPAWN.miz differ
diff --git a/Moose Test Missions/Moose_Test_SPAWN_Repeat/MOOSE_Test_SPAWN_Repeat.lua b/Moose Test Missions/Moose_Test_SPAWN_Repeat/MOOSE_Test_SPAWN_Repeat.lua
index 5dbb5b963..76f282b8c 100644
--- a/Moose Test Missions/Moose_Test_SPAWN_Repeat/MOOSE_Test_SPAWN_Repeat.lua
+++ b/Moose Test Missions/Moose_Test_SPAWN_Repeat/MOOSE_Test_SPAWN_Repeat.lua
@@ -10,7 +10,7 @@
-- @author FlightControl
-Include.File("Spawn")
+
do
diff --git a/Moose Test Missions/Moose_Test_SPAWN_Repeat/MOOSE_Test_SPAWN_Repeat.miz b/Moose Test Missions/Moose_Test_SPAWN_Repeat/MOOSE_Test_SPAWN_Repeat.miz
index 42de42467..1855e720b 100644
Binary files a/Moose Test Missions/Moose_Test_SPAWN_Repeat/MOOSE_Test_SPAWN_Repeat.miz and b/Moose Test Missions/Moose_Test_SPAWN_Repeat/MOOSE_Test_SPAWN_Repeat.miz differ
diff --git a/Moose Test Missions/Moose_Test_TASK_Pickup_and_Deploy/MOOSE_Test_TASK_Pickup_and_Deploy.lua b/Moose Test Missions/Moose_Test_TASK_Pickup_and_Deploy/MOOSE_Test_TASK_Pickup_and_Deploy.lua
index 53728aaa4..28bf2a9d8 100644
--- a/Moose Test Missions/Moose_Test_TASK_Pickup_and_Deploy/MOOSE_Test_TASK_Pickup_and_Deploy.lua
+++ b/Moose Test Missions/Moose_Test_TASK_Pickup_and_Deploy/MOOSE_Test_TASK_Pickup_and_Deploy.lua
@@ -1,15 +1,15 @@
-Include.File( "Mission" )
-Include.File( "Client" )
-Include.File( "DeployTask" )
-Include.File( "PickupTask" )
-Include.File( "DestroyGroupsTask" )
-Include.File( "DestroyRadarsTask" )
-Include.File( "DestroyUnitTypesTask" )
-Include.File( "GoHomeTask" )
-Include.File( "Spawn" )
-Include.File( "Movement" )
-Include.File( "Sead" )
-Include.File( "CleanUp" )
+
+
+
+
+
+
+
+
+
+
+
+
do
local Mission = MISSION:New( 'Pickup', 'Operational', 'Pickup Troops', 'NATO' )
diff --git a/Moose Test Missions/Moose_Test_TASK_Pickup_and_Deploy/MOOSE_Test_TASK_Pickup_and_Deploy.miz b/Moose Test Missions/Moose_Test_TASK_Pickup_and_Deploy/MOOSE_Test_TASK_Pickup_and_Deploy.miz
index 0ac932082..9930ee92b 100644
Binary files a/Moose Test Missions/Moose_Test_TASK_Pickup_and_Deploy/MOOSE_Test_TASK_Pickup_and_Deploy.miz and b/Moose Test Missions/Moose_Test_TASK_Pickup_and_Deploy/MOOSE_Test_TASK_Pickup_and_Deploy.miz differ
diff --git a/Moose Test Missions/Moose_Test_WRAPPER/Moose_Test_WRAPPER.lua b/Moose Test Missions/Moose_Test_WRAPPER/Moose_Test_WRAPPER.lua
index dc09e4e7d..d05eb4b02 100644
--- a/Moose Test Missions/Moose_Test_WRAPPER/Moose_Test_WRAPPER.lua
+++ b/Moose Test Missions/Moose_Test_WRAPPER/Moose_Test_WRAPPER.lua
@@ -1,7 +1,7 @@
-Include.File( "Group" )
-Include.File( "Unit" )
-Include.File( "Client" )
+
+
+
BASE:TraceClass( "UNIT" )
BASE:TraceClass( "GROUP" )
diff --git a/Moose Test Missions/Moose_Test_WRAPPER/Moose_Test_WRAPPER.miz b/Moose Test Missions/Moose_Test_WRAPPER/Moose_Test_WRAPPER.miz
index 8957c9541..b4fd92676 100644
Binary files a/Moose Test Missions/Moose_Test_WRAPPER/Moose_Test_WRAPPER.miz and b/Moose Test Missions/Moose_Test_WRAPPER/Moose_Test_WRAPPER.miz differ
diff --git a/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.lua b/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.lua
index d9bbe059d..cfdfbbf70 100644
--- a/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.lua
+++ b/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.lua
@@ -1,7 +1,7 @@
-Include.File( "Zone" )
-Include.File( "Group" )
-Include.File( "Scheduler" )
+
+
+
local GroupInside = GROUP:FindByName( "Test Inside Polygon" )
local GroupOutside = GROUP:FindByName( "Test Outside Polygon" )
diff --git a/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.miz b/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.miz
index b080d8a4c..82222cecf 100644
Binary files a/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.miz and b/Moose Test Missions/Moose_Test_ZONE/Moose_Test_ZONE.miz differ
diff --git a/Moose Test Missions/Moose_Test_ZONE_POLYGON/Moose_Test_ZONE_POLYGON.lua b/Moose Test Missions/Moose_Test_ZONE_POLYGON/Moose_Test_ZONE_POLYGON.lua
index bfa24fa60..55404345d 100644
--- a/Moose Test Missions/Moose_Test_ZONE_POLYGON/Moose_Test_ZONE_POLYGON.lua
+++ b/Moose Test Missions/Moose_Test_ZONE_POLYGON/Moose_Test_ZONE_POLYGON.lua
@@ -1,7 +1,7 @@
-Include.File( "Zone" )
-Include.File( "Group" )
-Include.File( "Scheduler" )
+
+
+
local GroupInside = GROUP:FindByName( "Test Inside Polygon" )
local GroupOutside = GROUP:FindByName( "Test Outside Polygon" )
diff --git a/Moose Test Missions/Moose_Test_ZONE_POLYGON/Moose_Test_ZONE_POLYGON.miz b/Moose Test Missions/Moose_Test_ZONE_POLYGON/Moose_Test_ZONE_POLYGON.miz
index 3d83bba99..83e754f6a 100644
Binary files a/Moose Test Missions/Moose_Test_ZONE_POLYGON/Moose_Test_ZONE_POLYGON.miz and b/Moose Test Missions/Moose_Test_ZONE_POLYGON/Moose_Test_ZONE_POLYGON.miz differ
diff --git a/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.lua b/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.lua
index 1d01e5451..34d4c7699 100644
--- a/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.lua
+++ b/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.lua
@@ -1,7 +1,7 @@
-Include.File( "Zone" )
-Include.File( "Group" )
-Include.File( "Scheduler" )
+
+
+
local GroupInside = GROUP:FindByName( "Test Inside Polygon" )
local GroupOutside = GROUP:FindByName( "Test Outside Polygon" )
diff --git a/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.miz b/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.miz
index 0ebf5cfa9..7fdebb91a 100644
Binary files a/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.miz and b/Moose Test Missions/Moose_Test_ZONE_RADIUS/Moose_Test_ZONE_RADIUS.miz differ
diff --git a/Moose Test Missions/Moose_Test_ZONE_UNIT/Moose_Test_ZONE_UNIT.lua b/Moose Test Missions/Moose_Test_ZONE_UNIT/Moose_Test_ZONE_UNIT.lua
index 3573a123c..a034ab8d5 100644
--- a/Moose Test Missions/Moose_Test_ZONE_UNIT/Moose_Test_ZONE_UNIT.lua
+++ b/Moose Test Missions/Moose_Test_ZONE_UNIT/Moose_Test_ZONE_UNIT.lua
@@ -1,7 +1,7 @@
-Include.File( "Zone" )
-Include.File( "Group" )
-Include.File( "Scheduler" )
+
+
+
local GroupInside = GROUP:FindByName( "Test Inside Polygon" )
local GroupOutside = GROUP:FindByName( "Test Outside Polygon" )
diff --git a/Moose Test Missions/Moose_Test_ZONE_UNIT/Moose_Test_ZONE_UNIT.miz b/Moose Test Missions/Moose_Test_ZONE_UNIT/Moose_Test_ZONE_UNIT.miz
index ec99c5cac..69196e86d 100644
Binary files a/Moose Test Missions/Moose_Test_ZONE_UNIT/Moose_Test_ZONE_UNIT.miz and b/Moose Test Missions/Moose_Test_ZONE_UNIT/Moose_Test_ZONE_UNIT.miz differ
diff --git a/Moose Training/Documentation/GroupSet.html b/Moose Training/Documentation/GroupSet.html
deleted file mode 100644
index e0ae7f72c..000000000
--- a/Moose Training/Documentation/GroupSet.html
+++ /dev/null
@@ -1,620 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
Module GroupSet
-
-
Create and manage a set of groups.
-
-
-
-
-
Mission designers can use the GROUPSET class to build sets of groups belonging to certain:
-
-
- Coalitions
- Categories
- Countries
- Starting with certain prefix strings.
-
-
-
GROUPSET construction methods:
-
Create a new GROUPSET object with the GROUPSET.New method:
-
-
-
-
-
GROUPSET filter criteria:
-
You can set filter criteria to define the set of groups within the GROUPSET.
-Filter criteria are defined by:
-
-
-
-
Once the filter criteria have been set for the GROUPSET, you can start filtering using:
-
-
-
-
Planned filter criteria within development are (so these are not yet available):
-
-
-
-
-
GROUPSET iterators:
-
Once the filters have been defined and the GROUPSET has been built, you can iterate the GROUPSET with the available iterator methods.
-The iterator methods will walk the GROUPSET set, and call for each element within the set a function that you provide.
-The following iterator methods are currently available within the GROUPSET:
-
-
-
-
-
Global(s)
-
-
-
-
-
Global(s)
-
-
-
- #GROUPSET
-
-GROUPSET
-
-
-
-
-
-
-
-
-
-
-
-
-
GROUPSET class
-
-
Field(s)
-
-
-
-
-GROUPSET:AddInDatabase(Event)
-
-
-
-
-Handles the Database to check on an event (birth) that the Object was added in the Database.
-
-
-This is required, because sometimes the _DATABASE birth event gets called later than the SET birth event!
-
- Parameter
-
- Return values
-
-
-
-#string:
-The name of the GROUP
-
-
-
-
-#table:
-The GROUP
-
-
-
-
-
-
-
-
- #string
-
-GROUPSET.ClassName
-
-
-
-
-
-
-
-
-
-
-
-
-
-GROUPSET.Filter
-
-
-
-
-
-
-
-
-
-
-
-
-GROUPSET:FilterCategories(Categories)
-
-
-
-
-Builds a set of groups out of categories.
-
-
-Possible current categories are plane, helicopter, ground, ship.
-
- Parameter
-
- Return value
-
-#GROUPSET :
-self
-
-
-
-
-
-
-
-GROUPSET:FilterCoalitions(Coalitions)
-
-
-
-
-Builds a set of groups of coalitions.
-
-
-Possible current coalitions are red, blue and neutral.
-
- Parameter
-
- Return value
-
-#GROUPSET :
-self
-
-
-
-
-
-
-
-GROUPSET:FilterCountries(Countries)
-
-
-
-
-Builds a set of groups of defined countries.
-
-
-Possible current countries are those known within DCS world.
-
- Parameter
-
- Return value
-
-#GROUPSET :
-self
-
-
-
-
-
-
-
-
-GROUPSET.FilterMeta
-
-
-
-
-
-
-
-
-
-
-
-
-GROUPSET:FilterPrefixes(Prefixes)
-
-
-
-
-Builds a set of groups of defined GROUP prefixes.
-
-
-All the groups starting with the given prefixes will be included within the set.
-
- Parameter
-
- Return value
-
-#GROUPSET :
-self
-
-
-
-
-
-
-
-GROUPSET:FilterStart()
-
-
-
-
-Starts the filtering.
-
- Return value
-
-#GROUPSET :
-self
-
-
-
-
-
-
-
-GROUPSET:FindGroup(GroupName)
-
-
-
-
-Finds a Group based on the Group Name.
-
- Parameter
-
-
-
-#string GroupName :
-
-
-
- Return value
-
-Group#GROUP :
-The found Group.
-
-
-
-
-
-
-
-GROUPSET:FindInDatabase(Event)
-
-
-
-
-Handles the Database to check on any event that Object exists in the Database.
-
-
-This is required, because sometimes the _DATABASE event gets called later than the SET event or vise versa!
-
- Parameter
-
- Return values
-
-
-
-#string:
-The name of the GROUP
-
-
-
-
-#table:
-The GROUP
-
-
-
-
-
-
-
-
-
-GROUPSET:ForEachGroup(IteratorFunction, ...)
-
-
-
-
-Interate the GROUPSET and call an interator function for each alive GROUP, providing the GROUP and optional parameters.
-
- Parameters
-
- Return value
-
-#GROUPSET :
-self
-
-
-
-
-
-
-
-GROUPSET:IsIncludeObject(MooseGroup)
-
-
-
-
-
-
- Parameter
-
- Return value
-
-#GROUPSET :
-self
-
-
-
-
-
-
-
-GROUPSET:New()
-
-
-
-
-Creates a new GROUPSET object, building a set of groups belonging to a coalitions, categories, countries, types or with defined prefix names.
-
- Return value
-
-#GROUPSET :
-
-
- Usage:
- -- Define a new GROUPSET Object. This DBObject will contain a reference to all alive GROUPS.
-DBObject = GROUPSET:New()
-
-
-
-
-
-
-
-
-
diff --git a/Moose Training/Documentation/Message.html b/Moose Training/Documentation/Message.html
index b272f052c..b19eb8463 100644
--- a/Moose Training/Documentation/Message.html
+++ b/Moose Training/Documentation/Message.html
@@ -71,16 +71,28 @@
Module Message
-
Message System to display Messages for Clients and Coalitions or All.
+
This module contains the MESSAGE class.
-
Messages are grouped on the display panel per Category to improve readability for the players.
+
+
+
Message System to display Messages to Clients, Coalitions or All.
Messages are shown on the display panel for an amount of seconds, and will then disappear.
-Messages are identified by an ID. The messages with the same ID belonging to the same category will be overwritten if they were still being displayed on the display panel.
-Messages are created with MESSAGE:New ().
-Messages are sent to Clients with MESSAGE:ToClient ().
-Messages are sent to Coalitions with MESSAGE:ToCoalition ().
-Messages are sent to All Players with MESSAGE:ToAll ().
+Messages can contain a category which is indicating the category of the message.
+
+
1.1) MESSAGE construction methods
+
Messages are created with Message#MESSAGE.New . Note that when the MESSAGE object is created, no message is sent yet.
+To send messages, you need to use the To functions.
+
+
1.2) Send messages with MESSAGE To methods
+
Messages are sent to:
+
+
Global(s)
@@ -118,7 +124,7 @@ Messages are sent to All Players with MESSAGE:
ToAll ().<
- MESSAGE:New(MessageText, MessageCategory, MessageDuration, MessageID)
+ MESSAGE:New(MessageText, MessageDuration, MessageCategory)
Creates a new MESSAGE object.
@@ -151,34 +157,6 @@ Messages are sent to All Players with MESSAGE:ToAll ().<
MESSAGE:ToRed()
Sends a MESSAGE to the Red Coalition.
-
-
-
-
-
-
@@ -196,20 +174,6 @@ Messages are sent to All Players with MESSAGE:
ToAll ().<
-
-
-
-
-
- #MESSAGEQUEUE
-
-MESSAGEQUEUE
-
-
-
-
-
-
@@ -265,7 +229,7 @@ Messages are sent to All Players with MESSAGE:
ToAll ().<
-MESSAGE:New(MessageText, MessageCategory, MessageDuration, MessageID)
+MESSAGE:New(MessageText, MessageDuration, MessageCategory)
@@ -285,20 +249,14 @@ is the text of the Message.
-#string MessageCategory :
-is a string expressing the Category of the Message. Messages are grouped on the display panel per Category to improve readability.
-
-
-
-
#number MessageDuration :
is a number in seconds of how long the MESSAGE should be shown on the display panel.
-#string MessageID :
-is a string expressing the ID of the Message.
+#string MessageCategory :
+(optional) is a string expressing the "category" of the Message. The category will be shown as the first text in the message followed by a ": ".
@@ -313,10 +271,10 @@ is a string expressing the ID of the Message.
-- MessageRED is meant to be sent to the RED players only, for 10 seconds, and is classified as "End of Mission", with ID "Win".
-- MessageClient1 is meant to be sent to a Client, for 25 seconds, and is classified as "Score", with ID "Score".
-- MessageClient1 is meant to be sent to a Client, for 25 seconds, and is classified as "Score", with ID "Score".
-MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", "End of Mission", 25, "Win" )
-MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" )
-MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", "Score", 25, "Score" )
-MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", "Score", 25, "Score" )
+MessageAll = MESSAGE:New( "To all Players: BLUE has won! Each player of BLUE wins 50 points!", 25, "End of Mission" )
+MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", 25, "Penalty" )
+MessageClient1 = MESSAGE:New( "Congratulations, you've just hit a target", 25, "Score" )
+MessageClient2 = MESSAGE:New( "Congratulations, you've just killed a target", 25, "Score")
@@ -481,74 +439,6 @@ or
MessageRED = MESSAGE:New( "To the RED Players: You receive a penalty because you've killed one of your own units", "Penalty", 25, "Score" )
MessageRED:ToRed()
-
-
-
-
-
-
The MESSAGEQUEUE class
-
-
Field(s)
-
-
-
-
-
-MESSAGEQUEUE.ClientGroups
-
-
-
-
-
-
-
-
-
-
-
-
-
-MESSAGEQUEUE.CoalitionSides
-
-
-
-
-
-
-
-
-
-
-
-
-MESSAGEQUEUE:New(RefreshInterval)
-
-
-
-
-
-
- Parameter
-
-
-
- RefreshInterval :
-
-
-
-
-
-
-
-
-
-MESSAGEQUEUE:_DisplayMessages()
-
-
-
-
-This function is called automatically by the MESSAGEQUEUE scheduler.
-
diff --git a/Moose Training/Documentation/Spawn.html b/Moose Training/Documentation/Spawn.html
index dd8c1ec10..ef75c88e3 100644
--- a/Moose Training/Documentation/Spawn.html
+++ b/Moose Training/Documentation/Spawn.html
@@ -777,8 +777,8 @@ The index of the group to return.
Return value
-
Group#GROUP :
-
+
Group#GROUP :
+self
diff --git a/Moose Training/Documentation/UnitSet.html b/Moose Training/Documentation/UnitSet.html
deleted file mode 100644
index 4f6d4cbad..000000000
--- a/Moose Training/Documentation/UnitSet.html
+++ /dev/null
@@ -1,685 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
Module UnitSet
-
-
Create and manage a set of units.
-
-
-
-
-
Mission designers can use the UNITSET class to build sets of units belonging to certain:
-
-
- Coalitions
- Categories
- Countries
- Unit types
- Starting with certain prefix strings.
-
-
-
UNITSET construction methods:
-
Create a new UNITSET object with the UNITSET.New method:
-
-
-
-
-
UNITSET filter criteria:
-
You can set filter criteria to define the set of units within the UNITSET.
-Filter criteria are defined by:
-
-
-
-
Once the filter criteria have been set for the UNITSET, you can start filtering using:
-
-
-
-
Planned filter criteria within development are (so these are not yet available):
-
-
-
-
-
UNITSET iterators:
-
Once the filters have been defined and the UNITSET has been built, you can iterate the UNITSET with the available iterator methods.
-The iterator methods will walk the UNITSET set, and call for each element within the set a function that you provide.
-The following iterator methods are currently available within the UNITSET:
-
-
-
-
Planned iterators methods in development are (so these are not yet available):
-
-
-
-
-
Global(s)
-
-
-
-
-
Global(s)
-
-
-
- #UNITSET
-
-UNITSET
-
-
-
-
-
-
-
-
-
-
-
-
-
UNITSET class
-
-
Field(s)
-
-
-
-
-UNITSET:AddInDatabase(Event)
-
-
-
-
-Handles the Database to check on an event (birth) that the Object was added in the Database.
-
-
-This is required, because sometimes the _DATABASE birth event gets called later than the SET birth event!
-
- Parameter
-
- Return values
-
-
-
-#string:
-The name of the UNIT
-
-
-
-
-#table:
-The UNIT
-
-
-
-
-
-
-
-
- #string
-
-UNITSET.ClassName
-
-
-
-
-
-
-
-
-
-
-
-
-
-UNITSET.Filter
-
-
-
-
-
-
-
-
-
-
-
-
-UNITSET:FilterCategories(Categories)
-
-
-
-
-Builds a set of units out of categories.
-
-
-Possible current categories are plane, helicopter, ground, ship.
-
- Parameter
-
- Return value
-
-#UNITSET :
-self
-
-
-
-
-
-
-
-UNITSET:FilterCoalitions(Coalitions)
-
-
-
-
-Builds a set of units of coalitions.
-
-
-Possible current coalitions are red, blue and neutral.
-
- Parameter
-
- Return value
-
-#UNITSET :
-self
-
-
-
-
-
-
-
-UNITSET:FilterCountries(Countries)
-
-
-
-
-Builds a set of units of defined countries.
-
-
-Possible current countries are those known within DCS world.
-
- Parameter
-
- Return value
-
-#UNITSET :
-self
-
-
-
-
-
-
-
-
-UNITSET.FilterMeta
-
-
-
-
-
-
-
-
-
-
-
-
-UNITSET:FilterPrefixes(Prefixes)
-
-
-
-
-Builds a set of units of defined unit prefixes.
-
-
-All the units starting with the given prefixes will be included within the set.
-
- Parameter
-
- Return value
-
-#UNITSET :
-self
-
-
-
-
-
-
-
-UNITSET:FilterStart()
-
-
-
-
-Starts the filtering.
-
- Return value
-
-#UNITSET :
-self
-
-
-
-
-
-
-
-UNITSET:FilterTypes(Types)
-
-
-
-
-Builds a set of units of defined unit types.
-
-
-Possible current types are those types known within DCS world.
-
- Parameter
-
- Return value
-
-#UNITSET :
-self
-
-
-
-
-
-
-
-UNITSET:FindInDatabase(Event)
-
-
-
-
-Handles the Database to check on any event that Object exists in the Database.
-
-
-This is required, because sometimes the _DATABASE event gets called later than the SET event or vise versa!
-
- Parameter
-
- Return values
-
-
-
-#string:
-The name of the UNIT
-
-
-
-
-#table:
-The UNIT
-
-
-
-
-
-
-
-
-
-UNITSET:FindUnit(UnitName)
-
-
-
-
-Finds a Unit based on the Unit Name.
-
- Parameter
-
-
-
-#string UnitName :
-
-
-
- Return value
-
-Unit#UNIT :
-The found Unit.
-
-
-
-
-
-
-
-UNITSET:ForEachUnit(IteratorFunction, ...)
-
-
-
-
-Interate the UNITSET and call an interator function for each alive UNIT, providing the UNIT and optional parameters.
-
- Parameters
-
- Return value
-
-#UNITSET :
-self
-
-
-
-
-
-
-
-UNITSET:IsIncludeObject(MUnit)
-
-
-
-
-
-
- Parameter
-
- Return value
-
-#UNITSET :
-self
-
-
-
-
-
-
-
-UNITSET:New()
-
-
-
-
-Creates a new UNITSET object, building a set of units belonging to a coalitions, categories, countries, types or with defined prefix names.
-
- Return value
-
-#UNITSET :
-
-
- Usage:
- -- Define a new UNITSET Object. This DBObject will contain a reference to all alive Units.
-DBObject = UNITSET:New()
-
-
-
-
-
-
-
-
-UNITSET.Units
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Moose Training/Documentation/index.html b/Moose Training/Documentation/index.html
index 71f021a69..96be59ebe 100644
--- a/Moose Training/Documentation/index.html
+++ b/Moose Training/Documentation/index.html
@@ -249,7 +249,7 @@
Message
-Message System to display Messages for Clients and Coalitions or All.
+This module contains the MESSAGE class.
diff --git a/Moose Training/Documentation/stylesheet.css b/Moose Training/Documentation/stylesheet.css
index 1b82635b5..3477e7fe8 100644
--- a/Moose Training/Documentation/stylesheet.css
+++ b/Moose Training/Documentation/stylesheet.css
@@ -1,131 +1,884 @@
+/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
+
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ * user zoom.
+ */
+
+@import url('https://fonts.googleapis.com/css?family=Architects+Daughter');
+
html {
- color: #000;
- background: #FFF;
+ font-family: sans-serif; /* 1 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+ -ms-text-size-adjust: 100%; /* 2 */
}
-body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,button,textarea,p,blockquote,th,td {
- margin: 0;
- padding: 0;
-}
-table {
- border-collapse: collapse;
- border-spacing: 0;
-}
-fieldset,img {
- border: 0;
-}
-address,caption,cite,code,dfn,em,strong,th,var,optgroup {
- font-style: inherit;
- font-weight: inherit;
-}
-del,ins {
- text-decoration: none;
-}
-li {
- list-style: bullet;
- margin-left: 20px;
-}
-caption,th {
- text-align: left;
-}
-h1,h2,h3,h4,h5,h6 {
- font-size: 100%;
- font-weight: bold;
-}
-q:before,q:after {
- content: '';
-}
-abbr,acronym {
- border: 0;
- font-variant: normal;
-}
-sup {
- vertical-align: baseline;
-}
-sub {
- vertical-align: baseline;
-}
-legend {
- color: #000;
-}
-input,button,textarea,select,optgroup,option {
- font-family: inherit;
- font-size: inherit;
- font-style: inherit;
- font-weight: inherit;
-}
-input,button,textarea,select {*font-size:100%;
-}
-/* END RESET */
+
+/**
+ * Remove default margin.
+ */
body {
- margin-left: 1em;
- margin-right: 1em;
- font-family: arial, helvetica, geneva, sans-serif;
- background-color: #ffffff; margin: 0px;
+ margin: 0;
}
-code, tt { font-family: monospace; }
+/* HTML5 display definitions
+ ========================================================================== */
-body, p, td, th { font-size: .95em; line-height: 1.2em;}
+/**
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11
+ * and Firefox.
+ * Correct `block` display not defined for `main` in IE 11.
+ */
-p, ul { margin: 10px 0 0 10px;}
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block;
+}
-strong { font-weight: bold;}
+/**
+ * 1. Correct `inline-block` display not defined in IE 8/9.
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+ */
-em { font-style: italic;}
+audio,
+canvas,
+progress,
+video {
+ display: inline-block; /* 1 */
+ vertical-align: baseline; /* 2 */
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Address `[hidden]` styling not present in IE 8/9/10.
+ * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
+ */
+
+[hidden],
+template {
+ display: none;
+}
+
+/* Links
+ ========================================================================== */
+
+/**
+ * Remove the gray background color from active links in IE 10.
+ */
+
+a {
+ background-color: transparent;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+ outline: 0;
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
+ */
+
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+ */
+
+b,
+strong {
+ font-weight: bold;
+}
+
+/**
+ * Address styling not present in Safari and Chrome.
+ */
+
+dfn {
+ font-style: italic;
+}
+
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari, and Chrome.
+ */
h1 {
- font-size: 1.5em;
- margin: 25px 0 20px 0;
+ margin: 0.67em 0;
+ font-size: 2em;
}
-h2, h3, h4 { margin: 15px 0 10px 0; }
-h2 { font-size: 1.25em; }
-h3 { font-size: 1.15em; }
-h4 { font-size: 1.06em; }
-a:link { font-weight: bold; color: #004080; text-decoration: none; }
-a:visited { font-weight: bold; color: #006699; text-decoration: none; }
-a:link:hover { text-decoration: underline; }
+/**
+ * Address styling not present in IE 8/9.
+ */
+
+mark {
+ color: #000;
+ background: #ff0;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Remove border when inside `a` element in IE 8/9/10.
+ */
+
+img {
+ border: 0;
+}
+
+/**
+ * Correct overflow not hidden in IE 9/10/11.
+ */
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * Address margin not present in IE 8/9 and Safari.
+ */
+
+figure {
+ margin: 1em 40px;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ */
hr {
- color:#cccccc;
- background: #00007f;
- height: 1px;
+ height: 0;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
}
-blockquote { margin-left: 3em; }
+/**
+ * Contain overflow in all browsers.
+ */
-ul { list-style-type: disc; }
-
-p.name {
- font-family: "Andale Mono", monospace;
- padding-top: 1em;
+pre {
+ overflow: auto;
}
-p:first-child {
- margin-top: 0px;
+/**
+ * Address odd `em`-unit font size rendering in all browsers.
+ */
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
}
-pre.example {
- background-color: rgb(245, 245, 245);
- border: 1px solid silver;
- padding: 10px;
- margin: 10px 0 10px 0;
- font-family: "Andale Mono", monospace;
- font-size: .85em;
+/* Forms
+ ========================================================================== */
+
+/**
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
+ * styling of `select`, unless a `border` property is set.
+ */
+
+/**
+ * 1. Correct color not being inherited.
+ * Known issue: affects color of disabled elements.
+ * 2. Correct font properties not being inherited.
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ margin: 0; /* 3 */
+ font: inherit; /* 2 */
+ color: inherit; /* 1 */
+}
+
+/**
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
+ */
+
+button {
+ overflow: visible;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+ * Correct `select` style inheritance in Firefox.
+ */
+
+button,
+select {
+ text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ * and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ * `input` and others.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button; /* 2 */
+ cursor: pointer; /* 3 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+input {
+ line-height: normal;
+}
+
+/**
+ * It's recommended that you don't attempt to style these elements.
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
+ *
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
+ * 2. Remove excess padding in IE 8/9/10.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
+ * `font-size` values of the `input`, it causes the cursor style of the
+ * decrement button to change from `default` to `text`.
+ */
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
+ * (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+ -webkit-box-sizing: content-box; /* 2 */
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ -webkit-appearance: textfield; /* 1 */
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
+ * Safari (but not Chrome) clips the cancel button when the search input has
+ * padding (and `textfield` appearance).
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+ padding: 0.35em 0.625em 0.75em;
+ margin: 0 2px;
+ border: 1px solid #c0c0c0;
+}
+
+/**
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+
+legend {
+ padding: 0; /* 2 */
+ border: 0; /* 1 */
+}
+
+/**
+ * Remove default vertical scrollbar in IE 8/9/10/11.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * Don't inherit the `font-weight` (applied by a rule above).
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+ */
+
+optgroup {
+ font-weight: bold;
+}
+
+/* Tables
+ ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+ border-spacing: 0;
+ border-collapse: collapse;
+}
+
+td,
+th {
+ padding: 0;
+}
+
+/* LAYOUT STYLES */
+body {
+ font-family: 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 15px;
+ font-weight: 400;
+ line-height: 1.5;
+ color: #666;
+ background: #fafafa url(../../images/body-bg.jpg) 0 0 repeat;
+ margin-left: 1em;
+ margin-right: 1em;
+ margin: 0px;
+}
+
+p {
+ margin-top: 0;
+}
+
+
+a {
+ color: #2879d0;
+}
+a:hover {
+ color: #2268b2;
+}
+
+header {
+ padding-top: 40px;
+ padding-bottom: 40px;
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ background: #2e7bcf url(../images/header-bg.jpg) 0 0 repeat-x;
+ border-bottom: solid 1px #275da1;
+}
+
+h1 {
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 32px;
+ font-weight: normal;
+ line-height: 1.5;
+}
+
+h2 {
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 26px;
+ font-weight: normal;
+ line-height: 1.3;
+}
+
+h3 {
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 22px;
+ font-weight: normal;
+ line-height: 1.1;
+}
+
+.inner {
+ position: relative;
+ width: 940px;
+ margin: 0 auto;
+}
+
+#content-wrapper {
+ padding-top: 30px;
+ border-top: solid 1px #fff;
+}
+
+#main-content {
+ float: left;
+ width: 690px;
+}
+
+#main-content img {
+ max-width: 100%;
+}
+
+aside#sidebar {
+ float: right;
+ width: 200px;
+ min-height: 504px;
+ padding-left: 20px;
+ font-size: 12px;
+ line-height: 1.3;
+ background: transparent url(../../images/sidebar-bg.jpg) 0 0 no-repeat;
+}
+
+aside#sidebar p.repo-owner,
+aside#sidebar p.repo-owner a {
+ font-weight: bold;
+}
+
+#downloads {
+ margin-bottom: 40px;
+}
+
+a.button {
+ width: 134px;
+ height: 58px;
+ padding-top: 22px;
+ padding-left: 68px;
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 23px;
+ line-height: 1.2;
+ color: #fff;
+}
+a.button small {
+ display: block;
+ font-size: 11px;
+}
+header a.button {
+ position: absolute;
+ top: 0;
+ right: 0;
+ background: transparent url(../images/github-button.png) 0 0 no-repeat;
+}
+aside a.button {
+ display: block;
+ width: 138px;
+ padding-left: 64px;
+ margin-bottom: 20px;
+ font-size: 21px;
+ background: transparent url(../images/download-button.png) 0 0 no-repeat;
+}
+
+code, pre {
+ margin-bottom: 30px;
+ font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
+ font-size: 13px;
+ color: #222;
+}
+
+code {
+ padding: 0 3px;
+ background-color: #f2f8fc;
+ border: solid 1px #dbe7f3;
}
pre {
- background-color: rgb(245, 245, 245);
- border: 1px solid silver;
- padding: 10px;
- margin: 10px 0 10px 0;
- font-family: "Andale Mono", monospace;
+ padding: 20px;
+ overflow: auto;
+ text-shadow: none;
+ background: #fff;
+ border: solid 1px #f2f2f2;
+}
+pre code {
+ padding: 0;
+ color: #2879d0;
+ background-color: #fff;
+ border: none;
+}
+
+ul, ol, dl {
+ margin-bottom: 20px;
}
-table.index { border: 1px #00007f; }
-table.index td { text-align: left; vertical-align: top; }
+/* COMMON STYLES */
+
+hr {
+ height: 0;
+ margin-top: 1em;
+ margin-bottom: 1em;
+ border: 0;
+ border-top: solid 1px #ddd;
+}
+
+table {
+ width: 100%;
+ border: 1px solid #ebebeb;
+}
+
+th {
+ font-weight: 500;
+}
+
+td {
+ font-weight: 300;
+ text-align: center;
+ border: 1px solid #ebebeb;
+}
+
+form {
+ padding: 20px;
+ background: #f2f2f2;
+
+}
+
+
+/* GENERAL ELEMENT TYPE STYLES */
+
+#main-content h1 {
+ margin-top: 0;
+ margin-bottom: 0;
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 2.8em;
+ font-weight: normal;
+ color: #474747;
+ text-indent: 6px;
+ letter-spacing: -1px;
+}
+
+#main-content h1:before {
+ padding-right: 0.3em;
+ margin-left: -0.9em;
+ color: #9ddcff;
+ content: "/";
+}
+
+#main-content h2 {
+ margin-bottom: 8px;
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 22px;
+ font-weight: bold;
+ color: #474747;
+ text-indent: 4px;
+}
+#main-content h2:before {
+ padding-right: 0.3em;
+ margin-left: -1.5em;
+ content: "//";
+ color: #9ddcff;
+}
+
+#main-content h3 {
+ margin-top: 24px;
+ margin-bottom: 8px;
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 18px;
+ font-weight: bold;
+ color: #474747;
+ text-indent: 3px;
+}
+
+#main-content h3:before {
+ padding-right: 0.3em;
+ margin-left: -2em;
+ content: "///";
+ color: #9ddcff;
+}
+
+#main-content h4 {
+ margin-bottom: 8px;
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 15px;
+ font-weight: bold;
+ color: #474747;
+ text-indent: 3px;
+}
+
+h4:before {
+ padding-right: 0.3em;
+ margin-left: -2.8em;
+ content: "////";
+ color: #9ddcff;
+}
+
+#main-content h5 {
+ margin-bottom: 8px;
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 14px;
+ color: #474747;
+ text-indent: 3px;
+}
+h5:before {
+ padding-right: 0.3em;
+ margin-left: -3.2em;
+ content: "/////";
+ color: #9ddcff;
+}
+
+#main-content h6 {
+ margin-bottom: 8px;
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: .8em;
+ color: #474747;
+ text-indent: 3px;
+}
+h6:before {
+ padding-right: 0.3em;
+ margin-left: -3.7em;
+ content: "//////";
+ color: #9ddcff;
+}
+
+p {
+ margin-bottom: 20px;
+}
+
+a {
+ text-decoration: none;
+}
+
+p a {
+ font-weight: 400;
+}
+
+blockquote {
+ padding: 0 0 0 30px;
+ margin-bottom: 20px;
+ font-size: 1.6em;
+ border-left: 10px solid #e9e9e9;
+}
+
+ul {
+ list-style-position: inside;
+ list-style: disc;
+ padding-left: 20px;
+}
+
+ol {
+ list-style-position: inside;
+ list-style: decimal;
+ padding-left: 3px;
+}
+
+footer {
+ padding-top: 20px;
+ padding-bottom: 30px;
+ margin-top: 40px;
+ font-size: 13px;
+ color: #aaa;
+ background: transparent url('../../images/hr.png') 0 0 no-repeat;
+}
+
+footer a {
+ color: #666;
+}
+footer a:hover {
+ color: #444;
+}
+
+/* MISC */
+.clearfix:after {
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+ content: '.';
+}
+
+.clearfix {display: inline-block;}
+* html .clearfix {height: 1%;}
+.clearfix {display: block;}
+
+/* #Media Queries
+================================================== */
+
+/* Smaller than standard 960 (devices and browsers) */
+@media only screen and (max-width: 959px) { }
+
+/* Tablet Portrait size to standard 960 (devices and browsers) */
+@media only screen and (min-width: 768px) and (max-width: 959px) {
+ .inner {
+ width: 740px;
+ }
+ header h1, header h2 {
+ width: 340px;
+ }
+ header h1 {
+ font-size: 60px;
+ }
+ header h2 {
+ font-size: 30px;
+ }
+ #main-content {
+ width: 490px;
+ }
+ #main-content h1:before,
+ #main-content h2:before,
+ #main-content h3:before,
+ #main-content h4:before,
+ #main-content h5:before,
+ #main-content h6:before {
+ padding-right: 0;
+ margin-left: 0;
+ content: none;
+ }
+}
+
+/* All Mobile Sizes (devices and browser) */
+@media only screen and (max-width: 767px) {
+ .inner {
+ width: 93%;
+ }
+ header {
+ padding: 20px 0;
+ }
+ header .inner {
+ position: relative;
+ }
+ header h1, header h2 {
+ width: 100%;
+ }
+ header h1 {
+ font-size: 48px;
+ }
+ header h2 {
+ font-size: 24px;
+ }
+ header a.button {
+ position: relative;
+ display: inline-block;
+ width: auto;
+ height: auto;
+ padding: 5px 10px;
+ margin-top: 15px;
+ font-size: 13px;
+ line-height: 1;
+ color: #2879d0;
+ text-align: center;
+ background-color: #9ddcff;
+ background-image: none;
+ border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ }
+ header a.button small {
+ display: inline;
+ font-size: 13px;
+ }
+ #main-content,
+ aside#sidebar {
+ float: none;
+ width: 100% ! important;
+ }
+ aside#sidebar {
+ min-height: 0;
+ padding: 20px 0;
+ margin-top: 20px;
+ background-image: none;
+ border-top: solid 1px #ddd;
+ }
+ aside#sidebar a.button {
+ display: none;
+ }
+ #main-content h1:before,
+ #main-content h2:before,
+ #main-content h3:before,
+ #main-content h4:before,
+ #main-content h5:before,
+ #main-content h6:before {
+ padding-right: 0;
+ margin-left: 0;
+ content: none;
+ }
+}
+
+/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
+@media only screen and (min-width: 480px) and (max-width: 767px) { }
+
+/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
+@media only screen and (max-width: 479px) { }
+
#container {
margin-left: 1em;
@@ -144,7 +897,8 @@ table.index td { text-align: left; vertical-align: top; }
}
#main {
- background-color: #f0f0f0;
+ color: #666;
+ background: #fafafa url(../../images/body-bg.jpg) 0 0 repeat;
border-left: 2px solid #cccccc;
}
@@ -152,20 +906,28 @@ table.index td { text-align: left; vertical-align: top; }
float: left;
width: 18em;
vertical-align: top;
- background-color: #f0f0f0;
overflow: scroll;
position: fixed;
height:100%;
+ background: #2e7bcf url(../../images/header-bg.jpg) 0 0 repeat-x;
+ color: #fff;
}
#navigation h2 {
- background-color:#e7e7e7;
- font-size:1.1em;
- color:#000000;
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ background: #2e7bcf url(../images/header-bg.jpg) 0 0 repeat-x;
+ border-bottom: solid 1px #275da1;
+ width: 540px;
+ margin-top: 0;
+ margin-bottom: 0.2em;
+ font-size: 36px;
+ font-weight: normal;
+ line-height: 1;
+ color: #fff;
+ letter-spacing: -1px;
text-align: left;
padding:0.2em;
border-top:1px solid #dddddd;
- border-bottom:1px solid #dddddd;
}
#navigation ul
@@ -173,16 +935,24 @@ table.index td { text-align: left; vertical-align: top; }
font-size:1em;
list-style-type: none;
margin: 1px 1px 10px 1px;
+ color: #fff;
}
#navigation li {
text-indent: -1em;
display: block;
margin: 3px 0px 0px 22px;
+ color: #fff;
}
+#navigation ul li a {
+ color: #fff;
+}
+
+
#navigation li li a {
margin: 0px 3px 0px -1em;
+ color: #fff;
}
#content {
@@ -193,6 +963,27 @@ table.index td { text-align: left; vertical-align: top; }
background-color: #ffffff;
}
+
+#content h2 a {
+ color: #000;
+ border-bottom: 1px solid #000;
+}
+
+#content h2 a code {
+font-size: 22px;
+font-weight: 400;
+background-color: transparent;
+color: #2879d0;
+border: none;
+}
+
+#content h1 code {
+font-size: 26px;
+font-weight: 400;
+background-color: transparent;
+border: none;
+}
+
#about {
clear: both;
padding: 5px;
@@ -200,70 +991,45 @@ table.index td { text-align: left; vertical-align: top; }
background-color: #ffffff;
}
-@media print {
- body {
- font: 12pt "Times New Roman", "TimeNR", Times, serif;
- }
- a { font-weight: bold; color: #004080; text-decoration: underline; }
-
- #main {
- background-color: #ffffff;
- border-left: 0px;
- }
-
- #container {
- margin-left: 2%;
- margin-right: 2%;
- background-color: #ffffff;
- }
-
- #content {
- padding: 1em;
- background-color: #ffffff;
- }
-
- #navigation {
- display: none;
- }
- pre.example {
- font-family: "Andale Mono", monospace;
- font-size: 10pt;
- page-break-inside: avoid;
- }
-}
-
-table.module_list {
- border-width: 1px;
- border-style: solid;
- border-color: #cccccc;
- border-collapse: collapse;
-}
-table.module_list td {
- border-width: 1px;
- padding: 3px;
- border-style: solid;
- border-color: #cccccc;
-}
-table.module_list td.name { background-color: #f0f0f0; }
-table.module_list td.summary { width: 100%; }
-
-
table.function_list {
border-width: 1px;
border-style: solid;
border-color: #cccccc;
border-collapse: collapse;
}
+
table.function_list td {
border-width: 1px;
padding: 3px;
border-style: solid;
border-color: #cccccc;
+ word-wrap:break-word;
}
-table.function_list td.name { background-color: #f0f0f0; }
-table.function_list td.summary { width: 100%; }
-dl.table dt, dl.function dt {border-top: 1px solid #ccc; padding-top: 1em;}
-dl.table dd, dl.function dd {padding-bottom: 1em; margin: 10px 0 0 20px;}
-dl.table h3, dl.function h3 {font-size: .95em;}
+table.function_list td.name { font-weight: 400; width:50%; white-space: normal; text-align:left;}
+table.function_list td.summary { width: 50%; }
+
+dl.table dt, dl.function {
+ border-left: 1px solid #ccc;
+ border-right: 1px solid #ccc;
+ border-bottom: 1px solid #ccc;
+}
+
+dl.table dt, dl.function dt {
+ border-top: 1px solid #000;
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ border-bottom: 1px solid #ccc;
+}
+
+dl.table dd, dl.function dd {
+ padding-bottom: 0.5em;
+ margin: 20px 0 0 20px;
+}
+
+dl.table dd, dl.function dd p {
+ font-weight : normal;
+}
+
+dl.table h3, dl.function h3 {font-size: 1.5em;}
diff --git a/Moose Training/Stylesheet/stylesheet.css b/Moose Training/Stylesheet/stylesheet.css
new file mode 100644
index 000000000..3477e7fe8
--- /dev/null
+++ b/Moose Training/Stylesheet/stylesheet.css
@@ -0,0 +1,1035 @@
+/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
+
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS text size adjust after orientation change, without disabling
+ * user zoom.
+ */
+
+@import url('https://fonts.googleapis.com/css?family=Architects+Daughter');
+
+html {
+ font-family: sans-serif; /* 1 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+ -ms-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Remove default margin.
+ */
+
+body {
+ margin: 0;
+}
+
+/* HTML5 display definitions
+ ========================================================================== */
+
+/**
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11
+ * and Firefox.
+ * Correct `block` display not defined for `main` in IE 11.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block;
+}
+
+/**
+ * 1. Correct `inline-block` display not defined in IE 8/9.
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+ */
+
+audio,
+canvas,
+progress,
+video {
+ display: inline-block; /* 1 */
+ vertical-align: baseline; /* 2 */
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Address `[hidden]` styling not present in IE 8/9/10.
+ * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
+ */
+
+[hidden],
+template {
+ display: none;
+}
+
+/* Links
+ ========================================================================== */
+
+/**
+ * Remove the gray background color from active links in IE 10.
+ */
+
+a {
+ background-color: transparent;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+ outline: 0;
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
+ */
+
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+ */
+
+b,
+strong {
+ font-weight: bold;
+}
+
+/**
+ * Address styling not present in Safari and Chrome.
+ */
+
+dfn {
+ font-style: italic;
+}
+
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari, and Chrome.
+ */
+
+h1 {
+ margin: 0.67em 0;
+ font-size: 2em;
+}
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+
+mark {
+ color: #000;
+ background: #ff0;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Remove border when inside `a` element in IE 8/9/10.
+ */
+
+img {
+ border: 0;
+}
+
+/**
+ * Correct overflow not hidden in IE 9/10/11.
+ */
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * Address margin not present in IE 8/9 and Safari.
+ */
+
+figure {
+ margin: 1em 40px;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ */
+
+hr {
+ height: 0;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+}
+
+/**
+ * Contain overflow in all browsers.
+ */
+
+pre {
+ overflow: auto;
+}
+
+/**
+ * Address odd `em`-unit font size rendering in all browsers.
+ */
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+
+/* Forms
+ ========================================================================== */
+
+/**
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
+ * styling of `select`, unless a `border` property is set.
+ */
+
+/**
+ * 1. Correct color not being inherited.
+ * Known issue: affects color of disabled elements.
+ * 2. Correct font properties not being inherited.
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ margin: 0; /* 3 */
+ font: inherit; /* 2 */
+ color: inherit; /* 1 */
+}
+
+/**
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
+ */
+
+button {
+ overflow: visible;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+ * Correct `select` style inheritance in Firefox.
+ */
+
+button,
+select {
+ text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ * and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ * `input` and others.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button; /* 2 */
+ cursor: pointer; /* 3 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+input {
+ line-height: normal;
+}
+
+/**
+ * It's recommended that you don't attempt to style these elements.
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
+ *
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
+ * 2. Remove excess padding in IE 8/9/10.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
+ * `font-size` values of the `input`, it causes the cursor style of the
+ * decrement button to change from `default` to `text`.
+ */
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
+ * (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+ -webkit-box-sizing: content-box; /* 2 */
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ -webkit-appearance: textfield; /* 1 */
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
+ * Safari (but not Chrome) clips the cancel button when the search input has
+ * padding (and `textfield` appearance).
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+ padding: 0.35em 0.625em 0.75em;
+ margin: 0 2px;
+ border: 1px solid #c0c0c0;
+}
+
+/**
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+
+legend {
+ padding: 0; /* 2 */
+ border: 0; /* 1 */
+}
+
+/**
+ * Remove default vertical scrollbar in IE 8/9/10/11.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * Don't inherit the `font-weight` (applied by a rule above).
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+ */
+
+optgroup {
+ font-weight: bold;
+}
+
+/* Tables
+ ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+ border-spacing: 0;
+ border-collapse: collapse;
+}
+
+td,
+th {
+ padding: 0;
+}
+
+/* LAYOUT STYLES */
+body {
+ font-family: 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 15px;
+ font-weight: 400;
+ line-height: 1.5;
+ color: #666;
+ background: #fafafa url(../../images/body-bg.jpg) 0 0 repeat;
+ margin-left: 1em;
+ margin-right: 1em;
+ margin: 0px;
+}
+
+p {
+ margin-top: 0;
+}
+
+
+a {
+ color: #2879d0;
+}
+a:hover {
+ color: #2268b2;
+}
+
+header {
+ padding-top: 40px;
+ padding-bottom: 40px;
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ background: #2e7bcf url(../images/header-bg.jpg) 0 0 repeat-x;
+ border-bottom: solid 1px #275da1;
+}
+
+h1 {
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 32px;
+ font-weight: normal;
+ line-height: 1.5;
+}
+
+h2 {
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 26px;
+ font-weight: normal;
+ line-height: 1.3;
+}
+
+h3 {
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 22px;
+ font-weight: normal;
+ line-height: 1.1;
+}
+
+.inner {
+ position: relative;
+ width: 940px;
+ margin: 0 auto;
+}
+
+#content-wrapper {
+ padding-top: 30px;
+ border-top: solid 1px #fff;
+}
+
+#main-content {
+ float: left;
+ width: 690px;
+}
+
+#main-content img {
+ max-width: 100%;
+}
+
+aside#sidebar {
+ float: right;
+ width: 200px;
+ min-height: 504px;
+ padding-left: 20px;
+ font-size: 12px;
+ line-height: 1.3;
+ background: transparent url(../../images/sidebar-bg.jpg) 0 0 no-repeat;
+}
+
+aside#sidebar p.repo-owner,
+aside#sidebar p.repo-owner a {
+ font-weight: bold;
+}
+
+#downloads {
+ margin-bottom: 40px;
+}
+
+a.button {
+ width: 134px;
+ height: 58px;
+ padding-top: 22px;
+ padding-left: 68px;
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 23px;
+ line-height: 1.2;
+ color: #fff;
+}
+a.button small {
+ display: block;
+ font-size: 11px;
+}
+header a.button {
+ position: absolute;
+ top: 0;
+ right: 0;
+ background: transparent url(../images/github-button.png) 0 0 no-repeat;
+}
+aside a.button {
+ display: block;
+ width: 138px;
+ padding-left: 64px;
+ margin-bottom: 20px;
+ font-size: 21px;
+ background: transparent url(../images/download-button.png) 0 0 no-repeat;
+}
+
+code, pre {
+ margin-bottom: 30px;
+ font-family: Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;
+ font-size: 13px;
+ color: #222;
+}
+
+code {
+ padding: 0 3px;
+ background-color: #f2f8fc;
+ border: solid 1px #dbe7f3;
+}
+
+pre {
+ padding: 20px;
+ overflow: auto;
+ text-shadow: none;
+ background: #fff;
+ border: solid 1px #f2f2f2;
+}
+pre code {
+ padding: 0;
+ color: #2879d0;
+ background-color: #fff;
+ border: none;
+}
+
+ul, ol, dl {
+ margin-bottom: 20px;
+}
+
+
+/* COMMON STYLES */
+
+hr {
+ height: 0;
+ margin-top: 1em;
+ margin-bottom: 1em;
+ border: 0;
+ border-top: solid 1px #ddd;
+}
+
+table {
+ width: 100%;
+ border: 1px solid #ebebeb;
+}
+
+th {
+ font-weight: 500;
+}
+
+td {
+ font-weight: 300;
+ text-align: center;
+ border: 1px solid #ebebeb;
+}
+
+form {
+ padding: 20px;
+ background: #f2f2f2;
+
+}
+
+
+/* GENERAL ELEMENT TYPE STYLES */
+
+#main-content h1 {
+ margin-top: 0;
+ margin-bottom: 0;
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 2.8em;
+ font-weight: normal;
+ color: #474747;
+ text-indent: 6px;
+ letter-spacing: -1px;
+}
+
+#main-content h1:before {
+ padding-right: 0.3em;
+ margin-left: -0.9em;
+ color: #9ddcff;
+ content: "/";
+}
+
+#main-content h2 {
+ margin-bottom: 8px;
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 22px;
+ font-weight: bold;
+ color: #474747;
+ text-indent: 4px;
+}
+#main-content h2:before {
+ padding-right: 0.3em;
+ margin-left: -1.5em;
+ content: "//";
+ color: #9ddcff;
+}
+
+#main-content h3 {
+ margin-top: 24px;
+ margin-bottom: 8px;
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 18px;
+ font-weight: bold;
+ color: #474747;
+ text-indent: 3px;
+}
+
+#main-content h3:before {
+ padding-right: 0.3em;
+ margin-left: -2em;
+ content: "///";
+ color: #9ddcff;
+}
+
+#main-content h4 {
+ margin-bottom: 8px;
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 15px;
+ font-weight: bold;
+ color: #474747;
+ text-indent: 3px;
+}
+
+h4:before {
+ padding-right: 0.3em;
+ margin-left: -2.8em;
+ content: "////";
+ color: #9ddcff;
+}
+
+#main-content h5 {
+ margin-bottom: 8px;
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: 14px;
+ color: #474747;
+ text-indent: 3px;
+}
+h5:before {
+ padding-right: 0.3em;
+ margin-left: -3.2em;
+ content: "/////";
+ color: #9ddcff;
+}
+
+#main-content h6 {
+ margin-bottom: 8px;
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ font-size: .8em;
+ color: #474747;
+ text-indent: 3px;
+}
+h6:before {
+ padding-right: 0.3em;
+ margin-left: -3.7em;
+ content: "//////";
+ color: #9ddcff;
+}
+
+p {
+ margin-bottom: 20px;
+}
+
+a {
+ text-decoration: none;
+}
+
+p a {
+ font-weight: 400;
+}
+
+blockquote {
+ padding: 0 0 0 30px;
+ margin-bottom: 20px;
+ font-size: 1.6em;
+ border-left: 10px solid #e9e9e9;
+}
+
+ul {
+ list-style-position: inside;
+ list-style: disc;
+ padding-left: 20px;
+}
+
+ol {
+ list-style-position: inside;
+ list-style: decimal;
+ padding-left: 3px;
+}
+
+footer {
+ padding-top: 20px;
+ padding-bottom: 30px;
+ margin-top: 40px;
+ font-size: 13px;
+ color: #aaa;
+ background: transparent url('../../images/hr.png') 0 0 no-repeat;
+}
+
+footer a {
+ color: #666;
+}
+footer a:hover {
+ color: #444;
+}
+
+/* MISC */
+.clearfix:after {
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+ content: '.';
+}
+
+.clearfix {display: inline-block;}
+* html .clearfix {height: 1%;}
+.clearfix {display: block;}
+
+/* #Media Queries
+================================================== */
+
+/* Smaller than standard 960 (devices and browsers) */
+@media only screen and (max-width: 959px) { }
+
+/* Tablet Portrait size to standard 960 (devices and browsers) */
+@media only screen and (min-width: 768px) and (max-width: 959px) {
+ .inner {
+ width: 740px;
+ }
+ header h1, header h2 {
+ width: 340px;
+ }
+ header h1 {
+ font-size: 60px;
+ }
+ header h2 {
+ font-size: 30px;
+ }
+ #main-content {
+ width: 490px;
+ }
+ #main-content h1:before,
+ #main-content h2:before,
+ #main-content h3:before,
+ #main-content h4:before,
+ #main-content h5:before,
+ #main-content h6:before {
+ padding-right: 0;
+ margin-left: 0;
+ content: none;
+ }
+}
+
+/* All Mobile Sizes (devices and browser) */
+@media only screen and (max-width: 767px) {
+ .inner {
+ width: 93%;
+ }
+ header {
+ padding: 20px 0;
+ }
+ header .inner {
+ position: relative;
+ }
+ header h1, header h2 {
+ width: 100%;
+ }
+ header h1 {
+ font-size: 48px;
+ }
+ header h2 {
+ font-size: 24px;
+ }
+ header a.button {
+ position: relative;
+ display: inline-block;
+ width: auto;
+ height: auto;
+ padding: 5px 10px;
+ margin-top: 15px;
+ font-size: 13px;
+ line-height: 1;
+ color: #2879d0;
+ text-align: center;
+ background-color: #9ddcff;
+ background-image: none;
+ border-radius: 5px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ }
+ header a.button small {
+ display: inline;
+ font-size: 13px;
+ }
+ #main-content,
+ aside#sidebar {
+ float: none;
+ width: 100% ! important;
+ }
+ aside#sidebar {
+ min-height: 0;
+ padding: 20px 0;
+ margin-top: 20px;
+ background-image: none;
+ border-top: solid 1px #ddd;
+ }
+ aside#sidebar a.button {
+ display: none;
+ }
+ #main-content h1:before,
+ #main-content h2:before,
+ #main-content h3:before,
+ #main-content h4:before,
+ #main-content h5:before,
+ #main-content h6:before {
+ padding-right: 0;
+ margin-left: 0;
+ content: none;
+ }
+}
+
+/* Mobile Landscape Size to Tablet Portrait (devices and browsers) */
+@media only screen and (min-width: 480px) and (max-width: 767px) { }
+
+/* Mobile Portrait Size to Mobile Landscape Size (devices and browsers) */
+@media only screen and (max-width: 479px) { }
+
+
+#container {
+ margin-left: 1em;
+ margin-right: 1em;
+ background-color: #f0f0f0;
+}
+
+#product {
+ text-align: center;
+ border-bottom: 1px solid #cccccc;
+ background-color: #ffffff;
+}
+
+#product big {
+ font-size: 2em;
+}
+
+#main {
+ color: #666;
+ background: #fafafa url(../../images/body-bg.jpg) 0 0 repeat;
+ border-left: 2px solid #cccccc;
+}
+
+#navigation {
+ float: left;
+ width: 18em;
+ vertical-align: top;
+ overflow: scroll;
+ position: fixed;
+ height:100%;
+ background: #2e7bcf url(../../images/header-bg.jpg) 0 0 repeat-x;
+ color: #fff;
+}
+
+#navigation h2 {
+ font-family: 'Architects Daughter', 'Helvetica Neue', Helvetica, Arial, serif;
+ background: #2e7bcf url(../images/header-bg.jpg) 0 0 repeat-x;
+ border-bottom: solid 1px #275da1;
+ width: 540px;
+ margin-top: 0;
+ margin-bottom: 0.2em;
+ font-size: 36px;
+ font-weight: normal;
+ line-height: 1;
+ color: #fff;
+ letter-spacing: -1px;
+ text-align: left;
+ padding:0.2em;
+ border-top:1px solid #dddddd;
+}
+
+#navigation ul
+{
+ font-size:1em;
+ list-style-type: none;
+ margin: 1px 1px 10px 1px;
+ color: #fff;
+}
+
+#navigation li {
+ text-indent: -1em;
+ display: block;
+ margin: 3px 0px 0px 22px;
+ color: #fff;
+}
+
+#navigation ul li a {
+ color: #fff;
+}
+
+
+#navigation li li a {
+ margin: 0px 3px 0px -1em;
+ color: #fff;
+}
+
+#content {
+ margin-left: 18em;
+ padding: 1em;
+ border-left: 2px solid #cccccc;
+ border-right: 2px solid #cccccc;
+ background-color: #ffffff;
+}
+
+
+#content h2 a {
+ color: #000;
+ border-bottom: 1px solid #000;
+}
+
+#content h2 a code {
+font-size: 22px;
+font-weight: 400;
+background-color: transparent;
+color: #2879d0;
+border: none;
+}
+
+#content h1 code {
+font-size: 26px;
+font-weight: 400;
+background-color: transparent;
+border: none;
+}
+
+#about {
+ clear: both;
+ padding: 5px;
+ border-top: 2px solid #cccccc;
+ background-color: #ffffff;
+}
+
+table.function_list {
+ border-width: 1px;
+ border-style: solid;
+ border-color: #cccccc;
+ border-collapse: collapse;
+}
+
+table.function_list td {
+ border-width: 1px;
+ padding: 3px;
+ border-style: solid;
+ border-color: #cccccc;
+ word-wrap:break-word;
+}
+
+table.function_list td.name { font-weight: 400; width:50%; white-space: normal; text-align:left;}
+table.function_list td.summary { width: 50%; }
+
+
+dl.table dt, dl.function {
+ border-left: 1px solid #ccc;
+ border-right: 1px solid #ccc;
+ border-bottom: 1px solid #ccc;
+}
+
+dl.table dt, dl.function dt {
+ border-top: 1px solid #000;
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ border-bottom: 1px solid #ccc;
+}
+
+dl.table dd, dl.function dd {
+ padding-bottom: 0.5em;
+ margin: 20px 0 0 20px;
+}
+
+dl.table dd, dl.function dd p {
+ font-weight : normal;
+}
+
+dl.table h3, dl.function h3 {font-size: 1.5em;}