186 lines
6.9 KiB
Lua
186 lines
6.9 KiB
Lua
|
XFubenActivityBranchManagerCreator = function()
|
||
|
local pairs = pairs
|
||
|
local tableInsert = table.insert
|
||
|
local ParseToTimestamp = XTime.ParseToTimestamp
|
||
|
|
||
|
local CurActivityId = XFubenActivityBranchConfigs.GetDefaultActivityId()
|
||
|
|
||
|
local SectionId = 0
|
||
|
local ScheduleDic = {} --章节Id-通关进度Dic
|
||
|
local SelectDifficult = false --记录上次是否选中挑战难度
|
||
|
|
||
|
local XFubenActivityBranchManager = {}
|
||
|
|
||
|
XFubenActivityBranchManager.BranchType = {
|
||
|
Normal = 1,
|
||
|
Difficult = 2
|
||
|
}
|
||
|
|
||
|
function XFubenActivityBranchManager.Init()
|
||
|
XEventManager.AddEventListener(XEventId.EVENT_FUBEN_REFRESH_STAGE_DATA, XFubenActivityBranchManager.HandlerFightResult)
|
||
|
end
|
||
|
|
||
|
function XFubenActivityBranchManager.HandlerFightResult()
|
||
|
XFubenActivityBranchManager.RefreshStagePassed()
|
||
|
end
|
||
|
|
||
|
function XFubenActivityBranchManager.GetActivitySections()
|
||
|
local sections = {}
|
||
|
|
||
|
if XFubenActivityBranchManager.IsOpen() then
|
||
|
local section = {
|
||
|
Type = XDataCenter.FubenManager.ChapterType.ActivtityBranch,
|
||
|
Id = SectionId
|
||
|
}
|
||
|
tableInsert(sections, section)
|
||
|
end
|
||
|
|
||
|
return sections
|
||
|
end
|
||
|
|
||
|
function XFubenActivityBranchManager.InitStageInfo()
|
||
|
local sectionCfgs = XFubenActivityBranchConfigs.GetSectionCfgs()
|
||
|
|
||
|
for _, sectionCfg in pairs(sectionCfgs) do
|
||
|
local normalChapterCfg = XFubenActivityBranchConfigs.GetChapterCfg(sectionCfg.NormalId)
|
||
|
for _, stageId in pairs(normalChapterCfg.StageId) do
|
||
|
local stageInfo = XDataCenter.FubenManager.GetStageInfo(stageId)
|
||
|
stageInfo.Type = XDataCenter.FubenManager.StageType.ActivtityBranch
|
||
|
end
|
||
|
|
||
|
local difficultChapterCfg = XFubenActivityBranchConfigs.GetChapterCfg(sectionCfg.DifficultyId)
|
||
|
for _, stageId in pairs(difficultChapterCfg.StageId) do
|
||
|
local stageInfo = XDataCenter.FubenManager.GetStageInfo(stageId)
|
||
|
stageInfo.Type = XDataCenter.FubenManager.StageType.ActivtityBranch
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
--刷新通关记录
|
||
|
function XFubenActivityBranchManager.RefreshStagePassed()
|
||
|
for chapterId, schedule in pairs(ScheduleDic) do
|
||
|
local chapterCfg = XFubenActivityBranchConfigs.GetChapterCfg(chapterId)
|
||
|
for index, stageId in pairs(chapterCfg.StageId) do
|
||
|
local stageInfo = XDataCenter.FubenManager.GetStageInfo(stageId)
|
||
|
if index <= schedule then
|
||
|
stageInfo.Passed = true
|
||
|
else
|
||
|
stageInfo.Passed = false
|
||
|
end
|
||
|
|
||
|
if index <= schedule + 1 then
|
||
|
stageInfo.Unlock = true
|
||
|
stageInfo.IsOpen = true
|
||
|
else
|
||
|
stageInfo.IsOpen = false
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function XFubenActivityBranchManager.SelectDifficult(selectDifficult)
|
||
|
SelectDifficult = selectDifficult
|
||
|
end
|
||
|
|
||
|
function XFubenActivityBranchManager.IsSelectDifficult()
|
||
|
return SelectDifficult
|
||
|
end
|
||
|
|
||
|
function XFubenActivityBranchManager.GetCurSectionId()
|
||
|
return SectionId
|
||
|
end
|
||
|
|
||
|
function XFubenActivityBranchManager.GetCurChapterId(sectionId)
|
||
|
local sectionCfg = XFubenActivityBranchConfigs.GetSectionCfg(sectionId)
|
||
|
return XFubenActivityBranchManager.IsSelectDifficult() and sectionCfg.DifficultyId or sectionCfg.NormalId
|
||
|
end
|
||
|
|
||
|
function XFubenActivityBranchManager.GetChapterFinishCount(chapterId)
|
||
|
return ScheduleDic[chapterId]
|
||
|
end
|
||
|
|
||
|
function XFubenActivityBranchManager.GetChapterMoveStageIndex(chapterId)
|
||
|
if not chapterId then return end
|
||
|
local chapterCfg = XFubenActivityBranchConfigs.GetChapterCfg(chapterId)
|
||
|
return chapterCfg and chapterCfg.MoveStageIndex
|
||
|
end
|
||
|
|
||
|
function XFubenActivityBranchManager.GetChapterDatumLinePrecent(chapterId)
|
||
|
if not chapterId then return end
|
||
|
local chapterCfg = XFubenActivityBranchConfigs.GetChapterCfg(chapterId)
|
||
|
return chapterCfg and chapterCfg.DatumLinePrecent
|
||
|
end
|
||
|
|
||
|
function XFubenActivityBranchManager.GetActivityBeginTime()
|
||
|
return XFubenActivityBranchConfigs.GetActivityBeginTime(CurActivityId)
|
||
|
end
|
||
|
|
||
|
function XFubenActivityBranchManager.GetActivityChallengeBeginTime()
|
||
|
return XFubenActivityBranchConfigs.GetChallengeBeginTime(CurActivityId)
|
||
|
end
|
||
|
|
||
|
function XFubenActivityBranchManager.GetFightEndTime()
|
||
|
return XFubenActivityBranchConfigs.GetFightEndTime(CurActivityId)
|
||
|
end
|
||
|
|
||
|
function XFubenActivityBranchManager.GetActivityEndTime()
|
||
|
return XFubenActivityBranchConfigs.GetActivityEndTime(CurActivityId)
|
||
|
end
|
||
|
|
||
|
function XFubenActivityBranchManager.IsStatusEqualFightEnd()
|
||
|
local now = XTime.GetServerNowTimestamp()
|
||
|
local fightEndTime = XFubenActivityBranchManager.GetFightEndTime()
|
||
|
local endTime = XFubenActivityBranchManager.GetActivityEndTime()
|
||
|
return fightEndTime <= now and now < endTime
|
||
|
end
|
||
|
|
||
|
function XFubenActivityBranchManager.IsStatusEqualChallengeBegin()
|
||
|
local now = XTime.GetServerNowTimestamp()
|
||
|
local challengeBeginTime = XFubenActivityBranchManager.GetActivityChallengeBeginTime()
|
||
|
local endTime = XFubenActivityBranchManager.GetActivityEndTime()
|
||
|
return challengeBeginTime <= now and now < endTime
|
||
|
end
|
||
|
|
||
|
function XFubenActivityBranchManager.IsOpen()
|
||
|
local nowTime = XTime.GetServerNowTimestamp()
|
||
|
local beginTime = XFubenActivityBranchManager.GetActivityBeginTime()
|
||
|
local endTime = XFubenActivityBranchManager.GetActivityEndTime()
|
||
|
return beginTime <= nowTime and nowTime < endTime and SectionId ~= 0
|
||
|
end
|
||
|
|
||
|
function XFubenActivityBranchManager.OnActivityEnd()
|
||
|
if CS.XFight.IsRunning or XLuaUiManager.IsUiLoad("UiLoading") then
|
||
|
return
|
||
|
end
|
||
|
XUiManager.TipText("ActivityBranchOver")
|
||
|
XLuaUiManager.RunMain()
|
||
|
end
|
||
|
|
||
|
function XFubenActivityBranchManager.NotifyBranchData(data)
|
||
|
CurActivityId = data.ActivityId
|
||
|
SectionId = data.SectionId
|
||
|
|
||
|
for _, branchChallengeInfo in pairs(data.ChallengeInfos) do
|
||
|
ScheduleDic[branchChallengeInfo.Id] = branchChallengeInfo.Schedule
|
||
|
end
|
||
|
|
||
|
XFubenActivityBranchManager.RefreshStagePassed()
|
||
|
end
|
||
|
|
||
|
function XFubenActivityBranchManager.CheckActivityCondition(sectionId)
|
||
|
local sectionCfg = XFubenActivityBranchConfigs.GetSectionCfg(sectionId)
|
||
|
local chapterCfg = XFubenActivityBranchConfigs.GetChapterCfg(sectionCfg.DifficultyId)
|
||
|
local conditionId = chapterCfg.OpenCondition
|
||
|
if conditionId ~= 0 then
|
||
|
return XConditionManager.CheckCondition(conditionId)
|
||
|
end
|
||
|
return true
|
||
|
end
|
||
|
|
||
|
XFubenActivityBranchManager.Init()
|
||
|
return XFubenActivityBranchManager
|
||
|
end
|
||
|
|
||
|
XRpc.NotifyBranchData = function(data)
|
||
|
XDataCenter.FubenActivityBranchManager.NotifyBranchData(data)
|
||
|
end
|