---@class KLOpenServerPanel:UIKmlLuaPanelBase
---@field view KLOpenServerPanelView
local KLEarningsPanel = class(UIKmlLuaPanelBase)
local this =KLEarningsPanel
---创建时调用一次
function this:Init()
self.receiveTimestamp = 0 ---点击领取时间戳
self.leftTime = 0 ---未领取剩余时间秒
self.gettime = 0 ---已领取时间秒
SL.HideMainPanel()
end
---时间的选项(单位:小时,-1为领取所有剩余三倍收益时间)
function this:GetInfoData()
local Info2 = {}
local consumeCfg = string.split(SL:GetConfig("cfg_global",5003).value,'#')
for i, v in ipairs(consumeCfg) do
local num = tonumber(v)
if num < 0 then num = 0 end
local str ="领取".."".."所有".."".."三倍收益时间"
if num > 0 then
str = "领取"..""..GUIUtil.ToNumberString(num).."小时".."".."三倍收益时间"
end
local data = {
des = str,
hourtime = num
}
table.insert(Info2,data)
end
return Info2
end
function this:DataListItemGetFunc(realIndex)
local item = GUI:UIPanel_Open("dev/outui/ThreeEarnings/Item/KLEarnings/KLEarningsItem", self.view.EarData_list, self, nil, true)
if not self.earningsItems then
self.earningsItems = {}
end
local kmlCtrl = item.view.root
self.earningsItems[kmlCtrl] = item
return kmlCtrl
end
function this:DataListItemInitFunc(realIndex, kmlcontrol)
end
function this:DataListItemUpdateFunc(realIndex, kmlcontrol)
local item = self.earningsItems[kmlcontrol]
local luaIndex = realIndex + 1
local info = self.Info[luaIndex]
local minute = math.modf(self.leftTime / 60)
item:UpdateUI(info,minute)
end
---创建或者刷新界面数据时调用
function this:Refresh()
local isfirstbug = InfoManager.monthCardInfo.IsGetMonthCard --是否首次购买月卡
local monthallTime = InfoManager.monthCardInfo.MonthCardTimeTotal-SL:GetMetaValue(EMetaVarGetKey.SERVER_TIME) --月卡剩余时间
local cardHour = tonumber(SL:GetConfig("cfg_global",5004).value)
self.maxNum = tonumber(SL:GetConfig("cfg_global",5001).value) --最多可以继承多少时间(单位:小时)
SL:SendLuaNetMsg(LuaMessageIdToSever.TRIPLE_INCOME_PANEL) --请求三倍收益信息
if not InfoManager.monthCardInfo.IsEarningFirst then
if monthallTime < 24 then
self:LoginFirstTipClick()
InfoManager.monthCardInfo.IsEarningFirst = true
end
end
if not isfirstbug then
GUI:Text_setString(self.view.time_tip, "首充购买月卡赠送"..cardHour.."小时三倍收益时间")
end
GUI:setVisible(self.view.time_tip,not isfirstbug)
GUI:Text_setString(self.view.time_text, "剩余三倍收益时间")
---领取时间列表数据
self.Info = self:GetInfoData()
GUI:DataListInitData(self.view.EarData_list, function()
return table.count(self.Info)
end, function(realIndex)
return self:DataListItemGetFunc(realIndex)
end, function(realIndex, kmlcontrol)
return self:DataListItemInitFunc(realIndex, kmlcontrol)
end, function(realIndex, kmlcontrol)
return self:DataListItemUpdateFunc(realIndex, kmlcontrol)
end)
---归还状态,倒计时
self:SetChillingState()
end
---刷新两个时间
function this:RefreshTimeText()
if self.leftTime == 0 then
GUI:Text_setString(self.view.time_show, "00f00f00")
else
local strtime = GUIUtil.FormatTimeHMAndDW(self.leftTime)
--local strtime = GUIUtil.FormatTimeHM(self.leftTime)
GUI:Text_setString(self.view.time_show, strtime)
end
if self.gettime <= 0 then
if self.gettimer then
SL:UnSchedule(self.gettimer)
self.gettimer = nil
end
GUI:Text_setString(self.view.des_time, "00:00:00")
else
self:SetGetTimeSchedule() --倒计时
end
self:SetBtnGivebackState()
GUI:DataListUpdateData(self.view.EarData_list)
end
---注册UI事件和服务器消息
function this:RegistEvents()
GUI:AddOnClickEvent(self.view.CloseButton,self,self.CloseBtnClick)
GUI:AddOnClickEvent(self.view.btnTip,self,self.btnTipClick)
GUI:AddOnClickEvent(self.view.btnGiveback,self,self.btnGivebackClick)
SL:RegisterLuaNetMsg(LuaMessageIdToClient.TRIPLE_INCOME_INFO, self.ResTripleIncomeInfo, self)
end
---响应三倍收益信息
function this:ResTripleIncomeInfo(id,data)
if data then
self.receiveTimestamp = data.receiveTimestamp
self.leftTime = data.remainSec
self.gettime = data.effectSec
end
self:RefreshCountdown() ---刷新冷却
self:RefreshTimeText() ---刷新时间
end
---点击领取,刷新冷却时间
function this:RefreshCountdown()
local chiltime = tonumber(SL:GetConfig("cfg_global",5002).value) --分钟
local endTimestamp = self.receiveTimestamp + chiltime*60*1000
self.countdown = (endTimestamp - Time.GetServerTime()) /1000
self:SetChillingState()
end
---关闭
function this:CloseBtnClick()
GUI:UIPanel_Close("dev/outui/ThreeEarnings/Panel/KLEarnings/KLEarningsPanel")
GUI:UIPanel_Close("dev/ui/Union/Panel/KLUnionToggleList/KLUnionToggleListPanel")
SL.ShowMainPanel()
end
---帮助提示
function this:btnTipClick()
local helpCfg = SL:FindConfigs("cfg_rule_text","id",5)
if helpCfg and helpCfg[1] then
SL:CommonStrTipsMessage({title = helpCfg[1].menutxt,str = helpCfg[1].location})
end
end
---登陆后首次打开UI 且 月卡时间小于24小时
function this:LoginFirstTipClick()
SL:CommonTipsMessage({stringTblID=224,
ui = self,
sureBtnText = "确定",
cancelBtnText = "取消",
callback = function()
--跳转月卡界面
GUI:UIPanel_Close("dev/outui/ThreeEarnings/Panel/KLEarnings/KLEarningsPanel")
GUI:UIPanel_Open("dev/outui/MonthCard/Panel/KLUIMonthCardMain/KLUIMonthCardMainPanel",_,_,{JumpType = 1})
end,
})
end
---归还按钮
function this:btnGivebackClick()
if not self.ischilling and self.gettime > 0 then
SL:SendLuaNetMsg(LuaMessageIdToSever.TRIPLE_INCOME_RETURN)
end
end
---领取时间倒计时
function this:SetGetTimeSchedule()
local getcountdown = self.gettime
self.gettimer = SL:Schedule( self.gettimer,0,1,getcountdown,function()
getcountdown =getcountdown - 1
if getcountdown > 0 then
GUI:Text_setString(self.view.des_time,GUIUtil.FormatTimeHMS(getcountdown))
else
GUI:Text_setString(self.view.des_time, "00:00:00")
end
end)
end
---冷却倒计时
function this:SetChillingState()
if self.countdown and self.countdown > 0 then
self.timer = SL:Schedule( self.timer,0,1,self.countdown,function()
self.countdown = self.countdown - 1
if self.countdown > 0 then
self.ischilling = true
self:SetBtnGivebackState()
GUI:Text_setString(self.view.desGiveback,"归还冷却时间:"..GUIUtil.FormatTimeMS(self.countdown))
else
self.ischilling = false
self:SetBtnGivebackState()
GUI:Text_setString(self.view.desGiveback,"")
end
end)
else
self.ischilling = false
self:SetBtnGivebackState()
GUI:Text_setString(self.view.desGiveback,"")
end
end
---归还按钮置灰: 已领取三倍收益时间为0时 ; 处于归还冷却时间内
function this:SetBtnGivebackState()
GUI:Button_setGrey(self.view.btnGiveback, self.ischilling or self.gettime==0)
end
function this:Close()
SL:ShowMainPanel()
if self.timer then
SL:UnSchedule(self.timer)
self.timer = nil
end
if self.gettimer then
SL:UnSchedule(self.gettimer)
self.gettimer = nil
end
end
return this