Warehouse v0.4.7

Added EWR as attribute.
Fixed bug in shipping lanes.
Added airbase check in arrived event.
Removed starting point from shipping lane since it is in the port zone anyway.
This commit is contained in:
funkyfranky 2018-09-16 01:36:41 +02:00
parent e16d6c0ca4
commit 8f08fd87be

View File

@ -425,7 +425,7 @@
-- --
-- This section shows some examples how the WAREHOUSE class is used in practice. This is one of the best ways to explain things, in my opinion. -- This section shows some examples how the WAREHOUSE class is used in practice. This is one of the best ways to explain things, in my opinion.
-- --
-- But first, let me introduce a convenient way to define several warehouses in a table. This is absolutely *not* necessary but quite handy if you have -- But first, let me introduce a convenient way to define several warehouses in a table. This is absolutely *not necessary* but quite handy if you have
-- multiple WAREHOUSE objects in your mission. -- multiple WAREHOUSE objects in your mission.
-- --
-- ## Example 0: Setting up a Warehouse Array -- ## Example 0: Setting up a Warehouse Array
@ -899,11 +899,12 @@ WAREHOUSE.Descriptor = {
-- @field #string AIR_UAV Unpiloted Aerial Vehicle, e.g. drones. -- @field #string AIR_UAV Unpiloted Aerial Vehicle, e.g. drones.
-- @field #string AIR_OTHER Any airborne unit that does not fall into any other airborne category. -- @field #string AIR_OTHER Any airborne unit that does not fall into any other airborne category.
-- @field #string GROUND_APC Infantry carriers, in particular Amoured Personell Carrier. This can be used to transport other assets. -- @field #string GROUND_APC Infantry carriers, in particular Amoured Personell Carrier. This can be used to transport other assets.
-- @field #string GROUND_TRUCK Unarmed ground vehicles. -- @field #string GROUND_TRUCK Unarmed ground vehicles, which has the DCS "Truck" attribute.
-- @field #string GROUND_INFANTRY Ground infantry assets. -- @field #string GROUND_INFANTRY Ground infantry assets.
-- @field #string GROUND_ARTILLERY Artillery assets. -- @field #string GROUND_ARTILLERY Artillery assets.
-- @field #string GROUND_TANK Tanks (modern or old). -- @field #string GROUND_TANK Tanks (modern or old).
-- @field #string GROUND_TRAIN Trains. Not that trains are **not** yet properly implemented in DCS and cannot be used currently. -- @field #string GROUND_TRAIN Trains. Not that trains are **not** yet properly implemented in DCS and cannot be used currently.
-- @field #string GROUND_EWR Early Warning Radar.
-- @field #string GROUND_AAA Anti-Aircraft Artillery. -- @field #string GROUND_AAA Anti-Aircraft Artillery.
-- @field #string GROUND_SAM Surface-to-Air Missile system or components. -- @field #string GROUND_SAM Surface-to-Air Missile system or components.
-- @field #string GROUND_OTHER Any ground unit that does not fall into any other ground category. -- @field #string GROUND_OTHER Any ground unit that does not fall into any other ground category.
@ -929,6 +930,7 @@ WAREHOUSE.Attribute = {
GROUND_ARTILLERY="Ground_Artillery", GROUND_ARTILLERY="Ground_Artillery",
GROUND_TANK="Ground_Tank", GROUND_TANK="Ground_Tank",
GROUND_TRAIN="Ground_Train", GROUND_TRAIN="Ground_Train",
GROUND_EWR="Ground_EWR",
GROUND_AAA="Ground_AAA", GROUND_AAA="Ground_AAA",
GROUND_SAM="Ground_SAM", GROUND_SAM="Ground_SAM",
GROUND_OTHER="Ground_OtherGround", GROUND_OTHER="Ground_OtherGround",
@ -985,7 +987,7 @@ WAREHOUSE.db = {
--- Warehouse class version. --- Warehouse class version.
-- @field #string version -- @field #string version
WAREHOUSE.version="0.4.6" WAREHOUSE.version="0.4.7"
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- TODO: Warehouse todo list. -- TODO: Warehouse todo list.
@ -1710,7 +1712,7 @@ function WAREHOUSE:_NewLane(group, startcoord, finalcoord)
end end
-- Add beginning and end. -- Add beginning and end.
table.insert(lane, 1, startcoord) --table.insert(lane, 1, startcoord)
table.insert(lane, #lane, finalcoord) table.insert(lane, #lane, finalcoord)
return lane return lane
@ -4000,12 +4002,9 @@ function WAREHOUSE:_RouteNaval(group, request)
-- Set speed to 80% of max possible. -- Set speed to 80% of max possible.
local _speed=group:GetSpeedMax()*0.8 local _speed=group:GetSpeedMax()*0.8
-- Get shipping lane to remote warehouse. -- Get shipping lane to remote warehouse. If more have been defined, pick one randomly.
--local lane=self.shippinglanes[request.warehouse.warehouse:GetName()]
-- Get off road path to remote warehouse. If more have been defined, pick one randomly.
local remotename=request.warehouse.warehouse:GetName() local remotename=request.warehouse.warehouse:GetName()
local lane=self.shippinglanes[remotename][math.random(#self.ship[remotename])] local lane=self.shippinglanes[remotename][math.random(#self.shippinglanes[remotename])]
if lane then if lane then
@ -4189,29 +4188,6 @@ function WAREHOUSE:_OnEventLanding(EventData)
-- Debug info. -- Debug info.
self:T(self.wid..string.format("Warehouse %s captured event landing of its asset unit %s.", self.alias, EventData.IniUnitName)) self:T(self.wid..string.format("Warehouse %s captured event landing of its asset unit %s.", self.alias, EventData.IniUnitName))
--[[
-- Check if all cargo was delivered.
if self.delivered[rid]==true then
-- Check if helicopter landed in spawn zone. If so, we call it a day and add it back to stock.
if group:GetCategory()==Group.Category.HELICOPTER then
if self.spawnzone:IsCoordinateInZone(EventData.IniUnit:GetCoordinate()) then
-- Debug message.
self:_DebugMessage("Helicopter landed in spawn zone. No pending request. Putting back into stock.")
if self.Debug then
group:SmokeWhite()
end
-- Group arrived.
self:Arrived(group)
end
end
end
]]
end end
end end
end end
@ -4262,9 +4238,12 @@ function WAREHOUSE:_OnEventArrived(EventData)
local request=self:_GetRequestOfGroup(group, self.pending) local request=self:_GetRequestOfGroup(group, self.pending)
local istransport=self:_GroupIsTransport(group,request) local istransport=self:_GroupIsTransport(group,request)
-- Check if engine shutdown happend at right airbase because the event is also triggered in other situations.
local rightairbase=group:GetCoordinate():GetClosestAirbase():GetName()==request.warehouse:GetAirbase():GetName()
-- Check that group is cargo and not transport. -- Check that group is cargo and not transport.
if istransport==false then if istransport==false and rightairbase then
-- Debug info. -- Debug info.
local text=string.format("Air asset group %s from warehouse %s arrived at its destination.", group:GetName(), self.alias) local text=string.format("Air asset group %s from warehouse %s arrived at its destination.", group:GetName(), self.alias)
@ -4456,14 +4435,6 @@ function WAREHOUSE:_UnitDead(deadunit, request)
end end
end end
end
--- Remove group.
-- @param #WAREHOUSE self
-- @param Wrapper.Group#GROUP group The group to be removed.
function WAREHOUSE:_RemoveGroup(group)
end end
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@ -5828,10 +5799,10 @@ function WAREHOUSE:_GetAttribute(group)
-- Planes -- Planes
local transportplane=group:HasAttribute("Transports") and group:HasAttribute("Planes") local transportplane=group:HasAttribute("Transports") and group:HasAttribute("Planes")
local awacs=group:HasAttribute("AWACS") local awacs=group:HasAttribute("AWACS")
local fighter=group:HasAttribute("Fighters") or group:HasAttribute("Interceptors") or group:HasAttribute("Multirole fighters") local fighter=group:HasAttribute("Fighters") or group:HasAttribute("Interceptors") or group:HasAttribute("Multirole fighters") or (group:HasAttribute("Bombers") and not group:HasAttribute("Strategic bombers"))
local bomber=group:HasAttribute("Bombers") local bomber=group:HasAttribute("Strategic bombers")
local tanker=group:HasAttribute("Tankers") local tanker=group:HasAttribute("Tankers")
local uav=group:HasAttribute("UAV") local uav=group:HasAttribute("UAVs")
-- Helicopters -- Helicopters
local transporthelo=group:HasAttribute("Transport helicopters") local transporthelo=group:HasAttribute("Transport helicopters")
local attackhelicopter=group:HasAttribute("Attack helicopters") local attackhelicopter=group:HasAttribute("Attack helicopters")
@ -5841,12 +5812,13 @@ function WAREHOUSE:_GetAttribute(group)
-------------- --------------
-- Ground -- Ground
local apc=group:HasAttribute("Infantry carriers") local apc=group:HasAttribute("Infantry carriers")
local truck=group:HasAttribute("Trucks") and not group:GetCategory()==Group.Category.TRAIN local truck=group:HasAttribute("Trucks") and group:GetCategory()==Group.Category.GROUND
local infantry=group:HasAttribute("Infantry") local infantry=group:HasAttribute("Infantry")
local artillery=group:HasAttribute("Artillery") local artillery=group:HasAttribute("Artillery")
local tank=group:HasAttribute("Old Tanks") or group:HasAttribute("Modern Tanks") local tank=group:HasAttribute("Old Tanks") or group:HasAttribute("Modern Tanks")
local aaa=group:HasAttribute("AAA") local aaa=group:HasAttribute("AAA")
local sam=group:HasAttribute("SAM") local ewr=group:HasAttribute("EWR")
local sam=group:HasAttribute("SAM elements") and (not group:HasAttribute("AAA"))
-- Train -- Train
local train=group:GetCategory()==Group.Category.TRAIN local train=group:GetCategory()==Group.Category.TRAIN
@ -5879,8 +5851,6 @@ function WAREHOUSE:_GetAttribute(group)
attribute=WAREHOUSE.Attribute.AIR_UAV attribute=WAREHOUSE.Attribute.AIR_UAV
elseif apc then elseif apc then
attribute=WAREHOUSE.Attribute.GROUND_APC attribute=WAREHOUSE.Attribute.GROUND_APC
elseif truck then
attribute=WAREHOUSE.Attribute.GROUND_TRUCK
elseif infantry then elseif infantry then
attribute=WAREHOUSE.Attribute.GROUND_INFANTRY attribute=WAREHOUSE.Attribute.GROUND_INFANTRY
elseif artillery then elseif artillery then
@ -5889,8 +5859,12 @@ function WAREHOUSE:_GetAttribute(group)
attribute=WAREHOUSE.Attribute.GROUND_TANK attribute=WAREHOUSE.Attribute.GROUND_TANK
elseif aaa then elseif aaa then
attribute=WAREHOUSE.Attribute.GROUND_AAA attribute=WAREHOUSE.Attribute.GROUND_AAA
elseif ewr then
attribute=WAREHOUSE.Attribute.GROUND_EWR
elseif sam then elseif sam then
attribute=WAREHOUSE.Attribute.GROUND_SAM attribute=WAREHOUSE.Attribute.GROUND_SAM
elseif truck then
attribute=WAREHOUSE.Attribute.GROUND_TRUCK
elseif train then elseif train then
attribute=WAREHOUSE.Attribute.GROUND_TRAIN attribute=WAREHOUSE.Attribute.GROUND_TRAIN
elseif aircraftcarrier then elseif aircraftcarrier then