forked from endernon/PGRData
1045 lines
No EOL
41 KiB
Lua
1045 lines
No EOL
41 KiB
Lua
local XChessPursuitMapDb = require("XUi/XUiChessPursuit/XData/XChessPursuitMapDb")
|
||
local XChessPursuitMapBoss = require("XUi/XUiChessPursuit/XData/XChessPursuitMapBoss")
|
||
local XChessPursuitSyncActionQueue = require("XUi/XUiChessPursuit/XData/XChessPursuitSyncActionQueue")
|
||
local XChessPursuitRank = require("XUi/XUiChessPursuit/XData/XChessPursuitRank")
|
||
local XChessPursuitRankPlayer = require("XUi/XUiChessPursuit/XData/XChessPursuitRankPlayer")
|
||
local XChessPursuitRankGrid = require("XUi/XUiChessPursuit/XData/XChessPursuitRankGrid")
|
||
local XChessPursuitSyncAction = require("XUi/XUiChessPursuit/XData/XChessPursuitSyncAction")
|
||
local CSXTextManagerGetText = CS.XTextManager.GetText
|
||
local tableSort = table.sort
|
||
|
||
XChessPursuitManagerCreator = function()
|
||
local XChessPursuitManager = {}
|
||
|
||
local ChessPursuitRequest = {
|
||
ChessPursuitEnterMapRequest = "ChessPursuitEnterMapRequest", -- 进入图请求
|
||
ChessPursuitSetGridTeamRequest = "ChessPursuitSetGridTeamRequest", -- 布阵请求
|
||
ChessPursuitBuyCardRequest = "ChessPursuitBuyCardRequest", -- 购买卡牌请求
|
||
ChessPursuitEndRoundRequest = "ChessPursuitEndRoundRequest", -- 结束回合请求
|
||
ChessPursuitAutoFightRequest = "ChessPursuitAutoFightRequest", -- 自动战斗请求
|
||
ChessPursuitResetMapRequest = "ChessPursuitResetMapRequest", -- 重置地图
|
||
ChessPursuitAutoClearRequest = "ChessPursuitAutoClearRequest", -- 扫荡
|
||
ChessPursuitEndBattleRequest = "ChessPursuitEndBattleRequest", -- 确认战斗结果
|
||
ChessPursuitGetRankRequest = "ChessPursuitGetRankRequest", -- 请求排行榜数据
|
||
ChessPursuitGetRankPlayerDetailRequest = "ChessPursuitGetRankPlayerDetailRequest", --请求排行榜上单个玩家的详细数据
|
||
ChessPursuitChangeTeamRequest = "ChessPursuitChangeTeamRequest", --战斗前改变队伍
|
||
}
|
||
|
||
--面板上显示的位置 = 队伍中实际中的位置
|
||
local TEAM_POS_DIC = {
|
||
[1] = 2,
|
||
[2] = 1,
|
||
[3] = 3,
|
||
}
|
||
|
||
local ChessPursuitMapBossList = {}
|
||
local ChessPursuitMapDbList = {}
|
||
local ChessPursuitSyncActionQueue = XChessPursuitSyncActionQueue.New()
|
||
local ChessPursuitTempTeamDic = {} --缓存地图所有布阵格的队伍数据
|
||
local CurrentMapId
|
||
local CurrentEndTime
|
||
local ChessPursuitRankDataList = {}
|
||
local ChessPursuitMyRank = -1 -- 服务端下发的主角排名,表示有多少人排名在我的前面
|
||
local ChessPursuitAllRank = -1 -- 所有玩家的排名数量
|
||
local ChessPursuitMyScore = 0
|
||
local ChessPursuitRankGridList = {} --排行榜单个玩家详情的布阵格列表
|
||
local ChessPursuitStartStoryId = CS.XGame.ClientConfig:GetString("ChessPursuitStartStoryId")
|
||
local ChessPursuitCoinItemData = {}
|
||
local PlayerTeamTempData --当前编队中的所有队伍缓存(只在编队界面中确定保存了,才会影响到ChessPursuitTempTeamDic)
|
||
local IsRegisterEditBattleProxy = false
|
||
local ChessPursuitRankDetailBossId = 0
|
||
|
||
local mathMax = math.max
|
||
local stringFormat = string.format
|
||
|
||
XChessPursuitManager.ChessPursuitSyncActionType = {
|
||
None = 0,
|
||
--触发了卡牌效果
|
||
CardEffect = 1,
|
||
--更新卡牌有效性计数
|
||
KeepCount = 2,
|
||
--开始战斗
|
||
BeginBattle = 3,
|
||
--结束战斗
|
||
EndBattle = 4,
|
||
--确认结束,战斗对Boss造成伤害
|
||
EndBattleHurt = 5,
|
||
--结束回合
|
||
EndRound = 6,
|
||
--处于停顿移动
|
||
StopMove = 7,
|
||
--移动到新位置
|
||
Move = 8,
|
||
}
|
||
|
||
local DefaultTeam = {
|
||
CaptainPos = 1,
|
||
FirstFightPos = 1,
|
||
TeamData = { 0, 0, 0 },
|
||
}
|
||
|
||
-------本地接口 begin--------
|
||
local function InitPlayerTeamTempData(teamGridIndex)
|
||
if nil == PlayerTeamTempData then
|
||
local mapId = CurrentMapId or -1
|
||
PlayerTeamTempData = XTool.Clone(ChessPursuitTempTeamDic[mapId] or {})
|
||
end
|
||
|
||
if (teamGridIndex) and (not PlayerTeamTempData[teamGridIndex]) then
|
||
PlayerTeamTempData[teamGridIndex] = XTool.Clone(DefaultTeam)
|
||
end
|
||
end
|
||
|
||
local function GetPlayerTeamTempDataCharacterId(teamGridId, teamDataIndex)
|
||
InitPlayerTeamTempData()
|
||
local characterId = PlayerTeamTempData[teamGridId] and PlayerTeamTempData[teamGridId].TeamData and PlayerTeamTempData[teamGridId].TeamData[teamDataIndex]
|
||
return characterId or 0
|
||
end
|
||
|
||
local function GetPlayerTeamTempDataByTeamGridId(teamGridId)
|
||
InitPlayerTeamTempData()
|
||
return PlayerTeamTempData[teamGridId] and PlayerTeamTempData[teamGridId].TeamData
|
||
end
|
||
|
||
local function GetPlayerTeamFirstFightPosByTeamGridId(teamGridId)
|
||
InitPlayerTeamTempData()
|
||
return PlayerTeamTempData[teamGridId] and PlayerTeamTempData[teamGridId].FirstFightPos
|
||
end
|
||
|
||
local function GetPlayerTeamCaptainPosByTeamGridId(teamGridId)
|
||
InitPlayerTeamTempData()
|
||
return PlayerTeamTempData[teamGridId] and PlayerTeamTempData[teamGridId].CaptainPos
|
||
end
|
||
|
||
--进入地图ChessPursuitTempTeamDic[mapId]为空 和 重置前缓存服务端的队伍数据
|
||
local function BeforeResetSaveTeamTemp(mapId)
|
||
local chessPursuitMapDb = ChessPursuitMapDbList[mapId]
|
||
if not chessPursuitMapDb then
|
||
XLog.Error("重置前缓存服务端的队伍数据失败", mapId, ChessPursuitMapDbList)
|
||
return
|
||
end
|
||
|
||
local gridTeamDb = chessPursuitMapDb:GetGridTeamDb()
|
||
if not ChessPursuitTempTeamDic[mapId] then
|
||
ChessPursuitTempTeamDic[mapId] = {}
|
||
end
|
||
|
||
local teamDataClone
|
||
for teamGridIndex, teamData in ipairs(gridTeamDb) do
|
||
teamDataClone = XTool.Clone(DefaultTeam)
|
||
teamDataClone.TeamData = chessPursuitMapDb:GetTeamCharacterIds(teamGridIndex, true)
|
||
teamDataClone.CaptainPos = teamData.CaptainPos
|
||
teamDataClone.FirstFightPos = teamData.FirstFightPos
|
||
ChessPursuitTempTeamDic[mapId][teamGridIndex] = teamDataClone
|
||
end
|
||
end
|
||
-------本地接口 end--------
|
||
|
||
-- 退出追击玩法界面时要清理的数据
|
||
function XChessPursuitManager.Clear()
|
||
ChessPursuitSyncActionQueue = XChessPursuitSyncActionQueue.New()
|
||
CurrentMapId = nil
|
||
CurrentEndTime = nil
|
||
XChessPursuitManager.ClearTempTeam()
|
||
end
|
||
|
||
function XChessPursuitManager.InitMapData(res, isReset)
|
||
XChessPursuitManager.Clear(isReset)
|
||
|
||
CurrentMapId = res.MapDb.Id
|
||
CurrentEndTime = XChessPursuitConfig.GetActivityEndTime()
|
||
|
||
local chessPursuitMapBoss = XChessPursuitMapBoss.New(res.MapBoss)
|
||
local chessPursuitMapDb = XChessPursuitMapDb.New(res.MapDb)
|
||
|
||
ChessPursuitMapDbList[chessPursuitMapDb:GetMapId()] = chessPursuitMapDb
|
||
ChessPursuitMapBossList[chessPursuitMapBoss:GetId()] = chessPursuitMapBoss
|
||
|
||
ChessPursuitSyncActionQueue = XChessPursuitSyncActionQueue.New()
|
||
ChessPursuitSyncActionQueue:Push(res.Actions)
|
||
|
||
XEventManager.DispatchEvent(XEventId.EVENT_CHESSPURSUIT_MAP_UPDATE)
|
||
end
|
||
|
||
function XChessPursuitManager.RegisterEditBattleProxy()
|
||
if IsRegisterEditBattleProxy then return end
|
||
IsRegisterEditBattleProxy = true
|
||
XUiNewRoomSingleProxy.RegisterProxy(XDataCenter.FubenManager.StageType.ChessPursuit,
|
||
require("XUi/XUiChessPursuit/XUi/XUiChessPursuitNewRoomSingle"))
|
||
end
|
||
|
||
function XChessPursuitManager.GetChessPursuitMapBoss(bossId)
|
||
return bossId and ChessPursuitMapBossList[bossId]
|
||
end
|
||
|
||
function XChessPursuitManager.GetChessPursuitSyncActionQueue()
|
||
return ChessPursuitSyncActionQueue
|
||
end
|
||
|
||
function XChessPursuitManager.GetChessPursuitMapDb(mapId)
|
||
if not mapId then
|
||
return
|
||
end
|
||
if not ChessPursuitMapDbList[mapId] then
|
||
ChessPursuitMapDbList[mapId] = XChessPursuitMapDb.New(mapId)
|
||
end
|
||
return ChessPursuitMapDbList[mapId]
|
||
end
|
||
|
||
function XChessPursuitManager.RequestChessPursuitEnterMapData(mapId, cb)
|
||
XNetwork.Call(ChessPursuitRequest.ChessPursuitEnterMapRequest, {
|
||
MapId = mapId,
|
||
}, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
XLog.Error("进入追击地图失败,mapId:,", mapId)
|
||
return
|
||
end
|
||
|
||
XChessPursuitManager.InitMapData(res)
|
||
|
||
if XTool.IsTableEmpty(ChessPursuitTempTeamDic[mapId]) then
|
||
BeforeResetSaveTeamTemp(mapId)
|
||
end
|
||
|
||
if cb then
|
||
cb()
|
||
end
|
||
end)
|
||
end
|
||
|
||
function XChessPursuitManager.RequestChessPursuitSetGridTeamData(mapId, cb)
|
||
local teamSet = {}
|
||
if ChessPursuitTempTeamDic[mapId] then
|
||
local config = XChessPursuitConfig.GetChessPursuitMapTemplate(mapId)
|
||
for teamGridId, cubeIndex in ipairs(config.TeamGrid) do
|
||
local curTeam = ChessPursuitTempTeamDic[mapId][teamGridId]
|
||
if not curTeam then
|
||
return false, CSXTextManagerGetText("ChessPursuitBuZhenEnterFailed")
|
||
elseif not XChessPursuitManager.IsCaptainCharacterIdInTempTeamData(mapId, teamGridId) then
|
||
return false, CSXTextManagerGetText("ChessPursuitNoCaptain", teamGridId)
|
||
elseif not XChessPursuitManager.IsFirstFightCharacterIdInTempTeamData(mapId, teamGridId) then
|
||
return false, CSXTextManagerGetText("ChessPursuitNoFirst", teamGridId)
|
||
else
|
||
local preFight = {}
|
||
preFight.CardIds = {}
|
||
preFight.CaptainPos = curTeam.CaptainPos
|
||
preFight.FirstFightPos = curTeam.FirstFightPos
|
||
preFight.RobotIds = {}
|
||
preFight.Id = config.TeamGrid[teamGridId]
|
||
preFight.HurtBoss = 0
|
||
for _, v in pairs(curTeam.TeamData or {}) do
|
||
if not XRobotManager.CheckIsRobotId(v) then
|
||
table.insert(preFight.CardIds, v)
|
||
table.insert(preFight.RobotIds, 0)
|
||
else
|
||
table.insert(preFight.CardIds, 0)
|
||
table.insert(preFight.RobotIds, v)
|
||
end
|
||
end
|
||
table.insert(teamSet, preFight)
|
||
end
|
||
end
|
||
else
|
||
return false, CSXTextManagerGetText("ChessPursuitBuZhenEnterFailed")
|
||
end
|
||
|
||
XMessagePack.MarkAsTable(teamSet)
|
||
XNetwork.Call(ChessPursuitRequest.ChessPursuitSetGridTeamRequest, {
|
||
TeamSet = teamSet
|
||
}, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
local chessPursuitMapDb = XDataCenter.ChessPursuitManager.GetChessPursuitMapDb(mapId)
|
||
if chessPursuitMapDb then
|
||
chessPursuitMapDb:SetGridTeamDb(res.TeamSet)
|
||
end
|
||
|
||
if cb then
|
||
cb()
|
||
end
|
||
end)
|
||
|
||
return true
|
||
end
|
||
|
||
function XChessPursuitManager.RequestChessPursuitEndBattleRequest(cb)
|
||
XNetwork.Call(ChessPursuitRequest.ChessPursuitEndBattleRequest, nil, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
ChessPursuitSyncActionQueue:Push(res.Actions)
|
||
|
||
if cb then
|
||
cb()
|
||
end
|
||
end)
|
||
end
|
||
|
||
function XChessPursuitManager.RequestChessPursuitBuyCardData(cardCfgIds, cb)
|
||
XNetwork.Call(ChessPursuitRequest.ChessPursuitBuyCardRequest, {CardCfgIds = cardCfgIds}, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
XUiManager.TipText("ChessPursuitShopBuyCompleteTips")
|
||
|
||
local chessPursuitMapDb = XChessPursuitManager.GetChessPursuitMapDb(CurrentMapId)
|
||
chessPursuitMapDb:AddBuyedCards(res.CardIds)
|
||
chessPursuitMapDb:AddBuyedCardId(res.CardIds)
|
||
chessPursuitMapDb:SubCoin(res.SubCoin)
|
||
|
||
XEventManager.DispatchEvent(XEventId.EVENT_CHESSPURSUIT_BUY_CARD)
|
||
|
||
if cb then
|
||
cb()
|
||
end
|
||
end)
|
||
end
|
||
|
||
function XChessPursuitManager.RequestChessPursuitEndRoundData(usedToGrid, usedToBoss, cb)
|
||
local params = {
|
||
UsedToGrid = usedToGrid or {},
|
||
UsedToBoss = usedToBoss or {},
|
||
}
|
||
XMessagePack.MarkAsTable(params.UsedToGrid)
|
||
XNetwork.Call(ChessPursuitRequest.ChessPursuitEndRoundRequest, params, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
local chessPursuitMapDb = ChessPursuitMapDbList[CurrentMapId]
|
||
chessPursuitMapDb:RemoveCardsByUsedToGrid(res.UsedToGrid)
|
||
chessPursuitMapDb:RemoveCardsByUesdToBoss(res.UesdToBoss)
|
||
|
||
chessPursuitMapDb:AddGridCardDb(res.UsedToGrid)
|
||
chessPursuitMapDb:AddBossCardDb(res.UesdToBoss)
|
||
ChessPursuitSyncActionQueue:Push(res.Actions)
|
||
|
||
if cb then
|
||
cb(res.BossRandomStep)
|
||
end
|
||
end)
|
||
end
|
||
|
||
function XChessPursuitManager.RequestChessPursuitAutoFightData(cb)
|
||
XNetwork.Call(ChessPursuitRequest.ChessPursuitAutoFightRequest, nil, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
ChessPursuitSyncActionQueue:Push(res.Actions)
|
||
|
||
if cb then
|
||
cb()
|
||
end
|
||
end)
|
||
end
|
||
|
||
function XChessPursuitManager.RequestChessPursuitResetMapData(cb, mapId)
|
||
BeforeResetSaveTeamTemp(mapId)
|
||
|
||
XNetwork.Call(ChessPursuitRequest.ChessPursuitResetMapRequest, nil, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
XChessPursuitManager.InitMapData(res, true)
|
||
|
||
if cb then
|
||
cb()
|
||
end
|
||
end)
|
||
end
|
||
|
||
function XChessPursuitManager.RequestChessPursuitAutoClearData(cb)
|
||
XNetwork.Call(ChessPursuitRequest.ChessPursuitAutoClearRequest, nil, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
local chessPursuitMapDb = ChessPursuitMapDbList[CurrentMapId]
|
||
chessPursuitMapDb:AddBossBattleCount(res.AddBattleCount)
|
||
chessPursuitMapDb:SubBossHp(res.SubHp)
|
||
ChessPursuitSyncActionQueue:Push(res.Actions)
|
||
|
||
if cb then
|
||
cb()
|
||
end
|
||
end)
|
||
end
|
||
|
||
function XChessPursuitManager.RequestChessPursuitChangeTeam(gridIndex)
|
||
local teamTeamData = GetPlayerTeamTempDataByTeamGridId(gridIndex)
|
||
local firstFightPos = GetPlayerTeamFirstFightPosByTeamGridId(gridIndex)
|
||
local captainPos = GetPlayerTeamCaptainPosByTeamGridId(gridIndex)
|
||
local cardIds, robotIds = XChessPursuitManager.ClientTeamDataChangeServer(teamTeamData)
|
||
local params = {
|
||
FirstFightPos = firstFightPos,
|
||
CaptainPos = captainPos,
|
||
CardIds = cardIds,
|
||
RobotIds = robotIds
|
||
}
|
||
|
||
XNetwork.Call(ChessPursuitRequest.ChessPursuitChangeTeamRequest, params, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
local chessPursuitMapDb = ChessPursuitMapDbList[CurrentMapId]
|
||
chessPursuitMapDb:ChangeGridTeamDb(res)
|
||
XEventManager.DispatchEvent(XEventId.EVENT_CHESSPURSUIT_SAVETEAM)
|
||
end)
|
||
end
|
||
|
||
function XChessPursuitManager.ClientTeamDataChangeServer(teamData)
|
||
local cardIds = {}
|
||
local robotIds = {}
|
||
for _, v in pairs(teamData or {}) do
|
||
if not XRobotManager.CheckIsRobotId(v) then
|
||
table.insert(cardIds, v)
|
||
table.insert(robotIds, 0)
|
||
else
|
||
table.insert(cardIds, 0)
|
||
table.insert(robotIds, v)
|
||
end
|
||
end
|
||
return cardIds, robotIds
|
||
end
|
||
|
||
function XChessPursuitManager.ServerTeamDataChangeClient(cardIds, robotIds, isNotConverRobotId)
|
||
local teamData = {}
|
||
|
||
for i, characterId in ipairs(cardIds or {}) do
|
||
-- 0即可能没有上阵或在RobotIds
|
||
if characterId ~= 0 then
|
||
teamData[i] = characterId
|
||
else
|
||
local robotId = robotIds and robotIds[i] or 0
|
||
teamData[i] = isNotConverRobotId and robotId or XRobotManager.GetCharacterId(robotId)
|
||
end
|
||
end
|
||
|
||
return teamData
|
||
end
|
||
|
||
function XChessPursuitManager.NotifyChessPursuitBossAction(data)
|
||
ChessPursuitSyncActionQueue:Push(data.Actions)
|
||
end
|
||
|
||
function XChessPursuitManager.RefreshDataByAction(action)
|
||
local chessPursuitMapDb = ChessPursuitMapDbList[CurrentMapId]
|
||
if not chessPursuitMapDb then
|
||
return
|
||
end
|
||
|
||
if action:GetType() == XChessPursuitManager.ChessPursuitSyncActionType.CardEffect then
|
||
chessPursuitMapDb:SetBossMoveDirection(action:GetBossMoveDirection())
|
||
chessPursuitMapDb:SetBossPos(action:GetBoosPos())
|
||
chessPursuitMapDb:SetBossHp(action:GetBossHp())
|
||
chessPursuitMapDb:AddBossCardDb(action:GetAddBossCard())
|
||
elseif action:GetType() == XChessPursuitManager.ChessPursuitSyncActionType.KeepCount then
|
||
chessPursuitMapDb:RefreshKeepCount(action:GetCardId(), action:GetKeepCount())
|
||
chessPursuitMapDb:SetBossMoveDirection(action:GetBossMoveDirection())
|
||
elseif action:GetType() == XChessPursuitManager.ChessPursuitSyncActionType.EndBattle then
|
||
|
||
elseif action:GetType() == XChessPursuitManager.ChessPursuitSyncActionType.EndBattleHurt then
|
||
local teamGridIndex = XChessPursuitConfig.GetTeamGridIndexByPos(CurrentMapId, action:GetBoosPos())
|
||
chessPursuitMapDb:SetGridTeamDbHurtBoss(teamGridIndex, action:GetHurtBoss())
|
||
chessPursuitMapDb:AddBossBattleCount(1)
|
||
chessPursuitMapDb:SetBossHp(action:GetBossHp())
|
||
elseif action:GetType() == XChessPursuitManager.ChessPursuitSyncActionType.Move then
|
||
chessPursuitMapDb:SetBossPos(action:GetBoosPos())
|
||
chessPursuitMapDb:SetBossMoveDirection(action:GetBossMoveDirection())
|
||
elseif action:GetType() == XChessPursuitManager.ChessPursuitSyncActionType.EndRound then
|
||
chessPursuitMapDb:SetCoin(action:GetCoin())
|
||
end
|
||
end
|
||
|
||
function XChessPursuitManager.NotifyChessPursuitGroupInfo(data)
|
||
for i,mapDb in ipairs(data.MapDBList) do
|
||
local chessPursuitMapDb = XChessPursuitMapDb.New(mapDb)
|
||
ChessPursuitMapDbList[chessPursuitMapDb:GetMapId()] = chessPursuitMapDb
|
||
end
|
||
|
||
|
||
for i,mapBoss in ipairs(data.MapBossList) do
|
||
local chessPursuitMapBoss = XChessPursuitMapBoss.New(mapBoss)
|
||
ChessPursuitMapBossList[chessPursuitMapBoss:GetId()] = chessPursuitMapBoss
|
||
end
|
||
|
||
XChessPursuitManager.RegisterEditBattleProxy()
|
||
XEventManager.DispatchEvent(XEventId.EVENT_CHESSPURSUIT_MAP_UPDATE)
|
||
end
|
||
|
||
-- 从编队界面保存临时的队伍数据
|
||
function XChessPursuitManager.SaveTempTeamData(mapId)
|
||
InitPlayerTeamTempData()
|
||
if not ChessPursuitTempTeamDic[mapId] then
|
||
ChessPursuitTempTeamDic[mapId] = {}
|
||
end
|
||
|
||
local newTeamTemp = {}
|
||
for teamGridIndex, team in pairs(PlayerTeamTempData) do
|
||
newTeamTemp[teamGridIndex] = team
|
||
end
|
||
|
||
ChessPursuitTempTeamDic[mapId] = newTeamTemp
|
||
XEventManager.DispatchEvent(XEventId.EVENT_CHESSPURSUIT_SAVETEAM)
|
||
XChessPursuitManager.ClearTempTeam()
|
||
end
|
||
|
||
function XChessPursuitManager.GetSaveTempTeamData(mapId, teamGridIndex)
|
||
if ChessPursuitTempTeamDic[mapId] then
|
||
return XTool.Clone(ChessPursuitTempTeamDic[mapId][teamGridIndex])
|
||
end
|
||
end
|
||
|
||
function XChessPursuitManager.GetCaptainPosInTempTeamData(mapId, teamGridIndex)
|
||
local tempTeamData = XChessPursuitManager.GetSaveTempTeamData(mapId, teamGridIndex)
|
||
return tempTeamData and tempTeamData.CaptainPos or 1
|
||
end
|
||
|
||
function XChessPursuitManager.GetFirstFightPosInTempTeamData(mapId, teamGridIndex)
|
||
local tempTeamData = XChessPursuitManager.GetSaveTempTeamData(mapId, teamGridIndex)
|
||
return tempTeamData and tempTeamData.FirstFightPos or 1
|
||
end
|
||
|
||
function XChessPursuitManager.GetCharacterIdInTempTeamData(mapId, teamGridIndex, pos)
|
||
local tempTeamData = XChessPursuitManager.GetSaveTempTeamData(mapId, teamGridIndex)
|
||
return tempTeamData and tempTeamData.TeamData[pos]
|
||
end
|
||
|
||
function XChessPursuitManager.IsCaptainCharacterIdInTempTeamData(mapId, teamGridIndex)
|
||
local tempTeamData = XChessPursuitManager.GetSaveTempTeamData(mapId, teamGridIndex)
|
||
return tempTeamData and tempTeamData.TeamData and tempTeamData.TeamData[tempTeamData.CaptainPos] and 0 ~= tempTeamData.TeamData[tempTeamData.CaptainPos]
|
||
end
|
||
|
||
function XChessPursuitManager.IsFirstFightCharacterIdInTempTeamData(mapId, teamGridIndex)
|
||
local tempTeamData = XChessPursuitManager.GetSaveTempTeamData(mapId, teamGridIndex)
|
||
return tempTeamData and tempTeamData.TeamData and tempTeamData.TeamData[tempTeamData.FirstFightPos] and 0 ~= tempTeamData.TeamData[tempTeamData.FirstFightPos]
|
||
end
|
||
|
||
function XChessPursuitManager.TeamPosConvert(index)
|
||
return TEAM_POS_DIC[index]
|
||
end
|
||
|
||
--缓存正在编队中的临时队伍
|
||
function XChessPursuitManager.SetPlayerTeamData(curTeam, mapId, teamGridId, isUsePrefab)
|
||
InitPlayerTeamTempData()
|
||
--检查其他位置有没一样的角色;使用队伍预设空掉其他位置一样的角色,否则交换角色位置
|
||
for i, characterId in ipairs(curTeam.TeamData) do
|
||
local isInOtherTeam, teamGridIndex, teamDataIndex = XChessPursuitManager.CheckIsInChessPursuit(mapId, characterId, teamGridId)
|
||
if isInOtherTeam and PlayerTeamTempData[teamGridIndex] and PlayerTeamTempData[teamGridIndex].TeamData then
|
||
local oldCharacterId = isUsePrefab and 0 or GetPlayerTeamTempDataCharacterId(teamGridId, i)
|
||
PlayerTeamTempData[teamGridIndex].TeamData[teamDataIndex] = oldCharacterId
|
||
end
|
||
end
|
||
|
||
PlayerTeamTempData[teamGridId] = XTool.Clone(curTeam)
|
||
end
|
||
|
||
--快速编队界面,缓存的正在编队中的临时队伍
|
||
function XChessPursuitManager.QuickDeploySetPlayerTeamData(teamDataList)
|
||
PlayerTeamTempData = XTool.Clone(teamDataList)
|
||
end
|
||
|
||
function XChessPursuitManager.SetPlayerTeamDataFirstFightPos(firstFightPos, teamGridIndex)
|
||
InitPlayerTeamTempData(teamGridIndex)
|
||
if PlayerTeamTempData[teamGridIndex] then
|
||
PlayerTeamTempData[teamGridIndex].FirstFightPos = firstFightPos
|
||
end
|
||
end
|
||
|
||
function XChessPursuitManager.SetPlayerTeamDataCaptainPos(captainPos, teamGridIndex)
|
||
InitPlayerTeamTempData(teamGridIndex)
|
||
if PlayerTeamTempData[teamGridIndex] then
|
||
PlayerTeamTempData[teamGridIndex].CaptainPos = captainPos
|
||
end
|
||
end
|
||
|
||
--关闭编队界面时清理
|
||
function XChessPursuitManager.ClearTempTeam()
|
||
PlayerTeamTempData = nil
|
||
end
|
||
|
||
--检查角色是否在其他队伍中
|
||
function XChessPursuitManager.CheckIsInChessPursuit(mapId, characterId, currTeamGridId)
|
||
if 0 == characterId then
|
||
return false
|
||
end
|
||
InitPlayerTeamTempData(mapId)
|
||
|
||
if XTool.IsTableEmpty(PlayerTeamTempData) then
|
||
return false
|
||
end
|
||
for teamGridIndex, v in pairs(PlayerTeamTempData) do
|
||
if teamGridIndex ~= currTeamGridId then
|
||
for i, cId in ipairs(v.TeamData) do
|
||
if cId == characterId then
|
||
return true, teamGridIndex, i
|
||
end
|
||
end
|
||
end
|
||
end
|
||
return false
|
||
end
|
||
|
||
--检查能否互相交换队伍中的角色
|
||
function XChessPursuitManager.CheckIsSwapTeamPos(teamGridIdA, teamDataIndexA, teamGridIdB, teamDataIndexB)
|
||
if teamGridIdA == teamGridIdB then
|
||
return true
|
||
end
|
||
|
||
local teamDataA = GetPlayerTeamTempDataByTeamGridId(teamGridIdA)
|
||
if not teamDataA then
|
||
return true
|
||
end
|
||
|
||
local teamDataB = GetPlayerTeamTempDataByTeamGridId(teamGridIdB)
|
||
if not teamDataB then
|
||
return true
|
||
end
|
||
|
||
local characterIdA = GetPlayerTeamTempDataCharacterId(teamGridIdA, teamDataIndexA)
|
||
characterIdA = XRobotManager.CheckIdToCharacterId(characterIdA)
|
||
if 0 ~= characterIdA then
|
||
for i, characterId in ipairs(teamDataB) do
|
||
if i ~= teamDataIndexB then
|
||
characterId = XRobotManager.CheckIdToCharacterId(characterId)
|
||
if characterIdA == characterId then
|
||
return false
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
local characterIdB = GetPlayerTeamTempDataCharacterId(teamGridIdB, teamDataIndexB)
|
||
characterIdB = XRobotManager.CheckIdToCharacterId(characterIdB)
|
||
if 0 ~= characterIdB then
|
||
for i, characterId in ipairs(teamDataA) do
|
||
if i ~= teamDataIndexA then
|
||
characterId = XRobotManager.CheckIdToCharacterId(characterId)
|
||
if characterIdB == characterId then
|
||
return false
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
return true
|
||
end
|
||
|
||
function XChessPursuitManager.GetActivityChapters()
|
||
local chapters = {}
|
||
local config = XChessPursuitConfig.GetChessPursuitInTimeMapGroup()
|
||
|
||
if config then
|
||
local tempChapter = {
|
||
Type = XDataCenter.FubenManager.ChapterType.ChessPursuit,
|
||
Id = config.Id,
|
||
}
|
||
|
||
chapters = {tempChapter}
|
||
end
|
||
return chapters
|
||
end
|
||
|
||
--@region FubenManager的引用函数(战斗)
|
||
|
||
function XChessPursuitManager.InitStageInfo()
|
||
for i,v in ipairs(XChessPursuitConfig.GetAllChessPursuitBossTemplate()) do
|
||
local stageInfo = XDataCenter.FubenManager.GetStageInfo(v.StageId)
|
||
stageInfo.Type = XDataCenter.FubenManager.StageType.ChessPursuit
|
||
stageInfo.ChapterName = v.Name
|
||
end
|
||
end
|
||
|
||
function XChessPursuitManager.PushAction()
|
||
local res = XDataCenter.FubenManager.FubenSettleResult
|
||
if not res or not res.Settle then
|
||
return
|
||
end
|
||
|
||
if res.Settle.ChessPursuitResult then
|
||
ChessPursuitSyncActionQueue:Push(res.Settle.ChessPursuitResult)
|
||
end
|
||
end
|
||
XEventManager.AddEventListener(XEventId.EVENT_FUBEN_SETTLE_REWARD, XChessPursuitManager.PushAction, XChessPursuitManager)
|
||
|
||
function XChessPursuitManager.FinishFight(settle)
|
||
--当期活动已经结束
|
||
local nowTime = XTime.GetServerNowTimestamp()
|
||
if (nowTime and CurrentEndTime and nowTime >= CurrentEndTime) or not settle.ChessPursuitResult[1] then
|
||
XDataCenter.FubenManager.ChallengeLose()
|
||
return
|
||
end
|
||
|
||
local chessPursuitSyncAction = XChessPursuitSyncAction.New(settle.ChessPursuitResult[1])
|
||
if chessPursuitSyncAction:GetIsForceExit() then
|
||
XDataCenter.FubenManager.ChallengeLose()
|
||
else
|
||
local chessPursuitMapTemplate = XChessPursuitConfig.GetChessPursuitMapTemplate(CurrentMapId)
|
||
local chessPursuitMapDb = XDataCenter.ChessPursuitManager.GetChessPursuitMapDb(CurrentMapId)
|
||
local bossPos = chessPursuitMapDb:GetBossPos()
|
||
local teamGridIndex = XChessPursuitConfig.GetTeamGridIndexByPos(CurrentMapId, bossPos)
|
||
|
||
XLuaUiManager.Open("UiChessPursuitFightResult", {
|
||
MapId = CurrentMapId,
|
||
ChessPursuitSyncAction = chessPursuitSyncAction,
|
||
BossId = chessPursuitMapTemplate.BossId,
|
||
TeamGridIndex = teamGridIndex,
|
||
})
|
||
end
|
||
end
|
||
|
||
--@endregion
|
||
|
||
function XChessPursuitManager.GetCoinCount(chessPursuitMapId)
|
||
local mapId = chessPursuitMapId or CurrentMapId
|
||
if not mapId then
|
||
return 0
|
||
end
|
||
local chessPursuitMapDb = XChessPursuitManager.GetChessPursuitMapDb(mapId)
|
||
return chessPursuitMapDb:GetCoin()
|
||
end
|
||
|
||
--@region 排行榜
|
||
local function UpdatePlayerRankList(playerRankList)
|
||
ChessPursuitRankDataList = {}
|
||
for i, v in ipairs(playerRankList) do
|
||
if not ChessPursuitRankDataList[i] then
|
||
ChessPursuitRankDataList[i] = XChessPursuitRankPlayer.New()
|
||
end
|
||
ChessPursuitRankDataList[i]:UpdateData(v)
|
||
end
|
||
end
|
||
|
||
function XChessPursuitManager.ChessPursuitGetRankRequest(cb)
|
||
local groupId = XChessPursuitConfig.GetCurrentGroupId()
|
||
XNetwork.Call(ChessPursuitRequest.ChessPursuitGetRankRequest, {GroupId = groupId}, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
|
||
UpdatePlayerRankList(res.PlayerRank)
|
||
ChessPursuitMyRank = res.My --表示有多少人排名在我的前面,不等于我当前排第几名
|
||
ChessPursuitAllRank = res.All
|
||
ChessPursuitMyScore = res.MyScore
|
||
if cb then
|
||
cb(groupId)
|
||
end
|
||
end)
|
||
end
|
||
|
||
function XChessPursuitManager.GetRankDataList()
|
||
return ChessPursuitRankDataList
|
||
end
|
||
|
||
function XChessPursuitManager.IsHasMyRank()
|
||
if ChessPursuitMyRank <= -1 then
|
||
return false
|
||
end
|
||
return true
|
||
end
|
||
|
||
function XChessPursuitManager.GetChessPursuitMyRank()
|
||
local playerId = XPlayer.Id
|
||
local myRank = XChessPursuitManager.GetPursuitRankIndex(playerId)
|
||
return myRank
|
||
end
|
||
|
||
function XChessPursuitManager.GetChessPursuitMyRankPercent()
|
||
if 0 == ChessPursuitAllRank or not XChessPursuitManager.IsHasMyRank() then
|
||
return 0
|
||
end
|
||
--无人排在自己的前面返回1%
|
||
if 0 == ChessPursuitMyRank then
|
||
return 1
|
||
end
|
||
return math.floor(ChessPursuitMyRank / ChessPursuitAllRank * 100)
|
||
end
|
||
|
||
function XChessPursuitManager.GetChessPursuitAllRank()
|
||
return ChessPursuitAllRank
|
||
end
|
||
|
||
function XChessPursuitManager.GetChessPursuitMyScore()
|
||
return mathMax(ChessPursuitMyScore, 0)
|
||
end
|
||
|
||
function XChessPursuitManager.GetPursuitRankData(playerId)
|
||
for _, chessPursuitRankPlayer in ipairs(ChessPursuitRankDataList) do
|
||
if chessPursuitRankPlayer:IsCurPlayer(playerId) then
|
||
return chessPursuitRankPlayer
|
||
end
|
||
end
|
||
end
|
||
|
||
function XChessPursuitManager.GetPursuitRankIndex(playerId)
|
||
for index, chessPursuitRankPlayer in ipairs(ChessPursuitRankDataList) do
|
||
if chessPursuitRankPlayer:IsCurPlayer(playerId) then
|
||
return index
|
||
end
|
||
end
|
||
end
|
||
|
||
local function UpdateChessPursuitRankGridList(chessPursuitRankGridList)
|
||
ChessPursuitRankGridList = {}
|
||
for i, chessPursuitRankGridData in ipairs(chessPursuitRankGridList) do
|
||
if not ChessPursuitRankGridList[i] then
|
||
ChessPursuitRankGridList[i] = XChessPursuitRankGrid.New(chessPursuitRankGridData)
|
||
end
|
||
end
|
||
end
|
||
|
||
local function UpdateChessPursuitRankDetailBossId(bossId)
|
||
if not bossId then return end
|
||
ChessPursuitRankDetailBossId = bossId
|
||
end
|
||
|
||
function XChessPursuitManager.ChessPursuitGetRankPlayerDetailRequest(playerId, groupId)
|
||
XNetwork.Call(ChessPursuitRequest.ChessPursuitGetRankPlayerDetailRequest, {PlayerId = playerId, GroupId = groupId}, function(res)
|
||
if res.Code ~= XCode.Success then
|
||
XUiManager.TipCode(res.Code)
|
||
return
|
||
end
|
||
UpdateChessPursuitRankGridList(res.Grids)
|
||
UpdateChessPursuitRankDetailBossId(res.BossId)
|
||
XLuaUiManager.Open("UiChessPursuitRankLineup", playerId, ChessPursuitRankGridList)
|
||
end)
|
||
end
|
||
|
||
function XChessPursuitManager.GetChessPursuitRankDetailBossHp()
|
||
local chessPursuitMapBoss = XChessPursuitManager.GetChessPursuitMapBoss(ChessPursuitRankDetailBossId)
|
||
return chessPursuitMapBoss and chessPursuitMapBoss:GetInitHp() or 0
|
||
end
|
||
|
||
-- gridTeamIndex:第几号布阵格
|
||
function XChessPursuitManager.IsRankCaptain(gridTeamIndex, characterId, playerId)
|
||
local chessPursuitRankPlayer = XChessPursuitManager.GetPursuitRankData(playerId)
|
||
if not chessPursuitRankPlayer then
|
||
return false
|
||
end
|
||
if chessPursuitRankPlayer:IsCaptain(gridTeamIndex, characterId) then
|
||
return true
|
||
end
|
||
return false
|
||
end
|
||
|
||
function XChessPursuitManager.GetRankDetailCharacterHeadInfo(index, characterId)
|
||
local chessPursuitRankGrid = ChessPursuitRankGridList[index]
|
||
if chessPursuitRankGrid then
|
||
return chessPursuitRankGrid:GetCharacterHeadInfo(characterId)
|
||
end
|
||
return {}
|
||
end
|
||
--@endregion
|
||
|
||
--@region 商店
|
||
function XChessPursuitManager.GetShopCardIdList(chessPursuitMapId)
|
||
local shopId = XChessPursuitConfig.GetChessPursuitMapShopCardId(chessPursuitMapId)
|
||
local shopCardIdList = XChessPursuitConfig.GetShopCardIdList(shopId)
|
||
local chessPursuitMapDb = XChessPursuitManager.GetChessPursuitMapDb(chessPursuitMapId)
|
||
tableSort(shopCardIdList, function(cardIdA, cardIdB)
|
||
local isBuyedCardA = chessPursuitMapDb:IsBuyedCard(cardIdA)
|
||
local isBuyedCardB = chessPursuitMapDb:IsBuyedCard(cardIdB)
|
||
if isBuyedCardA ~= isBuyedCardB then
|
||
return isBuyedCardB
|
||
end
|
||
|
||
local cardQualityA = XChessPursuitConfig.GetCardQuality(cardIdA)
|
||
local cardQualityB = XChessPursuitConfig.GetCardQuality(cardIdB)
|
||
if cardQualityA ~= cardQualityB then
|
||
return cardQualityA > cardQualityB
|
||
end
|
||
|
||
return cardIdA < cardIdB
|
||
end)
|
||
return shopCardIdList
|
||
end
|
||
|
||
function XChessPursuitManager.IsBuyedCard(chessPursuitMapId, cardId)
|
||
local chessPursuitMapDb = XChessPursuitManager.GetChessPursuitMapDb(chessPursuitMapId)
|
||
return chessPursuitMapDb:IsBuyedCard(cardId)
|
||
end
|
||
--@endregion
|
||
|
||
function XChessPursuitManager.GetSumCoinCount()
|
||
local groupId = XChessPursuitConfig.GetCurrentGroupId()
|
||
if not groupId then
|
||
return 0
|
||
end
|
||
|
||
local sum = 0
|
||
local addCoinFunc = function(mapId)
|
||
local mapDb = XChessPursuitManager.GetChessPursuitMapDb(mapId)
|
||
if mapDb:IsKill() then
|
||
return XChessPursuitConfig.GetChessPursuitMapFinishAddCoin(mapId)
|
||
end
|
||
return 0
|
||
end
|
||
|
||
local mapIdList = XChessPursuitConfig.GetMapIdListByGroupId(groupId)
|
||
if XChessPursuitConfig.GetStageTypeByGroupId(groupId) == XChessPursuitCtrl.MAIN_UI_TYPE.STABLE then
|
||
for _, mapId in ipairs(mapIdList) do
|
||
sum = sum + addCoinFunc(mapId)
|
||
end
|
||
else
|
||
if mapIdList[1] then
|
||
local initFunc = XChessPursuitConfig.GetChessPursuitMapInitFuncList(mapIdList[1])
|
||
local mapId
|
||
for _, funcId in ipairs(initFunc) do
|
||
if funcId > 0 and XChessPursuitConfig.IsMapInitFuncAddCoinType(funcId) then
|
||
mapId = XChessPursuitConfig.GetMapInitFuncMapId(funcId)
|
||
sum = sum + addCoinFunc(mapId)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
return sum
|
||
end
|
||
|
||
function XChessPursuitManager.IsCanTakeReward()
|
||
local groupId = XChessPursuitConfig.GetCurrentGroupId()
|
||
local mapsCfg = XChessPursuitConfig.GetChessPursuitMapsByGroupId(groupId)
|
||
|
||
for _,cfg in ipairs(mapsCfg) do
|
||
if ChessPursuitMapDbList[cfg.Id] then
|
||
if ChessPursuitMapDbList[cfg.Id]:IsCanTakeReward() then
|
||
return true
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
function XChessPursuitManager.CheckIsAutoPlayStory()
|
||
if not XSaveTool.GetData(stringFormat("%d%s%s", XPlayer.Id, "ChessPursuitIsAutoPlayStory", ChessPursuitStartStoryId)) then
|
||
XSaveTool.SaveData(stringFormat("%d%s%s", XPlayer.Id, "ChessPursuitIsAutoPlayStory", ChessPursuitStartStoryId), true)
|
||
XDataCenter.MovieManager.PlayMovie(ChessPursuitStartStoryId, XChessPursuitManager.CheckIsAutoShowHelp)
|
||
else
|
||
XChessPursuitManager.CheckIsAutoShowHelp()
|
||
end
|
||
end
|
||
|
||
function XChessPursuitManager.CheckIsAutoShowHelp()
|
||
local config = XHelpCourseConfig.GetHelpCourseTemplateByFunction("ChessPursuit")
|
||
if not config then return end
|
||
|
||
local id = config.Id
|
||
if not XSaveTool.GetData(stringFormat("%d%s%s", XPlayer.Id, "ChessPursuitIsAutoShowHelp", id)) then
|
||
XSaveTool.SaveData(stringFormat("%d%s%s", XPlayer.Id, "ChessPursuitIsAutoShowHelp", id), true)
|
||
XChessPursuitManager.OpenHelpTip()
|
||
end
|
||
end
|
||
|
||
function XChessPursuitManager.OpenHelpTip()
|
||
local csXChessPursuitCtrlCom = XChessPursuitCtrl.GetCSXChessPursuitCtrlCom()
|
||
if not csXChessPursuitCtrlCom then
|
||
return
|
||
end
|
||
local chessPursuitDrawCamera = csXChessPursuitCtrlCom:GetChessPursuitDrawCamera()
|
||
local currCameraState = chessPursuitDrawCamera:GetChessPursuitCameraState()
|
||
chessPursuitDrawCamera:SwitchChessPursuitCameraState(CS.XChessPursuitCameraState.None)
|
||
XUiManager.ShowHelpTip("ChessPursuit", function()
|
||
chessPursuitDrawCamera:SwitchChessPursuitCameraState(currCameraState)
|
||
end)
|
||
end
|
||
|
||
--活动简介界面的可挑战提醒
|
||
function XChessPursuitManager.CheckIsCanFightTips()
|
||
local groupId = XChessPursuitConfig.GetCurrentGroupId()
|
||
local mapsCfg = XChessPursuitConfig.GetChessPursuitMapsByGroupId(groupId)
|
||
|
||
for _,cfg in ipairs(mapsCfg) do
|
||
if XChessPursuitConfig.CheckChessPursuitMapIsOpen(cfg.Id) then
|
||
local chessPursuitMapDb = XDataCenter.ChessPursuitManager.GetChessPursuitMapDb(cfg.Id)
|
||
if not chessPursuitMapDb:IsKill() then
|
||
return true
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
function XChessPursuitManager.GetBossHurMax(mapId, teamGridIndex)
|
||
local chessPursuitMapDb = XDataCenter.ChessPursuitManager.GetChessPursuitMapDb(mapId)
|
||
local hurtBoss = chessPursuitMapDb:GetHurtBossByGridId(teamGridIndex)
|
||
if hurtBoss and hurtBoss > 0 then
|
||
local chessPursuitMapTemplate = XChessPursuitConfig.GetChessPursuitMapTemplate(mapId)
|
||
local chessPursuitMapBoss = XDataCenter.ChessPursuitManager.GetChessPursuitMapBoss(chessPursuitMapTemplate.BossId)
|
||
local ration = hurtBoss / chessPursuitMapBoss:GetInitHp()
|
||
|
||
return ration
|
||
else
|
||
return 0
|
||
end
|
||
end
|
||
|
||
function XChessPursuitManager.OpenCoinTip()
|
||
XLuaUiManager.Open("UiTip", ChessPursuitCoinItemData)
|
||
end
|
||
|
||
-- 是否开放斗争期炼狱模式
|
||
function XChessPursuitManager.IsOpenFightHeard()
|
||
local cfg = XChessPursuitConfig.GetChessPursuitMapByUiType(XChessPursuitCtrl.MAIN_UI_TYPE.FIGHT_HARD)
|
||
return XChessPursuitConfig.CheckChessPursuitMapIsOpen(cfg.Id)
|
||
end
|
||
|
||
function XChessPursuitManager.SaveSaoDangIsAlreadyAutoOpen(mapId)
|
||
local key = string.format("ChessPursuitSaoDangIsAlreadyAutoOpen_%s_%s", mapId, XPlayer.Id)
|
||
XSaveTool.SaveData(key, true)
|
||
end
|
||
|
||
function XChessPursuitManager.IsSaoDangAlreadyAutoOpen(mapId)
|
||
local key = string.format("ChessPursuitSaoDangIsAlreadyAutoOpen_%s_%s", mapId, XPlayer.Id)
|
||
if XSaveTool.GetData(key) then
|
||
return true
|
||
end
|
||
return false
|
||
end
|
||
|
||
function XChessPursuitManager.RemoveSaoDangIsAlreadyAutoOpen(mapId)
|
||
local key = string.format("ChessPursuitSaoDangIsAlreadyAutoOpen_%s_%s", mapId, XPlayer.Id)
|
||
if XSaveTool.GetData(key) then
|
||
XSaveTool.RemoveData(key)
|
||
end
|
||
end
|
||
|
||
local function InitChessPursuitCoinItemData()
|
||
local itemId = XChessPursuitConfig.SHOP_COIN_ITEM_ID
|
||
ChessPursuitCoinItemData = {
|
||
TemplateId = itemId,
|
||
IsTempItemData = true,
|
||
Name = XDataCenter.ItemManager.GetItemName(itemId),
|
||
Icon = XDataCenter.ItemManager.GetItemIcon(itemId),
|
||
Description = XDataCenter.ItemManager.GetItemDescription(itemId),
|
||
WorldDesc = XDataCenter.ItemManager.GetItemWorldDesc(itemId)
|
||
}
|
||
end
|
||
|
||
local function Init()
|
||
InitChessPursuitCoinItemData()
|
||
end
|
||
Init()
|
||
|
||
return XChessPursuitManager
|
||
end
|
||
|
||
XRpc.NotifyChessPursuitBossAction = function(data)
|
||
XDataCenter.ChessPursuitManager.NotifyChessPursuitBossAction(data)
|
||
end
|
||
|
||
XRpc.NotifyChessPursuitGroupInfo = function(data)
|
||
XDataCenter.ChessPursuitManager.NotifyChessPursuitGroupInfo(data)
|
||
end |