mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
Reworked the menu system for cargo transportation. The Route to Pickup cargo sub menu now shows boarding, loading or sling loading sub menus, and allows to handle much more cargo.
This commit is contained in:
parent
46cfcddf68
commit
daaedd24d2
@ -159,6 +159,12 @@ do -- CARGO_CRATE
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Check if the cargo can be sling loaded.
|
||||||
|
-- @param #CARGO_CRATE self
|
||||||
|
function CARGO_CRATE:CanSlingload()
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
--- Check if Cargo Crate is in the radius for the Cargo to be reported.
|
--- Check if Cargo Crate is in the radius for the Cargo to be reported.
|
||||||
-- @param #CARGO_CRATE self
|
-- @param #CARGO_CRATE self
|
||||||
-- @param Core.Point#COORDINATE Coordinate
|
-- @param Core.Point#COORDINATE Coordinate
|
||||||
|
|||||||
@ -355,7 +355,7 @@ do -- cargo
|
|||||||
return CargoFound
|
return CargoFound
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Checks if the Template name has a ~CARGO tag.
|
--- Checks if the Template name has a #CARGO tag.
|
||||||
-- If yes, the group is a cargo.
|
-- If yes, the group is a cargo.
|
||||||
-- @param #DATABASE self
|
-- @param #DATABASE self
|
||||||
-- @param #string TemplateName
|
-- @param #string TemplateName
|
||||||
@ -364,7 +364,7 @@ do -- cargo
|
|||||||
|
|
||||||
TemplateName = env.getValueDictByKey( TemplateName )
|
TemplateName = env.getValueDictByKey( TemplateName )
|
||||||
|
|
||||||
local Cargo = TemplateName:match( "~(CARGO)" )
|
local Cargo = TemplateName:match( "#(CARGO)" )
|
||||||
|
|
||||||
return Cargo and Cargo == "CARGO"
|
return Cargo and Cargo == "CARGO"
|
||||||
end
|
end
|
||||||
@ -379,10 +379,10 @@ do -- cargo
|
|||||||
for CargoGroupName, CargoGroup in pairs( Groups ) do
|
for CargoGroupName, CargoGroup in pairs( Groups ) do
|
||||||
self:I( { Cargo = CargoGroupName } )
|
self:I( { Cargo = CargoGroupName } )
|
||||||
if self:IsCargo( CargoGroupName ) then
|
if self:IsCargo( CargoGroupName ) then
|
||||||
local CargoInfo = CargoGroupName:match("~CARGO(.*)")
|
local CargoInfo = CargoGroupName:match("#CARGO(.*)")
|
||||||
local CargoParam = CargoInfo and CargoInfo:match( "%((.*)%)")
|
local CargoParam = CargoInfo and CargoInfo:match( "%((.*)%)")
|
||||||
local CargoName1 = CargoGroupName:match("(.*)~CARGO%(.*%)")
|
local CargoName1 = CargoGroupName:match("(.*)#CARGO%(.*%)")
|
||||||
local CargoName2 = CargoGroupName:match(".*~CARGO%(.*%)(.*)")
|
local CargoName2 = CargoGroupName:match(".*#CARGO%(.*%)(.*)")
|
||||||
local CargoName = CargoName1 .. ( CargoName2 or "" )
|
local CargoName = CargoName1 .. ( CargoName2 or "" )
|
||||||
local Type = CargoParam and CargoParam:match( "T=([%a%d ]+),?")
|
local Type = CargoParam and CargoParam:match( "T=([%a%d ]+),?")
|
||||||
local Name = CargoParam and CargoParam:match( "N=([%a%d]+),?") or CargoName
|
local Name = CargoParam and CargoParam:match( "N=([%a%d]+),?") or CargoName
|
||||||
@ -396,9 +396,9 @@ do -- cargo
|
|||||||
|
|
||||||
for CargoStaticName, CargoStatic in pairs( self.STATICS ) do
|
for CargoStaticName, CargoStatic in pairs( self.STATICS ) do
|
||||||
if self:IsCargo( CargoStaticName ) then
|
if self:IsCargo( CargoStaticName ) then
|
||||||
local CargoInfo = CargoStaticName:match("~CARGO(.*)")
|
local CargoInfo = CargoStaticName:match("#CARGO(.*)")
|
||||||
local CargoParam = CargoInfo and CargoInfo:match( "%((.*)%)")
|
local CargoParam = CargoInfo and CargoInfo:match( "%((.*)%)")
|
||||||
local CargoName = CargoStaticName:match("(.*)~CARGO")
|
local CargoName = CargoStaticName:match("(.*)#CARGO")
|
||||||
local Type = CargoParam and CargoParam:match( "T=([%a%d ]+),?")
|
local Type = CargoParam and CargoParam:match( "T=([%a%d ]+),?")
|
||||||
local Category = CargoParam and CargoParam:match( "C=([%a%d ]+),?")
|
local Category = CargoParam and CargoParam:match( "C=([%a%d ]+),?")
|
||||||
local Name = CargoParam and CargoParam:match( "N=([%a%d]+),?") or CargoName
|
local Name = CargoParam and CargoParam:match( "N=([%a%d]+),?") or CargoName
|
||||||
|
|||||||
@ -667,9 +667,12 @@ do -- TASK_CARGO
|
|||||||
Cargo:Report( "Load at " .. Cargo:GetCoordinate():ToString( TaskUnit:GetGroup() ) .. " within " .. Cargo.NearRadius .. ".", "reporting", TaskUnit:GetGroup() )
|
Cargo:Report( "Load at " .. Cargo:GetCoordinate():ToString( TaskUnit:GetGroup() ) .. " within " .. Cargo.NearRadius .. ".", "reporting", TaskUnit:GetGroup() )
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
--local Cargo = Cargo -- Cargo.CargoSlingload#CARGO_SLINGLOAD
|
||||||
if Cargo:CanSlingload() == true then
|
if Cargo:CanSlingload() == true then
|
||||||
if Cargo:IsInLoadRadius( TaskUnit:GetPointVec2() ) then
|
if Cargo:IsInLoadRadius( TaskUnit:GetPointVec2() ) then
|
||||||
Cargo:Report( "Ready for slingloading.", "slingload", TaskUnit:GetGroup() )
|
Cargo:Report( "Ready for sling loading.", "slingload", TaskUnit:GetGroup() )
|
||||||
|
local SlingloadMenu = MENU_GROUP:New( TaskGroup, "Slingload cargo", MenuControl ):SetTime( MenuTime ):SetTag( "Cargo" )
|
||||||
|
MENU_GROUP_COMMAND:New( TaskUnit:GetGroup(), Cargo.Name, SlingloadMenu, self.MenuLoadCargo, self, Cargo ):SetTime(MenuTime):SetTag("Cargo"):SetRemoveParent()
|
||||||
else
|
else
|
||||||
Cargo:Report( "Slingload at " .. Cargo:GetCoordinate():ToString( TaskUnit:GetGroup() ) .. ".", "reporting", TaskUnit:GetGroup() )
|
Cargo:Report( "Slingload at " .. Cargo:GetCoordinate():ToString( TaskUnit:GetGroup() ) .. ".", "reporting", TaskUnit:GetGroup() )
|
||||||
end
|
end
|
||||||
@ -683,8 +686,29 @@ do -- TASK_CARGO
|
|||||||
else
|
else
|
||||||
if not Cargo:IsDeployed() == true then
|
if not Cargo:IsDeployed() == true then
|
||||||
local RouteToPickupMenu = MENU_GROUP:New( TaskGroup, "Route to pickup cargo", MenuControl ):SetTime( MenuTime ):SetTag( "Cargo" )
|
local RouteToPickupMenu = MENU_GROUP:New( TaskGroup, "Route to pickup cargo", MenuControl ):SetTime( MenuTime ):SetTag( "Cargo" )
|
||||||
MENU_GROUP_COMMAND:New( TaskUnit:GetGroup(), Cargo.Name, RouteToPickupMenu, self.MenuRouteToPickup, self, Cargo ):SetTime(MenuTime):SetTag("Cargo"):SetRemoveParent()
|
--MENU_GROUP_COMMAND:New( TaskUnit:GetGroup(), Cargo.Name, RouteToPickupMenu, self.MenuRouteToPickup, self, Cargo ):SetTime(MenuTime):SetTag("Cargo"):SetRemoveParent()
|
||||||
Cargo:ReportResetAll( TaskUnit:GetGroup() )
|
Cargo:ReportResetAll( TaskUnit:GetGroup() )
|
||||||
|
if Cargo:CanBoard() == true then
|
||||||
|
if not Cargo:IsInLoadRadius( TaskUnit:GetPointVec2() ) then
|
||||||
|
local BoardMenu = MENU_GROUP:New( TaskGroup, "Board cargo", RouteToPickupMenu ):SetTime( MenuTime ):SetTag( "Cargo" )
|
||||||
|
MENU_GROUP_COMMAND:New( TaskUnit:GetGroup(), Cargo.Name, BoardMenu, self.MenuRouteToPickup, self, Cargo ):SetTime(MenuTime):SetTag("Cargo"):SetRemoveParent()
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if Cargo:CanLoad() == true then
|
||||||
|
if not Cargo:IsInLoadRadius( TaskUnit:GetPointVec2() ) then
|
||||||
|
local LoadMenu = MENU_GROUP:New( TaskGroup, "Load cargo", RouteToPickupMenu ):SetTime( MenuTime ):SetTag( "Cargo" )
|
||||||
|
MENU_GROUP_COMMAND:New( TaskUnit:GetGroup(), Cargo.Name, LoadMenu, self.MenuRouteToPickup, self, Cargo ):SetTime(MenuTime):SetTag("Cargo"):SetRemoveParent()
|
||||||
|
end
|
||||||
|
else
|
||||||
|
--local Cargo = Cargo -- Cargo.CargoSlingload#CARGO_SLINGLOAD
|
||||||
|
if Cargo:CanSlingload() == true then
|
||||||
|
if not Cargo:IsInLoadRadius( TaskUnit:GetPointVec2() ) then
|
||||||
|
local SlingloadMenu = MENU_GROUP:New( TaskGroup, "Slingload cargo", RouteToPickupMenu ):SetTime( MenuTime ):SetTag( "Cargo" )
|
||||||
|
MENU_GROUP_COMMAND:New( TaskUnit:GetGroup(), Cargo.Name, SlingloadMenu, self.MenuRouteToPickup, self, Cargo ):SetTime(MenuTime):SetTag("Cargo"):SetRemoveParent()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user