mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Progress on SEAD
This commit is contained in:
parent
22fdf034ee
commit
5ddeb8d396
@ -198,7 +198,7 @@ do -- ACT_ROUTE_POINT
|
|||||||
local self = BASE:Inherit( self, ACT_ROUTE:New() ) -- #ACT_ROUTE_POINT
|
local self = BASE:Inherit( self, ACT_ROUTE:New() ) -- #ACT_ROUTE_POINT
|
||||||
|
|
||||||
self.PointVec2 = PointVec2
|
self.PointVec2 = PointVec2
|
||||||
self.Range = Range
|
self.Range = Range or 0
|
||||||
|
|
||||||
self.DisplayInterval = 30
|
self.DisplayInterval = 30
|
||||||
self.DisplayCount = 30
|
self.DisplayCount = 30
|
||||||
@ -211,7 +211,7 @@ do -- ACT_ROUTE_POINT
|
|||||||
function ACT_ROUTE_POINT:Init( FsmRoute )
|
function ACT_ROUTE_POINT:Init( FsmRoute )
|
||||||
|
|
||||||
self.PointVec2 = FsmRoute.PointVec2
|
self.PointVec2 = FsmRoute.PointVec2
|
||||||
self.Range = FsmRoute.Range
|
self.Range = FsmRoute.Range or 0
|
||||||
|
|
||||||
self.DisplayInterval = 30
|
self.DisplayInterval = 30
|
||||||
self.DisplayCount = 30
|
self.DisplayCount = 30
|
||||||
|
|||||||
@ -57,7 +57,7 @@ do -- TASK_SEAD
|
|||||||
Fsm:AddProcess ( "RoutingToRendezVous", "RouteToRendezVousPoint", ACT_ROUTE_POINT:New(), { Arrived = "ArriveAtRendezVous" } )
|
Fsm:AddProcess ( "RoutingToRendezVous", "RouteToRendezVousPoint", ACT_ROUTE_POINT:New(), { Arrived = "ArriveAtRendezVous" } )
|
||||||
Fsm:AddProcess ( "RoutingToRendezVous", "RouteToRendezVousZone", ACT_ROUTE_ZONE:New(), { Arrived = "ArriveAtRendezVous" } )
|
Fsm:AddProcess ( "RoutingToRendezVous", "RouteToRendezVousZone", ACT_ROUTE_ZONE:New(), { Arrived = "ArriveAtRendezVous" } )
|
||||||
|
|
||||||
Fsm:AddTransition( "Arrived", "ArriveAtRendezVous", "ArrivedAtRendezVous" )
|
Fsm:AddTransition( { "Arrived", "RoutingToRendezVous" }, "ArriveAtRendezVous", "ArrivedAtRendezVous" )
|
||||||
|
|
||||||
Fsm:AddTransition( { "ArrivedAtRendezVous", "HoldingAtRendezVous" }, "Engage", "Engaging" )
|
Fsm:AddTransition( { "ArrivedAtRendezVous", "HoldingAtRendezVous" }, "Engage", "Engaging" )
|
||||||
Fsm:AddTransition( { "ArrivedAtRendezVous", "HoldingAtRendezVous" }, "HoldAtRendezVous", "HoldingAtRendezVous" )
|
Fsm:AddTransition( { "ArrivedAtRendezVous", "HoldingAtRendezVous" }, "HoldAtRendezVous", "HoldingAtRendezVous" )
|
||||||
|
|||||||
@ -106,16 +106,29 @@ local TargetZone = ZONE:New( "Target Zone" )
|
|||||||
-- 1. The Mission for which the Task needs to be achieved.
|
-- 1. The Mission for which the Task needs to be achieved.
|
||||||
-- 2. The set of groups of planes that pilots can join.
|
-- 2. The set of groups of planes that pilots can join.
|
||||||
-- 3. The name of the Task... This can be any name, and will be provided when the Pilot joins the task.
|
-- 3. The name of the Task... This can be any name, and will be provided when the Pilot joins the task.
|
||||||
-- 4. A type of the Task. When Tasks are in state Planned, then a menu can be provided that group the task based on this given type.
|
-- 4. A set of Targets for the Task.
|
||||||
local SEADTask = TASK_SEAD:New(
|
|
||||||
Mission,
|
|
||||||
SEADSet,
|
|
||||||
"SEAD Radars Vector 1",
|
|
||||||
TargetSet
|
|
||||||
) -- Tasking.Task_SEAD#TASK_SEAD
|
|
||||||
|
|
||||||
SEADTask:SetRendezVousPointVec2( RendezVousZone:GetPointVec2(), 6000 ) -- Done to test the RendezVousPointVec2 mechanism.
|
-- We are going to create a couple of variations of TASK_SEAD...
|
||||||
SEADTask:SetTargetZone( TargetZone )
|
|
||||||
|
-- A TASK_SEAD that will route the player towards a Rendez-Vous point, and once arrived, route the player to the Target Zone.
|
||||||
|
local SEADTaskRendezVousPoint = TASK_SEAD:New( Mission, SEADSet, "Route to Rendez-Vous Point, then route to Target Zone", TargetSet ) -- Tasking.Task_SEAD#TASK_SEAD
|
||||||
|
SEADTaskRendezVousPoint:SetRendezVousPointVec2( RendezVousZone:GetPointVec2(), 6000 ) -- Done to test the RendezVousPointVec2 mechanism.
|
||||||
|
SEADTaskRendezVousPoint:SetTargetZone( TargetZone )
|
||||||
|
|
||||||
|
-- A TASK_SEAD that will route the player towards a Rendez-Vous zone,
|
||||||
|
-- and once arrived, route the player to the Target Zone.
|
||||||
|
local SEADTaskRendezVousZone = TASK_SEAD:New( Mission, SEADSet, "Route to Rendez-Vous Zone, then route to Target Zone", TargetSet ) -- Tasking.Task_SEAD#TASK_SEAD
|
||||||
|
SEADTaskRendezVousZone:SetRendezVousZone( RendezVousZone ) -- Done to test the Route to Zone mechanism.
|
||||||
|
SEADTaskRendezVousZone:SetTargetZone( TargetZone )
|
||||||
|
|
||||||
|
-- A TASK_SEAD that has no Rendez_vous,
|
||||||
|
-- and routes the player straight to the Target Zone.
|
||||||
|
local SEADTaskToTargetZone = TASK_SEAD:New( Mission, SEADSet, "Route to Target Zone", TargetSet ) -- Tasking.Task_SEAD#TASK_SEAD
|
||||||
|
SEADTaskToTargetZone:SetTargetZone( TargetZone )
|
||||||
|
|
||||||
|
-- A TASK_SEAD that has no Rendez_vous,
|
||||||
|
-- and routes the player to each Target in the Set.
|
||||||
|
local SEADTaskToTargetNoZone = TASK_SEAD:New( Mission, SEADSet, "Route to Target per Target", TargetSet ) -- Tasking.Task_SEAD#TASK_SEAD
|
||||||
|
|
||||||
-- This is now an important part of the Task process definition.
|
-- This is now an important part of the Task process definition.
|
||||||
-- Each TASK contains a "Process Template".
|
-- Each TASK contains a "Process Template".
|
||||||
@ -127,7 +140,7 @@ SEADTask:SetTargetZone( TargetZone )
|
|||||||
-- The reason why this is done, is that each unit as a role within the Task, and can have different status.
|
-- The reason why this is done, is that each unit as a role within the Task, and can have different status.
|
||||||
-- Therefore, the FsmSEAD is a TEMPLATE PROCESS of the TASK, and must be designed as a UNIT with a player is executing that PROCESS.
|
-- Therefore, the FsmSEAD is a TEMPLATE PROCESS of the TASK, and must be designed as a UNIT with a player is executing that PROCESS.
|
||||||
|
|
||||||
local SEADProcess = SEADTask:GetUnitProcess() -- #SEADProcess
|
local SEADProcess = SEADTaskToTargetNoZone:GetUnitProcess() -- #SEADProcess
|
||||||
|
|
||||||
SEADProcess:AddScoreProcess( "Engaging", "Account", "Account", "destroyed a radar", 25 )
|
SEADProcess:AddScoreProcess( "Engaging", "Account", "Account", "destroyed a radar", 25 )
|
||||||
SEADProcess:AddScoreProcess( "Engaging", "Account", "Failed", "failed to destroy a radar", -10 )
|
SEADProcess:AddScoreProcess( "Engaging", "Account", "Failed", "failed to destroy a radar", -10 )
|
||||||
@ -142,9 +155,9 @@ SEADProcess:AddScore( "Failed", "Failed to destroy all target radars", -100 )
|
|||||||
-- we check if the SEADTask has still AlivePlayers assigned to the Task.
|
-- we check if the SEADTask has still AlivePlayers assigned to the Task.
|
||||||
-- If not, the Task will Abort.
|
-- If not, the Task will Abort.
|
||||||
-- And it will be Replanned within 30 seconds.
|
-- And it will be Replanned within 30 seconds.
|
||||||
function SEADTask:OnEnterPlayerCrashed( PlayerUnit, PlayerName )
|
function SEADTaskToTargetNoZone:OnEnterPlayerCrashed( PlayerUnit, PlayerName )
|
||||||
if not SEADTask:HasAliveUnits() then
|
if not SEADTaskToTargetNoZone:HasAliveUnits() then
|
||||||
SEADTask:__Abort()
|
SEADTaskToTargetNoZone:__Abort()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user