Files

795 lines
27 KiB
JavaScript
Raw Permalink Normal View History

2026-05-23 22:10:14 +08:00
// //-----------------------------------------------------------------
// @author: xxx@syg.com(必填, 创建模块的人员)
// @description:
// 这里填写详细说明,主要填写该模块的功能简要
// <br/>Create: 2019-03-06 11:18:06
// --------------------------------------------------------------------
const BridgeController = require( "bridge.controller" );
var ArenaConst = require( "arena_const" );
var ArenaEvent = require( "arena_event" );
var MainuiEvent = require( "mainui_event" );
const BattleController = require( "battle_controller" );
var ArenaController = cc.Class( {
extends: BridgeController,
ctor: function() {
},
// 初始化配置数据
initConfig: function() {
var ArenaModel = require( "arena_model" );
var ChampionModel = require( "arena_champion_model" );
this.model = new ArenaModel();
this.model.initConfig();
this.champion_model = new ChampionModel();
this.champion_model.initConfig();
this.cache_list = []; //缓存登录前打开的界面
},
// 返回当前的model
getModel: function() {
return this.model;
},
getChamPionModel: function() {
return this.champion_model;
},
// 注册监听事件
registerEvents: function() {
if( !this.login_event_success ) {
this.login_event_success = gcore.GlobalEvent.bind( EventId.EVT_ROLE_CREATE_SUCCESS, ( function() {
gcore.GlobalEvent.unbind( this.login_event_success );
// this.role_vo = RoleController.getInstance().getRoleVo();
// if (this.role_vo) {
// if (!this.update_self_event) {
// this.update_self_event = this.role_vo.bind(EventId.UPDATE_ROLE_ATTRIBUTE, function (key, value) {
// if (key == "lev")
// this.requestInitProtocal();
// }.bind(this))
// }
// }
} ).bind( this ) )
}
// if (!this.battle_drama_event) {
// this.battle_drama_event = gcore.GlobalEvent.bind(DramaEvent.BattleDrama_Update_Max_Id, function(max_id){
// this.requestInitProtocal();
// }.bind(this));
// }
if( !this.re_link_game_event ) {
this.re_link_game_event = gcore.GlobalEvent.bind( EventId.EVT_RE_LINK_GAME, function() {
this.openArenaLoopMathWindow( false );
}.bind( this ) )
}
if( this.loading_enter_scene == null ) {
this.loading_enter_scene = gcore.GlobalEvent.bind( MainuiEvent.LOADING_ENTER_SCENE, ( function() {
this.showCachePanel();
} ).bind( this ) )
}
},
requestBaseQuestData: function( _cb ) {
this.sender20208(); // 挑战次数奖励信息
this.SendProtocal( 20200, {} ); // 竞技场个人信息
this.SendProtocal( 20250, {} ); // 冠军赛状态信息
this.SendProtocal( 20223, {}, _cb ); // 防守信息
},
reqBaseFromServer: function( _cb ) {
let cfgs = [
"arena_data",
"arena_cluster_champion_data",
];
this.loadConfigs( cfgs, ( _ret, _data ) => {
this.requestBaseQuestData( _cb );
} )
},
// 注册协议接受事件
registerProtocals: function() {
this.RegisterProtocal( 20200, this.handle20200.bind( this ) );
this.RegisterProtocal( 20201, this.handle20201.bind( this ) );
this.RegisterProtocal( 20202, this.handle20202.bind( this ) );
this.RegisterProtocal( 20203, this.handle20203.bind( this ) );
this.RegisterProtocal( 20206, this.handle20206.bind( this ) );
this.RegisterProtocal( 20207, this.handle20207.bind( this ) );
this.RegisterProtocal( 20208, this.handle20208.bind( this ) ); // 宝箱模式
this.RegisterProtocal( 20209, this.handle20209.bind( this ) ); // 竞技场领取挑战次数奖励
this.RegisterProtocal( 20210, this.handle20210.bind( this ) );
this.RegisterProtocal( 20220, this.handle20220.bind( this ) );
this.RegisterProtocal( 20221, this.handle20221.bind( this ) );
this.RegisterProtocal( 20222, this.handle20222.bind( this ) );
this.RegisterProtocal( 20223, this.handle20223.bind( this ) );
// 冠军赛
this.RegisterProtocal( 20250, this.handle20250.bind( this ) ); // 冠军赛赛程状态数据
this.RegisterProtocal( 20251, this.handle20251.bind( this ) ); // 个人排名以及可下注信息
this.RegisterProtocal( 20252, this.handle20252.bind( this ) ); // 我的比赛信息
this.RegisterProtocal( 20253, this.handle20253.bind( this ) ); // 竞猜比赛信息
this.RegisterProtocal( 20254, this.handle20254.bind( this ) ); // 押注返货
this.RegisterProtocal( 20255, this.handle20255.bind( this ) ); // 我的竞猜列表
this.RegisterProtocal( 20256, this.handle20256.bind( this ) ); // 结算展示
this.RegisterProtocal( 20257, this.handle20257.bind( this ) ); // 竞猜实时更新
this.RegisterProtocal( 20258, this.handle20258.bind( this ) ); // 我的战斗日志
this.RegisterProtocal( 20260, this.handle20260.bind( this ) ); // 32强数据
this.RegisterProtocal( 20261, this.handle20261.bind( this ) ); // 4强数据
this.RegisterProtocal( 20262, this.handle20262.bind( this ) ); // 32强或者4强赛竞猜位置信息
this.RegisterProtocal( 20263, this.handle20263.bind( this ) ); // 32强或者4强赛指定位置的信息
this.RegisterProtocal( 20280, this.handle20280.bind( this ) ); // 冠军赛前3名信息
this.RegisterProtocal( 20281, this.handle20281.bind( this ) ); // 冠军赛排行榜信息
this.RegisterProtocal( 20282, this.handle20282.bind( this ) ); // 赛季结算前3
this.RegisterProtocal( 20204, this.handle20204.bind( this ) ); // 查看剧情人数据
},
handle20200: function( data ) {
this.model.updateMyLoopData( data );
},
sender20201: function() { // 请求挑战队列
this.SendProtocal( 20201, {} );
},
handle20201: function( data ) { // 挑战队列更新
this.model.updateLoopChallengeList( data );
},
handle20202: function( data ) {
if( this.loop_challenge_role_rid != data.rid && this.loop_challenge_role_srv_id != data.srv_id ) return;
this.openCheckLoopChallengeRole( true, data )
},
openCheckLoopChallengeRole( status, data ) {
var self = this
if( status == false ) {
if( self.loop_challenge_check_window != null ) {
self.loop_challenge_check_window.close()
self.loop_challenge_check_window = null
}
} else {
if( data == null ) return;
if( self.loop_challenge_check_window == null ) {
let ArenaLoopChallengeCheckWindow = require( "arena_loop_challenge_check_window" )
self.loop_challenge_check_window = new ArenaLoopChallengeCheckWindow()
}
self.loop_challenge_check_window.open( data )
}
},
sender20203: function( rid, srv_id ) {
// if (!rid || !srv_id) return;
let skip = this.model.getSkip();
var protocal = {};
protocal.rid = rid;
protocal.srv_id = srv_id;
protocal.is_auto = skip;
this.SendProtocal( 20203, protocal );
},
handle20203: function( data ) {
if( nx.dt.strNEmpty( data.msg ) ){
nx.tbox( data.msg );
}
},
sender20206: function() { // 请求刷新挑战队列
this.SendProtocal( 20206, {} );
},
handle20206: function( data ) { // 请求刷新结果
nx.tbox( data.msg )
},
sender20207: function( num ) { // 购买挑战券
var proto = {};
proto.num = num;
this.SendProtocal( 20207, proto )
},
handle20207: function( data ) {
// nx.tbox(data.msg)
if( data.code == 1 ) {
gcore.GlobalEvent.fire( ArenaEvent.UpdateArena_Number );
}
this.openArenaLoopChallengeBuy( false );
},
sender20208: function( _cb ) {
this.SendProtocal( 20208, {}, _cb );
},
handle20208: function( data ) {
if( data )
this.model.updateChallengeTimesAwards( data );
},
sender20209: function( num ) {
var protocal = {};
protocal.num = num;
this.SendProtocal( 20209, protocal );
},
handle20209: function( data ) {
},
// 战斗计算,收到结算的,就同时请求一下个人信息吧,服务器要求
handle20210: function( data ) {
nx.bridge.vset( "ResultInfo", data );
},
newResultWin: function() {
// if(!this.new_result_data)return;
// var BattleConst = require("battle_const");
// var BattleController = require("battle_controller");
// BattleController.getInstance().openFinishView(true, BattleConst.Fight_Type.Arena, this.new_result_data);
// this.SendProtocal(20200, {});
// this.new_result_data = null;
},
sender20220: function() {
this.SendProtocal( 20220, {} )
},
handle20220: function( data ) { // 循环赛前三
if( data && data.rank_list ) {
gcore.GlobalEvent.fire( ArenaEvent.UpdateLoopChallengeStatueList, data.rank_list );
}
},
sender20221: function() {
this.SendProtocal( 20221, {} );
},
handle20221: function( data ) {
if( data ) {
gcore.GlobalEvent.fire( ArenaEvent.UpdateLoopChallengeRank, data );
}
},
sender20222: function( data ) {
this.SendProtocal( 20222, {} );
},
handle20222: function( data ) {
if( data )
gcore.GlobalEvent.fire( ArenaEvent.UpdateMylogListEvent, data.log_list );
},
handle20223: function( data ) {
this.model.updateArenaLoopLogStatus( data.flag );
},
/********************冠军赛相关********************/
// --==============================--
// --desc:打開冠軍賽的主界面
// --time:2018-07-31 07:20:58
// --@status:
// --@index:
// --@return
// --==============================--
openArenaChampionMatchWindow( status, index, view_type ) {
let self = this;
if( !status ) {
if( self.champion_window != null ) {
self.champion_window.close()
self.champion_window = null
}
} else {
if( self.champion_window == null ) {
var ArenaChampionMatchWindow = require( "arena_champion_match_window" );
self.champion_window = new ArenaChampionMatchWindow( view_type )
}
self.champion_window.open( index )
}
},
checkChampionWndIsOpen() {
if( this.champion_window ) {
return true
}
return false
},
handle20250: function( data ) { // 冠军赛赛程状态
this.champion_model.updateChampionBaseInfo( data );
this.sender20251();
if( data.step_status === ArenaConst.champion_step_status.opened ) {
// var ActivityController = require( "activity_controller" ).getInstance();
// var ActivityConst = require( "activity_const" );
if( !this.champion_window ) {
// if (data.round_status == ArenaConst.champion_round_status.guess) {
// ActivityController.openSignView(true, ActivityConst.ActivitySignType.arena_champion_guess, {timer: true});
// } else {
// if (!this.had_show_notice) {
// ActivityController.openSignView(true, ActivityConst.ActivitySignType.arena_champion, {timer: true})
// this.had_show_notice = true;
// }
// }
}
} else {
}
},
sender20251: function( data ) {
this.SendProtocal( 20251, {} );
},
handle20251: function( data ) { // 个人排名以及可
this.champion_model.setRoleInfo( data );
},
sender20252: function() {
this.SendProtocal( 20252, {} );
},
handle20252: function( data ) { // 我的比赛信息
gcore.GlobalEvent.fire( ArenaEvent.UpdateMyMatchInfoEvent, data );
},
sender20253: function() {
this.SendProtocal( 20253, {} );
},
sender20258: function() {
this.SendProtocal( 20258, {} );
},
handle20253: function( data ) { // 竞猜比赛信息
gcore.GlobalEvent.fire( ArenaEvent.UpdateGuessMatchInfoEvent, data );
},
// 请求押注某一方
sender20254: function( bet_type, bet_val ) {
var proto = {};
proto.bet_type = bet_type;
proto.bet_val = bet_val;
this.SendProtocal( 20254, proto );
},
handle20254: function( data ) { // 押注返货
nx.tbox( data.msg )
if( data.code == 1 ) {
var role_info = this.champion_model.getRoleInfo()
role_info.can_bet = data.can_bet
gcore.GlobalEvent.fire( ArenaEvent.UpdateRoleInfoBetEvent, data.can_bet, data.bet_type )
this.openArenaChampionGuessWindow( false );
}
},
sender20255: function() {
this.SendProtocal( 20255, {} )
},
handle20255: function( data ) { // 我的竞猜列表
gcore.GlobalEvent.fire( ArenaEvent.UpdateMylogListEvent, data.list );
},
sender20256: function() {
this.SendProtocal( 20256, {} )
},
handle20256: function( data ) { // 结算展示
this.openArenaChampionBestInfoWindow( true, data )
},
handle20257: function( data ) { // 竞猜实时更新
gcore.GlobalEvent.fire( ArenaEvent.UpdateBetMatchValueEvent, data );
},
handle20258: function( data ) { // 我的战斗日志
gcore.GlobalEvent.fire( ArenaEvent.UpdateMylogListEvent, data )
},
sender20260: function() {
this.SendProtocal( 20260, {} );
},
handle20260: function( data ) { // 32强数据
gcore.GlobalEvent.fire( ArenaEvent.UpdateTop32InfoEvent, data.list );
},
sender20261: function() {
this.SendProtocal( 20261, {} );
},
handle20261: function( data ) { // 4强数据
gcore.GlobalEvent.fire( ArenaEvent.UpdateTop4InfoEvent, data.pos_list );
},
sender20262: function() {
this.SendProtocal( 20262, {} )
},
handle20262: function( data ) { // 32强或者4强赛竞猜位置信息
if( data )
gcore.GlobalEvent.fire( ArenaEvent.UpdateTop324GuessGroupEvent, data.group, data.pos )
},
sender20263: function( group, pos ) {
var protocal = {};
protocal.group = group;
protocal.pos = pos;
this.SendProtocal( 20263, protocal );
},
handle20263: function( data ) { // 32强或者4强赛
if( data )
gcore.GlobalEvent.fire( ArenaEvent.UpdateTop324GroupPosEvent, data );
},
sender20280: function() {
this.SendProtocal( 20280, {} );
},
handle20280: function( data ) { // 冠军赛前3名信
if( data && data.rank_list )
gcore.GlobalEvent.fire( ArenaEvent.UpdateChampionTop3Event, data.rank_list, 1 );
},
sender20281: function() {
this.SendProtocal( 20281, {} );
},
handle20281: function( data ) { // 冠军赛排行榜信
gcore.GlobalEvent.fire( ArenaEvent.UpdateChampionRankEvent, data );
},
handle20282: function( data ) { // 赛季结算前3
// this.openArenaChampionTop3Window( true, data )
},
//进入主场景后显示缓存的界面
showCachePanel: function() {
if( this.cache_list == null || this.cache_list.length <= 0 ) return;
for( var i in this.cache_list ) {
if( this.cache_list[ i ].function ) {
this.cache_list[ i ].function();
}
}
this.cache_list = [];
},
// ==============================--
// desc:请求打开竞技场面板,这个时候要判断一下,如果是冠军赛开始阶段,就不要直接进竞技场了,
// 否则直接进竞技场吧,这个才是对外打开竞技场的请求,因为这里要判断是否在冠军赛七剑
// time:2018-08-01 08:10:21
// extend:扩展参数,如果是冠军赛,则需要判断具体的
// @return
// ==============================--
requestOpenArenWindow: function( status, extend ) {
if( extend == ArenaConst.arena_type.rank ) {
this.openArenaChampionMatchWindow( true );
} else {
var base_info = this.champion_model.getBaseInfo();
if( !base_info || base_info.step_status != ArenaConst.champion_step_status.opened ) {
// this.requestOpenArenaLoopMathWindow(true);
} else {
this.openArenaEnterWindow( true, ArenaConst.arena_type.rank );
}
}
},
// ==============================--
// desc:请求打开竞技场界面
// time:2018-08-01 08:19:25
// @status:
// @index:
// @return
// ==============================--
// requestOpenArenaLoopMathWindow: function(status, index) {
// if (status) {
// MainuiController.getInstance().requestOpenBattleRelevanceWindow(BattleConst.Fight_Type.Arena)
// }
// },
// ==============================--
// desc:打开循环赛界面(这个接口外部只有一个,那就是真正的战斗请求回来之后打开的,也就是mainuicontroller里面打开的)
// time:2018-07-31 09:52:23
// @status:
// @index:
// @return
// ==============================--
openArenaLoopMathWindow: function( status, index ) {
if( status ) {
index = index || ArenaConst.loop_index.challenge;
} else {
}
},
// ==============================--
// desc:打开循环赛或者冠军赛入口界面
// time:2018-07-31 09:52:04
// @status:
// @index:
// @return
// ==============================--
openArenaEnterWindow: function( status, index ) {
if( status ) {
if( !this.enter_window ) {
var ArenaEnterWindow = require( "arena_enter_window" );
this.enter_window = new ArenaEnterWindow( this );
}
index = index || ArenaConst.arena_type.loop;
this.enter_window.open( index )
} else {
if( this.enter_window ) {
this.enter_window.close()
this.enter_window = null;
}
}
},
// 打开冠军赛主界面
// openArenaChampionMatchWindow: function(status, index) {
// if (status) {
// if (!this.champion_window) {
// var ArenaChampionMatchWindow = require("arena_champion_match_window");
// this.champion_window = new ArenaChampionMatchWindow(this);
// }
// this.champion_window.open(index);
// } else {
// if (this.champion_window) {
// this.champion_window.close();
// this.champion_window = null;
// }
// }
// },
openArenaChampionGuessWindow: function( status, data, view_type ) {
if( status ) {
if( !this.guess_window ) {
var ArenaChampionGuessWindow = require( "arena_champion_guess_window" );
this.guess_window = new ArenaChampionGuessWindow( view_type );
}
this.guess_window.open( data );
} else {
if( this.guess_window ) {
this.guess_window.close();
this.guess_window = null;
}
}
},
// 打开循环赛结算界面
openLoopResultWindow: function( status, data ) {
if( status ) {
if( !this.loop_result_window ) {
var LoopResultWindow = require( "arena_loop_result_window" );
this.loop_result_window = new LoopResultWindow( this );
}
this.loop_result_window.open( data );
} else {
if( this.loop_result_window ) {
this.loop_result_window.close();
this.loop_result_window = null;
}
}
},
openArenaLoopMyLogWindow: function( status ) {
if( status ) {
if( !this.loop_log_window ) {
var ArenaLoopMyLogWindow = require( "arena_loop_my_log_window" );
this.loop_log_window = new ArenaLoopMyLogWindow( this );
}
this.loop_log_window.open();
} else {
if( this.loop_log_window ) {
this.loop_log_window.close();
this.loop_log_window = null;
}
}
},
openArenaLoopChallengeBuy: function( status ) {
if( status ) {
if( !this.arena_champion_buy ) {
var ArenaChampionBuy = require( "arena_loop_challenge_buy_window" );
this.arena_champion_buy = new ArenaChampionBuy( this );
}
this.arena_champion_buy.open();
} else {
if( this.arena_champion_buy ) {
this.arena_champion_buy.close();
this.arena_champion_buy = null;
}
}
},
openArenaChampionMyGuessWindow: function( status, view_type ) {
if( status ) {
if( !this.my_guess_window ) {
var ArenaChampionMyGuessWindow = require( "arena_champion_my_guess_window" );
this.my_guess_window = new ArenaChampionMyGuessWindow( view_type );
}
this.my_guess_window.open()
} else {
if( this.my_guess_window ) {
this.my_guess_window.close()
this.my_guess_window = null;
}
}
},
openArenaChampionMyLogWindow( status, view_type ) {
let self = this;
if( status == false ) {
if( self.my_log_window != null ) {
self.my_log_window.close()
self.my_log_window = null
}
} else {
if( self.my_log_window == null ) {
var ArenaChampionMyLogWindow = require( "arena_champion_my_log_window" )
self.my_log_window = new ArenaChampionMyLogWindow( view_type )
}
self.my_log_window.open()
}
},
openArenaChampionBestInfoWindow( status, data, view_type ) {
let self = this;
if( status == false ) {
if( self.best_info_window != null ) {
self.best_info_window.close()
self.best_info_window = null
}
} else {
if( self.best_info_window == null ) {
var ArenaChampionBestInfoWindow = require( "arena_champion_best_info_window" );
self.best_info_window = new ArenaChampionBestInfoWindow( view_type )
}
self.best_info_window.open( data )
}
},
//==============================
//desc:打开冠军赛排名奖励面板
//time:2018-08-01 02:04:06
//@status:
//@return
//==============================
openArenaChampionRankAwardsWindow: function( status, view_type ) {
if( status ) {
if( !this.champion_rank_awards ) {
var ArenaChampionRankAwardsWindow = require( "arena_champion_rank_awards_window" );
this.champion_rank_awards = new ArenaChampionRankAwardsWindow( view_type );
}
this.champion_rank_awards.open();
} else {
if( this.champion_rank_awards ) {
this.champion_rank_awards.close()
this.champion_rank_awards = null;
}
}
},
//==============================
//desc:打开
//time:2018-07-31 05:23:58
//@status:
//@data:
//@return
//==============================
openArenaChampionRankWindow: function( status, view_type ) {
if( status ) {
if( !this.champion_rank ) {
var ArenaChampionRankWindow = require( "arena_champion_rank_window" );
this.champion_rank = new ArenaChampionRankWindow( view_type );
}
this.champion_rank.open();
} else {
if( this.champion_rank ) {
this.champion_rank.close();
this.champion_rank = null;
}
}
},
getArenaRoot: function() {
if( this.loop_match_window )
return this.loop_match_window.root_wnd;
},
//==============================
//desc:冠军赛战况的窗体
//time:2018-08-03 08:40:54
//@status:
//@data:
//@return
//==============================--
openArenaChampionReportWindow: function( status, data, view_type ) {
if( status ) {
if( !this.report_window ) {
var ArenaChampionReportWindow = require( "arena_champion_report_window" );
this.report_window = new ArenaChampionReportWindow( view_type );
}
this.report_window.open( data );
} else {
if( this.report_window ) {
this.report_window.close();
this.report_window = null;
}
}
},
// --==============================--
// --desc:冠軍賽前3結算
// --time:2018-08-03 08:40:54
// --@status:
// --@data:
// --@return
// --==============================--
openArenaChampionTop3Window( status, data, view_type ) {
let self = this;
if( !status ) {
if( self.champion_top3_window != null ) {
self.champion_top3_window.close()
self.champion_top3_window = null
}
} else {
if( self.champion_top3_window == null ) {
var ArenaChampionTop3Window = require( "arena_champion_top_3_window" );
self.champion_top3_window = new ArenaChampionTop3Window( view_type )
}
self.champion_top3_window.open( data )
}
},
updateChampionTab: function( tab_index ) {
if( this.champion_window )
this.champion_window.updateTab( tab_index );
},
requestLoopChallengeRoleInfo( rid, srv_id ) {
if( rid == null || srv_id == null ) return
this.loop_challenge_role_rid = rid //-- 记录一下当前请求查看的角色rid和srv_id
this.loop_challenge_role_srv_id = srv_id
let protocal = {}
protocal.rid = rid
protocal.srv_id = srv_id
this.SendProtocal( 20202, protocal )
},
requestRabotInfo( rid, srv_id, pos ) {
let protocal = {}
protocal.rid = rid
protocal.srv_id = srv_id
protocal.pos = pos
this.SendProtocal( 20204, protocal );
},
handle20204( data ) {
if( data.code == 0 ) {
nx.tbox( data.msg )
}
var HeroController = require( "hero_controller" )
HeroController.getInstance().openHeroTipsPanel( true, data );
},
} );
module.exports = ArenaController;