mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2026-08-20 17:07:54 +00:00
Merge remote-tracking branch 'origin/master-ng' into branch
# Conflicts: # Moose Development/Moose/Core/Set.lua # Moose Development/Moose/Functional/Artillery.lua # Moose Development/Moose/Functional/ZoneGoalCargo.lua # Moose Development/Moose/Modules.lua # Moose Development/Moose/Wrapper/Client.lua # Moose Development/Moose/Wrapper/Controllable.lua
This commit is contained in:
@@ -54,7 +54,6 @@
|
|||||||
-- * AIRBASES
|
-- * AIRBASES
|
||||||
-- * PLAYERSJOINED
|
-- * PLAYERSJOINED
|
||||||
-- * PLAYERS
|
-- * PLAYERS
|
||||||
-- * CARGOS
|
|
||||||
-- * STORAGES (DCS warehouses)
|
-- * STORAGES (DCS warehouses)
|
||||||
-- * DYNAMICCARGO
|
-- * DYNAMICCARGO
|
||||||
--
|
--
|
||||||
@@ -81,7 +80,6 @@ DATABASE = {
|
|||||||
PLAYERSJOINED = {},
|
PLAYERSJOINED = {},
|
||||||
PLAYERUNITS = {},
|
PLAYERUNITS = {},
|
||||||
CLIENTS = {},
|
CLIENTS = {},
|
||||||
CARGOS = {},
|
|
||||||
AIRBASES = {},
|
AIRBASES = {},
|
||||||
COUNTRY_ID = {},
|
COUNTRY_ID = {},
|
||||||
COUNTRY_NAME = {},
|
COUNTRY_NAME = {},
|
||||||
@@ -746,102 +744,6 @@ do -- OpsZone
|
|||||||
|
|
||||||
end -- OpsZone
|
end -- OpsZone
|
||||||
|
|
||||||
do -- cargo
|
|
||||||
|
|
||||||
--- Adds a Cargo based on the Cargo Name in the DATABASE.
|
|
||||||
-- @param #DATABASE self
|
|
||||||
-- @param #string CargoName The name of the airbase
|
|
||||||
function DATABASE:AddCargo( Cargo )
|
|
||||||
|
|
||||||
if not self.CARGOS[Cargo.Name] then
|
|
||||||
self.CARGOS[Cargo.Name] = Cargo
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
--- Deletes a Cargo from the DATABASE based on the Cargo Name.
|
|
||||||
-- @param #DATABASE self
|
|
||||||
-- @param #string CargoName The name of the airbase
|
|
||||||
function DATABASE:DeleteCargo( CargoName )
|
|
||||||
|
|
||||||
self.CARGOS[CargoName] = nil
|
|
||||||
end
|
|
||||||
|
|
||||||
--- Finds an CARGO based on the CargoName.
|
|
||||||
-- @param #DATABASE self
|
|
||||||
-- @param #string CargoName
|
|
||||||
-- @return Cargo.Cargo#CARGO The found CARGO.
|
|
||||||
function DATABASE:FindCargo( CargoName )
|
|
||||||
|
|
||||||
local CargoFound = self.CARGOS[CargoName]
|
|
||||||
return CargoFound
|
|
||||||
end
|
|
||||||
|
|
||||||
--- Checks if the Template name has a #CARGO tag.
|
|
||||||
-- If yes, the group is a cargo.
|
|
||||||
-- @param #DATABASE self
|
|
||||||
-- @param #string TemplateName
|
|
||||||
-- @return #boolean
|
|
||||||
function DATABASE:IsCargo( TemplateName )
|
|
||||||
|
|
||||||
TemplateName = env.getValueDictByKey( TemplateName )
|
|
||||||
|
|
||||||
local Cargo = TemplateName:match( "#(CARGO)" )
|
|
||||||
|
|
||||||
return Cargo and Cargo == "CARGO"
|
|
||||||
end
|
|
||||||
|
|
||||||
--- Private method that registers new Static Templates within the DATABASE Object.
|
|
||||||
-- @param #DATABASE self
|
|
||||||
-- @return #DATABASE self
|
|
||||||
function DATABASE:_RegisterCargos()
|
|
||||||
|
|
||||||
local Groups = UTILS.DeepCopy( self.GROUPS ) -- This is a very important statement. CARGO_GROUP:New creates a new _DATABASE.GROUP entry, which will confuse the loop. I searched 4 hours on this to find the bug!
|
|
||||||
|
|
||||||
for CargoGroupName, CargoGroup in pairs( Groups ) do
|
|
||||||
if self:IsCargo( CargoGroupName ) then
|
|
||||||
local CargoInfo = CargoGroupName:match("#CARGO(.*)")
|
|
||||||
local CargoParam = CargoInfo and CargoInfo:match( "%((.*)%)")
|
|
||||||
local CargoName1 = CargoGroupName:match("(.*)#CARGO%(.*%)")
|
|
||||||
local CargoName2 = CargoGroupName:match(".*#CARGO%(.*%)(.*)")
|
|
||||||
local CargoName = CargoName1 .. ( CargoName2 or "" )
|
|
||||||
local Type = CargoParam and CargoParam:match( "T=([%a%d ]+),?")
|
|
||||||
local Name = CargoParam and CargoParam:match( "N=([%a%d]+),?") or CargoName
|
|
||||||
local LoadRadius = CargoParam and tonumber( CargoParam:match( "RR=([%a%d]+),?") )
|
|
||||||
local NearRadius = CargoParam and tonumber( CargoParam:match( "NR=([%a%d]+),?") )
|
|
||||||
|
|
||||||
self:I({"Register CargoGroup:",Type=Type,Name=Name,LoadRadius=LoadRadius,NearRadius=NearRadius})
|
|
||||||
CARGO_GROUP:New( CargoGroup, Type, Name, LoadRadius, NearRadius )
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
for CargoStaticName, CargoStatic in pairs( self.STATICS ) do
|
|
||||||
if self:IsCargo( CargoStaticName ) then
|
|
||||||
local CargoInfo = CargoStaticName:match("#CARGO(.*)")
|
|
||||||
local CargoParam = CargoInfo and CargoInfo:match( "%((.*)%)")
|
|
||||||
local CargoName = CargoStaticName:match("(.*)#CARGO")
|
|
||||||
local Type = CargoParam and CargoParam:match( "T=([%a%d ]+),?")
|
|
||||||
local Category = CargoParam and CargoParam:match( "C=([%a%d ]+),?")
|
|
||||||
local Name = CargoParam and CargoParam:match( "N=([%a%d]+),?") or CargoName
|
|
||||||
local LoadRadius = CargoParam and tonumber( CargoParam:match( "RR=([%a%d]+),?") )
|
|
||||||
local NearRadius = CargoParam and tonumber( CargoParam:match( "NR=([%a%d]+),?") )
|
|
||||||
|
|
||||||
if Category == "SLING" then
|
|
||||||
self:I({"Register CargoSlingload:",Type=Type,Name=Name,LoadRadius=LoadRadius,NearRadius=NearRadius})
|
|
||||||
CARGO_SLINGLOAD:New( CargoStatic, Type, Name, LoadRadius, NearRadius )
|
|
||||||
else
|
|
||||||
if Category == "CRATE" then
|
|
||||||
self:I({"Register CargoCrate:",Type=Type,Name=Name,LoadRadius=LoadRadius,NearRadius=NearRadius})
|
|
||||||
CARGO_CRATE:New( CargoStatic, Type, Name, LoadRadius, NearRadius )
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
end -- cargo
|
|
||||||
|
|
||||||
--- Finds a CLIENT based on the ClientName.
|
--- Finds a CLIENT based on the ClientName.
|
||||||
-- @param #DATABASE self
|
-- @param #DATABASE self
|
||||||
-- @param #string ClientName - Note this is the UNIT name of the client!
|
-- @param #string ClientName - Note this is the UNIT name of the client!
|
||||||
@@ -2050,19 +1952,6 @@ function DATABASE:ForEachClient( IteratorFunction, FinalizeFunction, ... )
|
|||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Iterate the DATABASE and call an iterator function for each CARGO, providing the CARGO object to the function and optional parameters.
|
|
||||||
-- @param #DATABASE self
|
|
||||||
-- @param #function IteratorFunction The function that will be called for each object in the database. The function needs to accept a CLIENT parameter.
|
|
||||||
-- @return #DATABASE self
|
|
||||||
function DATABASE:ForEachCargo( IteratorFunction, FinalizeFunction, ... )
|
|
||||||
self:F2( arg )
|
|
||||||
|
|
||||||
self:ForEach( IteratorFunction, FinalizeFunction, arg, self.CARGOS )
|
|
||||||
|
|
||||||
return self
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
--- Handles the OnEventNewCargo event.
|
--- Handles the OnEventNewCargo event.
|
||||||
-- @param #DATABASE self
|
-- @param #DATABASE self
|
||||||
-- @param Core.Event#EVENTDATA EventData
|
-- @param Core.Event#EVENTDATA EventData
|
||||||
|
|||||||
@@ -187,19 +187,17 @@ EVENT = {
|
|||||||
CreateMarkCoordinateOnEvent = false,
|
CreateMarkCoordinateOnEvent = false,
|
||||||
}
|
}
|
||||||
|
|
||||||
world.event.S_EVENT_NEW_CARGO = world.event.S_EVENT_MAX + 1000
|
world.event.S_EVENT_NEW_ZONE = world.event.S_EVENT_MAX + 1000
|
||||||
world.event.S_EVENT_DELETE_CARGO = world.event.S_EVENT_MAX + 1001
|
world.event.S_EVENT_DELETE_ZONE = world.event.S_EVENT_MAX + 1001
|
||||||
world.event.S_EVENT_NEW_ZONE = world.event.S_EVENT_MAX + 1002
|
world.event.S_EVENT_NEW_ZONE_GOAL = world.event.S_EVENT_MAX + 1002
|
||||||
world.event.S_EVENT_DELETE_ZONE = world.event.S_EVENT_MAX + 1003
|
world.event.S_EVENT_DELETE_ZONE_GOAL = world.event.S_EVENT_MAX + 1003
|
||||||
world.event.S_EVENT_NEW_ZONE_GOAL = world.event.S_EVENT_MAX + 1004
|
world.event.S_EVENT_REMOVE_UNIT = world.event.S_EVENT_MAX + 1004
|
||||||
world.event.S_EVENT_DELETE_ZONE_GOAL = world.event.S_EVENT_MAX + 1005
|
world.event.S_EVENT_PLAYER_ENTER_AIRCRAFT = world.event.S_EVENT_MAX + 1005
|
||||||
world.event.S_EVENT_REMOVE_UNIT = world.event.S_EVENT_MAX + 1006
|
|
||||||
world.event.S_EVENT_PLAYER_ENTER_AIRCRAFT = world.event.S_EVENT_MAX + 1007
|
|
||||||
-- dynamic cargo
|
-- dynamic cargo
|
||||||
world.event.S_EVENT_NEW_DYNAMIC_CARGO = world.event.S_EVENT_MAX + 1008
|
world.event.S_EVENT_NEW_DYNAMIC_CARGO = world.event.S_EVENT_MAX + 1006
|
||||||
world.event.S_EVENT_DYNAMIC_CARGO_LOADED = world.event.S_EVENT_MAX + 1009
|
world.event.S_EVENT_DYNAMIC_CARGO_LOADED = world.event.S_EVENT_MAX + 1007
|
||||||
world.event.S_EVENT_DYNAMIC_CARGO_UNLOADED = world.event.S_EVENT_MAX + 1010
|
world.event.S_EVENT_DYNAMIC_CARGO_UNLOADED = world.event.S_EVENT_MAX + 1008
|
||||||
world.event.S_EVENT_DYNAMIC_CARGO_REMOVED = world.event.S_EVENT_MAX + 1011
|
world.event.S_EVENT_DYNAMIC_CARGO_REMOVED = world.event.S_EVENT_MAX + 1009
|
||||||
|
|
||||||
|
|
||||||
--- The different types of events supported by MOOSE.
|
--- The different types of events supported by MOOSE.
|
||||||
@@ -234,8 +232,6 @@ EVENTS = {
|
|||||||
MarkChange = world.event.S_EVENT_MARK_CHANGE,
|
MarkChange = world.event.S_EVENT_MARK_CHANGE,
|
||||||
MarkRemoved = world.event.S_EVENT_MARK_REMOVED,
|
MarkRemoved = world.event.S_EVENT_MARK_REMOVED,
|
||||||
-- Moose Events
|
-- Moose Events
|
||||||
NewCargo = world.event.S_EVENT_NEW_CARGO,
|
|
||||||
DeleteCargo = world.event.S_EVENT_DELETE_CARGO,
|
|
||||||
NewZone = world.event.S_EVENT_NEW_ZONE,
|
NewZone = world.event.S_EVENT_NEW_ZONE,
|
||||||
DeleteZone = world.event.S_EVENT_DELETE_ZONE,
|
DeleteZone = world.event.S_EVENT_DELETE_ZONE,
|
||||||
NewZoneGoal = world.event.S_EVENT_NEW_ZONE_GOAL,
|
NewZoneGoal = world.event.S_EVENT_NEW_ZONE_GOAL,
|
||||||
@@ -512,16 +508,6 @@ local _EVENTMETA = {
|
|||||||
Event = "OnEventMarkRemoved",
|
Event = "OnEventMarkRemoved",
|
||||||
Text = "S_EVENT_MARK_REMOVED"
|
Text = "S_EVENT_MARK_REMOVED"
|
||||||
},
|
},
|
||||||
[EVENTS.NewCargo] = {
|
|
||||||
Order = 1,
|
|
||||||
Event = "OnEventNewCargo",
|
|
||||||
Text = "S_EVENT_NEW_CARGO"
|
|
||||||
},
|
|
||||||
[EVENTS.DeleteCargo] = {
|
|
||||||
Order = 1,
|
|
||||||
Event = "OnEventDeleteCargo",
|
|
||||||
Text = "S_EVENT_DELETE_CARGO"
|
|
||||||
},
|
|
||||||
[EVENTS.NewZone] = {
|
[EVENTS.NewZone] = {
|
||||||
Order = 1,
|
Order = 1,
|
||||||
Event = "OnEventNewZone",
|
Event = "OnEventNewZone",
|
||||||
@@ -1068,38 +1054,6 @@ end
|
|||||||
|
|
||||||
do -- Event Creation
|
do -- Event Creation
|
||||||
|
|
||||||
-- TODO Remove old Cargo event
|
|
||||||
--- Creation of a New Cargo Event.
|
|
||||||
-- @param #EVENT self
|
|
||||||
-- @param AI.AI_Cargo#AI_CARGO Cargo The Cargo created.
|
|
||||||
function EVENT:CreateEventNewCargo( Cargo )
|
|
||||||
self:F( { Cargo } )
|
|
||||||
|
|
||||||
local Event = {
|
|
||||||
id = EVENTS.NewCargo,
|
|
||||||
time = timer.getTime(),
|
|
||||||
cargo = Cargo,
|
|
||||||
}
|
|
||||||
|
|
||||||
world.onEvent( Event )
|
|
||||||
end
|
|
||||||
|
|
||||||
-- TODO Remove old Cargo event
|
|
||||||
--- Creation of a Cargo Deletion Event.
|
|
||||||
-- @param #EVENT self
|
|
||||||
-- @param AI.AI_Cargo#AI_CARGO Cargo The Cargo created.
|
|
||||||
function EVENT:CreateEventDeleteCargo( Cargo )
|
|
||||||
self:F( { Cargo } )
|
|
||||||
|
|
||||||
local Event = {
|
|
||||||
id = EVENTS.DeleteCargo,
|
|
||||||
time = timer.getTime(),
|
|
||||||
cargo = Cargo,
|
|
||||||
}
|
|
||||||
|
|
||||||
world.onEvent( Event )
|
|
||||||
end
|
|
||||||
|
|
||||||
--- Creation of a New Zone Event.
|
--- Creation of a New Zone Event.
|
||||||
-- @param #EVENT self
|
-- @param #EVENT self
|
||||||
-- @param Core.Zone#ZONE_BASE Zone The Zone created.
|
-- @param Core.Zone#ZONE_BASE Zone The Zone created.
|
||||||
@@ -1368,7 +1322,6 @@ function EVENT:onEvent( Event )
|
|||||||
Event.IniDynamicCargoName = Event.IniUnitName
|
Event.IniDynamicCargoName = Event.IniUnitName
|
||||||
Event.IniPlayerName = string.match(Event.IniUnitName,"^(.+)|%d%d:%d%d|PKG%d+")
|
Event.IniPlayerName = string.match(Event.IniUnitName,"^(.+)|%d%d:%d%d|PKG%d+")
|
||||||
else
|
else
|
||||||
--Event.IniUnit = CARGO:FindByName( Event.IniDCSUnitName )
|
|
||||||
Event.IniUnit = STATIC:FindByName( Event.IniDCSUnitName, false )
|
Event.IniUnit = STATIC:FindByName( Event.IniDCSUnitName, false )
|
||||||
end
|
end
|
||||||
Event.IniCoalition = Event.IniDCSUnit:getCoalition()
|
Event.IniCoalition = Event.IniDCSUnit:getCoalition()
|
||||||
@@ -1540,12 +1493,6 @@ function EVENT:onEvent( Event )
|
|||||||
Event.MarkGroupID = Event.groupID
|
Event.MarkGroupID = Event.groupID
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Cargo object.
|
|
||||||
if Event.cargo then
|
|
||||||
Event.Cargo = Event.cargo
|
|
||||||
Event.CargoName = Event.cargo.Name
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Dynamic cargo Object
|
-- Dynamic cargo Object
|
||||||
if Event.dynamiccargo then
|
if Event.dynamiccargo then
|
||||||
Event.IniDynamicCargo = Event.dynamiccargo
|
Event.IniDynamicCargo = Event.dynamiccargo
|
||||||
@@ -1707,15 +1654,6 @@ function EVENT:onEvent( Event )
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- When cargo was deleted, it may probably be because of an S_EVENT_DEAD.
|
|
||||||
-- However, in the loading logic, an S_EVENT_DEAD is also generated after a Destroy() call.
|
|
||||||
-- And this is a problem because it will remove all entries from the SET_CARGOs.
|
|
||||||
-- To prevent this from happening, the Cargo object has a flag NoDestroy.
|
|
||||||
-- When true, the SET_CARGO won't Remove the Cargo object from the set.
|
|
||||||
-- But we need to switch that flag off after the event handlers have been called.
|
|
||||||
if Event.id == EVENTS.DeleteCargo then
|
|
||||||
Event.Cargo.NoDestroy = nil
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
self:T( { EventMeta.Text, Event } )
|
self:T( { EventMeta.Text, Event } )
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -24,7 +24,6 @@
|
|||||||
-- * @{#SET_STATIC}: Defines a collection of @{Wrapper.Static}s filtered by filter criteria.
|
-- * @{#SET_STATIC}: Defines a collection of @{Wrapper.Static}s filtered by filter criteria.
|
||||||
-- * @{#SET_CLIENT}: Defines a collection of @{Wrapper.Client}s filtered by filter criteria.
|
-- * @{#SET_CLIENT}: Defines a collection of @{Wrapper.Client}s filtered by filter criteria.
|
||||||
-- * @{#SET_AIRBASE}: Defines a collection of @{Wrapper.Airbase}s filtered by filter criteria.
|
-- * @{#SET_AIRBASE}: Defines a collection of @{Wrapper.Airbase}s filtered by filter criteria.
|
||||||
-- * @{#SET_CARGO}: Defines a collection of @{Cargo.Cargo}s filtered by filter criteria.
|
|
||||||
-- * @{#SET_ZONE}: Defines a collection of @{Core.Zone}s filtered by filter criteria.
|
-- * @{#SET_ZONE}: Defines a collection of @{Core.Zone}s filtered by filter criteria.
|
||||||
-- * @{#SET_SCENERY}: Defines a collection of @{Wrapper.Scenery}s added via a filtered @{#SET_ZONE}.
|
-- * @{#SET_SCENERY}: Defines a collection of @{Wrapper.Scenery}s added via a filtered @{#SET_ZONE}.
|
||||||
-- * @{#SET_DYNAMICCARGO}: Defines a collection of @{Wrapper.DynamicCargo}s filtered by filter criteria.
|
-- * @{#SET_DYNAMICCARGO}: Defines a collection of @{Wrapper.DynamicCargo}s filtered by filter criteria.
|
||||||
@@ -6077,14 +6076,6 @@ do -- SET_ZONE
|
|||||||
if EventData.Zone then
|
if EventData.Zone then
|
||||||
local Zone = _DATABASE:FindZone(EventData.Zone.ZoneName)
|
local Zone = _DATABASE:FindZone(EventData.Zone.ZoneName)
|
||||||
if Zone and Zone.ZoneName then
|
if Zone and Zone.ZoneName then
|
||||||
|
|
||||||
-- When cargo was deleted, it may probably be because of an S_EVENT_DEAD.
|
|
||||||
-- However, in the loading logic, an S_EVENT_DEAD is also generated after a Destroy() call.
|
|
||||||
-- And this is a problem because it will remove all entries from the SET_ZONEs.
|
|
||||||
-- To prevent this from happening, the Zone object has a flag NoDestroy.
|
|
||||||
-- When true, the SET_ZONE won't Remove the Zone object from the set.
|
|
||||||
-- This flag is switched off after the event handlers have been called in the EVENT class.
|
|
||||||
--self:F({ ZoneNoDestroy = Zone.NoDestroy })
|
|
||||||
if Zone.NoDestroy then
|
if Zone.NoDestroy then
|
||||||
else
|
else
|
||||||
self:Remove(Zone.ZoneName)
|
self:Remove(Zone.ZoneName)
|
||||||
@@ -6599,14 +6590,6 @@ do -- SET_ZONE_GOAL
|
|||||||
if EventData.ZoneGoal then
|
if EventData.ZoneGoal then
|
||||||
local Zone = _DATABASE:FindZone(EventData.ZoneGoal.ZoneName)
|
local Zone = _DATABASE:FindZone(EventData.ZoneGoal.ZoneName)
|
||||||
if Zone and Zone.ZoneName then
|
if Zone and Zone.ZoneName then
|
||||||
|
|
||||||
-- When cargo was deleted, it may probably be because of an S_EVENT_DEAD.
|
|
||||||
-- However, in the loading logic, an S_EVENT_DEAD is also generated after a Destroy() call.
|
|
||||||
-- And this is a problem because it will remove all entries from the SET_ZONE_GOALs.
|
|
||||||
-- To prevent this from happening, the Zone object has a flag NoDestroy.
|
|
||||||
-- When true, the SET_ZONE_GOAL won't Remove the Zone object from the set.
|
|
||||||
-- This flag is switched off after the event handlers have been called in the EVENT class.
|
|
||||||
--self:F({ ZoneNoDestroy = Zone.NoDestroy })
|
|
||||||
if Zone.NoDestroy then
|
if Zone.NoDestroy then
|
||||||
else
|
else
|
||||||
self:Remove(Zone.ZoneName)
|
self:Remove(Zone.ZoneName)
|
||||||
@@ -6995,14 +6978,6 @@ do -- SET_OPSZONE
|
|||||||
if EventData.ZoneGoal then
|
if EventData.ZoneGoal then
|
||||||
local Zone = _DATABASE:FindZone(EventData.ZoneGoal.ZoneName)
|
local Zone = _DATABASE:FindZone(EventData.ZoneGoal.ZoneName)
|
||||||
if Zone and Zone.ZoneName then
|
if Zone and Zone.ZoneName then
|
||||||
|
|
||||||
-- When cargo was deleted, it may probably be because of an S_EVENT_DEAD.
|
|
||||||
-- However, in the loading logic, an S_EVENT_DEAD is also generated after a Destroy() call.
|
|
||||||
-- And this is a problem because it will remove all entries from the SET_OPSZONEs.
|
|
||||||
-- To prevent this from happening, the Zone object has a flag NoDestroy.
|
|
||||||
-- When true, the SET_OPSZONE won't Remove the Zone object from the set.
|
|
||||||
-- This flag is switched off after the event handlers have been called in the EVENT class.
|
|
||||||
--self:F({ ZoneNoDestroy = Zone.NoDestroy })
|
|
||||||
if Zone.NoDestroy then
|
if Zone.NoDestroy then
|
||||||
else
|
else
|
||||||
self:Remove(Zone.ZoneName)
|
self:Remove(Zone.ZoneName)
|
||||||
|
|||||||
@@ -503,6 +503,7 @@
|
|||||||
-- -- Start ARTY process.
|
-- -- Start ARTY process.
|
||||||
-- normandy:Start()
|
-- normandy:Start()
|
||||||
--
|
--
|
||||||
|
--
|
||||||
-- @field #ARTY
|
-- @field #ARTY
|
||||||
ARTY={
|
ARTY={
|
||||||
ClassName="ARTY",
|
ClassName="ARTY",
|
||||||
@@ -1203,37 +1204,6 @@ function ARTY:New(group, alias)
|
|||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Creates a new ARTY object from a MOOSE CARGO_GROUP object.
|
|
||||||
-- @param #ARTY self
|
|
||||||
-- @param Cargo.CargoGroup#CARGO_GROUP cargogroup The CARGO GROUP object for which artillery tasks should be assigned.
|
|
||||||
-- @param alias (Optional) Alias name the group will be calling itself when sending messages. Default is the group name.
|
|
||||||
-- @return #ARTY ARTY object or nil if group does not exist or is not a ground or naval group.
|
|
||||||
function ARTY:NewFromCargoGroup(cargogroup, alias)
|
|
||||||
|
|
||||||
if cargogroup then
|
|
||||||
BASE:T(string.format("ARTY script version %s. Added CARGO group %s.", ARTY.version, cargogroup:GetName()))
|
|
||||||
else
|
|
||||||
BASE:E("ERROR: Requested ARTY CARGO GROUP does not exist! (Has to be a MOOSE CARGO(!) group.)")
|
|
||||||
return nil
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Get group belonging to the cargo group.
|
|
||||||
local group=cargogroup:GetObject()
|
|
||||||
|
|
||||||
-- Create ARTY object.
|
|
||||||
local arty=ARTY:New(group,alias)
|
|
||||||
|
|
||||||
-- Set iscargo flag.
|
|
||||||
arty.iscargo=true
|
|
||||||
|
|
||||||
-- Set cargo group object.
|
|
||||||
arty.cargogroup=cargogroup
|
|
||||||
|
|
||||||
return arty
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
-- User Functions
|
-- User Functions
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,458 +0,0 @@
|
|||||||
--- **Functional** - Base class that models processes to achieve goals involving a Zone and Cargo.
|
|
||||||
--
|
|
||||||
-- ===
|
|
||||||
--
|
|
||||||
-- ZONE_GOAL_CARGO models processes that have a Goal with a defined achievement involving a Zone and Cargo.
|
|
||||||
-- Derived classes implement the ways how the achievements can be realized.
|
|
||||||
--
|
|
||||||
-- # Developer Note
|
|
||||||
--
|
|
||||||
-- 
|
|
||||||
--
|
|
||||||
-- Note while this class still works, it is no longer supported as the original author stopped active development of MOOSE
|
|
||||||
-- Therefore, this class is considered to be deprecated
|
|
||||||
--
|
|
||||||
-- ===
|
|
||||||
--
|
|
||||||
-- ### Author: **FlightControl**
|
|
||||||
--
|
|
||||||
-- ===
|
|
||||||
--
|
|
||||||
-- @module Functional.ZoneGoalCargo
|
|
||||||
-- @image MOOSE.JPG
|
|
||||||
|
|
||||||
do -- ZoneGoal
|
|
||||||
|
|
||||||
--- @type ZONE_GOAL_CARGO
|
|
||||||
-- @extends Functional.ZoneGoal#ZONE_GOAL
|
|
||||||
|
|
||||||
|
|
||||||
--- Models processes that have a Goal with a defined achievement involving a Zone and Cargo.
|
|
||||||
-- Derived classes implement the ways how the achievements can be realized.
|
|
||||||
--
|
|
||||||
-- ## 1. ZONE_GOAL_CARGO constructor
|
|
||||||
--
|
|
||||||
-- * @{#ZONE_GOAL_CARGO.New}(): Creates a new ZONE_GOAL_CARGO object.
|
|
||||||
--
|
|
||||||
-- ## 2. ZONE_GOAL_CARGO is a finite state machine (FSM).
|
|
||||||
--
|
|
||||||
-- ### 2.1 ZONE_GOAL_CARGO States
|
|
||||||
--
|
|
||||||
-- * **Deployed**: The Zone has been captured by an other coalition.
|
|
||||||
-- * **Airborne**: The Zone is currently intruded by an other coalition. There are units of the owning coalition and an other coalition in the Zone.
|
|
||||||
-- * **Loaded**: The Zone is guarded by the owning coalition. There is no other unit of an other coalition in the Zone.
|
|
||||||
-- * **Empty**: The Zone is empty. There is not valid unit in the Zone.
|
|
||||||
--
|
|
||||||
-- ### 2.2 ZONE_GOAL_CARGO Events
|
|
||||||
--
|
|
||||||
-- * **Capture**: The Zone has been captured by an other coalition.
|
|
||||||
-- * **Attack**: The Zone is currently intruded by an other coalition. There are units of the owning coalition and an other coalition in the Zone.
|
|
||||||
-- * **Guard**: The Zone is guarded by the owning coalition. There is no other unit of an other coalition in the Zone.
|
|
||||||
-- * **Empty**: The Zone is empty. There is not valid unit in the Zone.
|
|
||||||
--
|
|
||||||
-- ### 2.3 ZONE_GOAL_CARGO State Machine
|
|
||||||
--
|
|
||||||
-- @field #ZONE_GOAL_CARGO
|
|
||||||
ZONE_GOAL_CARGO = {
|
|
||||||
ClassName = "ZONE_GOAL_CARGO",
|
|
||||||
}
|
|
||||||
|
|
||||||
-- @field #table ZONE_GOAL_CARGO.States
|
|
||||||
ZONE_GOAL_CARGO.States = {}
|
|
||||||
|
|
||||||
--- ZONE_GOAL_CARGO Constructor.
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param Core.Zone#ZONE Zone A @{Core.Zone} object with the goal to be achieved.
|
|
||||||
-- @param #number Coalition The initial coalition owning the zone.
|
|
||||||
-- @return #ZONE_GOAL_CARGO
|
|
||||||
function ZONE_GOAL_CARGO:New( Zone, Coalition )
|
|
||||||
|
|
||||||
local self = BASE:Inherit( self, ZONE_GOAL:New( Zone ) ) -- #ZONE_GOAL_CARGO
|
|
||||||
self:F( { Zone = Zone, Coalition = Coalition } )
|
|
||||||
|
|
||||||
self:SetCoalition( Coalition )
|
|
||||||
|
|
||||||
do
|
|
||||||
|
|
||||||
--- Captured State Handler OnLeave for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] OnLeaveCaptured
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #string From
|
|
||||||
-- @param #string Event
|
|
||||||
-- @param #string To
|
|
||||||
-- @return #boolean
|
|
||||||
|
|
||||||
--- Captured State Handler OnEnter for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] OnEnterCaptured
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #string From
|
|
||||||
-- @param #string Event
|
|
||||||
-- @param #string To
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
do
|
|
||||||
|
|
||||||
--- Attacked State Handler OnLeave for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] OnLeaveAttacked
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #string From
|
|
||||||
-- @param #string Event
|
|
||||||
-- @param #string To
|
|
||||||
-- @return #boolean
|
|
||||||
|
|
||||||
--- Attacked State Handler OnEnter for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] OnEnterAttacked
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #string From
|
|
||||||
-- @param #string Event
|
|
||||||
-- @param #string To
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
do
|
|
||||||
|
|
||||||
--- Guarded State Handler OnLeave for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] OnLeaveGuarded
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #string From
|
|
||||||
-- @param #string Event
|
|
||||||
-- @param #string To
|
|
||||||
-- @return #boolean
|
|
||||||
|
|
||||||
--- Guarded State Handler OnEnter for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] OnEnterGuarded
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #string From
|
|
||||||
-- @param #string Event
|
|
||||||
-- @param #string To
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
do
|
|
||||||
|
|
||||||
--- Empty State Handler OnLeave for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] OnLeaveEmpty
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #string From
|
|
||||||
-- @param #string Event
|
|
||||||
-- @param #string To
|
|
||||||
-- @return #boolean
|
|
||||||
|
|
||||||
--- Empty State Handler OnEnter for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] OnEnterEmpty
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #string From
|
|
||||||
-- @param #string Event
|
|
||||||
-- @param #string To
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
self:AddTransition( "*", "Guard", "Guarded" )
|
|
||||||
|
|
||||||
--- Guard Handler OnBefore for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] OnBeforeGuard
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #string From
|
|
||||||
-- @param #string Event
|
|
||||||
-- @param #string To
|
|
||||||
-- @return #boolean
|
|
||||||
|
|
||||||
--- Guard Handler OnAfter for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] OnAfterGuard
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #string From
|
|
||||||
-- @param #string Event
|
|
||||||
-- @param #string To
|
|
||||||
|
|
||||||
--- Guard Trigger for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] Guard
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
|
|
||||||
--- Guard Asynchronous Trigger for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] __Guard
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #number Delay
|
|
||||||
|
|
||||||
self:AddTransition( "*", "Empty", "Empty" )
|
|
||||||
|
|
||||||
--- Empty Handler OnBefore for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] OnBeforeEmpty
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #string From
|
|
||||||
-- @param #string Event
|
|
||||||
-- @param #string To
|
|
||||||
-- @return #boolean
|
|
||||||
|
|
||||||
--- Empty Handler OnAfter for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] OnAfterEmpty
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #string From
|
|
||||||
-- @param #string Event
|
|
||||||
-- @param #string To
|
|
||||||
|
|
||||||
--- Empty Trigger for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] Empty
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
|
|
||||||
--- Empty Asynchronous Trigger for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] __Empty
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #number Delay
|
|
||||||
|
|
||||||
|
|
||||||
self:AddTransition( { "Guarded", "Empty" }, "Attack", "Attacked" )
|
|
||||||
|
|
||||||
--- Attack Handler OnBefore for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] OnBeforeAttack
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #string From
|
|
||||||
-- @param #string Event
|
|
||||||
-- @param #string To
|
|
||||||
-- @return #boolean
|
|
||||||
|
|
||||||
--- Attack Handler OnAfter for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] OnAfterAttack
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #string From
|
|
||||||
-- @param #string Event
|
|
||||||
-- @param #string To
|
|
||||||
|
|
||||||
--- Attack Trigger for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] Attack
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
|
|
||||||
--- Attack Asynchronous Trigger for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] __Attack
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #number Delay
|
|
||||||
|
|
||||||
self:AddTransition( { "Guarded", "Attacked", "Empty" }, "Capture", "Captured" )
|
|
||||||
|
|
||||||
--- Capture Handler OnBefore for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] OnBeforeCapture
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #string From
|
|
||||||
-- @param #string Event
|
|
||||||
-- @param #string To
|
|
||||||
-- @return #boolean
|
|
||||||
|
|
||||||
--- Capture Handler OnAfter for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] OnAfterCapture
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #string From
|
|
||||||
-- @param #string Event
|
|
||||||
-- @param #string To
|
|
||||||
|
|
||||||
--- Capture Trigger for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] Capture
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
|
|
||||||
--- Capture Asynchronous Trigger for ZONE_GOAL_CARGO
|
|
||||||
-- @function [parent=#ZONE_GOAL_CARGO] __Capture
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #number Delay
|
|
||||||
|
|
||||||
return self
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
--- Set the owning coalition of the zone.
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @param #number Coalition
|
|
||||||
function ZONE_GOAL_CARGO:SetCoalition( Coalition )
|
|
||||||
self.Coalition = Coalition
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
--- Get the owning coalition of the zone.
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @return #number Coalition.
|
|
||||||
function ZONE_GOAL_CARGO:GetCoalition()
|
|
||||||
return self.Coalition
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
--- Get the owning coalition name of the zone.
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
-- @return #string Coalition name.
|
|
||||||
function ZONE_GOAL_CARGO:GetCoalitionName()
|
|
||||||
|
|
||||||
if self.Coalition == coalition.side.BLUE then
|
|
||||||
return "Blue"
|
|
||||||
end
|
|
||||||
|
|
||||||
if self.Coalition == coalition.side.RED then
|
|
||||||
return "Red"
|
|
||||||
end
|
|
||||||
|
|
||||||
if self.Coalition == coalition.side.NEUTRAL then
|
|
||||||
return "Neutral"
|
|
||||||
end
|
|
||||||
|
|
||||||
return ""
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
function ZONE_GOAL_CARGO:IsGuarded()
|
|
||||||
|
|
||||||
local IsGuarded = self.Zone:IsAllInZoneOfCoalition( self.Coalition )
|
|
||||||
self:F( { IsGuarded = IsGuarded } )
|
|
||||||
return IsGuarded
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
function ZONE_GOAL_CARGO:IsEmpty()
|
|
||||||
|
|
||||||
local IsEmpty = self.Zone:IsNoneInZone()
|
|
||||||
self:F( { IsEmpty = IsEmpty } )
|
|
||||||
return IsEmpty
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
function ZONE_GOAL_CARGO:IsCaptured()
|
|
||||||
|
|
||||||
local IsCaptured = self.Zone:IsAllInZoneOfOtherCoalition( self.Coalition )
|
|
||||||
self:F( { IsCaptured = IsCaptured } )
|
|
||||||
return IsCaptured
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
function ZONE_GOAL_CARGO:IsAttacked()
|
|
||||||
|
|
||||||
local IsAttacked = self.Zone:IsSomeInZoneOfCoalition( self.Coalition )
|
|
||||||
self:F( { IsAttacked = IsAttacked } )
|
|
||||||
return IsAttacked
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- Mark.
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
function ZONE_GOAL_CARGO:Mark()
|
|
||||||
|
|
||||||
local Coord = self.Zone:GetCoordinate()
|
|
||||||
local ZoneName = self:GetZoneName()
|
|
||||||
local State = self:GetState()
|
|
||||||
|
|
||||||
if self.MarkRed and self.MarkBlue then
|
|
||||||
self:F( { MarkRed = self.MarkRed, MarkBlue = self.MarkBlue } )
|
|
||||||
Coord:RemoveMark( self.MarkRed )
|
|
||||||
Coord:RemoveMark( self.MarkBlue )
|
|
||||||
end
|
|
||||||
|
|
||||||
if self.Coalition == coalition.side.BLUE then
|
|
||||||
self.MarkBlue = Coord:MarkToCoalitionBlue( "Guard Zone: " .. ZoneName .. "\nStatus: " .. State )
|
|
||||||
self.MarkRed = Coord:MarkToCoalitionRed( "Capture Zone: " .. ZoneName .. "\nStatus: " .. State )
|
|
||||||
else
|
|
||||||
self.MarkRed = Coord:MarkToCoalitionRed( "Guard Zone: " .. ZoneName .. "\nStatus: " .. State )
|
|
||||||
self.MarkBlue = Coord:MarkToCoalitionBlue( "Capture Zone: " .. ZoneName .. "\nStatus: " .. State )
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
--- Bound.
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
function ZONE_GOAL_CARGO:onenterGuarded()
|
|
||||||
|
|
||||||
--self:GetParent( self ):onenterGuarded()
|
|
||||||
|
|
||||||
if self.Coalition == coalition.side.BLUE then
|
|
||||||
--elf.ProtectZone:BoundZone( 12, country.id.USA )
|
|
||||||
else
|
|
||||||
--self.ProtectZone:BoundZone( 12, country.id.RUSSIA )
|
|
||||||
end
|
|
||||||
|
|
||||||
self:Mark()
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
function ZONE_GOAL_CARGO:onenterCaptured()
|
|
||||||
|
|
||||||
--self:GetParent( self ):onenterCaptured()
|
|
||||||
|
|
||||||
local NewCoalition = self.Zone:GetCoalition()
|
|
||||||
self:F( { NewCoalition = NewCoalition } )
|
|
||||||
self:SetCoalition( NewCoalition )
|
|
||||||
|
|
||||||
self:Mark()
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
function ZONE_GOAL_CARGO:onenterEmpty()
|
|
||||||
|
|
||||||
--self:GetParent( self ):onenterEmpty()
|
|
||||||
|
|
||||||
self:Mark()
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
function ZONE_GOAL_CARGO:onenterAttacked()
|
|
||||||
|
|
||||||
--self:GetParent( self ):onenterAttacked()
|
|
||||||
|
|
||||||
self:Mark()
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
--- When started, check the Coalition status.
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
function ZONE_GOAL_CARGO:onafterGuard()
|
|
||||||
|
|
||||||
--self:F({BASE:GetParent( self )})
|
|
||||||
--BASE:GetParent( self ).onafterGuard( self )
|
|
||||||
|
|
||||||
if not self.SmokeScheduler then
|
|
||||||
self.SmokeScheduler = self:ScheduleRepeat( 1, 1, 0.1, nil, self.StatusSmoke, self )
|
|
||||||
end
|
|
||||||
if not self.ScheduleStatusZone then
|
|
||||||
self.ScheduleStatusZone = self:ScheduleRepeat( 15, 15, 0.1, nil, self.StatusZone, self )
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
function ZONE_GOAL_CARGO:IsCaptured()
|
|
||||||
|
|
||||||
local IsCaptured = self.Zone:IsAllInZoneOfOtherCoalition( self.Coalition )
|
|
||||||
self:F( { IsCaptured = IsCaptured } )
|
|
||||||
return IsCaptured
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
function ZONE_GOAL_CARGO:IsAttacked()
|
|
||||||
|
|
||||||
local IsAttacked = self.Zone:IsSomeInZoneOfCoalition( self.Coalition )
|
|
||||||
self:F( { IsAttacked = IsAttacked } )
|
|
||||||
return IsAttacked
|
|
||||||
end
|
|
||||||
|
|
||||||
--- Check status Coalition ownership.
|
|
||||||
-- @param #ZONE_GOAL_CARGO self
|
|
||||||
function ZONE_GOAL_CARGO:StatusZone()
|
|
||||||
|
|
||||||
local State = self:GetState()
|
|
||||||
self:F( { State = self:GetState() } )
|
|
||||||
|
|
||||||
self.Zone:Scan()
|
|
||||||
|
|
||||||
if State ~= "Guarded" and self:IsGuarded() then
|
|
||||||
self:Guard()
|
|
||||||
end
|
|
||||||
|
|
||||||
if State ~= "Empty" and self:IsEmpty() then
|
|
||||||
self:Empty()
|
|
||||||
end
|
|
||||||
|
|
||||||
if State ~= "Attacked" and self:IsAttacked() then
|
|
||||||
self:Attack()
|
|
||||||
end
|
|
||||||
|
|
||||||
if State ~= "Captured" and self:IsCaptured() then
|
|
||||||
self:Capture()
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
@@ -13,9 +13,6 @@ _DATABASE = DATABASE:New() -- Core.Database#DATABASE
|
|||||||
_SETTINGS = SETTINGS:Set() -- Core.Settings#SETTINGS
|
_SETTINGS = SETTINGS:Set() -- Core.Settings#SETTINGS
|
||||||
_SETTINGS:SetPlayerMenuOn()
|
_SETTINGS:SetPlayerMenuOn()
|
||||||
|
|
||||||
--- Register cargos.
|
|
||||||
_DATABASE:_RegisterCargos()
|
|
||||||
|
|
||||||
--- Register zones.
|
--- Register zones.
|
||||||
_DATABASE:_RegisterZones()
|
_DATABASE:_RegisterZones()
|
||||||
_DATABASE:_RegisterAirbases()
|
_DATABASE:_RegisterAirbases()
|
||||||
|
|||||||
@@ -0,0 +1,136 @@
|
|||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Utilities/Enums.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Utilities/Utils.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Utilities/Profiler.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Utilities/FiFo.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Utilities/Socket.lua' )
|
||||||
|
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Base.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Astar.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Beacon.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Condition.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/UserFlag.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Report.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Scheduler.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/ScheduleDispatcher.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Event.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Settings.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Menu.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Zone.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Zone_Detection.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Database.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Set.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Point.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Velocity.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Message.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Fsm.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Spawn.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/SpawnStatic.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Timer.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Goal.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Spot.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/MarkerOps_Base.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/TextAndSound.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Pathline.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/ClientMenu.lua')
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Core/Vector.lua')
|
||||||
|
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Wrapper/Object.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Wrapper/Identifiable.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Wrapper/Positionable.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Wrapper/Controllable.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Wrapper/Group.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Wrapper/Unit.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Wrapper/Client.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Wrapper/Static.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Wrapper/Airbase.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Wrapper/Scenery.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Wrapper/Marker.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Wrapper/Weapon.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Wrapper/Net.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Wrapper/Storage.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Wrapper/DynamicCargo.lua' )
|
||||||
|
|
||||||
|
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/Scoring.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/CleanUp.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/Movement.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/Sead.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/Escort.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/ATC_Ground.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/Detection.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/DetectionZones.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/Designate.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/RAT.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/Range.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/ZoneGoal.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/ZoneGoalCoalition.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/ZoneCaptureCoalition.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/Artillery.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/Suppression.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/PseudoATC.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/Warehouse.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/Fox.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/Mantis.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/Shorad.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/AICSAR.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/AmmoTruck.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/Autolase.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/Tiresias.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/Stratego.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/ClientWatch.lua')
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Functional/Formation.lua')
|
||||||
|
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/Airboss.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/RecoveryTanker.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/RescueHelo.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/ATIS.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/CTLD.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/CSAR.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/AirWing.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/ArmyGroup.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/Auftrag.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/Awacs.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/Brigade.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/Chief.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/Cohort.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/Commander.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/Fleet.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/FlightControl.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/FlightGroup.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/Flotilla.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/Intelligence.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/Legion.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/NavyGroup.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/Operation.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/OpsGroup.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/OpsTransport.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/OpsZone.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/Platoon.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/PlayerTask.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/PlayerRecce.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/Squadron.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/Target.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/EasyGCICAP.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Ops/EasyA2G.lua' )
|
||||||
|
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Shapes/ShapeBase.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Shapes/Circle.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Shapes/Cube.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Shapes/Line.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Shapes/Oval.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Shapes/Polygon.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Shapes/Triangle.lua' )
|
||||||
|
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Sound/UserSound.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Sound/SoundOutput.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Sound/Radio.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Sound/RadioQueue.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Sound/RadioSpeech.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Sound/SRS.lua' )
|
||||||
|
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Navigation/Point.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Navigation/Beacons.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Navigation/Radios.lua' )
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Navigation/Towns.lua' )
|
||||||
|
|
||||||
|
__Moose.Include( MOOSE_DEVELOPMENT_FOLDER..'/Moose/Globals.lua' )
|
||||||
@@ -1798,6 +1798,8 @@ ENUMS.Storage.weapons.missiles.Igla_S = 'weapons.missiles.Igla_S'
|
|||||||
ENUMS.Storage.weapons.gunmounts.AKAN_NO_TRC = 'weapons.gunmounts.{AKAN_NO_TRC}'
|
ENUMS.Storage.weapons.gunmounts.AKAN_NO_TRC = 'weapons.gunmounts.{AKAN_NO_TRC}'
|
||||||
ENUMS.Storage.weapons.gunmounts.AKAN = 'weapons.gunmounts.{AKAN}'
|
ENUMS.Storage.weapons.gunmounts.AKAN = 'weapons.gunmounts.{AKAN}'
|
||||||
ENUMS.Storage.weapons.shells.M882_9x19 = 'weapons.shells.9x19_m882'
|
ENUMS.Storage.weapons.shells.M882_9x19 = 'weapons.shells.9x19_m882'
|
||||||
|
ENUMS.Storage.weapons.droptanks.fuel_tank_370gal = "weapons.droptanks.fuel_tank_370gal"
|
||||||
|
ENUMS.Storage.weapons.droptanks.fuel_tank_300gal = "weapons.droptanks.fuel_tank_300gal"
|
||||||
|
|
||||||
-- UH-60L Mod
|
-- UH-60L Mod
|
||||||
ENUMS.Storage.weapons.gunmounts.UH60LGAU19 = 'weapons.gunmounts.UH-60L GAU-19'
|
ENUMS.Storage.weapons.gunmounts.UH60LGAU19 = 'weapons.gunmounts.UH-60L GAU-19'
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ function CLIENT:FindByName( ClientName, ClientBriefing, Error )
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Transport defines that the Client is a Transport. Transports show cargo.
|
--- Register a client.
|
||||||
-- @param #CLIENT self
|
-- @param #CLIENT self
|
||||||
-- @param #string ClientName Name of the client unit.
|
-- @param #string ClientName Name of the client unit.
|
||||||
-- @return #CLIENT self
|
-- @return #CLIENT self
|
||||||
@@ -507,15 +507,6 @@ function CLIENT:GetClientGroupDCSUnit()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
--- Evaluates if the CLIENT is a transport.
|
|
||||||
-- @param #CLIENT self
|
|
||||||
-- @return #boolean true is a transport.
|
|
||||||
function CLIENT:IsTransport()
|
|
||||||
self:F()
|
|
||||||
return self.ClientTransport
|
|
||||||
end
|
|
||||||
|
|
||||||
--- The main message driver for the CLIENT.
|
--- The main message driver for the CLIENT.
|
||||||
-- This function displays various messages to the Player logged into the CLIENT through the DCS World Messaging system.
|
-- This function displays various messages to the Player logged into the CLIENT through the DCS World Messaging system.
|
||||||
-- @param #CLIENT self
|
-- @param #CLIENT self
|
||||||
|
|||||||
@@ -2185,7 +2185,7 @@ function CONTROLLABLE:TaskFunction( FunctionString, ... )
|
|||||||
self:SetState( self, ArgumentKey, arg )
|
self:SetState( self, ArgumentKey, arg )
|
||||||
DCSScript[#DCSScript + 1] = "local Arguments = MissionControllable:GetState( MissionControllable, '" .. ArgumentKey .. "' ) "
|
DCSScript[#DCSScript + 1] = "local Arguments = MissionControllable:GetState( MissionControllable, '" .. ArgumentKey .. "' ) "
|
||||||
DCSScript[#DCSScript + 1] = FunctionString .. "( MissionControllable, unpack( Arguments ) )"
|
DCSScript[#DCSScript + 1] = FunctionString .. "( MissionControllable, unpack( Arguments ) )"
|
||||||
--DCSScript[#DCSScript + 1] = FunctionString .. "( MissionControllable, ((type(Arguments)=='table') and unpack(Arguments) or nil))"
|
--DCSScript[#DCSScript + 1] = FunctionString .. "( MissionControllable, ((type(Arguments)=='table') and unpack(Arguments) or nil))" -- this doesn't work
|
||||||
else
|
else
|
||||||
DCSScript[#DCSScript + 1] = FunctionString .. "( MissionControllable )"
|
DCSScript[#DCSScript + 1] = FunctionString .. "( MissionControllable )"
|
||||||
end
|
end
|
||||||
|
|||||||
+3
-6
@@ -28,14 +28,11 @@ It is the ambition to grow this framework as a de-facto standard for mission des
|
|||||||
|
|
||||||
## Two branches - Choose wisely
|
## Two branches - Choose wisely
|
||||||
|
|
||||||
In [DCS World] there is a `Stable` version and an `OpenBeta`. New features are released to the `OpenBeta` first and applied to `Stable` later.
|
In MOOSE there is a `master-ng` branch, which is the current `stable` version, and the `develop` branch.
|
||||||
People who choose to use `OpenBeta` can use the newest featuest and module, but accept the risk of bugs and unstable updates.
|
New modules (called classes in [Lua], like [OPS.Auftrag]) will first only be available in the `development` branch.
|
||||||
In MOOSE there is a `master` branch, which is comparable to the `Stable` version.
|
|
||||||
And there is the `development` branch, which is more like the `OpenBeta`.
|
|
||||||
New modules (called classes in [Lua], like [OPS.Auftrag]) will only available in the `development` branch.
|
|
||||||
|
|
||||||
Releases are the most stable approach to use MOOSE.
|
Releases are the most stable approach to use MOOSE.
|
||||||
From time to time the current state of the `master` branch is used to create release.
|
From time to time the current state of the `master-ng` branch is used to create release.
|
||||||
A release gets a spefific version number and will not be changed later on.
|
A release gets a spefific version number and will not be changed later on.
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|||||||
Reference in New Issue
Block a user