Files
SL1900 7363298dc1 Update - 1.15.0.134
EN: 1.15.0.134
CN: 1.15.0.133
JP: 1.15.0.137
KR: 1.15.0.139
2026-09-08 12:00:00 +09:00

229 lines
8.2 KiB
Lua

local EventReminderCellCtrl = class("EventReminderCellCtrl", BaseCtrl)
local JumpUtil = require("Game.Common.Utils.JumpUtil")
local IconPath = "Icon/ZZZOther/"
EventReminderCellCtrl._mapNodeConfig = {
imgTitleIcon = {sComponentName = "Image"},
txtName = {sComponentName = "TMP_Text"},
rtReward = {
nCount = 2,
sCtrlName = "Game.UI.TemplateEx.TemplateItemCtrl"
},
btnReward = {
nCount = 2,
sComponentName = "UIButton",
callback = "OnBtnClick_Reward"
},
btnJump = {
sComponentName = "UIButton",
callback = "OnBtnClick_Jump"
},
btnUnJump = {
sComponentName = "UIButton",
callback = "OnBtnClick_UnJump"
},
txtBtnJump = {
sComponentName = "TMP_Text",
sLanguageId = "Quest_JumpTo"
},
txtBtnUnJump = {
sComponentName = "TMP_Text",
sLanguageId = "Quest_JumpTo"
},
txtLock = {sComponentName = "TMP_Text"},
txtUnopen = {sComponentName = "TMP_Text"},
ImgProgressIcon = {sComponentName = "Image"},
txtProgress = {sNodeName = "txtProgess", sComponentName = "TMP_Text"},
imgTimeIcon = {nCount = 3, sComponentName = "Image"},
txtTime = {sComponentName = "TMP_Text"},
imgTimeLine = {}
}
EventReminderCellCtrl._mapEventConfig = {}
EventReminderCellCtrl._mapRedDotConfig = {}
function EventReminderCellCtrl:SetData(data)
self.data = data
self.cfg = ConfigTable.GetData("EventReminder", self.data.nId)
self:RefreshUI()
end
function EventReminderCellCtrl:RefreshUI()
self:SetPngSprite(self._mapNode.imgTitleIcon, self.cfg.Icon)
NovaAPI.SetTMPText(self._mapNode.txtName, self:GetName())
for i = 1, 2 do
local nItemId = self.cfg["Item" .. i .. "Id"]
self._mapNode.btnReward[i].gameObject:SetActive(0 < nItemId)
if nItemId == 0 then
self._mapNode.btnReward[i].gameObject:SetActive(false)
else
self._mapNode.rtReward[i]:SetItem(nItemId)
self._mapNode.btnReward[i].gameObject:SetActive(true)
end
end
self:SetTime()
self:SetProgress()
self:SetJumpTo()
end
function EventReminderCellCtrl:GetName()
if self.data == nil then
return ""
end
if not self.data.bUnlock then
return self.cfg.Name
end
if self.data.nType == GameEnum.EventReminderType.Vampire and self.data.tbCusParam.bSeasonUnlock and self.data.tbCusParam.bHardUnlock and self.data.tbCusParam.nSeason ~= nil then
return self.cfg.Name .. orderedFormat(ConfigTable.GetUIText("Level_Season_Count"), self.data.tbCusParam.nSeason)
end
if self.data.nType == GameEnum.EventReminderType.ScoreBoss and not self.data.tbCusParam.bSettlement and self.data.tbCusParam.nSeason ~= nil then
return self.cfg.Name .. orderedFormat(ConfigTable.GetUIText("Level_Season_Count"), self.data.tbCusParam.nSeason)
end
return self.cfg.Name
end
function EventReminderCellCtrl:SetTime()
if self.data == nil then
return
end
for i = 1, 3 do
self._mapNode.imgTimeIcon[i].gameObject:SetActive(false)
end
self._mapNode.txtTime.gameObject:SetActive(false)
self._mapNode.imgTimeLine.gameObject:SetActive(false)
if self.data.nType == GameEnum.EventReminderType.ScoreBoss and self.data.tbCusParam ~= nil and self.data.tbCusParam.bSettlement then
return
end
local nEndTime = PlayerData.EventReminder:GetEndTime(self.data.nType)
if nEndTime == 0 then
return
end
local nRemainTime = nEndTime - CS.ClientManager.Instance.serverTimeStamp
if nRemainTime <= 0 then
return
end
local sTimeStr = ""
if nRemainTime <= 60 then
local sec = math.floor(nRemainTime)
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Sec") or "", sec)
elseif 60 < nRemainTime and nRemainTime <= 3600 then
local min = math.floor(nRemainTime / 60)
local sec = math.floor(nRemainTime - min * 60)
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Min") or "", min, sec)
elseif 3600 < nRemainTime and nRemainTime <= 86400 then
local hour = math.floor(nRemainTime / 3600)
local min = math.floor((nRemainTime - hour * 3600) / 60)
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Hour") or "", hour, min)
elseif 86400 < nRemainTime then
local day = math.floor(nRemainTime / 86400)
local hour = math.floor((nRemainTime - day * 86400) / 3600)
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Day") or "", day, hour)
end
NovaAPI.SetTMPText(self._mapNode.txtTime, sTimeStr)
self._mapNode.txtTime.gameObject:SetActive(true)
self._mapNode.imgTimeLine.gameObject:SetActive(true)
for i = 1, 3 do
self._mapNode.imgTimeIcon[i].gameObject:SetActive(false)
end
if nRemainTime >= self.cfg.LimitDay2 * 86400 then
self._mapNode.imgTimeIcon[1].gameObject:SetActive(true)
elseif nRemainTime >= self.cfg.LimitDay * 86400 then
self._mapNode.imgTimeIcon[2].gameObject:SetActive(true)
else
self._mapNode.imgTimeIcon[3].gameObject:SetActive(true)
end
end
function EventReminderCellCtrl:SetProgress()
if self.data == nil then
return
end
self._mapNode.txtUnopen.gameObject:SetActive(false)
self._mapNode.ImgProgressIcon.gameObject:SetActive(false)
self._mapNode.txtProgress.gameObject:SetActive(false)
if not self.data.bUnlock then
local sStr = PlayerData.EventReminder:GetEventReminderLockTips(self.data.nType)
NovaAPI.SetTMPText(self._mapNode.txtUnopen, sStr)
self._mapNode.txtUnopen.gameObject:SetActive(true)
return
end
if self.data.nType == GameEnum.EventReminderType.Vampire then
if self.data.tbCusParam.bSeasonUnlock then
if not self.data.tbCusParam.bHardUnlock then
NovaAPI.SetTMPText(self._mapNode.txtUnopen, ConfigTable.GetUIText("Vampire_PrevLevelNotComplete"))
self._mapNode.txtUnopen.gameObject:SetActive(true)
return
end
else
NovaAPI.SetTMPText(self._mapNode.txtUnopen, ConfigTable.GetUIText("NewTutorialsAct_WaitSeasonOpen"))
self._mapNode.txtUnopen.gameObject:SetActive(true)
return
end
end
if self.data.nType ~= GameEnum.EventReminderType.ScoreBoss or not self.data.tbCusParam.bSettlement and self.data.tbCusParam.nSeason ~= nil then
else
NovaAPI.SetTMPText(self._mapNode.txtUnopen, ConfigTable.GetUIText("ScoreBoss_Settlement"))
self._mapNode.txtUnopen.gameObject:SetActive(true)
return
end
self:SetPngSprite(self._mapNode.ImgProgressIcon, self.cfg.ItemIcon)
NovaAPI.SetTMPText(self._mapNode.txtProgress, self.data.tbProgressData.nCur .. "/" .. self.data.tbProgressData.nMax)
self._mapNode.ImgProgressIcon.gameObject:SetActive(true)
self._mapNode.txtProgress.gameObject:SetActive(true)
end
function EventReminderCellCtrl:SetJumpTo()
if self.data == nil then
return
end
self._mapNode.txtLock.gameObject:SetActive(false)
self._mapNode.btnJump.gameObject:SetActive(false)
self._mapNode.btnUnJump.gameObject:SetActive(false)
if not self.data.bUnlock then
self._mapNode.btnUnJump.gameObject:SetActive(true)
return
end
if self.data.nType == GameEnum.EventReminderType.Vampire then
if self.data.tbCusParam.bSeasonUnlock and self.data.tbCusParam.nSeason ~= nil then
else
self._mapNode.btnUnJump.gameObject:SetActive(true)
return
end
else
if self.data.nType == GameEnum.EventReminderType.ScoreBoss and self.data.tbCusParam.bSettlement then
self._mapNode.btnUnJump.gameObject:SetActive(true)
return
else
end
end
self._mapNode.btnJump.gameObject:SetActive(true)
end
function EventReminderCellCtrl:OnBtnClick_Reward(btn, nIndex)
local nItemId = self.cfg["Item" .. nIndex .. "Id"]
if nItemId == 0 then
return
end
UTILS.ClickItemGridWithTips(nItemId, btn, true, true, false)
end
function EventReminderCellCtrl:OnBtnClick_Jump(btn)
JumpUtil.JumpTo(self.cfg.JumpTo)
end
function EventReminderCellCtrl:OnBtnClick_UnJump(btn)
if not self.data.bUnlock then
local sStr = PlayerData.EventReminder:GetEventReminderLockTips(self.data.nType)
EventManager.Hit(EventId.OpenMessageBox, sStr)
return
end
if self.data.nType == GameEnum.EventReminderType.Vampire then
if self.data.tbCusParam.bSeasonUnlock then
if not self.data.tbCusParam.bHardUnlock then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Vampire_PrevLevelNotComplete"))
return
end
else
local sStr = ConfigTable.GetUIText("NewTutorialsAct_WaitSeasonOpen")
EventManager.Hit(EventId.OpenMessageBox, sStr)
return
end
end
if self.data.nType ~= GameEnum.EventReminderType.ScoreBoss or not self.data.tbCusParam.bSettlement and self.data.tbCusParam.nSeason ~= nil then
else
local sStr = ConfigTable.GetUIText("ScoreBoss_Settlement")
EventManager.Hit(EventId.OpenMessageBox, sStr)
return
end
end
return EventReminderCellCtrl