---@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)