PGRData/Script/matrix/xmanager/XPrequelManager.lua
2024-09-01 22:49:41 +02:00

709 lines
No EOL
28 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local XExPrequelManager = require("XEntity/XFuben/XExPrequelManager")
local XExFubenBaseManager = require("XEntity/XFuben/XExFubenBaseManager")
local XChapterViewModel = require("XEntity/XFuben/XChapterViewModel")
XPrequelManagerCreator = function()
local XPrequelManager = XExPrequelManager.New(XFubenConfigs.ChapterType.Prequel)
local XPrequelFragmentManager = XExFubenBaseManager.New(XFubenConfigs.ChapterType.CharacterFragment) -- 管理角色碎片章节
local UnlockChallengeStages = {}
local RewardedStages = {}
local NextCheckPoint = nil
-- manager层
local Cover2ChapterMap = {}--记录上一个封面
local CoverPrefix = "CoverPrefix"
local Stage2ChapterMap = {}
local CoverIdDataDic = {}
function XPrequelManager.InitPrequelData(fubenPrequelData)
if not fubenPrequelData then return end
for _, v in pairs(fubenPrequelData.RewardedStages or {}) do
RewardedStages[v] = true
end
for _, v in pairs(fubenPrequelData.UnlockChallengeStages or {}) do
UnlockChallengeStages[v.StageId] = v
end
end
function XPrequelManager.SaveCoverChapterHint(key, value)
if XPlayer.Id then
key = string.format("%s_%s", tostring(XPlayer.Id), key)
XSaveTool.SaveData(key, value)
end
end
function XPrequelManager.GetCoverChapterHint(key, defaultValue)
if XPlayer.Id then
key = string.format("%s_%s", tostring(XPlayer.Id), key)
if XSaveTool.GetData(key) then
local newPlayerHint = XSaveTool.GetData(key)
return (newPlayerHint == nil or newPlayerHint == 0) and defaultValue or newPlayerHint
end
end
return defaultValue
end
function XPrequelManager.InitStageInfo()
for chapterId, chapterCfg in pairs(XPrequelConfigs.GetPequelAllChapter() or {}) do
for _, stageId in pairs(chapterCfg.StageId or {}) do
Stage2ChapterMap[stageId] = chapterId
local stageInfo = XDataCenter.FubenManager.GetStageInfo(stageId)
if stageInfo then
stageInfo.Type = XDataCenter.FubenManager.StageType.Prequel
end
end
end
for _, coverCfg in pairs(XPrequelConfigs.GetPrequelCoverList() or {}) do
for _, stageId in pairs(coverCfg.ChallengeStage or {}) do
local stageInfo = XDataCenter.FubenManager.GetStageInfo(stageId)
if stageInfo then
stageInfo.Type = XDataCenter.FubenManager.StageType.Prequel
end
end
end
end
-- 弃用接口, 1.30更新副本入口后不再需要记录间章上一次打过的chapter
-- [更新封面显示的chapter]
function XPrequelManager.UpdateShowChapter(stageId)
-- if not stageId then return end
-- local chapterId = XPrequelConfigs.GetChapterByStageId(stageId)
-- if not chapterId then return end
-- local coverId = XPrequelConfigs.GetCoverByChapterId(chapterId)
-- if not coverId then return end
-- local key = string.format("%s%s", CoverPrefix, tostring(coverId))
-- XPrequelManager.SaveCoverChapterHint(key, chapterId)
-- Cover2ChapterMap[coverId] = chapterId
end
function XPrequelManager.ShowReward(winData)
XLuaUiManager.Open("UiSettleWin", winData)
end
-- [获取已经解锁的挑战关卡nil代表未解锁]
function XPrequelManager.GetUnlockChallengeStagesByStageId(stageId)
return UnlockChallengeStages[stageId]
end
-- [解锁挑战]
function XPrequelManager.UnlockPrequelChallengeRequest(coverId, challengeIdx, stageId, cb)
XNetwork.Call("UnlockPrequelChallengeRequest", { CoverId = coverId, ChallengeId = challengeIdx }, function(res)
cb = cb or function() end
if res.Code == XCode.Success then
UnlockChallengeStages[stageId] = res.ChallengeStage
cb(res)
else
XUiManager.TipCode(res.Code)
end
end)
end
-- [前传奖励领取]
function XPrequelManager.ReceivePrequelRewardRequest(stageId, cb)
XNetwork.Call("ReceivePrequelRewardRequest", { StageId = stageId }, function(res)
cb = cb or function() end
if res.Code == XCode.Success then
RewardedStages[res.StageId] = true
-- 显示奖励
XUiManager.OpenUiObtain(res.RewardGoodsList, CS.XTextManager.GetText("DailyActiveRewardTitle"))
cb(res)
else
XUiManager.TipCode(res.Code)
end
end)
end
-- [剧情]
function XPrequelManager.FinishStoryRequest(stageId, cb)
XNetwork.Call("EnterStoryRequest", { StageId = stageId }, function(res)
cb = cb or function() end
if res.Code == XCode.Success then
cb(res)
else
XUiManager.TipCode(res.Code)
end
end)
end
function XPrequelManager.GetRewardedStages()
return RewardedStages
end
function XPrequelManager.IsRewardStageCollected(stageId)
return RewardedStages[stageId]
end
function XPrequelManager.IsStoryStage(stageId)
local stageCfg = XDataCenter.FubenManager.GetStageCfg(stageId)
if not stageCfg then return false end
return stageCfg.StageType == XFubenConfigs.STAGETYPE_STORYEGG
end
-- [服务器同步领取奖励的剧情关卡数据]
function XPrequelManager.OnSyncRewardedStage(response)
for _, v in pairs(response.RewardedStages or {}) do
RewardedStages[v] = true
end
end
-- [服务器同步解锁的挑战关卡数据]
function XPrequelManager.OnSyncUnlockChallengeStage(response)
UnlockChallengeStages = response.UnlockChallengeStages
XEventManager.DispatchEvent(XEventId.EVENT_NOTICE_CHALLENGESTAGES_CHANGE)
end
function XPrequelManager.OnSyncSingleUnlockChallengeStage(response)
local currentStage = response.ChallengeStage
UnlockChallengeStages[currentStage.StageId] = currentStage
XEventManager.DispatchEvent(XEventId.EVENT_NOTICE_CHALLENGESTAGES_CHANGE)
end
-- [刷新时间-需要通知界面及时更新]
function XPrequelManager.OnSyncNextRefreshTime(response)
NextCheckPoint = response.NextRefreshTime
XEventManager.DispatchEvent(XEventId.EVENT_NOTICE_REFRESHTIME_CHANGE)
end
-- [判断解锁条件]
function XPrequelManager.CheckPrequelStageOpen(stageId)
local stageCfg = XDataCenter.FubenManager.GetStageCfg(stageId)
local stageInfo = XDataCenter.FubenManager.GetStageInfo(stageId)
local isUnlock = stageInfo.Unlock
if stageInfo.Unlock then
for _, conditionId in pairs(stageCfg.ForceConditionId or {}) do
local rect, _ = XConditionManager.CheckCondition(conditionId)
if not rect then
return rect
end
end
end
if stageCfg.StageType == XFubenConfigs.STAGETYPE_STORYEGG or stageCfg.StageType == XFubenConfigs.STAGETYPE_FIGHTEGG then
return isUnlock and XDataCenter.FubenManager.GetUnlockHideStageById(stageId)
end
return isUnlock
end
function XPrequelManager.GetCoverUnlockDescription(coverId)
local coverInfos = XPrequelConfigs.GetPrequelCoverById(coverId)
local chapterIds = coverInfos.ChapterId
for _, chapterId in pairs(chapterIds or {}) do
local chapterInfo = XPrequelConfigs.GetPrequelChapterById(chapterId)
for _, openConditoinId in pairs(chapterInfo.OpenCondition or {}) do
local rect, desc = XConditionManager.CheckCondition(openConditoinId)
if not rect then
return desc
end
end
end
return ""
end
-- 检查章节开启条件
function XPrequelManager.GetChapterUnlockDescription(chapterId)
local chapterTemplate = XPrequelConfigs.GetPrequelChapterById(chapterId)
-- 如果处于活动优先判断活动的Condition
local inActivity = XPrequelManager.IsChapterInActivity(chapterId)
if chapterTemplate.ActivityCondition ~= 0 and inActivity then
local rect, desc = XConditionManager.CheckCondition(chapterTemplate.ActivityCondition)
if not rect then
return desc
end
return ""
end
for _, openConditoinId in pairs(chapterTemplate.OpenCondition or {}) do
local rect, desc = XConditionManager.CheckCondition(openConditoinId)
if not rect then
return desc
end
end
return ""
end
-- [进度]
function XPrequelManager.GetChapterProgress(chapterId)
local chapterInfos = XPrequelConfigs.GetPrequelChapterById(chapterId)
local total = 0
local finishedStageNum = 0
for _, stageId in pairs(chapterInfos.StageId or {}) do
local stageInfo = XDataCenter.FubenManager.GetStageInfo(stageId)
local stageCfg = XDataCenter.FubenManager.GetStageCfg(stageId)
if stageCfg.StageType ~= XFubenConfigs.STAGETYPE_STORYEGG and stageCfg.StageType ~= XFubenConfigs.STAGETYPE_FIGHTEGG then
total = total + 1
if stageInfo.Passed then
finishedStageNum = finishedStageNum + 1
end
end
end
return finishedStageNum, total
end
-- [寻找一个可以使用的章节]
function XPrequelManager.GetSelectableChaperIndex(cover)
local showChapter = cover.ShowChapter
local defaultChapter = 1
local hasDefault = false
local reverseId = #cover.CoverActiveChapterIds --章节UI页签按钮是以倒序显示的
for index, chapterId in pairs(cover.CoverActiveChapterIds or {}) do
local isLock = XPrequelManager.GetChapterLockStatus(chapterId)
if not isLock then
if showChapter and showChapter == chapterId then
return reverseId
end
if not hasDefault then
hasDefault = true
defaultChapter = index
end
end
reverseId = reverseId - 1
end
return defaultChapter
end
function XPrequelManager.GetIndexByChapterId(cover, chapterId)
if not chapterId then return nil end
local index = #cover.CoverActiveChapterIds
for _, id in pairs(cover.CoverActiveChapterIds or {}) do
if XPrequelManager.IsChapterInActivity(id) or not XPrequelManager.GetChapterLockStatus(id) then
if chapterId == id then
return index
end
end
index = index - 1
end
return index
end
-- [获取章节锁定状态] true 锁定 false 解锁
function XPrequelManager.GetChapterLockStatus(chapterId)
local chapterTemplate = XPrequelConfigs.GetPrequelChapterById(chapterId)
-- 如果处于活动优先判断活动的Condition
local inActivity = XPrequelManager.IsChapterInActivity(chapterId)
if chapterTemplate.ActivityCondition ~= 0 and inActivity then
local rect = XConditionManager.CheckCondition(chapterTemplate.ActivityCondition)
return not rect
end
local isLock = true
for _, conditionId in pairs(chapterTemplate.OpenCondition or {}) do
local rect, _ = XConditionManager.CheckCondition(conditionId)
if rect then
isLock = false
break
end
end
return isLock
end
-- [章节是否处于活动中]
function XPrequelManager.IsInActivity()
local chapters = XPrequelConfigs.GetPequelAllChapter()
for chapterId in pairs(chapters) do
if XPrequelManager.IsChapterInActivity(chapterId) then
return true
end
end
return false
end
-- [是否有章节处于活动中]
function XPrequelManager.IsChapterInActivity(chapterId)
local config = XPrequelConfigs.GetPrequelChapterById(chapterId)
return XFunctionManager.CheckInTimeByTimeId(config.TimeId)
end
-- 支线奖励
function XPrequelManager.CheckRewardAvailable(chapterId)
local chapterInfos = XPrequelConfigs.GetPrequelChapterById(chapterId)
local rewardedStages = XPrequelManager.GetRewardedStages()
for _, stageId in pairs(chapterInfos.StageId or {}) do
local stageCfg = XDataCenter.FubenManager.GetStageCfg(stageId)
local stageInfo = XDataCenter.FubenManager.GetStageInfo(stageId)
if stageCfg.FirstRewardShow > 0 and stageInfo.Passed and rewardedStages and (not rewardedStages[stageId]) then
return true
end
end
return false
end
-- function XPrequelManager.GetListCovers()
-- local coverList = {}
-- for k, v in pairs(XPrequelConfigs.GetPrequelCoverList() or {}) do
-- local showChapter, isActivity, isAllChapterLock, isActivityNotOpen = XPrequelManager.GetPriorityChapter(v.ChapterId, k)
-- local chapterWeight = 0
-- if isActivity then
-- chapterWeight = 4
-- else
-- if isAllChapterLock == false then
-- chapterWeight = 3
-- end
-- if isActivityNotOpen then
-- chapterWeight = 2
-- end
-- end
-- local activeChapterIds = XPrequelManager.GetListActiveChapterIdsByCoverId(k)
-- if #activeChapterIds > 0 then -- 如果存在当前时间下激活的章节才显示
-- table.insert(coverList, {
-- CoverId = k,
-- CoverVal = v,
-- ShowChapter = showChapter,
-- IsActivity = isActivity,
-- IsAllChapterLock = isAllChapterLock,
-- IsActivityNotOpen = isActivityNotOpen,
-- ChapterWeight = chapterWeight,
-- CoverActiveChapterIds = activeChapterIds,
-- })
-- end
-- end
-- table.sort(coverList, function(coverA, coverB)
-- local coverAWeight = coverA.ChapterWeight
-- local coverBWeight = coverB.ChapterWeight
-- if coverAWeight == coverBWeight then
-- return coverA.CoverVal.Priority < coverB.CoverVal.Priority
-- end
-- return coverAWeight > coverBWeight
-- end)
-- if not next(CoverIdDataDic) then
-- for k, coverData in pairs(coverList) do
-- CoverIdDataDic[coverData.CoverId] = coverData
-- end
-- end
-- return coverList
-- end
-- 2.2新接口替换旧接口,从表上拆开了间章和碎片的关系
function XPrequelManager.GetChapterList()
local chapterList = {}
for k, chapterCfg in pairs(XPrequelConfigs.GetPequelAllChapter() or {}) do
local isActivity = false
if XPrequelManager.IsChapterInActivity(chapterCfg.ChapterId) then
if chapterCfg.ActivityCondition <= 0 or (chapterCfg.ActivityCondition > 0
and XConditionManager.CheckCondition(chapterCfg.ActivityCondition)) then
isActivity = true
end
end
-- 定义排序权重
local isLock = XPrequelManager.GetChapterLockStatus(chapterCfg.ChapterId)
local chapterWeight = 1
if isActivity then -- 活动限时开放优先显示
chapterWeight = 2
end
if isLock then
chapterWeight = 0
end
table.insert(chapterList, {
ChapterId = k,
PequelChapterCfg = chapterCfg,
IsActivity = isActivity,
IsLock = isLock,
ChapterWeight = chapterWeight,
})
end
table.sort(chapterList, function(chapterA, chapterB)
if chapterA.ChapterWeight == chapterB.ChapterWeight then
return chapterA.PequelChapterCfg.Order < chapterB.PequelChapterCfg.Order
end
return chapterA.ChapterWeight > chapterB.ChapterWeight
end)
return chapterList
end
-- 获取当前时间已激活的章节Id列表
function XPrequelManager.GetListActiveChapterIdsByCoverId(coverId)
local coverTemplate = XPrequelConfigs.GetPrequelCoverById(coverId)
local activeChapterIdList = {}
local nowTimeStamp = XTime.GetServerNowTimestamp()
for i, v in ipairs(coverTemplate.ChapterId) do
local isActive = false
if coverTemplate.ActiveTimes[i] ~= nil and coverTemplate.ActiveTimes[i] ~= "" then
local activeTime = XTime.ParseToTimestamp(coverTemplate.ActiveTimes[i])
if nowTimeStamp >= activeTime then
isActive = true
end
else
isActive = true
end
if isActive then
table.insert(activeChapterIdList, coverTemplate.ChapterId[i])
end
end
return activeChapterIdList
end
function XPrequelManager.GetPriorityChapter(chapters, coverId)
local currentChapter = chapters[1]
local currentPriority = 0
local isActivity = false
local isActivityNotOpen = false
local isAllChapterLock = true
for _, chapterId in pairs(chapters or {}) do
local chapterInfo = XPrequelConfigs.GetPrequelChapterById(chapterId)
if XPrequelManager.IsChapterInActivity(chapterId) then
if currentPriority < chapterInfo.Priority then
isActivityNotOpen = true
if chapterInfo.ActivityCondition <= 0 or (chapterInfo.ActivityCondition > 0
and XConditionManager.CheckCondition(chapterInfo.ActivityCondition)) then
--currentChapter = chapterId
currentPriority = chapterInfo.Priority
isActivity = true
isActivityNotOpen = false
end
end
end
for _, conditionId in pairs(chapterInfo.OpenCondition or {}) do
local rect, _ = XConditionManager.CheckCondition(conditionId)
if rect then
isAllChapterLock = false
end
end
end
-- [寻找一个正确的显示在封面的章节]
if (not isAllChapterLock) and (not isActivity) then
for _, chapterId in pairs(chapters or {}) do
if not XDataCenter.PrequelManager.GetChapterLockStatus(chapterId) then
--currentChapter = chapterId
break
end
end
end
-- 优先显示上一次打过的章节
-- if not Cover2ChapterMap[coverId] then
-- local key = string.format("%s%s", CoverPrefix, tostring(coverId))
-- local recordChapter = XPrequelManager.GetCoverChapterHint(key, currentChapter)
-- local isRecordChapterInActivity = XPrequelManager.IsChapterInActivity(recordChapter)
-- local recordChapterDescription = XPrequelManager.GetChapterUnlockDescription(recordChapter)
-- if isRecordChapterInActivity then
-- --currentChapter = recordChapter
-- else
-- if recordChapterDescription == nil then
-- --currentChapter = recordChapter
-- end
-- end
-- elseif Cover2ChapterMap[coverId] and Cover2ChapterMap[coverId] ~= currentChapter then
-- local recordChapter = Cover2ChapterMap[coverId]
-- local recordChapterDescription = XPrequelManager.GetChapterUnlockDescription(recordChapter)
-- local isRecordChapterInActivity = XPrequelManager.IsChapterInActivity(recordChapter)
-- if isRecordChapterInActivity then
-- --currentChapter = Cover2ChapterMap[coverId]
-- else
-- if recordChapterDescription == nil then
-- --currentChapter = recordChapter
-- end
-- end
-- end
return currentChapter, isActivity, isAllChapterLock, isActivityNotOpen
end
function XPrequelManager.GetNextCheckPointTime()
return NextCheckPoint
end
function XPrequelManager.GetChapterIdByStageId(stageId)
return Stage2ChapterMap[stageId]
end
------------------碎片副本入口扩展(带ChapterViewModel) start-------------------------
function XPrequelFragmentManager.IsFragmentInActivity(fragmentId)
local fragmentCfg = XPrequelConfigs.GetFragments()[fragmentId]
local coverId = fragmentCfg.CoverId
local coverCfg = XPrequelConfigs.GetPrequelCoverList()[coverId]
local inActivity = XFunctionManager.CheckInTimeByTimeId(coverCfg.TimeId)
return inActivity
end
-- [获取碎片关锁定状态]
function XPrequelFragmentManager.GetFragmentLockStatus(fragmentId)
local fragmentCfg = XPrequelConfigs.GetFragments()[fragmentId]
local coverId = fragmentCfg.CoverId
local coverCfg = XPrequelConfigs.GetPrequelCoverList()[coverId]
-- 如果处于活动优先判断活动的Condition
local inActivity = XPrequelFragmentManager.IsFragmentInActivity(fragmentId)
if coverCfg.ActivityCondition ~= 0 and inActivity then
local rect = XConditionManager.CheckCondition(coverCfg.ActivityCondition)
return not rect
end
-- 再判断碎片关入口原本的condition
if XTool.IsNumberValid(coverCfg.OpenCondition) then
local rect, _ = XConditionManager.CheckCondition(coverCfg.OpenCondition)
return not rect
end
end
-- [获取碎片关锁定的提示]
function XPrequelFragmentManager.GetFragmentUnlockDescription(fragmentId)
local fragmentCfg = XPrequelConfigs.GetFragments()[fragmentId]
local coverId = fragmentCfg.CoverId
local coverCfg = XPrequelConfigs.GetPrequelCoverList()[coverId]
-- 如果处于活动优先判断活动的Condition
local inActivity = XPrequelFragmentManager.IsFragmentInActivity(fragmentId)
if coverCfg.ActivityCondition ~= 0 and inActivity then
local rect, desc = XConditionManager.CheckCondition(coverCfg.ActivityCondition)
return desc
end
-- 再判断碎片关入口原本的condition
if XTool.IsNumberValid(coverCfg.OpenCondition) then
local rect, desc = XConditionManager.CheckCondition(coverCfg.OpenCondition)
return desc
end
end
function XPrequelFragmentManager:ExGetFunctionNameType()
return XFunctionManager.FunctionName.Prequel
end
-- 检查是否展示红点
function XPrequelFragmentManager:ExCheckIsShowRedPoint()
for _, viewModel in ipairs(self:ExGetChapterViewModels()) do
if viewModel:CheckHasRedPoint() then
return true
end
end
return false
end
function XPrequelFragmentManager:GetCharacterListIdByChapterViewModels()
local result ={}
for i, chapterViewModel in ipairs(self:ExGetChapterViewModels()) do
local characterId = chapterViewModel:GetConfig().CharacterId
result[i] = {Id = characterId}
if not self.CharacterIdModelDic then
self.CharacterIdModelDic = {}
end
self.CharacterIdModelDic[characterId] = chapterViewModel
end
return result
end
function XPrequelFragmentManager:SortModelViewByCharacterList(characterList)
local result = {}
for i, v in ipairs(characterList) do
table.insert(result, self.CharacterIdModelDic[v.Id])
end
return result
end
local function SortModels(models)
local lockList = {}
local unLockList = {}
for k, model in ipairs(models) do
if model:GetIsLocked() then
table.insert(lockList, model)
else
table.insert(unLockList, model)
end
end
-- 限时开放要在最前面
table.sort(lockList, function (a, b)
if a:CheckHasTimeLimitTag() ~= b:CheckHasTimeLimitTag() then
return a:CheckHasTimeLimitTag()
end
return a:GetId() < b:GetId()
end)
table.sort(unLockList, function (a, b)
if a:CheckHasTimeLimitTag() ~= b:CheckHasTimeLimitTag() then
return a:CheckHasTimeLimitTag()
end
return a:GetId() < b:GetId()
end)
return appendArray(unLockList, lockList)
end
function XPrequelFragmentManager:ExGetChapterViewModels()
if self.__ChapterViewModelDic == nil then self.__ChapterViewModelDic = {} end
if next(self.__ChapterViewModelDic) then
return SortModels(self.__ChapterViewModelDic)
end
local chapterConfigs = XPrequelConfigs.GetFragments()
local coverList = XPrequelConfigs.GetPrequelCoverList()
for _, config in ipairs(chapterConfigs) do
local coverId = config.CoverId
local coverCfg = coverList[coverId]
local characterId = coverCfg.CharacterId
table.insert(self.__ChapterViewModelDic, CreateAnonClassInstance({
GetProgress = function(proxy)
return nil
end,
GetIsLocked = function(proxy)
-- return XPrequelManager.GetChapterLockStatus(config.ChapterId)
return XPrequelFragmentManager.GetFragmentLockStatus(config.Id)
end,
GetLockTip = function(proxy)
return XPrequelFragmentManager.GetFragmentUnlockDescription(config.Id)
end,
GetOpenDayString = function(proxy)
-- local name = config.RoleName
local name = XCharacterConfigs.GetCharacterTemplate(characterId).Name
return name, true
end,
CheckHasTimeLimitTag = function(proxy)
return XPrequelFragmentManager.IsFragmentInActivity(config.Id)
end,
IsDayLock = function(proxy)
return nil
end,
OpenUi = function(proxy)
XLuaUiManager.Open("UiPrequelFragment", config, coverCfg)
end,
}, XChapterViewModel
, {
Id = config.Id,
ExtralName = XCharacterConfigs.GetCharacterTemplate(characterId).TradeName,
Name = XCharacterConfigs.GetCharacterTemplate(characterId).TradeName,
Desc = config.Desc,
Icon = config.Icon,
CharacterId = characterId,
ExtralData = config,
}))
end
return SortModels(self.__ChapterViewModelDic)
end
------------------副本入口扩展 end-------------------------
return XPrequelManager
end
XRpc.NotifyFubenPrequelData = function(response)
if not response then return end
XDataCenter.PrequelManager.InitPrequelData(response.FubenPrequelData)
end
-- [领取奖励]
XRpc.NotifyPrequelRewardedStages = function(response)
if not response then return end
XDataCenter.PrequelManager.OnSyncRewardedStage(response)
end
-- [解锁挑战关卡回复]
XRpc.NotifyPrequelUnlockChallengeStages = function(response)
if not response then return end
XDataCenter.PrequelManager.OnSyncUnlockChallengeStage(response)
end
XRpc.NotifyPrequelChallengeStage = function(response)
if not response then return end
XDataCenter.PrequelManager.OnSyncSingleUnlockChallengeStage(response)
end
-- [下一个刷新时间]
XRpc.NotifyPrequelChallengeRefreshTime = function(response)
if not response then return end
XDataCenter.PrequelManager.OnSyncNextRefreshTime(response)
end