416 lines
13 KiB
JavaScript
416 lines
13 KiB
JavaScript
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 );
|
|
},
|
|
|
|
} );
|
|
|