300 lines
9.5 KiB
JavaScript
300 lines
9.5 KiB
JavaScript
/******************************************************************
|
|
*
|
|
* 伙伴信息页 --- 镶嵌
|
|
*
|
|
******************************************************************/
|
|
|
|
const BridgeComponent = require( "bridge.component" );
|
|
const MallConst = require( "mall_const" );
|
|
const HeroEvent = require( "hero_event" );
|
|
const HeroControl = require( "hero_controller" );
|
|
const TipsController = require( "tips_controller" );
|
|
|
|
cc.Class( {
|
|
|
|
extends: BridgeComponent,
|
|
|
|
properties: {
|
|
lstSkill: { default: null, type: cc.Node },
|
|
nodOps: { default: null, type: cc.Node },
|
|
},
|
|
|
|
// 显示
|
|
onEnable: function() {
|
|
|
|
// 视图监听
|
|
this.vbind( [
|
|
[ "ShowPartner", this.onPartnerChanged.bind( this ) ]
|
|
] );
|
|
|
|
// 事件监听
|
|
this.bindGEvent( HeroEvent.Hero_Forget_Talent_Event, this.onPartnerUpdate.bind( this ) );
|
|
this.bindGEvent( HeroEvent.Hero_Level_Up_Talent_Event, this.onPartnerUpdate.bind( this ) );
|
|
this.bindGEvent( HeroEvent.Hero_Get_Talent_Event, this.onPartnerUpdate.bind( this ) );
|
|
this.bindGEvent( HeroEvent.Hero_Learn_Talent_Event, this.onPartnerUpdate.bind( this ) );
|
|
},
|
|
|
|
// 隐藏
|
|
onDisable: function() {
|
|
|
|
// 视图监听解除
|
|
this.vunbind();
|
|
|
|
// 事件监听解除
|
|
this.unbindGEvents();
|
|
|
|
},
|
|
|
|
// 有伙伴数据更新
|
|
onPartnerUpdate: function( _vo ) {
|
|
|
|
// console.log( "變化數據" );
|
|
if( _vo &&
|
|
this.partner &&
|
|
_vo.partner_id == this.partner.partner_id ) {
|
|
this.onPartnerChanged( _vo );
|
|
nx.bridge.vset( "ShowPartner", _vo );
|
|
}
|
|
},
|
|
|
|
// 伙伴更新
|
|
onPartnerChanged: function( _partner ) {
|
|
|
|
this.partner = _partner;
|
|
|
|
// 判空
|
|
if( nx.dt.objEmpty( this.partner ) ) {
|
|
this.setEmpty();
|
|
return;
|
|
}
|
|
|
|
// 刷新
|
|
this.freshSkills();
|
|
},
|
|
|
|
// 置空
|
|
setEmpty: function() {
|
|
|
|
nx.gui.setActive( this, "mod/list", false );
|
|
nx.gui.setActive( this, "mod/ops", false );
|
|
},
|
|
|
|
// 刷新
|
|
freshSkills: function() {
|
|
|
|
const self = this;
|
|
const chds = this.lstSkill.children;
|
|
const sks = this.partner.talent_skill_list;
|
|
const cfgs = game.configs.partner_skill_data.data_partner_skill_pos;
|
|
const slvs = game.configs.partner_skill_data.data_partner_skill_level;
|
|
|
|
// 单刷
|
|
const fresh = function( _pos ) {
|
|
|
|
let cfg = cfgs[ _pos ];
|
|
let node = chds[ _pos - 1 ];
|
|
|
|
// 是否未解锁
|
|
if( nx.dt.arrNEmpty( cfg.pos_limit ) &&
|
|
cfg.pos_limit[ 0 ] == "star" &&
|
|
self.partner.star < cfg.pos_limit[ 1 ] ) {
|
|
nx.gui.setActive( node, "nor", false );
|
|
nx.gui.setActive( node, "empty", false );
|
|
nx.gui.setActive( node, "lock", true );
|
|
nx.gui.setString( node, "lock/txt", cfg.pos_limit[ 1 ] + nx.text.getKey( "lab_starOpen" ) );
|
|
return;
|
|
}
|
|
|
|
// 已经解锁
|
|
let sk = sks[ cfg.pos ];
|
|
if( sk ) {
|
|
let data = gskilldata( 'data_get_skill', sk );
|
|
if( data ) {
|
|
nx.gui.setActive( node, "empty", false );
|
|
nx.gui.setActive( node, "lock", false );
|
|
let nor = nx.gui.setActive( node, "nor", true );
|
|
if( nor ) {
|
|
let cmp = nx.gui.getComponent( nor, "icon", "cmp.skill.base" );
|
|
if( cmp ) {
|
|
cmp.setData( data );
|
|
}
|
|
|
|
let max = true;
|
|
let lcfg = slvs[ sk ];
|
|
if( lcfg && nx.dt.numPositive( lcfg.next_id, false ) ) {
|
|
max = false;
|
|
}
|
|
|
|
nx.gui.setActive( nor, "ops/up", !max );
|
|
nx.gui.setActive( nor, "level/txt", !max );
|
|
nx.gui.setActive( nor, "level/max", max );
|
|
if( !max ) {
|
|
nx.gui.setString( nor, "level/txt", "Lv." + data.level );
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
}
|
|
|
|
// 空
|
|
nx.gui.setActive( node, "nor", false );
|
|
nx.gui.setActive( node, "empty", true );
|
|
nx.gui.setActive( node, "lock", false );
|
|
|
|
};
|
|
|
|
// 技能刷新
|
|
nx.gui.setActive( this, "mod/list", true );
|
|
for( let pos in cfgs ) {
|
|
fresh( pos );
|
|
}
|
|
|
|
// 操作刷新
|
|
nx.gui.setActive( this, "mod/ops", true );
|
|
|
|
},
|
|
|
|
// 点击:技能学习
|
|
onTouchSKAdd: function( _pos ) {
|
|
|
|
console.log( "onTouchSKAdd:" + _pos );
|
|
let pos = parseInt( _pos );
|
|
if( !nx.dt.numPositive( pos, false ) ) {
|
|
nx.error( "无效技能位置:", _pos );
|
|
return;
|
|
}
|
|
|
|
let HC = HeroControl.getInstance();
|
|
HC.openHeroTalentSkillLearnPanel( true, this.partner, ( _id ) => {
|
|
let sid = parseInt( _id );
|
|
if( nx.dt.numPositive( sid, false ) ) {
|
|
HC.sender11096( this.partner.partner_id, pos, sid );
|
|
}
|
|
} );
|
|
|
|
},
|
|
|
|
// 点击:技能升级
|
|
onTouchSKUp: function( _pos ) {
|
|
|
|
console.log( "onTouchSKUp:" + _pos );
|
|
let pos = parseInt( _pos );
|
|
if( !nx.dt.numPositive( pos, false ) ) {
|
|
nx.error( "无效技能位置:", _pos );
|
|
return;
|
|
}
|
|
|
|
let id = this.partner.talent_skill_list[ _pos ];
|
|
if( !nx.dt.numPositive( id, false ) ) {
|
|
nx.error( "无效技能:", _pos, id );
|
|
return;
|
|
}
|
|
|
|
let HC = HeroControl.getInstance();
|
|
HC.openHeroTalentSkillLevelUpPanel( true, this.partner, id, ( _ret ) => {
|
|
if( _ret ) {
|
|
HC.sender11097( this.partner.partner_id, pos );
|
|
}
|
|
});
|
|
|
|
},
|
|
|
|
// 点击:技能遗忘
|
|
onTouchSKDel: function( _pos ) {
|
|
|
|
console.log( "onTouchSKDel:" + _pos );
|
|
let pos = parseInt( _pos );
|
|
if( !nx.dt.numPositive( pos, false ) ) {
|
|
nx.error( "无效技能位置:", _pos );
|
|
return;
|
|
}
|
|
|
|
let id = this.partner.talent_skill_list[ _pos ];
|
|
if( !nx.dt.numPositive( id, false ) ) {
|
|
nx.error( "无效技能:", _pos, id );
|
|
return;
|
|
}
|
|
|
|
// 文本组织
|
|
let HC = HeroControl.getInstance();
|
|
let str = nx.text.getKey( "AskForgetTalent" );
|
|
let cbk = game.configs.partner_skill_data.data_partner_skill_back[ id ];
|
|
if( nx.dt.objNEmpty( cbk ) && nx.dt.arrNEmpty( cbk.expend ) ) {
|
|
|
|
// 需要
|
|
let frame_arrays = [];
|
|
str = nx.text.getKey( "lab_hero_talent_skill_level_up_window_tip4" );
|
|
for( let i = 0; i < cbk.expend.length; ++i ) {
|
|
let v = cbk.expend[ i ]
|
|
let item_config = Utils.getItemConfig( v[ 0 ] )
|
|
if( item_config ) {
|
|
if( i != 0 ) {
|
|
str = str + ", "
|
|
}
|
|
let good_res_path = "3";
|
|
let text = StringUtil.parseStr( nx.text.getKey( "<img src=%s visible=true scale=0.32 /><div fontColor=#289b14 fontsize= 24>%s</div>" ) ).string
|
|
let good_path = PathTool.getIconPath( "items", "3" );
|
|
frame_arrays.push( good_path );
|
|
let str1 = cc.js.formatStr( text, good_res_path, v[ 1 ] )
|
|
str = str + str1
|
|
}
|
|
}
|
|
|
|
// 返还
|
|
if( cbk.award1.length > 0 ) {
|
|
str = str + nx.text.getKey( "lab_hero_talent_skill_level_up_window_tip5" )
|
|
for( let i = 0; i < cbk.award1.length; ++i ) {
|
|
let v = cbk.award1[ i ]
|
|
let item_config = Utils.getItemConfig( v[ 0 ] )
|
|
if( item_config ) {
|
|
if( i != 0 ) {
|
|
str = str + ", "
|
|
}
|
|
let good_res_path = item_config.icon
|
|
let text = StringUtil.parseStr( nx.text.getKey( "<img src=%s visible=true scale=0.32 /><div fontColor=#289b14 fontsize= 24>%s</div>" ) ).string
|
|
let good_path = PathTool.getIconPath( "items", item_config.icon );
|
|
frame_arrays.push( good_path );
|
|
let str1 = cc.js.formatStr( text, good_res_path, v[ 1 ] )
|
|
str = str + str1
|
|
}
|
|
}
|
|
str = str + ")"
|
|
}
|
|
}
|
|
|
|
let self = this;
|
|
let pid = this.partner.partner_id;
|
|
nx.mbox( str, [ 'cancel', 'confirm' ], ( _key, _box ) => {
|
|
_box.close();
|
|
if( _key == 'confirm' ) {
|
|
HC.sender11098( pid, pos );
|
|
// self.close();
|
|
}
|
|
} );
|
|
|
|
},
|
|
|
|
// 点击:说明
|
|
onTouchHelp: function() {
|
|
|
|
const data = game.configs.partner_skill_data.data_partner_skill_const.skill_rule;
|
|
if( nx.dt.objNEmpty( data ) && nx.dt.strNEmpty( data.desc ) ) {
|
|
const TC = TipsController.getInstance();
|
|
TC.showTextPanel( "tip", data.desc );
|
|
}
|
|
},
|
|
|
|
// 点击:预览
|
|
onTouchPreview: function() {
|
|
|
|
let HC = HeroControl.getInstance();
|
|
HC.openArtifactSkillWindow( true, 2 );
|
|
},
|
|
|
|
// 点击:商店
|
|
onTouchShop: function() {
|
|
nx.bridge.jumper.jump2Window ( 2, [MallConst.MallType.SkillShop] );
|
|
},
|
|
|
|
} );
|