2271 lines
No EOL
79 KiB
Lua
2271 lines
No EOL
79 KiB
Lua
local XTRPGMaze = require("XEntity/XTRPG/XTRPGMaze")
|
||
local XTRPGBaseInfo = require("XEntity/XTRPG/XTRPGBaseInfo")
|
||
local XTRPGThirdAreaInfo = require("XEntity/XTRPG/XTRPGThirdAreaInfo")
|
||
local XTRPGRole = require("XEntity/XTRPG/XTRPGRole")
|
||
local XTRPGClientShopInfo = require("XEntity/XTRPG/XTRPGClientShopInfo")
|
||
local XTRPGBossInfo = require("XEntity/XTRPG/XTRPGBossInfo")
|
||
local XTRPGExamine = require("XEntity/XTRPG/XTRPGExamine")
|
||
|
||
XTRPGManagerCreator = function()
|
||
local tableInsert = table.insert
|
||
local tableSort = table.sort
|
||
local tonumber = tonumber
|
||
local mathFloor = math.floor
|
||
local mathMax = math.max
|
||
local mathCeil = math.ceil
|
||
local pairs = pairs
|
||
local CSXTextManagerGetText = CS.XTextManager.GetText
|
||
local stringFormat = string.format
|
||
|
||
local BaseInfo = XTRPGBaseInfo.New()
|
||
local TargetList = {} --已完成的目标
|
||
local RewardList = {} --已领取的奖励id
|
||
local ThirdAreaInfos = {}
|
||
local DEFUALT_thirdAreaId_FOR_STUPID_DESIGN = -1--数据不一致兼容
|
||
local Roles = {}
|
||
local ShopInfos = {}
|
||
local MazeInfos = {}
|
||
local MemoirList = {}
|
||
local ItemList = {}
|
||
local BossInfo = XTRPGBossInfo.New()
|
||
local CurrTargetId = 0
|
||
local CurrTargetLinkId = 0
|
||
local AddItemMaxCountNum = 0
|
||
local CurExmaine = XTRPGExamine.New() --当前检定信息
|
||
local AlreadyOpenMazeList = {} --已开启的迷宫列表
|
||
local CurrAreaOpenNum = 0
|
||
local OldCurrTargetId = 0
|
||
local NewTargetTime = 0
|
||
local IsCanCheckOpenNewMaze = false
|
||
local IsNormalPage = false --当前跑团页面模式,false是探索,true是常规主线
|
||
local StagePassDic = {} --已完成关卡记录
|
||
|
||
local BagHideItemIdList = {
|
||
[XDataCenter.ItemManager.ItemId.TRPGTalen] = 1,
|
||
[XDataCenter.ItemManager.ItemId.TRPGMoney] = 1,
|
||
[XDataCenter.ItemManager.ItemId.TRPGEXP] = 1,
|
||
[XDataCenter.ItemManager.ItemId.TRPGEndurance] = 1,
|
||
}
|
||
|
||
---------------------本地接口 begin------------------
|
||
local function UpdateShopInfos(shopInfos)
|
||
if not shopInfos then return end
|
||
for _, v in pairs(shopInfos) do
|
||
if not ShopInfos[v.Id] then
|
||
ShopInfos[v.Id] = XTRPGClientShopInfo.New()
|
||
end
|
||
ShopInfos[v.Id]:UpdateData(v)
|
||
end
|
||
CsXGameEventManager.Instance:Notify(XEventId.EVENT_TRPG_SHOP_INFO_CHANGE)
|
||
end
|
||
|
||
local function UpdateShopExtraData(extraDatas)
|
||
if not extraDatas then return end
|
||
for _, v in ipairs(extraDatas) do
|
||
if not ShopInfos[v.Id] then
|
||
ShopInfos[v.Id] = XTRPGClientShopInfo.New()
|
||
end
|
||
ShopInfos[v.Id]:UpdateData(v)
|
||
end
|
||
CsXGameEventManager.Instance:Notify(XEventId.EVENT_TRPG_SHOP_INFO_CHANGE)
|
||
end
|
||
|
||
local function AddBuyTimes(shopId, itemId, count)
|
||
if not ShopInfos[shopId] then
|
||
XLog.Error("XTRPGManager AddBuyTimes Error: can not found shop, shopId is " .. shopId)
|
||
return
|
||
end
|
||
ShopInfos[shopId]:AddItemBuyCount(itemId, count)
|
||
end
|
||
|
||
local function UpdateCurrTargetLinkId(currTargetLinkId, isNotPlayNewAnima)
|
||
local currTargetLinkIsFinish, targetId = XDataCenter.TRPGManager.GetTargetLinkIsFinish(currTargetLinkId)
|
||
if currTargetLinkIsFinish then
|
||
CurrTargetLinkId, CurrTargetId = XDataCenter.TRPGManager.GetOneCanFindTarget()
|
||
else
|
||
CurrTargetLinkId, CurrTargetId = currTargetLinkId, targetId
|
||
end
|
||
XEventManager.DispatchEvent(XEventId.EVENT_TRPG_UPDATE_TARGET, isNotPlayNewAnima)
|
||
end
|
||
|
||
local function UpdateMemoirInfos(memoirList)
|
||
for _, memoirId in pairs(memoirList) do
|
||
MemoirList[memoirId] = 1
|
||
end
|
||
end
|
||
|
||
local function UpdateBossInfo(bossInfo)
|
||
if not bossInfo then return end
|
||
BossInfo:UpdateBaseData(bossInfo)
|
||
end
|
||
|
||
local function UpdateBossHpInfo(hpInfo)
|
||
if not hpInfo then return end
|
||
BossInfo:UpdateHpData(hpInfo)
|
||
XEventManager.DispatchEvent(XEventId.EVENT_TRPG_BOSS_HP_SYN)
|
||
end
|
||
|
||
local function UpdateBossPhasesRewardListInfo(PhasesRewardList)
|
||
if not PhasesRewardList then return end
|
||
BossInfo:UpdatePhasesRewardList(PhasesRewardList)
|
||
end
|
||
|
||
local function UpdateWorldBossChallengeCount(count)
|
||
BossInfo:UpdateWorldBossChallengeCount(count)
|
||
CsXGameEventManager.Instance:Notify(XEventId.EVENT_TRPG_WORLDBOSS_SYNCDATA)
|
||
end
|
||
|
||
local function UpdateRewardList(rewardList)
|
||
if not rewardList then return end
|
||
for _, rewardId in pairs(rewardList) do
|
||
RewardList[rewardId] = 1
|
||
end
|
||
end
|
||
|
||
local function UpdateTargetList(targetList)
|
||
if not targetList then return end
|
||
for _, targetId in pairs(targetList) do
|
||
if not TargetList[targetId] then
|
||
TargetList[targetId] = 1
|
||
end
|
||
end
|
||
end
|
||
|
||
local function UpdateAlreadyOpenMaze(mazeId)
|
||
AlreadyOpenMazeList[mazeId] = 1
|
||
end
|
||
|
||
local function IsOpenMaze(mazeId)
|
||
return AlreadyOpenMazeList[mazeId]
|
||
end
|
||
|
||
local function InitAleardyOpenMazeList()
|
||
local secondAreaIdToMazeIdDic = XTRPGConfigs.GetSecondAreaIdToMazeIdDic()
|
||
local condition, ret
|
||
for secondAreaId, mazeId in pairs(secondAreaIdToMazeIdDic) do
|
||
condition = XTRPGConfigs.GetSecondAreaCondition(secondAreaId)
|
||
ret = XConditionManager.CheckCondition(condition)
|
||
if ret then
|
||
UpdateAlreadyOpenMaze(mazeId)
|
||
end
|
||
end
|
||
end
|
||
|
||
local function UpdateOldCurrTargetId()
|
||
OldCurrTargetId = XDataCenter.TRPGManager.GetCurrTargetId()
|
||
end
|
||
|
||
local function GetOldCurrTargetId()
|
||
return OldCurrTargetId
|
||
end
|
||
|
||
local function SetIsCanCheckOpenNewMaze(isCanCheckOpenNewMaze)
|
||
IsCanCheckOpenNewMaze = isCanCheckOpenNewMaze
|
||
end
|
||
|
||
local function SetIsNormalPage(isNormalPage)
|
||
IsNormalPage = isNormalPage
|
||
end
|
||
|
||
local function UpdateStagePassDic(stageList)
|
||
for _, stageId in ipairs(stageList or {}) do
|
||
StagePassDic[stageId] = true
|
||
end
|
||
end
|
||
---------------------本地接口 end------------------
|
||
local XTRPGManager = {}
|
||
|
||
-----------------功能入口begin----------------
|
||
function XTRPGManager.GetProgress()
|
||
local areaMaxNum = XTRPGConfigs.GetMainAreaMaxNum()
|
||
local curAreaPercent
|
||
local totalPercent = 0
|
||
for id = 1, areaMaxNum do
|
||
curAreaPercent = XTRPGManager.GetAreaRewardPercent(id)
|
||
curAreaPercent = curAreaPercent / areaMaxNum
|
||
totalPercent = totalPercent + curAreaPercent
|
||
end
|
||
return mathFloor(totalPercent * 100)
|
||
end
|
||
|
||
function XTRPGManager.InitCurrAreaOpenNum()
|
||
local currAreaOpenNum = XSaveTool.GetData("TRPGCurrAreaOpenNum_" .. XPlayer.Id)
|
||
if currAreaOpenNum then
|
||
XTRPGManager.SetCurrAreaOpenNum(currAreaOpenNum)
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.SetCurrAreaOpenNum(currAreaOpenNum)
|
||
CurrAreaOpenNum = currAreaOpenNum
|
||
end
|
||
|
||
function XTRPGManager.UpdateCurrAreaOpenNum()
|
||
local areaOpenNum = XTRPGManager.GetAreaOpenNum()
|
||
XTRPGManager.SetCurrAreaOpenNum(areaOpenNum)
|
||
XSaveTool.SaveData("TRPGCurrAreaOpenNum_" .. XPlayer.Id, areaOpenNum)
|
||
end
|
||
|
||
function XTRPGManager.IsActivityShowTag()
|
||
local areaOpenNum = XTRPGManager.GetAreaOpenNum()
|
||
return CurrAreaOpenNum ~= areaOpenNum
|
||
end
|
||
|
||
function XTRPGManager.IsTRPGClear()
|
||
local progress = XTRPGManager.GetProgress()
|
||
return progress == 100
|
||
end
|
||
-----------------功能入口end------------------
|
||
-----------------迷宫begin----------------
|
||
local __CurrentMazeId = 0
|
||
|
||
local function GetMaze(mazeId)
|
||
return MazeInfos[mazeId]
|
||
end
|
||
|
||
local function InitMazes()
|
||
local mazeIds = XTRPGConfigs.GetMazeIds()
|
||
for mazeId in pairs(mazeIds) do
|
||
local maze = GetMaze(mazeId)
|
||
if not maze then
|
||
maze = XTRPGMaze.New(mazeId)
|
||
MazeInfos[mazeId] = maze
|
||
end
|
||
end
|
||
end
|
||
|
||
local function UpdateMazeInfo(data)
|
||
if not data then return end
|
||
local mazeId = data.Id
|
||
local maze = GetMaze(mazeId)
|
||
maze:UpdateData(data)
|
||
end
|
||
|
||
local function UpdateMazeInfos(mazeInfos)
|
||
if not mazeInfos then return end
|
||
for _, data in pairs(mazeInfos) do
|
||
UpdateMazeInfo(data)
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.EnterMaze(mazeId)
|
||
__CurrentMazeId = mazeId
|
||
|
||
local maze = GetMaze(mazeId)
|
||
maze:Enter()
|
||
|
||
XTRPGManager.UnlockSelectCard()
|
||
|
||
XLuaUiManager.Open("UiTRPGMaze", mazeId)
|
||
end
|
||
|
||
function XTRPGManager.QuitMaze()
|
||
if __CurrentMazeId == 0 then return end
|
||
|
||
__CurrentMazeId = 0
|
||
|
||
if XLuaUiManager.IsUiShow("UiTRPGMaze") then
|
||
XLuaUiManager.Close("UiTRPGMaze")
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.TipQuitMaze(callBack)
|
||
local title = CSXTextManagerGetText("TRPGMazeLeaveTipTitle")
|
||
local content = CSXTextManagerGetText("TRPGMazeLeaveTipContent")
|
||
XUiManager.DialogTip(title, content, XUiManager.DialogType.Normal, nil, callBack)
|
||
end
|
||
|
||
function XTRPGManager.TipCurrentMaze()
|
||
if __CurrentMazeId == 0 then return end
|
||
|
||
local mazeId = __CurrentMazeId
|
||
local mazeName = XTRPGConfigs.GetMazeName(mazeId)
|
||
|
||
local layerId = XTRPGManager.GetMazeCurrentLayerId(mazeId)
|
||
local layerName = XTRPGConfigs.GetMazeLayerName(layerId)
|
||
|
||
local msg = CSXTextManagerGetText("TRPGMazeTipCurrentPos", mazeName, layerName)
|
||
XUiManager.TipMsg(msg)
|
||
end
|
||
|
||
local function RestartCurrentMaze()
|
||
if __CurrentMazeId == 0 then return end
|
||
|
||
local maze = GetMaze(__CurrentMazeId)
|
||
maze:RestartCurrentLayer()
|
||
end
|
||
|
||
local _ToRestartCurrentMaze
|
||
function XTRPGManager.ReqMazeRestart()
|
||
if __CurrentMazeId == 0 then return end
|
||
|
||
RestartCurrentMaze()
|
||
|
||
if XLuaUiManager.IsUiShow("UiTRPGMaze") then
|
||
CsXGameEventManager.Instance:Notify(XEventId.EVENT_TRPG_MAZE_RESTART)
|
||
else
|
||
_ToRestartCurrentMaze = true
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.IsMazeNeedRestart()
|
||
return _ToRestartCurrentMaze or false
|
||
end
|
||
|
||
function XTRPGManager.ClearMazeNeedRestart()
|
||
_ToRestartCurrentMaze = nil
|
||
end
|
||
|
||
function XTRPGManager.GetMazeCurrentLayerId(mazeId)
|
||
local maze = GetMaze(mazeId)
|
||
return maze:GetCurrentLayerId()
|
||
end
|
||
|
||
function XTRPGManager.GetMazeCurrentNodeId(mazeId)
|
||
local maze = GetMaze(mazeId)
|
||
return maze:GetCurrentNodeId()
|
||
end
|
||
|
||
function XTRPGManager.GetMazeCurrentStandNodeIndex(mazeId, layerId)
|
||
local maze = GetMaze(mazeId)
|
||
return maze:GetCurrentStandNodeIndex(layerId)
|
||
end
|
||
|
||
function XTRPGManager.GetMazeProgress(mazeId)
|
||
local maze = GetMaze(mazeId)
|
||
return maze:GetProgress()
|
||
end
|
||
|
||
function XTRPGManager.GetMazeNodeIdList(mazeId, layerId, notSort)
|
||
local maze = GetMaze(mazeId)
|
||
return maze:GetLayerNodeIdList(layerId, notSort)
|
||
end
|
||
|
||
function XTRPGManager.GetMazeCardBeginEndPos(mazeId, layerId, nodeId)
|
||
local maze = GetMaze(mazeId)
|
||
return maze:GetLayerCardBeginEndPos(layerId, nodeId)
|
||
end
|
||
|
||
function XTRPGManager.GetMazeCardNum(mazeId, layerId, nodeId)
|
||
local maze = GetMaze(mazeId)
|
||
return maze:GetLayerCardNum(layerId, nodeId)
|
||
end
|
||
|
||
function XTRPGManager.GetMazeCardId(mazeId, layerId, nodeId, cardIndex)
|
||
local maze = GetMaze(mazeId)
|
||
return maze:GetLayerCardId(layerId, nodeId, cardIndex)
|
||
end
|
||
|
||
function XTRPGManager.GetMazeRecordGroupCardCount(mazeId, cardRecordGroupId)
|
||
local maze = GetMaze(mazeId)
|
||
return maze:GetRecordGroupCardCount(cardRecordGroupId)
|
||
end
|
||
|
||
function XTRPGManager.IsCurrentLayer(mazeId, layerId)
|
||
local maze = GetMaze(mazeId)
|
||
return layerId and layerId == maze:GetCurrentLayerId()
|
||
end
|
||
|
||
function XTRPGManager.IsNodeReachable(mazeId, layerId, nodeId)
|
||
local maze = GetMaze(mazeId)
|
||
return maze:IsNodeReachable(layerId, nodeId)
|
||
end
|
||
|
||
function XTRPGManager.IsCardReachable(mazeId, layerId, nodeId, cardIndex)
|
||
local maze = GetMaze(mazeId)
|
||
return maze:IsCardReachable(layerId, nodeId, cardIndex)
|
||
end
|
||
|
||
function XTRPGManager.CheckCardCurrentType(layerId, nodeId, cardId, cardType)
|
||
if __CurrentMazeId == 0 then return false end
|
||
local maze = GetMaze(__CurrentMazeId)
|
||
return maze:CheckCardCurrentType(layerId, nodeId, cardId, cardType)
|
||
end
|
||
|
||
function XTRPGManager.IsMazeCardFinished(mazeId, layerId, cardId)
|
||
local maze = GetMaze(mazeId)
|
||
if not maze then return false end
|
||
return maze:IsCardFinished(layerId, cardId)
|
||
end
|
||
|
||
function XTRPGManager.IsMazeCardDisposeableForeverFinished(mazeId, layerId, cardId)
|
||
local maze = GetMaze(mazeId)
|
||
if not maze then return false end
|
||
return maze:IsCardDisposeableForeverFinished(layerId, cardId)
|
||
end
|
||
|
||
function XTRPGManager.GetCardFinishedId(mazeId, layerId, nodeId, cardIndex)
|
||
local maze = GetMaze(mazeId)
|
||
return maze:GetCardFinishedId(layerId, nodeId, cardIndex)
|
||
end
|
||
|
||
function XTRPGManager.IsCardAfterCurrentStand(mazeId, layerId, nodeId, cardIndex)
|
||
local maze = GetMaze(mazeId)
|
||
return maze:IsCardAfterCurrentStand(layerId, nodeId, cardIndex)
|
||
end
|
||
|
||
function XTRPGManager.IsCardCurrentStand(mazeId, layerId, nodeId, cardIndex)
|
||
local maze = GetMaze(mazeId)
|
||
return maze:IsCardCurrentStand(layerId, nodeId, cardIndex)
|
||
end
|
||
|
||
function XTRPGManager.GetMazeCardMoveDelta(cardIndex)
|
||
if __CurrentMazeId == 0 then return end
|
||
local maze = GetMaze(__CurrentMazeId)
|
||
return maze:GetMoveDelta(cardIndex)
|
||
end
|
||
|
||
function XTRPGManager.CheckQuickFight(challengeLevel)
|
||
return challengeLevel and XTRPGManager.GetExploreLevel() >= challengeLevel
|
||
end
|
||
|
||
--请求进入迷宫
|
||
local EnterMazeCD = 2
|
||
local LastEnterMazeTime = 0
|
||
function XTRPGManager.TRPGEnterMazeRequest(mazeId, cb)
|
||
local nowTime = XTime.GetServerNowTimestamp()
|
||
if nowTime < LastEnterMazeTime + EnterMazeCD then
|
||
return
|
||
end
|
||
LastEnterMazeTime = nowTime
|
||
|
||
local req = { MazeId = mazeId }
|
||
XNetwork.Call("TRPGEnterMazeRequest", req, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
local currentPos = res.CurrentPos
|
||
UpdateMazeInfo(res.MazeInfo)
|
||
|
||
XTRPGManager.EnterMaze(mazeId)
|
||
|
||
if cb then cb() end
|
||
end)
|
||
end
|
||
|
||
--请求迷宫位置整体移动:数据更新需在界面动画表现执行完毕之后,否则会增加冗余计算量
|
||
local _ToMoveCardIndex, _ToPlayMovieId
|
||
function XTRPGManager.ReqMazeMoveNext(cardIndex, movieId)
|
||
if __CurrentMazeId == 0 then return end
|
||
|
||
if XLuaUiManager.IsUiShow("UiTRPGMaze") then
|
||
CsXGameEventManager.Instance:Notify(XEventId.EVENT_TRPG_MAZE_MOVE_NEXT, cardIndex)
|
||
else
|
||
_ToMoveCardIndex = cardIndex
|
||
_ToPlayMovieId = movieId
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.GetMazeNeedMoveNextCardIndex()
|
||
return _ToMoveCardIndex, _ToPlayMovieId
|
||
end
|
||
|
||
function XTRPGManager.ClearMazeNeedMoveNextCardIndex()
|
||
_ToMoveCardIndex = nil
|
||
_ToPlayMovieId = nil
|
||
end
|
||
|
||
function XTRPGManager.MazeMoveNext(cardIndex)
|
||
if __CurrentMazeId == 0 then return end
|
||
|
||
local maze = GetMaze(__CurrentMazeId)
|
||
maze:MoveNext(cardIndex)
|
||
end
|
||
|
||
function XTRPGManager.MazeMoveTo(layerId, nodeId, cardIndex)
|
||
if __CurrentMazeId == 0 then return end
|
||
local maze = GetMaze(__CurrentMazeId)
|
||
maze:MoveTo(layerId, nodeId, cardIndex)
|
||
end
|
||
|
||
function XTRPGManager.SelectCard(cardIndex)
|
||
if __CurrentMazeId == 0 then return end
|
||
|
||
local maze = GetMaze(__CurrentMazeId)
|
||
maze:SelectCard(cardIndex)
|
||
end
|
||
|
||
local _CurrentSelectCardLock--本次选择结果未处理之前不允许进行下一次选择操作
|
||
function XTRPGManager.LockSelectCard()
|
||
_CurrentSelectCardLock = true
|
||
end
|
||
|
||
function XTRPGManager.UnlockSelectCard()
|
||
_CurrentSelectCardLock = nil
|
||
end
|
||
|
||
function XTRPGManager.IsSelectCardLock()
|
||
return _CurrentSelectCardLock or false
|
||
end
|
||
|
||
--请求选择卡牌
|
||
function XTRPGManager.TRPGMazeSelectCardRequest(cardIndex)
|
||
|
||
if __CurrentMazeId == 0 then return end
|
||
if XTRPGManager.IsSelectCardLock() then return end
|
||
|
||
local selectPos = {
|
||
LayerId = XTRPGManager.GetMazeCurrentLayerId(__CurrentMazeId),
|
||
NodeId = XTRPGManager.GetMazeCurrentNodeId(__CurrentMazeId),
|
||
Index = cardIndex,
|
||
}
|
||
local req = { SelectPos = selectPos }
|
||
|
||
local cardId = XTRPGManager.GetMazeCardId(__CurrentMazeId, selectPos.LayerId, selectPos.NodeId, cardIndex)
|
||
|
||
XTRPGManager.LockSelectCard()
|
||
|
||
XNetwork.Call("TRPGMazeSelectCardRequest", req, function(res)
|
||
|
||
XTRPGManager.UnlockSelectCard()
|
||
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
local resultData = res.Result
|
||
local maze = GetMaze(__CurrentMazeId)
|
||
maze:OnCardResult(cardIndex, resultData)
|
||
end)
|
||
end
|
||
|
||
function XTRPGManager.NotifyTRPGMazeSelectCardResult(data)
|
||
local resultData = data.Result
|
||
if XTool.IsTableEmpty(resultData) then return end
|
||
if __CurrentMazeId == 0 then return end
|
||
|
||
local maze = GetMaze(__CurrentMazeId)
|
||
local cardIndex = resultData.CurPos.Index
|
||
maze:OnCardResult(cardIndex, resultData)
|
||
end
|
||
|
||
function XTRPGManager.NotifyMazeRecordCardId(data)
|
||
if XTool.IsTableEmpty(data) then return end
|
||
|
||
local mazeId = data.Id
|
||
local maze = GetMaze(mazeId)
|
||
local cardIds = { data.RecordCardId }
|
||
maze:UpdateRecordCards(cardIds)
|
||
end
|
||
|
||
--请求放弃挑战
|
||
function XTRPGManager.TRPGMazeGiveUpChallengeRequest(cardIndex, cardId)
|
||
if __CurrentMazeId == 0 then return end
|
||
|
||
local layerId = XTRPGManager.GetMazeCurrentLayerId(__CurrentMazeId)
|
||
local nodeId = XTRPGManager.GetMazeCurrentNodeId(__CurrentMazeId)
|
||
local cardId = XTRPGManager.GetMazeCardId(__CurrentMazeId, layerId, nodeId, cardIndex)
|
||
if not XTRPGConfigs.CheckMazeCardType(cardId, XTRPGConfigs.CardType.Fight)
|
||
and not XTRPGConfigs.CheckMazeCardType(cardId, XTRPGConfigs.CardType.Random) then--随机牌可能随出战斗牌
|
||
return
|
||
end
|
||
|
||
local selectPos = {
|
||
LayerId = layerId,
|
||
NodeId = nodeId,
|
||
Index = cardIndex,
|
||
}
|
||
local req = { Pos = selectPos }
|
||
XNetwork.Call("TRPGMazeGiveUpChallengeRequest", req, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
local resultData = res.Result
|
||
local maze = GetMaze(__CurrentMazeId)
|
||
maze:OnCardResult(cardIndex, resultData)
|
||
end)
|
||
end
|
||
|
||
--请求快速挑战
|
||
function XTRPGManager.TRPGMazeQuickChallengeRequest(cardIndex)
|
||
if __CurrentMazeId == 0 then return end
|
||
|
||
local selectPos = {
|
||
LayerId = XTRPGManager.GetMazeCurrentLayerId(__CurrentMazeId),
|
||
NodeId = XTRPGManager.GetMazeCurrentNodeId(__CurrentMazeId),
|
||
Index = cardIndex,
|
||
}
|
||
local req = { Pos = selectPos }
|
||
XNetwork.Call("TRPGMazeQuickChallengeRequest", req, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
local resultData = res.Result
|
||
local maze = GetMaze(__CurrentMazeId)
|
||
maze:OnCardResult(cardIndex, resultData)
|
||
end)
|
||
end
|
||
-----------------迷宫end------------------
|
||
-----------------主界面begin------------------
|
||
function XTRPGManager.GetAreaState(areaId)
|
||
local openLastTimestamp = XTRPGConfigs.GetAreaOpenLastTimeStamp(areaId)
|
||
if openLastTimestamp > 0 then
|
||
return XTRPGConfigs.AreaStateType.NotOpen
|
||
elseif XTRPGManager.IsAreaExplored(areaId) then
|
||
return XTRPGConfigs.AreaStateType.Over
|
||
end
|
||
return XTRPGConfigs.AreaStateType.Open
|
||
end
|
||
|
||
function XTRPGManager.IsAreaExplored(areaId)
|
||
local percent = XTRPGManager.GetMainLineTargetLinkPercentByAreaId(areaId)
|
||
return percent == 1
|
||
end
|
||
|
||
function XTRPGManager.GetAreaOpenNum()
|
||
local mainAreaTemplate = XTRPGConfigs.GetMainAreaTemplate()
|
||
local currAreaOpenNum = 0
|
||
local areaState
|
||
for id in pairs(mainAreaTemplate) do
|
||
areaState = XTRPGManager.GetAreaState(id)
|
||
if areaState == XTRPGConfigs.AreaStateType.Open then
|
||
currAreaOpenNum = currAreaOpenNum + 1
|
||
end
|
||
end
|
||
return currAreaOpenNum
|
||
end
|
||
|
||
function XTRPGManager.IsNormalPage()
|
||
return IsNormalPage
|
||
end
|
||
-----------------主界面end------------------
|
||
-----------------商店begin----------------
|
||
function XTRPGManager.GetShopItemAlreadyBuyCount(shopId, itemId)
|
||
local shopInfo = ShopInfos[shopId]
|
||
return shopInfo and shopInfo:GetItemCount(itemId) or 0
|
||
end
|
||
|
||
function XTRPGManager.GetShopItemAddBuyCount(shopId)
|
||
local shopInfo = ShopInfos[shopId]
|
||
return shopInfo and shopInfo:GetAddBuyCount() or 0
|
||
end
|
||
|
||
function XTRPGManager.GetShopItemCanBuyCount(shopId, shopItemId)
|
||
local alreadyBuyCount = XTRPGManager.GetShopItemAlreadyBuyCount(shopId, shopItemId)
|
||
local shopItemCount = XTRPGConfigs.GetShopItemCount(shopId, shopItemId)
|
||
local addBuyCount = XTRPGManager.GetShopItemAddBuyCount(shopId)
|
||
return mathMax(shopItemCount - alreadyBuyCount + addBuyCount, 0)
|
||
end
|
||
|
||
function XTRPGManager.GetShopItemConsumeCount(shopId, shopItemId)
|
||
local shopInfo = ShopInfos[shopId]
|
||
local disCount = shopInfo and shopInfo:GetDisCount()
|
||
local consumeCount = XTRPGConfigs.GetShopItemConsumeCount(shopItemId)
|
||
if disCount then
|
||
consumeCount = consumeCount * (disCount / 100)
|
||
end
|
||
return mathCeil(consumeCount)
|
||
end
|
||
|
||
function XTRPGManager.GetShopItemIdList(shopId)
|
||
local shopItemIdList = XTRPGConfigs.GetShopItemIdList(shopId)
|
||
local list = {}
|
||
local condition, ret
|
||
local itemId, itemTemplate
|
||
|
||
for _, shopItemId in ipairs(shopItemIdList) do
|
||
condition = XTRPGConfigs.GetShopItemCondition(shopItemId)
|
||
ret = XConditionManager.CheckCondition(condition)
|
||
itemId = XTRPGConfigs.GetItemIdByShopItemId(shopItemId)
|
||
itemTemplate = XDataCenter.ItemManager.GetItemTemplate(itemId)
|
||
if ret and itemTemplate then
|
||
tableInsert(list, shopItemId)
|
||
end
|
||
end
|
||
|
||
tableSort(list, function(shopItemIdA, shopItemIdB)
|
||
local shopItemLimitCountA = XTRPGConfigs.GetShopItemCount(shopId, shopItemIdA)
|
||
local shopItemLimitCountB = XTRPGConfigs.GetShopItemCount(shopId, shopItemIdB)
|
||
-- 是否卖光
|
||
if (shopItemLimitCountA and shopItemLimitCountA > 0) or (shopItemLimitCountB and shopItemLimitCountB > 0) then
|
||
local canBuyCountA = XDataCenter.TRPGManager.GetShopItemCanBuyCount(shopId, shopItemIdA)
|
||
local canBuyCountB = XDataCenter.TRPGManager.GetShopItemCanBuyCount(shopId, shopItemIdB)
|
||
-- 如果商品有次数限制,并且可购买的数量为0,则判断为售罄
|
||
local isSellOutA = canBuyCountA == 0 and shopItemLimitCountA > 0
|
||
local isSellOutB = canBuyCountB == 0 and shopItemLimitCountB > 0
|
||
if isSellOutA ~= isSellOutB then
|
||
return isSellOutB
|
||
end
|
||
end
|
||
return shopItemIdA < shopItemIdB
|
||
end)
|
||
return list
|
||
end
|
||
-----------------商店end------------------
|
||
-----------------探索等级 begin----------------
|
||
function XTRPGManager.GetExploreLevel()
|
||
return BaseInfo:GetLevel()
|
||
end
|
||
|
||
function XTRPGManager.GetExploreCurExp()
|
||
return BaseInfo:GetExp()
|
||
end
|
||
|
||
function XTRPGManager.GetExploreMaxExp()
|
||
return BaseInfo:GetMaxExp()
|
||
end
|
||
|
||
function XTRPGManager.GetExploreCurEndurance()
|
||
return BaseInfo:GetEndurance()
|
||
end
|
||
|
||
function XTRPGManager.GetExploreMaxEndurance()
|
||
return BaseInfo:GetMaxEndurance()
|
||
end
|
||
|
||
function XTRPGManager.GetMaxTalentPoint()
|
||
return BaseInfo:GetMaxTalentPoint()
|
||
end
|
||
|
||
function XTRPGManager.CheckSaveIsAlreadyOpenPanelLevel()
|
||
if not XTRPGManager.IsAlreadyLevelUp() then
|
||
return
|
||
end
|
||
if not XSaveTool.GetData(stringFormat("%d%s", XPlayer.Id, "IsAlreadyOpenPanelLevel")) then
|
||
XSaveTool.SaveData(stringFormat("%d%s", XPlayer.Id, "IsAlreadyOpenPanelLevel"), true)
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.CheckIsAlreadyOpenPanelLevel()
|
||
return XSaveTool.GetData(stringFormat("%d%s", XPlayer.Id, "IsAlreadyOpenPanelLevel")) or false
|
||
end
|
||
|
||
function XTRPGManager.SaveExploreRedPointLevel(level)
|
||
if not XSaveTool.GetData(stringFormat("%d%s", XPlayer.Id, "ExploreRedPointLevel")) then
|
||
XSaveTool.SaveData(stringFormat("%d%s", XPlayer.Id, "ExploreRedPointLevel"), level)
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.GetExploreRedPointLevel()
|
||
return XSaveTool.GetData(stringFormat("%d%s", XPlayer.Id, "ExploreRedPointLevel"))
|
||
end
|
||
|
||
function XTRPGManager.IsAlreadyLevelUp()
|
||
local redPointLevel = BaseInfo:GetRedPointLevel()
|
||
local exploreLevel = XTRPGManager.GetExploreLevel()
|
||
if exploreLevel and redPointLevel then
|
||
return exploreLevel > redPointLevel
|
||
end
|
||
return false
|
||
end
|
||
|
||
--第1次升级后显示蓝点,打开说明弹窗后隐藏蓝点
|
||
function XTRPGManager.IsShowExploreRedPointLevel()
|
||
local isAlreadyLevelUp = XTRPGManager.IsAlreadyLevelUp()
|
||
local isAlreadyOpen = XTRPGManager.CheckIsAlreadyOpenPanelLevel()
|
||
return not isAlreadyOpen and isAlreadyLevelUp
|
||
end
|
||
-----------------探索等级 end------------------
|
||
-----------------调查员 begin----------------
|
||
local function GetRole(roleId)
|
||
return Roles[roleId]
|
||
end
|
||
|
||
local function UpdateRole(data, checkNew)
|
||
if not data then return end
|
||
|
||
local roleId = data.Id
|
||
local newRoleId
|
||
|
||
local role = GetRole(roleId)
|
||
if not role then
|
||
role = XTRPGRole.New(roleId)
|
||
Roles[roleId] = role
|
||
newRoleId = checkNew and roleId
|
||
end
|
||
|
||
role:UpdateData(data)
|
||
|
||
if newRoleId then
|
||
XLuaUiManager.Open("UiTRPGNewCharacter", newRoleId)
|
||
end
|
||
end
|
||
|
||
local function UpdateRoles(datas, checkNew)
|
||
if not datas then return end
|
||
for _, data in pairs(datas) do
|
||
UpdateRole(data, checkNew)
|
||
end
|
||
CsXGameEventManager.Instance:Notify(XEventId.EVENT_TRPG_ROLES_DATA_CHANGE)
|
||
XEventManager.DispatchEvent(XEventId.EVENT_TRPG_ROLES_DATA_CHANGE)
|
||
end
|
||
|
||
function XTRPGManager.GetOwnRoleIds()
|
||
local roleIdList = {}
|
||
for roleId in pairs(Roles) do
|
||
tableInsert(roleIdList, roleId)
|
||
end
|
||
return roleIdList
|
||
end
|
||
|
||
function XTRPGManager.GetSortedAllRoleIds()
|
||
return XTRPGConfigs.GetAllRoleIds()
|
||
end
|
||
|
||
function XTRPGManager.IsRolesEmpty()
|
||
return XTool.IsTableEmpty(Roles)
|
||
end
|
||
|
||
function XTRPGManager.IsRoleOwn(roleId)
|
||
return GetRole(roleId) and true or false
|
||
end
|
||
|
||
function XTRPGManager.IsRoleHaveBuffUp(roleId)
|
||
local role = GetRole(roleId)
|
||
return role:IsHaveBuffUp()
|
||
end
|
||
|
||
function XTRPGManager.IsRoleHaveBuffDown(roleId)
|
||
local role = GetRole(roleId)
|
||
return role:IsHaveBuffDown()
|
||
end
|
||
|
||
function XTRPGManager.GetRoleBuffIds(roleId)
|
||
local role = GetRole(roleId)
|
||
return role:GetBuffIds()
|
||
end
|
||
|
||
function XTRPGManager.GetRoleAttributes(roleId)
|
||
local role = GetRole(roleId)
|
||
return role:GetAttributes()
|
||
end
|
||
|
||
function XTRPGManager.GetRoleCommonTalentIds(roleId)
|
||
local role = GetRole(roleId)
|
||
return role:GetCommonTalentIds()
|
||
end
|
||
|
||
function XTRPGManager.GetRoleTalentIds(roleId)
|
||
local role = GetRole(roleId)
|
||
return role:GetTalentIds()
|
||
end
|
||
|
||
function XTRPGManager.GetRoleUsedTalentPoints(roleId)
|
||
local role = GetRole(roleId)
|
||
if not role then return 0 end
|
||
return role:GetUsedTalentPoint()
|
||
end
|
||
|
||
function XTRPGManager.GetTotalUsedTalentPoints()
|
||
local totalPoints = 0
|
||
for _, role in pairs(Roles) do
|
||
totalPoints = totalPoints + role:GetUsedTalentPoint()
|
||
end
|
||
return totalPoints
|
||
end
|
||
|
||
function XTRPGManager.GetRoleHaveTalentPoints()
|
||
local maxPoints = XTRPGManager.GetMaxTalentPoint()
|
||
local totalUsedPoints = XTRPGManager.GetTotalUsedTalentPoints()
|
||
return maxPoints - totalUsedPoints
|
||
end
|
||
|
||
function XTRPGManager.GetActiveTalentCostPoint(roleId, talentId)
|
||
local role = GetRole(roleId)
|
||
return role:GetTalentCostPoint(talentId)
|
||
end
|
||
|
||
function XTRPGManager.IsActiveTalentCostEnough(roleId, talentId)
|
||
local havePoints = XTRPGManager.GetRoleHaveTalentPoints()
|
||
local costPoints = XTRPGManager.GetActiveTalentCostPoint(roleId, talentId)
|
||
return havePoints >= costPoints
|
||
end
|
||
|
||
function XTRPGManager.IsTalentResetCostEnough()
|
||
local costItemId = XTRPGConfigs.GetTalentResetCostItemId()
|
||
local costItemCount = XTRPGConfigs.GetTalentResetCostItemCount()
|
||
return XDataCenter.ItemManager.CheckItemCountById(costItemId, costItemCount)
|
||
end
|
||
|
||
function XTRPGManager.IsRoleAnyTalentActive(roleId)
|
||
local role = GetRole(roleId)
|
||
return role:IsAnyTalentActive()
|
||
end
|
||
|
||
function XTRPGManager.IsRoleTalentActive(roleId, talentId)
|
||
local role = GetRole(roleId)
|
||
return role:IsTalentActive(talentId)
|
||
end
|
||
|
||
function XTRPGManager.IsRoleTalentCanActive(roleId, talentId)
|
||
local role = GetRole(roleId)
|
||
return role:CanActiveTalent(talentId)
|
||
end
|
||
|
||
function XTRPGManager.CheckRoleTalentRedPoint()
|
||
if not XTRPGConfigs.CheckButtonCondition(XTRPGConfigs.ButtonConditionId.Talent) then
|
||
return false
|
||
end
|
||
|
||
for _, role in pairs(Roles) do
|
||
if role:CanActiveAnyTalent() then
|
||
return true
|
||
end
|
||
end
|
||
|
||
return false
|
||
end
|
||
|
||
function XTRPGManager.GetRoleAttributeMinRollValue(roleId, attributeType)
|
||
local role = GetRole(roleId)
|
||
return role:GetAttributeMinRollValue(attributeType)
|
||
end
|
||
|
||
function XTRPGManager.GetRoleAttributeMaxRollValue(roleId, attributeType)
|
||
local role = GetRole(roleId)
|
||
return role:GetAttributeMaxRollValue(attributeType)
|
||
end
|
||
|
||
function XTRPGManager.GetRolesTotalCanRollValue(attributeType)
|
||
local totalMinValue, totalMaxValue = 0, 0
|
||
for roleId in pairs(Roles) do
|
||
totalMinValue = totalMinValue + XTRPGManager.GetRoleAttributeMinRollValue(roleId, attributeType)
|
||
totalMaxValue = totalMaxValue + XTRPGManager.GetRoleAttributeMaxRollValue(roleId, attributeType)
|
||
end
|
||
return totalMinValue, totalMaxValue
|
||
end
|
||
|
||
--请求激活天赋
|
||
function XTRPGManager.TRPGActivateTalentRequest(roleId, talentId, cb)
|
||
local req = { CharacterId = roleId, TalentId = talentId }
|
||
XNetwork.Call("TRPGActivateTalentRequest", req, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
if cb then
|
||
cb()
|
||
end
|
||
end)
|
||
end
|
||
|
||
--请求重置天赋
|
||
function XTRPGManager.TRPGResetTalentRequest(roleId, cb)
|
||
local req = { CharacterId = roleId }
|
||
XNetwork.Call("TRPGResetTalentRequest", req, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
if cb then
|
||
cb()
|
||
end
|
||
end)
|
||
end
|
||
|
||
function XTRPGManager.GetTalentPointTipsData()
|
||
local goodsShowParams = XGoodsCommonManager.GetGoodsShowParamsByTemplateId(XDataCenter.ItemManager.ItemId.TRPGTalen)
|
||
local data = {
|
||
Name = goodsShowParams.Name,
|
||
Count = XTRPGManager.GetRoleHaveTalentPoints(),
|
||
Icon = goodsShowParams.BigIcon or goodsShowParams.Icon,
|
||
Quality = goodsShowParams.Quality,
|
||
WorldDesc = XGoodsCommonManager.GetGoodsWorldDesc(XDataCenter.ItemManager.ItemId.TRPGTalen),
|
||
Description = XGoodsCommonManager.GetGoodsDescription(XDataCenter.ItemManager.ItemId.TRPGTalen),
|
||
IsTempItemData = true
|
||
}
|
||
return data
|
||
end
|
||
-----------------调查员 end----------------
|
||
-----------------背包begin----------------
|
||
local function UpdateCapacity(capacity)
|
||
AddItemMaxCountNum = capacity or 0
|
||
end
|
||
|
||
function XTRPGManager.GetItemMaxCount(itemId)
|
||
local maxCount = XTRPGConfigs.GetItemMaxCount(itemId)
|
||
maxCount = maxCount + AddItemMaxCountNum
|
||
return maxCount
|
||
end
|
||
|
||
function XTRPGManager.IsItemMaxCount(itemId)
|
||
local haveCount = XDataCenter.ItemManager.GetCount(itemId)
|
||
local maxCount = XTRPGManager.GetItemMaxCount(itemId)
|
||
return haveCount >= maxCount
|
||
end
|
||
|
||
function XTRPGManager.GetItemListByType(itemType)
|
||
local itemList = XDataCenter.ItemManager.GetItemsByType(XItemConfigs.ItemType.TRPGItem)
|
||
local itemTypeCfg
|
||
local list = {}
|
||
for _, v in ipairs(itemList) do
|
||
if not XTRPGManager.IsBagHideItem(v.Id) then
|
||
itemTypeCfg = XTRPGConfigs.GetItemType(v.Id)
|
||
if itemType == itemTypeCfg then
|
||
table.insert(list, v)
|
||
end
|
||
end
|
||
end
|
||
|
||
tableSort(list, function(itemA, itemB)
|
||
return itemA.Id < itemB.Id
|
||
end)
|
||
|
||
return list
|
||
end
|
||
|
||
function XTRPGManager.IsBagHideItem(id)
|
||
return BagHideItemIdList[id]
|
||
end
|
||
-----------------背包end------------------
|
||
-----------------奖励begin------------------
|
||
function XTRPGManager.IsReceiveReward(id)
|
||
return RewardList[id]
|
||
end
|
||
|
||
function XTRPGManager.CheckRewardCondition(trpgRewardId, secondMainId)
|
||
local conditionList = XTRPGConfigs.GetRewardCondition(trpgRewardId)
|
||
local conditionId = secondMainId and conditionList[2] or conditionList[1] --常规模式领取条件用2,探索模式用1
|
||
if not XTool.IsNumberValid(conditionId) or XConditionManager.CheckCondition(conditionId) then
|
||
return true
|
||
end
|
||
return false
|
||
end
|
||
|
||
function XTRPGManager.GetAreaRewardPercent(areaId)
|
||
local areaState = XTRPGManager.GetAreaState(areaId)
|
||
if areaState == XTRPGConfigs.AreaStateType.NotOpen then
|
||
return 0
|
||
end
|
||
|
||
local areaRewardIdList = XTRPGConfigs.GetAreaRewardIdList(areaId)
|
||
local maxNum = #areaRewardIdList
|
||
local ret
|
||
local num = 0
|
||
for _, trpgRewardId in pairs(areaRewardIdList) do
|
||
ret = XTRPGManager.CheckRewardCondition(trpgRewardId)
|
||
if ret then
|
||
num = num + 1
|
||
end
|
||
end
|
||
return maxNum > 0 and num / maxNum or 0
|
||
end
|
||
|
||
function XTRPGManager.GetSecondMainStagePercent(secondMainId)
|
||
local secondMainStageIdList = XTRPGConfigs.GetSecondMainStageId(secondMainId)
|
||
local secondMainStageFinishNum = 0
|
||
local allSecondMainStageCount = #secondMainStageIdList
|
||
local stageId
|
||
|
||
for _, secondMainStageId in ipairs(secondMainStageIdList) do
|
||
stageId = XTRPGConfigs.GetSecondMainStageStageId(secondMainStageId)
|
||
if XTRPGManager.IsStagePass(stageId) then
|
||
secondMainStageFinishNum = secondMainStageFinishNum + 1
|
||
end
|
||
end
|
||
return allSecondMainStageCount > 0 and secondMainStageFinishNum / allSecondMainStageCount or 0
|
||
end
|
||
|
||
function XTRPGManager.CheckAreaRewardByAreaId(areaId)
|
||
local areaState = XDataCenter.TRPGManager.GetAreaState(areaId)
|
||
if areaState == XTRPGConfigs.AreaStateType.NotOpen then
|
||
return false
|
||
end
|
||
|
||
local areaRewardIdList = XTRPGConfigs.GetAreaRewardIdList(areaId)
|
||
local condition, ret
|
||
local isReceiveReward
|
||
for _, trpgRewardId in pairs(areaRewardIdList) do
|
||
ret = XTRPGManager.CheckRewardCondition(trpgRewardId)
|
||
isReceiveReward = XDataCenter.TRPGManager.IsReceiveReward(trpgRewardId)
|
||
if ret and not isReceiveReward then
|
||
return true
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
function XTRPGManager.CheckAllAreaReward()
|
||
local mainAreaMaxNum = XTRPGConfigs.GetMainAreaMaxNum()
|
||
for areaId = 1, mainAreaMaxNum do
|
||
if XTRPGManager.CheckAreaRewardByAreaId(areaId) then
|
||
return true
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
-----------------奖励end------------------
|
||
-----------------任务目标begin-----------------
|
||
function XTRPGManager.GetCurrTargetLinkId()
|
||
return CurrTargetLinkId
|
||
end
|
||
|
||
function XTRPGManager.GetCurrTargetId()
|
||
return CurrTargetId
|
||
end
|
||
|
||
function XTRPGManager.GetCurrTargetDesc()
|
||
local currTargetId = XTRPGManager.GetCurrTargetId()
|
||
return XTRPGConfigs.GetTargetDesc(currTargetId)
|
||
end
|
||
|
||
function XTRPGManager.IsTargetFinish(target)
|
||
local notPreTargetId = XTRPGConfigs.GetNotPreTargetId()
|
||
if type(target) == "string" then --目标类型string的是前置目标
|
||
local preTargetList = string.Split(target, "|")
|
||
local preTargetId
|
||
local isFinish
|
||
for _, preTargetIdStr in ipairs(preTargetList) do
|
||
isFinish = false
|
||
preTargetId = tonumber(preTargetIdStr)
|
||
if preTargetId == notPreTargetId then
|
||
return true
|
||
end
|
||
if TargetList[preTargetId] then
|
||
isFinish = true
|
||
end
|
||
if not isFinish then
|
||
break
|
||
end
|
||
end
|
||
return isFinish
|
||
else
|
||
if target == notPreTargetId then
|
||
return true
|
||
end
|
||
return TargetList[target]
|
||
end
|
||
end
|
||
|
||
--return 目标链是否完成,未完成的目标id
|
||
function XTRPGManager.GetTargetLinkIsFinish(targetLinkId)
|
||
if not targetLinkId or targetLinkId == 0 then
|
||
return true, 0
|
||
end
|
||
|
||
local targetIsFinish
|
||
local preTargetIsFinish
|
||
local preTarget
|
||
local targetIdList = XTRPGConfigs.GetTargetIdList(targetLinkId)
|
||
|
||
for _, targetId in pairs(targetIdList) do
|
||
targetIsFinish = XTRPGManager.IsTargetFinish(targetId)
|
||
preTarget = XTRPGConfigs.GetPreTargetByTargetId(targetId)
|
||
preTargetIsFinish = XTRPGManager.IsTargetFinish(preTarget)
|
||
if not targetIsFinish and preTargetIsFinish then
|
||
return false, targetId
|
||
end
|
||
end
|
||
return true, 0
|
||
end
|
||
|
||
function XTRPGManager.GetAllCanFindTargetLink()
|
||
local targetLinkTemplate = XTRPGConfigs.GetTargetLinkTemplate()
|
||
local allCanFindTarget = {
|
||
[XTRPGConfigs.MissionType.MainLine] = {},
|
||
}
|
||
local targetMissionType
|
||
local targetIsFinish
|
||
local preTargetIsFinish
|
||
|
||
for _, v in pairs(targetLinkTemplate) do
|
||
local isInsert = false
|
||
for index, targetId in ipairs(v.TargetId) do
|
||
targetIsFinish = XTRPGManager.IsTargetFinish(targetId)
|
||
preTargetIsFinish = XTRPGManager.IsTargetFinish(v.PreTarget[index])
|
||
if v.TargetMissionType == XTRPGConfigs.MissionType.SubLine and index == 1 and preTargetIsFinish then
|
||
isInsert = true
|
||
end
|
||
if not targetIsFinish and preTargetIsFinish then
|
||
local targetTable = { TargetLinkId = v.Id, TargetId = targetId }
|
||
targetMissionType = XTRPGConfigs.GetTargetLinkMissionType(v.Id)
|
||
if not allCanFindTarget[targetMissionType] then
|
||
allCanFindTarget[targetMissionType] = {}
|
||
end
|
||
tableInsert(allCanFindTarget[targetMissionType], targetTable)
|
||
isInsert = false
|
||
break
|
||
end
|
||
end
|
||
|
||
if isInsert then
|
||
if not allCanFindTarget[XTRPGConfigs.MissionType.SubLine] then
|
||
allCanFindTarget[XTRPGConfigs.MissionType.SubLine] = {}
|
||
end
|
||
tableInsert(allCanFindTarget[XTRPGConfigs.MissionType.SubLine], { TargetLinkId = v.Id, TargetId = 0 })
|
||
end
|
||
end
|
||
return allCanFindTarget
|
||
end
|
||
|
||
function XTRPGManager.GetOneCanFindTarget()
|
||
local targetLinkTemplate = XTRPGConfigs.GetTargetLinkTemplate()
|
||
local targetId
|
||
local targetLinkIsFinish
|
||
for _, v in pairs(targetLinkTemplate) do
|
||
targetLinkIsFinish, targetId = XTRPGManager.GetTargetLinkIsFinish(v.Id)
|
||
if not targetLinkIsFinish then
|
||
return v.Id, targetId
|
||
end
|
||
end
|
||
return 0, 0
|
||
end
|
||
|
||
function XTRPGManager.IsTargetAllFinish()
|
||
local targetTotalNum = XTRPGConfigs.GetTargetTotalNum()
|
||
local finishTargetNum = 0
|
||
for _ in pairs(TargetList) do
|
||
finishTargetNum = finishTargetNum + 1
|
||
end
|
||
return targetTotalNum == finishTargetNum
|
||
end
|
||
|
||
function XTRPGManager.GetTargetLinkPercent(targetLinkId)
|
||
local targetIdList = XTRPGConfigs.GetTargetIdList(targetLinkId)
|
||
local finishNum = 0
|
||
local totalNum = #targetIdList
|
||
for _, targetId in pairs(targetIdList) do
|
||
if XTRPGManager.IsTargetFinish(targetId) then
|
||
finishNum = finishNum + 1
|
||
end
|
||
end
|
||
return totalNum == 0 and 0 or finishNum / totalNum
|
||
end
|
||
|
||
function XTRPGManager.GetMainLineTargetLinkPercentByAreaId(areaId)
|
||
local targetLinkIdList = XTRPGConfigs.GetTargetLinkIdList(areaId)
|
||
for _, targetLinkId in pairs(targetLinkIdList) do
|
||
local msiionType = XTRPGConfigs.GetTargetLinkMissionType(targetLinkId)
|
||
if msiionType == XTRPGConfigs.MissionType.MainLine then
|
||
return XTRPGManager.GetTargetLinkPercent(targetLinkId)
|
||
end
|
||
end
|
||
return 0
|
||
end
|
||
|
||
function XTRPGManager.IsMovieTargetFinish(movieId)
|
||
local targetId = XTRPGConfigs.GetMovieTargetId(movieId)
|
||
if not targetId or targetId == 0 then
|
||
return false
|
||
end
|
||
|
||
return XTRPGManager.IsTargetFinish(targetId)
|
||
end
|
||
|
||
function XTRPGManager.CheckRequestTargetLink(currTargetLinkId)
|
||
local notTargetLinkDefaultId = XTRPGConfigs.NotTargetLinkDefaultId
|
||
if notTargetLinkDefaultId == currTargetLinkId and notTargetLinkDefaultId ~= CurrTargetLinkId then
|
||
XDataCenter.TRPGManager.RequestSelectTargetLinkSend(CurrTargetLinkId, true)
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.CheckOpenNewMazeTips()
|
||
if not IsCanCheckOpenNewMaze then return end
|
||
|
||
SetIsCanCheckOpenNewMaze(false)
|
||
local secondAreaIdToMazeIdDic = XTRPGConfigs.GetSecondAreaIdToMazeIdDic()
|
||
local condition, ret
|
||
local name
|
||
local msg
|
||
for secondAreaId, mazeId in pairs(secondAreaIdToMazeIdDic) do
|
||
if not IsOpenMaze(mazeId) then
|
||
condition = XTRPGConfigs.GetSecondAreaCondition(secondAreaId)
|
||
ret = XConditionManager.CheckCondition(condition)
|
||
if ret then
|
||
UpdateAlreadyOpenMaze(mazeId)
|
||
name = XTRPGConfigs.GetSecondAreaName(secondAreaId)
|
||
msg = CSXTextManagerGetText("TRPGAreaAleardyOpen", name)
|
||
XUiManager.TipMsgEnqueue(msg)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.GetTaskPanelNewShowTime()
|
||
local oldCurrTargetId = GetOldCurrTargetId()
|
||
local currTargetId = XTRPGManager.GetCurrTargetId()
|
||
if oldCurrTargetId ~= currTargetId then
|
||
UpdateOldCurrTargetId()
|
||
local serverTimestamp = XTime.GetServerNowTimestamp()
|
||
local taskPanelNewShowTimeCfg = XTRPGConfigs.GetTaskPanelNewShowTime()
|
||
return serverTimestamp + taskPanelNewShowTimeCfg
|
||
end
|
||
return 0
|
||
end
|
||
|
||
function XTRPGManager.SetNewTargetTime(newTargetTime)
|
||
NewTargetTime = newTargetTime
|
||
end
|
||
|
||
function XTRPGManager.GetNewTargetTime()
|
||
return NewTargetTime
|
||
end
|
||
|
||
function XTRPGManager.ClearNewTargetTime()
|
||
NewTargetTime = 0
|
||
end
|
||
-----------------任务目标end------------------
|
||
-----------------求真之路begin------------------
|
||
function XTRPGManager.GetTruthRoadPercent(truthRoadGroupId)
|
||
local truthRoadIdList = XTRPGConfigs.GetTruthRoadIdList(truthRoadGroupId)
|
||
local truthRoadFinishNum = 0
|
||
for _, truthRoadId in pairs(truthRoadIdList) do
|
||
local condition = XTRPGConfigs.GetTruthRoadCondition(truthRoadId)
|
||
local ret = XConditionManager.CheckCondition(condition)
|
||
if ret then
|
||
truthRoadFinishNum = truthRoadFinishNum + 1
|
||
end
|
||
end
|
||
return #truthRoadIdList > 0 and truthRoadFinishNum / #truthRoadIdList or 0
|
||
end
|
||
|
||
function XTRPGManager.IsTruthRoadOpenArea(areaId)
|
||
local truthRoadGroupIdList = XTRPGConfigs.GetTruthRoadGroupIdList(areaId)
|
||
local condition
|
||
local ret
|
||
for i, truthRoadGroupId in ipairs(truthRoadGroupIdList) do
|
||
condition = XTRPGConfigs.GetTruthRoadGroupCondition(truthRoadGroupId)
|
||
ret = XConditionManager.CheckCondition(condition)
|
||
if ret then
|
||
return true, i
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
function XTRPGManager.IsTruthRoadGroupConditionFinish(areaId, index)
|
||
local truthRoadGroupId = XTRPGConfigs.GetTruthRoadGroupId(areaId, index)
|
||
local condition = XTRPGConfigs.GetTruthRoadGroupCondition(truthRoadGroupId)
|
||
local ret, desc = XConditionManager.CheckCondition(condition)
|
||
return ret, desc
|
||
end
|
||
|
||
function XTRPGManager.CheckTruthRoadReward(truthRoadGroupId)
|
||
local rewardIdList = XTRPGConfigs.GetTruthRoadRewardIdList(truthRoadGroupId)
|
||
local conditionId, ret
|
||
local isReceiveReward
|
||
for _, trpgRewardId in ipairs(rewardIdList) do
|
||
ret = XTRPGManager.CheckRewardCondition(trpgRewardId)
|
||
isReceiveReward = XTRPGManager.IsReceiveReward(trpgRewardId)
|
||
if ret and not isReceiveReward then
|
||
return true
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
function XTRPGManager.CheckTruthRoadAreaReward(areaId)
|
||
local truthRoadGroupIdList = XTRPGConfigs.GetTruthRoadGroupIdList(areaId)
|
||
for _, truthRoadGroupId in ipairs(truthRoadGroupIdList) do
|
||
if XTRPGManager.CheckTruthRoadReward(truthRoadGroupId) then
|
||
return true
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
function XTRPGManager.CheckTruthRoadAllReward()
|
||
local mainAreaMaxNum = XTRPGConfigs.GetMainAreaMaxNum()
|
||
for i = 1, mainAreaMaxNum do
|
||
if XTRPGManager.CheckTruthRoadAreaReward(i) then
|
||
return true
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
function XTRPGManager.SaveIsAlreadyOpenTruthRoad()
|
||
if not XSaveTool.GetData(stringFormat("%d%s", XPlayer.Id, "IsAlreadyOpenTruthRoad")) then
|
||
XSaveTool.SaveData(stringFormat("%d%s", XPlayer.Id, "IsAlreadyOpenTruthRoad"), true)
|
||
XEventManager.DispatchEvent("EVENT_TRPG_FIRST_OPEN_TRUTH_ROAD")
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.CheckIsAlreadyOpenTruthRoad()
|
||
return XSaveTool.GetData(stringFormat("%d%s", XPlayer.Id, "IsAlreadyOpenTruthRoad")) or false
|
||
end
|
||
-----------------求真之路end--------------------
|
||
---------------------珍藏-回忆begin-------------------------
|
||
function XTRPGManager.IsPlayedMemoir(id)
|
||
return MemoirList[id]
|
||
end
|
||
|
||
function XTRPGManager.IsCanPlayMemoir(id)
|
||
local itemId = XTRPGConfigs.GetMemoireStoryUnlockItemId(id)
|
||
local ownCount = XDataCenter.ItemManager.GetCount(itemId)
|
||
local maxCount = XTRPGConfigs.GetMemoireStoryUnlockItemCount(id)
|
||
return ownCount >= maxCount
|
||
end
|
||
|
||
function XTRPGManager.CheckFirstPlayMemoirStoryById(id)
|
||
local isCanPlay = XTRPGManager.IsCanPlayMemoir(id)
|
||
local isPlayed = XTRPGManager.IsPlayedMemoir(id)
|
||
return isCanPlay and not isPlayed
|
||
end
|
||
|
||
function XTRPGManager.CheckFirstPlayMemoirStory()
|
||
local maxNum = XTRPGConfigs.GetMemoirStoryMaxNum()
|
||
for i = 1, maxNum do
|
||
if XTRPGManager.CheckFirstPlayMemoirStoryById(i) then
|
||
return true
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
function XTRPGManager.SaveIsAlreadyOpenCollection()
|
||
if not XSaveTool.GetData(string.format("%d%s", XPlayer.Id, "IsAlreadyOpenCollection")) then
|
||
XSaveTool.SaveData(string.format("%d%s", XPlayer.Id, "IsAlreadyOpenCollection"), true)
|
||
XEventManager.DispatchEvent("EVENT_TRPG_FIRST_OPEN_COLLECTION")
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.CheckIsAlreadyOpenCollection()
|
||
return XSaveTool.GetData(stringFormat("%d%s", XPlayer.Id, "IsAlreadyOpenCollection")) or false
|
||
end
|
||
---------------------珍藏-回忆end---------------------------
|
||
---------------------第三区域 begin-------------------------
|
||
local function SetThirdAreaFunctionFinish(thirdAreaId, functionId)
|
||
thirdAreaId = DEFUALT_thirdAreaId_FOR_STUPID_DESIGN or thirdAreaId
|
||
|
||
if not ThirdAreaInfos[thirdAreaId] then
|
||
ThirdAreaInfos[thirdAreaId] = XTRPGThirdAreaInfo.New()
|
||
end
|
||
ThirdAreaInfos[thirdAreaId]:SetFunctionFinished(functionId)
|
||
end
|
||
|
||
local function UpdateThirdAreaInfos(thirdAreaInfos)
|
||
if not thirdAreaInfos then return end
|
||
|
||
if DEFUALT_thirdAreaId_FOR_STUPID_DESIGN then
|
||
local thirdAreaId = DEFUALT_thirdAreaId_FOR_STUPID_DESIGN
|
||
for _, functionId in pairs(thirdAreaInfos) do
|
||
SetThirdAreaFunctionFinish(thirdAreaId, functionId)
|
||
end
|
||
|
||
return
|
||
end
|
||
|
||
for thirdAreaId, functionIds in pairs(thirdAreaInfos) do
|
||
for _, functionId in pairs(functionIds) do
|
||
SetThirdAreaFunctionFinish(thirdAreaId, functionId)
|
||
end
|
||
end
|
||
end
|
||
|
||
local function GetThirdAreaInfo(thirdAreaId)
|
||
thirdAreaId = DEFUALT_thirdAreaId_FOR_STUPID_DESIGN or thirdAreaId
|
||
return ThirdAreaInfos[thirdAreaId]
|
||
end
|
||
|
||
function XTRPGManager.IsFunctionGroupConditionFinish(functionGroupId)
|
||
local condition = XTRPGConfigs.GetFunctionGroupConditionId(functionGroupId)
|
||
local ret, desc = XConditionManager.CheckCondition(condition)
|
||
return ret, desc
|
||
end
|
||
|
||
function XTRPGManager.IsThirdAreaFunctionFinish(thirdAreaId, functionId)
|
||
local areaInfo = GetThirdAreaInfo(thirdAreaId)
|
||
return areaInfo and areaInfo:IsFunctionFinished(functionId)
|
||
end
|
||
|
||
function XTRPGManager.IsThirdAreaFunctionAllFinish(thirdAreaId)
|
||
return #XTRPGManager.GetUnFinishedFunctionIdList(thirdAreaId) == 0
|
||
end
|
||
|
||
function XTRPGManager.GetUnFinishedFunctionIdList(thirdAreaId)
|
||
local functionIdList = {}
|
||
|
||
local functionGroupIds = XTRPGConfigs.GetThirdAreaFunctionGroupIds(thirdAreaId)
|
||
for _, functionGroupId in ipairs(functionGroupIds) do
|
||
if XTRPGManager.IsFunctionGroupConditionFinish(functionGroupId) then
|
||
|
||
local functionIds = XTRPGConfigs.GetFunctionGroupFunctionIds(functionGroupId)
|
||
for _, functionId in ipairs(functionIds) do
|
||
if not XTRPGManager.IsThirdAreaFunctionFinish(thirdAreaId, functionId) then
|
||
tableInsert(functionIdList, functionId)
|
||
break
|
||
end
|
||
end
|
||
|
||
end
|
||
end
|
||
|
||
return functionIdList
|
||
end
|
||
|
||
local __ToFinishFightFunctionId = 0 --战斗胜利后请求完成的FunctionId
|
||
function XTRPGManager.EnterFunctionFight(functionId)
|
||
if not XTRPGConfigs.CheckFunctionType(functionId, XTRPGConfigs.TRPGFunctionType.FinishStage) then
|
||
return
|
||
end
|
||
|
||
__ToFinishFightFunctionId = functionId
|
||
|
||
local params = XTRPGConfigs.GetFunctionParams(functionId)
|
||
local stageId = tonumber(params[1])
|
||
XLuaUiManager.Open("UiNewRoomSingle", stageId)
|
||
end
|
||
|
||
function XTRPGManager.ReqFinishFunctionAfterFight(thirdAreaId)
|
||
local functionId = __ToFinishFightFunctionId
|
||
if not functionId or functionId == 0 then return end
|
||
|
||
XDataCenter.TRPGManager.RequestFunctionFinishSend(thirdAreaId, functionId)
|
||
end
|
||
|
||
--请求完成功能id
|
||
function XTRPGManager.RequestFunctionFinishSend(thirdAreaId, functionId)
|
||
if not XTRPGConfigs.CheckFunctionNeedSave(functionId) then return end
|
||
|
||
local req = { FunctionId = functionId }
|
||
XNetwork.Call("TRPGFunctionFinishRequest", req, function(res)
|
||
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
if XTRPGConfigs.CheckFunctionType(functionId, XTRPGConfigs.TRPGFunctionType.CommitItem) then
|
||
local params = XTRPGConfigs.GetFunctionParams(functionId)
|
||
local itemId = tonumber(params[1])
|
||
XLuaUiManager.Open("UiTRPGCommitItem", itemId)
|
||
end
|
||
|
||
XTRPGManager.OnGetReward(res.RewardList)
|
||
|
||
SetThirdAreaFunctionFinish(thirdAreaId, functionId)
|
||
|
||
XEventManager.DispatchEvent(XEventId.EVENT_TRPG_FUNCTION_FINISH_SYN)
|
||
end)
|
||
end
|
||
|
||
function XTRPGManager.OnGetReward(rewardList, closeCb)
|
||
if XTool.IsTableEmpty(rewardList) then return end
|
||
|
||
local reward = rewardList[1]
|
||
local itemId = reward.TemplateId
|
||
local itemCount = reward.Count
|
||
XLuaUiManager.Open("UiTRPGObtain", itemId, itemCount, closeCb)
|
||
end
|
||
---------------------第三区域 end---------------------------
|
||
---------------------世界BOSS begin--------------------
|
||
function XTRPGManager.GetWorldBossLoseHp()
|
||
return BossInfo:GetLoseHp()
|
||
end
|
||
|
||
function XTRPGManager.GetWorldBossTotalHp()
|
||
return BossInfo:GetTotalHp()
|
||
end
|
||
|
||
function XTRPGManager.GetWorldBossCurHpPercer()
|
||
local loseHp = XDataCenter.TRPGManager.GetWorldBossLoseHp()
|
||
local totalHp = XDataCenter.TRPGManager.GetWorldBossTotalHp()
|
||
return totalHp > 0 and (totalHp - loseHp) / totalHp or 0
|
||
end
|
||
|
||
function XTRPGManager.IsWorldBossAleardyReceiveReward(id)
|
||
return BossInfo:IsReceiveReward(id)
|
||
end
|
||
|
||
function XTRPGManager.IsWorldBossCanReceiveReward(id)
|
||
local curPercent = XTRPGManager.GetWorldBossCurHpPercer()
|
||
local percentCfg = XTRPGConfigs.GetBossPhasesRewardPercent(id)
|
||
percentCfg = percentCfg * 0.01
|
||
return curPercent <= percentCfg
|
||
end
|
||
|
||
function XTRPGManager.GetWorldBossChallengeCount()
|
||
return BossInfo:GetChallengeCount()
|
||
end
|
||
|
||
function XTRPGManager.GetWorldBossOpenState()
|
||
local nowTime = XTime.GetServerNowTimestamp()
|
||
local timeId = XTRPGConfigs.GetBossTimeId()
|
||
local startTime, endTime = XFunctionManager.GetTimeByTimeId(timeId)
|
||
if nowTime < startTime then
|
||
return XTRPGConfigs.AreaStateType.NotOpen, startTime - nowTime
|
||
elseif nowTime >= startTime and nowTime < endTime then
|
||
return XTRPGConfigs.AreaStateType.Open, endTime - nowTime
|
||
else
|
||
return XTRPGConfigs.AreaStateType.Over, 0
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.CheckWorldBossReward()
|
||
local openState = XTRPGManager.GetWorldBossOpenState()
|
||
if openState ~= XTRPGConfigs.AreaStateType.Open then
|
||
return false
|
||
end
|
||
|
||
local isAleardyReceive
|
||
local isCanReceive
|
||
local bossPhasesRewardTemplate = XTRPGConfigs.GetBossPhasesRewardTemplate()
|
||
for _, v in pairs(bossPhasesRewardTemplate) do
|
||
isCanReceive = XDataCenter.TRPGManager.IsWorldBossCanReceiveReward(v.Id)
|
||
isAleardyReceive = XDataCenter.TRPGManager.IsWorldBossAleardyReceiveReward(v.Id)
|
||
if isCanReceive and not isAleardyReceive then
|
||
return true
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
---------------------世界BOSS end---------------------
|
||
---------------------检定相关 begin---------------------------
|
||
function XTRPGManager.GetExamineActionDifficult(actionId)
|
||
--道具检定无难度
|
||
if XTRPGConfigs.CheckExamineActionType(actionId, XTRPGConfigs.TRPGExamineActionType.ConsumeItem) then
|
||
return XTRPGConfigs.TRPGExamineActionDifficult.Default
|
||
end
|
||
|
||
local needValue = XTRPGConfigs.GetExamineActionNeedValue(actionId)
|
||
local _, totalMaxValue = XTRPGManager.GetExamineActionTotalCallRollValue(actionId)
|
||
local delta = totalMaxValue - needValue
|
||
return XTRPGConfigs.GetExamineActionDifficultByDelta(delta)
|
||
end
|
||
|
||
--return 所有角色单属性所有轮次可摇点最小值,最大值
|
||
function XTRPGManager.GetExamineActionTotalCallRollValue(actionId)
|
||
local attributeType = XTRPGConfigs.GetExamineActionNeedAttrType(actionId)
|
||
local totalMinValue, totalMaxValue = XTRPGManager.GetRolesTotalCanRollValue(attributeType)
|
||
local round = XTRPGConfigs.GetExamineActionRound(actionId)
|
||
return round * totalMinValue, round * totalMaxValue
|
||
end
|
||
|
||
function XTRPGManager.CheckExamineCostEnduranceEnough(examineId)
|
||
local costEndurance = XTRPGConfigs.GetExamineCostEndurance(examineId)
|
||
local curEndurance = XTRPGManager.GetExploreCurEndurance()
|
||
return curEndurance >= costEndurance
|
||
end
|
||
|
||
function XTRPGManager.EnterExamine(examineId)
|
||
local enterFunc = function()
|
||
XLuaUiManager.Open("UiTRPGTestDetailsTips", examineId)
|
||
end
|
||
local endCallBack = function()
|
||
XDataCenter.TRPGManager.CheckOpenNewMazeTips()
|
||
end
|
||
|
||
local movieId = XTRPGConfigs.GetExamineStartMovieId(examineId)
|
||
if not string.IsNilOrEmpty(movieId) then
|
||
local yieldCb = enterFunc
|
||
local hideSkipBtn = true
|
||
XDataCenter.MovieManager.PlayMovie(movieId, endCallBack, yieldCb, hideSkipBtn)
|
||
else
|
||
XLuaUiManager.Open("UiTRPGTestDetailsTips", examineId)
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.StartExamine(examineId, actionId)
|
||
CurExmaine:Start(examineId, actionId)
|
||
XLuaUiManager.Open("UiTRPGTest")
|
||
end
|
||
|
||
function XTRPGManager.FinishExamine()
|
||
CurExmaine:Clear()
|
||
end
|
||
|
||
function XTRPGManager.EnterExaminePunish()
|
||
CurExmaine:EnterPunish()
|
||
end
|
||
|
||
function XTRPGManager.GetCurExamineId()
|
||
return CurExmaine:GetId()
|
||
end
|
||
|
||
function XTRPGManager.GetCurExamineActionId()
|
||
return CurExmaine:GetActionId()
|
||
end
|
||
|
||
function XTRPGManager.GetCurExamineCurAndReqScore()
|
||
return CurExmaine:GetScores()
|
||
end
|
||
|
||
function XTRPGManager.GetCurExamineCurRound()
|
||
return CurExmaine:GetCurRound()
|
||
end
|
||
|
||
function XTRPGManager.GetCurExamineRoleScore(roleId)
|
||
return CurExmaine:GetRoleScore(roleId)
|
||
end
|
||
|
||
function XTRPGManager.CheckExamineStatus(examineStatus)
|
||
return CurExmaine:CheckStatus(examineStatus)
|
||
end
|
||
|
||
function XTRPGManager.IsExaminePassed()
|
||
return CurExmaine:IsPassed()
|
||
end
|
||
|
||
function XTRPGManager.IsExamineCanEnterNextRound()
|
||
return CurExmaine:IsCanEnternNextRound()
|
||
end
|
||
|
||
function XTRPGManager.IsExamineRoleAlreadyRolled(roleId)
|
||
return CurExmaine:IsRoleAlreadyRolled(roleId)
|
||
end
|
||
|
||
function XTRPGManager.IsExamineLastRound()
|
||
return CurExmaine:IsLastRound()
|
||
end
|
||
|
||
function XTRPGManager.GetCurExaminePunishId()
|
||
return CurExmaine:GetPunishId()
|
||
end
|
||
|
||
local function UpdateCurExmaineResult(data)
|
||
if XTool.IsTableEmpty(data) then return end
|
||
CurExmaine:UpdateResult(data)
|
||
CsXGameEventManager.Instance:Notify(XEventId.EVENT_TRPG_EXAMINE_RESULT_SYN)
|
||
end
|
||
|
||
local function UpdateCurExmaineScore(data)
|
||
if XTool.IsTableEmpty(data) then return end
|
||
CurExmaine:UpdateScore(data)
|
||
CsXGameEventManager.Instance:Notify(XEventId.EVENT_TRPG_EXAMINE_DATA_CHANGE)
|
||
end
|
||
|
||
--请求检定
|
||
local ExamineAsynLock
|
||
function XTRPGManager.RequestExamineSend(examineId, actionId, cb)
|
||
if ExamineAsynLock then return end
|
||
ExamineAsynLock = true
|
||
|
||
local req = { Id = examineId, ActionId = actionId }
|
||
XNetwork.Call("TRPGExamineRequest", req, function(res)
|
||
ExamineAsynLock = nil
|
||
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
if cb then cb() end
|
||
|
||
XTRPGManager.StartExamine(examineId, actionId)
|
||
end)
|
||
end
|
||
|
||
--请求检定单个角色
|
||
function XTRPGManager.RequestExamineCharacterSend(examineId, actionId, roleId, useItemId)
|
||
local curRound = XTRPGManager.GetCurExamineCurRound()
|
||
if XTRPGConfigs.CheckDefaultEffectItemId(useItemId) then
|
||
useItemId = nil
|
||
end
|
||
|
||
local req = { Id = examineId, ActionId = actionId, Round = curRound, CharacterId = roleId, UseItemId = useItemId }
|
||
XNetwork.Call("TRPGExamineCharacterRequest", req, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
local data = {
|
||
RoleId = roleId,
|
||
Score = res.Score,
|
||
}
|
||
UpdateCurExmaineScore(data)
|
||
end)
|
||
end
|
||
|
||
--确定检定结果
|
||
function XTRPGManager.RequestExamineResult(examineId)
|
||
local req = { Id = examineId }
|
||
XNetwork.Call("TRPGExamineResultRequest", req, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
UpdateCurExmaineResult(res)
|
||
end)
|
||
end
|
||
|
||
--重置检定
|
||
function XTRPGManager.TRPGExamineCharacterResetRequest(roleId)
|
||
local req = { CharacterId = roleId }
|
||
XNetwork.Call("TRPGExamineCharacterResetRequest", req, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
local data = {
|
||
RoleId = roleId,
|
||
Score = 0,
|
||
}
|
||
UpdateCurExmaineScore(data)
|
||
end)
|
||
end
|
||
|
||
--进入下一轮检定
|
||
function XTRPGManager.TRPGExamineChangeRoundRequest()
|
||
XNetwork.Call("TRPGExamineChangeRoundRequest", nil, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
CurExmaine:EnterNextRound()
|
||
CsXGameEventManager.Instance:Notify(XEventId.EVENT_TRPG_EXAMINE_ROUND_CHANGE)
|
||
end)
|
||
end
|
||
---------------------检定相关 end---------------------------
|
||
---------------------protocol begin------------------
|
||
--商店购买
|
||
function XTRPGManager.RequestShopBuyItemSend(shopId, itemId, itemCount, cb)
|
||
local req = { ShopId = shopId, ItemId = itemId, ItemCount = itemCount }
|
||
XNetwork.Call("TRPGShopBuyItemRequest", req, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
AddBuyTimes(shopId, itemId, itemCount)
|
||
XUiManager.OpenUiObtain(res.RewardList)
|
||
if cb then
|
||
cb()
|
||
end
|
||
end)
|
||
end
|
||
|
||
--更新探索员信息
|
||
function XTRPGManager.NotifyTRPGCharacterData(data)
|
||
local checkNew = true
|
||
UpdateRoles(data.Characters, checkNew)
|
||
end
|
||
|
||
--更新已完成目标(增量更新)
|
||
function XTRPGManager.NotifyTRPGTargetFinish(data)
|
||
local tempCurrTargetLinkId = CurrTargetLinkId
|
||
UpdateTargetList(data.TargetList)
|
||
UpdateCurrTargetLinkId(CurrTargetLinkId)
|
||
|
||
SetIsCanCheckOpenNewMaze(true)
|
||
|
||
if tempCurrTargetLinkId ~= CurrTargetLinkId then
|
||
XTRPGManager.CheckRequestTargetLink(XTRPGConfigs.NotTargetLinkDefaultId)
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.NotifyTRPGFunctionFinish(data)
|
||
end
|
||
|
||
--更新商店打折和购买上限
|
||
function XTRPGManager.NotifyTRPGShopExtraData(data)
|
||
UpdateShopExtraData(data.ExtraDatas)
|
||
end
|
||
|
||
--更新商店信息
|
||
function XTRPGManager.NotifyTRPGClientShopInfo(data)
|
||
UpdateShopInfos(data.ShopInfos)
|
||
end
|
||
|
||
--重置数据
|
||
function XTRPGManager.NotifyTRPGDailyResetData(data)
|
||
BaseInfo:UpdateEndurance(data.Endurance)
|
||
UpdateCapacity(data.ItemCapacityAdd)
|
||
UpdateRoles(data.Characters)
|
||
UpdateWorldBossChallengeCount(data.BossChallengeCount)
|
||
UpdateShopInfos(data.ShopInfos)
|
||
end
|
||
|
||
function XTRPGManager.RequestSelectTargetLinkSend(targetLinkid, isHideTip, isNotPlayNewAnima)
|
||
local req = { Id = targetLinkid }
|
||
XNetwork.Call("TRPGSelectTargetLinkRequest", req, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
UpdateCurrTargetLinkId(targetLinkid, isNotPlayNewAnima)
|
||
if not isHideTip then
|
||
XUiManager.TipText("TRPGSwitchTargetComplete")
|
||
end
|
||
end)
|
||
end
|
||
|
||
function XTRPGManager.NotifyTRPGItemCapacityChange(data)
|
||
UpdateCapacity(data.ItemCapacityAdd)
|
||
end
|
||
|
||
function XTRPGManager.NotifyTRPGBaseInfo(data)
|
||
BaseInfo:UpdateData(data.BaseInfo)
|
||
end
|
||
|
||
function XTRPGManager.NotifyTRPGData(data)
|
||
UpdateBossInfo(data.BossInfo)
|
||
UpdateTargetList(data.TargetList)
|
||
UpdateCurrTargetLinkId(data.CurTargetLink)
|
||
UpdateRewardList(data.RewardList)
|
||
UpdateRoles(data.Characters)
|
||
UpdateShopInfos(data.ShopInfos)
|
||
UpdateMazeInfos(data.MazeInfos)
|
||
UpdateMemoirInfos(data.MemoirList)
|
||
UpdateCapacity(data.ItemCapacityAdd)
|
||
BaseInfo:UpdateData(data.BaseInfo)
|
||
-- UpdateThirdAreaInfos(data.ThirdAreaInfos)--数据预期不一致兼容
|
||
UpdateThirdAreaInfos(data.FuncList)
|
||
SetIsNormalPage(data.IsNormalPage)
|
||
UpdateStagePassDic(data.StageList)
|
||
|
||
InitAleardyOpenMazeList()
|
||
UpdateOldCurrTargetId()
|
||
XTRPGManager.CheckRequestTargetLink(data.CurTargetLink)
|
||
XTRPGManager.RequestTRPGBossDetailSend()
|
||
end
|
||
|
||
--使用道具
|
||
function XTRPGManager.RequestUseItemRequestSend(itemId, itemCount, characterId, cb)
|
||
local req = { ItemId = itemId, ItemCount = itemCount, CharacterId = characterId }
|
||
XNetwork.Call("TRPGUseItemRequest", req, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
XUiManager.TipText("TRPGUseItemComplete")
|
||
if cb then
|
||
cb()
|
||
end
|
||
end)
|
||
end
|
||
|
||
--请求领取奖励
|
||
function XTRPGManager.RequestRewardSend(id, cb)
|
||
local req = { Id = id }
|
||
XNetwork.Call("TRPGRewardRequest", req, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
UpdateRewardList({ id })
|
||
XUiManager.OpenUiObtain(res.RewardList)
|
||
if cb then
|
||
cb()
|
||
end
|
||
XEventManager.DispatchEvent("EVENT_TRPG_GET_REWARD")
|
||
end)
|
||
end
|
||
|
||
--请求播放记忆剧情
|
||
function XTRPGManager.RequestTRPGOpenMemoirSend(id, cb)
|
||
local req = { Id = id }
|
||
XNetwork.Call("TRPGOpenMemoirRequest", req, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
UpdateMemoirInfos({ req.Id })
|
||
if cb then
|
||
cb()
|
||
end
|
||
XEventManager.DispatchEvent("EVENT_TRPG_GET_MEMOIR_REWARD")
|
||
end)
|
||
end
|
||
|
||
--请求boss血量
|
||
function XTRPGManager.RequestTRPGBossDetailSend(cb)
|
||
local openState = XTRPGManager.GetWorldBossOpenState()
|
||
if openState ~= XTRPGConfigs.AreaStateType.Open then
|
||
return
|
||
end
|
||
|
||
XNetwork.Call("TRPGBossDetailRequest", nil, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
UpdateBossHpInfo(res)
|
||
if cb then
|
||
cb()
|
||
end
|
||
end)
|
||
end
|
||
|
||
--请求boss阶段奖励
|
||
function XTRPGManager.RequestTRPGBossPhasesRewardSend(id, cb)
|
||
local req = { Id = id }
|
||
XNetwork.Call("TRPGBossPhasesRewardRequest", req, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
UpdateBossPhasesRewardListInfo({ req.Id })
|
||
XUiManager.OpenUiObtain(res.RewardList)
|
||
if cb then
|
||
cb()
|
||
end
|
||
end)
|
||
end
|
||
|
||
--世界BOSS信息发生改变
|
||
function XTRPGManager.NotifyTRPGClientBossData(data)
|
||
UpdateBossInfo(data.BaseInfo)
|
||
end
|
||
|
||
--请求改变模式
|
||
function XTRPGManager.RequestTRPGChangePageStatus(status)
|
||
local req = {Status = status}
|
||
XNetwork.Call("TRPGChangePageStatusRequest", req, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
SetIsNormalPage(status)
|
||
end)
|
||
end
|
||
---------------------protocol end------------------
|
||
---------------------FubenManager begin------------------
|
||
local function InitStageType(stageId)
|
||
stageId = tonumber(stageId)
|
||
local stageInfo = XDataCenter.FubenManager.GetStageInfo(stageId)
|
||
if stageInfo then
|
||
stageInfo.Type = XDataCenter.FubenManager.StageType.TRPG
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.InitStageInfo()
|
||
local stageId = XTRPGConfigs.GetBossStageId()
|
||
InitStageType(stageId)
|
||
|
||
local stageIds = XTRPGConfigs.GetFunctionStageIds()
|
||
for _, stageId in pairs(stageIds) do
|
||
InitStageType(stageId)
|
||
end
|
||
|
||
local secondMainIdList = XTRPGConfigs.GetSecondMainIdList()
|
||
for _, secondMainId in ipairs(secondMainIdList) do
|
||
local secondMainStageIdList = XTRPGConfigs.GetSecondMainStageId(secondMainId)
|
||
for _, secondMainStageId in ipairs(secondMainStageIdList) do
|
||
local stageId = XTRPGConfigs.GetSecondMainStageStageId(secondMainStageId)
|
||
InitStageType(stageId)
|
||
end
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.ShowReward(winData)
|
||
if XTRPGConfigs.IsBossStage(winData.StageId) then
|
||
XLuaUiManager.Open("UiTRPGWinWorldBoss", winData)
|
||
else
|
||
XTRPGManager.ReqFinishFunctionAfterFight()
|
||
XDataCenter.FubenManager.ShowReward(winData)
|
||
end
|
||
XTRPGManager.SetStagePass(winData.StageId)
|
||
end
|
||
---------------------FubenManager end------------------
|
||
function XTRPGManager.Init()
|
||
InitMazes()
|
||
XEventManager.AddEventListener(XEventId.EVENT_LOGIN_DATA_LOAD_COMPLETE, function()
|
||
XDataCenter.TRPGManager.InitCurrAreaOpenNum()
|
||
end)
|
||
end
|
||
|
||
--------------------首次播放剧情 begin------------------------
|
||
function XTRPGManager.MarkStoryID(Id, key)
|
||
if not XSaveTool.GetData(string.format("%d%s%s", XPlayer.Id, key, Id)) then
|
||
XSaveTool.SaveData(string.format("%d%s%s", XPlayer.Id, key, Id), Id)
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.CheckIsNewStoryID(Id, key)
|
||
if XSaveTool.GetData(string.format("%d%s%s", XPlayer.Id, key, Id)) then
|
||
return false
|
||
end
|
||
return true
|
||
end
|
||
--------------------首次播放剧情 end--------------------------
|
||
--------------------跳转 start--------------------------
|
||
function XTRPGManager.SkipTRPGMain()
|
||
local uiName = XTRPGManager.GetMainName()
|
||
|
||
if XDataCenter.FubenMainLineManager.IsMainLineActivityOpen() then
|
||
local chapterId = XDataCenter.FubenMainLineManager.TRPGChapterId
|
||
local ret, desc = XDataCenter.FubenMainLineManager.CheckActivityCondition(chapterId)
|
||
if ret then
|
||
XLuaUiManager.OpenWithCallback(uiName, XTRPGManager.UpdateCurrAreaOpenNum)
|
||
else
|
||
XUiManager.TipError(desc)
|
||
end
|
||
elseif XFunctionManager.DetectionFunction(XFunctionManager.FunctionName.MainLineTRPG) then
|
||
XLuaUiManager.OpenWithCallback(uiName, XTRPGManager.UpdateCurrAreaOpenNum)
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.GetMainName()
|
||
local isNormalPage = XTRPGManager.IsNormalPage()
|
||
return isNormalPage and "UiTRPGSecondMain" or "UiTRPGMain"
|
||
end
|
||
--------------------跳转 end--------------------------
|
||
--------------------抢先体验 begin---------------------
|
||
function XTRPGManager.CheckActivityEnd()
|
||
if not XDataCenter.FubenMainLineManager.IsMainLineActivityOpen() and not XFunctionManager.JudgeCanOpen(XFunctionManager.FunctionName.MainLineTRPG) then
|
||
XTRPGManager.OnActivityEnd()
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.OnActivityMainLineStateChange(chapterIds)
|
||
if not chapterIds then
|
||
return
|
||
end
|
||
for _, chapterId in pairs(chapterIds) do
|
||
if chapterId == XDataCenter.FubenMainLineManager.TRPGChapterId then
|
||
XTRPGManager.OnActivityEnd()
|
||
return
|
||
end
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.OnActivityEnd()
|
||
if CS.XFight.IsRunning or XLuaUiManager.IsUiLoad("UiLoading") then
|
||
return
|
||
end
|
||
XUiManager.TipText("ActivityMainLineEnd")
|
||
XLuaUiManager.RunMain()
|
||
end
|
||
--------------------抢先体验 end---------------------
|
||
--------------------区域(城市和迷宫)地图 start---------------------
|
||
function XTRPGManager.SaveIsAlreadyOpenExploreChapter(secondAreaId, mainAreaId)
|
||
if not XSaveTool.GetData(stringFormat("%d%s%s%s", XPlayer.Id, "IsAlreadyOpenExploreChapter", secondAreaId, mainAreaId)) then
|
||
XSaveTool.SaveData(stringFormat("%d%s%s%s", XPlayer.Id, "IsAlreadyOpenExploreChapter", secondAreaId, mainAreaId), true)
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.CheckIsAlreadyOpenExploreChapter(secondAreaId, mainAreaId)
|
||
return XSaveTool.GetData(stringFormat("%d%s%s%s", XPlayer.Id, "IsAlreadyOpenExploreChapter", secondAreaId, mainAreaId)) or false
|
||
end
|
||
|
||
function XTRPGManager.SaveIsAlreadyEnterMaze(mazeId)
|
||
if not XSaveTool.GetData(stringFormat("%d%s%s", XPlayer.Id, "IsAlreadyEnterMaze", mazeId)) then
|
||
XSaveTool.SaveData(stringFormat("%d%s%s", XPlayer.Id, "IsAlreadyEnterMaze", mazeId), true)
|
||
end
|
||
end
|
||
|
||
function XTRPGManager.CheckIsAlreadyEnterMaze(mazeId)
|
||
local mazeProgress = XTRPGManager.GetMazeProgress(mazeId)
|
||
if mazeProgress > 0 or XSaveTool.GetData(stringFormat("%d%s%s", XPlayer.Id, "IsAlreadyEnterMaze", mazeId)) then
|
||
return true
|
||
end
|
||
return false
|
||
end
|
||
--------------------区域(城市和迷宫)地图 end---------------------
|
||
--------------------常规主线 start---------------------
|
||
--是否有可领取的奖励
|
||
function XTRPGManager.IsSecondMainCanReward(secondMainId)
|
||
local ret = XTRPGManager.CheckSecondMainCondition(secondMainId)
|
||
if not ret then
|
||
return false
|
||
end
|
||
|
||
local secondMainStageIdList = XTRPGConfigs.GetSecondMainStageId(secondMainId)
|
||
local trpgRewardId
|
||
local isReceiveReward
|
||
for _, secondMainStageId in ipairs(secondMainStageIdList) do
|
||
trpgRewardId = XTRPGConfigs.GetSecondMainStageRewardId(secondMainStageId)
|
||
if not XTool.IsNumberValid(trpgRewardId) then
|
||
goto continue
|
||
end
|
||
|
||
ret = XTRPGManager.CheckRewardCondition(trpgRewardId, secondMainId)
|
||
isReceiveReward = XDataCenter.TRPGManager.IsReceiveReward(trpgRewardId)
|
||
if ret and not isReceiveReward then
|
||
return true
|
||
end
|
||
:: continue ::
|
||
end
|
||
return false
|
||
end
|
||
|
||
function XTRPGManager.CheckSecondMainCondition(secondMainId)
|
||
local conditionList = XTRPGConfigs.GetSecondMainCondition(secondMainId)
|
||
local ret
|
||
local desc = ""
|
||
for i, condition in ipairs(conditionList) do
|
||
ret, desc = XConditionManager.CheckCondition(condition)
|
||
if ret then
|
||
return true
|
||
end
|
||
end
|
||
return false, desc
|
||
end
|
||
|
||
function XTRPGManager.CheckSecondMainStageCondition(secondMainStageId)
|
||
local conditionList = XTRPGConfigs.GetSecondMainStageCondition(secondMainStageId)
|
||
local ret
|
||
local desc = ""
|
||
for i, condition in ipairs(conditionList) do
|
||
ret, desc = XConditionManager.CheckCondition(condition)
|
||
if ret then
|
||
return true
|
||
end
|
||
end
|
||
return false, desc
|
||
end
|
||
|
||
function XTRPGManager.SetStagePass(stageId)
|
||
StagePassDic[stageId] = true
|
||
end
|
||
|
||
function XTRPGManager.IsStagePass(stageId)
|
||
return StagePassDic[stageId] or false
|
||
end
|
||
|
||
function XTRPGManager.IsSecondMainReward()
|
||
local secondMainIdList = XTRPGConfigs.GetSecondMainIdList()
|
||
for i, secondMainId in ipairs(secondMainIdList) do
|
||
if XDataCenter.TRPGManager.IsSecondMainCanReward(secondMainId) then
|
||
return true
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
--------------------常规主线 start---------------------
|
||
XTRPGManager.Init()
|
||
|
||
return XTRPGManager
|
||
end
|
||
---------------------(服务器推送)begin------------------
|
||
XRpc.NotifyTRPGCharacterData = function(data)
|
||
XDataCenter.TRPGManager.NotifyTRPGCharacterData(data)
|
||
end
|
||
|
||
XRpc.NotifyTRPGTargetFinish = function(data)
|
||
XDataCenter.TRPGManager.NotifyTRPGTargetFinish(data)
|
||
end
|
||
|
||
XRpc.NotifyTRPGData = function(data)
|
||
XDataCenter.TRPGManager.NotifyTRPGData(data)
|
||
end
|
||
|
||
XRpc.NotifyTRPGFunctionFinish = function(data)
|
||
XDataCenter.TRPGManager.NotifyTRPGFunctionFinish(data)
|
||
end
|
||
|
||
XRpc.NotifyTRPGShopExtraData = function(data)
|
||
XDataCenter.TRPGManager.NotifyTRPGShopExtraData(data)
|
||
end
|
||
|
||
XRpc.NotifyTRPGItemCapacityChange = function(data)
|
||
XDataCenter.TRPGManager.NotifyTRPGItemCapacityChange(data)
|
||
end
|
||
|
||
XRpc.NotifyTRPGClientShopInfo = function(data)
|
||
XDataCenter.TRPGManager.NotifyTRPGClientShopInfo(data)
|
||
end
|
||
|
||
XRpc.NotifyTRPGDailyResetData = function(data)
|
||
XDataCenter.TRPGManager.NotifyTRPGDailyResetData(data)
|
||
end
|
||
|
||
XRpc.NotifyTRPGBaseInfo = function(data)
|
||
XDataCenter.TRPGManager.NotifyTRPGBaseInfo(data)
|
||
end
|
||
|
||
XRpc.NotifyTRPGMazeSelectCardResult = function(data)
|
||
XDataCenter.TRPGManager.NotifyTRPGMazeSelectCardResult(data)
|
||
end
|
||
|
||
XRpc.NotifyMazeRecordCardId = function(data)
|
||
XDataCenter.TRPGManager.NotifyMazeRecordCardId(data)
|
||
end
|
||
|
||
XRpc.NotifyTRPGClientBossData = function(data)
|
||
XDataCenter.TRPGManager.NotifyTRPGClientBossData(data)
|
||
end
|
||
---------------------(服务器推送)end------------------ |