313 lines
9.4 KiB
JavaScript
313 lines
9.4 KiB
JavaScript
|
|
/******************************************************************
|
||
|
|
*
|
||
|
|
* 伙伴信息页 --- 战斗义肢相关
|
||
|
|
*
|
||
|
|
******************************************************************/
|
||
|
|
|
||
|
|
const BridgeComponent = require( "bridge.component" );
|
||
|
|
const HeroConst = require( "hero_const" );
|
||
|
|
const HeroEvent = require( "hero_event" );
|
||
|
|
const HeroControl = require( "hero_controller" );
|
||
|
|
const TipsController = require( "tips_controller" );
|
||
|
|
const HEHY = HeroConst.HolyequipmentPosList;
|
||
|
|
const BattleController = require( "battle_controller" );
|
||
|
|
const BattleConst = require( "battle_const" );
|
||
|
|
const PrayMod = require( "pray.mod" );
|
||
|
|
const NxSpine = require( "nx.fx.spine" );
|
||
|
|
|
||
|
|
cc.Class( {
|
||
|
|
|
||
|
|
extends: BridgeComponent,
|
||
|
|
|
||
|
|
properties: {
|
||
|
|
nodSlots: { default: null, type: cc.Node },
|
||
|
|
nodEnergy: { default: null, type: cc.Node },
|
||
|
|
nodSuit: { default: null, type: NxSpine },
|
||
|
|
},
|
||
|
|
|
||
|
|
// 显示
|
||
|
|
onEnable: function() {
|
||
|
|
|
||
|
|
// 视图监听
|
||
|
|
this.vbind( [
|
||
|
|
[ "ShowPartner", this.onPartnerChanged.bind( this ) ]
|
||
|
|
] );
|
||
|
|
|
||
|
|
// // 事件监听 刷新当前的战斗义肢相关
|
||
|
|
this.bindGEvent( HeroEvent.Holy_Equipment_Update_Event, this.onPartnerUpdate.bind( this ) );
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
// 隐藏
|
||
|
|
onDisable: function() {
|
||
|
|
|
||
|
|
// 视图监听解除
|
||
|
|
this.vunbind();
|
||
|
|
|
||
|
|
// 事件监听解除
|
||
|
|
this.unbindGEvents();
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
// 有伙伴数据更新
|
||
|
|
onPartnerUpdate: function( _vo ) {
|
||
|
|
|
||
|
|
if( _vo &&
|
||
|
|
this.partner &&
|
||
|
|
_vo.partner_id == this.partner.partner_id ) {
|
||
|
|
this.onPartnerChanged( _vo );
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
// 伙伴更新
|
||
|
|
onPartnerChanged: function( _partner ) {
|
||
|
|
|
||
|
|
this.partner = _partner;
|
||
|
|
|
||
|
|
// 判空
|
||
|
|
if( nx.dt.objEmpty( this.partner ) ) {
|
||
|
|
this.setEmpty();
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 刷新
|
||
|
|
this.freshUIBySlots();
|
||
|
|
},
|
||
|
|
|
||
|
|
// 置空
|
||
|
|
setEmpty: function() {
|
||
|
|
|
||
|
|
nx.gui.setActive( this, "mod/list", false );
|
||
|
|
nx.gui.setActive( this, "mod/ops", false );
|
||
|
|
},
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
freshUIBySlots: function( _data ){
|
||
|
|
|
||
|
|
// 空处理
|
||
|
|
let slots = this.nodSlots;
|
||
|
|
let self = this;
|
||
|
|
let enode = this.nodEnergy;
|
||
|
|
let holy_eqm_list = HeroControl.getInstance().getModel().getHeroHolyEquipList( this.partner.partner_id ) || {};
|
||
|
|
|
||
|
|
let empty = function( _sc = false ) {
|
||
|
|
|
||
|
|
// 卡槽置空
|
||
|
|
slots.children.forEach( _c => {
|
||
|
|
nx.gui.setActive( _c, "item", false );
|
||
|
|
nx.gui.setActive( _c, "tip", false );
|
||
|
|
nx.gui.setActive( _c, "empty", true );
|
||
|
|
} );
|
||
|
|
|
||
|
|
nx.gui.hideAllChildren( enode );
|
||
|
|
};
|
||
|
|
// empty( true );
|
||
|
|
// 判空
|
||
|
|
if( nx.dt.objEmpty( this.partner ) || nx.dt.objEmpty( holy_eqm_list ) ) {
|
||
|
|
empty( true );
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
for ( let pos in HEHY ) {
|
||
|
|
let eqm = holy_eqm_list[pos];
|
||
|
|
// 当前装备
|
||
|
|
let emt = nx.dt.objEmpty( eqm );
|
||
|
|
|
||
|
|
let slot = nx.gui.find( slots, "slot" + pos );
|
||
|
|
nx.gui.setActive( slot, "item", !emt );
|
||
|
|
nx.gui.setActive( slot, "empty", emt );
|
||
|
|
nx.gui.setActive( slot, "tip", false );
|
||
|
|
|
||
|
|
if( !emt ){
|
||
|
|
let posid = parseInt( pos );
|
||
|
|
let uiPos = 0;
|
||
|
|
switch( posid ){
|
||
|
|
case 23 : { uiPos = 1 };break;
|
||
|
|
case 24 : { uiPos = 3 };break;
|
||
|
|
case 25 : { uiPos = 2 };break;
|
||
|
|
case 26 : { uiPos = 4 };break;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
let path = cc.path.join( "prefab/partner/holy/ui/" + ( parseInt( eqm.config.eqm_set / 100 ) ) + "-" + uiPos );
|
||
|
|
nx.gui.setSpriteFrame( enode, ( "e"+ pos ), path );
|
||
|
|
}
|
||
|
|
|
||
|
|
nx.gui.setActive( enode, ( "e"+ pos ), !emt );
|
||
|
|
if( !emt ) {
|
||
|
|
let cmp = nx.gui.getComponent( slot, "item", "cmp.item.base" );
|
||
|
|
if( cmp ) {
|
||
|
|
cmp.setData( eqm );
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
let suitPath = "";
|
||
|
|
let suitType = 0;
|
||
|
|
let holyeqms = HeroControl.getInstance().getModel().getHeroHolyEquipList( this.partner.partner_id );;
|
||
|
|
let lst = HeroControl.getInstance().getModel().getHolyEquipSuitDes( holyeqms );
|
||
|
|
if( nx.dt.arrNEmpty( lst ) ){
|
||
|
|
for (let l = 0; l < lst.length; l++) {
|
||
|
|
let suit = lst[l];
|
||
|
|
if( suit.num == 4 ){
|
||
|
|
suitType = parseInt( suit.id % 100 );
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
switch( suitType ){
|
||
|
|
case 1 : { suitPath = "resDB/effects/E99992/action" }; break;
|
||
|
|
case 2 : { suitPath = "resDB/effects/E99993/action" }; break;
|
||
|
|
case 3 : { suitPath = "resDB/effects/E99994/action" }; break;
|
||
|
|
case 4 : { suitPath = "resDB/effects/E99995/action" }; break;
|
||
|
|
case 5 : { suitPath = "resDB/effects/E99996/action" }; break;
|
||
|
|
}
|
||
|
|
|
||
|
|
if( nx.dt.strNEmpty( suitPath ) ){
|
||
|
|
this.nodSuit.load( suitPath, ( _e ) => {
|
||
|
|
if( !_e ) {
|
||
|
|
this.nodSuit.action( "action", true );
|
||
|
|
} else {
|
||
|
|
this.nodSuit.stop();
|
||
|
|
}
|
||
|
|
} );
|
||
|
|
nx.gui.setActive( this.nodSuit.node, "", true );
|
||
|
|
}else{
|
||
|
|
nx.gui.setActive( this.nodSuit.node, "", false );
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
onTouchSlot: function( _partId ){
|
||
|
|
|
||
|
|
let stype = parseInt( _partId );
|
||
|
|
// 取相关的战斗义肢
|
||
|
|
// 点击装备槽
|
||
|
|
const self = this;
|
||
|
|
const HC = HeroControl.getInstance();
|
||
|
|
const eqms = HeroControl.getInstance().getModel().getHeroHolyEquipList( this.partner.partner_id );
|
||
|
|
const eqm = eqms[ _partId ];
|
||
|
|
|
||
|
|
// 脱下
|
||
|
|
const takeoff = function() {
|
||
|
|
HC.sender11093( self.partner.partner_id, eqm.id, 0 );
|
||
|
|
};
|
||
|
|
|
||
|
|
// 洗炼
|
||
|
|
const refinement = function() {
|
||
|
|
HC.openHolyequipmentRefreshAttPanel( true, eqm, self.partner );
|
||
|
|
};
|
||
|
|
|
||
|
|
let partner = HC.getModel().getHeroById( self.partner.partner_id );
|
||
|
|
// 更换
|
||
|
|
const change = function() {
|
||
|
|
/*********
|
||
|
|
* "list":[{"partner_id":17,"item_id":4},{"partner_id":17,"item_id":2},{"partner_id":17,"item_id":3},{"partner_id":17,"item_id":1}]
|
||
|
|
*/
|
||
|
|
let holyLst = [];
|
||
|
|
let eqms = HeroControl.getInstance().getModel().getHeroHolyEquipList( self.partner.partner_id );
|
||
|
|
for (let i in eqms ) {
|
||
|
|
let eqm = eqms[i];
|
||
|
|
holyLst.push( {
|
||
|
|
partner_id: self.partner.partner_id,
|
||
|
|
item_id : eqm.id,
|
||
|
|
} )
|
||
|
|
}
|
||
|
|
// console.log( "当前的伙伴战斗义肢携带信息" + JSON.stringify( holyLst ) );
|
||
|
|
HC.openHolyChangePanel( true, stype, partner, holyLst, ( _id, _panel ) => {
|
||
|
|
// _panel.close();
|
||
|
|
HC.sender11093( self.partner.partner_id, _id , 1 );
|
||
|
|
}, ( _data ) =>{
|
||
|
|
HC.sender11093( _data.partner.partner_id, _data.eqm , 0 );
|
||
|
|
} );
|
||
|
|
};
|
||
|
|
|
||
|
|
// 当前装备操作
|
||
|
|
if( eqm ) {
|
||
|
|
HC.openEquipChangePanel( true, eqm, ( _op, _panel ) => {
|
||
|
|
_panel.close();
|
||
|
|
if( _op == "takeoff" ) { takeoff(); }
|
||
|
|
if( _op == "change" ) { change(); }
|
||
|
|
if( _op == "refinement" ) { refinement(); }
|
||
|
|
} );
|
||
|
|
}
|
||
|
|
// 新装备穿戴
|
||
|
|
else {
|
||
|
|
change();
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
// 点击:说明
|
||
|
|
onTouchHelp: function() {
|
||
|
|
|
||
|
|
const data = game.configs.partner_holy_eqm_data.data_const.game_rule_1;
|
||
|
|
if( nx.dt.objNEmpty( data ) && nx.dt.strNEmpty( data.desc ) ) {
|
||
|
|
const TC = TipsController.getInstance();
|
||
|
|
TC.showTextPanel( "tip", data.desc );
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
// 点击:预览
|
||
|
|
onTouchPreview: function() {
|
||
|
|
let titles = [];
|
||
|
|
let top_titles = game.configs.partner_holy_eqm_data.data_suit_res_prefix;
|
||
|
|
|
||
|
|
for (let i in top_titles ) {
|
||
|
|
let title = top_titles[i];
|
||
|
|
titles.push( title );
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
// game.configs.partner_holy_eqm_data.data_const.handbook_unlock_condition;
|
||
|
|
let HC = HeroControl.getInstance();
|
||
|
|
HC.openHeroClothesLustratWindow( true, titles );
|
||
|
|
// HC.openArtifactSkillWindow( true, 2 );
|
||
|
|
},
|
||
|
|
|
||
|
|
// 点击:商店
|
||
|
|
onTouchShop: function() {
|
||
|
|
|
||
|
|
let pray = PrayMod.getInstance();
|
||
|
|
let score = pray.getScore();
|
||
|
|
nx.bridge.createPanel( "WndHolyPrayShop", {
|
||
|
|
score : score,
|
||
|
|
} );
|
||
|
|
},
|
||
|
|
|
||
|
|
// 点击:祈禱
|
||
|
|
onTouchPray: function() {
|
||
|
|
|
||
|
|
nx.bridge.createPanel( "WndHolyPray" );
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
onTouchAssemble: function() {
|
||
|
|
let HC = HeroControl.getInstance();
|
||
|
|
let model = HC.getModel();
|
||
|
|
let plans = model.getHolyEquipmentPlanDatad();
|
||
|
|
let partner = model.getHeroById( this.partner.partner_id );
|
||
|
|
HC.openHolyequipmentPlanPanel( true, plans, partner );
|
||
|
|
},
|
||
|
|
|
||
|
|
// 点击:属性加成
|
||
|
|
onTouchBonus: function() {
|
||
|
|
let HC = HeroControl.getInstance();
|
||
|
|
HC.sender11086( this.partner.partner_id );
|
||
|
|
},
|
||
|
|
|
||
|
|
|
||
|
|
onTouchDun: function(){
|
||
|
|
|
||
|
|
BattleController.getInstance().requestOpenBattleRelevanceWindow( BattleConst.Fight_Type.HeavenWar );
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
} );
|