Files
Endfield-Data/LuaScripts/UI/Panels/Debug/DebugModel.lua
2025-12-02 20:37:18 +07:00

97 lines
2.5 KiB
Lua

local uiModel = require_ex('UI/Panels/Base/UIModel')
local GmCommandManager = CS.Beyond.GmCommandManager.instance
local LuaGmCommand = CS.Beyond.LuaGmCommand
DebugModel = HL.Class('DebugModel', uiModel.UIModel)
DebugModel.m_cmds = HL.Field(HL.Table)
DebugModel.InitModel = HL.Override() << function(self)
self.m_cmds = {}
self:_RegisterDebugCommands()
end
DebugModel._RegisterCommand = HL.Method(HL.String, HL.String, HL.String, HL.Function, HL.Table, HL.Table, HL.String, HL.String, HL.String)
<< function(self, category, name, alias, func, args, defaultValues, friendlyName, tip, params)
local command = LuaGmCommand(category, name, alias, func, args, defaultValues, friendlyName, tip, params)
table.insert(self.m_cmds, command)
GmCommandManager:RegisterCommand(command)
end
DebugModel._RegisterDebugCommands = HL.Method() << function(self)
local debugCmdConfig
if BEYOND_DEBUG_COMMAND then
debugCmdConfig = require_ex('Debug/DebugCommandConfigs')
end
if not debugCmdConfig then
return
end
local cmdCfgs = debugCmdConfig
for category, cmdList in pairs(cmdCfgs) do
for _, cfg in ipairs(cmdList) do
local cmdName = cfg.cmdName or ""
local cmdNameAlias = cfg.cmdNameAlias or ""
local friendlyName = cfg.btnName or ""
local tip = cfg.tip or ""
local args = {}
local defaultValues = {}
local methodParams
if cfg.args then
for i, arg in ipairs(cfg.args) do
table.insert(args, arg.name)
table.insert(defaultValues, arg.default or "")
if arg.params ~= nil then
if methodParams == nil then
methodParams = {}
end
methodParams[CSIndex(i)] = arg.params
end
end
end
local params = ""
if methodParams ~= nil then
local json = require("Common/Tools/json")
params = json.encode(methodParams)
end
self:_RegisterCommand(category, cmdName, cmdNameAlias, cfg.cmdFunc, args, defaultValues, friendlyName, tip, params)
end
end
end
DebugModel.OnClose = HL.Override() << function(self)
for _, v in ipairs(self.m_cmds) do
GmCommandManager:UnRegisterCommand(v)
v:Release()
end
self.m_cmds = {}
end
HL.Commit(DebugModel)