forked from endernon/PGRData
1039 lines
40 KiB
Lua
1039 lines
40 KiB
Lua
|
local XUiGridStoryChapterDP = require("XUi/XUiFubenShortStory/XUiGridStoryChapterDP")
|
|||
|
local XUiGridExploreChapterDP = require("XUi/XUiFubenShortStory/XUiGridExploreChapterDP")
|
|||
|
local XUiFubenMainLineChapterDP = XLuaUiManager.Register(XLuaUi,"UiFubenMainLineChapterDP")
|
|||
|
local XUiFubenMainLineQuickJumpBtnDP = require("XUi/XUiFubenShortStory/XUiFubenMainLineQuickJumpBtnDP")
|
|||
|
local XUiGridTreasureGradeDP = require("XUi/XUiFubenShortStory/XUiGridTreasureGradeDP")
|
|||
|
function XUiFubenMainLineChapterDP:OnAwake()
|
|||
|
self:AddListener()
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnStart(chapterId, stageId, hideDiffTog)
|
|||
|
if self.LastData then
|
|||
|
self.ChapterId = self.LastData.ChapterId or chapterId
|
|||
|
self.StageId = self.LastData.StageId or stageId
|
|||
|
self.HideDiffTog = self.LastData.HideDiffTog or hideDiffTog
|
|||
|
self.LastData = nil
|
|||
|
else
|
|||
|
self.ChapterId = chapterId
|
|||
|
self.StageId = stageId
|
|||
|
self.HideDiffTog = hideDiffTog
|
|||
|
end
|
|||
|
--当前难度
|
|||
|
self.CurDiff = XFubenShortStoryChapterConfigs.GetDifficultByChapterId(self.ChapterId)
|
|||
|
--是否有探索组id
|
|||
|
self.IsExploreMod = XFubenShortStoryChapterConfigs.CheckChapterTypeIsExplore(self.ChapterId)
|
|||
|
--ShortStoryChapter表的Id
|
|||
|
self.ChapterMainId = XFubenShortStoryChapterConfigs.GetChapterMainIdByChapterId(self.ChapterId)
|
|||
|
self.OrderId = XFubenShortStoryChapterConfigs.GetChapterOrderIdByChapterId(self.ChapterId)
|
|||
|
self.ZhouMuId = XFubenShortStoryChapterConfigs.GetZhouMuId(self.ChapterMainId)
|
|||
|
|
|||
|
self.Opened = false
|
|||
|
self.IsOnZhouMu = false
|
|||
|
self.GridTreasureList = {}
|
|||
|
self.GridMultipleWeeksTaskList = {}
|
|||
|
self.GridChapterList = {} --存的是各种Chapter的预制体实例列表
|
|||
|
self.QuickJumpBtnList = {}
|
|||
|
self.PanelExploreBottom = {}
|
|||
|
self.CurChapterGrid = nil
|
|||
|
self.CurChapterGridName = ""
|
|||
|
self.PanelStageDetailInst = nil
|
|||
|
|
|||
|
self.PanelTreasure.gameObject:SetActiveEx(false)
|
|||
|
self.ImgRedProgress.gameObject:SetActiveEx(false)
|
|||
|
|
|||
|
--保存初始颜色
|
|||
|
self.OriginalColors = {
|
|||
|
TxtChapterNameColor = self.TxtChapterName.color, --章节名称
|
|||
|
TxtLeftTimeTipColor = self.Text_1.color, --剩余时间描述
|
|||
|
TxtLeftTimeColor = self.TxtLeftTime.color, --剩余时间
|
|||
|
StarColor = self.ImageLine.color, --星星
|
|||
|
ImageBottomColor = self.ImageBottom.color, --底部栏
|
|||
|
TxtStarNumColor = self.TxtStarNum.color, --星星数量
|
|||
|
TxtDescrColor = self.Txet.color, --收集进度
|
|||
|
Triangle0Color = self.Triangle0.color, --底部栏左侧三角形
|
|||
|
Triangle1Color = self.Triangle1.color,
|
|||
|
Triangle2Color = self.Triangle2.color,
|
|||
|
Triangle3Color = self.Triangle3.color,
|
|||
|
}
|
|||
|
|
|||
|
-- 注册红点事件
|
|||
|
self.RedPointId = XRedPointManager.AddRedPointEvent(self.ImgRedProgress, self.OnCheckRewards, self, { XRedPointConditions.Types.CONDITION_SHORT_STORY_TREASURE }, self.ChapterId, false)
|
|||
|
self.RedPointZhouMuId = XRedPointManager.AddRedPointEvent(self.ImgRedProgress, self.OnCheckRewards, self, { XRedPointConditions.Types.CONDITION_ZHOUMU_TASK }, self.ZhouMuId, false)
|
|||
|
|
|||
|
-- 注册stage事件
|
|||
|
XEventManager.AddEventListener(XEventId.EVENT_FUBEN_STAGE_SYNC, self.OnSyncStage, self)
|
|||
|
XEventManager.AddEventListener(XEventId.EVENT_AUTO_FIGHT_START, self.OnAutoFightStart, self)
|
|||
|
|
|||
|
-- 难度toggle
|
|||
|
if not self.HideDiffTog then
|
|||
|
self.IsShowDifficultPanel = false
|
|||
|
self:UpdateDifficultToggles()
|
|||
|
else
|
|||
|
self.PanelTopDifficult.gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
self:InitPanelBottom()
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnEnable()
|
|||
|
-- 是否显示周目挑战按钮
|
|||
|
self.ZhouMuNumber = XDataCenter.FubenZhouMuManager.GetZhouMuNumber(self.ZhouMuId)
|
|||
|
self.PanelMultipleWeeksInfo.gameObject:SetActiveEx(self.ZhouMuNumber ~= 0)
|
|||
|
|
|||
|
if self.GridChapterList then
|
|||
|
for _, v in pairs(self.GridChapterList) do
|
|||
|
v:OnEnable()
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
self:UpdateDifficultToggles()
|
|||
|
self:UpdateCurChapter(self.ChapterId)
|
|||
|
|
|||
|
self:GoToLastPassStage()
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnDisable()
|
|||
|
if self.GridChapterList then
|
|||
|
for _, v in pairs(self.GridChapterList) do
|
|||
|
v:OnDisable()
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
if not self.IsExploreMod then
|
|||
|
local childUi = self:GetCurDetailChildUi()
|
|||
|
self:CloseChildUi(childUi)
|
|||
|
self:OnCloseStageDetail()
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnDestroy()
|
|||
|
self:DestroyActivityTimer()
|
|||
|
XEventManager.RemoveEventListener(XEventId.EVENT_FUBEN_STAGE_SYNC, self.OnSyncStage, self)
|
|||
|
XEventManager.RemoveEventListener(XEventId.EVENT_AUTO_FIGHT_START, self.OnAutoFightStart, self)
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:InitPanelBottom()
|
|||
|
self.PanelExploreBottom.Transform = self.PanelExploreBottomObj.transform
|
|||
|
self.PanelExploreBottom.GameObject = self.PanelExploreBottomObj.gameObject
|
|||
|
XTool.InitUiObject(self.PanelExploreBottom)
|
|||
|
|
|||
|
self.PanelExploreBottom.BtnNormalJump.gameObject:SetActiveEx(false)
|
|||
|
self.PanelExploreBottom.BtnHardlJump.gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:GoToLastPassStage()
|
|||
|
if self.CurChapterGrid then
|
|||
|
if self.IsExploreMod then
|
|||
|
if self.IsCanGoNearestStage or not self.Opened then
|
|||
|
self.CurChapterGrid:GoToNearestStage()
|
|||
|
self.Opened = true
|
|||
|
self.IsCanGoNearestStage = false
|
|||
|
end
|
|||
|
else
|
|||
|
if not self.Opened then
|
|||
|
local lastPassStageId = XDataCenter.ShortStoryChapterManager.GetLastPassStage(self.ChapterId)
|
|||
|
self.CurChapterGrid:GoToStage(lastPassStageId)
|
|||
|
self.Opened = true
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:StageLevelChangeAutoMove()
|
|||
|
if self.CurChapterGrid then
|
|||
|
if self.IsExploreMod then
|
|||
|
self.CurChapterGrid:GoToNearestStage()
|
|||
|
else
|
|||
|
local lastPassStageId = XDataCenter.ShortStoryChapterManager.GetLastPassStage(self.ChapterId)
|
|||
|
self.CurChapterGrid:GoToStage(lastPassStageId)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 打开关卡详情
|
|||
|
function XUiFubenMainLineChapterDP:OpenStage(stageId, needRefreshChapter)
|
|||
|
local stageInfo = XDataCenter.FubenManager.GetStageInfo(stageId)
|
|||
|
self.CurDiff = stageInfo.Difficult
|
|||
|
XDataCenter.ShortStoryChapterManager.SetCurDifficult(self.CurDiff)
|
|||
|
|
|||
|
self:UpdateDifficultToggles()
|
|||
|
|
|||
|
if needRefreshChapter then
|
|||
|
self:UpdateCurChapter(stageInfo.ChapterId)
|
|||
|
end
|
|||
|
self.CurChapterGrid:ClickStageGridByIndex(stageInfo.OrderId)
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:EnterFight(stage)
|
|||
|
if not XDataCenter.FubenManager.CheckPreFight(stage) then
|
|||
|
return
|
|||
|
end
|
|||
|
XLuaUiManager.Open("UiBattleRoleRoom", stage.StageId)
|
|||
|
end
|
|||
|
|
|||
|
-- 是否显示红点
|
|||
|
function XUiFubenMainLineChapterDP:OnCheckRewards(count, chapterId)
|
|||
|
if self.IsOnZhouMu then
|
|||
|
if self.ImgRedProgress and chapterId == self.ZhouMuId then
|
|||
|
self.ImgRedProgress.gameObject:SetActiveEx(count >= 0)
|
|||
|
end
|
|||
|
else
|
|||
|
if self.ImgRedProgress and chapterId == self.ChapterId then
|
|||
|
self.ImgRedProgress.gameObject:SetActiveEx(count >= 0)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:AddListener()
|
|||
|
self:RegisterClickEvent(self.BtnTreasureBg, self.OnBtnTreasureBgClick)
|
|||
|
self:RegisterClickEvent(self.Scrollbar, self.OnScrollbarClick)
|
|||
|
self:RegisterClickEvent(self.BtnBack, self.OnBtnBackClick)
|
|||
|
self:RegisterClickEvent(self.BtnMainUi, self.OnBtnMainUiClick)
|
|||
|
self:RegisterClickEvent(self.BtnTreasure, self.OnBtnTreasureClick)
|
|||
|
self:RegisterClickEvent(self.BtnCloseDifficult, self.OnBtnCloseDifficultClick)
|
|||
|
self:RegisterClickEvent(self.BtnCloseDetail, self.OnBtnCloseDetailClick)
|
|||
|
|
|||
|
self.BtnExItem.CallBack = function()
|
|||
|
self:OnBtnExItemClick()
|
|||
|
end
|
|||
|
self.BtnNormal.CallBack = function()
|
|||
|
self:OnBtnNormalClick(true)
|
|||
|
end
|
|||
|
self.BtnHard.CallBack = function()
|
|||
|
self:OnBtnHardClick(true)
|
|||
|
end
|
|||
|
self.BtnSwitch1MultipleWeeks.CallBack = function()
|
|||
|
self:OnBtnSwitch1MultipleWeeksClick()
|
|||
|
end
|
|||
|
self.BtnSwitch2Normal.CallBack = function()
|
|||
|
self:OnBtnSwitch2NormalClidk()
|
|||
|
end
|
|||
|
end
|
|||
|
-- auto
|
|||
|
function XUiFubenMainLineChapterDP:OnBtnCloseDetailClick()
|
|||
|
self:OnCloseStageDetail()
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnBtnCloseDifficultClick()
|
|||
|
self:UpdateDifficultToggles()
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnScrollbarClick()
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnBtnExItemClick()
|
|||
|
XLuaUiManager.Open("UiFubenExItemTip", self)
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnBtnBackClick()
|
|||
|
if self:CloseStageDetail() then
|
|||
|
return
|
|||
|
end
|
|||
|
self:Close()
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnBtnMainUiClick()
|
|||
|
XLuaUiManager.RunMain()
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnBtnNormalClick(IsAutoMove)
|
|||
|
if self.IsShowDifficultPanel then
|
|||
|
if self.CurDiff ~= XDataCenter.FubenManager.DifficultNormal then
|
|||
|
local unlock = XDataCenter.ShortStoryChapterManager.IsUnlock(self.ChapterId)
|
|||
|
local firstStage = XDataCenter.ShortStoryChapterManager.GetFirstStageByChapterId(self.ChapterId)
|
|||
|
if not unlock then
|
|||
|
XUiManager.TipMsg(XDataCenter.FubenManager.GetFubenOpenTips(firstStage), XUiManager.UiTipType.Wrong)
|
|||
|
return false
|
|||
|
end
|
|||
|
self.CurDiff = XDataCenter.FubenManager.DifficultNormal
|
|||
|
self:RefreshForChangeDiff(IsAutoMove)
|
|||
|
end
|
|||
|
self:UpdateDifficultToggles()
|
|||
|
else
|
|||
|
self:UpdateDifficultToggles(true)
|
|||
|
end
|
|||
|
return true
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnBtnHardClick(IsAutoMove)
|
|||
|
if self.IsShowDifficultPanel then
|
|||
|
if self.CurDiff ~= XDataCenter.FubenManager.DifficultHard then
|
|||
|
-- 检查困难开启
|
|||
|
if not XFunctionManager.DetectionFunction(XFunctionManager.FunctionName.FubenDifficulty) then
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
-- 检查主线副本活动
|
|||
|
local isActivity = XDataCenter.ShortStoryChapterManager.IsActivity(self.ChapterId)
|
|||
|
if isActivity then
|
|||
|
local chapterId = XFubenShortStoryChapterConfigs.GetChapterIdByIdAndDifficult(self.ChapterMainId, XDataCenter.FubenManager.DifficultHard)
|
|||
|
local ret, desc = XDataCenter.ShortStoryChapterManager.CheckActivityCondition(chapterId)
|
|||
|
if not ret then
|
|||
|
XUiManager.TipMsg(desc, XUiManager.UiTipType.Wrong)
|
|||
|
return false
|
|||
|
end
|
|||
|
end
|
|||
|
-- 检查困难这个章节解锁
|
|||
|
local isOpen = XDataCenter.ShortStoryChapterManager.IsOpen(self.ChapterId)
|
|||
|
local firstStage = XDataCenter.ShortStoryChapterManager.GetFirstStageByChapterId(self.ChapterId)
|
|||
|
if not isOpen then
|
|||
|
local chapterId = XFubenShortStoryChapterConfigs.GetChapterIdByIdAndDifficult(self.ChapterMainId, XDataCenter.FubenManager.DifficultHard)
|
|||
|
local ret, desc = XDataCenter.ShortStoryChapterManager.CheckOpenCondition(chapterId)
|
|||
|
if not ret then
|
|||
|
XUiManager.TipError(desc)
|
|||
|
return false
|
|||
|
end
|
|||
|
local tipMsg = XDataCenter.FubenManager.GetFubenOpenTips(firstStage)
|
|||
|
XUiManager.TipMsg(tipMsg)
|
|||
|
return false
|
|||
|
end
|
|||
|
self.CurDiff = XDataCenter.FubenManager.DifficultHard
|
|||
|
self:RefreshForChangeDiff(IsAutoMove)
|
|||
|
end
|
|||
|
self:UpdateDifficultToggles()
|
|||
|
else
|
|||
|
self:UpdateDifficultToggles(true)
|
|||
|
end
|
|||
|
return true
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:UpdateDifficultToggles(showAll)
|
|||
|
if showAll then
|
|||
|
self:SetBtnToggleActive(true, true, true)
|
|||
|
self.BtnCloseDifficult.gameObject:SetActiveEx(true)
|
|||
|
else
|
|||
|
if self.CurDiff == XDataCenter.FubenManager.DifficultNormal then
|
|||
|
self:SetBtnToggleActive(true, false, false)
|
|||
|
self.BtnNormal.transform:SetAsFirstSibling()
|
|||
|
elseif self.CurDiff == XDataCenter.FubenManager.DifficultHard then
|
|||
|
self:SetBtnToggleActive(false, true, false)
|
|||
|
self.BtnHard.transform:SetAsFirstSibling()
|
|||
|
else
|
|||
|
self:SetBtnToggleActive(false, false, true)
|
|||
|
end
|
|||
|
self.BtnCloseDifficult.gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
self.IsShowDifficultPanel = showAll
|
|||
|
|
|||
|
--Progress
|
|||
|
local chapterIds = XFubenShortStoryChapterConfigs.GetShortStoryChapterIds(self.ChapterMainId)
|
|||
|
-- 普通关卡
|
|||
|
if chapterIds[1] then
|
|||
|
local progress = XDataCenter.ShortStoryChapterManager.GetProgressByChapterId(chapterIds[1])
|
|||
|
self.TxtNormalProgress.text = progress
|
|||
|
end
|
|||
|
-- 困难关卡
|
|||
|
if chapterIds[2] then
|
|||
|
local progress = XDataCenter.ShortStoryChapterManager.GetProgressByChapterId(chapterIds[2])
|
|||
|
self.TxtHardProgress.text = progress
|
|||
|
end
|
|||
|
|
|||
|
-- 抢先体验活动倒计时
|
|||
|
self:UpdateActivityTime()
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:UpdateChapterTxt()
|
|||
|
local shortStoryTitle = XFubenShortStoryChapterConfigs.GetStageTitleByChapterId(self.ChapterId)
|
|||
|
self.TxtChapter.text = (shortStoryTitle or "")
|
|||
|
self.TxtChapterName.text = XFubenShortStoryChapterConfigs.GetChapterEnByChapterId(self.ChapterId)
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:SetBtnToggleActive(isNormal, isHard)
|
|||
|
self.BtnNormal.gameObject:SetActiveEx(isNormal)
|
|||
|
|
|||
|
self.BtnHard.gameObject:SetActiveEx(isHard)
|
|||
|
if isHard then
|
|||
|
local hardOpen = XFunctionManager.JudgeCanOpen(XFunctionManager.FunctionName.FubenDifficulty)
|
|||
|
local isOpen = XDataCenter.ShortStoryChapterManager.IsOpen(self.ChapterId)
|
|||
|
hardOpen = hardOpen and isOpen
|
|||
|
self.PanelHardOn.gameObject:SetActiveEx(hardOpen)
|
|||
|
self.PanelHardOff.gameObject:SetActiveEx(not hardOpen)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:RefreshForChangeDiff(IsAutoMove)
|
|||
|
if XTool.UObjIsNil(self.GameObject) then return end
|
|||
|
|
|||
|
XDataCenter.ShortStoryChapterManager.SetCurDifficult(self.CurDiff)
|
|||
|
local chapterId = XFubenShortStoryChapterConfigs.GetChapterIdByDifficultAndOrderId(self.CurDiff, self.OrderId)
|
|||
|
|
|||
|
self:UpdateCurChapter(chapterId)
|
|||
|
if IsAutoMove then
|
|||
|
self:StageLevelChangeAutoMove()
|
|||
|
end
|
|||
|
self:PlayAnimation("AnimEnable2")
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:SetPanelBottomActive(isActive)
|
|||
|
local panelParent = self.IsExploreMod and self.ExPanel or self.NorPanel
|
|||
|
self.PanelBottom.gameObject:SetActiveEx(isActive)
|
|||
|
self.PanelExploreBottom.GameObject:SetActiveEx(isActive and self.IsExploreMod and not self.IsOnZhouMu)
|
|||
|
self.PanelBottom.transform:SetParent(panelParent, false)
|
|||
|
self.PanelBottom.transform.localPosition = CS.UnityEngine.Vector3.zero
|
|||
|
self.FubenEx.gameObject:SetActiveEx(self.IsExploreMod)
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:UpdateCurChapter(chapterId)
|
|||
|
if self.IsOnZhouMu then
|
|||
|
-- 切换到周目模式
|
|||
|
self:OnBtnSwitch1MultipleWeeksClick()
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if not chapterId then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
self.ChapterId = chapterId
|
|||
|
self.IsExploreMod = XFubenShortStoryChapterConfigs.CheckChapterTypeIsExplore(self.ChapterId)
|
|||
|
|
|||
|
for _, v in pairs(self.GridChapterList) do
|
|||
|
v:Hide()
|
|||
|
end
|
|||
|
local data = {
|
|||
|
ChapterId = self.ChapterId,
|
|||
|
HideStageCb = handler(self, self.HideStageDetail),
|
|||
|
ShowStageCb = handler(self, self.ShowStageDetail),
|
|||
|
}
|
|||
|
|
|||
|
data.StageList = XFubenShortStoryChapterConfigs.GetStageIdByChapterId(self.ChapterId)
|
|||
|
|
|||
|
local grid = self.CurChapterGrid
|
|||
|
local prefabName = XFubenShortStoryChapterConfigs.GetPrefabNameByChapterId(self.ChapterId)
|
|||
|
if self.CurChapterGridName ~= prefabName then
|
|||
|
local gameObject = self.PanelChapter:LoadPrefab(prefabName)
|
|||
|
if gameObject == nil or not gameObject:Exist() then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if self.IsExploreMod then
|
|||
|
grid = XUiGridExploreChapterDP.New(self, gameObject, XDataCenter.FubenManager.StageType.ShortStory)
|
|||
|
else
|
|||
|
self.AnimBeijingEnable = gameObject:FindTransform("BgQieHuan1")
|
|||
|
self.AnimBeijingDisable = gameObject:FindTransform("BgQieHuan2")
|
|||
|
|
|||
|
local autoChangeBgArgs
|
|||
|
if self.AnimBeijingEnable and self.AnimBeijingDisable then
|
|||
|
|
|||
|
self.RImgBg1 = gameObject:FindTransform("RImgChapterBg1"):GetComponent("CanvasGroup")
|
|||
|
self.RImgBg2 = gameObject:FindTransform("RImgChapterBg2"):GetComponent("CanvasGroup")
|
|||
|
|
|||
|
autoChangeBgArgs = {
|
|||
|
AutoChangeBgCb = function(seletBgIndex, isPlayAnim)
|
|||
|
-- if autoChangeBgFlag then
|
|||
|
-- self.AnimBeijingEnable:PlayTimelineAnimation()
|
|||
|
-- else
|
|||
|
-- if self.FirstSetBg then
|
|||
|
-- self.FirstSetBg = nil
|
|||
|
-- return
|
|||
|
-- end
|
|||
|
-- self.AnimBeijingDisable:PlayTimelineAnimation()
|
|||
|
-- end
|
|||
|
local selectOrder = math.abs(seletBgIndex)
|
|||
|
for i = 1, #autoChangeBgArgs.StageIndexList + 1 do
|
|||
|
local tempCanvasGroup = gameObject:FindTransform("RImgChapterBg"..i):GetComponent("CanvasGroup")
|
|||
|
if i ~= selectOrder then
|
|||
|
tempCanvasGroup.alpha = 0
|
|||
|
else
|
|||
|
tempCanvasGroup.alpha = 1
|
|||
|
end
|
|||
|
end
|
|||
|
if isPlayAnim then
|
|||
|
gameObject:FindTransform("BgQieHuan"..seletBgIndex):PlayTimelineAnimation()
|
|||
|
end
|
|||
|
-- 切换标题、剩余时间、星数进度文本颜色
|
|||
|
local chapterTextColorList = XFubenShortStoryChapterConfigs.GetChapterTextColorList(self.ChapterId)
|
|||
|
if chapterTextColorList then
|
|||
|
local colorSixTeen = chapterTextColorList[selectOrder]
|
|||
|
if colorSixTeen then
|
|||
|
local _, color = CS.UnityEngine.ColorUtility.TryParseHtmlString(colorSixTeen)
|
|||
|
self.TxtChapter.color = color
|
|||
|
self.TxtChapterName.color = color
|
|||
|
self.Text_1.color = color
|
|||
|
self.BtnBack.transform:Find("TextBack"):GetComponent("Text").color = color
|
|||
|
self.BtnMainUi.transform:Find("TextMainUi"):GetComponent("Text").color = color
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
CS.XAudioManager.PlaySound(XSoundManager.UiBasicsMusic.UiActivityBranch_SwitchBg)
|
|||
|
end,
|
|||
|
DatumLinePrecent = XFubenShortStoryChapterConfigs.GetDatumLinePrecentByChapterId(chapterId),
|
|||
|
StageIndexList = XFubenShortStoryChapterConfigs.GetMoveStageIndexByChapterId(chapterId),
|
|||
|
}
|
|||
|
end
|
|||
|
|
|||
|
grid = XUiGridStoryChapterDP.New(self, gameObject, autoChangeBgArgs)
|
|||
|
end
|
|||
|
grid.Transform:SetParent(self.PanelChapter, false)
|
|||
|
|
|||
|
self.CurChapterGridColors = grid:GetColors()
|
|||
|
--保存星星颜色,传给XUiPanelStars与XUiGriTreasureGrade改变星星颜色
|
|||
|
self.StarColor = self.CurChapterGridColors.StarColor
|
|||
|
self.StarDisColor = self.CurChapterGridColors.StarDisColor
|
|||
|
|
|||
|
self.CurChapterGridName = prefabName
|
|||
|
self.CurChapterGrid = grid
|
|||
|
self.GridChapterList[prefabName] = grid
|
|||
|
end
|
|||
|
|
|||
|
grid:UpdateChapterGrid(data)
|
|||
|
grid:Show()
|
|||
|
self:UpdateChapterStars()
|
|||
|
|
|||
|
-- if self.AnimBeijingEnable and self.AnimBeijingDisable then
|
|||
|
-- CS.XTool.WaitForEndOfFrame(function()
|
|||
|
-- local fitCondition = grid.FirstSetBg
|
|||
|
-- if not fitCondition then
|
|||
|
-- self.RImgBg1.gameObject:SetActiveEx(true)
|
|||
|
-- self.AnimBeijingEnable.gameObject:SetActiveEx(false)
|
|||
|
-- self.AnimBeijingEnable.gameObject:SetActiveEx(true)
|
|||
|
-- self.RImgBg1.alpha = 1
|
|||
|
-- else
|
|||
|
-- self.RImgBg2.gameObject:SetActiveEx(true)
|
|||
|
-- self.AnimBeijingDisable.gameObject:SetActiveEx(false)
|
|||
|
-- self.AnimBeijingDisable.gameObject:SetActiveEx(true)
|
|||
|
-- self.RImgBg2.alpha = 1
|
|||
|
-- end
|
|||
|
-- end)
|
|||
|
-- end
|
|||
|
--进入首先显示第一个bg
|
|||
|
if self.RImgBg1 and not grid.firstSetChangeBg then
|
|||
|
self.RImgBg1.gameObject:SetActiveEx(true)
|
|||
|
self.RImgBg1.alpha = 1
|
|||
|
end
|
|||
|
|
|||
|
--进入初始化标题颜色
|
|||
|
if not grid.firstSetChangeBg then
|
|||
|
local chapterTextColorList = XFubenShortStoryChapterConfigs.GetChapterTextColorList(self.ChapterId)
|
|||
|
if chapterTextColorList then
|
|||
|
local colorSixteen = chapterTextColorList[1]
|
|||
|
if colorSixteen then
|
|||
|
local _, color = CS.UnityEngine.ColorUtility.TryParseHtmlString(colorSixteen)
|
|||
|
self.TxtChapter.color = color
|
|||
|
self.TxtChapterName.color = color
|
|||
|
self.Text_1.color = color
|
|||
|
self.BtnBack.transform:Find("TextBack"):GetComponent("Text").color = color
|
|||
|
self.BtnMainUi.transform:Find("TextMainUi"):GetComponent("Text").color = color
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
end
|
|||
|
|
|||
|
if self.StageId then
|
|||
|
self:OpenStage(self.StageId)
|
|||
|
self.StageId = nil
|
|||
|
end
|
|||
|
|
|||
|
XEventManager.DispatchEvent(XEventId.EVENT_GUIDE_STEP_OPEN_EVENT)
|
|||
|
self:UpdateChapterTxt()
|
|||
|
self:UpdateColor()
|
|||
|
self:UpdateExploreBottom()
|
|||
|
self:SetPanelBottomActive(true)
|
|||
|
self:UpdateFubenExploreItem()
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:UpdateColor()
|
|||
|
--章节标题
|
|||
|
-- self.TxtChapter.color = self.CurChapterGridColors.TxtChapterNameColor or self.OriginalColors.TxtChapterNameColor
|
|||
|
-- self.TxtChapterName.color = self.CurChapterGridColors.TxtChapterNameColor or self.OriginalColors.TxtChapterNameColor
|
|||
|
--剩余时间
|
|||
|
-- self.Text_1.color = self.CurChapterGridColors.TxtLeftTimeTipColor or self.OriginalColors.TxtLeftTimeTipColor
|
|||
|
self.TxtLeftTime.color = self.CurChapterGridColors.TxtLeftTimeColor or self.OriginalColors.TxtLeftTimeColor
|
|||
|
|
|||
|
--底部栏
|
|||
|
self.ImageBottom.color = self.CurChapterGridColors.ImageBottomColor or self.OriginalColors.ImageBottomColor
|
|||
|
--底部栏左侧三角形
|
|||
|
self.Triangle0.color = self.CurChapterGridColors.Triangle0Color or self.OriginalColors.Triangle0Color
|
|||
|
self.Triangle1.color = self.CurChapterGridColors.Triangle1Color or self.OriginalColors.Triangle1Color
|
|||
|
self.Triangle2.color = self.CurChapterGridColors.Triangle2Color or self.OriginalColors.Triangle2Color
|
|||
|
self.Triangle3.color = self.CurChapterGridColors.Triangle3Color or self.OriginalColors.Triangle3Color
|
|||
|
|
|||
|
--章节奖励描述的星星图标
|
|||
|
self.ImageLine.color = self.CurChapterGridColors.StarColor or self.OriginalColors.StarColor
|
|||
|
--章节奖励描述的星星数量描述
|
|||
|
self.TxtStarNum.color = self.CurChapterGridColors.TxtStarNumColor or self.OriginalColors.TxtStarNumColor
|
|||
|
--章节奖励描述的收集进度
|
|||
|
self.Txet.color = self.CurChapterGridColors.TxtDescrColor or self.OriginalColors.TxtDescrColor
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:UpdateExploreBottom()
|
|||
|
if not self.IsExploreMod then
|
|||
|
return
|
|||
|
end
|
|||
|
self.CanPlayList = {}
|
|||
|
|
|||
|
local normalChapterId = XFubenShortStoryChapterConfigs.GetChapterIdByDifficultAndOrderId(XDataCenter.FubenManager.DifficultNormal, self.OrderId)
|
|||
|
local hardChapterId = XFubenShortStoryChapterConfigs.GetChapterIdByDifficultAndOrderId(XDataCenter.FubenManager.DifficultHard, self.OrderId)
|
|||
|
|
|||
|
self:SetCanPlayStageList(normalChapterId, XDataCenter.FubenManager.DifficultNormal)
|
|||
|
self:SetCanPlayStageList(hardChapterId, XDataCenter.FubenManager.DifficultHard)
|
|||
|
|
|||
|
self:ReSetQuickJumpButton(normalChapterId, XDataCenter.FubenManager.DifficultNormal, self.PanelExploreBottom.BtnNormalJump)
|
|||
|
self:ReSetQuickJumpButton(hardChapterId, XDataCenter.FubenManager.DifficultHard, self.PanelExploreBottom.BtnHardlJump)
|
|||
|
|
|||
|
if self.CurChapterGrid then
|
|||
|
self.CurChapterGrid:SetCanPlayList(self.CanPlayList[self.CurDiff])
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:SetCanPlayStageList(chapterId, diff)
|
|||
|
if not chapterId then
|
|||
|
return
|
|||
|
end
|
|||
|
local stageIds = XFubenShortStoryChapterConfigs.GetStageIdByChapterId(chapterId)
|
|||
|
for index, stageId in pairs(stageIds) do
|
|||
|
if not self.CanPlayList[diff] then
|
|||
|
self.CanPlayList[diff] = {}
|
|||
|
end
|
|||
|
|
|||
|
local stageCfg = XDataCenter.FubenManager.GetStageCfg(stageId)
|
|||
|
local stageInfo = XDataCenter.FubenManager.GetStageInfo(stageId)
|
|||
|
local IsEgg = stageCfg.StageType == XFubenConfigs.STAGETYPE_FIGHTEGG or stageCfg.StageType == XFubenConfigs.STAGETYPE_STORYEGG
|
|||
|
local exploreGroupId = XFubenShortStoryChapterConfigs.GetExploreGroupIdByChapterId(chapterId)
|
|||
|
local exploreInfoList = XFubenShortStoryChapterConfigs.GetExploreGroupInfoByGroupId(exploreGroupId)
|
|||
|
local preShowIndex = exploreInfoList[index] or {}
|
|||
|
local IsShow = true
|
|||
|
for _, idx in pairs(preShowIndex or {}) do
|
|||
|
local Info = XDataCenter.FubenManager.GetStageInfo(stageIds[idx])
|
|||
|
if not Info or not Info.Passed then
|
|||
|
IsShow = false
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
if stageInfo.Unlock and IsShow then
|
|||
|
if not stageInfo.Passed and not IsEgg then
|
|||
|
table.insert(self.CanPlayList[diff], index)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:ReSetQuickJumpButton(chapterId, diff, jumpButton)
|
|||
|
if not chapterId then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if not self.QuickJumpBtnList[diff] then
|
|||
|
self.QuickJumpBtnList[diff] = {}
|
|||
|
end
|
|||
|
|
|||
|
local canPlayList = self.CanPlayList[diff]
|
|||
|
local quickJumpBtnList = self.QuickJumpBtnList[diff]
|
|||
|
local lenght = #canPlayList
|
|||
|
local stageIds = XFubenShortStoryChapterConfigs.GetStageIdByChapterId(chapterId)
|
|||
|
|
|||
|
for i = 1, lenght do
|
|||
|
local stageId = stageIds[canPlayList[i]]
|
|||
|
local quickJumpBtn = quickJumpBtnList[i]
|
|||
|
if not quickJumpBtn then
|
|||
|
local tempBtn = CS.UnityEngine.Object.Instantiate(jumpButton)
|
|||
|
tempBtn.gameObject:SetActiveEx(true)
|
|||
|
|
|||
|
quickJumpBtn = XUiFubenMainLineQuickJumpBtnDP.New(tempBtn, canPlayList[i], chapterId,
|
|||
|
function(index, clickStageId)
|
|||
|
self:OnQuickJumpClick(diff, index)
|
|||
|
XDataCenter.ShortStoryChapterManager.MarkNewJumpStageButtonEffectByStageId(clickStageId)
|
|||
|
quickJumpBtn.Transform:GetComponent("XUiButton"):ShowTag(false)
|
|||
|
end, XDataCenter.FubenManager.StageType.ShortStory)
|
|||
|
quickJumpBtnList[i] = quickJumpBtn
|
|||
|
else
|
|||
|
quickJumpBtn:UpdateNode(canPlayList[i], chapterId)
|
|||
|
quickJumpBtn.GameObject:SetActiveEx(true)
|
|||
|
end
|
|||
|
|
|||
|
quickJumpBtn.Transform:SetParent(self.transform, false)
|
|||
|
quickJumpBtn.Transform:SetParent(self.PanelExploreBottom.PanelNodeList, false)
|
|||
|
|
|||
|
XDataCenter.ShortStoryChapterManager.SaveNewJumpStageButtonEffect(stageId)
|
|||
|
local IsHaveNew = XDataCenter.ShortStoryChapterManager.CheckHaveNewJumpStageButtonByStageId(stageId)
|
|||
|
quickJumpBtn.Transform:GetComponent("XUiButton"):ShowTag(IsHaveNew)
|
|||
|
end
|
|||
|
|
|||
|
lenght = #quickJumpBtnList
|
|||
|
for i = #canPlayList + 1, lenght do
|
|||
|
quickJumpBtnList[i].GameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnQuickJumpClick(diff, index)
|
|||
|
if diff ~= self.CurDiff then
|
|||
|
local IsLock = false
|
|||
|
self.IsShowDifficultPanel = true
|
|||
|
if diff == XDataCenter.FubenManager.DifficultNormal then
|
|||
|
IsLock = self:OnBtnNormalClick(false)
|
|||
|
elseif diff == XDataCenter.FubenManager.DifficultHard then
|
|||
|
IsLock = self:OnBtnHardClick(false)
|
|||
|
end
|
|||
|
|
|||
|
if IsLock then
|
|||
|
self.CurChapterGrid:OnQuickJumpClick(index)
|
|||
|
end
|
|||
|
else
|
|||
|
self.CurChapterGrid:OnQuickJumpClick(index)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:CheckDetailOpen()
|
|||
|
local childUi = self:GetCurDetailChildUi()
|
|||
|
return XLuaUiManager.IsUiShow(childUi)
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:ShowStageDetail(stage)
|
|||
|
self.Stage = stage
|
|||
|
if self.IsExploreMod or self.IOnZhouMu then
|
|||
|
self:OpenExploreDetail()
|
|||
|
else
|
|||
|
local childUi = self:GetCurDetailChildUi()
|
|||
|
local enterStoryCb = handler(self, self.EnterFight)
|
|||
|
self:OpenOneChildUi(childUi, self, enterStoryCb)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnEnterStory(stageId)
|
|||
|
self.Stage = XDataCenter.FubenManager.GetStageCfg(stageId)
|
|||
|
local childUi = self:GetCurDetailChildUi()
|
|||
|
local enterStoryCb = handler(self, self.EnterFight)
|
|||
|
self:OpenOneChildUi(childUi, self, enterStoryCb)
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:HideStageDetail()
|
|||
|
if not self.Stage then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local childUi = self:GetCurDetailChildUi()
|
|||
|
local childUiObj = self:FindChildUiObj(childUi)
|
|||
|
if childUiObj then
|
|||
|
childUiObj:Hide()
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnCloseStageDetail()
|
|||
|
if self.CurChapterGrid then
|
|||
|
self.CurChapterGrid:CancelSelect()
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 更新左下角的奖励按钮的状态
|
|||
|
function XUiFubenMainLineChapterDP:UpdateChapterStars()
|
|||
|
local curStars
|
|||
|
local totalStars
|
|||
|
local received = true
|
|||
|
self.PanelDesc.gameObject:SetActiveEx(true)
|
|||
|
|
|||
|
if self.IsOnZhouMu then
|
|||
|
-- 周目奖励
|
|||
|
self.MultipleWeeksTxet.gameObject:SetActiveEx(true)
|
|||
|
self.TxtDesc.gameObject:SetActiveEx(false)
|
|||
|
self.ImgStarIcon.gameObject:SetActiveEx(false)
|
|||
|
|
|||
|
curStars, totalStars = XDataCenter.FubenZhouMuManager.GetZhouMuTaskProgress(self.ZhouMuId)
|
|||
|
received = XDataCenter.FubenZhouMuManager.ZhouMuTaskIsAllFinish(self.ZhouMuId)
|
|||
|
|
|||
|
XRedPointManager.Check(self.RedPointZhouMuId, self.ZhouMuId)
|
|||
|
else
|
|||
|
-- 收集奖励
|
|||
|
curStars, totalStars = XDataCenter.ShortStoryChapterManager.GetChapterStars(self.ChapterId)
|
|||
|
local treasureId = XFubenShortStoryChapterConfigs.GetTreasureIdByChapterId(self.ChapterId)
|
|||
|
for _, v in pairs(treasureId) do
|
|||
|
if not XDataCenter.ShortStoryChapterManager.IsTreasureGet(v) then
|
|||
|
received = false
|
|||
|
break
|
|||
|
end
|
|||
|
end
|
|||
|
self.MultipleWeeksTxet.gameObject:SetActiveEx(false)
|
|||
|
self.TxtDesc.gameObject:SetActiveEx(true)
|
|||
|
self.ImgStarIcon.gameObject:SetActiveEx(true)
|
|||
|
|
|||
|
XRedPointManager.Check(self.RedPointId, self.ChapterId)
|
|||
|
end
|
|||
|
|
|||
|
self.ImgJindu.fillAmount = totalStars > 0 and curStars / totalStars or 0
|
|||
|
self.ImgJindu.gameObject:SetActiveEx(true)
|
|||
|
self.TxtStarNum.text = CS.XTextManager.GetText("Fract", curStars, totalStars)
|
|||
|
self.ImgLingqu.gameObject:SetActiveEx(received)
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnBtnTreasureClick()
|
|||
|
if self:CloseStageDetail() then
|
|||
|
return
|
|||
|
end
|
|||
|
self:InitTreasureGrade()
|
|||
|
self.PanelTreasure.gameObject:SetActiveEx(true)
|
|||
|
self.PanelTop.gameObject:SetActiveEx(true)
|
|||
|
self:SetPanelBottomActive(true)
|
|||
|
self:PlayAnimation("TreasureEnable")
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:CloseStageDetail()
|
|||
|
if self:CheckDetailOpen() then
|
|||
|
if self.CurChapterGrid then
|
|||
|
self.CurChapterGrid:ScrollRectRollBack()
|
|||
|
end
|
|||
|
self:HideStageDetail()
|
|||
|
return true
|
|||
|
end
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnBtnTreasureBgClick()
|
|||
|
self:PlayAnimation("TreasureDisable", handler(self, function()
|
|||
|
self.PanelTreasure.gameObject:SetActiveEx(false)
|
|||
|
self.PanelTop.gameObject:SetActiveEx(true)
|
|||
|
self:SetPanelBottomActive(true)
|
|||
|
self:UpdateChapterStars()
|
|||
|
end))
|
|||
|
end
|
|||
|
|
|||
|
-- 点击切换到周目模式
|
|||
|
function XUiFubenMainLineChapterDP:OnBtnSwitch1MultipleWeeksClick()
|
|||
|
self.IsOnZhouMu = true
|
|||
|
self.TxtCurMWNum.text = self.ZhouMuNumber
|
|||
|
|
|||
|
local zhouMuChapter = XDataCenter.FubenZhouMuManager.GetZhouMuChapterData(self.ChapterMainId, true)
|
|||
|
|
|||
|
for _, v in pairs(self.GridChapterList) do
|
|||
|
v:Hide()
|
|||
|
end
|
|||
|
local data = {
|
|||
|
ChapterId = zhouMuChapter,
|
|||
|
HideStageCb = handler(self, self.HideStageDetail),
|
|||
|
ShowStageCb = handler(self, self.ShowStageDetail),
|
|||
|
}
|
|||
|
data.StageList = XFubenZhouMuConfigs.GetZhouMuChapterStages(zhouMuChapter.Id)
|
|||
|
|
|||
|
local grid = self.CurChapterGrid
|
|||
|
local prefabName = zhouMuChapter.PrefabName
|
|||
|
if self.CurChapterGridName ~= prefabName then
|
|||
|
local gameObject = self.PanelChapter:LoadPrefab(prefabName)
|
|||
|
if gameObject == nil or not gameObject:Exist() then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
grid = XUiGridStoryChapterDP.New(self, gameObject, nil, true)
|
|||
|
grid.Transform:SetParent(self.PanelChapter, false)
|
|||
|
self.CurChapterGridName = prefabName
|
|||
|
self.CurChapterGrid = grid
|
|||
|
self.GridChapterList[prefabName] = grid
|
|||
|
end
|
|||
|
|
|||
|
grid:UpdateChapterGrid(data)
|
|||
|
grid:Show()
|
|||
|
|
|||
|
self:UpdateChapterStars()
|
|||
|
self:UpdateChapterTxt()
|
|||
|
self:SetPanelBottomActive(true)
|
|||
|
|
|||
|
self.BtnSwitch1MultipleWeeks.gameObject:SetActiveEx(false)
|
|||
|
self.BtnSwitch2Normal.gameObject:SetActiveEx(true)
|
|||
|
self.PanelTopDifficult.gameObject:SetActiveEx(false)
|
|||
|
self.TxtCurMWNum.gameObject:SetActiveEx(true)
|
|||
|
self:PlayAnimation("AnimEnable2")
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnBtnSwitch2NormalClidk()
|
|||
|
self.IsOnZhouMu = false
|
|||
|
self:RefreshForChangeDiff(true)
|
|||
|
self.BtnSwitch1MultipleWeeks.gameObject:SetActiveEx(true)
|
|||
|
self.BtnSwitch2Normal.gameObject:SetActiveEx(false)
|
|||
|
self.TxtCurMWNum.gameObject:SetActiveEx(false)
|
|||
|
self.PanelTopDifficult.gameObject:SetActiveEx(not self.HideDiffTog)
|
|||
|
end
|
|||
|
|
|||
|
-- 初始化 treasure grade grid panel,填充数据
|
|||
|
-- 周目奖励和进度奖励使用不同的Grid模板,用GridTreasureList、GridMultipleWeeksTaskList分别存储
|
|||
|
function XUiFubenMainLineChapterDP:InitTreasureGrade()
|
|||
|
local baseItem = self.IsOnZhouMu and self.GridMultipleWeeksTask or self.GridTreasureGrade
|
|||
|
self.GridMultipleWeeksTask.gameObject:SetActiveEx(false)
|
|||
|
self.GridTreasureGrade.gameObject:SetActiveEx(false)
|
|||
|
|
|||
|
-- 先把所有的格子隐藏
|
|||
|
for j = 1, #self.GridTreasureList do
|
|||
|
self.GridTreasureList[j].GameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
for j = 1, #self.GridMultipleWeeksTaskList do
|
|||
|
self.GridMultipleWeeksTaskList[j].GameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
|
|||
|
local targetList
|
|||
|
if self.IsOnZhouMu then
|
|||
|
targetList = XFubenZhouMuConfigs.GetZhouMuTasks(self.ZhouMuId)
|
|||
|
else
|
|||
|
targetList = XFubenShortStoryChapterConfigs.GetTreasureIdByChapterId(self.ChapterId)
|
|||
|
end
|
|||
|
if not targetList then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local offsetValue = 260
|
|||
|
local gridCount = #targetList
|
|||
|
|
|||
|
for i = 1, gridCount do
|
|||
|
local offerY = (1 - i) * offsetValue
|
|||
|
local grid
|
|||
|
if self.IsOnZhouMu then
|
|||
|
grid = self.GridMultipleWeeksTaskList[i]
|
|||
|
else
|
|||
|
grid = self.GridTreasureList[i]
|
|||
|
end
|
|||
|
if not grid then
|
|||
|
local item = CS.UnityEngine.Object.Instantiate(baseItem) -- 复制一个item
|
|||
|
grid = XUiGridTreasureGradeDP.New(self, item, XDataCenter.FubenManager.StageType.ShortStory)
|
|||
|
grid.Transform:SetParent(self.PanelGradeContent, false)
|
|||
|
grid.Transform.localPosition = CS.UnityEngine.Vector3(item.transform.localPosition.x, item.transform.localPosition.y + offerY, item.transform.localPosition.z)
|
|||
|
if self.IsOnZhouMu then
|
|||
|
self.GridMultipleWeeksTaskList[i] = grid
|
|||
|
else
|
|||
|
self.GridTreasureList[i] = grid
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
if self.IsOnZhouMu then
|
|||
|
grid:UpdateGradeGridTask(targetList[i])
|
|||
|
else
|
|||
|
local stars , totalStars = XDataCenter.ShortStoryChapterManager.GetChapterStars(self.ChapterId)
|
|||
|
grid:UpdateGradeGrid(stars, targetList[i], self.ChapterId)
|
|||
|
end
|
|||
|
grid:InitTreasureList()
|
|||
|
grid.GameObject:SetActiveEx(true)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnSyncStage(stageId)
|
|||
|
if not stageId then
|
|||
|
return
|
|||
|
end
|
|||
|
local stageData = XDataCenter.FubenManager.GetStageData(stageId)
|
|||
|
if not stageData then
|
|||
|
return
|
|||
|
end
|
|||
|
if stageData.PassTimesToday > 1 then
|
|||
|
return
|
|||
|
end
|
|||
|
if not self.CurDiff or self.CurDiff < 0 then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local stageInfo = XDataCenter.FubenManager.GetStageInfo(stageId)
|
|||
|
if stageInfo then
|
|||
|
self:UpdateCurChapter(stageInfo.ChapterId)
|
|||
|
end
|
|||
|
|
|||
|
if self.CurChapterGrid then
|
|||
|
if self.CurChapterGrid.IsNotPassedFightStage then
|
|||
|
self.IsCanGoNearestStage = true
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnGetEvents()
|
|||
|
return
|
|||
|
{
|
|||
|
XEventId.EVENT_FUBEN_CLOSE_FUBENSTAGEDETAIL
|
|||
|
}
|
|||
|
end
|
|||
|
|
|||
|
--事件监听
|
|||
|
function XUiFubenMainLineChapterDP:OnNotify(evt, ...)
|
|||
|
if evt == XEventId.EVENT_FUBEN_CLOSE_FUBENSTAGEDETAIL then
|
|||
|
self:OnCloseStageDetail()
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:UpdateActivityTime()
|
|||
|
if not XDataCenter.ShortStoryChapterManager.IsShortStoryActivityOpen() then
|
|||
|
self:DestroyActivityTimer()
|
|||
|
self.PanelActivityTime.gameObject:SetActiveEx(false)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
self:CreateActivityTimer()
|
|||
|
|
|||
|
local curDiffHasActivity = XDataCenter.ShortStoryChapterManager.CheckDiffHasActivity(self.ChapterId)
|
|||
|
self.PanelActivityTime.gameObject:SetActiveEx(curDiffHasActivity)
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:UpdateFubenExploreItem()
|
|||
|
self.PanelFubenExItem.gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:CreateActivityTimer()
|
|||
|
self:DestroyActivityTimer()
|
|||
|
|
|||
|
local time = XTime.GetServerNowTimestamp()
|
|||
|
local endTime = XDataCenter.ShortStoryChapterManager.GetActivityEndTime()
|
|||
|
self.TxtLeftTime.text = XUiHelper.GetTime(endTime - time, XUiHelper.TimeFormatType.ACTIVITY)
|
|||
|
self.ActivityTimer = XScheduleManager.ScheduleForever(function()
|
|||
|
if XTool.UObjIsNil(self.TxtLeftTime) then
|
|||
|
self:DestroyActivityTimer()
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local leftTime = endTime - time
|
|||
|
time = time + 1
|
|||
|
|
|||
|
if leftTime >= 0 then
|
|||
|
self.TxtLeftTime.text = XUiHelper.GetTime(leftTime, XUiHelper.TimeFormatType.ACTIVITY)
|
|||
|
else
|
|||
|
self:DestroyActivityTimer()
|
|||
|
XDataCenter.ShortStoryChapterManager.OnActivityEnd()
|
|||
|
end
|
|||
|
end, XScheduleManager.SECOND, 0)
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:DestroyActivityTimer()
|
|||
|
if self.ActivityTimer then
|
|||
|
XScheduleManager.UnSchedule(self.ActivityTimer)
|
|||
|
self.ActivityTimer = nil
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:GetCurDetailChildUi()
|
|||
|
local stageCfg = self.Stage
|
|||
|
if not stageCfg then return "" end
|
|||
|
|
|||
|
if stageCfg.StageType == XFubenConfigs.STAGETYPE_STORY or stageCfg.StageType == XFubenConfigs.STAGETYPE_STORYEGG then
|
|||
|
return "UiStoryStageDetailDP"
|
|||
|
else
|
|||
|
return "UiFubenMainLineDetailDP"
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:GoToStage(stageId)
|
|||
|
if self.CurChapterGrid then
|
|||
|
self.CurChapterGrid:GoToStage(stageId)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OpenExploreDetail()
|
|||
|
XLuaUiManager.Open("UiFubenExploreDetail", self, self.Stage, function()
|
|||
|
if (self.CurChapterGrid or {}).ScaleBack and self.IsExploreMod then
|
|||
|
self.CurChapterGrid:ScaleBack()
|
|||
|
end
|
|||
|
self:OnCloseStageDetail()
|
|||
|
end, XDataCenter.FubenManager.StageType.ShortStory)
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnCheckExploreItemNews(count)
|
|||
|
self.BtnExItem:ShowReddot(count >= 0)
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnAutoFightStart(stageId)
|
|||
|
if self.Stage.StageId == stageId then
|
|||
|
if self.CurChapterGrid and self.IsExploreMod then
|
|||
|
self.CurChapterGrid:ScaleBack()
|
|||
|
end
|
|||
|
self:OnCloseStageDetail()
|
|||
|
XLuaUiManager.Remove("UiFubenExploreDetail")
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnReleaseInst()
|
|||
|
return { ChapterId = self.ChapterId, StageId = self.StageId, HideDiffTog = self.HideDiffTog }
|
|||
|
end
|
|||
|
|
|||
|
function XUiFubenMainLineChapterDP:OnResume(data)
|
|||
|
self.LastData = data
|
|||
|
end
|
|||
|
|
|||
|
return XUiFubenMainLineChapterDP
|