291 lines
8.2 KiB
JavaScript
291 lines
8.2 KiB
JavaScript
|
|
/******************************************************************
|
||
|
|
*
|
||
|
|
* 限定招募
|
||
|
|
*
|
||
|
|
******************************************************************/
|
||
|
|
|
||
|
|
const ActPage = require( "act.page.base" );
|
||
|
|
const NxSpine = require( "nx.fx.spine" );
|
||
|
|
const ItemLayout = require( "cmp.item.layout" );
|
||
|
|
const BridgeItemBinder = require( "bridge.binder.item.icon.count" );
|
||
|
|
const TipsController = require( "tips_controller" );
|
||
|
|
const FID = require( "bridge.function.ids" );
|
||
|
|
|
||
|
|
cc.Class( {
|
||
|
|
|
||
|
|
extends: ActPage,
|
||
|
|
|
||
|
|
properties: {
|
||
|
|
nodOps: { default: null, type: cc.Node },
|
||
|
|
spRole: { default: null, type: NxSpine },
|
||
|
|
spMini: { default: null, type: NxSpine },
|
||
|
|
nodInfo: { default: null, type: cc.Node },
|
||
|
|
nodDate: { default: null, type: cc.Node },
|
||
|
|
nodLogo: { default: null, type: cc.Node },
|
||
|
|
nodCoin: { default: null, type: BridgeItemBinder },
|
||
|
|
nodScore: { default: null, type: BridgeItemBinder },
|
||
|
|
nodRewards: { default: null, type: ItemLayout },
|
||
|
|
},
|
||
|
|
|
||
|
|
// 初始化
|
||
|
|
build: function( _data ) {
|
||
|
|
|
||
|
|
this._super( _data );
|
||
|
|
|
||
|
|
// 置空
|
||
|
|
if( !this.mod || nx.dt.objEmpty( this.data ) ) {
|
||
|
|
this.setEmpty();
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 配置查询
|
||
|
|
this.configs = this.mod.queryConfigs();
|
||
|
|
if( !this.configs ) {
|
||
|
|
nx.error( `$SummonLimit:配置缺失! ${ this.data.camp_id }` );
|
||
|
|
this.setEmpty();
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 基本信息
|
||
|
|
this.freshBasic();
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
// 显示
|
||
|
|
onEnable: function() {
|
||
|
|
|
||
|
|
// console.log( "Show:" + this.data.camp_id );
|
||
|
|
|
||
|
|
// 刷新
|
||
|
|
if( this.mod ) {
|
||
|
|
this.mod.reqBaseData( ( _ret, _data ) => {
|
||
|
|
if( _ret ) {
|
||
|
|
this.freshDate( _data.remain_sec );
|
||
|
|
this.freshRewards( _data.item_effect_list );
|
||
|
|
this.freshOps();
|
||
|
|
}
|
||
|
|
} );
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
// 关闭
|
||
|
|
onDisable: function() {
|
||
|
|
// console.log( "Hide:" + this.data.camp_id );
|
||
|
|
},
|
||
|
|
|
||
|
|
// 置空
|
||
|
|
setEmpty: function() {
|
||
|
|
nx.gui.setActive( this, "right", false );
|
||
|
|
},
|
||
|
|
|
||
|
|
// 基本信息
|
||
|
|
freshBasic: function() {
|
||
|
|
|
||
|
|
// 置空
|
||
|
|
if( !this.mod || !this.configs || nx.dt.objEmpty( this.data ) ) {
|
||
|
|
this.setEmpty();
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 背景刷新
|
||
|
|
let bg = cc.path.join( "resDB/bigs", this.configs.bg || "bg005" );
|
||
|
|
nx.gui.setSpriteFrame( this, "bg", bg );
|
||
|
|
nx.gui.setActive( this, "right", true );
|
||
|
|
|
||
|
|
// 标签刷新
|
||
|
|
let tags = cc.path.join( "locals/{lang}/images/limitrecruit", this.configs.effect );
|
||
|
|
nx.gui.setSpriteFrame( this.nodInfo, "desc", nx.res.fmtPath( tags ) );
|
||
|
|
|
||
|
|
// Logo刷新
|
||
|
|
let logo = cc.path.join( "locals/{lang}/images/limitrecruit", this.configs.title );
|
||
|
|
nx.gui.setSpriteFrame( this.nodLogo, "", nx.res.fmtPath( logo ) );
|
||
|
|
|
||
|
|
// 道具绑定
|
||
|
|
this.nodCoin.setID( this.configs.prop_id, () => {
|
||
|
|
this.freshOps();
|
||
|
|
} );
|
||
|
|
|
||
|
|
// 积分绑定
|
||
|
|
this.nodScore.setID( this.configs.point_id );
|
||
|
|
|
||
|
|
// 角色信息刷新
|
||
|
|
this.freshPartner( this.configs.partner_id );
|
||
|
|
|
||
|
|
// 红点绑定
|
||
|
|
let tip1 = nx.gui.getComponent( this.nodOps, "once/tip", "nx.vb.visible" );
|
||
|
|
if( tip1 ) {
|
||
|
|
tip1.setTarget( nx.mTip, this.mod.getTipKey( "once" ) );
|
||
|
|
}
|
||
|
|
let tip2 = nx.gui.getComponent( this.nodOps, "ten/tip", "nx.vb.visible" );
|
||
|
|
if( tip2 ) {
|
||
|
|
tip2.setTarget( nx.mTip, this.mod.getTipKey( "ten" ) );
|
||
|
|
}
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
// 刷新角色
|
||
|
|
freshPartner: function( _bid ) {
|
||
|
|
|
||
|
|
let dat = game.configs.partner_data.data_partner_base[ _bid ];
|
||
|
|
let scfgs = gdata( "partner_data", "data_partner_star", `${ _bid }_${ dat.init_star }` );
|
||
|
|
if( nx.dt.objEmpty( scfgs ) ) {
|
||
|
|
nx.error( "刷新角色失败,无效伙伴:", _bid );
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 名字
|
||
|
|
nx.gui.setString( this.nodInfo, "base/name", nx.text.getKey( dat.name ) );
|
||
|
|
|
||
|
|
// 品质
|
||
|
|
let path = cc.path.join( "coms/images", "mk_partner_qa" + dat.quality );
|
||
|
|
nx.gui.setSpriteFrame( this.nodInfo, "qa", path );
|
||
|
|
|
||
|
|
// 阵营
|
||
|
|
path = cc.path.join( "prefab/partner/ui/camp" + dat.camp_type );
|
||
|
|
nx.gui.setSpriteFrame( this.nodInfo, "base/camp", path );
|
||
|
|
|
||
|
|
// 星级
|
||
|
|
path = cc.path.join( "coms/images/star" + dat.init_star );
|
||
|
|
nx.gui.setSpriteFrame( this.nodInfo, "stars", path );
|
||
|
|
|
||
|
|
// 角色动画
|
||
|
|
path = PathTool.getSpinePath( scfgs.res_id, "show", false );
|
||
|
|
this.spRole.load( path, ( _e ) => {
|
||
|
|
if( !_e ) {
|
||
|
|
this.spRole.action( "action1", true );
|
||
|
|
} else {
|
||
|
|
this.spRole.stop();
|
||
|
|
}
|
||
|
|
} );
|
||
|
|
|
||
|
|
// MINI动画
|
||
|
|
path = PathTool.getSpinePath( scfgs.res_id, scfgs.res_id, false );
|
||
|
|
this.spMini.load( path, ( _e ) => {
|
||
|
|
if( !_e ) {
|
||
|
|
this.spMini.action( "stand2", true );
|
||
|
|
} else {
|
||
|
|
this.spMini.stop();
|
||
|
|
}
|
||
|
|
} );
|
||
|
|
|
||
|
|
// 技能
|
||
|
|
let sknode = nx.gui.find( this.nodInfo, "skills" );
|
||
|
|
for( let i = 0; i < sknode.children.length; ++i ) {
|
||
|
|
|
||
|
|
// 技能数组[0]为普攻,直接忽略,最多4个技能
|
||
|
|
let item = sknode.children[ i ];
|
||
|
|
let sifo = scfgs.skills[ i + 1 ];
|
||
|
|
if( !sifo ) {
|
||
|
|
item.active = false;
|
||
|
|
continue;
|
||
|
|
}
|
||
|
|
|
||
|
|
item.active = true;
|
||
|
|
let cmp = nx.gui.getComponent( item, "", "cmp.skill.base" );
|
||
|
|
if( cmp ) {
|
||
|
|
cmp.setData( sifo[ 1 ] );
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
// 刷新活动日期
|
||
|
|
freshDate: function( _secs ) {
|
||
|
|
|
||
|
|
let time = nx.bridge.time.toNeedSeconds( _secs );
|
||
|
|
nx.gui.setString( this.nodDate, "txt", time );
|
||
|
|
},
|
||
|
|
|
||
|
|
// 刷新奖励
|
||
|
|
freshRewards: function( _list ) {
|
||
|
|
|
||
|
|
let rewards = [];
|
||
|
|
if( nx.dt.arrNEmpty( _list ) ) {
|
||
|
|
for( let i = 0; i < _list.length; ++i ) {
|
||
|
|
rewards.push( [ _list[ i ].bid, 1 ] );
|
||
|
|
}
|
||
|
|
}
|
||
|
|
this.nodRewards.rebuild( rewards );
|
||
|
|
},
|
||
|
|
|
||
|
|
// 变化信息
|
||
|
|
freshOps: function() {
|
||
|
|
|
||
|
|
// 置空
|
||
|
|
if( !this.mod || !this.configs || nx.dt.objEmpty( this.data ) ) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 按钮设置
|
||
|
|
let autoOp = function( _node, _draw ) {
|
||
|
|
|
||
|
|
let tinfo = gitemdata( _draw[ 0 ] );
|
||
|
|
if( !tinfo ) {
|
||
|
|
nx.error( `$SummonLimit:道具无效! ${ _draw[ 0 ] }` );
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
nx.bridge.setIcon( _node, "btn/list/icon", tinfo.icon );
|
||
|
|
nx.gui.setString( _node, "btn/list/num", _draw[ 1 ] );
|
||
|
|
}
|
||
|
|
|
||
|
|
// 操作刷新
|
||
|
|
autoOp( nx.gui.find( this.nodOps, "once" ), this.configs.draw_one[ 0 ] );
|
||
|
|
autoOp( nx.gui.find( this.nodOps, "ten" ), this.configs.draw_ten[ 0 ] );
|
||
|
|
},
|
||
|
|
|
||
|
|
// 点击单抽
|
||
|
|
onTouchOnce: function() {
|
||
|
|
|
||
|
|
if( !this.configs || !this.mod ) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
this.mod.reqRaffle( this.configs.group_id, true, ( _ret, _msg, _code ) => {
|
||
|
|
// 道具不足
|
||
|
|
if( !_ret && _code == 101 ) {
|
||
|
|
nx.tbox( _msg );
|
||
|
|
this.onTouchCoin();
|
||
|
|
}
|
||
|
|
} );
|
||
|
|
},
|
||
|
|
|
||
|
|
// 点击十抽
|
||
|
|
onTouchTen: function() {
|
||
|
|
|
||
|
|
if( !this.configs || !this.mod ) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
this.mod.reqRaffle( this.configs.group_id, false, ( _ret, _msg, _code ) => {
|
||
|
|
// 道具不足
|
||
|
|
if( !_ret && _code == 101 ) {
|
||
|
|
nx.tbox( _msg );
|
||
|
|
this.onTouchCoin();
|
||
|
|
}
|
||
|
|
} );
|
||
|
|
},
|
||
|
|
|
||
|
|
// 点击规则
|
||
|
|
onTouchRule: function() {
|
||
|
|
|
||
|
|
let rule = this.mod ? this.mod.queryRule() : "";
|
||
|
|
if( nx.dt.strNEmpty( rule ) ) {
|
||
|
|
const TC = TipsController.getInstance();
|
||
|
|
TC.showTextPanel( "tip", rule );
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
// 点击道具
|
||
|
|
onTouchCoin: function() {
|
||
|
|
|
||
|
|
if( this.actRoot && this.configs ) {
|
||
|
|
this.actRoot.jumpToMenu( this.configs.jump );
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
// 点击兑换
|
||
|
|
onTouchShop: function() {
|
||
|
|
nx.bridge.jumper.jump2Window( FID.PartnerExChange );
|
||
|
|
},
|
||
|
|
|
||
|
|
} );
|