c1_lua/lua/app/module/arena/arena_manager.lua
xiekaidong 626c9b94f1 提交
2023-06-28 21:25:54 +08:00

137 lines
4.0 KiB
Lua

local ArenaManager = class("ArenaManager", BaseModule)
-- 赛季改变
function ArenaManager:onSeasonChanged()
if not self.isResetting then
return
end
DataManager.ArenaData:onSeasonChanged()
self:reqArenaInfo()
end
-- 匹配
function ArenaManager:reqMatch()
self:sendMessage(ProtoMsgType.FromMsgEnum.MatchReq, {}, {}, self.rspMatch, nil)
end
function ArenaManager:rspMatch(result)
if result.err_code == GConst.ERROR_STR.SUCCESS then
DataManager.ArenaData:onMatchInfoReceived(result.match_info)
end
end
-- 挑战
function ArenaManager:reqChallenge()
self:sendMessage(ProtoMsgType.FromMsgEnum.PVPChallengeStartReq, {}, {}, self.rspChallenge, nil)
end
function ArenaManager:rspChallenge(result)
if result.err_code == GConst.ERROR_STR.SUCCESS then
--- 临时代码
local params = {
atkFormation = {},
defFormation = {}
}
local formation = DataManager.FormationData:getStageFormation()
for elementType, heroId in pairs(formation) do
local heroEntity = DataManager.HeroData:getHeroById(heroId)
if heroEntity then
params.atkFormation[elementType] = heroEntity
params.defFormation[elementType] = heroEntity
end
end
ModuleManager.BattleManager:playBattle(GConst.BattleConst.BATTLE_TYPE.ARENA, params)
end
end
-- 结算
function ArenaManager:reqSettlement()
local parmas = {
win = nil,
heroes = nil,
}
self:sendMessage(ProtoMsgType.FromMsgEnum.PVPChallengeSettlementReq, parmas, {}, self.rspSettlement, nil)
end
function ArenaManager:rspSettlement(result)
if result.err_code == GConst.ERROR_STR.SUCCESS then
DataManager.ArenaData:onBattleResultReceived(result.settlement)
-- 总共赢的次数result.total_win_count
-- 总共输的次数result.total_lose_count
-- 展示结算界面
end
end
-- 战报
function ArenaManager:reqRecord()
self:sendMessage(ProtoMsgType.FromMsgEnum.PVPRecordHistoryReq, {}, {}, self.rspRecord, nil)
end
function ArenaManager:rspRecord(result)
if result.err_code == GConst.ERROR_STR.SUCCESS then
DataManager.ArenaData:onRecentBattleReceived(result.history)
end
end
-- 排行榜
function ArenaManager:reqRank()
self:sendMessage(ProtoMsgType.FromMsgEnum.PVPRankReq, {}, {}, self.rspRank, nil)
end
function ArenaManager:rspRank(result)
if result.err_code == GConst.ERROR_STR.SUCCESS then
DataManager.ArenaData:onRankDataReceived(result.rank, result.top100.info)
end
end
-- 排行榜玩家编队信息
function ArenaManager:reqRankHeroes(id)
self:sendMessage(ProtoMsgType.FromMsgEnum.PVPRankHeroesReq, {rid = id}, {}, self.rspRankHeroes, nil)
end
function ArenaManager:rspRankHeroes(result)
if result.err_code == GConst.ERROR_STR.SUCCESS then
DataManager.ArenaData:onRankFormationReceived(result.reqData.rid, result.array_heroes)
end
end
-- 领取上赛季奖励
function ArenaManager:reqLastSeasonReward()
self:sendMessage(ProtoMsgType.FromMsgEnum.PVPSeasonRewardReq, {}, {}, self.rspLastSeasonReward, nil)
end
function ArenaManager:rspLastSeasonReward(result)
if result.err_code == GConst.ERROR_STR.SUCCESS then
DataManager.ArenaData:onLastSeasonRewardReceived()
GFunc.showRewardBox(result.rewards)
end
end
-- 更新赛季信息
function ArenaManager:reqArenaInfo()
self.isResetting = true
self:sendMessage(ProtoMsgType.FromMsgEnum.PVPInfoReq, {}, {}, self.rspArenaInfo, nil)
end
function ArenaManager:rspArenaInfo(result)
if result.err_code == GConst.ERROR_STR.SUCCESS then
self.isResetting = false
DataManager.ArenaData:init(result.arena_info)
end
end
-- 结束匹配cd
function ArenaManager:reqOverCD(isAd)
self:sendMessage(ProtoMsgType.FromMsgEnum.PVPOverCDReq, {ad = isAd}, {}, self.rspOverCD, nil)
end
function ArenaManager:rspOverCD(result)
if result.err_code == GConst.ERROR_STR.SUCCESS then
DataManager.ArenaData:onOverFreeRematchCD(result.reqData.ad)
end
end
return ArenaManager