Progress, got now task acceptance working

This commit is contained in:
FlightControl
2016-07-07 13:11:31 +02:00
parent bba6aa8fb6
commit c5cc069e46
18 changed files with 833 additions and 253 deletions

View File

@@ -9,15 +9,24 @@ TASK_SEAD = {
--- Instantiates a new TASK_SEAD. Should never be used. Interface Class.
-- @param #TASK_SEAD self
-- @param Mission#MISSION Mission
-- @param Set#SET_UNIT UnitSetTargets
-- @param Zone#ZONE_BASE TargetZone
-- @return #TASK_SEAD self
function TASK_SEAD:New( TargetSetUnit, TargetZone )
local self = BASE:Inherit( self, BASE:New() )
function TASK_SEAD:New( Mission, TargetSetUnit, TargetZone )
local self = BASE:Inherit( self, TASK_BASE:New( Mission, "SEAD" ) )
self:F()
self.TargetSetUnit= TargetSetUnit
self.TargetSetUnit = TargetSetUnit
self.TargetZone = TargetZone
_EVENTDISPATCHER:OnBirth( self._EventAssignUnit, self )
_EVENTDISPATCHER:OnPlayerEnterUnit(self._EventAssignUnit, self )
_EVENTDISPATCHER:OnPlayerLeaveUnit(self._EventUnAssignUnit, self )
_EVENTDISPATCHER:OnCrash(self._EventUnAssignUnit, self )
_EVENTDISPATCHER:OnDead(self._EventUnAssignUnit, self )
_EVENTDISPATCHER:OnPilotDead(self._EventUnAssignUnit, self )
return self
end
@@ -26,33 +35,55 @@ end
-- @param Unit#UNIT TaskUnit
-- @return #TASK_SEAD self
function TASK_SEAD:AssignToUnit( TaskUnit )
self:F( TaskUnit:GetName() )
local ProcessAssign = self:AddProcess( TaskUnit, PROCESS_ASSIGN:New( self, TaskUnit, self.TaskBriefing ) )
local ProcessRoute = self:AddProcess( TaskUnit, PROCESS_ROUTE:New( self, TaskUnit, self.TargetZone ) )
local ProcessSEAD = self:AddProcess( TaskUnit, PROCESS_SEAD:New( self, TaskUnit, self.TargetUnitSet ) )
local ProcessSEAD = self:AddProcess( TaskUnit, PROCESS_SEAD:New( self, TaskUnit, self.TargetSetUnit ) )
local Process = self:AddStateMachine( TaskUnit, STATEMACHINE:New( {
local Process = self:AddStateMachine( TaskUnit, STATEMACHINE_TASK:New( self, {
initial = 'None',
events = {
{ name = 'Start', from = 'None', to = 'Assigned' },
{ name = 'Next', from = 'Unassigned', to = 'Assigned' },
{ name = 'Next', from = 'None', to = 'Planned' },
{ name = 'Next', from = 'Planned', to = 'Assigned' },
{ name = 'Reject', from = 'Planned', to = 'Rejected' },
{ name = 'Next', from = 'Assigned', to = 'Success' },
{ name = 'Fail', from = 'Assigned', to = 'Failed' },
{ name = 'Fail', from = 'Arrived', to = 'Failed' }
},
callbacks = {
onNext = self.OnNext,
onRemove = self.OnRemove,
},
subs = {
Route = { onstateparent = 'Assigned', oneventparent = 'Start', fsm = ProcessRoute.Fsm, event = 'Route' },
Assign = { onstateparent = 'Planned', oneventparent = 'Next', fsm = ProcessAssign.Fsm, event = 'Menu', returnevents = { 'Next', 'Reject' } },
Route = { onstateparent = 'Assigned', oneventparent = 'Next', fsm = ProcessRoute.Fsm, event = 'Route' },
Sead = { onstateparent = 'Assigned', oneventparent = 'Next', fsm = ProcessSEAD.Fsm, event = 'Await', returnevents = { 'Next' } }
}
} ) )
---Task_Client_Sead:AddScore( "Destroy", "Destroyed RADAR", 25 )
---Task_Client_Sead:AddScore( "Success", "Destroyed all radars!!!", 100 )
ProcessRoute:AddScore( "Failed", "failed to destroy a radar", -100 )
ProcessSEAD:AddScore( "Destroy", "destroyed a radar", 25 )
ProcessSEAD:AddScore( "Failed", "failed to destroy a radar", -100 )
Process:Start()
Process:Next()
return self
end
--- StateMachine callback function for a TASK
-- @param #TASK_SEAD self
-- @param StateMachine#STATEMACHINE_TASK Fsm
-- @param #string Event
-- @param #string From
-- @param #string To
-- @param Event#EVENTDATA Event
function TASK_SEAD:OnNext( Fsm, Event, From, To, Event )
self:SetState( self, "State", To )
end
--- @param #TASK_SEAD self
function TASK_SEAD:_Schedule()
self:F2()