Optimized Cargo logic

This commit is contained in:
svenvandevelde 2016-02-21 23:29:44 +01:00
parent aadd529093
commit c22492f051
4 changed files with 23 additions and 8 deletions

View File

@ -307,6 +307,7 @@ trace.f( self.ClassName )
end
function CARGO:IsLoadedInClient()
trace.f( self.ClassName )
if self:IsStatusLoaded() or self:IsStatusLoading() then
return self.CargoClient
@ -656,7 +657,8 @@ trace.f( self.ClassName )
end
if SpawnCargo then
self:StatusNone()
self.CargoClient = CLIENT:New( self.CargoClientInitGroupName )
self:StatusLoaded( self.CargoClient )
end
local CargoClientInitGroup = Group.getByName( self.CargoClientInitGroupName )
@ -782,7 +784,7 @@ trace.f(self.ClassName )
local OnBoarded = false
if self.CargoClient and self.CargoClient:ClientGroup() then
if routines.IsUnitInRadius( self.CargoClient:GetClientGroupUnit(), CargoClient:ClientPosition(), 25 ) then
if routines.IsUnitInRadius( self.CargoClient:GetClientGroupUnit(), self.CargoClient:ClientPosition(), 10 ) then
-- Switch Cargo from self.CargoClient to Client ... Each cargo can have only one client. So assigning the new client for the cargo is enough.
self:StatusLoaded( Client )

View File

@ -86,10 +86,12 @@ trace.f(self.ClassName)
local ClientGroup = Group.getByName( self.ClientName )
if ClientGroup then
trace.i( self.ClassName, "ClientGroup = " .. self.ClientName )
if ClientGroup:isExist() and ClientGroup:getID() == UnitData:getGroup():getID() then
trace.i( self.ClassName, "Normal logic" )
trace.i( self.ClassName, self.ClientName .. " : group found!" )
return ClientGroup
if ClientGroup:isExist() then
if ClientGroup:getID() == UnitData:getGroup():getID() then
trace.i( self.ClassName, "Normal logic" )
trace.i( self.ClassName, self.ClientName .. " : group found!" )
return ClientGroup
end
else
-- Now we need to resolve the bugs in DCS 1.5 ...
-- Consult the database for the units of the Client Group. (ClientGroup:getUnits() returns nil)
@ -114,6 +116,17 @@ trace.f(self.ClassName)
end
end
-- For non player clients
local ClientGroup = Group.getByName( self.ClientName )
if ClientGroup then
trace.i( self.ClassName, "ClientGroup = " .. self.ClientName )
if ClientGroup:isExist() then
trace.i( self.ClassName, "Normal logic" )
trace.i( self.ClassName, self.ClientName .. " : group found!" )
return ClientGroup
end
end
self.ClientGroupID = nil
self.ClientGroupUnit = nil

View File

@ -98,7 +98,7 @@ trace.f( self.ClassName )
trace.i( self.ClassName, { Cargo.ClassName, Cargo.CargoName, Cargo.CargoType, Cargo.CargoWeight } )
if Cargo:IsStatusLoaded() then
if Cargo:IsStatusLoaded() and Client == Cargo:IsLoadedInClient() then
if Client._Menus[Cargo.CargoType] == nil then
Client._Menus[Cargo.CargoType] = {}

View File

@ -78,7 +78,7 @@ trace.f( self.ClassName )
trace.i( self.ClassName, { Cargo.ClassName, Cargo.CargoName, Cargo.CargoType, Cargo:IsStatusNone(), Cargo:IsStatusLoaded(), Cargo:IsStatusLoading(), Cargo:IsStatusUnLoaded() } )
if Cargo:IsStatusNone() then
if Cargo:IsStatusNone() or ( Cargo:IsStatusLoaded() and Client ~= Cargo:IsLoadedInClient() ) then
local MenuAdd = false
if Cargo:IsNear( Client, self.CurrentCargoZone ) then