bayuMIR/client/dev/GUILayout/public/Up_BaseClassOBJ.lua
2026-06-12 02:32:15 +08:00

221 lines
6.6 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.

Up_BaseClassOBJ = {}
-- 基类类型
Up_BaseClassOBJ.__index = Up_BaseClassOBJ
Up_BaseClassOBJ.__cname = "Up_BaseClassOBJ"
Up_BaseClassOBJ.xh = {}
Up_BaseClassOBJ.obj = {}
Up_BaseClassOBJ.UIfile = nil
Up_BaseClassOBJ.npcid = nil
---* 窗口创建
function Up_BaseClassOBJ:main(arg1, arg2, arg3, data)
local parent = GUI:Win_Create(self.__cname, 0, 0, 0, 0, false, false, true, false)
if data and data.npcid then
GUI:Win_BindNPC(parent, data.npcid)
self.npcid = data.npcid
end
if not self.UIfile then
return
end
if type(self.UIfile) == "table" then
GUI:LoadExport(parent, self.UIfile[data.npcid])
else
GUI:LoadExport(parent, self.UIfile)
end
self._parent = parent
self.ui = GUI:ui_delegate(parent)
--- 窗口初始化居中与动作
ssrUIManager:OpenAlgin(self)
--背景图关闭
GUI:addOnClickEvent(self.ui.bg_close, function()
GUI:Win_Close(self._parent)
end)
--关闭按钮背景板关闭
GUI:addOnClickEvent(self.ui.btn_close, function()
GUI:Win_Close(self._parent)
end)
---* 绑定事件
self:EventBind()
if data and data.cfg then
self.cfg = data.cfg
end
if data and data.other then
self.other = data.other
end
self.id = 1
if self.leftBtnImg and GUI:Win_IsNotNull(self.ui.Listbtn_ListView) then
self:initListBtn()
else
self:updata()
end
--模块内存数据self.cfg / self.other已填充且 updata 跑过一次,通知红点系统重算本模块名下的所有红点
--避免业务层在每个 updata 末尾重复写 RedDotMgr:refresh 兑底
if RedDotMgr and RedDotMgr.refreshByOwner then
RedDotMgr:refreshByOwner(self.__cname)
end
end
---* 初始化左侧按钮列表
function Up_BaseClassOBJ:initListBtn()
self.id = self.id or 1
local listview = self.ui.Listbtn_ListView
local imgDir = self.leftBtnImg
GUI:ListView_removeAllItems(listview)
for i = 1, self.leftNum do
local btnKey = string.format("list_btn_%d", i)
local isSelected = (self.id == i)
self.ui[btnKey] = GUI:Button_Create(listview, btnKey, 0, 0,
string.format("%s/%s.png", imgDir, isSelected and (i .. "a") or tostring(i)))
GUI:addOnClickEvent(self.ui[btnKey], function()
if self.id == i then return end --重复点击不刷新
local oldId = self.id
self.id = i
--还原旧选中按钮为普通态(只换 normal 贴图)
GUI:Button_loadTextures(self.ui[string.format("list_btn_%d", oldId)],
string.format("%s/%s.png", imgDir, oldId), "", "", 0)
--设置新按钮为选中态(只换 normal 贴图)
GUI:Button_loadTextures(self.ui[btnKey],
string.format("%s/%s.png", imgDir, i .. "a"), "", "", 0)
self:updata()
end)
end
self:updata()
end
----* 设置消耗展示
function Up_BaseClassOBJ:seIitemShow(sclae,interval)
---* 绑定事件
self:Up_EventBind()
if GUI:Win_IsNull(self.ui.xh_Layout) then
return false
end
if not self.xh then
return
end
GUI:removeAllChildren(self.ui.xh_Layout)
hk.SettingXhShow(self.ui, self.ui.xh_Layout, self.xh, nil, nil, nil, 0, nil, self.xh_interval or 20, self.xh_scale or 1, true)
end
---* 设置属性在控件中展示
function Up_BaseClassOBJ:setAttrShow(itemName, parent, fontsize)
local _index = SL:Get_ITEM_INDEX_BY_NAME(itemName)
local titleData = SL:Get_ITEM_DATA(_index)
local attr = hk.getequipAttribute(titleData.Attribute)
if attr then
GUI:ListView_removeAllItems(parent)
for i, v in ipairs(attr or {}) do
local list = string.format("list_att_%d", i)
self.ui[list] = GUI:RichTextFCOLOR_Create(parent, list, 100, 0, v, 600, fontsize and fontsize or 12,
"#28EF01", 5)
end
end
end
----* 设置奖励展示
function Up_BaseClassOBJ:setgiveItem()
if GUI:Win_IsNull(self.ui.give_Layout) then
return false
end
if not self.give then
return
end
GUI:removeAllChildren(self.ui.give_Layout)
hk.SettingXhShow(self.ui, self.ui.give_Layout, self.give, nil, nil, nil, 0, nil, 20, nil, false)
end
---* 设置掉落展示
function Up_BaseClassOBJ:setDropShow(sclae, gap)
if not self.drop then
return
end
if GUI:Win_IsNotNull(self.ui.drop_Layout) then
GUI:removeAllChildren(self.ui.drop_Layout)
hk.SettingXhShow(self.ui, self.ui.drop_Layout, self.drop, nil, nil, nil, 0, nil, gap and gap or 20,
sclae and sclae or nil, false)
else
for i, v in ipairs(self.drop) do
local parent = string.format("drop_item_%d", i)
if GUI:Win_IsNotNull(self.ui[parent]) then
hk.reloadItemShow(self.ui[parent], v, 1)
end
end
end
end
---* 播放屏幕特效
function Up_BaseClassOBJ:screffects(id)
if GUI:Win_IsNotNull(self.ui.screffect) then
GUI:removeFromParent(self.ui.screffect)
end
local bg_size = GUI:getContentSize(self.ui.img_bg)
self.ui.screffect = GUI:Effect_Create(self.ui.img_bg, "screffect", 300, 450, 0, id, 0, 0,
0, 1)
-- GUI:setAnchorPoint(self.ui.screffect, 0.50, 0.50)
GUI:Effect_addOnCompleteEvent(self.ui.screffect, function()
GUI:removeFromParent(self.ui.screffect)
end)
end
function Up_BaseClassOBJ:new()
local instance = {}
setmetatable(instance, self)
return instance
end
---* 注册事件
function Up_BaseClassOBJ:Up_EventBind()
---* 背包 和 货币 物品变化
local function Up_BaseClassOBJ_REINLEVELCHANGE(data)
if GUI:Win_IsNotNull(self._parent) then
self:seIitemShow()
end
end
SL:RegisterLUAEvent(LUA_EVENT_BAG_ITEM_CHANGE, self.__cname, Up_BaseClassOBJ_REINLEVELCHANGE)
SL:RegisterLUAEvent(LUA_EVENT_MONEY_CHANGE, self.__cname, Up_BaseClassOBJ_REINLEVELCHANGE)
--关闭窗口
SL:RegisterLUAEvent(LUA_EVENT_CLOSEWIN, self.__cname .. "UP", function(widgetName)
self:UP_OnClose(widgetName)
end)
end
--关闭窗口
function Up_BaseClassOBJ:UP_OnClose(widgetName)
if widgetName == self.__cname then
self:UP_UnRegisterEvent()
end
end
function Up_BaseClassOBJ:UP_UnRegisterEvent()
SL:UnRegisterLUAEvent(LUA_EVENT_BAG_ITEM_CHANGE, self.__cname)
SL:UnRegisterLUAEvent(LUA_EVENT_MONEY_CHANGE, self.__cname)
SL:UnRegisterLUAEvent(LUA_EVENT_PLAYER_EQUIP_CHANGE, self.__cname)
SL:UnRegisterLUAEvent(LUA_EVENT_SERVER_VALUE_CHANGE, self.__cname)
SL:UnRegisterLUAEvent(LUA_EVENT_CLOSEWIN, self.__cname .. "UP")
end
return Up_BaseClassOBJ