eafd8f4088
EN: 1.9.0.107 CN: 1.9.0.108 JP: 1.9.0.112 KR: 1.9.0.112
187 lines
5.9 KiB
Lua
187 lines
5.9 KiB
Lua
local ActivityBreakOutCtrl = class("ActivityBreakOutCtrl", BaseCtrl)
|
|
local TimerManager = require("GameCore.Timer.TimerManager")
|
|
local ClientManager = CS.ClientManager.Instance
|
|
ActivityBreakOutCtrl._mapNodeConfig = {
|
|
btnGo = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Go"
|
|
},
|
|
txtTime = {sComponentName = "TMP_Text"},
|
|
svReward = {
|
|
sNodeName = "PreviewUpgradeMaterial",
|
|
sComponentName = "LoopScrollView"
|
|
},
|
|
txtAdvanceMat = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "MessageBox_Reward"
|
|
},
|
|
txtDate = {sComponentName = "TMP_Text"},
|
|
imgLock = {},
|
|
txtLock = {sComponentName = "TMP_Text"},
|
|
btnDetail = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_Detail"
|
|
},
|
|
txtBtnDetail = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Activity_Btn_Detail"
|
|
},
|
|
imgEnd = {},
|
|
txtActivityEnd = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "Activity_End"
|
|
},
|
|
imgRemaineTime = {},
|
|
txtBtnGo = {
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "GoToChallenge"
|
|
},
|
|
imgProgressBg = {
|
|
sNodeName = "imgProgressBg"
|
|
},
|
|
imgFill = {sNodeName = "imgFill"},
|
|
txt_Target = {
|
|
sNodeName = "txt_Target",
|
|
sComponentName = "TMP_Text",
|
|
sLanguageId = "ChallengingGoals"
|
|
},
|
|
txtProgress = {
|
|
sNodeName = "txtProgress",
|
|
sComponentName = "TMP_Text"
|
|
},
|
|
btn_goTaskPanel = {
|
|
sComponentName = "UIButton",
|
|
callback = "OnBtnClick_GoTaskPanel"
|
|
}
|
|
}
|
|
function ActivityBreakOutCtrl:Awake()
|
|
self.tbGridCtrl = {}
|
|
end
|
|
function ActivityBreakOutCtrl:OnDisable()
|
|
self:UnbindCtrl()
|
|
end
|
|
function ActivityBreakOutCtrl:InitActData(actData)
|
|
self.actData = actData
|
|
self:RefreshLockState()
|
|
self:RefreshDate()
|
|
self:RefreshTimeout()
|
|
self:RefreshReward()
|
|
end
|
|
function ActivityBreakOutCtrl:UnInit()
|
|
self:UnbindCtrl()
|
|
end
|
|
function ActivityBreakOutCtrl:UnbindCtrl()
|
|
for nInstanceId, objCtrl in pairs(self.tbGridCtrl) do
|
|
self:UnbindCtrlByNode(objCtrl)
|
|
self.tbGridCtrl[nInstanceId] = nil
|
|
end
|
|
self.tbGridCtrl = {}
|
|
end
|
|
function ActivityBreakOutCtrl:RefreshLockState()
|
|
local IsUnlock, txtLock = self.actData:IsUnlock()
|
|
self._mapNode.imgLock.gameObject:SetActive(not IsUnlock)
|
|
self._mapNode.btnGo.gameObject:SetActive(IsUnlock)
|
|
if not IsUnlock then
|
|
NovaAPI.SetTMPText(self._mapNode.txtLock, txtLock)
|
|
end
|
|
end
|
|
function ActivityBreakOutCtrl:RefreshTimeout()
|
|
local endTime = self.actData:GetActGroupEndTime()
|
|
local curTime = ClientManager.serverTimeStamp
|
|
local remainTime = endTime - curTime
|
|
self._mapNode.imgRemaineTime:SetActive(0 < remainTime)
|
|
self._mapNode.imgEnd:SetActive(remainTime <= 0)
|
|
if remainTime < 0 then
|
|
TimerManager.Remove(self.remainTimer)
|
|
self.remainTimer = nil
|
|
return
|
|
end
|
|
local sTimeStr = ""
|
|
if remainTime <= 60 then
|
|
local sec = math.floor(remainTime)
|
|
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Sec") or "", sec)
|
|
elseif 60 < remainTime and remainTime <= 3600 then
|
|
local min = math.floor(remainTime / 60)
|
|
local sec = math.floor(remainTime - min * 60)
|
|
if sec == 0 then
|
|
min = min - 1
|
|
sec = 60
|
|
end
|
|
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Min") or "", min, sec)
|
|
elseif 3600 < remainTime and remainTime <= 86400 then
|
|
local hour = math.floor(remainTime / 3600)
|
|
local min = math.floor((remainTime - hour * 3600) / 60)
|
|
if min == 0 then
|
|
hour = hour - 1
|
|
min = 60
|
|
end
|
|
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Hour") or "", hour, min)
|
|
elseif 86400 < remainTime then
|
|
local day = math.floor(remainTime / 86400)
|
|
local hour = math.floor((remainTime - day * 86400) / 3600)
|
|
if hour == 0 then
|
|
day = day - 1
|
|
hour = 24
|
|
end
|
|
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Day") or "", day, hour)
|
|
end
|
|
NovaAPI.SetTMPText(self._mapNode.txtTime, sTimeStr)
|
|
end
|
|
function ActivityBreakOutCtrl:RefreshDate()
|
|
local nOpenMonth, nOpenDay, nEndMonth, nEndDay, nOpenYear, nEndYear = self.actData:GetActGroupDate()
|
|
local strOpenDay = string.format("%d", nOpenDay)
|
|
local strEndDay = string.format("%d", nEndDay)
|
|
local dateStr = string.format("%s/%s/%s ~ %s/%s/%s", nOpenYear, nOpenMonth, strOpenDay, nEndYear, nEndMonth, strEndDay)
|
|
NovaAPI.SetTMPText(self._mapNode.txtDate, dateStr)
|
|
end
|
|
function ActivityBreakOutCtrl:RefreshReward()
|
|
local actGroupCfg = self.actData:GetActGroupCfgData()
|
|
local rewardData = actGroupCfg.RewardsShow
|
|
for nInstanceId, objCtrl in pairs(self.tbGridCtrl) do
|
|
self:UnbindCtrlByNode(objCtrl)
|
|
self.tbGridCtrl[nInstanceId] = nil
|
|
end
|
|
self._mapNode.svReward:Init(#rewardData, self, self.RefreshRewardGridItem, self.BtnRewardGridClick)
|
|
end
|
|
function ActivityBreakOutCtrl:RefreshRewardGridItem(go, index)
|
|
local actGroupCfg = self.actData:GetActGroupCfgData()
|
|
local rewardData = actGroupCfg.RewardsShow
|
|
local rewardId = rewardData[index + 1]
|
|
local nInstanceID = go:GetInstanceID()
|
|
if not self.tbGridCtrl[nInstanceID] then
|
|
self.tbGridCtrl[nInstanceID] = self:BindCtrlByNode(go, "Game.UI.TemplateEx.TemplateItemCtrl")
|
|
end
|
|
self.tbGridCtrl[nInstanceID]:SetItem(rewardId)
|
|
end
|
|
function ActivityBreakOutCtrl:BtnRewardGridClick(goGrid, gridIndex)
|
|
local nIndex = gridIndex + 1
|
|
local actGroupCfg = self.actData:GetActGroupCfgData()
|
|
local rewardData = actGroupCfg.RewardsShow
|
|
local item = goGrid.transform:Find("AnimRoot/item")
|
|
UTILS.ClickItemGridWithTips(rewardData[nIndex], item.transform, true, true, false)
|
|
end
|
|
function ActivityBreakOutCtrl:OnBtnClick_Go()
|
|
local actGroupCfg = self.actData:GetActGroupCfgData()
|
|
if actGroupCfg ~= nil then
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.BreakOutThemePanel_S2, actGroupCfg.Id)
|
|
end
|
|
end
|
|
function ActivityBreakOutCtrl:OnBtnClick_GoTaskPanel()
|
|
EventManager.Hit(EventId.OpenPanel, PanelId.Task_30102, self.nActTaskId)
|
|
end
|
|
function ActivityBreakOutCtrl:OnBtnClick_Detail()
|
|
local actGroupCfg = self.actData:GetActGroupCfgData()
|
|
if actGroupCfg == nil then
|
|
return
|
|
end
|
|
local msg = {
|
|
nType = AllEnum.MessageBox.Desc,
|
|
sContent = actGroupCfg.DesText,
|
|
sTitle = ConfigTable.GetUIText("Activity_Btn_Detail")
|
|
}
|
|
EventManager.Hit(EventId.OpenMessageBox, msg)
|
|
end
|
|
function ActivityBreakOutCtrl:ClearActivity()
|
|
end
|
|
return ActivityBreakOutCtrl
|