wip
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
|
||||
---@class PersistenceConfig
|
||||
---@field private _enabled boolean
|
||||
---@field private directory string?
|
||||
---@field private fileName string?
|
||||
local PersistenceConfig = {}
|
||||
|
||||
function PersistenceConfig.new()
|
||||
local self = setmetatable({}, { __index = PersistenceConfig })
|
||||
|
||||
if not SpearheadConfig then SpearheadConfig = {} end
|
||||
if not SpearheadConfig.Persistence then SpearheadConfig.Persistence = {} end
|
||||
self._enabled = SpearheadConfig.Persistence.enabled == true
|
||||
self.directory = SpearheadConfig.Persistence.directory
|
||||
self.fileName = SpearheadConfig.Persistence.fileName
|
||||
return self
|
||||
end
|
||||
|
||||
function PersistenceConfig:isEnabled()
|
||||
return self._enabled == true
|
||||
end
|
||||
|
||||
function PersistenceConfig:getDirectory()
|
||||
return self.directory
|
||||
end
|
||||
|
||||
function PersistenceConfig:getFileName()
|
||||
return self.fileName
|
||||
end
|
||||
|
||||
return PersistenceConfig
|
||||
@@ -0,0 +1,80 @@
|
||||
local Logger = require("classes.util.Logger")
|
||||
local Util = require("classes.util.Util")
|
||||
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
|
||||
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
|
||||
Reference in New Issue
Block a user