From 28802ba2769773e421a56ebd306320bcc9c805a7 Mon Sep 17 00:00:00 2001 From: FlightControl Date: Fri, 25 Nov 2016 14:08:06 +0100 Subject: [PATCH] COMMANDCENTER class added, Event handlers added, HQs working with missions - Handling menus - Reporting missions - ... --- Moose Development/Moose/Core/Base.lua | 243 ++++++++++++++++++ Moose Development/Moose/Core/Event.lua | 4 +- Moose Development/Moose/Core/Message.lua | 6 +- Moose Development/Moose/Core/Set.lua | 2 +- Moose Development/Moose/Core/StateMachine.lua | 14 +- Moose Development/Moose/Moose.lua | 1 + .../Moose/Tasking/CommandCenter.lua | 148 +++++++++++ .../Moose/Tasking/DetectionManager.lua | 3 + Moose Development/Moose/Tasking/Mission.lua | 91 +++++-- Moose Development/Moose/Tasking/Task.lua | 19 +- Moose Development/Moose/Tasking/Task_SEAD.lua | 4 +- .../Moose/Wrapper/Identifiable.lua | 32 +-- Moose Development/Moose/Wrapper/Unit.lua | 2 +- .../Moose_Test_Detection_Dispatcher.lua | 9 +- .../Moose_Test_Detection_Dispatcher.miz | Bin 40413 -> 40434 bytes .../Moose_Test_Task_SEAD.lua | 7 +- .../Moose_Test_Task_SEAD.miz | Bin 25984 -> 26055 bytes .../DCS World - MOOSE - Tasking - SEAD.pptx | Bin 2757094 -> 2751510 bytes 18 files changed, 525 insertions(+), 60 deletions(-) create mode 100644 Moose Development/Moose/Tasking/CommandCenter.lua diff --git a/Moose Development/Moose/Core/Base.lua b/Moose Development/Moose/Core/Base.lua index 86f47f663..63b5ab355 100644 --- a/Moose Development/Moose/Core/Base.lua +++ b/Moose Development/Moose/Core/Base.lua @@ -231,6 +231,84 @@ function BASE:EventRemoveAll() return self end +--- Subscribe to a S_EVENT_SHOT event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnShot( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_SHOT ) + + return self +end + +--- Subscribe to a S_EVENT_HIT event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnHit( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_HIT ) + + return self +end + +--- Subscribe to a S_EVENT_TAKEOFF event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnTakeOff( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_TAKEOFF ) + + return self +end + +--- Subscribe to a S_EVENT_LAND event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnLand( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_LAND ) + + return self +end + +--- Subscribe to a S_EVENT_CRASH event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnCrash( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_CRASH ) + + return self +end + +--- Subscribe to a S_EVENT_EJECTION event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnEjection( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_EJECTION ) + + return self +end + + +--- Subscribe to a S_EVENT_REFUELING event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnRefueling( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_REFUELING ) + + return self +end + --- Subscribe to a S_EVENT_DEAD event. -- @param #BASE self -- @param #function EventFunction The function to be called when the event occurs for the unit. @@ -242,6 +320,171 @@ function BASE:EventOnDead( EventFunction ) return self end +--- Subscribe to a S_EVENT_PILOT_DEAD event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnPilotDead( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_PILOT_DEAD ) + + return self +end + +--- Subscribe to a S_EVENT_BASE_CAPTURED event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnBaseCaptured( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_BASE_CAPTURED ) + + return self +end + +--- Subscribe to a S_EVENT_MISSION_START event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnMissionStart( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_MISSION_START ) + + return self +end + +--- Subscribe to a S_EVENT_MISSION_END event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnPlayerMissionEnd( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_MISSION_END ) + + return self +end + +--- Subscribe to a S_EVENT_TOOK_CONTROL event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnTookControl( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_TOOK_CONTROL ) + + return self +end + +--- Subscribe to a S_EVENT_REFUELING_STOP event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnRefuelingStop( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_REFUELING_STOP ) + + return self +end + +--- Subscribe to a S_EVENT_BIRTH event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnBirth( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_BIRTH ) + + return self +end + +--- Subscribe to a S_EVENT_HUMAN_FAILURE event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnHumanFailure( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_HUMAN_FAILURE ) + + return self +end + +--- Subscribe to a S_EVENT_ENGINE_STARTUP event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnEngineStartup( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_ENGINE_STARTUP ) + + return self +end + +--- Subscribe to a S_EVENT_ENGINE_SHUTDOWN event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnEngineShutdown( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_ENGINE_SHUTDOWN ) + + return self +end + +--- Subscribe to a S_EVENT_PLAYER_ENTER_UNIT event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnPlayerEnterUnit( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_PLAYER_ENTER_UNIT ) + + return self +end + +--- Subscribe to a S_EVENT_PLAYER_LEAVE_UNIT event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnPlayerLeaveUnit( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_PLAYER_LEAVE_UNIT ) + + return self +end + +--- Subscribe to a S_EVENT_PLAYER_COMMENT event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnPlayerComment( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_PLAYER_COMMENT ) + + return self +end + +--- Subscribe to a S_EVENT_SHOOTING_START event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnShootingStart( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_SHOOTING_START ) + + return self +end + +--- Subscribe to a S_EVENT_SHOOTING_END event. +-- @param #BASE self +-- @param #function EventFunction The function to be called when the event occurs for the unit. +-- @return #BASE +function BASE:EventOnShootingEnd( EventFunction ) + + _EVENTDISPATCHER:OnEventGeneric( EventFunction, self, world.event.S_EVENT_SHOOTING_END ) + + return self +end + diff --git a/Moose Development/Moose/Core/Event.lua b/Moose Development/Moose/Core/Event.lua index 3c78e6bb9..a64e5a64b 100644 --- a/Moose Development/Moose/Core/Event.lua +++ b/Moose Development/Moose/Core/Event.lua @@ -45,13 +45,13 @@ local _EVENTCODES = { -- @field weapon -- @field IniDCSUnit -- @field IniDCSUnitName --- @field Unit#UNIT IniUnit +-- @field Wrapper.Unit#UNIT IniUnit -- @field #string IniUnitName -- @field IniDCSGroup -- @field IniDCSGroupName -- @field TgtDCSUnit -- @field TgtDCSUnitName --- @field Unit#UNIT TgtUnit +-- @field Wrapper.Unit#UNIT TgtUnit -- @field #string TgtUnitName -- @field TgtDCSGroup -- @field TgtDCSGroupName diff --git a/Moose Development/Moose/Core/Message.lua b/Moose Development/Moose/Core/Message.lua index bc44263bc..6c0f8a798 100644 --- a/Moose Development/Moose/Core/Message.lua +++ b/Moose Development/Moose/Core/Message.lua @@ -54,7 +54,11 @@ function MESSAGE:New( MessageText, MessageDuration, MessageCategory ) -- When no MessageCategory is given, we don't show it as a title... if MessageCategory and MessageCategory ~= "" then - self.MessageCategory = MessageCategory .. ": " + if MessageCategory:sub(-1) ~= "\n" then + self.MessageCategory = MessageCategory .. ": " + else + self.MessageCategory = MessageCategory:sub( 1, -2 ) .. ":\n" + end else self.MessageCategory = "" end diff --git a/Moose Development/Moose/Core/Set.lua b/Moose Development/Moose/Core/Set.lua index 4afa912d4..dd7575aad 100644 --- a/Moose Development/Moose/Core/Set.lua +++ b/Moose Development/Moose/Core/Set.lua @@ -720,7 +720,7 @@ end --- SET_GROUP class -- @type SET_GROUP --- @extends Set#SET_BASE +-- @extends #SET_BASE SET_GROUP = { ClassName = "SET_GROUP", Filter = { diff --git a/Moose Development/Moose/Core/StateMachine.lua b/Moose Development/Moose/Core/StateMachine.lua index caf7492b7..616dcc506 100644 --- a/Moose Development/Moose/Core/StateMachine.lua +++ b/Moose Development/Moose/Core/StateMachine.lua @@ -40,29 +40,29 @@ function STATEMACHINE:New( options ) --setmetatable( self, MT ) --self.__index = self - self.options = options + self.options = options or {} self.options.subs = self.options.subs or {} - self.current = options.initial or 'none' + self.current = self.options.initial or 'none' self.events = {} self.subs = {} self.endstates = {} - for _, event in pairs(options.events or {}) do + for _, event in pairs( self.options.events or {}) do self:T3({ "events", event }) self:_eventmap( self.events, event ) end - for name, callback in pairs(options.callbacks or {}) do + for name, callback in pairs( self.options.callbacks or {}) do self:T3("callbacks") self[name] = callback end - for name, sub in pairs( options.subs or {} ) do + for name, sub in pairs( self.options.subs or {} ) do self:T3("sub") self:_submap( self.subs, sub, name ) end - for name, endstate in pairs( options.endstates or {} ) do + for name, endstate in pairs( self.options.endstates or {} ) do self:T3("endstate") self.endstates[endstate] = endstate end @@ -104,7 +104,7 @@ function STATEMACHINE:AddProcess( From, Event, Process, ReturnEvents ) self:_submap( self.subs, sub, nil ) - self:AddAction( From, Event, "*" ) + self:AddAction( From, Event, From ) return Process end diff --git a/Moose Development/Moose/Moose.lua b/Moose Development/Moose/Moose.lua index 4b3d81f29..dca6ad7ad 100644 --- a/Moose Development/Moose/Moose.lua +++ b/Moose Development/Moose/Moose.lua @@ -52,6 +52,7 @@ Include.File( "Process/Account" ) Include.File( "Process/Smoke" ) --- Task Handling Classes +Include.File( "Tasking/CommandCenter" ) Include.File( "Tasking/Mission" ) Include.File( "Tasking/Task" ) Include.File( "Tasking/DetectionManager" ) diff --git a/Moose Development/Moose/Tasking/CommandCenter.lua b/Moose Development/Moose/Tasking/CommandCenter.lua new file mode 100644 index 000000000..2aca73ee0 --- /dev/null +++ b/Moose Development/Moose/Tasking/CommandCenter.lua @@ -0,0 +1,148 @@ +--- A COMMANDCENTER is the owner of multiple missions within MOOSE. +-- A COMMANDCENTER governs multiple missions, the tasking and the reporting. +-- @module CommandCenter + +--- The COMMANDCENTER class +-- @type COMMANDCENTER +-- @field Wrapper.Group#GROUP HQ +-- @list Missions +-- @extends Core.Base#BASE +COMMANDCENTER = { + ClassName = "COMMANDCENTER", + Name = "", +} + +--- The REPORT class +-- @type REPORT +-- @extends Core.Base#BASE +REPORT = { + ClassName = "REPORT", +} + +--- Create a new REPORT. +-- @param #REPORT self +-- @param #string Title +-- @return #REPORT +function REPORT:New( Title ) + + local self = BASE:Inherit( self, BASE:New() ) + + self.Report = {} + self.Report[#self.Report+1] = Title + + return self +end + +--- Add a new line to a REPORT. +-- @param #REPORT self +-- @param #string Text +-- @return #REPORT +function REPORT:Add( Text ) + self.Report[#self.Report+1] = Text + return self.Report[#self.Report+1] +end + +function REPORT:Text() + return table.concat( self.Report, "\n" ) +end + + +--- The constructor takes an IDENTIFIABLE as the HQ command center. +-- @param #COMMANDCENTER self +-- @param Wrapper.Positionable#POSITIONABLE HQ +-- @param #string HQName +-- @return #COMMANDCENTER +function COMMANDCENTER:New( HQ, HQName ) + + local self = BASE:Inherit( self, BASE:New() ) + + self.HQ = HQ + self.HQName = HQName or HQ:GetName() + self.HQCoalition = HQ:GetCoalition() + + self.Missions = {} + setmetatable( self.Missions, { __mode = "v" } ) + + self:EventOnBirth( + --- @param Core.Event#EVENTDATA EventData + function( HQ, EventData ) + self:E( { EventData } ) + local EventGroup = GROUP:Find( EventData.IniDCSGroup ) + if EventGroup and HQ:HasGroup( EventGroup ) then + local MenuHQ = MENU_GROUP:New( EventGroup, "HQ" ) + local MenuReporting = MENU_GROUP:New( EventGroup, "Reporting", MenuHQ ) + local MenuMissions = MENU_GROUP_COMMAND:New( EventGroup, "Missions", MenuReporting, HQ.ReportMissions, HQ, EventGroup ) + end + end + ) + + return self +end + +--- Gets the name of the HQ command center. +-- @param #COMMANDCENTER self +-- @return #string +function COMMANDCENTER:GetName() + + return self.HQName +end + + +--- Add a MISSION to be governed by the HQ command center. +-- @param #COMMANDCENTER self +-- @param Tasking.Mission#MISSION Mission +-- @return Tasking.Mission#MISSION +function COMMANDCENTER:AddMission( Mission ) + + self.Missions[Mission] = Mission + + return Mission +end + +--- Removes a MISSION to be governed by the HQ command center. +-- The given Mission is not nilified. +-- @param #COMMANDCENTER self +-- @param Tasking.Mission#MISSION Mission +-- @return Tasking.Mission#MISSION +function COMMANDCENTER:RemoveMission( Mission ) + + self.Missions[Mission] = nil + + return Mission +end + +--- Checks of the COMMANDCENTER has a GROUP. +-- @param #COMMANDCENTER self +-- @param Wrapper.Group#GROUP +-- @return #boolean +function COMMANDCENTER:HasGroup( MissionGroup ) + + local Has = false + + for MissionID, Mission in pairs( self.Missions ) do + local Mission = Mission -- Tasking.Mission#MISSION + if Mission:HasGroup( MissionGroup ) then + Has = true + break + end + end + + return Has +end + + +--- Report the status of all MISSIONs to a GROUP. +function COMMANDCENTER:ReportMissions( ReportGroup ) + self:E( ReportGroup ) + + local Report = REPORT:New() + + for MissionID, Mission in pairs( self.Missions ) do + local Mission = Mission -- Tasking.Mission#MISSION + Report:Add( " - " .. Mission:ReportStatus() ) + end + + MESSAGE:New( Report:Text(), 30, "Status Report Missions from " .. self:GetName() .. "\n" ):ToGroup( ReportGroup ) + +end + diff --git a/Moose Development/Moose/Tasking/DetectionManager.lua b/Moose Development/Moose/Tasking/DetectionManager.lua index 9aad97773..22ac4c2d9 100644 --- a/Moose Development/Moose/Tasking/DetectionManager.lua +++ b/Moose Development/Moose/Tasking/DetectionManager.lua @@ -485,6 +485,9 @@ do -- DETECTION_DISPATCHER end + -- TODO set menus using the HQ coordinator + --Mission:SetMenu() + if #AreaMsg > 0 then for TaskGroupID, TaskGroup in pairs( self.SetGroup:GetSet() ) do if not TaskGroup:GetState( TaskGroup, "Assigned" ) then diff --git a/Moose Development/Moose/Tasking/Mission.lua b/Moose Development/Moose/Tasking/Mission.lua index 2d1481a90..455b8405f 100644 --- a/Moose Development/Moose/Tasking/Mission.lua +++ b/Moose Development/Moose/Tasking/Mission.lua @@ -4,10 +4,10 @@ --- The MISSION class -- @type MISSION --- @extends Base#BASE -- @field #MISSION.Clients _Clients -- @field Menu#MENU_COALITION MissionMenu -- @field #string MissionBriefing +-- @extends Core.StateMachine#STATEMACHINE MISSION = { ClassName = "MISSION", Name = "", @@ -35,7 +35,6 @@ MISSION = { function MISSION:Meta() - local self = BASE:Inherit( self, BASE:New() ) return self end @@ -47,11 +46,14 @@ end -- @param #string MissionBriefing is a string indicating the mission briefing to be shown when a player joins a @{CLIENT}. -- @param DCSCoalitionObject#coalition MissionCoalition is a string indicating the coalition or party to which this mission belongs to. It is free format and can be chosen freely by the mission designer. Note that this field is not to be confused with the coalition concept of the ME. Examples of a Mission Coalition could be "NATO", "CCCP", "Intruders", "Terrorists"... -- @return #MISSION self -function MISSION:New( MissionName, MissionPriority, MissionBriefing, MissionCoalition ) +function MISSION:New( HQ, MissionName, MissionPriority, MissionBriefing, MissionCoalition ) - self = MISSION:Meta() + local self = BASE:Inherit( self, STATEMACHINE:New() ) -- Core.StateMachine#STATEMACHINE + self:T( { MissionName, MissionPriority, MissionBriefing, MissionCoalition } ) + self.HQ = HQ + HQ:AddMission( self ) self.Name = MissionName self.MissionPriority = MissionPriority self.MissionBriefing = MissionBriefing @@ -60,6 +62,13 @@ function MISSION:New( MissionName, MissionPriority, MissionBriefing, MissionCoal self.Tasks = {} setmetatable( self.Tasks, { __mode = "v" } ) + -- Build the Fsm for the mission. + + self:SetInitialState( "Idle" ) + self:AddAction( "Idle", "Start", "Ongoing" ) + self:AddAction( "Ongoing", "Stop", "Idle" ) + self:AddAction( "Ongoing", "Finish", "Finished" ) + return self end @@ -85,6 +94,27 @@ function MISSION:GetScoring() return self.Scoring end +--- Get the groups for which TASKS are given in the mission +-- @param #MISSION self +-- @return Core.Set#SET_GROUP +function MISSION:GetGroups() + + local SetGroup = SET_GROUP:New() + + for TaskID, Task in pairs( self:GetTasks() ) do + local Task = Task -- Tasking.Task#TASK_BASE + local GroupSet = Task:GetGroups() + GroupSet:ForEachGroup( + function( TaskGroup ) + SetGroup:Add( TaskGroup, TaskGroup ) + end + ) + end + + return SetGroup + +end + --- Sets the Planned Task menu. -- @param #MISSION self @@ -279,25 +309,42 @@ function MISSION:StatusToClients() end end ---- Handles the reporting. After certain time intervals, a MISSION report MESSAGE will be shown to All Players. -function MISSION:ReportTrigger() - self:F() +function MISSION:HasGroup( TaskGroup ) + local Has = false + + for TaskID, Task in pairs( self:GetTasks() ) do + local Task = Task -- Tasking.Task#TASK_BASE + if Task:HasGroup( TaskGroup ) then + Has = true + break + end + end + + return Has +end - if self.MissionReportShow == true then - self.MissionReportShow = false - return true - else - if self.MissionReportFlash == true then - if timer.getTime() >= self.MissionReportTrigger then - self.MissionReportTrigger = timer.getTime() + self.MissionTimeInterval - return true - else - return false - end - else - return false - end - end +--- Create a summary report of the mission (one line). +-- @param #MISSION self +-- @return #string +function MISSION:ReportStatus() + + -- List the name of the mission. + local Name = self:GetName() + + -- Determine the status of the mission. + local Status = self:GetState() + + -- Determine how many tasks are remaining. + local TasksRemaining = 0 + for TaskID, Task in pairs( self:GetTasks() ) do + local Task = Task -- Tasking.Task#TASK_BASE + if Task:IsStateSuccess() or Task:IsStateFailed() then + else + TasksRemaining = TasksRemaining + 1 + end + end + + return "Mission " .. Name .. " - " .. Status .. " - " .. TasksRemaining .. " tasks remaining." end --- Report the status of all MISSIONs to all active Clients. diff --git a/Moose Development/Moose/Tasking/Task.lua b/Moose Development/Moose/Tasking/Task.lua index b02d35102..a59dfeff1 100644 --- a/Moose Development/Moose/Tasking/Task.lua +++ b/Moose Development/Moose/Tasking/Task.lua @@ -55,7 +55,7 @@ -- @field Mission#MISSION Mission -- @field StateMachine#STATEMACHINE Fsm -- @field Set#SET_GROUP SetGroup The Set of Groups assigned to the Task --- @extends Core.Base#BASE +-- @extends Core.StateMachine#STATEMACHINE_TASK TASK_BASE = { ClassName = "TASK_BASE", TaskScheduler = nil, @@ -106,6 +106,13 @@ function TASK_BASE:New( Mission, SetGroupAssign, TaskName, TaskType, TaskCategor return self end +--- Gets the SET_GROUP assigned to the TASK. +-- @param #TASK_BASE self +-- @return Core.Set#SET_GROUP +function TASK_BASE:GetGroups() + return self.SetGroup +end + --- Cleans all references of a TASK_BASE. -- @param #TASK_BASE self -- @return #nil @@ -151,6 +158,16 @@ function TASK_BASE:AssignToGroup( TaskGroup ) return self end +--- +-- @param #TASK_BASE self +-- @param Wrapper.Group#GROUP FindGroup +-- @return #boolean +function TASK_BASE:HasGroup( FindGroup ) + + return self:GetGroups():IsIncludeObject( FindGroup ) + +end + --- Assign the @{Task} to an alive @{Unit}. -- @param #TASK_BASE self -- @param Unit#UNIT TaskUnit diff --git a/Moose Development/Moose/Tasking/Task_SEAD.lua b/Moose Development/Moose/Tasking/Task_SEAD.lua index bd5aaf225..89fe1ae45 100644 --- a/Moose Development/Moose/Tasking/Task_SEAD.lua +++ b/Moose Development/Moose/Tasking/Task_SEAD.lua @@ -51,8 +51,8 @@ do -- TASK_SEAD Fsm:AddProcess( "Assigned", "Route", PROCESS_ROUTE_ZONE:New( self.TargetZone ), { Arrived = "Update" } ) Fsm:AddAction ( "Rejected", "Eject", "Planned" ) Fsm:AddAction ( "Arrived", "Update", "Updated" ) - Fsm:AddProcess( "*", "Account", PROCESS_ACCOUNT_DEADS:New( self.TargetSetUnit, "SEAD" ), { Accounted = "Success" } ) - Fsm:AddProcess( "*", "Smoke", PROCESS_SMOKE_TARGETS_ZONE:New( self.TargetSetUnit, self.TargetZone ) ) + Fsm:AddProcess( "Updated", "Account", PROCESS_ACCOUNT_DEADS:New( self.TargetSetUnit, "SEAD" ), { Accounted = "Success" } ) + Fsm:AddProcess( "Updated", "Smoke", PROCESS_SMOKE_TARGETS_ZONE:New( self.TargetSetUnit, self.TargetZone ) ) Fsm:AddAction ( "Accounted", "Success", "Success" ) Fsm:AddAction ( "Failed", "Fail", "Failed" ) diff --git a/Moose Development/Moose/Wrapper/Identifiable.lua b/Moose Development/Moose/Wrapper/Identifiable.lua index 36d41e828..826ad217d 100644 --- a/Moose Development/Moose/Wrapper/Identifiable.lua +++ b/Moose Development/Moose/Wrapper/Identifiable.lua @@ -1,8 +1,8 @@ --- This module contains the IDENTIFIABLE class. -- --- 1) @{Identifiable#IDENTIFIABLE} class, extends @{Object#OBJECT} +-- 1) @{#IDENTIFIABLE} class, extends @{Object#OBJECT} -- =============================================================== --- The @{Identifiable#IDENTIFIABLE} class is a wrapper class to handle the DCS Identifiable objects: +-- The @{#IDENTIFIABLE} class is a wrapper class to handle the DCS Identifiable objects: -- -- * Support all DCS Identifiable APIs. -- * Enhance with Identifiable specific APIs not in the DCS Identifiable API set. @@ -12,18 +12,18 @@ -- ------------------------------ -- The IDENTIFIABLE class provides the following functions to construct a IDENTIFIABLE instance: -- --- * @{Identifiable#IDENTIFIABLE.New}(): Create a IDENTIFIABLE instance. +-- * @{#IDENTIFIABLE.New}(): Create a IDENTIFIABLE instance. -- -- 1.2) IDENTIFIABLE methods: -- -------------------------- -- The following methods can be used to identify an identifiable object: -- --- * @{Identifiable#IDENTIFIABLE.GetName}(): Returns the name of the Identifiable. --- * @{Identifiable#IDENTIFIABLE.IsAlive}(): Returns if the Identifiable is alive. --- * @{Identifiable#IDENTIFIABLE.GetTypeName}(): Returns the type name of the Identifiable. --- * @{Identifiable#IDENTIFIABLE.GetCoalition}(): Returns the coalition of the Identifiable. --- * @{Identifiable#IDENTIFIABLE.GetCountry}(): Returns the country of the Identifiable. --- * @{Identifiable#IDENTIFIABLE.GetDesc}(): Returns the descriptor structure of the Identifiable. +-- * @{#IDENTIFIABLE.GetName}(): Returns the name of the Identifiable. +-- * @{#IDENTIFIABLE.IsAlive}(): Returns if the Identifiable is alive. +-- * @{#IDENTIFIABLE.GetTypeName}(): Returns the type name of the Identifiable. +-- * @{#IDENTIFIABLE.GetCoalition}(): Returns the coalition of the Identifiable. +-- * @{#IDENTIFIABLE.GetCountry}(): Returns the country of the Identifiable. +-- * @{#IDENTIFIABLE.GetDesc}(): Returns the descriptor structure of the Identifiable. -- -- -- === @@ -60,7 +60,7 @@ function IDENTIFIABLE:New( IdentifiableName ) end --- Returns if the Identifiable is alive. --- @param Identifiable#IDENTIFIABLE self +-- @param #IDENTIFIABLE self -- @return #boolean true if Identifiable is alive. -- @return #nil The DCS Identifiable is not existing or alive. function IDENTIFIABLE:IsAlive() @@ -81,7 +81,7 @@ end --- Returns DCS Identifiable object name. -- The function provides access to non-activated objects too. --- @param Wrapper.Identifiable#IDENTIFIABLE self +-- @param #IDENTIFIABLE self -- @return #string The name of the DCS Identifiable. -- @return #nil The DCS Identifiable is not existing or alive. function IDENTIFIABLE:GetName() @@ -100,7 +100,7 @@ end --- Returns the type name of the DCS Identifiable. --- @param Identifiable#IDENTIFIABLE self +-- @param #IDENTIFIABLE self -- @return #string The type name of the DCS Identifiable. -- @return #nil The DCS Identifiable is not existing or alive. function IDENTIFIABLE:GetTypeName() @@ -137,7 +137,7 @@ end --- Returns the DCS Identifiable category name as defined within the DCS Identifiable Descriptor. --- @param Identifiable#IDENTIFIABLE self +-- @param #IDENTIFIABLE self -- @return #string The DCS Identifiable Category Name function IDENTIFIABLE:GetCategoryName() local DCSIdentifiable = self:GetDCSObject() @@ -152,7 +152,7 @@ function IDENTIFIABLE:GetCategoryName() end --- Returns coalition of the Identifiable. --- @param Identifiable#IDENTIFIABLE self +-- @param #IDENTIFIABLE self -- @return DCSCoalitionObject#coalition.side The side of the coalition. -- @return #nil The DCS Identifiable is not existing or alive. function IDENTIFIABLE:GetCoalition() @@ -171,7 +171,7 @@ function IDENTIFIABLE:GetCoalition() end --- Returns country of the Identifiable. --- @param Identifiable#IDENTIFIABLE self +-- @param #IDENTIFIABLE self -- @return DCScountry#country.id The country identifier. -- @return #nil The DCS Identifiable is not existing or alive. function IDENTIFIABLE:GetCountry() @@ -192,7 +192,7 @@ end --- Returns Identifiable descriptor. Descriptor type depends on Identifiable category. --- @param Identifiable#IDENTIFIABLE self +-- @param #IDENTIFIABLE self -- @return DCSIdentifiable#Identifiable.Desc The Identifiable descriptor. -- @return #nil The DCS Identifiable is not existing or alive. function IDENTIFIABLE:GetDesc() diff --git a/Moose Development/Moose/Wrapper/Unit.lua b/Moose Development/Moose/Wrapper/Unit.lua index 586b44bb4..c13354f99 100644 --- a/Moose Development/Moose/Wrapper/Unit.lua +++ b/Moose Development/Moose/Wrapper/Unit.lua @@ -342,7 +342,7 @@ function UNIT:GetNumber() end --- Returns the unit's group if it exist and nil otherwise. --- @param Unit#UNIT self +-- @param Wrapper.Unit#UNIT self -- @return Group#GROUP The Group of the Unit. -- @return #nil The DCS Unit is not existing or alive. function UNIT:GetGroup() diff --git a/Moose Test Missions/Moose_Test_Tasking/Moose_Test_Detection_Dispatcher/Moose_Test_Detection_Dispatcher.lua b/Moose Test Missions/Moose_Test_Tasking/Moose_Test_Detection_Dispatcher/Moose_Test_Detection_Dispatcher.lua index 200b3b1c1..a28827b61 100644 --- a/Moose Test Missions/Moose_Test_Tasking/Moose_Test_Detection_Dispatcher/Moose_Test_Detection_Dispatcher.lua +++ b/Moose Test Missions/Moose_Test_Tasking/Moose_Test_Detection_Dispatcher/Moose_Test_Detection_Dispatcher.lua @@ -1,12 +1,15 @@ +local HQ = GROUP:FindByName( "HQ", "Bravo HQ" ) + +local CommandCenter = COMMANDCENTER:New( HQ ) + local Scoring = SCORING:New( "Detect Demo" ) -local Mission = MISSION:New( "Attack Detect Mission", "High", "Attack Detect Mission Briefing", coalition.side.RED ):AddScoring( Scoring ) +local Mission = MISSION:New( CommandCenter, "Overlord", "High", "Attack Detect Mission Briefing", coalition.side.RED ):AddScoring( Scoring ) local FACSet = SET_GROUP:New():FilterPrefixes( "FAC" ):FilterCoalitions("red"):FilterStart() local FACDetection = DETECTION_AREAS:New( FACSet, 10000, 3000 ) local AttackGroups = SET_GROUP:New():FilterCoalitions( "red" ):FilterPrefixes( "Attack" ):FilterStart() -local CommandCenter = GROUP:FindByName( "HQ" ) -local TaskAssign = DETECTION_DISPATCHER:New( Mission, CommandCenter, AttackGroups, FACDetection ) +local TaskAssign = DETECTION_DISPATCHER:New( Mission, HQ, AttackGroups, FACDetection ) diff --git a/Moose Test Missions/Moose_Test_Tasking/Moose_Test_Detection_Dispatcher/Moose_Test_Detection_Dispatcher.miz b/Moose Test Missions/Moose_Test_Tasking/Moose_Test_Detection_Dispatcher/Moose_Test_Detection_Dispatcher.miz index ce493f85192e3104874d4e2f2515745e2b82c9b8..7730129d32c3193e337b715a5c43024a45b1b1b9 100644 GIT binary patch delta 11989 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 delta 11993 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 diff --git a/Moose Test Missions/Moose_Test_Tasking/Moose_Test_Task_SEAD/Moose_Test_Task_SEAD.lua b/Moose Test Missions/Moose_Test_Tasking/Moose_Test_Task_SEAD/Moose_Test_Task_SEAD.lua index 8fadd29c7..44c373941 100644 --- a/Moose Test Missions/Moose_Test_Tasking/Moose_Test_Task_SEAD/Moose_Test_Task_SEAD.lua +++ b/Moose Test Missions/Moose_Test_Tasking/Moose_Test_Task_SEAD/Moose_Test_Task_SEAD.lua @@ -8,7 +8,9 @@ end collectgarbage() -local Mission = MISSION:New( 'SEAD Targets', "Strategic", "SEAD the enemy", coalition.side.RED ) +local HQ = COMMANDCENTER:New( GROUP:FindByName( "HQ" ) ) + +local Mission = MISSION:New( HQ, 'SEAD Targets', "Strategic", "SEAD the enemy", coalition.side.RED ) local Scoring = SCORING:New( "SEAD" ) Mission:AddScoring( Scoring ) @@ -43,7 +45,4 @@ function FsmSEAD:onenterUpdated( TaskUnit ) self:Smoke() end --- Needs to be checked, should not be necessary ... -TaskSEAD:AssignToGroup( SEADSet:Get( "Test SEAD" ) ) - Mission:AddTask( TaskSEAD ) diff --git a/Moose Test Missions/Moose_Test_Tasking/Moose_Test_Task_SEAD/Moose_Test_Task_SEAD.miz b/Moose Test Missions/Moose_Test_Tasking/Moose_Test_Task_SEAD/Moose_Test_Task_SEAD.miz index 3e3ad80370e433bcc50e1baf3d0d9941cc22c85f..04f4a2de409f508988b9db5fa3bc5d157dd4601d 100644 GIT binary patch delta 11550 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 pDb5xgR0T#55MCy(7S>K4ZWeCJa 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 a0xzCV-zTUg#b?f7&fpD{+WJ}(C<_3lb=-~s delta 22850 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

<|*$J=ZOb0L; z`kSPc5C{YKD7l$jz~ppD6+8w&{18S=_jgXl8{Gj3(6;NZ znG5gr>@HBf2Ll7>3wVAux@yJpu0Fs4oj^~n6Hj2u$Ky*dXZ0OLN48kO7fkoO?mno_w!N-Y(fIeOTJ5flanEo8t^*hyaDD(IMD4P_ zG6KAZFk#ew2e5n#AU=lS0U?Jla=NQny(;ic$r|xhj@o}u4(>P7(JSdy4B8PU1d>DX zx75)0M#_8y<3&vjzS<L7B#!!C@9>V_{5%KSXg*;5Zkz${~DCn*}{+)x~ z&;WS#ng5@(BIib`eI>p5H1PKx{V4dK6xkY&0hFJ>h|#ZJP62ITL)3;h|EmU0PGJA} z8wQY^!pKqis&DG#K*K+ssk{cLK7dIhLC^4Cz4G0AVE7dL!C*82w|;>g@>2`&>=(G) zY!1A>nji21GvFMJ51k2sp1~B+xG4KZmi<{p}gvoQmmF!0}3P?Vf5z<&0xiT4uN UIfu~@ib2F6b70jW