mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Merge branch 'develop' into FF/Develop
This commit is contained in:
commit
f5022a12f8
@ -166,6 +166,37 @@ function AI_CARGO:IsRelocating()
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
--- On after Pickup event.
|
||||||
|
-- @param #AI_CARGO self
|
||||||
|
-- @param Wrapper.Group#GROUP APC
|
||||||
|
-- @param From
|
||||||
|
-- @param Event
|
||||||
|
-- @param To
|
||||||
|
-- @param Core.Point#COORDINATE Coordinate of the pickup point.
|
||||||
|
-- @param #number Speed Speed in km/h to drive to the pickup coordinate. Default is 50% of max possible speed the unit can go.
|
||||||
|
-- @param Core.Zone#ZONE PickupZone (optional) The zone where the cargo will be picked up. The PickupZone can be nil, if there wasn't any PickupZoneSet provided.
|
||||||
|
function AI_CARGO:onafterPickup( APC, From, Event, To, Coordinate, Speed, PickupZone )
|
||||||
|
|
||||||
|
self.Transporting = false
|
||||||
|
self.Relocating = true
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
--- On after Deploy event.
|
||||||
|
-- @param #AI_CARGO self
|
||||||
|
-- @param Wrapper.Group#GROUP APC
|
||||||
|
-- @param From
|
||||||
|
-- @param Event
|
||||||
|
-- @param To
|
||||||
|
-- @param Core.Point#COORDINATE Coordinate Deploy place.
|
||||||
|
-- @param #number Speed Speed in km/h to drive to the depoly coordinate. Default is 50% of max possible speed the unit can go.
|
||||||
|
function AI_CARGO:onafterDeploy( APC, From, Event, To, Coordinate, Speed, DeployZone )
|
||||||
|
|
||||||
|
self.Relocating = false
|
||||||
|
self.Transporting = true
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
--- On before Load event.
|
--- On before Load event.
|
||||||
-- @param #AI_CARGO self
|
-- @param #AI_CARGO self
|
||||||
@ -323,6 +354,19 @@ function AI_CARGO:onafterPickedUp( Carrier, From, Event, To, PickupZone )
|
|||||||
|
|
||||||
Carrier:RouteResume()
|
Carrier:RouteResume()
|
||||||
|
|
||||||
|
local HasCargo = false
|
||||||
|
if Carrier and Carrier :IsAlive() then
|
||||||
|
for Cargo, CarrierUnit in pairs( self.Carrier_Cargo ) do
|
||||||
|
HasCargo = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
self.Relocating = false
|
||||||
|
if HasCargo then
|
||||||
|
self.Transporting = true
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -432,7 +476,7 @@ end
|
|||||||
function AI_CARGO:onafterDeployed( Carrier, From, Event, To, DeployZone )
|
function AI_CARGO:onafterDeployed( Carrier, From, Event, To, DeployZone )
|
||||||
self:F( { Carrier, From, Event, To, DeployZone = DeployZone } )
|
self:F( { Carrier, From, Event, To, DeployZone = DeployZone } )
|
||||||
|
|
||||||
self:__Guard( 0.1 )
|
self.Transporting = false
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -355,8 +355,6 @@ function AI_CARGO_APC._Pickup( APC, self, Coordinate, Speed, PickupZone )
|
|||||||
|
|
||||||
if APC:IsAlive() then
|
if APC:IsAlive() then
|
||||||
self:Load( PickupZone )
|
self:Load( PickupZone )
|
||||||
self.Relocating = false
|
|
||||||
self.Transporting = true
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -367,8 +365,6 @@ function AI_CARGO_APC._Deploy( APC, self, Coordinate, DeployZone )
|
|||||||
|
|
||||||
if APC:IsAlive() then
|
if APC:IsAlive() then
|
||||||
self:Unload( DeployZone )
|
self:Unload( DeployZone )
|
||||||
self.Transporting = false
|
|
||||||
self.Relocating = false
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -405,8 +401,7 @@ function AI_CARGO_APC:onafterPickup( APC, From, Event, To, Coordinate, Speed, Pi
|
|||||||
AI_CARGO_APC._Pickup( APC, self, Coordinate, Speed, PickupZone )
|
AI_CARGO_APC._Pickup( APC, self, Coordinate, Speed, PickupZone )
|
||||||
end
|
end
|
||||||
|
|
||||||
self.Relocating = true
|
self:GetParent( self, AI_CARGO_APC ).onafterPickup( self, APC, From, Event, To, Coordinate, Speed, PickupZone )
|
||||||
self.Transporting = false
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -438,12 +433,28 @@ function AI_CARGO_APC:onafterDeploy( APC, From, Event, To, Coordinate, Speed, De
|
|||||||
|
|
||||||
APC:Route( Waypoints, 1 ) -- Move after a random seconds to the Route. See the Route method for details.
|
APC:Route( Waypoints, 1 ) -- Move after a random seconds to the Route. See the Route method for details.
|
||||||
|
|
||||||
self.Relocating = false
|
self:GetParent( self, AI_CARGO_APC ).onafterDeploy( self, APC, From, Event, To, Coordinate, Speed, DeployZone )
|
||||||
self.Transporting = true
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- On after Deployed event.
|
||||||
|
-- @param #AI_CARGO_APC self
|
||||||
|
-- @param Wrapper.Group#GROUP Carrier
|
||||||
|
-- @param #string From From state.
|
||||||
|
-- @param #string Event Event.
|
||||||
|
-- @param #string To To state.
|
||||||
|
-- @param Core.Zone#ZONE DeployZone The zone wherein the cargo is deployed. This can be any zone type, like a ZONE, ZONE_GROUP, ZONE_AIRBASE.
|
||||||
|
function AI_CARGO_APC:onafterDeployed( APC, From, Event, To, DeployZone )
|
||||||
|
self:F( { APC, From, Event, To, DeployZone = DeployZone } )
|
||||||
|
|
||||||
|
self:__Guard( 0.1 )
|
||||||
|
|
||||||
|
self:GetParent( self, AI_CARGO_APC ).onafterDeployed( self, APC, From, Event, To, DeployZone )
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
--- On after Home event.
|
--- On after Home event.
|
||||||
-- @param #AI_CARGO_APC self
|
-- @param #AI_CARGO_APC self
|
||||||
|
|||||||
@ -145,18 +145,6 @@ function AI_CARGO_AIRPLANE:New( Airplane, CargoSet )
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function AI_CARGO_AIRPLANE:IsTransporting()
|
|
||||||
|
|
||||||
return self.Transporting == true
|
|
||||||
end
|
|
||||||
|
|
||||||
function AI_CARGO_AIRPLANE:IsRelocating()
|
|
||||||
|
|
||||||
return self.Relocating == true
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- Set the Carrier (controllable). Also initializes events for carrier and defines the coalition.
|
--- Set the Carrier (controllable). Also initializes events for carrier and defines the coalition.
|
||||||
-- @param #AI_CARGO_AIRPLANE self
|
-- @param #AI_CARGO_AIRPLANE self
|
||||||
-- @param Wrapper.Group#GROUP Airplane Transport plane.
|
-- @param Wrapper.Group#GROUP Airplane Transport plane.
|
||||||
@ -252,16 +240,12 @@ function AI_CARGO_AIRPLANE:onafterLanded( Airplane, From, Event, To )
|
|||||||
-- Aircraft was sent to this airbase to pickup troops. Initiate loadling.
|
-- Aircraft was sent to this airbase to pickup troops. Initiate loadling.
|
||||||
if self.RoutePickup == true then
|
if self.RoutePickup == true then
|
||||||
self:Load( self.PickupZone )
|
self:Load( self.PickupZone )
|
||||||
self.RoutePickup = false
|
|
||||||
self.Relocating = true
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Aircraft was send to this airbase to deploy troops. Initiate unloading.
|
-- Aircraft was send to this airbase to deploy troops. Initiate unloading.
|
||||||
if self.RouteDeploy == true then
|
if self.RouteDeploy == true then
|
||||||
self:Unload()
|
self:Unload()
|
||||||
self.RouteDeploy = false
|
self.RouteDeploy = false
|
||||||
self.Transporting = false
|
|
||||||
self.Relocating = false
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -326,8 +310,7 @@ function AI_CARGO_AIRPLANE:onafterPickup( Airplane, From, Event, To, Coordinate,
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
self.Transporting = false
|
self:GetParent( self, AI_CARGO_AIRPLANE ).onafterPickup( self, Airplane, From, Event, To, Coordinate, Speed, PickupZone )
|
||||||
self.Relocating = true
|
|
||||||
else
|
else
|
||||||
--env.info("FF onafterpick aircraft not alive")
|
--env.info("FF onafterpick aircraft not alive")
|
||||||
end
|
end
|
||||||
@ -364,30 +347,12 @@ function AI_CARGO_AIRPLANE:onafterDeploy( Airplane, From, Event, To, Coordinate,
|
|||||||
-- Set destination airbase for next :Route() command.
|
-- Set destination airbase for next :Route() command.
|
||||||
self.Airbase = Airbase
|
self.Airbase = Airbase
|
||||||
|
|
||||||
self.Transporting = true
|
self:GetParent( self, AI_CARGO_AIRPLANE ).onafterDeploy( self, Airplane, From, Event, To, Coordinate, Speed, DeployZone )
|
||||||
self.Relocating = false
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- On after PickedUp event. All cargo is inside the carrier and ready to be transported.
|
|
||||||
-- @param #AI_CARGO_AIRPLANE self
|
|
||||||
-- @param Wrapper.Group#GROUP Airplane Cargo transport plane.
|
|
||||||
-- @param #string From From state.
|
|
||||||
-- @param #string Event Event.
|
|
||||||
-- @param #string To To state.
|
|
||||||
-- @param Core.Zone#ZONE PickupZone (optional) The zone where the cargo will be picked up. The PickupZone can be nil, if there wasn't any PickupZoneSet provided.
|
|
||||||
function AI_CARGO_AIRPLANE:onafterPickedUp( Airplane, From, Event, To, PickupZone )
|
|
||||||
self:F( { AirplaneGroup, From, Event, To } )
|
|
||||||
|
|
||||||
if Airplane and Airplane:IsAlive() then
|
|
||||||
self.Transporting = true -- This will only be executed when there is no cargo boarded anymore. The dispatcher will then kick-off the deploy cycle!
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
--- On after Unload event. Cargo is beeing unloaded, i.e. the unboarding process is started.
|
--- On after Unload event. Cargo is beeing unloaded, i.e. the unboarding process is started.
|
||||||
-- @param #AI_CARGO_AIRPLANE self
|
-- @param #AI_CARGO_AIRPLANE self
|
||||||
-- @param Wrapper.Group#GROUP Airplane Cargo transport plane.
|
-- @param Wrapper.Group#GROUP Airplane Cargo transport plane.
|
||||||
@ -422,22 +387,6 @@ end
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- On after Deployed event.
|
|
||||||
-- @param #AI_CARGO_AIRPLANE self
|
|
||||||
-- @param Wrapper.Group#GROUP Airplane Cargo transport plane.
|
|
||||||
-- @param #string From From state.
|
|
||||||
-- @param #string Event Event.
|
|
||||||
-- @param #string To To state.
|
|
||||||
-- @param Cargo.Cargo#CARGO Cargo
|
|
||||||
function AI_CARGO_AIRPLANE:onafterDeployed( Airplane, From, Event, To, DeployZone )
|
|
||||||
|
|
||||||
if Airplane and Airplane:IsAlive() then
|
|
||||||
self.Transporting = false -- This will only be executed when there is no cargo onboard anymore. The dispatcher will then kick-off the pickup cycle!
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- Route the airplane from one airport or it's current position to another airbase.
|
--- Route the airplane from one airport or it's current position to another airbase.
|
||||||
-- @param #AI_CARGO_AIRPLANE self
|
-- @param #AI_CARGO_AIRPLANE self
|
||||||
|
|||||||
@ -13,7 +13,8 @@
|
|||||||
--
|
--
|
||||||
-- @module AI.AI_Cargo_Dispatcher_Airplane
|
-- @module AI.AI_Cargo_Dispatcher_Airplane
|
||||||
-- @image AI_Cargo_Dispatching_For_Airplanes.JPG
|
-- @image AI_Cargo_Dispatching_For_Airplanes.JPG
|
||||||
--
|
|
||||||
|
|
||||||
--- @type AI_CARGO_DISPATCHER_AIRPLANE
|
--- @type AI_CARGO_DISPATCHER_AIRPLANE
|
||||||
-- @extends AI.AI_Cargo_Dispatcher#AI_CARGO_DISPATCHER
|
-- @extends AI.AI_Cargo_Dispatcher#AI_CARGO_DISPATCHER
|
||||||
|
|
||||||
@ -62,8 +63,8 @@ function AI_CARGO_DISPATCHER_AIRPLANE:New( AirplaneSet, CargoSet, PickupZoneSet,
|
|||||||
|
|
||||||
local self = BASE:Inherit( self, AI_CARGO_DISPATCHER:NewWithZones( AirplaneSet, CargoSet, PickupZoneSet, DeployZoneSet ) ) -- #AI_CARGO_DISPATCHER_AIRPLANE
|
local self = BASE:Inherit( self, AI_CARGO_DISPATCHER:NewWithZones( AirplaneSet, CargoSet, PickupZoneSet, DeployZoneSet ) ) -- #AI_CARGO_DISPATCHER_AIRPLANE
|
||||||
|
|
||||||
self:SetDeploySpeed( 200, 150 )
|
self:SetDeploySpeed( 1200, 600 )
|
||||||
self:SetPickupSpeed( 200, 150 )
|
self:SetPickupSpeed( 1200, 600 )
|
||||||
self:SetPickupRadius( 0, 0 )
|
self:SetPickupRadius( 0, 0 )
|
||||||
self:SetDeployRadius( 0, 0 )
|
self:SetDeployRadius( 0, 0 )
|
||||||
|
|
||||||
|
|||||||
@ -176,16 +176,6 @@ function AI_CARGO_HELICOPTER:New( Helicopter, CargoSet )
|
|||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
function AI_CARGO_HELICOPTER:IsTransporting()
|
|
||||||
|
|
||||||
return self.Transporting == true
|
|
||||||
end
|
|
||||||
|
|
||||||
function AI_CARGO_HELICOPTER:IsRelocating()
|
|
||||||
|
|
||||||
return self.Relocating == true
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
--- Set the Carrier.
|
--- Set the Carrier.
|
||||||
-- @param #AI_CARGO_HELICOPTER self
|
-- @param #AI_CARGO_HELICOPTER self
|
||||||
@ -392,33 +382,6 @@ end
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- On after PickedUp event, raised when all cargo has been loaded into the CarrierGroup.
|
|
||||||
-- @param #AI_CARGO_HELICOPTER self
|
|
||||||
-- @param Wrapper.Group#GROUP Helicopter
|
|
||||||
-- @param #string From From state.
|
|
||||||
-- @param #string Event Event.
|
|
||||||
-- @param #string To To state.
|
|
||||||
-- @param Cargo.Cargo#CARGO Cargo Cargo object.
|
|
||||||
-- @return #boolean Cargo is loaded.
|
|
||||||
-- @param Core.Zone#ZONE PickupZone (optional) The zone where the cargo will be picked up. The PickupZone can be nil, if there wasn't any PickupZoneSet provided.
|
|
||||||
function AI_CARGO_HELICOPTER:onafterPickedUp( Helicopter, From, Event, To, PickupZone )
|
|
||||||
self:F( { Helicopter, From, Event, To } )
|
|
||||||
|
|
||||||
local HasCargo = false
|
|
||||||
if Helicopter and Helicopter:IsAlive() then
|
|
||||||
for Cargo, CarrierUnit in pairs( self.Carrier_Cargo ) do
|
|
||||||
HasCargo = true
|
|
||||||
break
|
|
||||||
end
|
|
||||||
self.Relocating = false
|
|
||||||
if HasCargo then
|
|
||||||
self.Transporting = true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
--- On after Deployed event.
|
--- On after Deployed event.
|
||||||
-- @param #AI_CARGO_HELICOPTER self
|
-- @param #AI_CARGO_HELICOPTER self
|
||||||
-- @param Wrapper.Group#GROUP Helicopter
|
-- @param Wrapper.Group#GROUP Helicopter
|
||||||
@ -440,7 +403,8 @@ function AI_CARGO_HELICOPTER:onafterDeployed( Helicopter, From, Event, To, Deplo
|
|||||||
end, Helicopter
|
end, Helicopter
|
||||||
)
|
)
|
||||||
|
|
||||||
self.Transporting = false
|
self:GetParent( self, AI_CARGO_HELICOPTER ).onafterDeployed( self, Helicopter, From, Event, To, DeployZone )
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -506,8 +470,8 @@ function AI_CARGO_HELICOPTER:onafterPickup( Helicopter, From, Event, To, Coordin
|
|||||||
|
|
||||||
self.PickupZone = PickupZone
|
self.PickupZone = PickupZone
|
||||||
|
|
||||||
self.Relocating = true
|
self:GetParent( self, AI_CARGO_HELICOPTER ).onafterPickup( self, Helicopter, From, Event, To, Coordinate, Speed, PickupZone )
|
||||||
self.Transporting = false
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -584,8 +548,7 @@ function AI_CARGO_HELICOPTER:onafterDeploy( Helicopter, From, Event, To, Coordin
|
|||||||
-- Now route the helicopter
|
-- Now route the helicopter
|
||||||
Helicopter:Route( Route, 0 )
|
Helicopter:Route( Route, 0 )
|
||||||
|
|
||||||
self.Relocating = false
|
self:GetParent( self, AI_CARGO_HELICOPTER ).onafterDeploy( self, Helicopter, From, Event, To, Coordinate, Speed, DeployZone )
|
||||||
self.Transporting = true
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user