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