forked from endernon/PGRData
597 lines
No EOL
23 KiB
Lua
597 lines
No EOL
23 KiB
Lua
local XExFubenCharacterTowerManager = require("XEntity/XFuben/XExFubenCharacterTowerManager")
|
|
local XCharacterTowerChapter = require("XEntity/XCharacterTower/XCharacterTowerChapter")
|
|
local XCharacterTowerRelation = require("XEntity/XCharacterTower/XCharacterTowerRelation")
|
|
local XCharacterTowerChapterInfo = require("XEntity/XCharacterTower/XCharacterTowerChapterInfo")
|
|
local XCharacterTowerRelationInfo = require("XEntity/XCharacterTower/XCharacterTowerRelationInfo")
|
|
|
|
XFubenCharacterTowerManagerCreator = function()
|
|
---@class XFubenCharacterTowerManager
|
|
local XFubenCharacterTowerManager = XExFubenCharacterTowerManager.New(XFubenConfigs.ChapterType.CharacterTower)
|
|
|
|
local RequestProto = {
|
|
CharacterTowerGetChapterRewardRequest = "CharacterTowerGetChapterRewardRequest", -- 领取章节奖励请求
|
|
CharacterTowerGetStageRewardRequest = "CharacterTowerGetStageRewardRequest", -- 领取关卡奖励请求
|
|
CharacterTowerGetStarRewardRequest = "CharacterTowerGetStarRewardRequest", -- 领取星级奖励请求
|
|
CharacterTowerActivateFightEventIdRequest = "CharacterTowerActivateFightEventIdRequest", -- 激活羁绊加成请求
|
|
CharacterTowerSaveVideoStageIdRequest = "CharacterTowerSaveVideoStageIdRequest", -- 保存通关播放动画请求
|
|
CharacterTowerSaveStoryIdRequest = "CharacterTowerSaveStoryIdRequest", -- 保存播放剧情请求
|
|
CharacterTowerSaveTriggerConditionIdRequest = "CharacterTowerSaveTriggerConditionIdRequest", -- 保存触发条件请求
|
|
}
|
|
-- 活动中章节Id
|
|
local ActivityChapters = {}
|
|
-- 章节信息
|
|
local _CharacterTowerChapterInfos = {}
|
|
-- 羁绊信息
|
|
local _CharacterTowerRelationInfos = {}
|
|
-- 章节
|
|
local _CharacterTowerChapters = {}
|
|
-- 羁绊
|
|
local _CharacterTowerRelations = {}
|
|
|
|
local function UpdateActivityChapters(data)
|
|
if XTool.IsTableEmpty(data) then
|
|
return
|
|
end
|
|
ActivityChapters = {}
|
|
for _, chapterId in pairs(data or {}) do
|
|
ActivityChapters[chapterId] = chapterId
|
|
end
|
|
end
|
|
|
|
-- 检测当前章节是否在活动中
|
|
function XFubenCharacterTowerManager.CheckActivityChapterId(chapterId)
|
|
return ActivityChapters[chapterId] and true or false
|
|
end
|
|
|
|
---@return XCharacterTowerRelationInfo
|
|
local function GetRelationInfo(relationId)
|
|
if not XTool.IsNumberValid(relationId) then
|
|
XLog.Error("XFubenCharacterTowerManager GetRelationInfo error: 羁绊Id错误, relationId: " .. relationId)
|
|
return
|
|
end
|
|
|
|
local relationInfo = _CharacterTowerRelationInfos[relationId]
|
|
if not relationInfo then
|
|
relationInfo = XCharacterTowerRelationInfo.New(relationId)
|
|
_CharacterTowerRelationInfos[relationId] = relationInfo
|
|
end
|
|
return relationInfo
|
|
end
|
|
|
|
local function UpdateRelationInfo(data)
|
|
local relationId = data.RelationId
|
|
GetRelationInfo(relationId):UpdateData(data)
|
|
end
|
|
|
|
local function UpdateRelationInfos(data)
|
|
for _, info in pairs(data) do
|
|
UpdateRelationInfo(info)
|
|
end
|
|
end
|
|
|
|
---@return XCharacterTowerChapterInfo
|
|
local function GetChapterInfo(chapterId)
|
|
if not XTool.IsNumberValid(chapterId) then
|
|
XLog.Error("XFubenCharacterTowerManager GetChapterInfo error: 章节Id错误, chapterId: " .. chapterId)
|
|
return
|
|
end
|
|
|
|
local chapterInfo = _CharacterTowerChapterInfos[chapterId]
|
|
if not chapterInfo then
|
|
chapterInfo = XCharacterTowerChapterInfo.New(chapterId)
|
|
_CharacterTowerChapterInfos[chapterId] = chapterInfo
|
|
end
|
|
return chapterInfo
|
|
end
|
|
|
|
local function UpdateChapterInfo(data)
|
|
local chapterId = data.ChapterId
|
|
GetChapterInfo(chapterId):UpdateData(data)
|
|
UpdateRelationInfos(data.RelationInfos)
|
|
end
|
|
|
|
local function UpdateChapterInfos(data)
|
|
for _, info in pairs(data) do
|
|
UpdateChapterInfo(info)
|
|
end
|
|
end
|
|
|
|
function XFubenCharacterTowerManager.GetCharacterTowerChapterInfo(chapterId)
|
|
return GetChapterInfo(chapterId)
|
|
end
|
|
|
|
function XFubenCharacterTowerManager.GetCharacterTowerRelationInfo(relationId)
|
|
return GetRelationInfo(relationId)
|
|
end
|
|
|
|
---@return XCharacterTowerChapter
|
|
local function GetChapterViewModel(chapterId)
|
|
if not XTool.IsNumberValid(chapterId) then
|
|
XLog.Error("XFubenCharacterTowerManager GetChapterViewModel error: 章节Id错误, chapterId: " .. chapterId)
|
|
return
|
|
end
|
|
|
|
local chapter = _CharacterTowerChapters[chapterId]
|
|
if not chapter then
|
|
chapter = XCharacterTowerChapter.New(chapterId)
|
|
_CharacterTowerChapters[chapterId] = chapter
|
|
end
|
|
return chapter
|
|
end
|
|
|
|
function XFubenCharacterTowerManager.GetCharacterTowerChapter(chapterId)
|
|
return GetChapterViewModel(chapterId)
|
|
end
|
|
|
|
---@return XCharacterTowerRelation
|
|
local function GetRelationViewModel(relationId)
|
|
if not XTool.IsNumberValid(relationId) then
|
|
XLog.Error("XFubenCharacterTowerManager GetRelationViewModel error: 羁绊Id错误, relationId: " .. relationId)
|
|
return
|
|
end
|
|
|
|
local relation = _CharacterTowerRelations[relationId]
|
|
if not relation then
|
|
relation = XCharacterTowerRelation.New(relationId)
|
|
_CharacterTowerRelations[relationId] = relation
|
|
end
|
|
return relation
|
|
end
|
|
|
|
function XFubenCharacterTowerManager.GetCharacterTowerRelation(relationId)
|
|
return GetRelationViewModel(relationId)
|
|
end
|
|
|
|
--region 副本相关
|
|
|
|
function XFubenCharacterTowerManager.InitStageInfo()
|
|
local characterTowerCfg = XFubenCharacterTowerConfigs.GetAllCharacterTowerCfg()
|
|
for _, characterTower in pairs(characterTowerCfg or {}) do
|
|
for _, chapterId in pairs(characterTower.ChapterIds or {}) do
|
|
local stageIds = XFubenCharacterTowerConfigs.GetStageIdsByChapterId(chapterId)
|
|
for _, stageId in pairs(stageIds) do
|
|
local stageInfo = XDataCenter.FubenManager.GetStageInfo(stageId)
|
|
stageInfo.Type = XDataCenter.FubenManager.StageType.CharacterTower
|
|
stageInfo.ChapterId = chapterId
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- 胜利 & 奖励界面
|
|
function XFubenCharacterTowerManager.ShowReward(winData)
|
|
XLuaUiManager.Open("UiSettleWinMainLine", winData)
|
|
end
|
|
|
|
--endregion
|
|
|
|
-- 检查红点 未领取的奖励/未激活的羁绊
|
|
function XFubenCharacterTowerManager.CheckRedPointByChapterId(chapterId)
|
|
local chapterViewModel = GetChapterViewModel(chapterId)
|
|
local isOpen = chapterViewModel:CheckChapterCondition()
|
|
if not isOpen then
|
|
return false
|
|
end
|
|
local rewardAchieved = chapterViewModel:CheckChapterRewardAchieved()
|
|
if rewardAchieved then
|
|
return true
|
|
end
|
|
local relationGroupId = chapterViewModel:GetChapterRelationGroupId()
|
|
if not XTool.IsNumberValid(relationGroupId) then
|
|
return false
|
|
end
|
|
local relationViewModel = GetRelationViewModel(relationGroupId)
|
|
local characterId = chapterViewModel:GetChapterCharacterId()
|
|
local notActive = relationViewModel:CheckRelationNotActive(characterId)
|
|
if notActive then
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
-- 判断是否在活动中
|
|
function XFubenCharacterTowerManager.CheckInActivity(chapterIds)
|
|
local tempChapterIds = {}
|
|
for _, chapterId in pairs(chapterIds or {}) do
|
|
local chapterViewModel = GetChapterViewModel(chapterId)
|
|
if chapterViewModel:CheckChapterInActivity() then
|
|
table.insert(tempChapterIds, chapterId)
|
|
end
|
|
end
|
|
return #tempChapterIds > 0
|
|
end
|
|
|
|
-- 判断是否在开启时间内
|
|
function XFubenCharacterTowerManager.CheckInOpenTime(openTimeId)
|
|
local inOpenTime = XFunctionManager.CheckInTimeByTimeId(openTimeId)
|
|
if not inOpenTime then
|
|
local startTime = XFunctionManager.GetStartTimeByTimeId(openTimeId)
|
|
local startTimeStr = XTime.TimestampToGameDateTimeString(startTime, "MM-dd HH:mm")
|
|
return false, XUiHelper.GetText("CharacterTowerOpenTimeDesc", startTimeStr)
|
|
end
|
|
return true, ""
|
|
end
|
|
|
|
function XFubenCharacterTowerManager.CheckCondition(conditionId)
|
|
if XTool.IsNumberValid(conditionId) then
|
|
return XConditionManager.CheckCondition(conditionId)
|
|
end
|
|
return true, ""
|
|
end
|
|
|
|
-- 是否解锁
|
|
function XFubenCharacterTowerManager.IsUnlock(characterTowerId)
|
|
local characterTowerConfig = XFubenCharacterTowerConfigs.GetCharacterTowerById(characterTowerId)
|
|
local inOpenTime, desc = XFubenCharacterTowerManager.CheckInOpenTime(characterTowerConfig.OpenTimeId)
|
|
if not inOpenTime then
|
|
return false, desc
|
|
end
|
|
if XFubenCharacterTowerManager.CheckInActivity(characterTowerConfig.ChapterIds) then
|
|
return true, ""
|
|
end
|
|
return XFubenCharacterTowerManager.CheckCondition(characterTowerConfig.ConditionId)
|
|
end
|
|
|
|
-- 打开章节UI
|
|
function XFubenCharacterTowerManager.OpenChapterUi(chapterId, isCloseLastUi)
|
|
if not XTool.IsNumberValid(chapterId) then
|
|
return
|
|
end
|
|
local chapterViewModel = GetChapterViewModel(chapterId)
|
|
local uiName = chapterViewModel:GetOpenChapterUiName()
|
|
local ret, desc = chapterViewModel:CheckChapterCondition()
|
|
if ret then
|
|
XFubenCharacterTowerManager.SaveCharacterTowerChapterClick(chapterId)
|
|
if XLuaUiManager.IsUiLoad(uiName) then
|
|
XLuaUiManager.Remove(uiName)
|
|
end
|
|
if isCloseLastUi then
|
|
XLuaUiManager.PopThenOpen(uiName, chapterId)
|
|
else
|
|
XLuaUiManager.Open(uiName, chapterId)
|
|
end
|
|
else
|
|
XUiManager.TipError(desc)
|
|
end
|
|
end
|
|
|
|
-- 检查是否有新章节开启
|
|
function XFubenCharacterTowerManager.CheckNewCharacterTowerChapterOpen()
|
|
local characterTowerCfg = XFubenCharacterTowerConfigs.GetAllCharacterTowerCfg()
|
|
for _, config in pairs(characterTowerCfg or {}) do
|
|
for _, chapterId in pairs(config.ChapterIds or {}) do
|
|
local chapterViewModel = GetChapterViewModel(chapterId)
|
|
local isInActivity = chapterViewModel:CheckChapterInActivity()
|
|
local isClick = XFubenCharacterTowerManager.CheckCharacterTowerChapterClick(chapterId)
|
|
if isInActivity and not isClick then
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
function XFubenCharacterTowerManager.GetCharacterTowerChapterClickKey(chapterId)
|
|
if XPlayer.Id and chapterId then
|
|
return string.format("CharacterTowerChapterClickKey_%s_%s", tostring(XPlayer.Id), tostring(chapterId))
|
|
end
|
|
end
|
|
|
|
function XFubenCharacterTowerManager.CheckCharacterTowerChapterClick(chapterId)
|
|
local key = XFubenCharacterTowerManager.GetCharacterTowerChapterClickKey(chapterId)
|
|
local isClick = XSaveTool.GetData(key) or false
|
|
return isClick
|
|
end
|
|
|
|
function XFubenCharacterTowerManager.SaveCharacterTowerChapterClick(chapterId)
|
|
local isClick = XFubenCharacterTowerManager.CheckCharacterTowerChapterClick(chapterId)
|
|
if isClick then
|
|
return
|
|
end
|
|
local key = XFubenCharacterTowerManager.GetCharacterTowerChapterClickKey(chapterId)
|
|
XSaveTool.SaveData(key, true)
|
|
end
|
|
|
|
function XFubenCharacterTowerManager.GetCharacterTowerRelationTaskKey(conditionId)
|
|
if XPlayer.Id and conditionId then
|
|
return string.format("CharacterTowerRelationTaskAnim_%s_%s", tostring(XPlayer.Id), tostring(conditionId))
|
|
end
|
|
end
|
|
|
|
function XFubenCharacterTowerManager.CheckRelationTaskPlayAnim(conditionId)
|
|
local key = XFubenCharacterTowerManager.GetCharacterTowerRelationTaskKey(conditionId)
|
|
local isPlay = XSaveTool.GetData(key) or false
|
|
return isPlay
|
|
end
|
|
|
|
function XFubenCharacterTowerManager.SaveRelationTaskPlayAnim(conditionId)
|
|
local isPlay = XFubenCharacterTowerManager.CheckRelationTaskPlayAnim(conditionId)
|
|
if isPlay then
|
|
return
|
|
end
|
|
local key = XFubenCharacterTowerManager.GetCharacterTowerRelationTaskKey(conditionId)
|
|
XSaveTool.SaveData(key, true)
|
|
end
|
|
|
|
--region 网络数据
|
|
|
|
-- 登录下发
|
|
function XFubenCharacterTowerManager.NotifyLoginCharacterTowerData(data)
|
|
--[[
|
|
public class NotifyLoginCharacterTowerData
|
|
{
|
|
public XCharacterTowerDataDb CharacterTowerDataDb;
|
|
}
|
|
]]
|
|
local dataDb = data.CharacterTowerDataDb
|
|
UpdateChapterInfos(dataDb.ChapterInfos)
|
|
UpdateActivityChapters(data.ActivityChapters)
|
|
end
|
|
|
|
-- 更新活动章节信息
|
|
function XFubenCharacterTowerManager.NotifyActivityCharacterTowerData(data)
|
|
--[[
|
|
public class NotifyActivityCharacterTowerData
|
|
{
|
|
public List<int> ActivityChapters;
|
|
}
|
|
]]
|
|
UpdateActivityChapters(data.ActivityChapters)
|
|
end
|
|
|
|
-- 领取章节奖励请求
|
|
function XFubenCharacterTowerManager.CharacterTowerGetChapterRewardRequest(chapterId, cb)
|
|
local req = { ChapterId = chapterId }
|
|
|
|
XNetwork.Call(RequestProto.CharacterTowerGetChapterRewardRequest, req, function(res)
|
|
if res.Code ~= XCode.Success then
|
|
XUiManager.TipCode(res.Code)
|
|
return
|
|
end
|
|
|
|
-- 刷新领取状态
|
|
GetChapterInfo(chapterId):RecordChapterRewardData(chapterId)
|
|
CsXGameEventManager.Instance:Notify(XEventId.EVENT_CHARACTER_TOWER_RECEIVE_REWARD)
|
|
|
|
if cb then
|
|
cb(res.Rewards)
|
|
end
|
|
end)
|
|
end
|
|
|
|
-- 领取关卡奖励请求
|
|
function XFubenCharacterTowerManager.CharacterTowerGetStageRewardRequest(chapterId, stageId, cb)
|
|
local req = { StageId = stageId }
|
|
|
|
XNetwork.Call(RequestProto.CharacterTowerGetStageRewardRequest, req, function(res)
|
|
if res.Code ~= XCode.Success then
|
|
XUiManager.TipCode(res.Code)
|
|
return
|
|
end
|
|
|
|
-- 刷新领取状态
|
|
GetChapterInfo(chapterId):RecordStageRewardData(stageId)
|
|
CsXGameEventManager.Instance:Notify(XEventId.EVENT_CHARACTER_TOWER_RECEIVE_REWARD)
|
|
|
|
if cb then
|
|
cb(res.Rewards)
|
|
end
|
|
end)
|
|
end
|
|
|
|
-- 领取星级奖励请求
|
|
function XFubenCharacterTowerManager.CharacterTowerGetStarRewardRequest(chapterId, treasureId, cb)
|
|
local req = { TreasureId = treasureId }
|
|
|
|
XNetwork.Call(RequestProto.CharacterTowerGetStarRewardRequest, req, function(res)
|
|
if res.Code ~= XCode.Success then
|
|
XUiManager.TipCode(res.Code)
|
|
return
|
|
end
|
|
|
|
-- 刷新领取状态
|
|
GetChapterInfo(chapterId):RecordTreasureData(treasureId)
|
|
CsXGameEventManager.Instance:Notify(XEventId.EVENT_CHARACTER_TOWER_RECEIVE_REWARD)
|
|
|
|
if cb then
|
|
cb(res.Rewards)
|
|
end
|
|
end)
|
|
end
|
|
|
|
-- 激活羁绊加成请求
|
|
function XFubenCharacterTowerManager.CharacterTowerActivateFightEventIdRequest(relationId, fightEventId, cb)
|
|
local req = { RelationId = relationId, FightEventId = fightEventId }
|
|
|
|
XNetwork.Call(RequestProto.CharacterTowerActivateFightEventIdRequest, req, function(res)
|
|
if res.Code ~= XCode.Success then
|
|
XUiManager.TipCode(res.Code)
|
|
return
|
|
end
|
|
|
|
-- 刷新羁绊状态
|
|
GetRelationInfo(relationId):RecordFightEventId(fightEventId)
|
|
-- 刷新已完成解锁条件
|
|
for _, conditionId in pairs(res.FinishConditions or {}) do
|
|
GetRelationInfo(relationId):RecordFinishCondition(conditionId)
|
|
end
|
|
|
|
if cb then
|
|
cb()
|
|
end
|
|
end)
|
|
end
|
|
|
|
-- 保存通关播放动画请求
|
|
function XFubenCharacterTowerManager.CharacterTowerSaveVideoStageIdRequest(chapterId, stageId, cb)
|
|
local req = { StageId = stageId }
|
|
|
|
XNetwork.Call(RequestProto.CharacterTowerSaveVideoStageIdRequest, req, function(res)
|
|
if res.Code ~= XCode.Success then
|
|
XUiManager.TipCode(res.Code)
|
|
return
|
|
end
|
|
|
|
-- 刷新播放状态
|
|
GetChapterInfo(chapterId):RecordVideoedId(stageId)
|
|
|
|
if cb then
|
|
cb()
|
|
end
|
|
end)
|
|
end
|
|
|
|
-- 保存播放剧情请求
|
|
function XFubenCharacterTowerManager.CharacterTowerSaveStoryIdRequest(relationId, storyId, cb)
|
|
local req = { RelationId = relationId, StoryId = storyId }
|
|
|
|
XNetwork.Call(RequestProto.CharacterTowerSaveStoryIdRequest, req, function(res)
|
|
if res.Code ~= XCode.Success then
|
|
XUiManager.TipCode(res.Code)
|
|
return
|
|
end
|
|
|
|
-- 刷新播放状态
|
|
GetRelationInfo(relationId):RecordStoryId(storyId)
|
|
-- 刷新已完成解锁条件
|
|
for _, conditionId in pairs(res.FinishConditions or {}) do
|
|
GetRelationInfo(relationId):RecordFinishCondition(conditionId)
|
|
end
|
|
|
|
if cb then
|
|
cb()
|
|
end
|
|
end)
|
|
end
|
|
|
|
-- 保存触发条件请求
|
|
function XFubenCharacterTowerManager.CharacterTowerSaveTriggerConditionIdRequest(chapterId, conditionId, cb)
|
|
local req = { ChapterId = chapterId, ConditionId = conditionId }
|
|
|
|
XNetwork.Call(RequestProto.CharacterTowerSaveTriggerConditionIdRequest, req, function(res)
|
|
if res.Code ~= XCode.Success then
|
|
XUiManager.TipCode(res.Code)
|
|
return
|
|
end
|
|
|
|
-- 刷新条件状态
|
|
GetChapterInfo(chapterId):RecordTriggerCondition(conditionId)
|
|
|
|
if cb then
|
|
cb()
|
|
end
|
|
end)
|
|
end
|
|
|
|
--endregion
|
|
|
|
-- 重写限时活动界面里基类的方法 在FubenManagerEx.Init()里使用
|
|
function XFubenCharacterTowerManager:ExOverrideBaseMethod()
|
|
return {
|
|
ExGetProgressTip = function(proxy)
|
|
if not XTool.IsNumberValid(proxy:ExGetConfig().SkipId) then
|
|
return ""
|
|
end
|
|
local list = XFunctionConfig.GetSkipFuncCfg(proxy:ExGetConfig().SkipId)
|
|
local chapterId = list.CustomParams[2]
|
|
if XTool.IsNumberValid(chapterId) then
|
|
local chapterViewModel = GetChapterViewModel(chapterId)
|
|
local finishCount, totalCount = chapterViewModel:GetChapterProgress()
|
|
return XUiHelper.GetText("CharacterTowerChapterProgressDesc", finishCount, totalCount)
|
|
end
|
|
return ""
|
|
end,
|
|
ExCheckIsShowRedPoint = function(proxy)
|
|
if not XTool.IsNumberValid(proxy:ExGetConfig().SkipId) then
|
|
return proxy.Super.ExCheckIsShowRedPoint(proxy)
|
|
end
|
|
local list = XFunctionConfig.GetSkipFuncCfg(proxy:ExGetConfig().SkipId)
|
|
local chapterId = list.CustomParams[2]
|
|
if XTool.IsNumberValid(chapterId) then
|
|
local hasRedPoint = XFubenCharacterTowerManager.CheckRedPointByChapterId(chapterId)
|
|
if hasRedPoint then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end,
|
|
ExGetRunningTimeStr = function(proxy)
|
|
-- 隐藏活动剩余时间
|
|
return ""
|
|
end,
|
|
}
|
|
end
|
|
|
|
-- 添加监听消息
|
|
function XFubenCharacterTowerManager.InitEventListener()
|
|
XEventManager.AddEventListener(XEventId.EVENT_CHARACTER_TOWER_CONDITION_LISTENING, XFubenCharacterTowerManager.ConditionListening)
|
|
end
|
|
|
|
-- Condition监听
|
|
function XFubenCharacterTowerManager.ConditionListening(listeningType, args)
|
|
if not XFunctionManager.JudgeCanOpen(XFunctionManager.FunctionName.CharacterTower) then
|
|
return
|
|
end
|
|
|
|
local infoDic = XFubenCharacterTowerConfigs.GetInfoDicByListeningType(listeningType)
|
|
if listeningType == XFubenCharacterTowerConfigs.ListeningType.Character or listeningType == XFubenCharacterTowerConfigs.ListeningType.Favorability then
|
|
local characterId = args.CharacterId
|
|
if not XTool.IsNumberValid(characterId) then
|
|
return
|
|
end
|
|
for _, info in pairs(infoDic) do
|
|
if info.CharacterId == characterId then
|
|
if XFubenCharacterTowerManager.CheckListeningCondition(info, false) then
|
|
break
|
|
end
|
|
end
|
|
end
|
|
elseif listeningType == XFubenCharacterTowerConfigs.ListeningType.Stage then
|
|
local stageId = args.StageId
|
|
if not XTool.IsNumberValid(stageId) then
|
|
return
|
|
end
|
|
for _, info in pairs(infoDic) do
|
|
local template = XConditionManager.GetConditionTemplate(info.ConditionId)
|
|
local isContain = table.contains(template.Params or {}, stageId)
|
|
if isContain then
|
|
if XFubenCharacterTowerManager.CheckListeningCondition(info, true) then
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function XFubenCharacterTowerManager.CheckListeningCondition(info, isCloseLastUi)
|
|
if XTool.IsTableEmpty(info) then
|
|
return false
|
|
end
|
|
local isTrigger = GetChapterInfo(info.ChapterId):CheckTriggerCondition(info.ConditionId)
|
|
local relationGroupId = GetChapterViewModel(info.ChapterId):GetChapterRelationGroupId()
|
|
local isFinish = GetRelationInfo(relationGroupId):CheckFinishCondition(info.ConditionId)
|
|
local isCheck = XConditionManager.CheckCondition(info.ConditionId, info.CharacterId)
|
|
if not isTrigger and not isFinish and isCheck then
|
|
XFubenCharacterTowerManager.CharacterTowerSaveTriggerConditionIdRequest(info.ChapterId, info.ConditionId, function()
|
|
XLuaUiManager.Open("UiCharacterTowerLeftTip", info.ChapterId, info.ConditionId, isCloseLastUi)
|
|
end)
|
|
return true
|
|
end
|
|
return false
|
|
end
|
|
|
|
function XFubenCharacterTowerManager.Init()
|
|
XFubenCharacterTowerManager.InitEventListener()
|
|
end
|
|
|
|
XFubenCharacterTowerManager.Init()
|
|
return XFubenCharacterTowerManager
|
|
end
|
|
|
|
XRpc.NotifyLoginCharacterTowerData = function(data)
|
|
XDataCenter.CharacterTowerManager.NotifyLoginCharacterTowerData(data)
|
|
end
|
|
|
|
XRpc.NotifyActivityCharacterTowerData = function(data)
|
|
XDataCenter.CharacterTowerManager.NotifyActivityCharacterTowerData(data)
|
|
end |