Files
fc/dev/project/assets/Scripts/mod/payment/cmp/cmp.payment.vip.page.js
T
2026-05-23 22:10:14 +08:00

230 lines
8.1 KiB
JavaScript

/******************************************************************
*
* VIP页面
*
******************************************************************/
const MenuPage = require( "cmp.com.menu.page" );
const FXTog = require( "nx.fx.togs" );
const VipController = require( "vip_controller" );
const RoleController = require( "role_controller" );
cc.Class( {
extends: MenuPage,
properties: {
nodVipLev: { default: null, type: cc.Node },
nodTogs: { default: null, type: FXTog },
nodShow: { default: null, type: cc.Node },
nodVipLst: { default: null, type: cc.Node },
},
onLoad: function() {
this.alreadyBuy = [];
this.onTouch = 0;
this.nodTogs.posTog = this.onTouchChange.bind( this );
let cfg = game.configs.vip_data.data_get_reward;
this.cfgs = cfg;
let vip = RoleController.getInstance().getRoleVo().vip_lev;
this.vip = vip;
let count = Object.keys( cfg ).length;
let cmp = nx.gui.getComponent( this.nodShow, "extItems", "cmp.common.itemlayout" );
let spcmp = nx.gui.getComponent( this.nodShow, "gift/view/spgift", "cmp.common.itemlayout" );
// 角色属性监听
this.role_vo = RoleController.getInstance().getRoleVo();
if( this.role_vo ) {
this.handler_role = this.role_vo.bind( EventId.UPDATE_ROLE_ATTRIBUTE, ( function( key, val ) {
// console.log( 'HERO ATTR: ', key, val );
if( key == 'vip_exp' || key == 'vip_lev' ) {
this.scheduleOnce( () => {
this.freshVip();
}, 0.1 );
}
} ), this );
}
cmp.rebuild( [] );
spcmp.rebuild( [] );
nx.gui.gocChildren( this.nodTogs, "", count );
for( let i in cfg ) {
let vip = cfg[ i ];
let nod = this.nodTogs.node.children[ i ];
nx.gui.setStringRich( nod, "on/txt", vip.lev != 0 ? nx.text.format( "VIPTipRich", vip.lev ) : nx.text.format( "VIPTipRich", "" ) );
nx.gui.setString( nod, "off/txt", nx.text.format( "VIPTip", vip.lev ) );
}
this.vbind( [
[ "VIPBuyGifts", this.onFreshBuyInfo.bind( this ) ],
[ "VIPMMSp", this.onFreshGetExt.bind( this ) ],
] );
// this.nodTogs.rebuildTogs();
// this.togMenus.togTo( 0 );
// this.activeMenus( 1 );
// Tog监听
this.nodTogs.togTo( 0 );
this.onTogMenus( 0 );
},
freshVip: function(){
let vip = RoleController.getInstance().getRoleVo().vip_lev;
this.vip = vip;
nx.gui.setString( this.nodVipLev, "panel/level/txt", vip );
if(this.cfgs){
let total = vip + 1 < 13 ? this.cfgs[ vip + 1 ].gold : this.cfgs[ 13 ].gold;
let now = RoleController.getInstance().getRoleVo().vip_exp;
nx.gui.setString( this.nodVipLev, "panel/prog", now + "/" + total );
let cmp = nx.gui.getComponent( this.nodVipLev, "panel/bar", cc.ProgressBar );
if( cmp ) {
cmp.progress = parseFloat( now / total );
}
nx.gui.setStringRich( this.nodVipLev, "panel/tip", nx.text.format( "ChargeTip", ( vip + 1 ) <= 13 ? ( total - now ) : 0, ( vip + 1 ) <= 13 ? ( vip + 1 ) : 13 ) );
}
},
onEnable: function() {
this.freshVip();
VipController.getInstance().sender16707();
this.nodTogs.togTo( this.vip );
this.scv = nx.gui.getComponent( this.nodTogs.node.parent.parent, "", cc.ScrollView );
this.onTogMenus( this.vip );
if( this.vip <= 13 && this.vip >= 9 ) {
this.scv.scrollToBottom( 0.01 );
} else {
if( this.scv ) {
let posp = cc.v2( 0, ( this.vip ) * 90 );
this.scv.setContentPosition( posp ); // scrollTo
}
}
},
onDisable: function() {
let cmp = nx.gui.getComponent( this.nodShow, "extItems", "cmp.common.itemlayout" );
let spcmp = nx.gui.getComponent( this.nodShow, "gift/view/spgift", "cmp.common.itemlayout" );
cmp.rebuild( [] );
spcmp.rebuild( [] );
},
onTouchChange: function( _index ) {
let cmp = nx.gui.getComponent( this.nodShow, "extItems", "cmp.common.itemlayout" );
let spcmp = nx.gui.getComponent( this.nodShow, "gift/view/spgift", "cmp.common.itemlayout" );
cmp.rebuild( [] );
spcmp.rebuild( [] );
this.onTogMenus( _index );
},
onTogMenus: function( _index ) {
let cmp = nx.gui.getComponent( this.nodShow, "extItems", "cmp.common.itemlayout" );
let spcmp = nx.gui.getComponent( this.nodShow, "gift/view/spgift", "cmp.common.itemlayout" );
// cmp.rebuild( [] );
// spcmp.rebuild( [] );
this.onTouch = _index;
let extRewards = game.configs.charge_data.data_supre_reward_data;
let vipExt = extRewards[ _index ];
let vfg = this.cfgs[ _index ];
if( cmp ) {
cmp.rebuild( vipExt.reward );
}
nx.gui.setStringRich( this.nodShow, "vip_title", nx.text.format( "VIPPrivilege", _index ) );
nx.gui.setStringRich( this.nodShow, "desc/view/content/txt", vfg.spe_desc );
nx.gui.setString( this.nodShow, "normal/cost", nx.text.getKey( "act_limit_buy1" ) + vfg.old_price[ 0 ][ 1 ] );
nx.gui.setString( this.nodShow, "op/price", vfg.price[ 0 ][ 1 ] == 0 ? nx.text.getKey( "Free" ) : vfg.price[ 0 ][ 1 ] );
nx.gui.setString( this.nodShow, "cannot/price", vfg.price[ 0 ][ 1 ] == 0 ? nx.text.getKey( "Free" ) : vfg.price[ 0 ][ 1 ] );
nx.bridge.setIconS( this.nodShow, "op/icon", vfg.price[ 0 ][ 0 ] );
nx.bridge.setIconS( this.nodShow, "cannot/icon", vfg.price[ 0 ][ 0 ] );
nx.bridge.setIconS( this.nodShow, "normal/icon", vfg.price[ 0 ][ 0 ] );
if( spcmp ) {
spcmp.rebuild( vfg.items );
}
nx.gui.setStringRich( this.nodShow, "desc_tip", nx.text.format( "lab_vipChargePrivilege", 3, vfg.gold ) );
nx.gui.setActive( this.nodShow, "op", !nx.dt.arrMember( this.alreadyBuy, _index ) && ( this.vip >= _index ) );
nx.gui.setActive( this.nodShow, "cannot", !nx.dt.arrMember( this.alreadyBuy, _index ) && this.vip < _index );
// let cmp =
nx.gui.setActive( this.nodShow, "sold", nx.dt.arrMember( this.alreadyBuy, _index ) );
nx.gui.setActive( this.nodShow, "claim", this.vip == _index );
let btn = nx.gui.getComponent( this.nodShow, "claim", cc.Button );
if( btn ) {
btn.interactable = ( this.vip == _index && this.status == 1 );
nx.gui.setString( this.nodShow, "claim/price", this.status != 2 ? nx.text.getKey( "Get" ) : nx.text.getKey( "Got" ) );
nx.gui.setOutlineColor( this.nodShow, "claim/price", ( this.vip == _index && this.status == 1 ) ? new cc.color( "#b85833" ) : cc.Color.BLACK );
}
// nx.gui.setActive( this.nodShow, "got", this.status == 2 );
nx.gui.find( this.nodShow, "op" ).zIndex = vfg.lev;
},
onFreshBuyInfo: function( _buyinfo ) {
this.alreadyBuy = [];
if( nx.dt.arrNEmpty( _buyinfo ) ) {
_buyinfo.forEach( _info => {
this.alreadyBuy.push( _info.lev );
} );
}
this.onTogMenus( this.onTouch );
},
onFreshGetExt: function( _status ) {
this.nodTogs.node.children.forEach( _nod => {
nx.gui.setActive( _nod, "off/tip", false );
} )
this.status = _status;
let vip = RoleController.getInstance().getRoleVo().vip_lev;
let nod = this.nodTogs.node.children[ vip ];
nx.gui.setActive( nod, "off/tip", this.status == 1 );
this.onTogMenus( this.onTouch );
},
onTouchGet: function() {
VipController.getInstance().sender16708();
// console.log( );
},
onTouchBuy: function( _btn ) {
let vip = RoleController.getInstance().getRoleVo().vip_lev;
if( vip < _btn.zIndex ) {
nx.tbox( nx.text.format( "tips_vipBuy", _btn.zIndex ) );
return;
}
VipController.getInstance().sender16711( _btn.zIndex );
// console.log( );
},
} );