bayuMIR/client/dev/GUILayout/game/tongyong/HuodongzhongxinOBJ.lua

213 lines
7.5 KiB
Lua

HuodongzhongxinOBJ = Up_BaseClassOBJ:new()
HuodongzhongxinOBJ.__cname = "HuodongzhongxinOBJ"
-- UI文件
HuodongzhongxinOBJ.UIfile = "game/Tongyong/HuodongzhongxinUI"
-- 配置文件
HuodongzhongxinOBJ.cfg = {}
HuodongzhongxinOBJ.other = nil
HuodongzhongxinOBJ.npcid = nil
function HuodongzhongxinOBJ:updata()
GUI:ListView_removeAllItems(self.ui.Listbtn_ListView)
for i, v in ipairs(self.cfg or {}) do
local list_btn = string.format("list_btn_%d", i)
self.ui[list_btn] = GUI:Button_Create(self.ui.Listbtn_ListView, list_btn, 0, 0, string.format("res/custom/27/btn/%s.png", self.id == i and tostring(i) or tostring(i) .. "a"))
GUI:addOnClickEvent(self.ui[list_btn], function()
GUI:Button_loadTextureNormal(self.ui["list_btn_" .. self.id], string.format("res/custom/27/btn/%s.png", self.id .. "a"))
GUI:Button_loadTextureNormal(self.ui[list_btn], string.format("res/custom/27/btn/%s.png", i))
self.id = i
self:set_show()
end)
end
self:set_show()
end
function HuodongzhongxinOBJ:set_show()
GUI:Image_loadTexture(self.ui.activity_bg, string.format("res/custom/27/bg/%d.png", self.id))
GUI:Text_setString(self.ui.activity_Text, self.cfg[self.id].msg or "")
GUI:removeAllChildren(self.ui.give_Layout)
local give = self.cfg[self.id].give or {}
hk.SettingXhShow(self.ui, self.ui.give_Layout, give, nil, nil, nil, 0, nil, 8, 0.85, false)
GUI:addOnClickEvent(self.ui.Up_btn, function()
ssrMessage:SubLink(self.__cname .. "_up", self.id)
end)
self:daluandou()
end
----* 大乱斗功能
function HuodongzhongxinOBJ:daluandou()
GUI:setVisible(self.ui.LuandouRank_img, false)
local _daluandou = self.id == 3 and true or false
---* 报名是否开启
local BaoMing_bool = (tonumber(SL:Get_SERVER_VALUE("GLOBAL(INT_DALUANDOUBAOMING)")) or 0) > 0 and true or false
if not BaoMing_bool then
GUI:setVisible(self.ui.baomin_btn, false)
GUI:setVisible(self.ui.baomin_img, false)
else
GUI:setVisible(self.ui.baomin_img, true)
---* 个人是否报名
local self_register = (tonumber(SL:Get_SERVER_VALUE("HUMAN(INT_大乱斗已报名)")) or 0) > 0 and 1 or 2
if self_register == 1 then
GUI:setVisible(self.ui.baomin_btn, false)
else
GUI:setVisible(self.ui.baomin_btn, true)
end
GUI:Image_loadTexture(self.ui.baomin_img, string.format("res/custom/27/bq/%d.png", self_register))
end
if _daluandou then
GUI:setVisible(self.ui.Look_rank_btn, true)
GUI:setPositionX(self.ui.Up_btn, 106)
else
GUI:setVisible(self.ui.Look_rank_btn, false)
GUI:setPositionX(self.ui.Up_btn, 206)
end
GUI:setVisible(self.ui.daluandou_Layou, _daluandou)
GUI:addOnClickEvent(self.ui.baomin_btn, function()
ssrMessage:SubLink(self.__cname .. "_BaoMing")
end)
GUI:addOnClickEvent(self.ui.Look_rank_btn, function()
self:reloadLuanDou()
ssrMessage:SubLink("HuodongzhongxinOBJ_luandouGetData", 10002)
GUI:setVisible(self.ui.LuandouRank_img, true)
end)
end
function HuodongzhongxinOBJ:reloadLuanDou()
local BaoMingNum = tonumber(hk.getvalue("GLOBAL(INT_BAOMINGRENSHU)")) or 0
GUI:Text_setString(self.ui.Text_BaoMingNum, BaoMingNum)
end
function HuodongzhongxinOBJ:reloadLuanDouRank(data)
GUI:ListView_removeAllItems(self.ui.Rank_ListView)
local rankMap = {}
for _, v in ipairs(data.Rank or {}) do
local rank = tonumber(v[1]) or 0
if rank > 0 then
rankMap[rank] = v
end
end
local rewardList = data.RewardList or {}
if #rewardList == 0 then
rewardList = {
{ rank = 1, rankName = "第一名", rewardItems = {} },
{ rank = 2, rankName = "第二名", rewardItems = {} },
{ rank = 3, rankName = "第三名", rewardItems = {} },
{ rank = 4, rankName = "第四名", rewardItems = {} },
{ rank = 5, rankName = "第五名", rewardItems = {} },
{ rank = 6, rankName = "第六名", rewardItems = {} },
{ rank = 7, rankName = "第七名", rewardItems = {} },
{ rank = 8, rankName = "第八名", rewardItems = {} },
{ rank = 9, rankName = "第九名", rewardItems = {} },
{ rank = 10, rankName = "第十名", rewardItems = {} },
{ rank = 0, rankName = "参与奖", rewardItems = {} },
}
end
for i, rewardCfg in ipairs(rewardList) do
local rank = tonumber(rewardCfg.rank or 0) or 0
local rankData = rankMap[rank]
local rankText = rewardCfg.rankName or (rank > 0 and tostring(rank) or "参与奖")
local name = rank > 0 and "暂无玩家" or "排行低于前十"
local jifen = rank > 0 and "-" or "积分>0"
if rankData then
name = rankData[2] or name
jifen = rankData[3] or jifen
end
local color = SL:GetHexColorByStyleId(255 - i)
local list_bg = string.format("list_bg_%d", i)
self.ui[list_bg] = GUI:Image_Create(self.ui.Rank_ListView, list_bg, 0, 0, "res/custom/27/list.png")
local list_rank = string.format("list_rank_%d", i)
self.ui[list_rank] = GUI:Text_Create(self.ui[list_bg], list_rank, 34, 30, 16, color, rankText)
GUI:setAnchorPoint(self.ui[list_rank], 0.50, 0.50)
local list_name = string.format("list_name_%d", i)
self.ui[list_name] = GUI:Text_Create(self.ui[list_bg], list_name, 148, 30, 16, color, name)
GUI:setAnchorPoint(self.ui[list_name], 0.50, 0.50)
local list_jifen = string.format("list_jifen_%d", i)
self.ui[list_jifen] = GUI:Text_Create(self.ui[list_bg], list_jifen, 270, 30, 16, color, jifen)
GUI:setAnchorPoint(self.ui[list_jifen], 0.50, 0.50)
local rewardShowList = {}
for _, itemInfo in ipairs(rewardCfg.rewardItems or {}) do
table.insert(rewardShowList, { itemInfo.name, itemInfo.count or 1 })
end
local item_Layout = string.format("item_Layout_%d", i)
self.ui[item_Layout] = GUI:Layout_Create(self.ui[list_bg], item_Layout, 328, -2, 190, 70, false)
hk.SettingXhShow(self.ui, self.ui[item_Layout], rewardShowList, nil, nil, nil, 0, nil, 0, 0.9, false)
end
end
function HuodongzhongxinOBJ:close()
if GUI:Win_IsNotNull(self._parent) then
GUI:Win_Close(self._parent)
end
end
---* 注册事件
function HuodongzhongxinOBJ:EventBind()
local function HuodongzhongxinOBJ_Var_Reload(data)
if GUI:Win_IsNotNull(self._parent) then
if data.key == "HUMAN(INT_大乱斗已报名)" and self.id == 3 then
self:daluandou()
end
end
end
SL:RegisterLUAEvent(LUA_EVENT_SERVER_VALUE_CHANGE, self.__cname, HuodongzhongxinOBJ_Var_Reload)
local function synData(msgID, arg1, arg2, arg3, jsonstr)
local msgData = jsonstr and SL:JsonDecode(jsonstr) or nil
if not msgData then
return
end
HuodongzhongxinOBJ:reloadLuanDouRank(msgData)
end
SL:RegisterLuaNetMsg(10002, synData)
--关闭窗口
SL:RegisterLUAEvent(LUA_EVENT_CLOSEWIN, self.__cname, function(widgetName)
self:OnClose(widgetName)
end)
end
--关闭窗口
function HuodongzhongxinOBJ:OnClose(widgetName)
if widgetName == self.__cname then
self:UnRegisterEvent()
end
end
function HuodongzhongxinOBJ:UnRegisterEvent()
SL:UnRegisterLUAEvent(LUA_EVENT_SERVER_VALUE_CHANGE, self.__cname)
SL:UnRegisterLUAEvent(LUA_EVENT_CLOSEWIN, self.__cname)
end
return HuodongzhongxinOBJ