118 lines
3.6 KiB
Lua
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)
|