const BridgeWindow = require( "bridge.window" ); const TipsController = require( "tips_controller" ); const ArenaEvent = require( "arena_event" ); const RoleController = require( "role_controller" ); const BattleEvent = require( "battle_event" ); const LadderEvent = require( "ladder_event" ); const MallConst = require( "mall_const" ); const BattleController = require( "battle_controller" ); const LadderController = require( "ladder_controller" ); const HeroController = require("hero_controller"); const HeroConst = require( "hero_const" ); cc.Class( { extends: BridgeWindow, properties: { nodTop: { default: null, type: cc.Node, displayName:"自己排名相关" }, nodLst: { default: null, type: cc.Node, displayName:"挑战列表" }, nodBtm: { default: null, type: cc.Node, displayName:"结束时间" }, }, onLoad: function() { // this.unscheduleAllCallbacks(); this.bindGEvent( BattleEvent.DISPENSE_TYPE_RESLUT, this.showResult.bind( this ) ); this.bindGEvent( LadderEvent.GetLadderEnemyData, this.showFightNod.bind( this ) ); this.bindGEvent( LadderEvent.UpdateLadderMyBaseInfo, this.freshInfo.bind( this ) ); this.bindGEvent( LadderEvent.UpdateAllLadderEnemyList, this.freshChallengeList.bind( this ) ); // this.bindGEvent( ArenaEvent.UpdateArena_Number, this.updateRankListInfo.bind(this)); }, onOpenConfigs( _params ) { let LC = LadderController.getInstance(); let LCM = LC.getModel(); this.myinfo = LCM.getLadderMyBaseInfo(); if( nx.dt.objEmpty( this.myinfo ) ){ LC.requestLadderMyBaseInfo(); } this.clist = LCM.getLadderEnemyListData(); LC.requestLadderEnemyListData(); /**[{"rid":974,"srv_id":"robot","idx":5,"name":"夜蕾依珊","lev":57,"sex":1,"face":30502,"power":104180,"rank":974,"look":150501,"face_update_time":0,"face_file":""},{"rid":943,"srv_id":"robot","idx":4,"name":"恨山紫藍","lev":57,"sex":1,"face":10303,"power":103312,"rank":943,"look":110506,"face_update_time":0,"face_file":""},{"rid":937,"srv_id":"robot","idx":3,"name":"念薇凡梅","lev":61,"sex":0,"face":20304,"power":103610,"rank":937,"look":150502,"face_update_time":0,"face_file":""},{"rid":900,"srv_id":"robot","idx":2,"name":"恨天紫安","lev":55,"sex":0,"face":20504,"power":104180,"rank":900,"look":130402,"face_update_time":0,"face_file":""},{"rid":866,"srv_id":"robot","idx":1,"name":"盼山元風","lev":64,"sex":1,"face":40503,"power":103610,"rank":866,"look":130405,"face_update_time":0,"face_file":""}] * 排名信息--->>> * {"rank":0,"best_rank":0,"can_combat_num":10,"buy_combat_num":0,"ref_time":0,"combat_time":1691334000}**/ this.freshInfo(); this.freshChallengeList(); if( nx.storage.get( "battleArena" ) ){ if( !nx.bridge.getBridgeWindow( "WndArenaLoopCResult" ) ){ nx.bridge.createPanel( "WndArenaLoopCResult" ); } } }, freshInfo : function( _info ){ this.myinfo = _info ? _info : this.myinfo; let buy_cost = 0; this.canbuyCount = 0; let vip = RoleController.getInstance().getRoleVo().vip_lev; let vip0 = 0; let cfg = game.configs.sky_ladder_data.data_buy_num; let need = game.configs.sky_ladder_data.data_const.arena_rank.val; for (let i in cfg ) { let dat = cfg[i]; if( vip >= dat.vip ){ this.canbuyCount++; } if( ( i - 1 ) == this.myinfo.buy_combat_num ){ buy_cost = dat.cost; } } this.buy_cost = buy_cost; let rankinfo = this.myinfo.rank > 0 ? this.myinfo.rank : nx.text.getKey( "RankEmpty" ); nx.gui.setString( this.nodTop, "rank/txt", rankinfo ); // 自己当前排名信息 nx.gui.setString( this.nodTop, "cond/need", need ); // 自己当前排名信息 nx.gui.setString( this.nodBtm, "ctimes/times", this.myinfo.can_combat_num ); // 可使用次数 nx.gui.setString( this.nodBtm, "remain/times", parseInt( this.canbuyCount - this.myinfo.buy_combat_num ) ); // 可使用次数 // nx.gui.setString( this.nodBtm, "etime/time", nx.bridge.time.toLocalString( this.myinfo.combat_time ) ); nx.gui.setCdTxt( this.nodBtm, "etime/time", ( this.myinfo.combat_time - Math.floor( cc.sys.now() / 1000 ) ), ()=>{ nx.gui.setActive( this.nodBtm, "etime", false ); } ); nx.gui.setActive( this.nodBtm, "etime", this.clist[0] && this.clist[0].rank != 0 ); nx.gui.setActive( this.nodBtm, "op/on", this.clist[0] && this.clist[0].rank != 0 ); nx.gui.setActive( this.nodBtm, "op/off", this.clist[0] && this.clist[0].rank == 0 ); }, // 重载:关闭前 onPreClosed: function() { // this.nodLst.rebuild( [] ); }, freshChallengeList: function( _lst ) { let LC = LadderController.getInstance(); let LCM = LC.getModel(); this.clist = _lst ? _lst : LCM.getLadderEnemyListData();; let chd = this.nodLst.children; for( let i = 0; i < chd.length; i++ ) { let item = chd[ i ]; let data = {}; data = nx.dt.objClone( this.clist[ i ] ); let cmp = item.getComponent( "nx.fx.sv.expand.item" ); if( cmp ) { cmp.rebind( i, data ); } } // // 引导辅助 // if( nx.bridge.plot && nx.bridge.plot.isDoing() ) { // this.positionWeakest(); // } }, onTouchRank: function() { let rewards = []; let rfg = game.configs.sky_ladder_data.data_award; for (let i in rfg ) { let reward = rfg[i]; rewards.push( reward ); } let LC = LadderController.getInstance(); nx.bridge.createPanel( "WndArenaLoopCRankAward", { ops: [ "RankNow", "RankAwards" ], cb: () => { LC.requestLadderRankData(); }, dfg: rewards, show: "RankNow", desc : nx.text.getKey( "lab_ladder_award_window_tip3" ), } ); }, onTouchFresh: function() { let AC = ArenaController.getInstance(); AC.sender20206(); }, // 跳转竞技场积分商城 onTouchShop: function() { nx.bridge.jumper.jump2Window( 2, [ MallConst.MallType.ScoreShop, MallConst.MallType.ArenaShop ] ); }, openWarLog: function() { let LC = LadderController.getInstance(); LC.openLadderLogWindow( true ); }, // 点击 显示对应的对手数据 showFightNod : function( _fightinfo ){ let LC = LadderController.getInstance(); LC.openLadderRoleInfoWindow( true, _fightinfo ); }, closeSelf: function() { this.close(); }, // 规则说明 onTouchTip: function() { let TC = TipsController.getInstance(); if( TC ) { let txt = game.configs.sky_ladder_data.data_explain; TC.showDetailPanel( txt ); } }, showResult: function() { nx.bridge.createPanel( "WndArenaLoopCResult" ); }, onTouchBuy: function() { let msg = nx.text.format( "lab_star_tower_main_window_tip7", '3', this.buy_cost ); nx.mbox( msg, [ 'cancel', 'confirm' ], ( _key, _box ) => { _box.close(); if( _key == 'confirm' ) { const LC = LadderController.getInstance(); LC.requestBuyChallengeCount(); } } ); }, // onTouchQuick: function(){ let LC = LadderController.getInstance(); LC.requestQuickChallenge(); }, // 點擊英雄殿 onTouchHerosHall: function(){ let LC = LadderController.getInstance(); LC.openLadderTopThreeWindow( true ); }, // 點擊編隊 onTouchForm: function(){ let heros = HeroController.getInstance().getModel().getAllHeroArray(); HeroController.getInstance().openFormGoFightPanel( true, 45, {need_hide_top : true}, HeroConst.FormShowType.eFormSave ); // let LC = LadderController.getInstance(); // LC.openLadderTopThreeWindow( true ); }, // ============================================ // 引导辅助 // ============================================ // 定位最弱的一个 positionWeakest: function() { let node = null; let chd = nx.gui.find( this.nodLst, "" ).children; node = chd[ 0 ]; // let node = null; // let children = this.svcList.bindSCV.content.children; // for( let i = 0; i < children.length; ++i ) { // let temp = children[ i ]; // if( temp.svItem && temp.svItem.mdata && temp.svItem.mdata.bid == 20401 ) { // node = temp; // break; // } // } if( !node ) { nx.error( "$ParterPage:定位特定英雄失败!" ); node = chd[ 0 ]; if( !node ) { return; } } let cell = nx.gui.find( this, "plotWeakest" ); let pos = node.convertToWorldSpaceAR( cc.Vec2.ZERO ); cell.position = cell.parent.convertToNodeSpaceAR( pos ); cell.width = node.width; cell.height = node.height; cell.mdata = node.getComponent( "nx.fx.sv.expand.item" ).mdata; }, // 点击挑战最弱 onTouchWeakest: function() { let cell = nx.gui.find( this, "plotWeakest" ); let AC = ArenaController.getInstance(); AC.sender20203( cell.mdata.rid, cell.mdata.srv_id ); }, } );