updates
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1491,6 +1491,47 @@ do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
do --COMMANDS
|
||||||
|
do -- status updates
|
||||||
|
|
||||||
|
local onStatusRequestReceivedListeners = {}
|
||||||
|
|
||||||
|
---comment
|
||||||
|
---@param listener table object with OnStatusRequestReceived(self, groupId)
|
||||||
|
SpearheadEvents.AddOnStatusRequestReceivedListener = function(listener)
|
||||||
|
if type(listener) ~= "table" then
|
||||||
|
SpearheadLogger:warn("Unit lost Event listener not of type table/object")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
table.insert(onStatusRequestReceivedListeners, listener)
|
||||||
|
end
|
||||||
|
|
||||||
|
local triggerStatusRequestReceived = function (groupId)
|
||||||
|
for _, callable in pairs(onStatusRequestReceivedListeners) do
|
||||||
|
local succ, err = pcall(function ()
|
||||||
|
callable:OnStatusRequestReceived(groupId)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
SpearheadEvents.AddCommandsToGroup = function(groupId)
|
||||||
|
|
||||||
|
local base = "MISSIONS"
|
||||||
|
if groupId then
|
||||||
|
missionCommands.addCommandForGroup(groupId, "Stage Status", {}, triggerStatusRequestReceived, groupId)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--Single player purpose
|
||||||
|
for i = 1, 2 do
|
||||||
|
for _, unit in pairs(coalition.getPlayers(i)) do
|
||||||
|
local groupId = unit:getGroup():getID()
|
||||||
|
SpearheadEvents.AddCommandsToGroup(groupId)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local e = {}
|
local e = {}
|
||||||
function e:onEvent(event)
|
function e:onEvent(event)
|
||||||
@@ -1529,6 +1570,12 @@ do
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if event.id == world.event.S_EVENT_PLAYER_ENTER_UNIT then
|
||||||
|
env.info("blaat player entering unit")
|
||||||
|
local groupId = event.initiator:getGroup():getID()
|
||||||
|
SpearheadEvents.AddCommandsToGroup(groupId)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
world.addEventHandler(e)
|
world.addEventHandler(e)
|
||||||
|
|||||||
+17
-10
@@ -298,7 +298,7 @@ do -- DB
|
|||||||
local baseId = tostring(airbase:getID())
|
local baseId = tostring(airbase:getID())
|
||||||
local point = airbase:getPoint()
|
local point = airbase:getPoint()
|
||||||
|
|
||||||
if isAirbaseInZone[tostring(baseId) or "something" ] == true then
|
if isAirbaseInZone[tostring(baseId) or "something" ] == true and airbase:getDesc().Category == Airbase.Category.AIRDROME then
|
||||||
o.tables.redAirbaseGroupsPerAirbase[baseId] = {}
|
o.tables.redAirbaseGroupsPerAirbase[baseId] = {}
|
||||||
o.tables.blueAirbaseGroupsPerAirbase[baseId] = {}
|
o.tables.blueAirbaseGroupsPerAirbase[baseId] = {}
|
||||||
local groups = Spearhead.DcsUtil.areGroupsInCustomZone(all_groups, { x = point.x, z = point.z, radius = 6600 })
|
local groups = Spearhead.DcsUtil.areGroupsInCustomZone(all_groups, { x = point.x, z = point.z, radius = 6600 })
|
||||||
@@ -309,8 +309,10 @@ do -- DB
|
|||||||
if object then
|
if object then
|
||||||
if object:getCoalition() == coalition.side.RED then
|
if object:getCoalition() == coalition.side.RED then
|
||||||
table.insert(o.tables.redAirbaseGroupsPerAirbase[baseId], groupName)
|
table.insert(o.tables.redAirbaseGroupsPerAirbase[baseId], groupName)
|
||||||
|
is_group_taken[groupName] = true
|
||||||
elseif object:getCoalition() == coalition.side.BLUE then
|
elseif object:getCoalition() == coalition.side.BLUE then
|
||||||
table.insert(o.tables.blueAirbaseGroupsPerAirbase[baseId], groupName)
|
table.insert(o.tables.blueAirbaseGroupsPerAirbase[baseId], groupName)
|
||||||
|
is_group_taken[groupName] = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@@ -330,25 +332,24 @@ do -- DB
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
o.tables.miscGroupsInStage = {}
|
o.tables.miscGroupsInStages = {}
|
||||||
local loadMiscGroupsInStage = function ()
|
local loadMiscGroupsInStages = function ()
|
||||||
local all_groups = getAvailableGroups()
|
local all_groups = getAvailableGroups()
|
||||||
for _, stage_zone in pairs(o.tables.stage_zones) do
|
for _, stage_zone in pairs(o.tables.stage_zones) do
|
||||||
o.tables.miscGroupsInStage[stage_zone] = {}
|
o.tables.miscGroupsInStages[stage_zone] = {}
|
||||||
local groups = Spearhead.DcsUtil.getGroupsInZone(all_groups, stage_zone)
|
local groups = Spearhead.DcsUtil.getGroupsInZone(all_groups, stage_zone)
|
||||||
for _, groupName in pairs(groups) do
|
for _, groupName in pairs(groups) do
|
||||||
|
|
||||||
if Spearhead.DcsUtil.IsGroupStatic(groupName) == true then
|
if Spearhead.DcsUtil.IsGroupStatic(groupName) == true then
|
||||||
local object = StaticObject.getByName(groupName)
|
local object = StaticObject.getByName(groupName)
|
||||||
if object and object:getCoalition() ~= coalition.side.NEUTRAL then
|
if object and object:getCoalition() ~= coalition.side.NEUTRAL then
|
||||||
is_group_taken[groupName] = true
|
is_group_taken[groupName] = true
|
||||||
table.insert(o.tables.miscGroupsInStage[stage_zone], groupName)
|
table.insert(o.tables.miscGroupsInStages[stage_zone], groupName)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
local group = Group.getByName(groupName)
|
local group = Group.getByName(groupName)
|
||||||
if group and group:getCoalition() ~= coalition.side.NEUTRAL then
|
if group and group:getCoalition() ~= coalition.side.NEUTRAL then
|
||||||
is_group_taken[groupName] = true
|
is_group_taken[groupName] = true
|
||||||
table.insert(o.tables.miscGroupsInStage[stage_zone], groupName)
|
table.insert(o.tables.miscGroupsInStages[stage_zone], groupName)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@@ -360,7 +361,9 @@ do -- DB
|
|||||||
loadRandomMissionzoneUnits()
|
loadRandomMissionzoneUnits()
|
||||||
loadFarpGroups()
|
loadFarpGroups()
|
||||||
loadAirbaseGroups()
|
loadAirbaseGroups()
|
||||||
loadMiscGroupsInStage()
|
loadMiscGroupsInStages()
|
||||||
|
|
||||||
|
Logger:debug(o.tables.miscGroupsInStages)
|
||||||
|
|
||||||
local cleanup = function () --CLean up all groups that are now managed inside zones by spearhead
|
local cleanup = function () --CLean up all groups that are now managed inside zones by spearhead
|
||||||
|
|
||||||
@@ -546,12 +549,16 @@ do -- DB
|
|||||||
|
|
||||||
o.getRedGroupsAtAirbase = function (self, airbaseId)
|
o.getRedGroupsAtAirbase = function (self, airbaseId)
|
||||||
local baseId = tostring(airbaseId)
|
local baseId = tostring(airbaseId)
|
||||||
return self.tables.redAirbaseGroupsPerAirbase[baseId]
|
return self.tables.redAirbaseGroupsPerAirbase[baseId] or {}
|
||||||
end
|
end
|
||||||
|
|
||||||
o.getBlueGroupsAtAirbase = function (self, airbaseId)
|
o.getBlueGroupsAtAirbase = function (self, airbaseId)
|
||||||
local baseId = tostring(airbaseId)
|
local baseId = tostring(airbaseId)
|
||||||
return self.tables.blueAirbaseGroupsPerAirbase[baseId]
|
return self.tables.blueAirbaseGroupsPerAirbase[baseId] or {}
|
||||||
|
end
|
||||||
|
|
||||||
|
o.getMiscGroupsAtStage = function(self, stageName)
|
||||||
|
return self.tables.miscGroupsInStages[stageName] or {}
|
||||||
end
|
end
|
||||||
|
|
||||||
o.GetNewMissionCode = function (self)
|
o.GetNewMissionCode = function (self)
|
||||||
|
|||||||
+26
-3
@@ -27,7 +27,7 @@ do --init STAGE DIRECTOR
|
|||||||
|
|
||||||
o.stageNumber = orderNumber
|
o.stageNumber = orderNumber
|
||||||
o.database = database
|
o.database = database
|
||||||
|
o.logger = logger
|
||||||
o.db = {}
|
o.db = {}
|
||||||
o.db.missions = {}
|
o.db.missions = {}
|
||||||
o.db.sams = {}
|
o.db.sams = {}
|
||||||
@@ -35,6 +35,7 @@ do --init STAGE DIRECTOR
|
|||||||
o.db.blueAirbasegroups = {}
|
o.db.blueAirbasegroups = {}
|
||||||
o.db.airbaseIds = {}
|
o.db.airbaseIds = {}
|
||||||
o.db.farps = {}
|
o.db.farps = {}
|
||||||
|
o.activeStage = 0
|
||||||
o.preActivated = false
|
o.preActivated = false
|
||||||
|
|
||||||
do --Init Stage
|
do --Init Stage
|
||||||
@@ -82,7 +83,6 @@ do --init STAGE DIRECTOR
|
|||||||
for _, airbaseId in pairs(airbaseIds) do
|
for _, airbaseId in pairs(airbaseIds) do
|
||||||
|
|
||||||
for _, groupName in pairs(database:getRedGroupsAtAirbase(airbaseId)) do
|
for _, groupName in pairs(database:getRedGroupsAtAirbase(airbaseId)) do
|
||||||
logger:debug("blaat)")
|
|
||||||
table.insert(o.db.redAirbasegroups, groupName)
|
table.insert(o.db.redAirbasegroups, groupName)
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -117,7 +117,7 @@ do --init STAGE DIRECTOR
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
logger:debug("blaat Pre-activating stage with airbase groups amount: " .. Spearhead.Util.tableLength(self.db.redAirbasegroups))
|
self.logger:debug("Pre-activating stage with airbase groups amount: " .. Spearhead.Util.tableLength(self.db.redAirbasegroups))
|
||||||
|
|
||||||
for _ , groupName in pairs(self.db.redAirbasegroups) do
|
for _ , groupName in pairs(self.db.redAirbasegroups) do
|
||||||
Spearhead.DcsUtil.SpawnGroupTemplate(groupName)
|
Spearhead.DcsUtil.SpawnGroupTemplate(groupName)
|
||||||
@@ -129,6 +129,18 @@ do --init STAGE DIRECTOR
|
|||||||
self:PreActivate()
|
self:PreActivate()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local miscGroups = self.database:getMiscGroupsAtStage(self.zoneName)
|
||||||
|
self.logger:debug("Activating Misc groups for zone: " .. Spearhead.Util.tableLength(miscGroups))
|
||||||
|
for _, groupName in pairs(miscGroups) do
|
||||||
|
Spearhead.DcsUtil.SpawnGroupTemplate(groupName)
|
||||||
|
end
|
||||||
|
|
||||||
|
for _, mission in pairs(self.db.missions) do
|
||||||
|
if mission.missionType == Spearhead.internal.Mission.MissionType.DEAD then
|
||||||
|
mission:Activate()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
--[[
|
--[[
|
||||||
TODO: Activate Stage
|
TODO: Activate Stage
|
||||||
]]--
|
]]--
|
||||||
@@ -221,7 +233,18 @@ do --init STAGE DIRECTOR
|
|||||||
o.ManageStage = function(self)
|
o.ManageStage = function(self)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
o.OnStatusRequestReceived = function(self, groupId)
|
||||||
|
trigger.action.outTextForGroup("Status Update incoming... ")
|
||||||
|
end
|
||||||
|
|
||||||
o.OnStageNumberChanged = function (self, number)
|
o.OnStageNumberChanged = function (self, number)
|
||||||
|
|
||||||
|
if self.activeStage == number then --only activate once for a stage
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
self.activeStage = number
|
||||||
|
|
||||||
if Spearhead.capInfo.IsCapActiveWhenZoneIsActive(self.zoneName, number) == true then
|
if Spearhead.capInfo.IsCapActiveWhenZoneIsActive(self.zoneName, number) == true then
|
||||||
self:PreActivate()
|
self:PreActivate()
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user