mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Cargo fixes
This commit is contained in:
parent
e4473010eb
commit
4b6612e114
@ -142,6 +142,17 @@ function AI_CARGO:New( Carrier, CargoSet )
|
|||||||
-- @param #string Event
|
-- @param #string Event
|
||||||
-- @param #string To
|
-- @param #string To
|
||||||
|
|
||||||
|
--- On after Deployed event.
|
||||||
|
-- @function [parent=#AI_CARGO] OnAfterDeployed
|
||||||
|
-- @param #AI_CARGO 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.
|
||||||
|
-- @param #boolean Defend Defend for APCs.
|
||||||
|
|
||||||
|
|
||||||
for _, CarrierUnit in pairs( Carrier:GetUnits() ) do
|
for _, CarrierUnit in pairs( Carrier:GetUnits() ) do
|
||||||
local CarrierUnit = CarrierUnit -- Wrapper.Unit#UNIT
|
local CarrierUnit = CarrierUnit -- Wrapper.Unit#UNIT
|
||||||
CarrierUnit:SetCargoBayWeightLimit()
|
CarrierUnit:SetCargoBayWeightLimit()
|
||||||
@ -256,9 +267,10 @@ function AI_CARGO:onbeforeLoad( Carrier, From, Event, To, PickupZone )
|
|||||||
self:F( { "In radius", CarrierUnit:GetName() } )
|
self:F( { "In radius", CarrierUnit:GetName() } )
|
||||||
|
|
||||||
local CargoWeight = Cargo:GetWeight()
|
local CargoWeight = Cargo:GetWeight()
|
||||||
|
local CarrierSpace=Carrier_Weight[CarrierUnit]
|
||||||
|
|
||||||
-- Only when there is space within the bay to load the next cargo item!
|
-- Only when there is space within the bay to load the next cargo item!
|
||||||
if Carrier_Weight[CarrierUnit] > CargoWeight then --and CargoBayFreeVolume > CargoVolume then
|
if CarrierSpace > CargoWeight then
|
||||||
Carrier:RouteStop()
|
Carrier:RouteStop()
|
||||||
--Cargo:Ungroup()
|
--Cargo:Ungroup()
|
||||||
Cargo:__Board( -LoadDelay, CarrierUnit )
|
Cargo:__Board( -LoadDelay, CarrierUnit )
|
||||||
@ -275,6 +287,8 @@ function AI_CARGO:onbeforeLoad( Carrier, From, Event, To, PickupZone )
|
|||||||
|
|
||||||
-- Ok, we loaded a cargo, now we can stop the loop.
|
-- Ok, we loaded a cargo, now we can stop the loop.
|
||||||
break
|
break
|
||||||
|
else
|
||||||
|
self:T(string.format("WARNING: Cargo too heavy for carrier %s. Cargo=%.1f > %.1f free space", tostring(CarrierUnit:GetName()), CargoWeight, CarrierSpace))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -554,6 +568,7 @@ end
|
|||||||
-- @param #string Event Event.
|
-- @param #string Event Event.
|
||||||
-- @param #string To To state.
|
-- @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.
|
-- @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.
|
||||||
|
-- @param #boolean Defend Defend for APCs.
|
||||||
function AI_CARGO:onafterDeployed( Carrier, From, Event, To, DeployZone, Defend )
|
function AI_CARGO:onafterDeployed( Carrier, From, Event, To, DeployZone, Defend )
|
||||||
self:F( { Carrier, From, Event, To, DeployZone = DeployZone, Defend = Defend } )
|
self:F( { Carrier, From, Event, To, DeployZone = DeployZone, Defend = Defend } )
|
||||||
|
|
||||||
|
|||||||
@ -76,25 +76,31 @@ function AI_CARGO_AIRPLANE:New( Airplane, CargoSet )
|
|||||||
--- Pickup Handler OnAfter for AI_CARGO_AIRPLANE
|
--- Pickup Handler OnAfter for AI_CARGO_AIRPLANE
|
||||||
-- @function [parent=#AI_CARGO_AIRPLANE] OnAfterPickup
|
-- @function [parent=#AI_CARGO_AIRPLANE] OnAfterPickup
|
||||||
-- @param #AI_CARGO_AIRPLANE self
|
-- @param #AI_CARGO_AIRPLANE self
|
||||||
-- @param Wrapper.Group#GROUP Airplane Cargo plane.
|
-- @param Wrapper.Group#GROUP Airplane Cargo transport plane.
|
||||||
-- @param #string From
|
-- @param #string From From state.
|
||||||
-- @param #string Event
|
-- @param #string Event Event.
|
||||||
-- @param #string To
|
-- @param #string To To state.
|
||||||
-- @param Wrapper.Airbase#AIRBASE Airbase Airbase where troops are picked up.
|
-- @param Core.Point#COORDINATE Coordinate The coordinate where to pickup stuff.
|
||||||
-- @param #number Speed in km/h for travelling to pickup base.
|
-- @param #number Speed Speed in km/h for travelling to pickup base.
|
||||||
|
-- @param #number Height Height in meters to move to the pickup coordinate.
|
||||||
|
-- @param Core.Zone#ZONE_AIRBASE PickupZone The airbase zone where the cargo will be picked up.
|
||||||
|
|
||||||
--- Pickup Trigger for AI_CARGO_AIRPLANE
|
--- Pickup Trigger for AI_CARGO_AIRPLANE
|
||||||
-- @function [parent=#AI_CARGO_AIRPLANE] Pickup
|
-- @function [parent=#AI_CARGO_AIRPLANE] Pickup
|
||||||
-- @param #AI_CARGO_AIRPLANE self
|
-- @param #AI_CARGO_AIRPLANE self
|
||||||
-- @param Wrapper.Airbase#AIRBASE Airbase Airbase where troops are picked up.
|
-- @param Core.Point#COORDINATE Coordinate The coordinate where to pickup stuff.
|
||||||
-- @param #number Speed in km/h for travelling to pickup base.
|
-- @param #number Speed Speed in km/h for travelling to pickup base.
|
||||||
|
-- @param #number Height Height in meters to move to the pickup coordinate.
|
||||||
|
-- @param Core.Zone#ZONE_AIRBASE PickupZone The airbase zone where the cargo will be picked up.
|
||||||
|
|
||||||
--- Pickup Asynchronous Trigger for AI_CARGO_AIRPLANE
|
--- Pickup Asynchronous Trigger for AI_CARGO_AIRPLANE
|
||||||
-- @function [parent=#AI_CARGO_AIRPLANE] __Pickup
|
-- @function [parent=#AI_CARGO_AIRPLANE] __Pickup
|
||||||
-- @param #AI_CARGO_AIRPLANE self
|
-- @param #AI_CARGO_AIRPLANE self
|
||||||
-- @param #number Delay Delay in seconds.
|
-- @param #number Delay Delay in seconds.
|
||||||
-- @param Wrapper.Airbase#AIRBASE Airbase Airbase where troops are picked up.
|
-- @param Core.Point#COORDINATE Coordinate The coordinate where to pickup stuff.
|
||||||
-- @param #number Speed in km/h for travelling to pickup base.
|
-- @param #number Speed Speed in km/h for travelling to pickup base.
|
||||||
|
-- @param #number Height Height in meters to move to the pickup coordinate.
|
||||||
|
-- @param Core.Zone#ZONE_AIRBASE PickupZone The airbase zone where the cargo will be picked up.
|
||||||
|
|
||||||
--- Deploy Handler OnBefore for AI_CARGO_AIRPLANE
|
--- Deploy Handler OnBefore for AI_CARGO_AIRPLANE
|
||||||
-- @function [parent=#AI_CARGO_AIRPLANE] OnBeforeDeploy
|
-- @function [parent=#AI_CARGO_AIRPLANE] OnBeforeDeploy
|
||||||
@ -111,24 +117,30 @@ function AI_CARGO_AIRPLANE:New( Airplane, CargoSet )
|
|||||||
-- @function [parent=#AI_CARGO_AIRPLANE] OnAfterDeploy
|
-- @function [parent=#AI_CARGO_AIRPLANE] OnAfterDeploy
|
||||||
-- @param #AI_CARGO_AIRPLANE self
|
-- @param #AI_CARGO_AIRPLANE self
|
||||||
-- @param Wrapper.Group#GROUP Airplane Cargo plane.
|
-- @param Wrapper.Group#GROUP Airplane Cargo plane.
|
||||||
-- @param #string From
|
-- @param #string From From state.
|
||||||
-- @param #string Event
|
-- @param #string Event Event.
|
||||||
-- @param #string To
|
-- @param #string To To state.
|
||||||
-- @param Wrapper.Airbase#AIRBASE Airbase Destination airbase where troops are deployed.
|
-- @param Core.Point#COORDINATE Coordinate Coordinate where to deploy stuff.
|
||||||
-- @param #number Speed Speed in km/h for travelling to deploy base.
|
-- @param #number Speed Speed in km/h for travelling to the deploy base.
|
||||||
|
-- @param #number Height Height in meters to move to the home coordinate.
|
||||||
|
-- @param Core.Zone#ZONE_AIRBASE DeployZone The airbase zone where the cargo will be deployed.
|
||||||
|
|
||||||
--- Deploy Trigger for AI_CARGO_AIRPLANE
|
--- Deploy Trigger for AI_CARGO_AIRPLANE
|
||||||
-- @function [parent=#AI_CARGO_AIRPLANE] Deploy
|
-- @function [parent=#AI_CARGO_AIRPLANE] Deploy
|
||||||
-- @param #AI_CARGO_AIRPLANE self
|
-- @param #AI_CARGO_AIRPLANE self
|
||||||
-- @param Wrapper.Airbase#AIRBASE Airbase Destination airbase where troops are deployed.
|
-- @param Core.Point#COORDINATE Coordinate Coordinate where to deploy stuff.
|
||||||
-- @param #number Speed Speed in km/h for travelling to deploy base.
|
-- @param #number Speed Speed in km/h for travelling to the deploy base.
|
||||||
|
-- @param #number Height Height in meters to move to the home coordinate.
|
||||||
|
-- @param Core.Zone#ZONE_AIRBASE DeployZone The airbase zone where the cargo will be deployed.
|
||||||
|
|
||||||
--- Deploy Asynchronous Trigger for AI_CARGO_AIRPLANE
|
--- Deploy Asynchronous Trigger for AI_CARGO_AIRPLANE
|
||||||
-- @function [parent=#AI_CARGO_AIRPLANE] __Deploy
|
-- @function [parent=#AI_CARGO_AIRPLANE] __Deploy
|
||||||
-- @param #AI_CARGO_AIRPLANE self
|
-- @param #AI_CARGO_AIRPLANE self
|
||||||
-- @param #number Delay Delay in seconds.
|
-- @param #number Delay Delay in seconds.
|
||||||
-- @param Wrapper.Airbase#AIRBASE Airbase Destination airbase where troops are deployed.
|
-- @param Core.Point#COORDINATE Coordinate Coordinate where to deploy stuff.
|
||||||
-- @param #number Speed Speed in km/h for travelling to deploy base.
|
-- @param #number Speed Speed in km/h for travelling to the deploy base.
|
||||||
|
-- @param #number Height Height in meters to move to the home coordinate.
|
||||||
|
-- @param Core.Zone#ZONE_AIRBASE DeployZone The airbase zone where the cargo will be deployed.
|
||||||
|
|
||||||
--- On after Loaded event, i.e. triggered when the cargo is inside the carrier.
|
--- On after Loaded event, i.e. triggered when the cargo is inside the carrier.
|
||||||
-- @function [parent=#AI_CARGO_AIRPLANE] OnAfterLoaded
|
-- @function [parent=#AI_CARGO_AIRPLANE] OnAfterLoaded
|
||||||
@ -138,6 +150,16 @@ function AI_CARGO_AIRPLANE:New( Airplane, CargoSet )
|
|||||||
-- @param Event
|
-- @param Event
|
||||||
-- @param To
|
-- @param To
|
||||||
|
|
||||||
|
|
||||||
|
--- On after Deployed event.
|
||||||
|
-- @function [parent=#AI_CARGO_AIRPLANE] OnAfterDeployed
|
||||||
|
-- @param #AI_CARGO_AIRPLANE self
|
||||||
|
-- @param Wrapper.Group#GROUP Airplane Cargo plane.
|
||||||
|
-- @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.
|
||||||
|
|
||||||
-- Set carrier.
|
-- Set carrier.
|
||||||
self:SetCarrier( Airplane )
|
self:SetCarrier( Airplane )
|
||||||
|
|
||||||
@ -259,15 +281,17 @@ end
|
|||||||
-- @param #string From From state.
|
-- @param #string From From state.
|
||||||
-- @param #string Event Event.
|
-- @param #string Event Event.
|
||||||
-- @param #string To To state.
|
-- @param #string To To state.
|
||||||
-- @param Core.Point#COORDINATE Coordinate
|
-- @param Core.Point#COORDINATE Coordinate The coordinate where to pickup stuff.
|
||||||
-- @param #number Speed in km/h for travelling to pickup base.
|
-- @param #number Speed Speed in km/h for travelling to pickup base.
|
||||||
-- @param #number Height Height in meters to move to the pickup coordinate.
|
-- @param #number Height Height in meters to move to the pickup coordinate.
|
||||||
-- @param Core.Zone#ZONE_AIRBASE (optional) PickupZone The zone where the cargo will be picked up.
|
-- @param Core.Zone#ZONE_AIRBASE PickupZone The airbase zone where the cargo will be picked up.
|
||||||
function AI_CARGO_AIRPLANE:onafterPickup( Airplane, From, Event, To, Coordinate, Speed, Height, PickupZone )
|
function AI_CARGO_AIRPLANE:onafterPickup( Airplane, From, Event, To, Coordinate, Speed, Height, PickupZone )
|
||||||
|
|
||||||
if Airplane and Airplane:IsAlive() then
|
if Airplane and Airplane:IsAlive() then
|
||||||
|
|
||||||
self.PickupZone = PickupZone
|
local airbasepickup=Coordinate:GetClosestAirbase()
|
||||||
|
|
||||||
|
self.PickupZone = PickupZone or ZONE_AIRBASE:New(airbasepickup:GetName())
|
||||||
|
|
||||||
-- Get closest airbase of current position.
|
-- Get closest airbase of current position.
|
||||||
local ClosestAirbase, DistToAirbase=Airplane:GetCoordinate():GetClosestAirbase()
|
local ClosestAirbase, DistToAirbase=Airplane:GetCoordinate():GetClosestAirbase()
|
||||||
@ -280,11 +304,10 @@ function AI_CARGO_AIRPLANE:onafterPickup( Airplane, From, Event, To, Coordinate,
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Set pickup airbase.
|
-- Set pickup airbase.
|
||||||
local Airbase = PickupZone:GetAirbase()
|
local Airbase = self.PickupZone:GetAirbase()
|
||||||
|
|
||||||
-- Distance from closest to pickup airbase ==> we need to know if we are already at the pickup airbase.
|
-- Distance from closest to pickup airbase ==> we need to know if we are already at the pickup airbase.
|
||||||
local Dist = Airbase:GetCoordinate():Get2DDistance(ClosestAirbase:GetCoordinate())
|
local Dist = Airbase:GetCoordinate():Get2DDistance(ClosestAirbase:GetCoordinate())
|
||||||
--env.info("Distance closest to pickup airbase = "..Dist)
|
|
||||||
|
|
||||||
if Airplane:InAir() or Dist>500 then
|
if Airplane:InAir() or Dist>500 then
|
||||||
|
|
||||||
@ -305,7 +328,7 @@ function AI_CARGO_AIRPLANE:onafterPickup( Airplane, From, Event, To, Coordinate,
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
self:GetParent( self, AI_CARGO_AIRPLANE ).onafterPickup( self, Airplane, From, Event, To, Coordinate, Speed, Height, PickupZone )
|
self:GetParent( self, AI_CARGO_AIRPLANE ).onafterPickup( self, Airplane, From, Event, To, Coordinate, Speed, Height, self.PickupZone )
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -318,15 +341,19 @@ end
|
|||||||
-- @param #string From From state.
|
-- @param #string From From state.
|
||||||
-- @param #string Event Event.
|
-- @param #string Event Event.
|
||||||
-- @param #string To To state.
|
-- @param #string To To state.
|
||||||
-- @param Core.Point#COORDINATE Coordinate
|
-- @param Core.Point#COORDINATE Coordinate Coordinate where to deploy stuff.
|
||||||
-- @param #number Speed in km/h for travelling to pickup base.
|
-- @param #number Speed Speed in km/h for travelling to the deploy base.
|
||||||
-- @param #number Height Height in meters to move to the home coordinate.
|
-- @param #number Height Height in meters to move to the home coordinate.
|
||||||
-- @param Core.Zone#ZONE_AIRBASE DeployZone The zone where the cargo will be deployed.
|
-- @param Core.Zone#ZONE_AIRBASE DeployZone The airbase zone where the cargo will be deployed.
|
||||||
function AI_CARGO_AIRPLANE:onafterDeploy( Airplane, From, Event, To, Coordinate, Speed, Height, DeployZone )
|
function AI_CARGO_AIRPLANE:onafterDeploy( Airplane, From, Event, To, Coordinate, Speed, Height, DeployZone )
|
||||||
|
|
||||||
if Airplane and Airplane:IsAlive()~=nil then
|
if Airplane and Airplane:IsAlive()~=nil then
|
||||||
|
|
||||||
local Airbase = DeployZone:GetAirbase()
|
local Airbase = Coordinate:GetClosestAirbase()
|
||||||
|
|
||||||
|
if DeployZone then
|
||||||
|
Airbase=DeployZone:GetAirbase()
|
||||||
|
end
|
||||||
|
|
||||||
-- Activate uncontrolled airplane.
|
-- Activate uncontrolled airplane.
|
||||||
if Airplane:IsAlive()==false then
|
if Airplane:IsAlive()==false then
|
||||||
@ -354,6 +381,7 @@ end
|
|||||||
-- @param #string From From state.
|
-- @param #string From From state.
|
||||||
-- @param #string Event Event.
|
-- @param #string Event Event.
|
||||||
-- @param #string To To state.
|
-- @param #string To To state.
|
||||||
|
-- @param Core.Zone#ZONE_AIRBASE DeployZone The airbase zone where the cargo will be deployed.
|
||||||
function AI_CARGO_AIRPLANE:onafterUnload( Airplane, From, Event, To, DeployZone )
|
function AI_CARGO_AIRPLANE:onafterUnload( Airplane, From, Event, To, DeployZone )
|
||||||
|
|
||||||
local UnboardInterval = 10
|
local UnboardInterval = 10
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user