bayuMIR/client/dev/GUILayout/game/A/ZhuangBeiLianHuaOBJ.lua
2026-06-12 02:32:15 +08:00

263 lines
8.1 KiB
Lua

ZhuangBeiLianHuaOBJ = {}
ZhuangBeiLianHuaOBJ.__cname = "ZhuangBeiLianHuaOBJ"
-- 配置文件
ZhuangBeiLianHuaOBJ.cfg = {}
ZhuangBeiLianHuaOBJ.lock = {
[1] = false,
[2] = false,
[3] = false,
}
ZhuangBeiLianHuaOBJ.select_effect = { 50571, 50567, 50569 }
function ZhuangBeiLianHuaOBJ: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)
end
GUI:LoadExport(parent, "game/A/ZhuangBeiLianHuaUI")
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
self:updata()
end
function ZhuangBeiLianHuaOBJ:updata()
self.id = self.id or 4
local item = GUI:getChildren(self.ui.w_Layout)
GUI:setVisible(self.ui.w_Layout, true)
for i, v in ipairs(item) do
local item_name = GUI:getName(v)
local where = tonumber(SL:Split(item_name, "_")[2])
local equipData = SL:Get_EQUIP_DATA(where)
if equipData then
GUI:setVisible(v, true)
hk.reloadItemShow(v, equipData.Name, 1, equipData)
GUI:ItemShow_setItemShowChooseState(v, self.id == where and true or false)
GUI:ItemShow_addReplaceClickEvent(v, function()
GUI:ItemShow_setItemShowChooseState(self.ui["Item_" .. self.id], false)
GUI:ItemShow_setItemShowChooseState(v, true)
self.id = where
self:show()
end)
else
GUI:setVisible(v, false)
end
end
self:show()
end
function ZhuangBeiLianHuaOBJ:show()
self.lock = {
[1] = false,
[2] = false,
[3] = false,
}
local equipData = SL:Get_EQUIP_DATA(self.id)
if equipData then
GUI:setVisible(self.ui.sel_Item, true)
hk.reloadItemShow(self.ui.sel_Item, equipData.Name, 1, equipData)
self.Data = equipData
self:DataShow(equipData.DiyAdv)
self:setxh()
local up_data = {
w = self.id,
lock = self.lock
}
GUI:addOnClickEvent(self.ui.Up_btn, function()
ssrMessage:SubLink("ZhuangBeiLianHuaOBJ_up", up_data)
end)
else
GUI:setVisible(self.ui.sel_Item, false)
end
end
function ZhuangBeiLianHuaOBJ:DataShow(data)
GUI:ListView_removeAllItems(self.ui.ct_ListView)
---* 设置选择部位特效边框
if GUI:Win_IsNotNull(self.ui.select_effect) then
GUI:removeFromParent(self.ui.select_effect)
end
-- local Lh_data = {}
local LH_attStr = {}
for k, v in pairs(data) do
if v.Type >= 1 and v.Type <= 3 then
LH_attStr[v.Type] = (LH_attStr[v.Type] and LH_attStr[v.Type] .. "|" or "") ..
string.format("%d#%d#%d", v.Job, v.Idx, v.Value)
end
end
if #LH_attStr > 0 then
local LH_attStrList = {}
for i, v in ipairs(LH_attStr) do
table.insert(LH_attStrList, hk.getequipAttribute(v)[1])
end
if #LH_attStrList > 0 then
self.ui.select_effect = GUI:Effect_Create(self.ui["Item_" .. self.id], "select_effect", 31.00, 32.00, 0,
self.select_effect[#LH_attStrList], 0, 0, 0, 1)
for i, v in ipairs(LH_attStrList or {}) do
local list_Layout = GUI:Layout_Create(self.ui.ct_ListView, "list_Layout" .. i, 0.00, 70.00, 210.00, 30.00,
false)
local list_str = GUI:RichTextFCOLOR_Create(list_Layout, "list_str" .. i, 0, 15, v, 210, 16, "#28EF01", 5)
GUI:setAnchorPoint(list_str, 0, 0.50)
local list_lock = GUI:Button_Create(list_Layout, "list_lock" .. i, 186.00, 15.00,
string.format("res/custom/03/%d.png", self.lock[i] and 4 or 5))
GUI:setAnchorPoint(list_lock, 0.00, 0.50)
--设置属性锁
GUI:addOnClickEvent(list_lock, function()
if self.lock[i] then
self.lock[i] = not self.lock[i]
GUI:Button_loadTextureNormal(list_lock,
string.format("res/custom/03/%d.png", self.lock[i] and 4 or 5))
self:setxh()
else
local _lock = 0
for _, lock_state in ipairs(self.lock) do
if lock_state then
_lock = _lock + 1
end
end
if _lock < #self.lock - 1 then
self.lock[i] = not self.lock[i]
GUI:Button_loadTextureNormal(list_lock,
string.format("res/custom/03/%d.png", self.lock[i] and 4 or 5))
self:setxh()
else
hk.sendmsg("请至少保留一条属性!")
end
end
end)
end
end
end
end
function ZhuangBeiLianHuaOBJ:setxh()
if not self.Data then
return
end
local xh = SL:CopyData(self.cfg.xh)
local _lock = 0
for _, lock_state in ipairs(self.lock) do
if lock_state then
_lock = _lock + 1
end
end
if _lock > 0 then
table.insert(xh, { "元宝", _lock * 50, 1 })
end
GUI:removeAllChildren(self.ui.xh_Layout)
hk.SettingXhShow(self.ui, self.ui.xh_Layout, xh, nil, nil, nil, 0, "res/custom/03/1.png", 30, nil, true)
end
function ZhuangBeiLianHuaOBJ:reddot()
end
------------------------网络消息------------------------
function ZhuangBeiLianHuaOBJ:ZSResponse()
if GUI:Win_IsNotNull(self._parent) then
self:updata()
end
end
---* 注册事件
function ZhuangBeiLianHuaOBJ:EventBind()
local function ZhuangBeiLianHuaOBJ_REINLEVELCHANGE(data)
if GUI:Win_IsNotNull(self._parent) then
if data.key == "P_SHENSHOUCUITI_LEVEL" then
self:show()
end
end
end
SL:RegisterLUAEvent(LUA_EVENT_SERVER_VALUE_CHANGE, self.__cname, ZhuangBeiLianHuaOBJ_REINLEVELCHANGE)
---* 背包 和 货币 物品变化
local function ZhuangBeiLianHuaOBJ_REINLEVELCHANGE(data)
if GUI:Win_IsNotNull(self._parent) then
self:setxh()
end
end
SL:RegisterLUAEvent(LUA_EVENT_BAG_ITEM_CHANGE, self.__cname, ZhuangBeiLianHuaOBJ_REINLEVELCHANGE)
SL:RegisterLUAEvent(LUA_EVENT_MONEY_CHANGE, self.__cname, ZhuangBeiLianHuaOBJ_REINLEVELCHANGE)
---* 炼化后刷新
local function ZhuangBeiLianHuaOBJ_EQUIP_CHANGE(data)
if GUI:Win_IsNotNull(self._parent) then
if data.Where == self.id then
local equipData = SL:Get_EQUIP_DATA(data.Where)
if equipData then
hk.reloadItemShow(self.ui.sel_Item, equipData.Name, 1, equipData)
self:DataShow(equipData.DiyAdv)
end
end
end
end
SL:RegisterLUAEvent(LUA_EVENT_PLAYER_EQUIP_CHANGE, self.__cname, ZhuangBeiLianHuaOBJ_EQUIP_CHANGE)
--关闭窗口
SL:RegisterLUAEvent(LUA_EVENT_CLOSEWIN, self.__cname, function(widgetName)
self:OnClose(widgetName)
end)
end
--关闭窗口
function ZhuangBeiLianHuaOBJ:OnClose(widgetName)
if widgetName == self.__cname then
self:UnRegisterEvent()
end
end
function ZhuangBeiLianHuaOBJ:UnRegisterEvent()
SL:UnRegisterLUAEvent(LUA_EVENT_PLAYER_EQUIP_CHANGE, self.__cname)
SL:UnRegisterLUAEvent(LUA_EVENT_SERVER_VALUE_CHANGE, self.__cname)
SL:UnRegisterLUAEvent(LUA_EVENT_MONEY_CHANGE, self.__cname)
SL:UnRegisterLUAEvent(LUA_EVENT_BAG_ITEM_CHANGE, self.__cname)
SL:UnRegisterLUAEvent(LUA_EVENT_CLOSEWIN, self.__cname)
end
return ZhuangBeiLianHuaOBJ