mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
Warehouse v0.3.7w
This commit is contained in:
parent
107c2da635
commit
718679b5dd
@ -471,9 +471,9 @@ end
|
|||||||
-- DeployZoneSet = SET_ZONE:New():FilterPrefixes( "Deploy" ):FilterStart()
|
-- DeployZoneSet = SET_ZONE:New():FilterPrefixes( "Deploy" ):FilterStart()
|
||||||
-- AICargoDispatcher = AI_CARGO_DISPATCHER:New( SetCarrier, SetCargo, SetDeployZone )
|
-- AICargoDispatcher = AI_CARGO_DISPATCHER:New( SetCarrier, SetCargo, SetDeployZone )
|
||||||
--
|
--
|
||||||
function AI_CARGO_DISPATCHER:NewWithZones( SetCarriers, SetCargos, PickupZoneSet, DeployZoneSet )
|
function AI_CARGO_DISPATCHER:NewWithZones( SetCarrier, SetCargo, PickupZoneSet, DeployZoneSet )
|
||||||
|
|
||||||
local self = AI_CARGO_DISPATCHER:New( SetCarriers, SetCargos ) -- #AI_CARGO_DISPATCHER
|
local self = AI_CARGO_DISPATCHER:New( SetCarrier, SetCargo ) -- #AI_CARGO_DISPATCHER
|
||||||
|
|
||||||
self.PickupZoneSet = PickupZoneSet
|
self.PickupZoneSet = PickupZoneSet
|
||||||
self.DeployZoneSet = DeployZoneSet
|
self.DeployZoneSet = DeployZoneSet
|
||||||
|
|||||||
@ -109,7 +109,7 @@ AI_CARGO_DISPATCHER_APC = {
|
|||||||
-- APCSet = SET_GROUP:New():FilterPrefixes( "APC" ):FilterStart()
|
-- APCSet = SET_GROUP:New():FilterPrefixes( "APC" ):FilterStart()
|
||||||
-- CargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
-- CargoSet = SET_CARGO:New():FilterTypes( "Infantry" ):FilterStart()
|
||||||
-- DeployZoneSet = SET_ZONE:New():FilterPrefixes( "Deploy" ):FilterStart()
|
-- DeployZoneSet = SET_ZONE:New():FilterPrefixes( "Deploy" ):FilterStart()
|
||||||
-- AICargoDispatcher = AI_CARGO_DISPATCHER_APC:New( APCSet, SCargoSet, nil, DeployZoneSet, 500 )
|
-- AICargoDispatcher = AI_CARGO_DISPATCHER_APC:New( APCSet, CargoSet, nil, DeployZoneSet, 500 )
|
||||||
--
|
--
|
||||||
function AI_CARGO_DISPATCHER_APC:New( APCSet, CargoSet, PickupZoneSet, DeployZoneSet, CombatRadius )
|
function AI_CARGO_DISPATCHER_APC:New( APCSet, CargoSet, PickupZoneSet, DeployZoneSet, CombatRadius )
|
||||||
|
|
||||||
@ -117,8 +117,8 @@ function AI_CARGO_DISPATCHER_APC:New( APCSet, CargoSet, PickupZoneSet, DeployZon
|
|||||||
|
|
||||||
self.CombatRadius = CombatRadius or 500
|
self.CombatRadius = CombatRadius or 500
|
||||||
|
|
||||||
self:SetDeploySpeed( 70, 120 )
|
self:SetDeploySpeed( 120, 70 )
|
||||||
self:SetPickupSpeed( 70, 120 )
|
self:SetPickupSpeed( 120, 70 )
|
||||||
self:SetPickupRadius( 0, 0 )
|
self:SetPickupRadius( 0, 0 )
|
||||||
self:SetDeployRadius( 0, 0 )
|
self:SetDeployRadius( 0, 0 )
|
||||||
|
|
||||||
|
|||||||
@ -49,7 +49,8 @@
|
|||||||
-- @field #table delivered Table holding all delivered requests. Table elements are #boolean. If true, all cargo has been delivered.
|
-- @field #table delivered Table holding all delivered requests. Table elements are #boolean. If true, all cargo has been delivered.
|
||||||
-- @field #table defending Table holding all defending requests, i.e. self requests that were if the warehouse is under attack. Table elements are of type @{#WAREHOUSE.Pendingitem}.
|
-- @field #table defending Table holding all defending requests, i.e. self requests that were if the warehouse is under attack. Table elements are of type @{#WAREHOUSE.Pendingitem}.
|
||||||
-- @field Core.Zone#ZONE portzone Zone defining the port of a warehouse. This is where naval assets are spawned.
|
-- @field Core.Zone#ZONE portzone Zone defining the port of a warehouse. This is where naval assets are spawned.
|
||||||
-- @field #table shippinglanes Table holding the user defined shipping between warehouses.
|
-- @field #table shippinglanes Table holding the user defined shipping between warehouses.
|
||||||
|
-- @field #table offroadpaths Table holding user defined paths from one warehouse to another.
|
||||||
-- @field #boolean autodefence When the warehouse is under attack, automatically spawn assets to defend the warehouse.
|
-- @field #boolean autodefence When the warehouse is under attack, automatically spawn assets to defend the warehouse.
|
||||||
-- @extends Core.Fsm#FSM
|
-- @extends Core.Fsm#FSM
|
||||||
|
|
||||||
@ -257,6 +258,18 @@
|
|||||||
--
|
--
|
||||||
-- The user can set the road connection manually with the @{#WAREHOUSE.SetRoadConnection} function.
|
-- The user can set the road connection manually with the @{#WAREHOUSE.SetRoadConnection} function.
|
||||||
--
|
--
|
||||||
|
-- ## Off Road Connections
|
||||||
|
--
|
||||||
|
-- For ground troops it is also possible to define off road paths from between warehouses if no proper road connection is available or should not be used.
|
||||||
|
--
|
||||||
|
-- An off road path can be defined via the @{#WAREHOUSE.AddOffRoadPath}(*remotewarehouse*, *group*, *oneway*) function, where
|
||||||
|
-- *remotewarehouse* is the warehouse to which the path leads.
|
||||||
|
-- The parameter *group* is a late activated template group. The waypoints of this group are used to define the path between the two warehouses.
|
||||||
|
-- By default, the reverse paths is automatically added to get *from* the remote warehouse to this warehouse unless the parameter *oneway* is set to true.
|
||||||
|
--
|
||||||
|
-- **Note** that if an off road connection is defined between two warehouses this becomes the default path, i.e. even if there is a path *on road* possible
|
||||||
|
-- this will not be used.
|
||||||
|
--
|
||||||
-- ## Rail Connections
|
-- ## Rail Connections
|
||||||
--
|
--
|
||||||
-- A rail connection is automatically defined as the closest point on a railway measured from the center of the spawn zone. But only, if the distance is less than 3 km.
|
-- A rail connection is automatically defined as the closest point on a railway measured from the center of the spawn zone. But only, if the distance is less than 3 km.
|
||||||
@ -267,7 +280,7 @@
|
|||||||
--
|
--
|
||||||
-- ## Air Connections
|
-- ## Air Connections
|
||||||
--
|
--
|
||||||
-- In order to use airborne assets, a warehouse needs to have an associated airbase. This can be an airdrome or a FARP/HELOPAD.
|
-- In order to use airborne assets, a warehouse needs to have an associated airbase. This can be an airdrome, a FARP/HELOPAD or a ship.
|
||||||
--
|
--
|
||||||
-- If there is an airbase within 3 km range of the warehouse it is automatically set as the associated airbase. A user can set an airbase manually
|
-- If there is an airbase within 3 km range of the warehouse it is automatically set as the associated airbase. A user can set an airbase manually
|
||||||
-- with the @{#WAREHOUSE.SetAirbase} function. Keep in mind, that sometimes, ground units need to walk/drive from the spawn zone to the airport
|
-- with the @{#WAREHOUSE.SetAirbase} function. Keep in mind, that sometimes, ground units need to walk/drive from the spawn zone to the airport
|
||||||
@ -287,11 +300,13 @@
|
|||||||
--
|
--
|
||||||
-- ### Defining Shipping Lanes
|
-- ### Defining Shipping Lanes
|
||||||
--
|
--
|
||||||
-- A shipping lane between to warehouses can be defined by the @{#WAREHOUSE.AddShippingLane}(*remotewarehouse*, *group*) function. The first parameter *remotewarehouse*
|
-- A shipping lane between to warehouses can be defined by the @{#WAREHOUSE.AddShippingLane}(*remotewarehouse*, *group*, *oneway*) function. The first parameter *remotewarehouse*
|
||||||
-- is the warehouse which should be connected to the present warehouse.
|
-- is the warehouse which should be connected to the present warehouse.
|
||||||
--
|
--
|
||||||
-- The parameter *group* should be a late activated group defined in the mission editor. The waypoints of this group are used as waypoints of the shipping lane.
|
-- The parameter *group* should be a late activated group defined in the mission editor. The waypoints of this group are used as waypoints of the shipping lane.
|
||||||
--
|
--
|
||||||
|
-- By default, the reverse lane is automatically added to the remote warehouse. This can be disabled by setting the *oneway* parameter to *false*.
|
||||||
|
--
|
||||||
-- 
|
-- 
|
||||||
--
|
--
|
||||||
-- ===
|
-- ===
|
||||||
@ -624,12 +639,12 @@
|
|||||||
-- warehouse.Batumi:AddAsset("Huey", 5, WAREHOUSE.Attribute.AIR_TRANSPORTHELO)
|
-- warehouse.Batumi:AddAsset("Huey", 5, WAREHOUSE.Attribute.AIR_TRANSPORTHELO)
|
||||||
-- warehouse.Berlin:AddAsset("Huey", 5, WAREHOUSE.Attribute.AIR_TRANSPORTHELO)
|
-- warehouse.Berlin:AddAsset("Huey", 5, WAREHOUSE.Attribute.AIR_TRANSPORTHELO)
|
||||||
--
|
--
|
||||||
-- -- Big explosion at the warehose. It has a very nice damage model by the way :)
|
-- -- Big explosion at the warehouse. It has a very nice damage model by the way :)
|
||||||
-- local function DestroyWarehouse()
|
-- local function DestroyWarehouse()
|
||||||
-- warehouse.Batumi.warehouse:GetCoordinate():Explosion(9999)
|
-- warehouse.Batumi.warehouse:GetCoordinate():Explosion(9999)
|
||||||
-- end
|
-- end
|
||||||
--
|
--
|
||||||
-- -- Create and explosion after 30 sec.
|
-- -- Create an explosion at the warehouse after 30 sec.
|
||||||
-- SCHEDULER:New(nil, DestroyWarehouse, {}, 30)
|
-- SCHEDULER:New(nil, DestroyWarehouse, {}, 30)
|
||||||
--
|
--
|
||||||
-- -- These requests should not be processed any more since the warehouse is destroyed.
|
-- -- These requests should not be processed any more since the warehouse is destroyed.
|
||||||
@ -788,6 +803,7 @@ WAREHOUSE = {
|
|||||||
defending = {},
|
defending = {},
|
||||||
portzone = nil,
|
portzone = nil,
|
||||||
shippinglanes = {},
|
shippinglanes = {},
|
||||||
|
offroadpaths = {},
|
||||||
autodefence = false,
|
autodefence = false,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -931,7 +947,7 @@ WAREHOUSE.db = {
|
|||||||
|
|
||||||
--- Warehouse class version.
|
--- Warehouse class version.
|
||||||
-- @field #string version
|
-- @field #string version
|
||||||
WAREHOUSE.version="0.3.7"
|
WAREHOUSE.version="0.3.7w"
|
||||||
|
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
-- TODO: Warehouse todo list.
|
-- TODO: Warehouse todo list.
|
||||||
@ -941,6 +957,7 @@ WAREHOUSE.version="0.3.7"
|
|||||||
-- TODO: Add transport units from dispatchers back to warehouse stock once they completed their mission.
|
-- TODO: Add transport units from dispatchers back to warehouse stock once they completed their mission.
|
||||||
-- TODO: Added habours as interface for transport to from warehouses?
|
-- TODO: Added habours as interface for transport to from warehouses?
|
||||||
-- TODO: Set ROE for spawned groups.
|
-- TODO: Set ROE for spawned groups.
|
||||||
|
-- TODO: Add offroad lanes between warehouses if road connection is not available.
|
||||||
-- DONE: Add possibility to add active groups. Need to create a pseudo template before destroy. <== Does not seem to be necessary any more.
|
-- DONE: Add possibility to add active groups. Need to create a pseudo template before destroy. <== Does not seem to be necessary any more.
|
||||||
-- TODO: Write documentation.
|
-- TODO: Write documentation.
|
||||||
-- TODO: Handle the case when units of a group die during the transfer. Adjust template?! See Grouping in SPAWN.
|
-- TODO: Handle the case when units of a group die during the transfer. Adjust template?! See Grouping in SPAWN.
|
||||||
@ -1037,7 +1054,7 @@ function WAREHOUSE:New(warehouse, alias)
|
|||||||
self:AddTransition("*", "AddRequest", "*") -- New request from other warehouse.
|
self:AddTransition("*", "AddRequest", "*") -- New request from other warehouse.
|
||||||
self:AddTransition("Running", "Request", "*") -- Process a request. Only in running mode.
|
self:AddTransition("Running", "Request", "*") -- Process a request. Only in running mode.
|
||||||
self:AddTransition("Attacked", "Request", "*") -- Process a request. Only in running mode.
|
self:AddTransition("Attacked", "Request", "*") -- Process a request. Only in running mode.
|
||||||
self:AddTransition("*", "Unloaded", "*") -- Cargo has been unloaded from the carrier.
|
self:AddTransition("*", "Unloaded", "*") -- Cargo has been unloaded from the carrier (unused ==> unnecessary?).
|
||||||
self:AddTransition("*", "Arrived", "*") -- Cargo or transport group has arrived.
|
self:AddTransition("*", "Arrived", "*") -- Cargo or transport group has arrived.
|
||||||
self:AddTransition("*", "Delivered", "*") -- All cargo groups of a request have been delivered to the requesting warehouse.
|
self:AddTransition("*", "Delivered", "*") -- All cargo groups of a request have been delivered to the requesting warehouse.
|
||||||
self:AddTransition("Running", "SelfRequest", "*") -- Request to warehouse itself. Requested assets are only spawned but not delivered anywhere.
|
self:AddTransition("Running", "SelfRequest", "*") -- Request to warehouse itself. Requested assets are only spawned but not delivered anywhere.
|
||||||
@ -1051,7 +1068,7 @@ function WAREHOUSE:New(warehouse, alias)
|
|||||||
self:AddTransition("Attacked", "Captured", "Running") -- DONE Warehouse was captured by another coalition. It must have been attacked first.
|
self:AddTransition("Attacked", "Captured", "Running") -- DONE Warehouse was captured by another coalition. It must have been attacked first.
|
||||||
self:AddTransition("*", "AirbaseCaptured", "*") -- DONE Airbase was captured by other coalition.
|
self:AddTransition("*", "AirbaseCaptured", "*") -- DONE Airbase was captured by other coalition.
|
||||||
self:AddTransition("*", "AirbaseRecaptured", "*") -- DONE Airbase was re-captured from other coalition.
|
self:AddTransition("*", "AirbaseRecaptured", "*") -- DONE Airbase was re-captured from other coalition.
|
||||||
self:AddTransition("*", "Destroyed", "*") -- DONE Warehouse was destoryed. All assets in stock are gone and warehouse is stopped.
|
self:AddTransition("*", "Destroyed", "*") -- DONE Warehouse was destroyed. All assets in stock are gone and warehouse is stopped.
|
||||||
|
|
||||||
------------------------
|
------------------------
|
||||||
--- Pseudo Functions ---
|
--- Pseudo Functions ---
|
||||||
@ -1158,8 +1175,11 @@ function WAREHOUSE:New(warehouse, alias)
|
|||||||
-- @param #WAREHOUSE.Queueitem Request Information table of the request.
|
-- @param #WAREHOUSE.Queueitem Request Information table of the request.
|
||||||
|
|
||||||
|
|
||||||
--- Triggers the FSM event "Arrived", i.e. when a group has arrived at the destination warehosue.
|
--- Triggers the FSM event "Arrived", i.e. when a group has arrived at the destination warehouse.
|
||||||
-- This function should always be called from the receiving and not the sending warehouse because assets are added back to the
|
-- This function should always be called from the sending and not the receiving warehouse.
|
||||||
|
-- If the group is a cargo asset, it is added to the receiving warehouse. If the group is a transporter it
|
||||||
|
-- is added to the sending warehouse since carriers are supposed to return to their home warehouse once
|
||||||
|
-- all cargo was delivered.
|
||||||
-- @function [parent=#WAREHOUSE] Arrived
|
-- @function [parent=#WAREHOUSE] Arrived
|
||||||
-- @param #WAREHOUSE self
|
-- @param #WAREHOUSE self
|
||||||
-- @param Wrapper.Group#GROUP group Group that has arrived.
|
-- @param Wrapper.Group#GROUP group Group that has arrived.
|
||||||
@ -1170,7 +1190,7 @@ function WAREHOUSE:New(warehouse, alias)
|
|||||||
-- @param #number delay Delay in seconds.
|
-- @param #number delay Delay in seconds.
|
||||||
-- @param Wrapper.Group#GROUP group Group that has arrived.
|
-- @param Wrapper.Group#GROUP group Group that has arrived.
|
||||||
|
|
||||||
--- On after "Arrived" event user function. Called when a groups has arrived.
|
--- On after "Arrived" event user function. Called when a groups has arrived at its destination.
|
||||||
-- @function [parent=#WAREHOUSE] OnAfterArrived
|
-- @function [parent=#WAREHOUSE] OnAfterArrived
|
||||||
-- @param #WAREHOUSE self
|
-- @param #WAREHOUSE self
|
||||||
-- @param #string From From state.
|
-- @param #string From From state.
|
||||||
@ -1179,7 +1199,7 @@ function WAREHOUSE:New(warehouse, alias)
|
|||||||
-- @param Wrapper.Group#GROUP group Group that has arrived.
|
-- @param Wrapper.Group#GROUP group Group that has arrived.
|
||||||
|
|
||||||
|
|
||||||
--- Triggers the FSM event "Delivered". A group has been delivered from the warehouse to another warehouse.
|
--- Triggers the FSM event "Delivered". All (cargo) assets of a request have been delivered to the receiving warehouse.
|
||||||
-- @function [parent=#WAREHOUSE] Delivered
|
-- @function [parent=#WAREHOUSE] Delivered
|
||||||
-- @param #WAREHOUSE self
|
-- @param #WAREHOUSE self
|
||||||
-- @param #WAREHOUSE.Pendingitem request Pending request that was now delivered.
|
-- @param #WAREHOUSE.Pendingitem request Pending request that was now delivered.
|
||||||
@ -1485,22 +1505,94 @@ function WAREHOUSE:SetPortZone(zone)
|
|||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Add a shipping lane to another warehouse.
|
--- Add a shipping lane from this warehouse to another remote warehouse.
|
||||||
-- Note that both warehouses must have a port zone defined before a shipping lane can be added.
|
-- Note that both warehouses must have a port zone defined before a shipping lane can be added!
|
||||||
-- Shipping lane is taken from the waypoints of a (late activated) template group. So set up a group, e.g. a ship or a helicopter, and place its
|
-- Shipping lane is taken from the waypoints of a (late activated) template group. So set up a group, e.g. a ship or a helicopter, and place its
|
||||||
-- waypoints along the shipping lane you want to add.
|
-- waypoints along the shipping lane you want to add.
|
||||||
-- @param #WAREHOUSE self
|
-- @param #WAREHOUSE self
|
||||||
-- @param #WAREHOUSE remotewarehouse The remote warehouse to where the shipping lane is added
|
-- @param #WAREHOUSE remotewarehouse The remote warehouse to where the shipping lane is added
|
||||||
-- @param Wrapper.Group#GROUP group Waypoints of this group will define the shipping lane between to warehouses.
|
-- @param Wrapper.Group#GROUP group Waypoints of this group will define the shipping lane between to warehouses.
|
||||||
|
-- @param #boolean oneway (Optional) If true, the lane can only be used from this warehouse to the other but not other way around. Default false.
|
||||||
-- @return #WAREHOUSE self
|
-- @return #WAREHOUSE self
|
||||||
function WAREHOUSE:AddShippingLane(remotewarehouse, group)
|
function WAREHOUSE:AddShippingLane(remotewarehouse, group, oneway)
|
||||||
|
|
||||||
-- Check that port zones are defined.
|
-- Check that port zones are defined.
|
||||||
if self.portzone==nil or remotewarehouse.portzone==nil then
|
if self.portzone==nil or remotewarehouse.portzone==nil then
|
||||||
self:E(self.wid..string.format("ERROR: Sending or receiving warehouse does not have a port zone defined. Adding shipping lane not possible!"))
|
local text=string.format("ERROR: Sending or receiving warehouse does not have a port zone defined. Adding shipping lane not possible!")
|
||||||
return
|
self:_ErrorMessage(text, 5)
|
||||||
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local startcoord=self.portzone:GetRandomCoordinate()
|
||||||
|
local finalcoord=remotewarehouse.portzone:GetRandomCoordinate()
|
||||||
|
|
||||||
|
local lane=self:_NewLane(group,startcoord,finalcoord)
|
||||||
|
|
||||||
|
-- Debug info. Marks along shipping lane.
|
||||||
|
if self.Debug then
|
||||||
|
for i=1,#lane do
|
||||||
|
local coord=lane[i] --Core.Point#COORDINATE
|
||||||
|
local text=string.format("Shipping lane %s to %s. Point %d.", self.alias, remotewarehouse.alias, i)
|
||||||
|
coord:MarkToCoalition(text, self.coalition)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Add shipping lane.
|
||||||
|
-- TODO: Maybe add multiple lanes as a table and later randomly select one for the actual route.
|
||||||
|
self.shippinglanes[remotewarehouse.warehouse:GetName()]=lane
|
||||||
|
|
||||||
|
-- Add shipping lane in the opposite direction.
|
||||||
|
if not oneway then
|
||||||
|
remotewarehouse:AddShippingLane(self, group, false)
|
||||||
|
end
|
||||||
|
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
--- Add an off-road path from this warehouse to another and back.
|
||||||
|
-- The start and end points are automatically set to one random point in the respective spawn zones of the two warehouses.
|
||||||
|
-- By default, the reverse path is also added as path from the remote warehouse to this warehouse.
|
||||||
|
-- @param #WAREHOUSE self
|
||||||
|
-- @param #WAREHOUSE remotewarehouse The remote warehouse to which the path leads.
|
||||||
|
-- @param Wrapper.Group#GROUP group Waypoints of this group will define the path between to warehouses.
|
||||||
|
-- @param #boolean oneway (Optional) If true, the path can only be used from this warehouse to the other but not other way around. Default false.
|
||||||
|
-- @return #WAREHOUSE self
|
||||||
|
function WAREHOUSE:AddOffRoadPath(remotewarehouse, group, oneway)
|
||||||
|
|
||||||
|
local startcoord=self.spawnzone:GetRandomCoordinate()
|
||||||
|
local finalcoord=remotewarehouse.spawnzone:GetRandomCoordinate()
|
||||||
|
|
||||||
|
local lane=self:_NewLane(group,startcoord,finalcoord)
|
||||||
|
|
||||||
|
-- Debug info. Marks along shipping lane.
|
||||||
|
if self.Debug then
|
||||||
|
for i=1,#lane do
|
||||||
|
local coord=lane[i] --Core.Point#COORDINATE
|
||||||
|
local text=string.format("Off road path from %s to %s. Point %d.", self.alias, remotewarehouse.alias, i)
|
||||||
|
coord:MarkToCoalition(text, self.coalition)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Add shipping lane.
|
||||||
|
self.offroadpaths[remotewarehouse.warehouse:GetName()]=lane
|
||||||
|
|
||||||
|
-- Add shipping lane in the opposite direction.
|
||||||
|
if not oneway then
|
||||||
|
remotewarehouse:AddOffRoadPath(self, group, false)
|
||||||
|
end
|
||||||
|
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Create a new path from a template group.
|
||||||
|
-- @param #WAREHOUSE self
|
||||||
|
-- @param Wrapper.Group#GROUP group Group used for extracting the waypoints.
|
||||||
|
-- @param Core.Point#COORDINATE startcoord First coordinate.
|
||||||
|
-- @param Core.Point#COORDINATE finalcoord Final coordinate.
|
||||||
|
-- @return #table Table with route points.
|
||||||
|
function WAREHOUSE:_NewLane(group, startcoord, finalcoord)
|
||||||
|
|
||||||
-- Get route from template.
|
-- Get route from template.
|
||||||
local lanepoints=group:GetTemplateRoutePoints()
|
local lanepoints=group:GetTemplateRoutePoints()
|
||||||
|
|
||||||
@ -1513,8 +1605,8 @@ function WAREHOUSE:AddShippingLane(remotewarehouse, group)
|
|||||||
local coordL=COORDINATE:New(laneL.x, 0, laneL.y)
|
local coordL=COORDINATE:New(laneL.x, 0, laneL.y)
|
||||||
|
|
||||||
-- Figure out which point is closer to the port of this warehouse.
|
-- Figure out which point is closer to the port of this warehouse.
|
||||||
local distF=self.portzone:GetCoordinate():Get2DDistance(coordF)
|
local distF=startcoord:Get2DDistance(coordF)
|
||||||
local distL=self.portzone:GetCoordinate():Get2DDistance(coordL)
|
local distL=startcoord:GetCoordinate():Get2DDistance(coordL)
|
||||||
|
|
||||||
-- Add the shipping lane. Need to take care of the wrong "direction".
|
-- Add the shipping lane. Need to take care of the wrong "direction".
|
||||||
local lane={}
|
local lane={}
|
||||||
@ -1532,21 +1624,14 @@ function WAREHOUSE:AddShippingLane(remotewarehouse, group)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Debug info. Marks along shipping lane.
|
-- Add beginning and end.
|
||||||
if self.Debug then
|
table.insert(lane, 1, startcoord)
|
||||||
for i=1,#lane do
|
table.insert(lane, #lane, finalcoord)
|
||||||
local coord=lane[i] --Core.Point#COORDINATE
|
|
||||||
local text=string.format("Shipping lane %s to %s. Point %d.", self.alias, remotewarehouse.alias, i)
|
|
||||||
coord:MarkToCoalition(text, self.coalition)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Add shipping lane.
|
|
||||||
self.shippinglanes[remotewarehouse.warehouse:GetName()]=lane
|
|
||||||
|
|
||||||
return self
|
return lane
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
--- Check if the warehouse is running.
|
--- Check if the warehouse is running.
|
||||||
-- @param #WAREHOUSE self
|
-- @param #WAREHOUSE self
|
||||||
-- @return #boolean If true, the warehouse is running and requests are processed.
|
-- @return #boolean If true, the warehouse is running and requests are processed.
|
||||||
@ -1577,7 +1662,7 @@ end
|
|||||||
|
|
||||||
--- Check if the warehouse has a road connection to another warehouse. Both warehouses need to be started!
|
--- Check if the warehouse has a road connection to another warehouse. Both warehouses need to be started!
|
||||||
-- @param #WAREHOUSE self
|
-- @param #WAREHOUSE self
|
||||||
-- @param #WAREHOUSE warehouse The remote warehose to where the connection is checked.
|
-- @param #WAREHOUSE warehouse The remote warehouse to where the connection is checked.
|
||||||
-- @param #boolean markpath If true, place markers of path segments on the F10 map.
|
-- @param #boolean markpath If true, place markers of path segments on the F10 map.
|
||||||
-- @param #boolean smokepath If true, put green smoke on path segments.
|
-- @param #boolean smokepath If true, put green smoke on path segments.
|
||||||
-- @return #boolean If true, the two warehouses are connected by road.
|
-- @return #boolean If true, the two warehouses are connected by road.
|
||||||
@ -1597,7 +1682,7 @@ end
|
|||||||
|
|
||||||
--- Check if the warehouse has a railroad connection to another warehouse. Both warehouses need to be started!
|
--- Check if the warehouse has a railroad connection to another warehouse. Both warehouses need to be started!
|
||||||
-- @param #WAREHOUSE self
|
-- @param #WAREHOUSE self
|
||||||
-- @param #WAREHOUSE warehouse The remote warehose to where the connection is checked.
|
-- @param #WAREHOUSE warehouse The remote warehouse to where the connection is checked.
|
||||||
-- @param #boolean markpath If true, place markers of path segments on the F10 map.
|
-- @param #boolean markpath If true, place markers of path segments on the F10 map.
|
||||||
-- @param #boolean smokepath If true, put green smoke on path segments.
|
-- @param #boolean smokepath If true, put green smoke on path segments.
|
||||||
-- @return #boolean If true, the two warehouses are connected by road.
|
-- @return #boolean If true, the two warehouses are connected by road.
|
||||||
@ -1617,7 +1702,7 @@ end
|
|||||||
|
|
||||||
--- Check if the warehouse has a shipping lane defined to another warehouse.
|
--- Check if the warehouse has a shipping lane defined to another warehouse.
|
||||||
-- @param #WAREHOUSE self
|
-- @param #WAREHOUSE self
|
||||||
-- @param #WAREHOUSE warehouse The remote warehose to where the connection is checked.
|
-- @param #WAREHOUSE warehouse The remote warehouse to where the connection is checked.
|
||||||
-- @param #boolean markpath If true, place markers of path segments on the F10 map.
|
-- @param #boolean markpath If true, place markers of path segments on the F10 map.
|
||||||
-- @param #boolean smokepath If true, put green smoke on path segments.
|
-- @param #boolean smokepath If true, put green smoke on path segments.
|
||||||
-- @return #boolean If true, the two warehouses are connected by road.
|
-- @return #boolean If true, the two warehouses are connected by road.
|
||||||
@ -1637,7 +1722,7 @@ function WAREHOUSE:HasConnectionNaval(warehouse, markpath, smokepath)
|
|||||||
if shippinglane then
|
if shippinglane then
|
||||||
return true,1
|
return true,1
|
||||||
else
|
else
|
||||||
self:_ErrorMessage("No shipping lane!")
|
self:T2(string.format("No shipping lane defined between warehouse %s and %s!", self.alias, warehouse.alias))
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@ -1645,6 +1730,37 @@ function WAREHOUSE:HasConnectionNaval(warehouse, markpath, smokepath)
|
|||||||
return nil, -1
|
return nil, -1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Check if the warehouse has an off road path defined to another warehouse.
|
||||||
|
-- @param #WAREHOUSE self
|
||||||
|
-- @param #WAREHOUSE warehouse The remote warehouse to where the connection is checked.
|
||||||
|
-- @param #boolean markpath If true, place markers of path segments on the F10 map.
|
||||||
|
-- @param #boolean smokepath If true, put green smoke on path segments.
|
||||||
|
-- @return #boolean If true, the two warehouses are connected by road.
|
||||||
|
-- @return #number Path length in meters. Negative distance -1 meter indicates no connection.
|
||||||
|
function WAREHOUSE:HasConnectionOffRoad(warehouse, markpath, smokepath)
|
||||||
|
|
||||||
|
if warehouse then
|
||||||
|
|
||||||
|
-- Self request
|
||||||
|
if warehouse.warehouse:GetName()==self.warehouse:GetName() then
|
||||||
|
return true,1
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Get shipping lane.
|
||||||
|
local offroadpath=self.offroadpaths[warehouse.warehouse:GetName()]
|
||||||
|
|
||||||
|
if offroadpath~=nil then
|
||||||
|
return true,1
|
||||||
|
else
|
||||||
|
self:T2(string.format("No off-road path defined between warehouse %s and %s!", self.alias, warehouse.alias))
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
return nil, -1
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
--- Get number of assets in warehouse stock.
|
--- Get number of assets in warehouse stock.
|
||||||
-- @param #WAREHOUSE self
|
-- @param #WAREHOUSE self
|
||||||
-- @param #string Descriptor (Optional) Descriptor return the number of a specifc asset type. See @{#WAREHOUSE.Descriptor} for possible values.
|
-- @param #string Descriptor (Optional) Descriptor return the number of a specifc asset type. See @{#WAREHOUSE.Descriptor} for possible values.
|
||||||
@ -2740,13 +2856,16 @@ function WAREHOUSE:onafterRequest(From, Event, To, Request)
|
|||||||
------------------------------------------------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
-- Set of cargo carriers.
|
-- Set of cargo carriers.
|
||||||
local TransportSet = SET_GROUP:New():FilterDeads()
|
local TransportSet = SET_GROUP:New()
|
||||||
|
|
||||||
-- Pickup and deploy zones/bases.
|
-- Pickup and deploy zones/bases.
|
||||||
local PickupAirbaseSet = SET_AIRBASE:New():AddAirbase(self.airbase)
|
local PickupAirbaseSet = SET_AIRBASE:New():AddAirbase(self.airbase)
|
||||||
local DeployAirbaseSet = SET_AIRBASE:New():AddAirbase(Request.airbase)
|
local DeployAirbaseSet = SET_AIRBASE:New():AddAirbase(Request.airbase)
|
||||||
local DeployZoneSet = SET_ZONE:New():AddZone(Request.warehouse.spawnzone)
|
local DeployZoneSet = SET_ZONE:New():AddZone(Request.warehouse.spawnzone)
|
||||||
|
|
||||||
|
--local PickupAirbaseSet = SET_AIRBASE:New()
|
||||||
|
--ZONE_AIRBASE:New(ZoneName,ZoneAirbase,Radius,AirbaseName)
|
||||||
|
|
||||||
-- Cargo dispatcher.
|
-- Cargo dispatcher.
|
||||||
local CargoTransport --AI.AI_Cargo_Dispatcher#AI_CARGO_DISPATCHER
|
local CargoTransport --AI.AI_Cargo_Dispatcher#AI_CARGO_DISPATCHER
|
||||||
|
|
||||||
@ -3131,6 +3250,9 @@ function WAREHOUSE:onafterUnloaded(From, Event, To, group)
|
|||||||
end
|
end
|
||||||
|
|
||||||
--- On after "Arrived" event. Triggered when a group has arrived at its destination warehouse.
|
--- On after "Arrived" event. Triggered when a group has arrived at its destination warehouse.
|
||||||
|
-- The routine should be called by the warehouse sending this asset and not by the receiving warehouse.
|
||||||
|
-- It is checked if this asset is cargo (or self propelled) or transport. If it is cargo it is put into the stock of receiving warehouse.
|
||||||
|
-- If it is a transporter it is put back into the sending warehouse since transports are supposed to return their home warehouse.
|
||||||
-- @param #WAREHOUSE self
|
-- @param #WAREHOUSE self
|
||||||
-- @param #string From From state.
|
-- @param #string From From state.
|
||||||
-- @param #string Event Event.
|
-- @param #string Event Event.
|
||||||
@ -3143,7 +3265,7 @@ function WAREHOUSE:onafterArrived(From, Event, To, group)
|
|||||||
group:SmokeOrange()
|
group:SmokeOrange()
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Get request from group.
|
-- Get pending request this group belongs to.
|
||||||
local request=self:_GetRequestOfGroup(group, self.pending)
|
local request=self:_GetRequestOfGroup(group, self.pending)
|
||||||
|
|
||||||
if request then
|
if request then
|
||||||
@ -3155,7 +3277,7 @@ function WAREHOUSE:onafterArrived(From, Event, To, group)
|
|||||||
warehouse=self
|
warehouse=self
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Debug message
|
-- Debug message.
|
||||||
self:_DebugMessage(string.format("Group %s arrived at warehouse %s!", tostring(group:GetName()), warehouse.alias), 5)
|
self:_DebugMessage(string.format("Group %s arrived at warehouse %s!", tostring(group:GetName()), warehouse.alias), 5)
|
||||||
|
|
||||||
-- Route mobile ground group to the warehouse. Group has 60 seconds to get there or it is despawned and added as asset to the new warehouse regardless.
|
-- Route mobile ground group to the warehouse. Group has 60 seconds to get there or it is despawned and added as asset to the new warehouse regardless.
|
||||||
@ -3167,23 +3289,6 @@ function WAREHOUSE:onafterArrived(From, Event, To, group)
|
|||||||
warehouse:__AddAsset(60, group)
|
warehouse:__AddAsset(60, group)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
--[[
|
|
||||||
-- Get request from group name.
|
|
||||||
local request=self:_GetRequestOfGroup(group, self.pending)
|
|
||||||
|
|
||||||
if request then
|
|
||||||
|
|
||||||
-- Route mobile ground group to the warehouse. Group has 60 seconds to get there or it is despawned and added as asset to the new warehouse regardless.
|
|
||||||
if group:IsGround() and group:GetSpeedMax()>1 then
|
|
||||||
group:RouteGroundTo(request.warehouse.coordinate, group:GetSpeedMax()*0.3, "Off Road")
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Move asset from pending queue into new warehouse.
|
|
||||||
request.warehouse:__AddAsset(60, group)
|
|
||||||
|
|
||||||
end
|
|
||||||
]]
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -3535,7 +3640,7 @@ end
|
|||||||
-- Routing functions
|
-- Routing functions
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
--- Route ground units to destination.
|
--- Route ground units to destination. ROE is set to return fire and alarm state to green.
|
||||||
-- @param #WAREHOUSE self
|
-- @param #WAREHOUSE self
|
||||||
-- @param Wrapper.Group#GROUP group The ground group to be routed
|
-- @param Wrapper.Group#GROUP group The ground group to be routed
|
||||||
-- @param #WAREHOUSE.Queueitem request The request for this group.
|
-- @param #WAREHOUSE.Queueitem request The request for this group.
|
||||||
@ -3547,19 +3652,50 @@ function WAREHOUSE:_RouteGround(group, request)
|
|||||||
-- Set speed to 70% of max possible.
|
-- Set speed to 70% of max possible.
|
||||||
local _speed=group:GetSpeedMax()*0.7
|
local _speed=group:GetSpeedMax()*0.7
|
||||||
|
|
||||||
-- Waypoints for road-to-road connection.
|
-- Route waypoints.
|
||||||
local Waypoints, canroad = group:TaskGroundOnRoad(request.warehouse.road, _speed, "Off Road", false, self.road)
|
local Waypoints={}
|
||||||
|
|
||||||
-- First waypoint = current position of the group.
|
-- Check if an off road path has been defined.
|
||||||
local FromWP=group:GetCoordinate():WaypointGround(_speed, "Off Road")
|
local hasoffroad=self:HasConnectionOffRoad(request.warehouse, self.Debug)
|
||||||
table.insert(Waypoints, 1, FromWP)
|
|
||||||
|
|
||||||
-- Final coordinate.
|
if hasoffroad then
|
||||||
local ToWP=request.warehouse.spawnzone:GetRandomCoordinate():WaypointGround(_speed, "Off Road")
|
|
||||||
table.insert(Waypoints, #Waypoints+1, ToWP)
|
-- Get off road path to remote warehouse.
|
||||||
|
local path=self.offroadpaths[request.warehouse.warehouse:GetName()]
|
||||||
|
|
||||||
|
-- Loop over user defined shipping lanes.
|
||||||
|
for i=1,#path do
|
||||||
|
|
||||||
|
-- Shortcut and coordinate intellisense.
|
||||||
|
local coord=path[i] --Core.Point#COORDINATE
|
||||||
|
|
||||||
|
-- Get waypoint for coordinate.
|
||||||
|
local Waypoint=coord:WaypointGround(_speed, "Off Road")
|
||||||
|
|
||||||
|
-- Add waypoint to route.
|
||||||
|
table.insert(Waypoints, Waypoint)
|
||||||
|
end
|
||||||
|
|
||||||
|
else
|
||||||
|
|
||||||
|
-- Waypoints for road-to-road connection.
|
||||||
|
Waypoints = group:TaskGroundOnRoad(request.warehouse.road, _speed, "Off Road", false, self.road)
|
||||||
|
|
||||||
|
-- First waypoint = current position of the group.
|
||||||
|
local FromWP=group:GetCoordinate():WaypointGround(_speed, "Off Road")
|
||||||
|
table.insert(Waypoints, 1, FromWP)
|
||||||
|
|
||||||
|
-- Final coordinate.
|
||||||
|
local ToWP=request.warehouse.spawnzone:GetRandomCoordinate():WaypointGround(_speed, "Off Road")
|
||||||
|
table.insert(Waypoints, #Waypoints+1, ToWP)
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
-- Task function triggering the arrived event.
|
-- Task function triggering the arrived event.
|
||||||
local TaskFunction = group:TaskFunction("WAREHOUSE._Arrived", self)
|
--local TaskFunction = group:TaskFunction("WAREHOUSE._Arrived", self)
|
||||||
|
|
||||||
|
-- Task function triggering the arrived event at the last waypoint.
|
||||||
|
local TaskFunction = self:_SimpleTaskFunction("warehouse:_ArrivedSimple", group)
|
||||||
|
|
||||||
-- Put task function on last waypoint.
|
-- Put task function on last waypoint.
|
||||||
local Waypoint = Waypoints[#Waypoints]
|
local Waypoint = Waypoints[#Waypoints]
|
||||||
@ -3574,7 +3710,7 @@ function WAREHOUSE:_RouteGround(group, request)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Route naval units along user defined shipping lanes to destination warehouse.
|
--- Route naval units along user defined shipping lanes to destination warehouse. ROE is set to return fire.
|
||||||
-- @param #WAREHOUSE self
|
-- @param #WAREHOUSE self
|
||||||
-- @param Wrapper.Group#GROUP group The naval group to be routed
|
-- @param Wrapper.Group#GROUP group The naval group to be routed
|
||||||
-- @param #WAREHOUSE.Queueitem request The request for this group.
|
-- @param #WAREHOUSE.Queueitem request The request for this group.
|
||||||
@ -3601,7 +3737,6 @@ function WAREHOUSE:_RouteNaval(group, request)
|
|||||||
local coord=lane[i] --Core.Point#COORDINATE
|
local coord=lane[i] --Core.Point#COORDINATE
|
||||||
|
|
||||||
-- Get waypoint for coordinate.
|
-- Get waypoint for coordinate.
|
||||||
-- TODO: Might need optimization for Naval.
|
|
||||||
local Waypoint=coord:WaypointGround(_speed)
|
local Waypoint=coord:WaypointGround(_speed)
|
||||||
|
|
||||||
-- Add waypoint to route.
|
-- Add waypoint to route.
|
||||||
@ -3631,6 +3766,7 @@ end
|
|||||||
|
|
||||||
|
|
||||||
--- Route the airplane from one airbase another. Activates uncontrolled aircraft and sets ROE/ROT for ferry flights.
|
--- Route the airplane from one airbase another. Activates uncontrolled aircraft and sets ROE/ROT for ferry flights.
|
||||||
|
-- ROE is set to return fire and ROT to passive defence.
|
||||||
-- @param #WAREHOUSE self
|
-- @param #WAREHOUSE self
|
||||||
-- @param Wrapper.Group#GROUP Aircraft Airplane group to be routed.
|
-- @param Wrapper.Group#GROUP Aircraft Airplane group to be routed.
|
||||||
function WAREHOUSE:_RouteAir(aircraft)
|
function WAREHOUSE:_RouteAir(aircraft)
|
||||||
@ -3709,7 +3845,7 @@ end
|
|||||||
-- Event handler functions
|
-- Event handler functions
|
||||||
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
--- Arrived event if an air unit/group arrived at its destination.
|
--- Arrived event if an air unit/group arrived at its destination. This can be an engine shutdown or a landing event.
|
||||||
-- @param #WAREHOUSE self
|
-- @param #WAREHOUSE self
|
||||||
-- @param Core.Event#EVENTDATA EventData Event data table.
|
-- @param Core.Event#EVENTDATA EventData Event data table.
|
||||||
function WAREHOUSE:_OnEventArrived(EventData)
|
function WAREHOUSE:_OnEventArrived(EventData)
|
||||||
@ -3735,7 +3871,7 @@ function WAREHOUSE:_OnEventArrived(EventData)
|
|||||||
if self.uid==wid then
|
if self.uid==wid then
|
||||||
|
|
||||||
-- Debug info.
|
-- Debug info.
|
||||||
local text=string.format("Air asset group %s arrived at warehouse %s.", group:GetName(), self.alias)
|
local text=string.format("Air asset group %s from warehouse %s arrived at its destination.", group:GetName(), self.alias)
|
||||||
self:_InfoMessage(text)
|
self:_InfoMessage(text)
|
||||||
|
|
||||||
-- Trigger arrived event for this group. Note that each unit of a group will trigger this event. So the onafterArrived function needs to take care of that.
|
-- Trigger arrived event for this group. Note that each unit of a group will trigger this event. So the onafterArrived function needs to take care of that.
|
||||||
@ -3807,30 +3943,37 @@ end
|
|||||||
-- @param #WAREHOUSE self
|
-- @param #WAREHOUSE self
|
||||||
-- @param Core.Event#EVENTDATA EventData Event data.
|
-- @param Core.Event#EVENTDATA EventData Event data.
|
||||||
function WAREHOUSE:_OnEventLanding(EventData)
|
function WAREHOUSE:_OnEventLanding(EventData)
|
||||||
self:T3(self.wid..string.format("Warehouse %s captured event landing!",self.alias))
|
self:T3(self.wid..string.format("Warehouse %s captured event landing!", self.alias))
|
||||||
|
|
||||||
if EventData and EventData.IniGroup then
|
if EventData and EventData.IniGroup then
|
||||||
local group=EventData.IniGroup
|
local group=EventData.IniGroup
|
||||||
|
|
||||||
|
-- Try to get UIDs from group name.
|
||||||
local wid,aid,rid=self:_GetIDsFromGroup(group)
|
local wid,aid,rid=self:_GetIDsFromGroup(group)
|
||||||
if wid==self.uid then
|
|
||||||
|
-- Check that this group belongs to this warehouse.
|
||||||
|
if wid~=nil and wid==self.uid then
|
||||||
|
|
||||||
|
-- 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))
|
||||||
|
|
||||||
-- Get request of this group
|
-- Check if all cargo was delivered.
|
||||||
local request=self:_GetRequestOfGroup(group, self.pending)
|
if self.delivered[rid]==true then
|
||||||
|
|
||||||
-- If request is nil, the cargo has been delivered.
|
|
||||||
-- TODO: I might need to add a delivered table, to be better able to get this right.
|
|
||||||
if request==nil then
|
|
||||||
|
|
||||||
-- Check if helicopter landed in spawn zone. If so, we call it a day and add it back to stock.
|
-- 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 group:GetCategory()==Group.Category.HELICOPTER then
|
||||||
if self.spawnzone:IsCoordinateInZone(EventData.IniUnit:GetCoordinate()) 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.")
|
self:_DebugMessage("Helicopter landed in spawn zone. No pending request. Putting back into stock.")
|
||||||
if self.Debug then
|
if self.Debug then
|
||||||
group:SmokeWhite()
|
group:SmokeWhite()
|
||||||
end
|
end
|
||||||
self:__AddAsset(30, group)
|
|
||||||
|
-- Group arrived.
|
||||||
|
self:Arrived(group)
|
||||||
|
--self:__AddAsset(30, group)
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -4249,8 +4392,12 @@ function WAREHOUSE:_CheckRequestValid(request)
|
|||||||
|
|
||||||
-- Check if there is a valid path on road.
|
-- Check if there is a valid path on road.
|
||||||
local hasroad=self:HasConnectionRoad(request.warehouse)
|
local hasroad=self:HasConnectionRoad(request.warehouse)
|
||||||
if not hasroad then
|
|
||||||
self:E("ERROR: Incorrect request. No valid path on road for ground assets!")
|
-- Check if there is a valid off road path.
|
||||||
|
local hasoffroad=self:HasConnectionOffRoad(request.warehouse)
|
||||||
|
|
||||||
|
if not (hasroad or hasoffroad) then
|
||||||
|
self:E("ERROR: Incorrect request. No valid path on or off road for ground assets!")
|
||||||
valid=false
|
valid=false
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -5395,10 +5542,10 @@ function WAREHOUSE:_Fireworks(coord)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Info Message.
|
--- Info Message. Message send to coalition if reports or debug mode activated (and duration > 0). Text self:I(text) added to DCS.log file.
|
||||||
-- @param #WAREHOUSE self
|
-- @param #WAREHOUSE self
|
||||||
-- @param #string text The text of the error message.
|
-- @param #string text The text of the error message.
|
||||||
-- @param #number duration Message display duration in seconds. Default 20 sec.
|
-- @param #number duration Message display duration in seconds. Default 20 sec. If duration is zero, no message is displayed.
|
||||||
function WAREHOUSE:_InfoMessage(text, duration)
|
function WAREHOUSE:_InfoMessage(text, duration)
|
||||||
duration=duration or 20
|
duration=duration or 20
|
||||||
if duration>0 then
|
if duration>0 then
|
||||||
@ -5408,10 +5555,10 @@ function WAREHOUSE:_InfoMessage(text, duration)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
--- Debug message.
|
--- Debug message. Message send to all if debug mode is activated (and duration > 0). Text self:T(text) added to DCS.log file.
|
||||||
-- @param #WAREHOUSE self
|
-- @param #WAREHOUSE self
|
||||||
-- @param #string text The text of the error message.
|
-- @param #string text The text of the error message.
|
||||||
-- @param #number duration Message display duration in seconds. Default 20 sec.
|
-- @param #number duration Message display duration in seconds. Default 20 sec. If duration is zero, no message is displayed.
|
||||||
function WAREHOUSE:_DebugMessage(text, duration)
|
function WAREHOUSE:_DebugMessage(text, duration)
|
||||||
duration=duration or 20
|
duration=duration or 20
|
||||||
if duration>0 then
|
if duration>0 then
|
||||||
@ -5420,14 +5567,14 @@ function WAREHOUSE:_DebugMessage(text, duration)
|
|||||||
self:T(self.wid..text)
|
self:T(self.wid..text)
|
||||||
end
|
end
|
||||||
|
|
||||||
--- Error message.
|
--- Error message. Message send to all (if duration > 0). Text self:E(text) added to DCS.log file.
|
||||||
-- @param #WAREHOUSE self
|
-- @param #WAREHOUSE self
|
||||||
-- @param #string text The text of the error message.
|
-- @param #string text The text of the error message.
|
||||||
-- @param #number duration Message display duration in seconds. Default 20 sec.
|
-- @param #number duration Message display duration in seconds. Default 20 sec. If duration is zero, no message is displayed.
|
||||||
function WAREHOUSE:_ErrorMessage(text, duration)
|
function WAREHOUSE:_ErrorMessage(text, duration)
|
||||||
duration=duration or 20
|
duration=duration or 20
|
||||||
if duration>0 then
|
if duration>0 then
|
||||||
MESSAGE:New(text, duration):ToAllIf(self.Debug)
|
MESSAGE:New(text, duration):ToAllIf()
|
||||||
end
|
end
|
||||||
self:E(self.wid..text)
|
self:E(self.wid..text)
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user