---@class KLRechargeLinkPanel:UIKmlLuaPanelBase ---@field view KLRechargeLinkPanelView local KLRechargeLinkPanel = class(UIKmlLuaPanelBase) local this = KLRechargeLinkPanel function this:AsyncLoadUI() end ---创建时调用一次 function this:Init() self.careerId = SL:GetMetaValue(EMetaVarGetKey.JOB) self.ItemList = {} self.giftTbl = SL:GetConfigTable("cfg_newServerGIft") self.bigAwardTbl = self.giftTbl[table.count(self.giftTbl)] self.dataList = {} GUI:DataListInitData(self.view.ItemDataList, function() return table.count(self.giftTbl) - 1 end, function() end, function() end, function(realIndex) return self:UpDataList(realIndex) end) --[[ GUI:DataListUpdateData(self.view.ItemDataList) self:UpDataBigAward()]] end function this:UpDataList(realIndex) local index = realIndex + 1 local strengthInfo = self.giftTbl[index] local ItemBg = GUI:GetChildControl(self.view.ItemDataList, realIndex, 'ItemBg') local ItemBg_BtnMask = GUI:GetChildControl(self.view.ItemDataList, realIndex, 'ItemBg_BtnMask') local ItemGet = GUI:GetChildControl(self.view.ItemDataList, realIndex, 'ItemGet') local Txt = GUI:GetChildControl(self.view.ItemDataList, realIndex, 'Txt') local TextTitle = GUI:GetChildControl(self.view.ItemDataList, realIndex, 'TextTitle') local model = GUI:GetChildControl(self.view.ItemDataList, realIndex, 'model') local GetBtn = GUI:GetChildControl(self.view.ItemDataList, realIndex, 'GetBtn') local RedDot = GUI:GetChildControl(self.view.ItemDataList, realIndex, 'RedDot') GUI:Text_setString(TextTitle, "连续达成目标" .. index .. "天") for ItemIndex, v in pairs(strengthInfo.reward) do if v[1] == self.careerId or v[1] == 0 then local itemId = v[2] local count = v[3] self:SetItem(itemId, count, index, ItemIndex, model) ---@type cfg_item_column local ItemTbl = SL:GetConfig("cfg_item", itemId) GUI:Text_setString(Txt, ItemTbl.name) end end GUI:SetActive(RedDot, false) if self.dataList[strengthInfo.id] then if self.dataList[strengthInfo.id].state == 2 then GUI:SetActive(ItemGet, false) GUI:SetActive(ItemBg_BtnMask, false) GUI:SetActive(GetBtn, false) elseif self.dataList[strengthInfo.id].state == 1 then GUI:SetActive(ItemGet, false) GUI:SetActive(ItemBg_BtnMask, true) GUI:SetActive(GetBtn, true) GUI:SetActive(RedDot, true) GUI:AddOnClickEvent(GetBtn, self, function() SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_RECHARGE_ACTION, { type = ERechargeType.RechargeLink, action = "reward", id = strengthInfo.id }) end) elseif self.dataList[strengthInfo.id].state == 3 then GUI:SetActive(ItemGet, true) GUI:SetActive(ItemBg_BtnMask, false) GUI:SetActive(GetBtn, false) end end end function this:SetItem(itemId, count, index, ItemIndex, model) ---列表index和道具index local data = { width = "70", height = "70", itemid = itemId, mfixsize = "70,70", tips = "1", itemcustomcount = count } if not self.ItemList[index] then self.ItemList[index] = {} end if self.ItemList[index][ItemIndex] then GUI:Item_UpdataData(self.ItemList[index][ItemIndex], data) else local item = GUI:Item_Create(model, data) self.ItemList[index][ItemIndex] = item end GUI:AddOnClickEvent(self.ItemList[index][ItemIndex], self, function() SL:OpenTips(nil, itemId) end) end function this:UpDataBigAward() local index = table.count(self.giftTbl) local data = self.dataList[self.bigAwardTbl.id] GUI:Text_setString(self.view.BigTitle, "连续达成目标" .. index .. "天") for ItemIndex, v in pairs(self.bigAwardTbl.reward) do if v[1] == self.careerId or v[1] == 0 then local itemId = v[2] ---@type cfg_item_column local ItemTbl = SL:GetConfig("cfg_item", itemId) GUI:Text_setString(self.view.ItemTex, ItemTbl.name) GUI:AddOnClickEvent(self.view.BigGetBtn, self, function() if not data then return end if data.state == 2 then SL:OpenTips(nil, itemId) elseif data.state == 1 then SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_RECHARGE_ACTION, { type = ERechargeType.RechargeLink, action = "reward", id = self.bigAwardTbl.id }) elseif data.state == 3 then return end end) end end self:ShowBigModel(self.bigAwardTbl) GUI:SetActive(self.view.BigRedDot, false) if not data then return end if data.state == 2 then GUI:SetActive(self.view.Get, false) GUI:SetActive(self.view.bg_BtnMask, false) elseif data.state == 1 then GUI:SetActive(self.view.Get, false) GUI:SetActive(self.view.bg_BtnMask, true) GUI:SetActive(self.view.BigRedDot, true) elseif data.state == 3 then GUI:SetActive(self.view.Get, true) GUI:SetActive(self.view.bg_BtnMask, false) end if self.bigAwardTbl.previewVedio ~= "" and not table.isNullOrEmpty(self.bigAwardTbl.previewVedio) then for _, v in pairs(self.bigAwardTbl.previewVedio) do if tonumber(v[1]) == self.careerId or tonumber(v[1]) == 0 then GUI:SetActive(self.view.button_watchVideo,true) GUI:Text_setString(self.view.text19, v[2]) end end else GUI:SetActive(self.view.button_watchVideo,false) end end function this:ShowBigModel(Tbl) if not Tbl then return end local scale = 40 local mrotate = "-70,-70,0" local x = "0" local y = "-50" local z = "-200" local path = "" local ani = "" local rX = 1 local rY = 0 local rZ = 0 for _, model1 in pairs(Tbl.showModel) do if tonumber(model1[1]) == self.careerId or tonumber(model1[1]) == 0 then path = model1[2] end end for _, model2 in pairs(Tbl.modelCondition) do if tonumber(model2[5]) == self.careerId or tonumber(model2[1]) == 0 then x=model2[1] y =model2[2] z = model2[3] scale = tonumber(model2[4]) end end for _, model3 in pairs(Tbl.modelRevolve) do if tonumber(model3[4]) == self.careerId or tonumber(model3[1]) == 0 then --mrotate = model3[1].. "," .. model3[2] .. "," .. model3[3] rX = tonumber(model3[1]) rY = tonumber(model3[2]) rZ = tonumber(model3[3]) end end for _, model4 in pairs(Tbl.modelBehavior) do if tonumber(model4[2]) == self.careerId or tonumber(model4[1]) == 0 then ani=model4[1] end end local data = { mscale = 1 .. "," .. 1 .. "," .. 1, mrotate = mrotate, x = x, y = y, z = z, a = "00", src = path, ani = ani, } if self.model then GUI:Item_UpdataData(self.model, data) else self.model = GUI:Model_Create(self.view.ItemModel, data) end GUI:setScale(self.model, scale) GUI:setRotationSkewX(self.model,rX) GUI:setRotationSkewY(self.model,rY) GUI:setRotation(self.model,rZ) end function this:SetFillAmount(value) GUI:SetLoadingbar_startper(self.view.scheduleImg, math.floor(value*100)) end ---注册UI事件和服务器消息 function this:RegistEvents() GUI:AddOnClickEvent(self.view.button_watchVideo, self, self.VideoOnClick) SL:RegisterLUAEvent(LUA_EVENT_RECHARGE_LINK_CHANGE, self.LUA_EVENT_RECHARGE_LINK_CHANGE, self) GUI:AddOnClickEvent(self.view.btnUp, self, self.btnUpOnClick) end function this:btnUpOnClick() if self.bigAwardTbl then GUI:UIPanel_Close("dev/outui/MainRecharge/Panel/KLMainRecharge/KLMainRechargePanel") shortcutOutMgr.DO(self.bigAwardTbl.Jump) SL:HideMainPanel() end end function this:LUA_EVENT_RECHARGE_LINK_CHANGE() self.RechargeLinkData = InfoManager.rechargeLinkInfo.RechargeLinkData self:SetFillAmount(self.RechargeLinkData.totalMoney / 100) GUI:Text_setString(self.view.RechargeTargetTextBName, "今日充值达标:" .. "100" .. "元") GUI:Text_setString(self.view.schedule_Text, self.RechargeLinkData.totalMoney .. "/" .. 100) for _, v in pairs(self.RechargeLinkData.data) do self.dataList[tonumber(v.id)] = v end GUI:DataListUpdateData(self.view.ItemDataList) self:UpDataBigAward() end function this:VideoOnClick() if self.bigAwardTbl.previewVedio ~= "" then for _, v in pairs(self.bigAwardTbl.previewVedio) do if tonumber(v[1]) == self.careerId or tonumber(v[1]) == 0 then GUI:UIPanel_Open("dev/outui/Recharge/Panel/KLPlayVideo/KLPlayVideoPanel", nil, nil, { path = v[3] }) GUI:Text_setString(self.view.text19, v[2]) end end end end ---界面显示时调用一次 function this:Show() local mainTbl = SL:GetConfig("sub_mainRecharge",9) local showCondition = mainTbl.showCondition local conditionTbl=ConditionManager.GetConditionParams(showCondition) local reTime=SL:GetEndTimeStamp(tonumber(conditionTbl[1]),0) self:ShowTime(reTime) SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_RECHARGE_ACTION, { type = tostring(ERechargeType.RechargeLink), action = "panel" }) --SL:SendLuaNetMsg(LuaMessageIdToSever.REQ_RECHARGE_ACTION,{type=tostring(ERechargeType.RechargeLink),action="reward",id = "10001"}) end ---创建或者刷新界面数据时调用 function this:Refresh() end function this:ShowTime(endTime) self.Timer = SL:Schedule(self.Timer, 0, 1, endTime + 1, function() local timeText = endTime - Time.GetServerTime() GUI:Text_setString(self.view.Timer,"活动剩余时间:".. GUIUtil.FormatTimeDHM(timeText // 1000).."") if timeText <= 0 then GUI:Text_setString(self.view.Timer,"") for _,v in pairs(self.dataList) do if v.state == 1 then v.state = 3 end end self:SetFillAmount(0/ 100) GUI:Text_setString(self.view.schedule_Text, 0 .. "/" .. 100) GUI:DataListUpdateData(self.view.ItemDataList) self:UpDataBigAward() if self.bigAwardTbl and self.bigAwardTbl.previewVedio ~= "" and not table.isNullOrEmpty(self.bigAwardTbl.previewVedio) then for _, v in pairs(self.bigAwardTbl.previewVedio) do if tonumber(v[1]) == self.careerId or tonumber(v[1]) == 0 then GUI:SetActive(self.view.button_watchVideo,true) GUI:Text_setString(self.view.text19, v[2]) end end else GUI:SetActive(self.view.button_watchVideo,false) end InfoManager.mainRechargeInfo:RefreshMainRechargeRedPoint("tog_NewServerRecharge",false) if self.Timer then SL:UnSchedule(self.Timer) end end end) end function this:Close() if self.Timer then SL:UnSchedule(self.Timer) end self.Timer = nil end return this