Files
StellaSora_DataLua/lua/game/ui/mainlineex/storyentrancectrl.lua
T
SL1900 35c8d87e86 Update - 1.4.0.73
EN: 1.4.0.73
CN: 1.4.0.74
JP: 1.4.0.77
KR: 1.4.0.80
2025-12-25 19:00:00 +09:00

243 lines
6.9 KiB
Lua

local BaseCtrl = require("GameCore.UI.BaseCtrl")
local AvgData = PlayerData.Avg
local StoryEntranceCtrl = class("StoryEntranceCtrl", BaseCtrl)
StoryEntranceCtrl._mapNodeConfig = {
btnMainline = {
sNodeName = "btnMainline",
sComponentName = "UIButton",
callback = "OnBtn_ClickMainline"
},
btnNovaStory = {
sNodeName = "btnNovaStory",
sComponentName = "UIButton",
callback = "OnBtn_ClickNovaStory"
},
btnActivity = {
sNodeName = "btnActivity",
sComponentName = "UIButton",
callback = "OnBtn_ClickActivity"
},
txtMainlineTilte = {
sNodeName = "txtMainlineTilte",
sComponentName = "TMP_Text",
sLanguageId = "WorldMap_MainLine_Avg"
},
txtCurMainline = {
sNodeName = "txtCurMainline",
sComponentName = "TMP_Text",
sLanguageId = "Continue_MainlineStory"
},
txtNovaStoryTilte = {
sNodeName = "txtNovaStoryTilte",
sComponentName = "TMP_Text",
sLanguageId = "Nova_Story"
},
txtCurNovaStory = {
sNodeName = "txtCurNovaStory",
sComponentName = "TMP_Text",
sLanguageId = "Nova_Story_Desc"
},
txtActivityTilte = {
sNodeName = "txtActivityTilte",
sComponentName = "TMP_Text",
sLanguageId = "Activity_Review"
},
txtActivity = {
sNodeName = "txtActivity",
sComponentName = "TMP_Text",
sLanguageId = "Previous_Activity_Plot"
},
btnMainlineQuickEntrance = {
sNodeName = "btnMainlineQuickEntrance",
sComponentName = "UIButton",
callback = "OnBtn_ClickMainlineQuickEntrance"
},
txtMainlineQuickTitle = {
sNodeName = "txtMainlineQuickTitle",
sComponentName = "TMP_Text",
sLanguageId = "MainLine_Progress"
},
imgMainlinceChapterBg = {
sNodeName = "imgMainlinceChapterBg",
sComponentName = "Image"
},
txtMainlineChapter = {
sNodeName = "txtMainlineChapter",
sComponentName = "TMP_Text"
},
txtRecentStoryQuickTitle = {
sNodeName = "txtRecentStoryQuickTitle",
sComponentName = "TMP_Text",
sLanguageId = "Continue_Reading"
},
btnRecentStoryQuickEntrance = {
sNodeName = "btnRecentStoryQuickEntrance",
sComponentName = "UIButton",
callback = "OnBtn_ClickRecentStoryQuickEntrance"
},
goRecentStory = {
sNodeName = "goRecentStory",
sComponentName = "GameObject"
},
goNoStory = {sNodeName = "goNoStory", sComponentName = "GameObject"},
imgRecentStoryBg = {
sNodeName = "imgRecentStoryBg",
sComponentName = "Image"
},
txtRecentStoryTitle = {
sNodeName = "txtRecentStoryTitle",
sComponentName = "TMP_Text"
},
txtNoProgress = {
sNodeName = "txtNoProgress",
sComponentName = "TMP_Text",
sLanguageId = "No_Progress_Yet"
},
txtActivityQuickTitle = {
sNodeName = "txtActivityQuickTitle",
sComponentName = "TMP_Text",
sLanguageId = "Latest_Release"
},
btnActivityQuickEntrance = {
sNodeName = "btnActivityQuickEntrance",
sComponentName = "UIButton",
callback = "OnBtn_ClickActivityQuickEntrance"
},
goActivityStory = {
sNodeName = "goActivityStory",
sComponentName = "GameObject"
},
goNoActivity = {
sNodeName = "goNoActivity",
sComponentName = "GameObject"
},
imgActivityStoryBg = {
sNodeName = "imgActivityStoryBg",
sComponentName = "Image"
},
txtActivityStoryTitle = {
sNodeName = "txtActivityStoryTitle",
sComponentName = "TMP_Text"
},
txtComingSoon = {
sNodeName = "txtComingSoon",
sComponentName = "TMP_Text",
sLanguageId = "RegusBoss_NotOpenItem"
},
btnBack = {
sComponentName = "UIButton",
callback = "OnBtn_ClickBack"
},
btnHome = {
sComponentName = "UIButton",
callback = "OnBtn_ClickHome"
},
txtActivityLock = {
sNodeName = "txtActivityLock",
sComponentName = "TMP_Text",
sLanguageId = "StoryEntrance_Activity_Lock"
},
redDotNovaStory = {},
redDotMainline = {}
}
StoryEntranceCtrl._mapEventConfig = {}
StoryEntranceCtrl._mapRedDotConfig = {
[RedDotDefine.Story_Set] = {
sNodeName = "redDotNovaStory"
},
[RedDotDefine.Map_MainLine_Entrance] = {
sNodeName = "redDotMainline"
}
}
function StoryEntranceCtrl:Awake()
local callback = function()
self.bHasAchievementData = true
end
PlayerData.Achievement:SendAchievementInfoReq(callback)
end
function StoryEntranceCtrl:FadeIn()
EventManager.Hit(EventId.SetTransition)
end
function StoryEntranceCtrl:OnEnable()
self.bHasActivityStorys = false
self.bHasNovaStorys = false
self:RefreshMainlineQuickEntranceState()
self:RefreshRecentStoryQuickEntranceState()
self:RefreshComingSoonState()
end
function StoryEntranceCtrl:OnDisable()
end
function StoryEntranceCtrl:RefreshMainlineQuickEntranceState()
local curChapter = AvgData:GetRecentChapterId()
local curStoryId = AvgData:GetRecentStoryId(curChapter)
local storConfig = ConfigTable.GetData_Story(curStoryId)
if storConfig.IsLast == true and AvgData:IsStoryReaded(curStoryId) == true then
curChapter = curChapter + 1
local nextChapterConfig = ConfigTable.GetData("StoryChapter", curChapter, "")
if nextChapterConfig ~= nil then
if AvgData:IsStoryChapterShow(curChapter) == true then
curStoryId = AvgData:GetRecentStoryId(curChapter)
else
curChapter = curChapter - 1
end
else
curChapter = curChapter - 1
end
end
local chapterConfig = ConfigTable.GetData("StoryChapter", curChapter, "")
local storyConfig = ConfigTable.GetData_Story(curStoryId)
local title = chapterConfig.Name .. " " .. storyConfig.Index
NovaAPI.SetTMPText(self._mapNode.txtMainlineChapter, title)
self:SetPngSprite(self._mapNode.imgMainlinceChapterBg, "UI/big_sprites/banner_avg_chapter" .. curChapter)
self.curChapter = curChapter
self.curStoryId = curStoryId
end
function StoryEntranceCtrl:RefreshRecentStoryQuickEntranceState()
local bHasRecentStory = false
self._mapNode.goRecentStory:SetActive(bHasRecentStory)
self._mapNode.goNoStory:SetActive(not bHasRecentStory)
end
function StoryEntranceCtrl:RefreshComingSoonState()
local bHasActivity = false
self._mapNode.goActivityStory:SetActive(bHasActivity)
self._mapNode.goNoActivity:SetActive(not bHasActivity)
end
function StoryEntranceCtrl:OnBtn_ClickMainline()
EventManager.Hit(EventId.OpenPanel, PanelId.StoryChapter)
end
function StoryEntranceCtrl:OnBtn_ClickNovaStory()
PlayerData.StorySet:TryOpenStorySetPanel(function()
EventManager.Hit(EventId.OpenPanel, PanelId.StorySet)
end)
end
function StoryEntranceCtrl:OnBtn_ClickActivity()
if not self.bHasActivityStorys then
local data = {
nType = AllEnum.MessageBox.Alert,
sContent = ConfigTable.GetUIText("NotHave_Story_WaitUpdate"),
sContentSub = ""
}
EventManager.Hit(EventId.OpenMessageBox, data)
return
end
end
function StoryEntranceCtrl:OnBtn_ClickMainlineQuickEntrance()
local isUnlock, lockText = PlayerData.Avg:IsStoryChapterUnlock(self.curChapter)
if not isUnlock then
EventManager.Hit(EventId.OpenMessageBox, lockText)
else
EventManager.Hit(EventId.OpenPanel, PanelId.MainlineEx, self.curChapter)
end
end
function StoryEntranceCtrl:OnBtn_ClickRecentStoryQuickEntrance()
end
function StoryEntranceCtrl:OnBtn_ClickActivityQuickEntrance()
end
function StoryEntranceCtrl:OnBtn_ClickHome()
PanelManager.Home()
end
function StoryEntranceCtrl:OnBtn_ClickBack()
EventManager.Hit(EventId.ClosePanel, PanelId.StoryEntrance)
end
return StoryEntranceCtrl