297 lines
8.9 KiB
JavaScript
297 lines
8.9 KiB
JavaScript
/******************************************************************
|
|
*
|
|
* 图鉴详情
|
|
*
|
|
******************************************************************/
|
|
|
|
const NxSpine = require( "nx.fx.spine" );
|
|
const BridgeWindow = require( "bridge.window" );
|
|
const ModLibrary = require( "library.mod" );
|
|
const HeroController = require( "hero_controller" );
|
|
const HeroConst = require( "hero_const" );
|
|
const TipsController = require( "tips_controller" );
|
|
|
|
cc.Class( {
|
|
|
|
extends: BridgeWindow,
|
|
|
|
properties: {
|
|
|
|
spRole: { default: null, type: NxSpine },
|
|
spMini: { default: null, type: NxSpine },
|
|
nodQA: { default: null, type: cc.Node },
|
|
nodDoc: { default: null, type: cc.Node },
|
|
nodSkills: { default: null, type: cc.Node },
|
|
nodReward: { default: null, type: cc.Node },
|
|
nodEmpty: { default: null, type: cc.Node },
|
|
},
|
|
|
|
// 重载:参数打开
|
|
onOpenConfigs: function( _params ) {
|
|
|
|
this.bid = _params ? _params.bid : 0;
|
|
this.auto = _params ? _params.auto : false;
|
|
|
|
// 无效
|
|
if( !nx.dt.numPositive( this.bid, false ) ) {
|
|
this.delayClose();
|
|
return;
|
|
}
|
|
|
|
// 伙伴查询
|
|
this.library = ModLibrary.getInstance();
|
|
this.config = this.library.queryPartner( this.bid );
|
|
if( !this.config ) {
|
|
this.delayClose();
|
|
return;
|
|
}
|
|
|
|
// 更新
|
|
this.updateBase();
|
|
this.updateModels();
|
|
this.updateSkills();
|
|
this.updateDocument();
|
|
this.updateReward();
|
|
|
|
},
|
|
|
|
// 基础更新
|
|
updateBase: function() {
|
|
|
|
let data = game.configs.partner_data.data_partner_base[ this.config.id ];
|
|
if( !data ) {
|
|
return;
|
|
}
|
|
console.log( "当前的数据相关" + JSON.stringify( this.config ) );
|
|
// 品質
|
|
let path = cc.path.join( "coms/images", "mk_partner_qa" + this.config.quality );
|
|
let spshow = ( this.config.quality == 5 || this.config.quality == 6 );
|
|
nx.gui.setSpriteFrame( this.nodQA, "qa", spshow ? null : path );
|
|
|
|
let spppath = "";
|
|
if( this.config.quality == 5 ){
|
|
spppath = "resDB/effects/E81054/action";
|
|
}else if( this.config.quality == 6 ){
|
|
spppath = "resDB/effects/E81058/action";
|
|
}
|
|
|
|
let sp = nx.gui.getComponent( this.nodQA, "qa/spine", "nx.fx.spine" );
|
|
if( sp && nx.dt.strNEmpty( spppath ) ){
|
|
sp.load( spppath, ( _e ) => {
|
|
if( !_e ) {
|
|
sp.action( "action", true );
|
|
} else {
|
|
sp.stop();
|
|
}
|
|
} );
|
|
}
|
|
|
|
nx.gui.setActive( this.nodQA, "qa/spine", spshow );
|
|
|
|
// 阵营
|
|
path = cc.path.join( "prefab/partner/ui/camp" + data.camp_type );
|
|
nx.gui.setSpriteFrame( this.nodQA, "camp", path );
|
|
|
|
// 描述
|
|
let desc = data.introduce_str || data.hero_pos || "";
|
|
nx.gui.setString( this.nodQA, "desc/txt", desc );
|
|
|
|
// 职业
|
|
let career = data.type || 4;
|
|
let icon = cc.path.join( "coms/images", "career" + career );
|
|
let name = nx.text.getKey( HeroConst.CareerName[ career ] ) || nx.text.getKey( "lab_none" );
|
|
nx.gui.setSpriteFrame( this.nodQA, "career/ico", icon );
|
|
nx.gui.setString( this.nodQA, "career/txt", nx.text.getKey( name ) );
|
|
|
|
// 星级
|
|
let snode = nx.gui.find( this.nodQA, "stars" );
|
|
for( let i = 0; i < snode.children.length; ++i ) {
|
|
let mk = i < data.init_star;
|
|
nx.gui.setColor( snode.children[ i ], "", mk ? cc.Color.WHITE : cc.Color.GRAY );
|
|
}
|
|
},
|
|
|
|
// 模型更新
|
|
updateModels: function() {
|
|
|
|
// 未知隐藏
|
|
let hide = false;
|
|
if( this.auto && this.config.statu == 0 ) {
|
|
hide = true;
|
|
}
|
|
|
|
this.spMini.stop();
|
|
this.spRole.stop();
|
|
nx.gui.setActive( this.nodEmpty, "", hide );
|
|
nx.gui.setActive( this.spMini, "", !hide );
|
|
nx.gui.setActive( this.spRole, "", !hide );
|
|
|
|
// 隐藏
|
|
if( hide ) {
|
|
return;
|
|
}
|
|
|
|
// 迷你
|
|
let path = PathTool.getSpinePath( this.config.resid, this.config.resid, false );
|
|
this.spMini.load( path, ( _e ) => {
|
|
if( !_e ) {
|
|
this.spMini.action( "stand2", true );
|
|
}
|
|
} );
|
|
|
|
// 大模型
|
|
path = PathTool.getSpinePath( this.config.resid, "show", false );
|
|
this.spRole.load( path, ( _e ) => {
|
|
if( !_e ) {
|
|
this.spRole.action( "action1", true );
|
|
}
|
|
} );
|
|
|
|
},
|
|
|
|
// 技能更新
|
|
updateSkills: function() {
|
|
|
|
let skills = this.config.skills;
|
|
let chds = this.nodSkills.children;
|
|
for( let i = 0; i < chds.length; ++i ) {
|
|
|
|
let sid = skills[ i ];
|
|
let node = chds[ i ];
|
|
node.active = nx.dt.numPositive( sid, false );
|
|
if( !node.active ) {
|
|
continue;
|
|
}
|
|
|
|
let cmp = node.getComponent( "cmp.skill.base" );
|
|
if( cmp ) {
|
|
cmp.setData( sid );
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
// 档案更新
|
|
updateDocument: function() {
|
|
|
|
let key = `story${ this.config.id }`;
|
|
let text = nx.text.getKey( key );
|
|
let arr = text.split( "#" );
|
|
|
|
nx.gui.setString( this.nodDoc, "name/txt", arr[ 0 ] );
|
|
nx.gui.setString( this.nodDoc, "camp/txt", arr[ 1 ] );
|
|
|
|
let detail = nx.gui.find( this.nodDoc, "detail/view/content" );
|
|
nx.gui.setString( detail, "survey/desc", arr[ 2 ] );
|
|
nx.gui.setString( detail, "experience/desc", arr[ 3 ] );
|
|
|
|
// 推荐阵容
|
|
this.updateTeams();
|
|
|
|
let layout = nx.gui.getComponent( detail, "", cc.Layout );
|
|
if( layout ) {
|
|
layout.updateLayout();
|
|
}
|
|
|
|
let scv = nx.gui.getComponent( this.nodDoc, "detail", cc.ScrollView );
|
|
if( scv ) {
|
|
scv.scrollToTop( 0 );
|
|
}
|
|
},
|
|
|
|
// 推荐阵容
|
|
updateTeams: function() {
|
|
|
|
// 阵容检索
|
|
let list = this.library.queryRecommondForms( this.bid );
|
|
if( nx.dt.arrNEmpty( list ) ) {
|
|
list.sort( ( _a, _b ) => {
|
|
return _b.pr - _a.pr;
|
|
} );
|
|
}
|
|
|
|
// 阵容设置
|
|
let hero = HeroController.getInstance().getModel();
|
|
let node = nx.gui.find( this.nodDoc, "detail/view/content/forms/list" );
|
|
let team = function( _form, _desc, _info ) {
|
|
|
|
// 空展示
|
|
if( nx.dt.objEmpty( _info ) ) {
|
|
nx.gui.setString( node, _desc, "" );
|
|
nx.gui.setActive( node, `${ _form }/list`, false );
|
|
nx.gui.setActive( node, `${ _form }/empty`, true );
|
|
return;
|
|
}
|
|
|
|
// 阵容刷新
|
|
nx.gui.setActive( node, `${ _form }/empty`, false );
|
|
nx.gui.setActive( node, `${ _form }/list`, true );
|
|
nx.gui.setString( node, _desc, _info.desc );
|
|
|
|
let list = nx.gui.find( node, `${ _form }/list` );
|
|
for( let i = 0; i < list.children.length; ++i ) {
|
|
let item = list.children[ i ];
|
|
let bid = _info.camp[ i ];
|
|
let have = hero.getHadHeroStarBybid( bid );
|
|
let cmp = item.getComponent( "cmp.item.base" );
|
|
if( cmp ) {
|
|
cmp.setData( bid );
|
|
!have ? cmp.onFocus() : cmp.outFocus();
|
|
}
|
|
}
|
|
}
|
|
|
|
team( "form1", "desc1", list[ 0 ] );
|
|
team( "form2", "desc2", list[ 1 ] );
|
|
|
|
},
|
|
|
|
// 点击阵容成员
|
|
onTouchMember: function( _btn ) {
|
|
|
|
let nod = _btn.parent.getComponent( "cmp.item.base" );
|
|
if( !nod ) {
|
|
return;
|
|
}
|
|
|
|
let key = nod.info.bid + "_" + nod.info.stars;
|
|
this.propsData = gdata( "partner_data", "data_partner_show", key );
|
|
this.propsData.star = nod.info.stars;
|
|
this.propsData.break_lev = 0;
|
|
TipsController.getInstance().showPartnerTips( this.propsData );
|
|
// console.log(JSON.stringify( nod.info ) + "数据" + JSON.stringify( nod.mdata ) );
|
|
},
|
|
|
|
// 奖励更新
|
|
updateReward: function() {
|
|
|
|
if( nx.dt.objEmpty( this.config ) ||
|
|
this.config.statu != 1 ) {
|
|
nx.gui.setActive( this.nodReward, "", false );
|
|
return;
|
|
}
|
|
|
|
nx.gui.setActive( this.nodReward, "", true );
|
|
|
|
let reward = this.config.reward[ 0 ];
|
|
nx.bridge.setIcon( this.nodReward, "num/icon", reward[ 0 ] );
|
|
nx.gui.setString( this.nodReward, "num/txt", ( reward[ 1 ] > 1 ) ? reward[ 1 ] : "" );
|
|
},
|
|
|
|
// 領取獎勵
|
|
onTouchReward: function() {
|
|
|
|
this.library.reqPartnerReward( this.bid, ( _ret, _data ) => {
|
|
|
|
if( !_ret ) {
|
|
nx.tbox( _data );
|
|
return;
|
|
}
|
|
|
|
nx.gui.setActive( this.nodReward, "", false );
|
|
} );
|
|
|
|
},
|
|
|
|
} );
|