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 MallConst = require( "mall_const" ); const BattleController = require( "battle_controller" ); const ArenaController = require( "arena_controller" ); const PartnerConst = require( "partner_const" ); const HeroController = require("hero_controller"); const HeroConst = require( "hero_const" ); cc.Class( { extends: BridgeWindow, properties: { nodTop: { default: null, type: cc.Node }, nodLst: { default: null, type: cc.Node }, nodRank: { default: null, type: cc.Node }, nodRewards: { default: null, type: cc.Node }, nodFreeTimes: { default: null, type: cc.Node }, nodDesc: { default: null, type: cc.Node }, nodIcon: { default: null, type: cc.Node }, nodCloseIco: { default: null, type: cc.Node }, nodPower: { default: null, type: cc.Node }, nodSkip: { default: null, type: cc.Node }, }, onLoad: function() { nx.gui.setActive( this, "plotWeakest", false ); let cmp = nx.gui.getComponent( this.nodSkip, "", cc.Toggle ); if( cmp ){ cmp.isChecked = false; } // this.onDeal(); this.bindGEvent( ArenaEvent.UpdateLoopChallengeList, this.freshChallengeList.bind( this ) ); this.bindGEvent( ArenaEvent.UpdateLoopChallengeTimesList, this.freshSelf.bind( this ) ); this.bindGEvent( ArenaEvent.UpdateMyLoopData, this.freshChallengeOp.bind( this ) ); this.bindGEvent( BattleEvent.DISPENSE_TYPE_RESLUT, this.showResult.bind( this ) ); // this.bindGEvent( ArenaEvent.UpdateArena_Number, this.updateRankListInfo.bind(this)); this.first = 0; }, onOpenConfigs( _params ) { this.freshSelf(); let AC = ArenaController.getInstance(); this.scheduleOnce( () => { AC.sender20201(); }, 0.1 ); }, onEnable: function(){ this.onDeal(); if( nx.storage.get( "battleArena" ) ){ if( !nx.bridge.getBridgeWindow( "WndArenaLoopCResult" ) ){ nx.bridge.createPanel( "WndArenaLoopCResult" ); } } }, onDeal: function() { this.freshSelf(); let BC = BattleController.getInstance(); BC.send20060( 2 ); }, // 重载:关闭前 onPreClosed: function() { // this.nodLst.rebuild( [] ); }, freshChallengeList: function() { let model = ArenaController.getInstance().getModel(); let challenge_list = model.getLoopChallengeList(); // this.nodLst.rebuild( challenge_list ); nx.gui.gocChildren( this.nodLst, "", challenge_list.length ); let chd = this.nodLst.children; for( let i = 0; i < chd.length; i++ ) { let item = chd[ i ]; let data = {}; data = nx.dt.objClone( challenge_list[ i ] ); let cmp = item.getComponent( "cmp.arena.loopc.item" ); if( cmp ) { cmp.setData( data ); } } // 引导辅助 if( nx.bridge.plot && nx.bridge.plot.isDoing() ) { this.positionWeakest(); } }, freshSelf: function() { let model = ArenaController.getInstance().getModel(); let role = RoleController.getInstance().getRoleVo(); // 个人领取 奖励信息以及相关的挑战信息 bottom数据相关 let award = model.getChallengeTimesAwards(); // 已挑战次数 let ctimes = model.getHadCombatNum(); nx.gui.setString( this.nodDesc, "ctime/txt", ctimes ); let cond = game.configs.arena_data.data_const.arena_skip_count.val; let cmp = nx.gui.getComponent( this.nodSkip, "", cc.Toggle ); if( cmp ){ if( ctimes >= cond ){ if( this.first == 0 ){ let skip = nx.storage.get( "skip_battle" + role.rid ); if( skip ){ cmp.isChecked = skip > 0 && ctimes >= cond; // nx.storage.set( "skip_battle" + role.rid, cmp.isChecked ? 1 : 0 ); model.setSkip( cmp.isChecked ? 1 : 0 ); }else{ this.onTouchSkip(); } this.first ++; }else{ let skip = nx.storage.get( "skip_battle" + role.rid ); cmp.isChecked = skip > 0 && ctimes >= cond; model.setSkip( cmp.isChecked ? 1 : 0 ); } } } this.setRewardsInfo( award ); // 设置当前的挑战进度相关 let prog = nx.gui.getComponent( this.nodDesc.parent, "awards/prog", cc.ProgressBar ); let all = game.configs.arena_data.data_season_num_reward; let max = game.configs.arena_data.data_season_num_reward[ all.length - 1 ].num; if( prog ) { prog.progress = ctimes / max; } this.freshChallengeOp(); // nx.gui.setString( this.nodDesc, "end/txt", ); // {"rank":0,"score":1000,"can_combat_num":3,"buy_combat_num":0,"ref_time":1686809172,"start_time":1686758400,"end_time":1687363199,"cont_win":0} }, freshChallengeOp: function() { // 刷新操作显示 let model = ArenaController.getInstance().getModel(); let self_data = model.getMyLoopData(); // 免费挑战次数显示 nx.gui.setString( this.nodFreeTimes, "", self_data.can_combat_num ); nx.gui.setString( this.nodRank, "txt", self_data.rank == 0 ? nx.text.getKey( "Rank0" ) : self_data.rank ); nx.gui.setCdTxt( this.nodDesc, "end/txt", ( self_data.end_time - Math.floor( cc.sys.now() / 1000 ) ), () => { } ); let role = RoleController.getInstance().getRoleVo(); nx.gui.setString( this.nodTop, "point/txt", self_data.score ); if( role ){ nx.gui.setString( this.nodPower, "txt", nx.text.getKey( "TotalPower" ) + ":" + role.power ); } // this.nodLst.rebuild( challenge_list ); let chd = this.nodLst.children; for( let i = 0; i < chd.length; i++ ) { let item = chd[ i ]; let cmp = item.getComponent( "cmp.arena.loopc.item" ); if( cmp ) { cmp.freshOp(); } } }, closeAllItemDesc: function(){ for (let i = 0; i < this.nodRewards.children.length; i++) { let n = this.nodRewards.children[i]; nx.gui.setActive( n, "show", false ); } nx.gui.setActive( this.nodCloseIco, "", false ); }, setRewardsInfo: function( _award ) { let cfg = game.configs.arena_data.data_season_num_reward; let chd = this.nodRewards.children; for( let i = 0; i < cfg.length; i++ ) { let award = cfg[ i ]; let nod = chd[ i ]; let cmp = nod.getComponent( "cmp.arena.loopc.reward.item" ); if( cmp ) { cmp.setData( award, i, { got: _award } ); } } }, updateTimesAwards: function() { }, onTouchRank: function() { nx.bridge.createPanel( "WndArenaLoopCRankAward", { ops: [ "RankNow", "DailyAwards", "SeasonAwards" ], cb: () => { ArenaController.getInstance().sender20221(); }, dfg: game.configs.arena_data.data_activity, sfg: game.configs.arena_data.data_awards, show: "RankNow", } ); }, onTouchReward: function() { nx.bridge.createPanel( "WndArenaLoopCRankAward", { ops: [ "RankNow", "DailyAwards", "SeasonAwards" ], cb: () => { ArenaController.getInstance().sender20221(); }, dfg: game.configs.arena_data.data_activity, sfg: game.configs.arena_data.data_awards, show: "DailyAwards", } ); }, onTouchFresh: function() { let AC = ArenaController.getInstance(); AC.sender20206(); }, // 跳转竞技场积分商城 onTouchShop: function() { nx.bridge.jumper.jump2Window( 2, [ MallConst.MallType.ScoreShop, MallConst.MallType.ArenaShop ] ); }, openWarLog: function() { nx.bridge.createPanel( "WndArenaLoopCWarLog" ); }, closeSelf: function() { nx.bridge.createPanel( "WndArenaLoopCWorShip" ); this.scheduleOnce( () => { this.close(); }, 0.3 ); }, // 规则说明 onTouchTip: function() { let desc = game.configs.arena_data.data_explain[ 1 ]; let TC = TipsController.getInstance(); if( TC ) { TC.showTextPanel( desc.title, desc.desc ); } }, showResult: function() { nx.bridge.createPanel( "WndArenaLoopCResult" ); }, onTouchBuy: function() { let cfg = game.configs.arena_data.data_const; let item_bid = cfg.arena_ticket.val; let EC = TipsController.getInstance(); let item = { item_bid: item_bid, price: cfg.ticket_price.val[ 0 ][ 1 ], pay_type: cfg.ticket_price.val[ 0 ][ 0 ], } let AC = ArenaController.getInstance(); EC.openBuyPanel( true, item, 5, _data => { AC.sender20207( _data.num ); EC.openBuyPanel( false ); } ); }, // 點擊編隊 onTouchForm: function(){ let heros = HeroController.getInstance().getModel().getAllHeroArray(); HeroController.getInstance().openFormGoFightPanel( true, PartnerConst.Fun_Form.ArenaDefend, {need_hide_top : true}, HeroConst.FormShowType.eFormSave ); // let LC = LadderController.getInstance(); // LC.openLadderTopThreeWindow( true ); }, onTouchSkip: function(){ let model = ArenaController.getInstance().getModel(); let role = RoleController.getInstance().getRoleVo(); // 當前挑戰次數---- let ctimes = model.getHadCombatNum(); // let skip = nx.storage.get( "skip_battle" ); let cmp = nx.gui.getComponent( this.nodSkip, "", cc.Toggle ); let cond = game.configs.arena_data.data_const.arena_skip_count.val; if( cmp ){ let active = cmp.isChecked; if( ctimes < cond ){ this.first == 0 ? nx.tbox( "" ) : nx.tbox( nx.text.format( "msg_battle_form_fight_num", cond ) ); cmp.isChecked = false; nx.storage.set( "skip_battle" + role.rid, 0 ); model.setSkip( 0 ); return; }else{ cmp.isChecked = true; model.setSkip( cmp.isChecked ? 1 : 0 ); nx.storage.set( "skip_battle" + role.rid, cmp.isChecked ? 1 : 0 ); } } // let canskip = }, onTouchSkipTog: function(){ let model = ArenaController.getInstance().getModel(); // 當前挑戰次數---- let role = RoleController.getInstance().getRoleVo(); let ctimes = model.getHadCombatNum(); // let skip = nx.storage.get( "skip_battle" ); let cmp = nx.gui.getComponent( this.nodSkip, "", cc.Toggle ); let cond = game.configs.arena_data.data_const.arena_skip_count.val; if( cmp ){ if( ctimes < cond ){ this.first == 0 ? nx.tbox( "" ) : nx.tbox( nx.text.format( "msg_battle_form_fight_num", cond ) ); cmp.isChecked = false; model.setSkip( 0 ); nx.storage.set( "skip_battle" + role.rid, 0 ); return; }else{ model.setSkip( cmp.isChecked ? 1 : 0 ); nx.storage.set( "skip_battle" + role.rid, cmp.isChecked ? 1 : 0 ); } } }, // ============================================ // 引导辅助 // ============================================ // 定位最弱的一个 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; nx.gui.setActive( this, "plotWeakest", true ) }, // 点击挑战最弱 onTouchWeakest: function() { let cell = nx.gui.find( this, "plotWeakest" ); let AC = ArenaController.getInstance(); AC.sender20203( cell.mdata.rid, cell.mdata.srv_id ); }, } );