Files
fc/dev/project/assets/Scripts/mod/pvp/arena/cmp/cmp.pvp.arena.loopc.wnd.js
T

416 lines
13 KiB
JavaScript
Raw Normal View History

2026-05-23 22:10:14 +08:00
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 );
},
} );