forked from endernon/PGRData
675 lines
No EOL
24 KiB
Lua
675 lines
No EOL
24 KiB
Lua
XFubenUnionKillManagerCreator = function()
|
|
|
|
local XFubenUnionKillManager = {}
|
|
|
|
local UnionKillRpc = {
|
|
GetBoxReward = "GetBoxRewardRequest", -- 领取宝箱
|
|
GetUnionKillRankData = "GetUnionKillRankDataRequest", -- 获取歼敌排行榜
|
|
GetUnionPraiseRankData = "GetUnionPraiseRankDataRequest", -- 获取点赞排行榜
|
|
PraisePlayer = "UnionKillPraiseRequest", -- 点赞请求
|
|
LeaveFightRoom = "UnionKillLeaveFightRoomRequest", -- 离开战斗房间
|
|
}
|
|
|
|
--------------------------------------------------------排行数据
|
|
local UnionRankData = XClass(nil, "UnionRankData")
|
|
|
|
function UnionRankData:Ctor(rankDatas)
|
|
self.LastModify = 0
|
|
if not rankDatas then return end
|
|
self:UpdateUnionRankData(rankDatas)
|
|
end
|
|
|
|
function UnionRankData:UpdateUnionRankData(rankDatas)
|
|
self.Score = rankDatas.Score or 0
|
|
self.Rank = rankDatas.Rank or 0
|
|
self.TotalRank = rankDatas.TotalRank or 0
|
|
self.HistoryRank = rankDatas.HistoryRank or 0
|
|
self.PlayerList = rankDatas.UnionKillRowRankInfos or rankDatas.UnionPraiseRowRankInfos or {}
|
|
self:SetModifyTime()
|
|
end
|
|
|
|
function UnionRankData:SetModifyTime()
|
|
self.LastModify = XTime.GetServerNowTimestamp()
|
|
end
|
|
--------------------------------------------------------提示数据
|
|
local UnionTipMessage = XClass(nil, "UnionTipMessage")
|
|
|
|
function UnionTipMessage:Ctor(msg, chatData)
|
|
self.IsChatMsg = false
|
|
if msg then
|
|
self.TipsType = msg.TipsType
|
|
self.PlayerId = msg.PlayerId
|
|
self.CharacterId = msg.CharacterId
|
|
self.ShareCharacterInfos = msg.ShareCharacterInfos
|
|
end
|
|
if chatData then
|
|
self.PlayerId = chatData.SenderId
|
|
self.ChatData = chatData
|
|
self.IsChatMsg = true
|
|
end
|
|
end
|
|
|
|
function UnionTipMessage:IsChatTip()
|
|
return self.IsChatMsg
|
|
end
|
|
|
|
local UnionKillData = {}
|
|
local UnionKillFightRoomData = nil
|
|
local PraiseRankDatas = UnionRankData.New()
|
|
local KillRankDatas = {}
|
|
local SectionKillBossCount = {}
|
|
local TipQueue = {}
|
|
local CacheTeam = {}
|
|
local Max_Team_Count = 3
|
|
-- 判断结算用
|
|
local EventStageIds = {}
|
|
local BossStageIds = {}
|
|
local TrialStageIds = {}
|
|
|
|
function XFubenUnionKillManager.InitStageInfo()
|
|
-- 初始化全部
|
|
if UnionKillData and UnionKillData.Id and UnionKillData.Id > 0 then
|
|
EventStageIds = {}
|
|
BossStageIds = {}
|
|
TrialStageIds = {}
|
|
local unionKillTemplate = XFubenUnionKillConfigs.GetUnionActivityById(UnionKillData.Id)
|
|
if unionKillTemplate then
|
|
for i = 1, #unionKillTemplate.SectionId do
|
|
local sectionId = unionKillTemplate.SectionId[i]
|
|
local sectionTemplate = XFubenUnionKillConfigs.GetUnionSectionById(sectionId)
|
|
if sectionTemplate then
|
|
XFubenUnionKillManager.SetStageInfoType(sectionTemplate.BossStage)
|
|
BossStageIds[sectionTemplate.BossStage] = true
|
|
|
|
XFubenUnionKillManager.SetStageInfoType(sectionTemplate.TrialStage)
|
|
TrialStageIds[sectionTemplate.TrialStage] = true
|
|
|
|
for _, stageId in pairs(sectionTemplate.EventStageId) do
|
|
XFubenUnionKillManager.SetStageInfoType(stageId)
|
|
EventStageIds[stageId] = true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function XFubenUnionKillManager.SetStageInfoType(stageId)
|
|
local stageInfo = XDataCenter.FubenManager.GetStageInfo(stageId)
|
|
if stageInfo then
|
|
stageInfo.Type = XDataCenter.FubenManager.StageType.UnionKill
|
|
end
|
|
end
|
|
|
|
function XFubenUnionKillManager.ShowReward(winData)
|
|
if not winData then return end
|
|
-- 有共享角色、先弹出点赞界面
|
|
local unionKillResult = winData.SettleData.UnionKillResult
|
|
if unionKillResult then
|
|
local shareResults = unionKillResult.ShareResultInfos
|
|
if shareResults and #shareResults > 0 then
|
|
XLuaUiManager.Open("UiUnionKillGrade", winData)
|
|
return
|
|
end
|
|
end
|
|
|
|
local stageId = winData.SettleData.StageId
|
|
-- 没有贡献角色、走通用
|
|
-- 事件关卡
|
|
if XFubenUnionKillManager.IsEventStage(stageId) then
|
|
XLuaUiManager.Open("UiSettleWin", winData)
|
|
return
|
|
end
|
|
-- boss、试炼关卡
|
|
if XFubenUnionKillManager.IsBossStage(stageId) or XFubenUnionKillManager.IsTrialStage(stageId) then
|
|
if winData.SettleData.UnionKillResult then
|
|
XLuaUiManager.Open("UiArenaFightResult", winData)
|
|
return
|
|
end
|
|
end
|
|
|
|
-- by default
|
|
XLuaUiManager.Open("UiSettleWin", winData)
|
|
end
|
|
|
|
-- 离开战斗房间
|
|
function XFubenUnionKillManager.LeaveFightRoom(func)
|
|
XNetwork.Call(UnionKillRpc.LeaveFightRoom, {}, function(res)
|
|
if res.Code ~= XCode.Success then
|
|
XUiManager.TipCode(res.Code)
|
|
return
|
|
end
|
|
if func then
|
|
func()
|
|
end
|
|
end)
|
|
end
|
|
|
|
-- 点赞请求
|
|
function XFubenUnionKillManager.PraisePlayerCharacters(playerId, characterId, func)
|
|
XNetwork.Call(UnionKillRpc.PraisePlayer, {
|
|
PlayerId = playerId, CharacterId = characterId
|
|
}, function(res)
|
|
if res.Code ~= XCode.Success then
|
|
XUiManager.TipCode(res.Code)
|
|
return
|
|
end
|
|
|
|
if func then
|
|
func()
|
|
end
|
|
end)
|
|
end
|
|
|
|
-- 获取点赞排行榜
|
|
function XFubenUnionKillManager.GetPraiseRankData(func)
|
|
XNetwork.Call(UnionKillRpc.GetUnionPraiseRankData, {}, function(res)
|
|
if res.Code ~= XCode.Success then
|
|
XUiManager.TipCode(res.Code)
|
|
return
|
|
end
|
|
|
|
PraiseRankDatas:UpdateUnionRankData(res)
|
|
|
|
if func then
|
|
func()
|
|
end
|
|
end)
|
|
end
|
|
|
|
-- 获取歼敌排行榜
|
|
function XFubenUnionKillManager.GetUnionKillRankData(levelId, func)
|
|
XNetwork.Call(UnionKillRpc.GetUnionKillRankData, { LevelId = levelId }, function(res)
|
|
if res.Code ~= XCode.Success then
|
|
XUiManager.TipCode(res.Code)
|
|
return
|
|
end
|
|
|
|
if not KillRankDatas[levelId] then
|
|
KillRankDatas[levelId] = UnionRankData.New(res)
|
|
else
|
|
KillRankDatas[levelId]:UpdateUnionRankData(res)
|
|
end
|
|
|
|
if func then
|
|
func()
|
|
end
|
|
end)
|
|
end
|
|
|
|
-- 领取宝箱
|
|
function XFubenUnionKillManager.GetUnionBoxReward(id, func)
|
|
XNetwork.Call(UnionKillRpc.GetBoxReward, { Id = id }, function(res)
|
|
if res.Code ~= XCode.Success then
|
|
XUiManager.TipCode(res.Code)
|
|
return
|
|
end
|
|
|
|
XUiManager.OpenUiObtain(res.RewardGoodsList or {})
|
|
if func then
|
|
func()
|
|
end
|
|
end)
|
|
end
|
|
|
|
-- 活动登录信息通知
|
|
function XFubenUnionKillManager.SyncUnionKillLoginData(notifyData)
|
|
if not notifyData then return end
|
|
UnionKillData.Id = notifyData.Id
|
|
UnionKillData.CurSectionId = notifyData.CurSectionId
|
|
UnionKillData.WeatherId = notifyData.WeatherId
|
|
UnionKillData.SectionInfos = {}
|
|
for _, sectionInfo in pairs(notifyData.SectionInfos) do
|
|
UnionKillData.SectionInfos[sectionInfo.Id] = sectionInfo
|
|
end
|
|
|
|
local activityTemplate = XFubenUnionKillConfigs.GetUnionActivityById(UnionKillData.Id)
|
|
if activityTemplate and UnionKillData.CurSectionId == 0 then
|
|
local length = #activityTemplate.SectionId
|
|
UnionKillData.CurSectionId = activityTemplate.SectionId[length]
|
|
end
|
|
|
|
XFubenUnionKillManager.InitStageInfo()
|
|
end
|
|
|
|
-- 活动信息变化:切章节界面
|
|
function XFubenUnionKillManager.SyncUnionKillActivityData(notifyData)
|
|
if not notifyData then return end
|
|
UnionKillData.Id = notifyData.Id
|
|
UnionKillData.CurSectionId = notifyData.CurSectionId
|
|
UnionKillData.WeatherId = notifyData.WeatherId
|
|
|
|
local activityTemplate = XFubenUnionKillConfigs.GetUnionActivityById(UnionKillData.Id)
|
|
if activityTemplate and UnionKillData.CurSectionId == 0 then
|
|
local length = #activityTemplate.SectionId
|
|
UnionKillData.CurSectionId = activityTemplate.SectionId[length]
|
|
end
|
|
|
|
XEventManager.DispatchEvent(XEventId.EVENT_UNIONKILL_ACTIVITYINFO)
|
|
end
|
|
|
|
-- 通知战斗房间数据:进入关卡界面
|
|
function XFubenUnionKillManager.SyncUnionKillFightRoomData(notifyData)
|
|
if not notifyData then return end
|
|
UnionKillFightRoomData = {}
|
|
UnionKillFightRoomData.EndTime = notifyData.EndTime
|
|
UnionKillFightRoomData.BossHpLeft = notifyData.BossHpLeft
|
|
UnionKillFightRoomData.UnionKillPlayerInfos = {}
|
|
for index, playerInfo in pairs(notifyData.UnionKillPlayerInfos or {}) do
|
|
playerInfo.Position = index
|
|
UnionKillFightRoomData.UnionKillPlayerInfos[playerInfo.Id] = playerInfo
|
|
end
|
|
|
|
UnionKillFightRoomData.UnionKillStageInfos = {}
|
|
for _, stageInfo in pairs(notifyData.UnionKillStageInfos or {}) do
|
|
UnionKillFightRoomData.UnionKillStageInfos[stageInfo.Id] = stageInfo
|
|
end
|
|
UnionKillFightRoomData.ChallengeStage = {}
|
|
|
|
XDataCenter.FubenUnionKillRoomManager.SetPlayersFightState()
|
|
|
|
-- 新关卡,重置队伍
|
|
CacheTeam = {}
|
|
XEventManager.DispatchEvent(XEventId.EVENT_UNIONKILL_ROOMDATANOTIFY)
|
|
end
|
|
|
|
-- 通知boss血量
|
|
function XFubenUnionKillManager.SyncUnionKillBossHp(notifyData)
|
|
if not notifyData then return end
|
|
if not UnionKillFightRoomData then return end
|
|
|
|
if notifyData.BossHpLeft <= 0 then
|
|
UnionKillFightRoomData.FirstKillBoss = true
|
|
end
|
|
|
|
UnionKillFightRoomData.BossHpLeft = notifyData.BossHpLeft
|
|
|
|
XEventManager.DispatchEvent(XEventId.EVENT_UNIONKILL_BOSSHPCHANGE)
|
|
end
|
|
|
|
-- 通知玩家状态
|
|
function XFubenUnionKillManager.SyncUnionKillPlayerInfo(notifyData)
|
|
if not notifyData then return end
|
|
if not UnionKillFightRoomData then return end
|
|
|
|
local changePlayerInfo = notifyData.PlayerInfo
|
|
local oldPlayerInfo = UnionKillFightRoomData.UnionKillPlayerInfos[changePlayerInfo.Id]
|
|
local position = oldPlayerInfo.Position
|
|
changePlayerInfo.Position = position
|
|
UnionKillFightRoomData.UnionKillPlayerInfos[changePlayerInfo.Id] = changePlayerInfo
|
|
|
|
XEventManager.DispatchEvent(XEventId.EVENT_UNIONKILL_PLAYERINFOCHANGE)
|
|
end
|
|
|
|
-- 通知关卡信息
|
|
function XFubenUnionKillManager.SyncUnionKillStageInfo(notifyData)
|
|
if not notifyData then return end
|
|
if not UnionKillFightRoomData then return end
|
|
|
|
local changeStageInfo = notifyData.StageInfo
|
|
UnionKillFightRoomData.UnionKillStageInfos[changeStageInfo.Id] = changeStageInfo
|
|
|
|
XEventManager.DispatchEvent(XEventId.EVENT_UNIONKILL_STAGEINFOCHANGE)
|
|
end
|
|
|
|
-- 通知击杀boss
|
|
function XFubenUnionKillManager.SyncUnionKillBossCount(notifyData)
|
|
if not notifyData then return end
|
|
SectionKillBossCount[notifyData.Section] = notifyData.KillCount
|
|
|
|
XEventManager.DispatchEvent(XEventId.EVENT_UNIONKILL_BOSSCOUNTCHANGE)
|
|
end
|
|
|
|
-- tips通知
|
|
function XFubenUnionKillManager.SyncUnionKillTipsMessage(notifyData)
|
|
if not notifyData then return end
|
|
|
|
if not TipQueue["All"] then
|
|
TipQueue["All"] = {}
|
|
end
|
|
|
|
if notifyData.TipsType == XFubenUnionKillConfigs.TipsMessageType.Praise then
|
|
table.insert(TipQueue["All"], UnionTipMessage.New(notifyData, nil))
|
|
elseif notifyData.TipsType == XFubenUnionKillConfigs.TipsMessageType.FightBrrow then
|
|
local playerId = notifyData.PlayerId
|
|
|
|
if notifyData.ShareCharacterInfos then
|
|
for i = 1, #notifyData.ShareCharacterInfos do
|
|
local shareInfo = notifyData.ShareCharacterInfos[i]
|
|
local args = {}
|
|
args.TipsType = XFubenUnionKillConfigs.TipsMessageType.FightBrrow
|
|
args.PlayerId = notifyData.PlayerId
|
|
args.CharacterId = notifyData.CharacterId--这种类型用不到
|
|
args.ShareCharacterInfos = {}
|
|
args.ShareCharacterInfos.CharacterId = shareInfo.CharacterId
|
|
args.ShareCharacterInfos.PlayerId = shareInfo.PlayerId
|
|
|
|
XFubenUnionKillManager.Add2TipQueue(false, playerId, args)
|
|
end
|
|
end
|
|
|
|
local stageId = notifyData.StageId
|
|
XEventManager.DispatchEvent(XEventId.EVENT_UNIONKILL_FIGHTSTATUS, playerId, stageId)
|
|
|
|
elseif notifyData.TipsType == XFubenUnionKillConfigs.TipsMessageType.ResultBorrow then
|
|
table.insert(TipQueue["All"], UnionTipMessage.New(notifyData, nil))
|
|
elseif notifyData.TipsType == XFubenUnionKillConfigs.TipsMessageType.LeaveStage then
|
|
local playerId = notifyData.PlayerId
|
|
XEventManager.DispatchEvent(XEventId.EVENT_UNIONKILL_FIGHTSTATUS, playerId)
|
|
end
|
|
|
|
XEventManager.DispatchEvent(XEventId.EVENT_UNIONKILL_TIPSMESSAGE)
|
|
end
|
|
|
|
|
|
-- 是否是事件关卡
|
|
function XFubenUnionKillManager.IsEventStage(stageId)
|
|
return EventStageIds[stageId]
|
|
end
|
|
|
|
-- 是否是boss关卡
|
|
function XFubenUnionKillManager.IsBossStage(stageId)
|
|
return BossStageIds[stageId]
|
|
end
|
|
|
|
-- 是否是试炼关
|
|
function XFubenUnionKillManager.IsTrialStage(stageId)
|
|
return TrialStageIds[stageId]
|
|
end
|
|
|
|
-- 判断我是否通关某关卡
|
|
function XFubenUnionKillManager.IsMeFinish(stageInfo)
|
|
if not stageInfo then return false end
|
|
for _, playerId in pairs(stageInfo.PlayerIds or {}) do
|
|
if playerId == XPlayer.Id then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
-- 判读其他玩家是否通关某关卡
|
|
function XFubenUnionKillManager.IsOthersFinish(stageInfo)
|
|
if not stageInfo then return false end
|
|
for _, playerId in pairs(stageInfo.PlayerIds or {}) do
|
|
if playerId ~= XPlayer.Id then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
|
|
-- 通知玩家离开房间
|
|
function XFubenUnionKillManager.SyncUnionKillLeaveRoom(notifyData)
|
|
if not notifyData then return end
|
|
|
|
-- 离开队伍
|
|
if UnionKillFightRoomData then
|
|
UnionKillFightRoomData.LeaveReson = notifyData.Reason
|
|
end
|
|
|
|
XEventManager.DispatchEvent(XEventId.EVENT_UNIONKILL_LEAVEROOM, notifyData.Reason)
|
|
end
|
|
|
|
-- 提示玩家离开的理由
|
|
function XFubenUnionKillManager.TipsPlayerleaveReson(leaveReason)
|
|
if XFubenUnionKillConfigs.LeaveReason.LeaveTeam == leaveReason then
|
|
XUiManager.TipMsg(CS.XTextManager.GetText("UnionLeaveMiddle"))
|
|
elseif XFubenUnionKillConfigs.LeaveReason.LeaveFight == leaveReason then
|
|
XUiManager.TipMsg(CS.XTextManager.GetText("UnionLeaveMiddle"))
|
|
elseif XFubenUnionKillConfigs.LeaveReason.TimeOver == leaveReason then
|
|
XUiManager.TipMsg(CS.XTextManager.GetText("UnionLeaveTimeOver"))
|
|
elseif XFubenUnionKillConfigs.LeaveReason.KickOut == leaveReason then
|
|
XUiManager.TipMsg(CS.XTextManager.GetText("UnionLeaveKickOut"))
|
|
elseif XFubenUnionKillConfigs.LeaveReason.Offline == leaveReason then
|
|
XUiManager.TipMsg(CS.XTextManager.GetText("UnionLeaveOffline"))
|
|
else
|
|
XUiManager.TipMsg(CS.XTextManager.GetText("UnionLeaveMiddle"))
|
|
end
|
|
|
|
end
|
|
|
|
-- 同步章节信息
|
|
function XFubenUnionKillManager.SyncUnionKillSectionData(notifyData)
|
|
if not notifyData then return end
|
|
|
|
local id = notifyData.SectionInfo.Id
|
|
UnionKillData.SectionInfos[id] = notifyData.SectionInfo
|
|
|
|
end
|
|
|
|
-- 获取阵容缓存
|
|
function XFubenUnionKillManager.GetCacheTeam()
|
|
return CacheTeam
|
|
end
|
|
|
|
-- 更新阵容缓存,这里保存的东西结算的时候可用,玩家数据被清空也可以用
|
|
function XFubenUnionKillManager.UpdateCacheTeam(curTeam)
|
|
if not curTeam then return end
|
|
for i = 1, Max_Team_Count do
|
|
local curItem = curTeam[i]
|
|
if curItem then
|
|
if not CacheTeam[i] then
|
|
CacheTeam[i] = {}
|
|
end
|
|
CacheTeam[i].CharacterId = curItem.CharacterId
|
|
CacheTeam[i].IsShare = curItem.IsShare
|
|
CacheTeam[i].PlayerId = curItem.PlayerId
|
|
CacheTeam[i].IsTeamLeader = curItem.IsTeamLeader
|
|
else
|
|
CacheTeam[i] = nil
|
|
end
|
|
end
|
|
end
|
|
|
|
function XFubenUnionKillManager.GetAllTip()
|
|
return TipQueue
|
|
end
|
|
|
|
-- 获取特殊tipmessage
|
|
function XFubenUnionKillManager.GetTipQueueAll()
|
|
if not TipQueue["All"] then return nil end
|
|
if #TipQueue["All"] >= 1 then
|
|
local tip_msg = table.remove(TipQueue["All"], 1)
|
|
return tip_msg
|
|
end
|
|
return nil
|
|
end
|
|
|
|
-- 根据玩家id获取提示
|
|
function XFubenUnionKillManager.GetTipQueueById(playerId)
|
|
if not TipQueue[playerId] then return nil end
|
|
if #TipQueue[playerId] >= 1 then
|
|
local tip_msg = table.remove(TipQueue[playerId], 1)
|
|
return tip_msg
|
|
end
|
|
return nil
|
|
end
|
|
|
|
-- 更新tipmessage
|
|
function XFubenUnionKillManager.Add2TipQueue(isMsgChat, playerId, tipData)
|
|
if not TipQueue[playerId] then
|
|
TipQueue[playerId] = {}
|
|
end
|
|
if isMsgChat then
|
|
table.insert(TipQueue[playerId], UnionTipMessage.New(nil, tipData))
|
|
else
|
|
table.insert(TipQueue[playerId], UnionTipMessage.New(tipData, nil))
|
|
end
|
|
end
|
|
|
|
-- 获取房间数据:为空则没有房间
|
|
function XFubenUnionKillManager.GetCurRoomData()
|
|
return UnionKillFightRoomData
|
|
end
|
|
|
|
-- 当前房间内打过的关卡
|
|
function XFubenUnionKillManager.UpdateChallengeStageById(stageId)
|
|
if UnionKillFightRoomData and UnionKillFightRoomData.ChallengeStage then
|
|
UnionKillFightRoomData.ChallengeStage[stageId] = true
|
|
end
|
|
end
|
|
|
|
-- 获取boss击杀数
|
|
function XFubenUnionKillManager.GetBossKillCount(id)
|
|
return SectionKillBossCount[id] or 0
|
|
end
|
|
|
|
-- 试炼关是否可以使用共享角色
|
|
function XFubenUnionKillManager.GetTrialUseShare()
|
|
local unionKillInfo = XFubenUnionKillManager.GetUnionKillInfo()
|
|
if unionKillInfo == nil then return true end
|
|
|
|
if unionKillInfo.Id == nil or unionKillInfo.Id == 0 then return true end
|
|
|
|
local curSectionId = unionKillInfo.CurSectionId
|
|
local curSectionTemplate = XFubenUnionKillConfigs.GetUnionSectionById(curSectionId)
|
|
if not curSectionTemplate then return true end
|
|
|
|
return curSectionTemplate.TrialUseShare == 1
|
|
end
|
|
|
|
-- 是否为试炼关
|
|
function XFubenUnionKillManager.CurIsTrialBoss()
|
|
local roomFightData = XFubenUnionKillManager.GetCurRoomData()
|
|
if not roomFightData then return false end
|
|
return roomFightData.BossHpLeft <= 0
|
|
end
|
|
|
|
-- 获取章节信息
|
|
function XFubenUnionKillManager.GetSectionInfoById(id)
|
|
|
|
if not id then return nil end
|
|
return UnionKillData.SectionInfos[id]
|
|
end
|
|
|
|
-- 获取合众歼敌信息
|
|
function XFubenUnionKillManager.GetUnionKillInfo()
|
|
return UnionKillData
|
|
end
|
|
|
|
-- 获取点赞排名数据
|
|
function XFubenUnionKillManager.GetPraiseRankInfos()
|
|
return PraiseRankDatas
|
|
end
|
|
|
|
-- 获取歼敌排名数据
|
|
function XFubenUnionKillManager.GetKillRankInfosByLevel(level)
|
|
return KillRankDatas[level]
|
|
end
|
|
|
|
-- 获取活动入口
|
|
function XFubenUnionKillManager.GetUnionKillActivity()
|
|
local sections = {}
|
|
local activityId = UnionKillData and UnionKillData.Id
|
|
|
|
if activityId and activityId > 0 and XFubenUnionKillConfigs.UnionKillInActivity(activityId) then
|
|
local activityConfig = XFubenUnionKillConfigs.GetUnionActivityConfigById(activityId)
|
|
local section = {
|
|
Id = activityId,
|
|
Type = XDataCenter.FubenManager.ChapterType.UnionKill,
|
|
BannerBg = activityConfig.Icon
|
|
}
|
|
|
|
table.insert(sections, section)
|
|
end
|
|
|
|
return sections
|
|
end
|
|
|
|
local function GetActivityId()
|
|
local activityId = XFubenUnionKillConfigs.GetUnionDefaultActivityId()
|
|
|
|
local unionInfo = XDataCenter.FubenUnionKillManager.GetUnionKillInfo()
|
|
if unionInfo and unionInfo.Id and unionInfo.Id > 0 then
|
|
activityId = unionInfo.Id
|
|
end
|
|
|
|
return activityId
|
|
end
|
|
|
|
-- 获取活动入口时间
|
|
function XFubenUnionKillManager.GetUnionActivityTimes()
|
|
local activityId = GetActivityId()
|
|
return XFubenUnionKillConfigs.GetUnionActivityTimes(activityId)
|
|
end
|
|
|
|
-- 保存本地数据
|
|
function XFubenUnionKillManager.SaveUnionKillStringPrefs(key, value)
|
|
if XPlayer.Id then
|
|
key = string.format("%s_%s", key, tostring(XPlayer.Id))
|
|
CS.UnityEngine.PlayerPrefs.SetString(key, value)
|
|
CS.UnityEngine.PlayerPrefs.Save()
|
|
end
|
|
end
|
|
|
|
function XFubenUnionKillManager.GetUnionKillStringPrefs(key, defaultValue)
|
|
if XPlayer.Id then
|
|
key = string.format("%s_%s", key, tostring(XPlayer.Id))
|
|
if CS.UnityEngine.PlayerPrefs.HasKey(key) then
|
|
local unionPref = CS.UnityEngine.PlayerPrefs.GetString(key)
|
|
return (unionPref == nil or unionPref == "") and defaultValue or unionPref
|
|
end
|
|
end
|
|
return defaultValue
|
|
end
|
|
|
|
function XFubenUnionKillManager.Init()
|
|
end
|
|
|
|
XFubenUnionKillManager.Init()
|
|
return XFubenUnionKillManager
|
|
end
|
|
|
|
-- 同步登陆数据
|
|
XRpc.NotifyUnionKillLoginData = function(notifyData)
|
|
XDataCenter.FubenUnionKillManager.SyncUnionKillLoginData(notifyData)
|
|
end
|
|
|
|
-- 同步活动数据
|
|
XRpc.NotifyUnionKillActivityData = function(notifyData)
|
|
XDataCenter.FubenUnionKillManager.SyncUnionKillActivityData(notifyData)
|
|
end
|
|
|
|
-- 同步房间内数据
|
|
XRpc.NotifyUnionKillFightRoomData = function(notifyData)
|
|
XDataCenter.FubenUnionKillManager.SyncUnionKillFightRoomData(notifyData)
|
|
end
|
|
|
|
-- 同步boss血量
|
|
XRpc.NotifyUnionKillBossHp = function(notifyData)
|
|
XDataCenter.FubenUnionKillManager.SyncUnionKillBossHp(notifyData)
|
|
end
|
|
|
|
-- 通知玩家状态
|
|
XRpc.NotifyUnionKillPlayerInfo = function(notifyData)
|
|
XDataCenter.FubenUnionKillManager.SyncUnionKillPlayerInfo(notifyData)
|
|
end
|
|
|
|
-- 通知关卡信息
|
|
XRpc.NotifyUnionKillStageInfo = function(notifyData)
|
|
|
|
XDataCenter.FubenUnionKillManager.SyncUnionKillStageInfo(notifyData)
|
|
end
|
|
|
|
-- 通知击杀boss
|
|
XRpc.NotifyUnionKillBossCount = function(notifyData)
|
|
XDataCenter.FubenUnionKillManager.SyncUnionKillBossCount(notifyData)
|
|
end
|
|
|
|
-- tips通知
|
|
XRpc.NotifyUnionKillTipsMessage = function(notifyData)
|
|
XDataCenter.FubenUnionKillManager.SyncUnionKillTipsMessage(notifyData)
|
|
end
|
|
|
|
-- 通知玩家离开战斗房间
|
|
XRpc.NotifyUnionKillLeaveRoom = function(notifyData)
|
|
XDataCenter.FubenUnionKillManager.SyncUnionKillLeaveRoom(notifyData)
|
|
end
|
|
|
|
-- 通知章节信息
|
|
XRpc.NotifyUnionKillSectionData = function(notifyData)
|
|
|
|
XDataCenter.FubenUnionKillManager.SyncUnionKillSectionData(notifyData)
|
|
end |