miduo_client/Assets/ManagedResources/~Lua/Modules/JumpServer/JumpServerManager.lua

347 lines
14 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

JumpServerManager = {}
local this = JumpServerManager
--天梯
local mServerArenaSetting = ConfigManager.GetConfig(ConfigName.MServerArenaSetting)
local mServerArenaReward = ConfigManager.GetConfig(ConfigName.MServerArenaReward)
local MServerLodeSetting = ConfigManager.GetConfig(ConfigName.MServerLodeSetting)
local stage = 0 --1 未开始 2 战斗阶段 3 膜拜阶段
local endTime = 0 --阶段结束时间戳
local arenaInfo--
local myRank = -1
local oldMyRank = -1
local enterable = -1-- -1不可参加 是否可以参加 竞技场100名以内参加
local isGroup = 0--是否被分组 是1 否0
local isStart = 0
this.shopGoodId = 10035--挑战价格
function this.Initialize()
end
---------------------------------------------
--跨服天梯数据
---------------------------------------------
------登录初始化
function this.LoginGetWorldArenaInfoRequest(fun)
-- if ActTimeCtrlManager.IsQualifiled(FUNCTION_OPEN_TYPE.JumpServer) then
NetManager.GetWorldArenaInfoRequest(function(_msg)
this.InithightLadderData(_msg)
if fun then
fun()
end
end)
-- else
-- if fun then
-- fun()
-- end
-- end
end
---初始化
function this.GetWorldArenaInfoRequest(fun)
NetManager.GetWorldArenaInfoRequest(function(_msg)
if _msg then
this.InithightLadderData(_msg)
end
Game.GlobalEvent:DispatchEvent(GameEvent.JumpServerHeightLadder.UpdateHeightLadderPanel)
if fun then
fun()
end
--检测跨服天梯
JumpServerManager.CheckJumpServerhightLadderMainCityRedPoint()
end)
end
function this.InithightLadderData(_msg)
-- LogPink("_msg.arenaInfo.arenaEnemys "..#_msg.arenaInfo.arenaEnemys)
for i = 1, #_msg.arenaInfo.arenaEnemys do
-- LogPink("_msg.arenaInfo.arenaEnemys[i].hadProud "..tostring(_msg.arenaInfo.arenaEnemys[i].hadProud) )
-- LogPink("_msg.arenaInfo.arenaEnemys[i].worshipTime ".._msg.arenaInfo.arenaEnemys[i].worshipTime)
-- LogYellow("_msg.arenaInfo.arenaEnemys[i].personInfo.practiceLevel ".._msg.arenaInfo.arenaEnemys[i].personInfo.practiceLevel)
_msg.arenaInfo.arenaEnemys[i].personInfo.name = PracticeManager.SetNameColor(_msg.arenaInfo.arenaEnemys[i].personInfo.name,_msg.arenaInfo.arenaEnemys[i].personInfo.practiceLevel)
end
-- LogPink("_msg.stage ".._msg.stage)
-- LogPink("_msg.endTime ".._msg.endTime)
-- LogPink("_msg.arenaInfo.score ".._msg.arenaInfo.score)
-- LogPink("_msg.enterable ".._msg.enterable)
-- LogPink("_msg.isGroup ".._msg.isGroup)
-- LogPink("_msg.isStart ".._msg.isStart)
arenaInfo = _msg.arenaInfo
stage = _msg.stage
endTime = _msg.endTime
myRank = _msg.arenaInfo.score
LogError("myrank=="..myRank)
enterable = _msg.enterable--是否可以参加 竞技场100名以内参加
isGroup = _msg.isGroup--是否被分组 是1 否0
isStart = _msg.isStart--是否在3周内在为0 不在为1 开服三周后功能开始
LogError(string.format("获取到了当前为开服第%s周",tostring(isStart)))
end
--推送更新
function this.IndicationHightLadderData(_msg)
for i = 1, #_msg.arenaInfo.arenaEnemys do
_msg.arenaInfo.arenaEnemys[i].personInfo.name = PracticeManager.SetNameColor(_msg.arenaInfo.arenaEnemys[i].personInfo.name,_msg.arenaInfo.arenaEnemys[i].personInfo.practiceLevel)
end
arenaInfo = _msg.arenaInfo
stage = _msg.stage
endTime = _msg.endTime
myRank = _msg.arenaInfo.score
LogError("myrank=="..myRank)
-- LogPink("_msg.arenaInfo.arenaEnemys "..#_msg.arenaInfo.arenaEnemys)
-- LogPink("_msg.stage ".._msg.stage)
-- LogPink("_msg.endTime ".._msg.endTime)
-- LogPink("_msg.arenaInfo.score ".._msg.arenaInfo.score)
Game.GlobalEvent:DispatchEvent(GameEvent.JumpServerHeightLadder.UpdateHeightLadderPanel)
end
--战斗更新
function this.BattleHightLadderData(_msg)
if _msg.arenaInfo and _msg.arenaInfo.arenaEnemys and #_msg.arenaInfo.arenaEnemys > 0 then
for i = 1, #_msg.arenaInfo.arenaEnemys do
_msg.arenaInfo.arenaEnemys[i].personInfo.name = PracticeManager.SetNameColor(_msg.arenaInfo.arenaEnemys[i].personInfo.name,_msg.arenaInfo.arenaEnemys[i].personInfo.practiceLevel)
end
arenaInfo = _msg.arenaInfo
myRank =_msg.arenaInfo.score
LogError("myrank=="..myRank)
end
-- LogPink("_msg.arenaInfo.arenaEnemys "..#_msg.arenaInfo.arenaEnemys)
-- LogPink("_msg.arenaInfo.score ".._msg.arenaInfo.score)
end
--获得天梯阶段
function this.GetHightLadderDataArenaInfo()
return arenaInfo
end
function this.GetHightLadderDatastage()
return stage
end
function this.GetHightLadderDataEndTime()
return endTime
end
function this.GetHightLadderDataMyRank()
return myRank
end
function this.GetHightLadderDataOldMyRank()
return oldMyRank
end
function this.GetHightLadderDataEnterable()
return enterable ~= -1
end
function this.GetHightLadderDataIsGroup()
return isGroup ~= 0
end
function this.GetHightLadderDataIsStart()
return PlayerManager.startWeek >= mServerArenaSetting[1].OpenWeek
end
function this.GetQiJieIsStart()
return PlayerManager.startWeek >= mServerArenaSetting[3].OpenWeek
end
function this.GetYuxuIsStart()
return PlayerManager.startWeek >= mServerArenaSetting[2].OpenWeek
end
function this.GetLingMaiIsStart()
return PlayerManager.startWeek >= MServerLodeSetting[1].OpenWeek
end
-- 获取剩余挑战次数 特权
function this.GetCanBattleCount()
return PrivilegeManager.GetPrivilegeRemainValue(PRIVILEGE_TYPE.JUMPSERVER_GIGHTLADDER_MIANFEINUM)
end
-- 获取剩余挑战购买次数 特权
function this.GetCanBuyBattleCount()
return PrivilegeManager.GetPrivilegeRemainValue(PRIVILEGE_TYPE.JUMPSERVER_GIGHTLADDER_BUYNUM)
end
--天梯开始战斗
this.curBattleDrop = {}
function this.StarFightHightLadder(personInfo,skipFight,callBack)
NetManager.GetWorldArenaChallengeRequest(FormationTypeDef.JUMPSERVER_HIGHTLADDER,personInfo,skipFight,function (msg)
oldMyRank = myRank
-- if msg and msg.drop and msg.drop.itemlist and #msg.drop.itemlist > 0 then
-- LogPink(" #msg.drop.itemlist ".. #msg.drop.itemlist)
-- else
-- LogPink(" #msg.drop.itemlist nil ")
-- end
this.curBattleDrop = msg.drop
-- LogGreen("skipFight "..skipFight.." msg.err "..msg.err)
if skipFight == 0 then--挑战
if msg.err== -2 then
-- this.BattleHightLadderData(msg)--后端没给数据 前端自己请求
JumpServerManager.GetWorldArenaInfoRequest()
PopupTipPanel.ShowTip("无法挑战,目标玩家排名出现变化,已重新匹配对手!")
if callBack then
callBack()
end
return
end
if msg.err== -3 then
-- this.BattleHightLadderData(msg)--后端没给数据 前端自己请求
JumpServerManager.GetWorldArenaInfoRequest()
PopupTipPanel.ShowTip("无法挑战,玩家排名出现变化,已重新匹配对手!")
if callBack then
callBack()
end
return
end
this.BattleHightLadderData(msg)
local fightData = BattleManager.GetBattleServerData(msg,1)
UIManager.OpenPanel(UIName.BattlePanel, fightData, BATTLE_TYPE.JumpServerhightLadder, function()
-- UIManager.OpenPanel(UIName.RewardItemPopup, msg.drop, 1,function()
if callBack then
callBack(msg)
end
-- end)
end
):SetResult(msg.fightResult)
else
this.BattleHightLadderData(msg)
local fightData = BattleManager.GetBattleServerData(msg)
UIManager.OpenPanel(UIName.RewardItemPopup, msg.drop, 1,function()
if callBack then
callBack(msg)
end
end)
end
end)
end
function this.GetWorldArenaProudRequest(personInfo,callBack)
NetManager.GetWorldArenaProudRequest(personInfo,function(msg)
LogGreen("msg.err "..msg.err)
LogGreen("msg.worshipTime "..msg.worshipTime)
if msg.err== -2 then
this.BattleHightLadderData(msg)
PopupTipPanel.ShowTip("无法挑战,目标玩家排名出现变化,已重新匹配对手!")
return
end
if msg.err== -3 then
this.BattleHightLadderData(msg)
PopupTipPanel.ShowTip("无法挑战,玩家排名出现变化,已重新匹配对手!")
return
end
local itemId = 0
local itemNum = 0
if msg.drop.itemlist ~= nil and #msg.drop.itemlist > 0 then
for i = 1, #msg.drop.itemlist do
if msg.drop.itemlist[i].itemNum > 0 then
itemId = msg.drop.itemlist[i].itemId--
itemNum = msg.drop.itemlist[i].itemNum
end
end
end
PopupTipPanel.ShowTip(string.format("膜拜成功,获得%sX%s",ConfigManager.GetConfigData(ConfigName.ItemConfig,itemId).Name, itemNum))
-- LogPink("msg.worshipTime "..msg.worshipTime)
for i = 1, #arenaInfo.arenaEnemys do
if arenaInfo.arenaEnemys[i] then
local curData = arenaInfo.arenaEnemys[i]
LogYellow("personInfo.uid "..personInfo.uid.." curData.personInfo.uid "..curData.personInfo.uid)
if personInfo.uid == curData.personInfo.uid then
LogYellow("curData.worshipTime "..curData.worshipTime)
if curData.personInfo and curData.worshipTime then
LogPink("msg.worshipTime "..msg.worshipTime)
curData.worshipTime = msg.worshipTime
curData.hadProud = true
end
end
end
end
if callBack then
callBack(msg)
end
end)
end
function this.GetWorldArenaRecordInfoRequest(callBack)
NetManager.GetWorldArenaRecordInfoRequest(function(msg)
if callBack then
callBack(msg)
end
end)
end
function this.CheckJumpServerhightLadderMainCityRedPoint()
CheckRedPointStatus(RedPointType.JumpServer_HightLadder_Worship)
CheckRedPointStatus(RedPointType.JumpServer_HightLadder_HaveMianFeiPanel)
-- 检测七界试炼红点
CheckRedPointStatus(RedPointType.QiJieShiLian)
end
--剩余免费挑战次数红点
function this.JumpServerHightLadderMianFeiNumRedPoint()
local isOpen = ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.JumpServer_HightLadder)
if not isOpen then
return false
end
local conFigWorldLevel = ConfigManager.GetConfigData(ConfigName.MServerArenaSetting,1).WorldLevel
if PlayerManager.worldLeve < conFigWorldLevel then
return false
end
if not this.GetHightLadderDataEnterable() then
-- LogPink("跨服天梯剩余免费挑战次数红点false")
return false
end
if not this.GetHightLadderDataIsGroup() then
-- LogPink("跨服天梯剩余免费挑战次数红点false")
return false
end
if not this.GetHightLadderDataIsStart() then
-- LogPink("跨服天梯剩余免费挑战次数红点false")
return false
end
if stage == 2 then
if this.GetCanBattleCount() > 0 then
-- LogPink("跨服天梯剩余免费挑战次数红点true")
return true
end
end
-- LogPink("跨服天梯剩余免费挑战次数红点false")
return false
end
--跨服天梯可以膜拜红点
function this.JumpServerHightLadderWorshipRedPoint()
local isOpen = ActTimeCtrlManager.SingleFuncState(FUNCTION_OPEN_TYPE.JumpServer_HightLadder)
if not isOpen then
return false
end
local conFigWorldLevel = ConfigManager.GetConfigData(ConfigName.MServerArenaSetting,1).WorldLevel
if PlayerManager.worldLeve < conFigWorldLevel then
return false
end
if not this.GetHightLadderDataIsGroup() then
-- LogPink("跨服天梯剩余免费挑战次数红点false")
return false
end
if not this.GetHightLadderDataIsStart() then
-- LogPink("跨服天梯剩余免费挑战次数红点false")
return false
end
if stage == 3 then
local datas = this.GetHightLadderDataArenaInfo()
for i = 1, #datas.arenaEnemys do
if datas.arenaEnemys[i] and not datas.arenaEnemys[i].hadProud then
-- LogPink("跨服天梯可以膜拜红点true")
return true
end
end
end
-- LogPink("跨服天梯可以膜拜红点false")
return false
end
function this.ZeroRefreshPanel()
-- LogPink("跨天 跨服天梯膜拜状态刷新")
Timer.New(function()
this.GetWorldArenaInfoRequest(function ()
--一分钟间隔阶段 踢回主城
-- if UIManager.IsOpen(UIName.JumpServerHightLadderPanel) or UIManager.IsOpen(UIName.JumpServerPanel) then
-- if false then
-- UIManager.OpenPanel(UIName.MainPanel);
-- end
-- end
end)
end, 3):Start()
end
local curPersonInfo = {}
function this.SetCurPersonInfo(_curPersonInfo)
curPersonInfo = _curPersonInfo
end
function this.GetCurPersonInfo(_curPersonInfo)
return curPersonInfo
end
---------------------------------------------
--跨服天梯结束
---------------------------------------------
----
---------------------------------------------跨服界面逻辑----------------------------
return this