bayuMIR/client/dev/GUILayout/game/A/FuLiDaTingOBJ.lua

137 lines
4.4 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

FuLiDaTingOBJ = Up_BaseClassOBJ:new()
FuLiDaTingOBJ.__cname = "FuLiDaTingOBJ"
-- 配置文件
FuLiDaTingOBJ.cfg = {}
FuLiDaTingOBJ.UIfile = "game/A/FuLiDaTingUI"
FuLiDaTingOBJ.branch = {
[1] = function(parent, data)
WangZheTeQuanOBJ:main(parent, data)
return WangZheTeQuanOBJ
end,
[2] = function(parent, data)
MeiRiChongZhiOBJ:main(parent, data)
return MeiRiChongZhiOBJ
end,
[3] = function(parent, data)
MeiriXianGouOBJ:main(parent, data)
return MeiriXianGouOBJ
end,
[4] = function(parent, data)
ZBHuiShouOBJ:main(parent, data)
return ZBHuiShouOBJ
end,
[5] = function(parent, data)
ZBShouBaoOBJ:main(parent, data)
return ZBShouBaoOBJ
end,
[6] = function(parent, data)
BOSSshouShaOBJ:main(parent, data)
return BOSSshouShaOBJ
end,
[7] = function(parent, data)
ChengZhangJiJinOBJ:main(parent, data)
return ChengZhangJiJinOBJ
end,
[8] = function(parent, data)
LeiChongJiangLiOBJ:main(parent, data)
return LeiChongJiangLiOBJ
end,
}
function FuLiDaTingOBJ:updata()
self.id = self.id or 1
GUI:ListView_removeAllItems(self.ui.btn_ListView)
for i, v in ipairs(self.cfg or {}) do
local function addbtn()
local class_btn = string.format("class_btn_%d", i)
self.ui[class_btn] = GUI:Button_Create(self.ui.btn_ListView, class_btn, 0.00, 0.00,
string.format("res/custom/01/btn/%s.png", self.id == i and tostring(i) or i .. "a"))
GUI:addOnClickEvent(self.ui[class_btn], function()
GUI:Button_loadTextureNormal(self.ui["class_btn_" .. self.id],
string.format("res/custom/01/btn/%s.png", self.id .. "a"))
GUI:Button_loadTextureNormal(self.ui[class_btn], string.format("res/custom/01/btn/%d.png", i))
self.id = i
self:addpage()
end)
end
addbtn()
end
self:addpage()
--左侧按钮重建后通知红点系统重新挂点
if RedDotMgr and RedDotMgr.refreshChildren then
RedDotMgr:refreshChildren("TopIcon_FuLi")
end
end
function FuLiDaTingOBJ:addpage()
if not self.id then
return
end
if self.branch[self.id] then
local func = self.branch[self.id]
if func then
if self.curPageObj and self.curPageObj.OnPageHide then
self.curPageObj:OnPageHide()
end
self.curPageObj = nil
GUI:removeAllChildren(self.ui.Content_Node)
self.curPageObj = func(self.ui.Content_Node, self.cfg[self.id] and self.cfg[self.id] or nil)
end
end
end
--红点逻辑已统一迁移到 RedDotMgr
-- * 顶部福利图标TopIcon_FuLi作为聚合点由 CreateTopIconOBJ 自动注册
-- * 各子页面在自己的文件末尾通过 RedDotMgr:register("FuLi_xxx", {...}) 注册条件
-- * 子页面状态变化会自动向上传播让顶部图标亮/灭
------------------------注册事件------------------------
function FuLiDaTingOBJ:EventBind()
local function FuLiDaTingOBJ_titleReload(data)
if data.oper == 2 then
if GUI:Win_IsNotNull(self._parent) then
self:updata()
end
end
end
SL:RegisterLUAEvent(LUA_EVENT_TITLE_REFRESH, self.__cname, FuLiDaTingOBJ_titleReload)
--关闭窗口
SL:RegisterLUAEvent(LUA_EVENT_CLOSEWIN, self.__cname, function(widgetName)
self:OnClose(widgetName)
end)
end
--关闭窗口
function FuLiDaTingOBJ:OnClose(widgetName)
if widgetName == self.__cname then
self:UnRegisterEvent()
end
end
function FuLiDaTingOBJ:UnRegisterEvent()
if self.curPageObj and self.curPageObj.OnPageHide then
self.curPageObj:OnPageHide()
end
self.curPageObj = nil
SL:UnRegisterLUAEvent(LUA_EVENT_TITLE_REFRESH, self.__cname)
SL:UnRegisterLUAEvent(LUA_EVENT_CLOSEWIN, self.__cname)
end
--热重载残留清理:旧版本曾用 "fulidating" 这个 key 注册过 3 个全局事件,闭包里仍引用已删除的 redVar/reddot
--不清理会在服务器变量变化/等级变化时报 attempt to index field 'redVar'
if SL and SL.UnRegisterLUAEvent then
SL:UnRegisterLUAEvent(LUA_EVENT_SERVER_VALUE_CHANGE, "fulidating")
SL:UnRegisterLUAEvent(LUA_EVENT_LEVEL_CHANGE, "fulidating")
SL:UnRegisterLUAEvent(LUA_EVENT_REINLEVEL_CHANGE, "fulidating")
end
return FuLiDaTingOBJ