46f967a584
EN: 1.6.0.84 CN: 1.6.0.87 JP: 1.6.0.88 KR: 1.6.0.91
140 lines
4.9 KiB
Lua
140 lines
4.9 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
|
|
function StorySetChapterItemCtrl:OnBtnClick_AAA()
|
|
end
|
|
function StorySetChapterItemCtrl:OnEvent_AAA()
|
|
end
|
|
return StorySetChapterItemCtrl
|