also checking random zones now

This commit is contained in:
2025-05-10 23:03:53 +02:00
parent 790e033caf
commit 5b6ea49217
+48 -40
View File
@@ -166,62 +166,36 @@ function Database.New(Logger)
self._logger:debug("initiated zone tables, continuing with descriptions") self._logger:debug("initiated zone tables, continuing with descriptions")
do --load markers do --load markers
if env.mission.drawings and env.mission.drawings.layers then if env.mission.drawings and env.mission.drawings.layers then
for i, layer in pairs(env.mission.drawings.layers) do for i, layer in pairs(env.mission.drawings.layers) do
if string.lower(layer.name) == "author" then if string.lower(layer.name) == "author" then
for key, layer_object in pairs(layer.objects) do for key, layer_object in pairs(layer.objects) do
if Spearhead.Util.startswith(string.lower(layer_object.name), "completeat", true) == true then if Spearhead.Util.startswith(string.lower(layer_object.name), "completeat", true) == true then
for _, zonename in pairs(self._tables.MissionZones) do
if Spearhead.DcsUtil.isPositionInZone(layer_object.mapX, layer_object.mapY, zonename) == true then
if self._tables.MissionAnnotations[zonename] == nil then
self._tables.MissionAnnotations[zonename] = {
description = nil,
dependsOn = {}
}
end
local missionAnnotation = self._tables.MissionAnnotations[zonename] local annotationData = self:getMissionMetaDataForDrawLayer(layer_object)
local number = tonumber(layer_object.text) if annotationData then
local number = tonumber(layer_object.text)
if number and number > 1 then
number = number / 100
if number and number > 1 then
number = number / 100
end
missionAnnotation.completeAt = number
end end
annotationData.completeAt = number
end end
elseif Spearhead.Util.startswith(string.lower(layer_object.name), "dependson", true) == true then elseif Spearhead.Util.startswith(string.lower(layer_object.name), "dependson", true) == true then
local annotationData = self:getMissionMetaDataForDrawLayer(layer_object)
for _, zonename in pairs(self._tables.MissionZones) do if annotationData then
if Spearhead.DcsUtil.isPositionInZone(layer_object.mapX, layer_object.mapY, zonename) == true then table.insert(annotationData.dependsOn, layer_object.text)
if self._tables.MissionAnnotations[zonename] == nil then
self._tables.MissionAnnotations[zonename] = {
description = nil,
dependsOn = {}
}
end
for _, splitDependency in pairs(Spearhead.Util.split_string(layer_object.text, ",")) do
table.insert(self._tables.MissionAnnotations[zonename].dependsOn, splitDependency)
end
end
end end
elseif Spearhead.Util.startswith(layer_object.name, "stagebriefing", true) == true then elseif Spearhead.Util.startswith(layer_object.name, "stagebriefing", true) == true then
--[[ --[[
TODO: Stage Briefings TODO: Stage Briefings
]] ]]
else else
for _, zonename in pairs(self._tables.MissionZones) do local annotationData = self:getMissionMetaDataForDrawLayer(layer_object)
if Spearhead.DcsUtil.isPositionInZone(layer_object.mapX, layer_object.mapY, zonename) == true then if annotationData then
if self._tables.MissionAnnotations[zonename] == nil then annotationData.description = layer_object.text
self._tables.MissionAnnotations[zonename] = {
description = "",
dependsOn = {}
}
end
local missionAnnotation = self._tables.MissionAnnotations[zonename]
missionAnnotation.description = layer_object.text
end
end end
end end
end end
@@ -443,6 +417,40 @@ function Database:initAvailableUnits()
end end
end end
---@private
---@param layer_object table
---@return MissionAnnotations?
function Database:getMissionMetaDataForDrawLayer(layer_object)
for _, zonename in pairs(self._tables.MissionZones) do
if Spearhead.DcsUtil.isPositionInZone(layer_object.mapX, layer_object.mapY, zonename) == true then
if self._tables.MissionAnnotations[zonename] == nil then
self._tables.MissionAnnotations[zonename] = {
description = nil,
dependsOn = {}
}
end
return self._tables.MissionAnnotations[zonename]
end
end
for _, zonename in pairs(self._tables.RandomMissionZones) do
if Spearhead.DcsUtil.isPositionInZone(layer_object.mapX, layer_object.mapY, zonename) == true then
if self._tables.MissionAnnotations[zonename] == nil then
self._tables.MissionAnnotations[zonename] = {
description = nil,
dependsOn = {}
}
end
return self._tables.MissionAnnotations[zonename]
end
end
return nil
end
---@private ---@private
function Database:loadCapUnits() function Database:loadCapUnits()
local all_groups = getAvailableCAPGroups() local all_groups = getAvailableCAPGroups()