Files
StellaSora_DataLua/lua/game/ui/storyset/storysetchapteritemctrl.lua
T
SL1900 80af235e05 Update - 1.12.0.120
EN: 1.12.0.120
CN: 1.12.0.120
JP: 1.12.0.124
KR: 1.12.0.124
2026-06-30 14:30:00 +09:00

136 lines
4.8 KiB
Lua

local StorySetChapterItemCtrl = class("StorySetChapterItemCtrl", BaseCtrl)
local ClientManager = CS.ClientManager.Instance
StorySetChapterItemCtrl._mapNodeConfig = {
animRoot = {sNodeName = "AnimRoot", sComponentName = "Animator"},
goEmpty = {},
goItem = {},
imgChapter = {sComponentName = "Image"},
imgTitleBg = {},
txtTitle = {sComponentName = "TMP_Text"},
txtChapterName = {sComponentName = "TMP_Text"},
goLock = {},
txtLock = {sComponentName = "TMP_Text"},
goRedDot = {},
goHighLight = {}
}
StorySetChapterItemCtrl._mapEventConfig = {}
StorySetChapterItemCtrl._mapRedDotConfig = {}
function StorySetChapterItemCtrl:PlayAnim(bIn)
local nAnimLen = 0
local sAnimName = ""
if bIn then
sAnimName = self.bUnlock and "StorySetPanel_chapter_in" or "StorySetPanel_chapter_Lock"
else
sAnimName = "StorySetPanel_chapter_out"
end
nAnimLen = NovaAPI.GetAnimClipLength(self._mapNode.animRoot, {sAnimName})
self._mapNode.animRoot:Play(sAnimName)
return nAnimLen
end
function StorySetChapterItemCtrl:PlayOutAnim()
local sAnimName = "StorySetPanel_chapter_out2"
local nAnimLen = NovaAPI.GetAnimClipLength(self._mapNode.animRoot, {sAnimName})
self._mapNode.animRoot:Play(sAnimName)
return nAnimLen
end
function StorySetChapterItemCtrl:RefreshItem(data)
self.bUnlock = true
local bEmpty = false
self._mapNode.goLock.gameObject:SetActive(false)
self._mapNode.goRedDot.gameObject:SetActive(false)
self._mapNode.goHighLight.gameObject:SetActive(false)
if data == nil then
bEmpty = true
NovaAPI.SetTMPText(self._mapNode.txtChapterName, ConfigTable.GetUIText("StorySet_Chapter_Empty"))
self._mapNode.imgTitleBg.gameObject:SetActive(false)
else
self.bUnlock = data.bUnlock
self._mapNode.goLock.gameObject:SetActive(not data.bUnlock)
local nChapterId = data.nId
local mapCfg = ConfigTable.GetData("StorySetChapter", nChapterId)
if mapCfg ~= nil then
self._mapNode.imgTitleBg.gameObject:SetActive(true)
NovaAPI.SetTMPText(self._mapNode.txtTitle, mapCfg.Title)
if not data.bUnlock then
bEmpty = true
if mapCfg.OpenTime ~= "" then
local nOpenTime = ClientManager:ISO8601StrToTimeStamp(mapCfg.OpenTime)
local timerCount = function()
local sTimeStr = ""
local nCurTime = ClientManager.serverTimeStamp
local nRemainTime = nOpenTime - nCurTime
if 0 <= nRemainTime then
local day = math.floor(nRemainTime / 86400)
local hour = math.floor(nRemainTime / 3600)
local min = math.floor((nRemainTime - hour * 3600) / 60)
local sec = nRemainTime - hour * 3600 - min * 60
if 0 < day then
sTimeStr = orderedFormat(ConfigTable.GetUIText("StorySet_Chapter_Open_Day"), day)
elseif 0 < hour then
sTimeStr = orderedFormat(ConfigTable.GetUIText("StorySet_Chapter_Open_Hour"), hour)
elseif 0 < min then
sTimeStr = orderedFormat(ConfigTable.GetUIText("StorySet_Chapter_Open_Min"), min)
elseif 0 <= sec then
sTimeStr = orderedFormat(ConfigTable.GetUIText("StorySet_Chapter_Open_Sec"), sec)
end
NovaAPI.SetTMPText(self._mapNode.txtLock, orderedFormat(ConfigTable.GetUIText("StorySet_Chapter_Open_Time"), sTimeStr))
else
if self.unlockTimer ~= nil then
self.unlockTimer:Cancel()
end
self.unlockTimer = nil
EventManager.Hit("StorySetChapterRefresh")
end
end
if self.unlockTimer ~= nil then
self.unlockTimer:Cancel()
self.unlockTimer = nil
end
timerCount()
self.unlockTimer = self:AddTimer(0, 1, function()
timerCount()
end, true, true, false)
else
NovaAPI.SetTMPText(self._mapNode.txtLock, mapCfg.LockText)
end
NovaAPI.SetTMPText(self._mapNode.txtChapterName, ConfigTable.GetUIText("StorySet_Chapter_Empty"))
else
self:SetPngSprite(self._mapNode.imgChapter, "Icon/MapEpisode/" .. mapCfg.Icon)
NovaAPI.SetTMPText(self._mapNode.txtChapterName, mapCfg.Name)
end
local bHighLight = mapCfg.IsHighLight
bHighLight = bHighLight and RedDotManager.GetValid(RedDotDefine.Story_Set_Chapter, {
mapCfg.TabId,
data.nId
})
self._mapNode.goHighLight.gameObject:SetActive(bHighLight)
end
RedDotManager.RegisterNode(RedDotDefine.Story_Set_Chapter, {
mapCfg.TabId,
data.nId
}, self._mapNode.goRedDot, nil, nil, true)
end
self._mapNode.goEmpty.gameObject:SetActive(bEmpty)
self._mapNode.goItem.gameObject:SetActive(not bEmpty)
self:PlayAnim(true)
end
function StorySetChapterItemCtrl:Awake()
end
function StorySetChapterItemCtrl:FadeIn()
end
function StorySetChapterItemCtrl:FadeOut()
end
function StorySetChapterItemCtrl:OnEnable()
end
function StorySetChapterItemCtrl:OnDisable()
if self.unlockTimer ~= nil then
self.unlockTimer:Cancel()
self.unlockTimer = nil
end
end
function StorySetChapterItemCtrl:OnDestroy()
end
function StorySetChapterItemCtrl:OnRelease()
end
return StorySetChapterItemCtrl