mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
Lots of fixes for cargo + optimization of Stage Messages
This commit is contained in:
258
Moose/Cargo.lua
258
Moose/Cargo.lua
@@ -31,24 +31,25 @@ CARGO_ZONE = {
|
||||
}
|
||||
}
|
||||
|
||||
function CARGO_ZONE:New( CargoZoneName, CargoHostName )
|
||||
trace.f( self.ClassName, { CargoZoneName, CargoHostName } )
|
||||
|
||||
local self = BASE:Inherit( self, BASE:New() )
|
||||
function CARGO_ZONE:New( CargoZoneName, CargoHostName ) local self = BASE:Inherit( self, BASE:New() )
|
||||
self:T( { CargoZoneName, CargoHostName } )
|
||||
|
||||
self.CargoZoneName = CargoZoneName
|
||||
self.CargoZone = trigger.misc.getZone( CargoZoneName )
|
||||
|
||||
|
||||
if CargoHostName then
|
||||
self.CargoHostName = CargoHostName
|
||||
self.CargoHostSpawn = SPAWN:New( CargoHostName )
|
||||
end
|
||||
|
||||
self:T( self.CargoZone )
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
function CARGO_ZONE:Spawn()
|
||||
trace.f( self.ClassName, CargoHostSpawn )
|
||||
self:T( CargoHostSpawn )
|
||||
|
||||
if self.CargoHostSpawn then
|
||||
local CargoHostGroup = Group.getByName( self.CargoHostSpawn:SpawnGroupName() )
|
||||
@@ -84,7 +85,7 @@ function CARGO_ZONE:GetHostUnit()
|
||||
end
|
||||
|
||||
function CARGO_ZONE:ReportCargosToClient( Client, CargoType )
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
local SignalUnit = self:GetHostUnit()
|
||||
|
||||
@@ -95,23 +96,25 @@ trace.f( self.ClassName )
|
||||
local HostMessage = ""
|
||||
|
||||
local IsCargo = false
|
||||
for CargoID, Cargo in pairs( Cargos ) do
|
||||
for CargoID, Cargo in pairs( CARGOS ) do
|
||||
if Cargo.CargoType == Task.CargoType then
|
||||
HostMessage = HostMessage .. "\n - " .. Cargo.CargoName
|
||||
IsCargo = true
|
||||
if Cargo:IsStatusNone() then
|
||||
HostMessage = HostMessage .. " - " .. Cargo.CargoName .. " - " .. Cargo.CargoType .. " (" .. Cargo.Weight .. "kg)" .. "\n"
|
||||
IsCargo = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if not IsCargo then
|
||||
HostMessage = HostMessage .. "No Cargo Available."
|
||||
HostMessage = "No Cargo Available."
|
||||
end
|
||||
|
||||
Client:Message( RouteMessage, self.MSG.TIME, Mission.Name .. "/StageHosts." .. SignalUnitTypeName, SignalUnitTypeName .. ": Reporting Cargo", 10 )
|
||||
Client:Message( HostMessage, 20, Mission.Name .. "/StageHosts." .. SignalUnitTypeName, SignalUnitTypeName .. ": Reporting Cargo", 10 )
|
||||
end
|
||||
end
|
||||
|
||||
function CARGO_ZONE:Signal()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
local Signalled = false
|
||||
|
||||
@@ -125,7 +128,7 @@ trace.f( self.ClassName )
|
||||
|
||||
if SignalUnit then
|
||||
|
||||
trace.i( self.ClassName, 'Signalling Unit' )
|
||||
self:T( 'Signalling Unit' )
|
||||
local SignalVehiclePos = SignalUnit:getPosition().p
|
||||
SignalVehiclePos.y = SignalVehiclePos.y + 2
|
||||
|
||||
@@ -165,7 +168,7 @@ trace.f( self.ClassName )
|
||||
end
|
||||
|
||||
function CARGO_ZONE:WhiteSmoke()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE
|
||||
self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.WHITE
|
||||
@@ -174,7 +177,7 @@ trace.f( self.ClassName )
|
||||
end
|
||||
|
||||
function CARGO_ZONE:BlueSmoke()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE
|
||||
self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.BLUE
|
||||
@@ -183,7 +186,7 @@ trace.f( self.ClassName )
|
||||
end
|
||||
|
||||
function CARGO_ZONE:RedSmoke()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE
|
||||
self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.RED
|
||||
@@ -192,7 +195,7 @@ trace.f( self.ClassName )
|
||||
end
|
||||
|
||||
function CARGO_ZONE:OrangeSmoke()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE
|
||||
self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.ORANGE
|
||||
@@ -201,7 +204,7 @@ trace.f( self.ClassName )
|
||||
end
|
||||
|
||||
function CARGO_ZONE:GreenSmoke()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
self.SignalType = CARGO_ZONE.SIGNAL.TYPE.SMOKE
|
||||
self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.GREEN
|
||||
@@ -211,7 +214,7 @@ end
|
||||
|
||||
|
||||
function CARGO_ZONE:WhiteFlare()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
self.SignalType = CARGO_ZONE.SIGNAL.TYPE.FLARE
|
||||
self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.WHITE
|
||||
@@ -220,7 +223,7 @@ trace.f( self.ClassName )
|
||||
end
|
||||
|
||||
function CARGO_ZONE:RedFlare()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
self.SignalType = CARGO_ZONE.SIGNAL.TYPE.FLARE
|
||||
self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.RED
|
||||
@@ -229,7 +232,7 @@ trace.f( self.ClassName )
|
||||
end
|
||||
|
||||
function CARGO_ZONE:GreenFlare()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
self.SignalType = CARGO_ZONE.SIGNAL.TYPE.FLARE
|
||||
self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.GREEN
|
||||
@@ -238,7 +241,7 @@ trace.f( self.ClassName )
|
||||
end
|
||||
|
||||
function CARGO_ZONE:YellowFlare()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
self.SignalType = CARGO_ZONE.SIGNAL.TYPE.FLARE
|
||||
self.SignalColor = CARGO_ZONE.SIGNAL.COLOR.YELLOW
|
||||
@@ -248,7 +251,7 @@ end
|
||||
|
||||
|
||||
function CARGO_ZONE:GetCargoHostUnit()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
local CargoHostUnit = Group.getByName( self.CargoHostSpawn:SpawnGroupName() ):getUnit(1)
|
||||
if CargoHostUnit and CargoHostUnit:isExist() then
|
||||
@@ -259,7 +262,7 @@ trace.f( self.ClassName )
|
||||
end
|
||||
|
||||
function CARGO_ZONE:GetCargoZoneName()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
return self.CargoZoneName
|
||||
end
|
||||
@@ -276,10 +279,9 @@ CARGO = {
|
||||
}
|
||||
|
||||
--- Add Cargo to the mission... Cargo functionality needs to be reworked a bit, so this is still under construction. I need to make a CARGO Class...
|
||||
function CARGO:New( CargoType, CargoName, CargoWeight )
|
||||
trace.f( self.ClassName, { CargoType, CargoName, CargoWeight } )
|
||||
function CARGO:New( CargoType, CargoName, CargoWeight ) local self = BASE:Inherit( self, BASE:New() )
|
||||
self:T( { CargoType, CargoName, CargoWeight } )
|
||||
|
||||
local self = BASE:Inherit( self, BASE:New() )
|
||||
|
||||
self.CargoType = CargoType
|
||||
self.CargoName = CargoName
|
||||
@@ -291,14 +293,14 @@ trace.f( self.ClassName, { CargoType, CargoName, CargoWeight } )
|
||||
end
|
||||
|
||||
function CARGO:Spawn()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
return self
|
||||
|
||||
end
|
||||
|
||||
function CARGO:IsNear( Client, LandingZone )
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
local Near = true
|
||||
|
||||
@@ -307,7 +309,7 @@ trace.f( self.ClassName )
|
||||
end
|
||||
|
||||
function CARGO:IsLoadedInClient()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
if self:IsStatusLoaded() or self:IsStatusLoading() then
|
||||
return self.CargoClient
|
||||
@@ -319,7 +321,7 @@ end
|
||||
|
||||
|
||||
function CARGO:UnLoad( Client, TargetZoneName )
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
self:StatusUnLoaded()
|
||||
|
||||
@@ -327,7 +329,7 @@ trace.f( self.ClassName )
|
||||
end
|
||||
|
||||
function CARGO:OnBoard( Client, LandingZone )
|
||||
trace.f(self.ClassName )
|
||||
self:T()
|
||||
|
||||
local Valid = true
|
||||
|
||||
@@ -338,7 +340,7 @@ trace.f(self.ClassName )
|
||||
end
|
||||
|
||||
function CARGO:OnBoarded( Client, LandingZone )
|
||||
trace.f(self.ClassName )
|
||||
self:T()
|
||||
|
||||
local OnBoarded = true
|
||||
|
||||
@@ -346,7 +348,7 @@ trace.f(self.ClassName )
|
||||
end
|
||||
|
||||
function CARGO:Load( Client )
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
self:StatusLoaded( Client )
|
||||
|
||||
@@ -354,18 +356,18 @@ trace.f( self.ClassName )
|
||||
end
|
||||
|
||||
function CARGO:IsLandingRequired()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
return true
|
||||
end
|
||||
|
||||
function CARGO:IsSlingLoad()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
return false
|
||||
end
|
||||
|
||||
|
||||
function CARGO:StatusNone()
|
||||
trace.f(self.ClassName )
|
||||
self:T()
|
||||
|
||||
self.CargoClient = nil
|
||||
self.CargoStatus = CARGO.STATUS.NONE
|
||||
@@ -374,16 +376,17 @@ trace.f(self.ClassName )
|
||||
end
|
||||
|
||||
function CARGO:StatusLoading( Client )
|
||||
trace.f(self.ClassName )
|
||||
self:T()
|
||||
|
||||
self.CargoClient = Client
|
||||
self.CargoStatus = CARGO.STATUS.LOADING
|
||||
self:T( "Cargo loaded in Client: " .. CargoClient:GetClientGroupName() )
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
function CARGO:StatusLoaded( Client )
|
||||
trace.f(self.ClassName )
|
||||
self:T()
|
||||
|
||||
self.CargoClient = Client
|
||||
self.CargoStatus = CARGO.STATUS.LOADED
|
||||
@@ -392,7 +395,7 @@ trace.f(self.ClassName )
|
||||
end
|
||||
|
||||
function CARGO:StatusUnLoaded()
|
||||
trace.f(self.ClassName )
|
||||
self:T()
|
||||
|
||||
self.CargoClient = nil
|
||||
self.CargoStatus = CARGO.STATUS.UNLOADED
|
||||
@@ -402,25 +405,25 @@ end
|
||||
|
||||
|
||||
function CARGO:IsStatusNone()
|
||||
trace.f(self.ClassName )
|
||||
self:T()
|
||||
|
||||
return self.CargoStatus == CARGO.STATUS.NONE
|
||||
end
|
||||
|
||||
function CARGO:IsStatusLoading()
|
||||
trace.f(self.ClassName )
|
||||
self:T()
|
||||
|
||||
return self.CargoStatus == CARGO.STATUS.LOADING
|
||||
end
|
||||
|
||||
function CARGO:IsStatusLoaded()
|
||||
trace.f(self.ClassName )
|
||||
self:T()
|
||||
|
||||
return self.CargoStatus == CARGO.STATUS.LOADED
|
||||
end
|
||||
|
||||
function CARGO:IsStatusUnLoaded()
|
||||
trace.f(self.ClassName )
|
||||
self:T()
|
||||
|
||||
return self.CargoStatus == CARGO.STATUS.UNLOADED
|
||||
end
|
||||
@@ -431,12 +434,9 @@ CARGO_GROUP = {
|
||||
}
|
||||
|
||||
|
||||
function CARGO_GROUP:New( CargoType, CargoName, CargoWeight, CargoGroupTemplate, CargoZone )
|
||||
trace.f( self.ClassName, { CargoType, CargoName, CargoWeight, CargoGroupTemplate, CargoZone } )
|
||||
function CARGO_GROUP:New( CargoType, CargoName, CargoWeight, CargoGroupTemplate, CargoZone ) local self = BASE:Inherit( self, CARGO:New( CargoType, CargoName, CargoWeight ) )
|
||||
self:T( { CargoType, CargoName, CargoWeight, CargoGroupTemplate, CargoZone } )
|
||||
|
||||
-- Arrange meta tables
|
||||
local self = BASE:Inherit( self, CARGO:New( CargoType, CargoName, CargoWeight ) )
|
||||
|
||||
self.CargoSpawn = SPAWN:New( CargoGroupTemplate )
|
||||
self.CargoZone = CargoZone
|
||||
|
||||
@@ -447,7 +447,7 @@ trace.f( self.ClassName, { CargoType, CargoName, CargoWeight, CargoGroupTemplate
|
||||
end
|
||||
|
||||
function CARGO_GROUP:Spawn()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
local SpawnCargo = true
|
||||
|
||||
@@ -477,13 +477,13 @@ trace.f( self.ClassName )
|
||||
self:StatusNone()
|
||||
end
|
||||
|
||||
trace.i( self.ClassName, { self.CargoGroupName, CARGOS[self.CargoName].CargoGroupName } )
|
||||
self:T( { self.CargoGroupName, CARGOS[self.CargoName].CargoGroupName } )
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
function CARGO_GROUP:IsNear( Client, LandingZone )
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
local Near = false
|
||||
|
||||
@@ -498,8 +498,9 @@ trace.f( self.ClassName )
|
||||
|
||||
end
|
||||
|
||||
|
||||
function CARGO_GROUP:OnBoard( Client, LandingZone, OnBoardSide )
|
||||
trace.f(self.ClassName )
|
||||
self:T()
|
||||
|
||||
local Valid = true
|
||||
|
||||
@@ -517,12 +518,12 @@ trace.f(self.ClassName )
|
||||
|
||||
local Points = {}
|
||||
|
||||
trace.i( self.ClassName, 'CargoPos x = ' .. CargoPos.x .. " z = " .. CargoPos.z )
|
||||
trace.i( self.ClassName, 'CarrierPosMove x = ' .. CarrierPosMove.x .. " z = " .. CarrierPosMove.z )
|
||||
self:T( 'CargoPos x = ' .. CargoPos.x .. " z = " .. CargoPos.z )
|
||||
self:T( 'CarrierPosMove x = ' .. CarrierPosMove.x .. " z = " .. CarrierPosMove.z )
|
||||
|
||||
Points[#Points+1] = routines.ground.buildWP( CargoPos, "Cone", 10 )
|
||||
|
||||
trace.i( self.ClassName, 'Points[1] x = ' .. Points[1].x .. " y = " .. Points[1].y )
|
||||
self:T( 'Points[1] x = ' .. Points[1].x .. " y = " .. Points[1].y )
|
||||
|
||||
if OnBoardSide == nil then
|
||||
OnBoardSide = CLIENT.ONBOARDSIDE.NONE
|
||||
@@ -530,7 +531,7 @@ trace.f(self.ClassName )
|
||||
|
||||
if OnBoardSide == CLIENT.ONBOARDSIDE.LEFT then
|
||||
|
||||
trace.i( self.ClassName, "TransportCargoOnBoard: Onboarding LEFT" )
|
||||
self:T( "TransportCargoOnBoard: Onboarding LEFT" )
|
||||
CarrierPosMove.z = CarrierPosMove.z - 25
|
||||
CarrierPosOnBoard.z = CarrierPosOnBoard.z - 5
|
||||
Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 )
|
||||
@@ -538,7 +539,7 @@ trace.f(self.ClassName )
|
||||
|
||||
elseif OnBoardSide == CLIENT.ONBOARDSIDE.RIGHT then
|
||||
|
||||
trace.i( self.ClassName, "TransportCargoOnBoard: Onboarding RIGHT" )
|
||||
self:T( "TransportCargoOnBoard: Onboarding RIGHT" )
|
||||
CarrierPosMove.z = CarrierPosMove.z + 25
|
||||
CarrierPosOnBoard.z = CarrierPosOnBoard.z + 5
|
||||
Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 )
|
||||
@@ -546,7 +547,7 @@ trace.f(self.ClassName )
|
||||
|
||||
elseif OnBoardSide == CLIENT.ONBOARDSIDE.BACK then
|
||||
|
||||
trace.i( self.ClassName, "TransportCargoOnBoard: Onboarding BACK" )
|
||||
self:T( "TransportCargoOnBoard: Onboarding BACK" )
|
||||
CarrierPosMove.x = CarrierPosMove.x - 25
|
||||
CarrierPosOnBoard.x = CarrierPosOnBoard.x - 5
|
||||
Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 )
|
||||
@@ -554,7 +555,7 @@ trace.f(self.ClassName )
|
||||
|
||||
elseif OnBoardSide == CLIENT.ONBOARDSIDE.FRONT then
|
||||
|
||||
trace.i( self.ClassName, "TransportCargoOnBoard: Onboarding FRONT" )
|
||||
self:T( "TransportCargoOnBoard: Onboarding FRONT" )
|
||||
CarrierPosMove.x = CarrierPosMove.x + 25
|
||||
CarrierPosOnBoard.x = CarrierPosOnBoard.x + 5
|
||||
Points[#Points+1] = routines.ground.buildWP( CarrierPosMove, "Cone", 10 )
|
||||
@@ -562,11 +563,11 @@ trace.f(self.ClassName )
|
||||
|
||||
elseif OnBoardSide == CLIENT.ONBOARDSIDE.NONE then
|
||||
|
||||
trace.i( self.ClassName, "TransportCargoOnBoard: Onboarding CENTRAL" )
|
||||
self:T( "TransportCargoOnBoard: Onboarding CENTRAL" )
|
||||
Points[#Points+1] = routines.ground.buildWP( CarrierPos, "Cone", 10 )
|
||||
|
||||
end
|
||||
trace.i( self.ClassName, "TransportCargoOnBoard: Routing " .. self.CargoGroupName )
|
||||
self:T( "TransportCargoOnBoard: Routing " .. self.CargoGroupName )
|
||||
|
||||
routines.scheduleFunction( routines.goRoute, { self.CargoGroupName, Points}, timer.getTime() + 4 )
|
||||
|
||||
@@ -578,7 +579,7 @@ end
|
||||
|
||||
|
||||
function CARGO_GROUP:OnBoarded( Client, LandingZone )
|
||||
trace.f(self.ClassName )
|
||||
self:T()
|
||||
|
||||
local OnBoarded = false
|
||||
|
||||
@@ -592,11 +593,12 @@ trace.f(self.ClassName )
|
||||
return OnBoarded
|
||||
end
|
||||
|
||||
function CARGO_GROUP:UnLoad( Client, TargetZoneName )
|
||||
trace.f( self.ClassName )
|
||||
|
||||
trace.i( self.ClassName, 'self.CargoName = ' .. self.CargoName )
|
||||
trace.i( self.ClassName, 'self.CargoGroupName = ' .. self.CargoGroupName )
|
||||
function CARGO_GROUP:UnLoad( Client, TargetZoneName )
|
||||
self:T()
|
||||
|
||||
self:T( 'self.CargoName = ' .. self.CargoName )
|
||||
self:T( 'self.CargoGroupName = ' .. self.CargoGroupName )
|
||||
|
||||
self.CargoSpawn:FromCarrier( Client:GetClientGroupUnit(), TargetZoneName, self.CargoGroupName )
|
||||
|
||||
@@ -611,18 +613,11 @@ CARGO_PACKAGE = {
|
||||
}
|
||||
|
||||
|
||||
function CARGO_PACKAGE:New( CargoType, CargoName, CargoWeight, CargoClientInitGroupName )
|
||||
trace.f( self.ClassName, { CargoType, CargoName, CargoWeight, CargoClientInitGroupName } )
|
||||
function CARGO_PACKAGE:New( CargoType, CargoName, CargoWeight, CargoClient ) local self = BASE:Inherit( self, CARGO:New( CargoType, CargoName, CargoWeight ) )
|
||||
|
||||
-- Arrange meta tables
|
||||
local self = BASE:Inherit( self, CARGO:New( CargoType, CargoName, CargoWeight ) )
|
||||
|
||||
self.CargoClientInitGroupName = CargoClientInitGroupName
|
||||
|
||||
self.CargoClient = CLIENT:New( self.CargoClientInitGroupName )
|
||||
self:StatusLoaded( self.CargoClient )
|
||||
|
||||
self.CargoClientInitGroupSpawn = SPAWN:New( self.CargoClientInitGroupName )
|
||||
self:T( { CargoType, CargoName, CargoWeight, CargoClient.ClientName } )
|
||||
|
||||
self.CargoClient = CargoClient
|
||||
|
||||
CARGOS[self.CargoName] = self
|
||||
|
||||
@@ -630,21 +625,28 @@ trace.f( self.ClassName, { CargoType, CargoName, CargoWeight, CargoClientInitGro
|
||||
|
||||
end
|
||||
|
||||
|
||||
function CARGO_PACKAGE:Spawn()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
-- this needs to be checked thoroughly
|
||||
|
||||
local CargoClientInitGroup = self.CargoClient:ClientGroup()
|
||||
if not CargoClientInitGroup then
|
||||
if not self.CargoClientInitGroupSpawn then
|
||||
self.CargoClientInitGroupSpawn = SPAWN:New( self.CargoClient:GetClientGroupName() )
|
||||
end
|
||||
self.CargoClientInitGroupSpawn:Spawn( self.CargoClient:GetClientGroupName() )
|
||||
end
|
||||
|
||||
local SpawnCargo = true
|
||||
|
||||
trace.i( self.ClassName, self.CargoClientInitGroupName )
|
||||
|
||||
if self:IsStatusNone() then
|
||||
|
||||
elseif self:IsStatusLoading() or self:IsStatusLoaded() then
|
||||
|
||||
local Client = self:IsLoadedInClient()
|
||||
if Client and Client:ClientGroup() then
|
||||
local CargoClientLoaded = self:IsLoadedInClient()
|
||||
if CargoClientLoaded and CargoClientLoaded:ClientGroup() then
|
||||
SpawnCargo = false
|
||||
end
|
||||
|
||||
@@ -657,26 +659,21 @@ trace.f( self.ClassName )
|
||||
end
|
||||
|
||||
if SpawnCargo then
|
||||
self.CargoClient = CLIENT:New( self.CargoClientInitGroupName )
|
||||
self:StatusLoaded( self.CargoClient )
|
||||
end
|
||||
|
||||
local CargoClientInitGroup = Group.getByName( self.CargoClientInitGroupName )
|
||||
if CargoClientInitGroup then
|
||||
self.CargoClientInitGroupSpawn:Spawn( self.CargoClientInitGroupName )
|
||||
end
|
||||
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
|
||||
function CARGO_PACKAGE:IsNear( Client, LandingZone )
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
local Near = false
|
||||
|
||||
if self.CargoClient and self.CargoClient:ClientGroup() then
|
||||
trace.i( self.ClassName, self.CargoClient.ClientName )
|
||||
trace.i( self.ClassName, 'Client Exists.' )
|
||||
self:T( self.CargoClient.ClientName )
|
||||
self:T( 'Client Exists.' )
|
||||
|
||||
if routines.IsUnitInRadius( self.CargoClient:GetClientGroupUnit(), Client:ClientPosition(), 150 ) then
|
||||
Near = true
|
||||
@@ -687,8 +684,9 @@ trace.f( self.ClassName )
|
||||
|
||||
end
|
||||
|
||||
|
||||
function CARGO_PACKAGE:OnBoard( Client, LandingZone, OnBoardSide )
|
||||
trace.f(self.ClassName )
|
||||
self:T()
|
||||
|
||||
local Valid = true
|
||||
|
||||
@@ -707,12 +705,12 @@ trace.f(self.ClassName )
|
||||
|
||||
local Points = {}
|
||||
|
||||
trace.i( self.ClassName, 'CargoPos x = ' .. CargoPos.x .. " z = " .. CargoPos.z )
|
||||
trace.i( self.ClassName, 'CarrierPosMove x = ' .. CarrierPosMove.x .. " z = " .. CarrierPosMove.z )
|
||||
self:T( 'CargoPos x = ' .. CargoPos.x .. " z = " .. CargoPos.z )
|
||||
self:T( 'CarrierPosMove x = ' .. CarrierPosMove.x .. " z = " .. CarrierPosMove.z )
|
||||
|
||||
Points[#Points+1] = routines.ground.buildWP( CargoPos, "Cone", 10 )
|
||||
|
||||
trace.i( self.ClassName, 'Points[1] x = ' .. Points[1].x .. " y = " .. Points[1].y )
|
||||
self:T( 'Points[1] x = ' .. Points[1].x .. " y = " .. Points[1].y )
|
||||
|
||||
if OnBoardSide == nil then
|
||||
OnBoardSide = CLIENT.ONBOARDSIDE.NONE
|
||||
@@ -720,7 +718,7 @@ trace.f(self.ClassName )
|
||||
|
||||
if OnBoardSide == CLIENT.ONBOARDSIDE.LEFT then
|
||||
|
||||
trace.i( self.ClassName, "TransportCargoOnBoard: Onboarding LEFT" )
|
||||
self:T( "TransportCargoOnBoard: Onboarding LEFT" )
|
||||
CarrierPosMove.z = CarrierPosMove.z - 25
|
||||
CarrierPosOnBoard.z = CarrierPosOnBoard.z - 5
|
||||
CarrierPosMoveAway.z = CarrierPosMoveAway.z - 20
|
||||
@@ -730,7 +728,7 @@ trace.f(self.ClassName )
|
||||
|
||||
elseif OnBoardSide == CLIENT.ONBOARDSIDE.RIGHT then
|
||||
|
||||
trace.i( self.ClassName, "TransportCargoOnBoard: Onboarding RIGHT" )
|
||||
self:T( "TransportCargoOnBoard: Onboarding RIGHT" )
|
||||
CarrierPosMove.z = CarrierPosMove.z + 25
|
||||
CarrierPosOnBoard.z = CarrierPosOnBoard.z + 5
|
||||
CarrierPosMoveAway.z = CarrierPosMoveAway.z + 20
|
||||
@@ -740,7 +738,7 @@ trace.f(self.ClassName )
|
||||
|
||||
elseif OnBoardSide == CLIENT.ONBOARDSIDE.BACK then
|
||||
|
||||
trace.i( self.ClassName, "TransportCargoOnBoard: Onboarding BACK" )
|
||||
self:T( "TransportCargoOnBoard: Onboarding BACK" )
|
||||
CarrierPosMove.x = CarrierPosMove.x - 25
|
||||
CarrierPosOnBoard.x = CarrierPosOnBoard.x - 5
|
||||
CarrierPosMoveAway.x = CarrierPosMoveAway.x - 20
|
||||
@@ -750,7 +748,7 @@ trace.f(self.ClassName )
|
||||
|
||||
elseif OnBoardSide == CLIENT.ONBOARDSIDE.FRONT then
|
||||
|
||||
trace.i( self.ClassName, "TransportCargoOnBoard: Onboarding FRONT" )
|
||||
self:T( "TransportCargoOnBoard: Onboarding FRONT" )
|
||||
CarrierPosMove.x = CarrierPosMove.x + 25
|
||||
CarrierPosOnBoard.x = CarrierPosOnBoard.x + 5
|
||||
CarrierPosMoveAway.x = CarrierPosMoveAway.x + 20
|
||||
@@ -760,7 +758,7 @@ trace.f(self.ClassName )
|
||||
|
||||
elseif OnBoardSide == CLIENT.ONBOARDSIDE.NONE then
|
||||
|
||||
trace.i( self.ClassName, "TransportCargoOnBoard: Onboarding FRONT" )
|
||||
self:T( "TransportCargoOnBoard: Onboarding FRONT" )
|
||||
CarrierPosMove.x = CarrierPosMove.x + 25
|
||||
CarrierPosOnBoard.x = CarrierPosOnBoard.x + 5
|
||||
CarrierPosMoveAway.x = CarrierPosMoveAway.x + 20
|
||||
@@ -769,7 +767,7 @@ trace.f(self.ClassName )
|
||||
Points[#Points+1] = routines.ground.buildWP( CarrierPosMoveAway, "Cone", 10 )
|
||||
|
||||
end
|
||||
trace.i( self.ClassName, "Routing " .. CargoHostName )
|
||||
self:T( "Routing " .. CargoHostName )
|
||||
|
||||
routines.scheduleFunction( routines.goRoute, { CargoHostName, Points}, timer.getTime() + 4 )
|
||||
|
||||
@@ -779,7 +777,7 @@ end
|
||||
|
||||
|
||||
function CARGO_PACKAGE:OnBoarded( Client, LandingZone )
|
||||
trace.f(self.ClassName )
|
||||
self:T()
|
||||
|
||||
local OnBoarded = false
|
||||
|
||||
@@ -797,11 +795,12 @@ trace.f(self.ClassName )
|
||||
return OnBoarded
|
||||
end
|
||||
|
||||
function CARGO_PACKAGE:UnLoad( Client, TargetZoneName )
|
||||
trace.f( self.ClassName )
|
||||
|
||||
trace.i( self.ClassName, 'self.CargoName = ' .. self.CargoName )
|
||||
--trace.i( self.ClassName, 'self.CargoHostName = ' .. self.CargoHostName )
|
||||
function CARGO_PACKAGE:UnLoad( Client, TargetZoneName )
|
||||
self:T()
|
||||
|
||||
self:T( 'self.CargoName = ' .. self.CargoName )
|
||||
--self:T( 'self.CargoHostName = ' .. self.CargoHostName )
|
||||
|
||||
--self.CargoSpawn:FromCarrier( Client:ClientGroup(), TargetZoneName, self.CargoHostName )
|
||||
self:StatusUnLoaded()
|
||||
@@ -816,11 +815,10 @@ CARGO_SLINGLOAD = {
|
||||
|
||||
|
||||
function CARGO_SLINGLOAD:New( CargoType, CargoName, CargoWeight, CargoZone, CargoHostName, CargoCountryID )
|
||||
trace.f( self.ClassName, { CargoType, CargoName, CargoWeight, CargoZone, CargoHostName, CargoCountryID } )
|
||||
|
||||
-- Arrange meta tables
|
||||
local self = BASE:Inherit( self, CARGO:New( CargoType, CargoName, CargoWeight ) )
|
||||
|
||||
self:T( { CargoType, CargoName, CargoWeight, CargoZone, CargoHostName, CargoCountryID } )
|
||||
|
||||
self.CargoHostName = CargoHostName
|
||||
|
||||
-- Cargo will be initialized around the CargoZone position.
|
||||
@@ -838,19 +836,21 @@ trace.f( self.ClassName, { CargoType, CargoName, CargoWeight, CargoZone, CargoHo
|
||||
|
||||
end
|
||||
|
||||
|
||||
function CARGO_SLINGLOAD:IsLandingRequired()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
return false
|
||||
end
|
||||
|
||||
|
||||
function CARGO_SLINGLOAD:IsSlingLoad()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
return true
|
||||
end
|
||||
|
||||
|
||||
function CARGO_SLINGLOAD:Spawn()
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
local Zone = trigger.misc.getZone( self.CargoZone )
|
||||
|
||||
@@ -858,7 +858,7 @@ trace.f( self.ClassName )
|
||||
ZonePos.x = Zone.point.x + math.random( Zone.radius / 2 * -1, Zone.radius / 2 )
|
||||
ZonePos.y = Zone.point.z + math.random( Zone.radius / 2 * -1, Zone.radius / 2 )
|
||||
|
||||
trace.i( self.ClassName, "Cargo Location = " .. ZonePos.x .. ", " .. ZonePos.y )
|
||||
self:T( "Cargo Location = " .. ZonePos.x .. ", " .. ZonePos.y )
|
||||
|
||||
--[[
|
||||
-- This does not work in 1.5.2.
|
||||
@@ -898,8 +898,9 @@ trace.f( self.ClassName )
|
||||
return self
|
||||
end
|
||||
|
||||
|
||||
function CARGO_SLINGLOAD:IsNear( Client, LandingZone )
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
local Near = false
|
||||
|
||||
@@ -908,7 +909,7 @@ end
|
||||
|
||||
|
||||
function CARGO_SLINGLOAD:IsInLandingZone( Client, LandingZone )
|
||||
trace.f( self.ClassName )
|
||||
self:T()
|
||||
|
||||
local Near = false
|
||||
|
||||
@@ -923,9 +924,8 @@ trace.f( self.ClassName )
|
||||
end
|
||||
|
||||
|
||||
|
||||
function CARGO_SLINGLOAD:OnBoard( Client, LandingZone, OnBoardSide )
|
||||
trace.f(self.ClassName )
|
||||
self:T()
|
||||
|
||||
local Valid = true
|
||||
|
||||
@@ -935,34 +935,28 @@ end
|
||||
|
||||
|
||||
function CARGO_SLINGLOAD:OnBoarded( Client, LandingZone )
|
||||
trace.f(self.ClassName )
|
||||
self:T()
|
||||
|
||||
local OnBoarded = false
|
||||
|
||||
local CargoStaticUnit = StaticObject.getByName( self.CargoName )
|
||||
if CargoStaticUnit then
|
||||
if not routines.IsStaticInZones( CargoStaticUnit, LandingZone ) then
|
||||
Onboarded = true
|
||||
OnBoarded = true
|
||||
end
|
||||
end
|
||||
|
||||
return OnBoarded
|
||||
end
|
||||
|
||||
function CARGO_SLINGLOAD:UnLoad( Client, TargetZoneName )
|
||||
trace.f( self.ClassName )
|
||||
|
||||
trace.i( self.ClassName, 'self.CargoName = ' .. self.CargoName )
|
||||
trace.i( self.ClassName, 'self.CargoGroupName = ' .. self.CargoGroupName )
|
||||
function CARGO_SLINGLOAD:UnLoad( Client, TargetZoneName )
|
||||
self:T()
|
||||
|
||||
self:T( 'self.CargoName = ' .. self.CargoName )
|
||||
self:T( 'self.CargoGroupName = ' .. self.CargoGroupName )
|
||||
|
||||
self:StatusUnLoaded()
|
||||
|
||||
return Cargo
|
||||
end
|
||||
|
||||
--[[--
|
||||
Internal Table to understand the form of the CARGO.
|
||||
@table CARGO_TRANSPORT
|
||||
--]]
|
||||
CARGO_TRANSPORT = { UNIT = 1, SLING = 2, STATIC = 3, INVISIBLE = 4 }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user