bayuMIR/client/dev/GUILayout/GUIUtil.lua
2026-06-23 01:08:46 +08:00

118 lines
3.6 KiB
Lua

---@diagnostic disable: lowercase-global, missing-parameter
function SLMainError(errinfo)
if errinfo then
SL:Print("--------------------error-----------------------")
SL:Print("--------------------error-----------------------")
SL:Print("--------------------error-----------------------")
SL:Print("--------------------error-----------------------")
SL:Print(errinfo)
SL:Print("--------------------error-------------------------")
SL:Print("--------------------error-------------------------")
SL:Print("--------------------error-------------------------")
SL:Print("--------------------error-------------------------")
end
end
local function init()
-- 全局方法
SL:Require("GUILayout/ssrgame/util/logger", true)
SL:Require("GUILayout/ssrgame/util/uiEx", true)
SL:Require("GUILayout/ssrgame/util/util", true)
hk = SL:Require("GUILayout/ssrgame/util/hk", true)
-- 配置
ssrConstCfg = SL:Require("GUILayout/ssrgame/cfg/ConstCfg", true)
SL:Require("GUILayout/ssrgame/cfg/ConstCfg", true)
-- 事件
ssrEventCfg = SL:Require("GUILayout/ssrgame/cfg/EventCfg", true)
ssrGameEvent = SL:Require("GUILayout/ssrgame/ui/GameEvent", true)
-- 网络
ssrNetMsgCfg = SL:Require("GUILayout/ssrgame/net/NetMsgCfg", true)
ssrMessage = SL:Require("GUILayout/ssrgame/net/Message", true)
-- UI
ssrUIManager = SL:Require("GUILayout/ssrgame/ui/UIManager", true)
-- 加载功能模块
ssrUIManager:INIT()
end
local result, errinfo = pcall(init)
if not result then
SLMainError(errinfo)
end
-- 小退释放
SL:RegisterLUAEvent(LUA_EVENT_LEAVE_WORLD, "GUIUtil", function()
SL:Print("-小退释放缓存-")
for k, _ in pairs(package.loaded) do
if string.find(k, "GUILayout") then
package.loaded[k] = nil
_G[k] = nil
end
end
end)
-- ctrl+tab 刷新前端 不需要小退
local listener = cc.EventListenerKeyboard:create()
local eventDispatcher = cc.Director:getInstance():getEventDispatcher()
local keycodeFunc = { {
-- reload lua files
keycode = { cc.KeyCode.KEY_CTRL, cc.KeyCode.KEY_TAB },
func = function()
eventDispatcher:removeEventListener(listener)
SL:SetLocalString("HuiShou", SL:JsonEncode(HuiShouOBJ.LocalStr))
-- 同步数据
ssrMessage:sendmsg(ssrNetMsgCfg.sync)
SL:Print("刷新前端")
-- 关闭ui
GUI:Win_CloseAll()
-- 清理lua加载缓存
for k, _ in pairs(package.loaded) do
if string.find(k, "^ssr/ssrgame/") or string.find(k, "GUILayout") then
package.loaded[k] = nil
_G[k] = nil
end
end
-- 重新启动
SL:Require("GUILayout/GUIUtil", true)
end
} }
local inputKeyCode = {}
local function compareKeyCode(k1, k2) return (table.concat(k1, "+") == table.concat(k2, "+")) end
local function calcEvent()
for _, v in ipairs(keycodeFunc) do
if compareKeyCode(inputKeyCode, v.keycode) then
v.func()
break
end
end
end
local function pressed_callback(keycode, evt)
table.insert(inputKeyCode, keycode)
calcEvent()
end
local function released_callback(keycode, evt)
for k, v in pairs(inputKeyCode) do
if v == keycode then
table.remove(inputKeyCode, k)
end
end
end
listener:registerScriptHandler(pressed_callback, cc.Handler.EVENT_KEYBOARD_PRESSED)
listener:registerScriptHandler(released_callback, cc.Handler.EVENT_KEYBOARD_RELEASED)
eventDispatcher:addEventListenerWithFixedPriority(listener, 1)