mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
114 lines
3.0 KiB
Lua
114 lines
3.0 KiB
Lua
--- **Functional (WIP)** -- Base class that models processes to achieve goals involving a Zone for a Coalition.
|
|
--
|
|
-- ====
|
|
--
|
|
-- ZONE_GOAL_COALITION models processes that have a Goal with a defined achievement involving a Zone for a Coalition.
|
|
-- Derived classes implement the ways how the achievements can be realized.
|
|
--
|
|
-- ====
|
|
--
|
|
-- ### Author: **Sven Van de Velde (FlightControl)**
|
|
--
|
|
-- ====
|
|
--
|
|
-- @module ZoneGoalCoalition
|
|
|
|
do -- ZoneGoal
|
|
|
|
--- @type ZONE_GOAL_COALITION
|
|
-- @extends Functional.ZoneGoal#ZONE_GOAL
|
|
|
|
|
|
--- # ZONE_GOAL_COALITION class, extends @{ZoneGoal#ZONE_GOAL}
|
|
--
|
|
-- ZONE_GOAL_COALITION models processes that have a Goal with a defined achievement involving a Zone for a Coalition.
|
|
-- Derived classes implement the ways how the achievements can be realized.
|
|
--
|
|
-- ## 1. ZONE_GOAL_COALITION constructor
|
|
--
|
|
-- * @{#ZONE_GOAL_COALITION.New}(): Creates a new ZONE_GOAL_COALITION object.
|
|
--
|
|
-- ## 2. ZONE_GOAL_COALITION is a finite state machine (FSM).
|
|
--
|
|
-- ### 2.1 ZONE_GOAL_COALITION States
|
|
--
|
|
-- ### 2.2 ZONE_GOAL_COALITION Events
|
|
--
|
|
-- ### 2.3 ZONE_GOAL_COALITION State Machine
|
|
--
|
|
-- @field #ZONE_GOAL_COALITION
|
|
ZONE_GOAL_COALITION = {
|
|
ClassName = "ZONE_GOAL_COALITION",
|
|
}
|
|
|
|
--- @field #table ZONE_GOAL_COALITION.States
|
|
ZONE_GOAL_COALITION.States = {}
|
|
|
|
--- ZONE_GOAL_COALITION Constructor.
|
|
-- @param #ZONE_GOAL_COALITION self
|
|
-- @param Core.Zone#ZONE Zone A @{Zone} object with the goal to be achieved.
|
|
-- @param DCSCoalition.DCSCoalition#coalition Coalition The initial coalition owning the zone.
|
|
-- @return #ZONE_GOAL_COALITION
|
|
function ZONE_GOAL_COALITION:New( Zone, Coalition )
|
|
|
|
local self = BASE:Inherit( self, ZONE_GOAL:New( Zone ) ) -- #ZONE_GOAL_COALITION
|
|
self:F( { Zone = Zone, Coalition = Coalition } )
|
|
|
|
self:SetCoalition( Coalition )
|
|
|
|
|
|
return self
|
|
end
|
|
|
|
|
|
--- Set the owning coalition of the zone.
|
|
-- @param #ZONE_GOAL_COALITION self
|
|
-- @param DCSCoalition.DCSCoalition#coalition Coalition
|
|
function ZONE_GOAL_COALITION:SetCoalition( Coalition )
|
|
self.Coalition = Coalition
|
|
end
|
|
|
|
|
|
--- Get the owning coalition of the zone.
|
|
-- @param #ZONE_GOAL_COALITION self
|
|
-- @return DCSCoalition.DCSCoalition#coalition Coalition.
|
|
function ZONE_GOAL_COALITION:GetCoalition()
|
|
return self.Coalition
|
|
end
|
|
|
|
|
|
--- Get the owning coalition name of the zone.
|
|
-- @param #ZONE_GOAL_COALITION self
|
|
-- @return #string Coalition name.
|
|
function ZONE_GOAL_COALITION: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
|
|
|
|
|
|
--- Check status Coalition ownership.
|
|
-- @param #ZONE_GOAL_COALITION self
|
|
function ZONE_GOAL_COALITION:StatusZone()
|
|
|
|
local State = self:GetState()
|
|
self:E( { State = self:GetState() } )
|
|
|
|
self.Zone:Scan( { Object.Category.UNIT, Object.Category.STATIC } )
|
|
|
|
end
|
|
|
|
end
|
|
|