79 lines
2.7 KiB
Lua
79 lines
2.7 KiB
Lua
local Logger = require("classes.util.Logger")
|
|
local StageRepository = require("classes.stageClasses.StageRepository")
|
|
|
|
---@class DebugMenu
|
|
---@field private _logger Logger
|
|
---@field private _stageRepository StageRepository
|
|
local DebugMenu = {}
|
|
DebugMenu.__index = DebugMenu
|
|
|
|
function DebugMenu.new()
|
|
local self = setmetatable({}, DebugMenu)
|
|
self._logger = Logger.new("DebugMenu")
|
|
self._stageRepository = StageRepository.getInstance()
|
|
return self
|
|
end
|
|
|
|
local menuName = "Spearhead Debug"
|
|
local debugMenuPath = { [1] = menuName }
|
|
function DebugMenu:RegisterMenus()
|
|
|
|
missionCommands.addSubMenu(menuName, {})
|
|
|
|
local refresh = function(params)
|
|
local selfA = params.self --[[@as DebugMenu]]
|
|
selfA:RefreshMenu()
|
|
end
|
|
missionCommands.addCommand("Refresh Menu", debugMenuPath, refresh, { self = self })
|
|
|
|
self:AddStageOptions()
|
|
|
|
end
|
|
|
|
function DebugMenu:RefreshMenu()
|
|
|
|
missionCommands.removeItem(debugMenuPath)
|
|
self:RegisterMenus()
|
|
end
|
|
|
|
function DebugMenu:AddStageOptions()
|
|
local stageMenuTable = missionCommands.addSubMenu("Stages", debugMenuPath)
|
|
|
|
local stageLanes = self._stageRepository:getAllStageLanes()
|
|
for _, stageLane in pairs(stageLanes) do
|
|
|
|
local stages = stageLane:GetStagesAtIndex(stageLane:GetActiveStageIndex())
|
|
if stages then
|
|
for _, stage in pairs(stages) do
|
|
local stageLaneId = stageLane:GetStageLaneIdentifier() or ""
|
|
local stageIndex = stage:GetStageIndex()
|
|
local stageName = stage:GetStageName()
|
|
|
|
local stageMenuName = stageLaneId .. stageIndex .. "_" .. stageName
|
|
local currentStageMenuTable = missionCommands.addSubMenu(stageMenuName, stageMenuTable)
|
|
|
|
---@class CompleteStageParams
|
|
---@field self DebugMenu
|
|
---@field stage Stage
|
|
|
|
---@param params CompleteStageParams
|
|
local completeStage = function(params)
|
|
local stageA = params.stage
|
|
local missions = stageA:GetMissions()
|
|
for _, mission in pairs(missions) do
|
|
mission:ForceMissionComplete()
|
|
end
|
|
end
|
|
|
|
---@type CompleteStageParams
|
|
local params = { self = self, stage = stage }
|
|
missionCommands.addCommand("Complete Stage", currentStageMenuTable, completeStage, params)
|
|
|
|
end
|
|
else
|
|
self._logger:info("No stages found for lane: " .. (stageLane:GetStageLaneIdentifier() or "default") .. " at index: " .. (stageLane:GetActiveStageIndex() or "nil"))
|
|
end
|
|
end
|
|
end
|
|
|
|
return DebugMenu |