882 lines
29 KiB
JavaScript
882 lines
29 KiB
JavaScript
|
|
/******************************************************************
|
||
|
|
*
|
||
|
|
* 僚机装配
|
||
|
|
*
|
||
|
|
******************************************************************/
|
||
|
|
|
||
|
|
const BridgeWindow = require( "bridge.window" );
|
||
|
|
const HeroController = require( "hero_controller" );
|
||
|
|
const BackpackController = require( "backpack_controller" );
|
||
|
|
const BackPackConst = require( "backpack_const" );
|
||
|
|
|
||
|
|
const FxSVC = require( "nx.fx.sv.expand" );
|
||
|
|
const ElfinEvent = require( "elfin_event" );
|
||
|
|
const ElfinController = require( "elfin_controller" );
|
||
|
|
const ItemBase = require( "cmp.item.base" );
|
||
|
|
|
||
|
|
cc.Class( {
|
||
|
|
|
||
|
|
extends: BridgeWindow,
|
||
|
|
|
||
|
|
properties: {
|
||
|
|
|
||
|
|
defaultScheme : {
|
||
|
|
default: [],
|
||
|
|
type : cc.Node,
|
||
|
|
displayName: "默认",
|
||
|
|
},
|
||
|
|
|
||
|
|
svcschemeList : {
|
||
|
|
default: null,
|
||
|
|
type : FxSVC,
|
||
|
|
displayName: "方案列表",
|
||
|
|
},
|
||
|
|
|
||
|
|
svcwingsList : {
|
||
|
|
default: null,
|
||
|
|
type : FxSVC,
|
||
|
|
displayName: "僚机列表",
|
||
|
|
},
|
||
|
|
|
||
|
|
skill: {
|
||
|
|
default: null,
|
||
|
|
type : cc.Node,
|
||
|
|
displayName: "技能展示",
|
||
|
|
},
|
||
|
|
|
||
|
|
buy : {
|
||
|
|
default: null,
|
||
|
|
type : cc.Node,
|
||
|
|
displayName: "解锁按钮",
|
||
|
|
}
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
onLoad: function() {
|
||
|
|
|
||
|
|
this.bindGEvent( ElfinEvent.Elfin_Plan_Info_Event, this.freshSchemeList.bind( this) );
|
||
|
|
this.bindGEvent( ElfinEvent.Elfin_Plan_Update_Event, this.freshSchemeItem.bind( this) );
|
||
|
|
this.bindGEvent( ElfinEvent.Elfin_Plan_From_Info_Event, this.freshDefaultSchemeInfo.bind( this) );
|
||
|
|
this.type = 100;
|
||
|
|
this.team = 1;
|
||
|
|
this.select_wing = -1;
|
||
|
|
this.sid = -1;
|
||
|
|
this.defaultLst = [];
|
||
|
|
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
onEnable: function(){
|
||
|
|
// 视图监听
|
||
|
|
this.vbind( [
|
||
|
|
[ "ShowWingPos", this.onFocusSchemeChanged.bind( this ) ]
|
||
|
|
] );
|
||
|
|
},
|
||
|
|
|
||
|
|
// 重载:参数打开
|
||
|
|
onOpenConfigs: function( _params ) {
|
||
|
|
|
||
|
|
// this.schemes = [];
|
||
|
|
// 当前选择的僚机序号
|
||
|
|
this.select_pos = 0;
|
||
|
|
this.team = _params.team;
|
||
|
|
this.type = _params.type >= 0 ? _params.type : this.type ;
|
||
|
|
// console.log( _params.type + "当前的类型-------" + this.type );
|
||
|
|
if( _params.setting ){
|
||
|
|
this.default = _params.setting.cur_plan_data || this.default;
|
||
|
|
}
|
||
|
|
|
||
|
|
let Elfin = ElfinController.getInstance();
|
||
|
|
Elfin.send26556();
|
||
|
|
if( this.type != 100 ){
|
||
|
|
Elfin.send26555( this.type );
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
// 操作方案的当前所选的位置
|
||
|
|
// this.freshSchemeList();
|
||
|
|
},
|
||
|
|
|
||
|
|
// 重载:关闭前
|
||
|
|
onPreClosed: function() {
|
||
|
|
|
||
|
|
nx.bridge.vset( "ShowWingPos", null );
|
||
|
|
this.svcschemeList.rebuild( [] );
|
||
|
|
this.svcwingsList.rebuild( [] );
|
||
|
|
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
|
||
|
|
// 刷新所有的方案列表
|
||
|
|
freshSchemeList : function( _scheme ){
|
||
|
|
|
||
|
|
let ElfinCtl = ElfinController.getInstance();
|
||
|
|
let model = ElfinCtl.getModel();
|
||
|
|
// if( _scheme && _scheme.plan_list ){
|
||
|
|
// _scheme.plan_list.sort( Utils.tableLowerSorter( [ "id" ] ) )
|
||
|
|
// }
|
||
|
|
this.schemes = model.getAllPlanData() ;
|
||
|
|
// let formLst = model.getFormOn();
|
||
|
|
|
||
|
|
// console.log( "当前的上阵或者方案信息" + JSON.stringify( formLst ) );
|
||
|
|
this.defaultLst = [];
|
||
|
|
this.svcschemeList.rebuild( this.schemes );
|
||
|
|
// console.log( "当前的选择是" + this.select_pos );
|
||
|
|
// 处理默认方案
|
||
|
|
let defaultSchemeInfo = [];
|
||
|
|
if( this.default ){
|
||
|
|
defaultSchemeInfo = this.default.sprites;
|
||
|
|
}else{
|
||
|
|
defaultSchemeInfo = model.getDedefaultElfinInfo();
|
||
|
|
}
|
||
|
|
// console.log( JSON.stringify( _scheme ) + "当前的默认方案数据model" + JSON.stringify( defaultSchemeInfo ) );
|
||
|
|
let chd = this.defaultScheme;
|
||
|
|
for (let i = 0; i < defaultSchemeInfo.length; i++) {
|
||
|
|
let cmp = chd[i].getComponent( ItemBase );
|
||
|
|
if( cmp ){
|
||
|
|
|
||
|
|
if( i == 0 ){
|
||
|
|
cmp.onFocus();
|
||
|
|
|
||
|
|
}
|
||
|
|
cmp.setLocked( false );
|
||
|
|
cmp.setData( defaultSchemeInfo[i].item_bid );
|
||
|
|
if( defaultSchemeInfo[i].item_bid == 0 ){
|
||
|
|
this.defaultLst.push( defaultSchemeInfo[i].item_bid );
|
||
|
|
}else {
|
||
|
|
if( !nx.dt.arrMember( this.defaultLst, defaultSchemeInfo[i].item_bid) ){
|
||
|
|
this.defaultLst.push( defaultSchemeInfo[i].item_bid );
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
this.onFocusNod( 0 );
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
// 获取所有的僚机信息
|
||
|
|
let BC = BackpackController.getInstance();
|
||
|
|
let BCModel = BC.getModel();
|
||
|
|
let allElfins = BCModel.getAllBackPackArray(BackPackConst.item_sub_type.ELFIN);
|
||
|
|
allElfins.forEach( _elfin => {
|
||
|
|
if( nx.dt.arrMember( this.defaultLst, _elfin.base_id ) ){
|
||
|
|
_elfin.sortid = 1;
|
||
|
|
}else{
|
||
|
|
_elfin.sortid = 0;
|
||
|
|
}
|
||
|
|
} )
|
||
|
|
|
||
|
|
allElfins.sort( ( a, b ) =>{
|
||
|
|
return b.sortid - a.sortid ;
|
||
|
|
} )
|
||
|
|
|
||
|
|
// console.log( "当前的上阵僚机数据初始" + JSON.stringify( allElfins ) );
|
||
|
|
nx.gui.setActive( this.svcwingsList, "empty", nx.dt.arrEmpty( allElfins ) );
|
||
|
|
|
||
|
|
this.svcwingsList.rebuild( allElfins );
|
||
|
|
this.svcwingsList.cleanFocus();
|
||
|
|
|
||
|
|
// 引导辅助
|
||
|
|
if( nx.bridge.plot && nx.bridge.plot.isDoing() ) {
|
||
|
|
this.positionDoPlot();
|
||
|
|
}
|
||
|
|
|
||
|
|
// this.scheduleOnce( ()=>{
|
||
|
|
this.onFreshFocus();
|
||
|
|
// }, 0.1 );
|
||
|
|
|
||
|
|
// this.freshBuy();
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
|
||
|
|
onFreshFocus: function(){
|
||
|
|
|
||
|
|
let nodes = nx.gui.find( this.svcwingsList.bindSCV, "view/content" ).children;
|
||
|
|
// console.log( "当前的方案处理www" + JSON.stringify( this.defaultLst ) );
|
||
|
|
for (let i = 0; i < nodes.length; i++) {
|
||
|
|
|
||
|
|
let sitem = nodes[i];
|
||
|
|
if( sitem ){
|
||
|
|
let cmp = sitem.svItem;
|
||
|
|
// console.log( defaultSchemeInfo[0].item_bid + "当前的方案处理www" + Object.keys( sitem ) );
|
||
|
|
if( cmp ){
|
||
|
|
|
||
|
|
if( nx.dt.arrMember( this.defaultLst, cmp.mdata.base_id ) ){
|
||
|
|
this.svcwingsList.addFocus( i );
|
||
|
|
}else{
|
||
|
|
this.svcwingsList.removeFocus( i );
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
// 选中切换 僚机机库
|
||
|
|
onFocusChanged: function( _item ) {
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
let defaultSelect = this.defaultScheme[this.select_pos];
|
||
|
|
let cmp = defaultSelect.getComponent( ItemBase );
|
||
|
|
let fun = [];
|
||
|
|
if( cmp ){
|
||
|
|
|
||
|
|
if( _item.mdata.base_id == cmp.mdata ){
|
||
|
|
|
||
|
|
this.svcwingsList.removeFocus( _item.index );
|
||
|
|
let idx = this.defaultLst.indexOf( _item.mdata.base_id );
|
||
|
|
this.defaultLst[idx] = 0;
|
||
|
|
let data = nx.dt.objClone( _item.mdata ) || {};
|
||
|
|
data.base_id = 0;
|
||
|
|
this.freshWingInScheme( data );
|
||
|
|
}else{
|
||
|
|
this.unscheduleAllCallbacks();
|
||
|
|
if( nx.dt.arrMember( this.defaultLst, _item.mdata.base_id ) ){
|
||
|
|
let nodes = nx.gui.find( this.svcwingsList.bindSCV, "view/content" ).children;
|
||
|
|
// console.log( "当前的方案处理www" );
|
||
|
|
for (let i = 0; i < nodes.length; i++) {
|
||
|
|
|
||
|
|
let sitem = nodes[i];
|
||
|
|
if( sitem ){
|
||
|
|
let cmp = sitem.svItem;
|
||
|
|
// console.log( defaultSchemeInfo[0].item_bid + "当前的方案处理www" + Object.keys( sitem ) );
|
||
|
|
if( cmp ){
|
||
|
|
if( cmp.mdata.base_id == _item.mdata.base_id ){
|
||
|
|
// if( nx.dt.arrMember( this.defaultLst, cmp.mdata.base_id ) ){
|
||
|
|
// this.svcwingsList.removeFocus( i );
|
||
|
|
for (let d = 0; d < this.defaultScheme.length; d++) {
|
||
|
|
let nod = this.defaultScheme[d];
|
||
|
|
let dcmp = nod.getComponent( ItemBase );
|
||
|
|
if( dcmp ){
|
||
|
|
if( dcmp.mdata == _item.mdata.base_id ){
|
||
|
|
|
||
|
|
dcmp.setData( 0 );
|
||
|
|
let idx = this.defaultLst.indexOf( _item.mdata.base_id );
|
||
|
|
this.defaultLst[idx] = 0;
|
||
|
|
this.svcwingsList.removeFocus( _item.index );
|
||
|
|
this.onFocusNod( d );
|
||
|
|
// this.freshSkillDesc( _item.index ,_item.mdata );
|
||
|
|
// this.defaultLst = this.svcwingsList.focusList;
|
||
|
|
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
// }
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
this.svcwingsList.addFocus( _item.index );
|
||
|
|
this.defaultLst[this.select_pos] = _item.mdata.base_id;
|
||
|
|
|
||
|
|
// this.freshSkillDesc( _item.index ,_item.mdata );
|
||
|
|
this.freshWingInScheme( _item.mdata );
|
||
|
|
for (let d = 0; d < this.defaultScheme.length; d++) {
|
||
|
|
let nod = this.defaultScheme[d];
|
||
|
|
let dcmp = nod.getComponent( ItemBase );
|
||
|
|
if( dcmp ){
|
||
|
|
|
||
|
|
if( dcmp.mdata && typeof( dcmp.mdata ) != "number" ){
|
||
|
|
fun.push( ()=>{
|
||
|
|
this.onFocusNod( d );
|
||
|
|
} )
|
||
|
|
|
||
|
|
break;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
if( nx.dt.arrNEmpty( fun ) ){
|
||
|
|
this.scheduleOnce( fun[0], 0.3 );
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
// 选中切择pos 默认操作方案 取消可以下阵僚机的操作
|
||
|
|
onFocusNod: function( _index ) {
|
||
|
|
|
||
|
|
this.sid = -1;
|
||
|
|
this.freshOtherSchemeFocus();
|
||
|
|
for (let i = 0; i < this.defaultScheme.length; i++) {
|
||
|
|
|
||
|
|
let selectNode = this.defaultScheme[i];
|
||
|
|
let cmp = selectNode.getComponent( ItemBase );
|
||
|
|
if( cmp ){
|
||
|
|
if( _index == i ){
|
||
|
|
if( !cmp.mdata ){
|
||
|
|
nx.tbox( nx.text.format( "FortressLevel_Unlocked", i ) );
|
||
|
|
this.defaultScheme[this.select_pos].getComponent( ItemBase ).onFocus();
|
||
|
|
return;
|
||
|
|
}else{
|
||
|
|
cmp.onFocus();
|
||
|
|
this.select_pos = _index;
|
||
|
|
// console.log( this.select_pos + "当前的数据节点" + JSON.stringify( cmp.mdata ) );
|
||
|
|
if( !nx.dt.objGood( cmp.mdata ) ){
|
||
|
|
|
||
|
|
this.freshSkillDesc( cmp.mdata );
|
||
|
|
// this.onFocusChanged( data );
|
||
|
|
}else{
|
||
|
|
this.freshSkillDesc( 0 );
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
}else{
|
||
|
|
|
||
|
|
cmp.outFocus();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
// 选中切换 僚机方案
|
||
|
|
onFocusSchemeChanged: function( _item ) {
|
||
|
|
|
||
|
|
this.unscheduleAllCallbacks();
|
||
|
|
if( !_item ){
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
let snode = nx.gui.find( this.svcschemeList, "view/content" );
|
||
|
|
// console.log( JSON.stringify( _item ) + "当前的默认方案配置" + snode );
|
||
|
|
if( snode ){
|
||
|
|
let nodes = snode.children;
|
||
|
|
|
||
|
|
// console.log( JSON.stringify( schemes ) + "当前的默认方案配置" + JSON.stringify( defaultSchemeInfo ) );
|
||
|
|
let dealui = function( _index, _node ){
|
||
|
|
|
||
|
|
let ElfinCtl = ElfinController.getInstance();
|
||
|
|
let model = ElfinCtl.getModel();
|
||
|
|
let defaultSchemeInfo = model.getDedefaultElfinInfo();
|
||
|
|
let schemes = model.getAllPlanData() ;
|
||
|
|
if( schemes[_index] ){
|
||
|
|
schemes[_index].plan_sprites = defaultSchemeInfo;
|
||
|
|
|
||
|
|
_node.rebind( _index, schemes[_index] );
|
||
|
|
self.scheduleOnce( () =>{
|
||
|
|
_node.onTouchSave( self.type, self.team );
|
||
|
|
}, 0.3 );
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
let self = this;
|
||
|
|
let selectNode = nodes[_item.index];
|
||
|
|
// console.log( JSON.stringify( this.defaultLst ) +"当前预设方案的数据" + JSON.stringify( _item ) );
|
||
|
|
if( selectNode ){
|
||
|
|
if( nx.dt.arrCompare( this.defaultLst,_item.lst ) ){
|
||
|
|
|
||
|
|
if( selectNode.svItem ){
|
||
|
|
selectNode.svItem.onTouchSave( self.type, self.team );
|
||
|
|
}
|
||
|
|
}else{
|
||
|
|
nx.mbox( "ASSAskConfirm", ['yes'], ( _key, _box ) => {
|
||
|
|
_box.close();
|
||
|
|
if( _key == 'yes' ) {
|
||
|
|
|
||
|
|
self.onTouchSave();
|
||
|
|
|
||
|
|
self.scheduleOnce( ()=>{
|
||
|
|
dealui( _item.index, selectNode.svItem );
|
||
|
|
}, 0.6 );
|
||
|
|
|
||
|
|
}
|
||
|
|
} );
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
// 处理 点击方案列表,点击选择僚机,僚机放置到对应的方案中
|
||
|
|
freshWingInScheme: function( _wing ){
|
||
|
|
|
||
|
|
let EC = ElfinController.getInstance();
|
||
|
|
let model = EC.getModel();
|
||
|
|
let schemes = model.getAllPlanData();
|
||
|
|
|
||
|
|
if( this.sid < 0 ){
|
||
|
|
|
||
|
|
let defaultSchemeInfo = model.getDedefaultElfinInfo();
|
||
|
|
let scheme = nx.dt.objClone( defaultSchemeInfo );
|
||
|
|
|
||
|
|
if( scheme ){
|
||
|
|
|
||
|
|
if( scheme[this.select_pos] ){
|
||
|
|
scheme[this.select_pos].item_bid = _wing.base_id;
|
||
|
|
this.freshDefaultScheme( scheme );
|
||
|
|
}else{
|
||
|
|
nx.tbox( "locked" );
|
||
|
|
let cmp = this.defaultScheme[this.select_pos].getComponent( ItemBase );
|
||
|
|
if( cmp )
|
||
|
|
{
|
||
|
|
cmp.onFocus();
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}else{
|
||
|
|
// console.log( "当前的方案处理" );
|
||
|
|
return;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
// 刷新默认方案
|
||
|
|
freshDefaultSchemeInfo : function( _schemeitem ){
|
||
|
|
/*****
|
||
|
|
* [26555]:{"type":0,"team_list":[{"team":1,"sprites":[{"pos":3,"item_bid":113005},{"pos":2,"item_bid":113007},{"pos":1,"item_bid":113008}],"plan_id":0}]}
|
||
|
|
*/
|
||
|
|
this.unscheduleAllCallbacks();
|
||
|
|
if( ! nx.dt.arrEmpty( _schemeitem.team_list ) ){
|
||
|
|
_schemeitem.team_list.sort( Utils.tableLowerSorter( [ "team" ] ) )
|
||
|
|
let self = this;
|
||
|
|
// this.defaultLst = [];
|
||
|
|
let team = _schemeitem.team_list[0];
|
||
|
|
let sprites = team.sprites;
|
||
|
|
sprites.sort( Utils.tableLowerSorter( [ "pos" ] ) );
|
||
|
|
if( team.plan_id == 0 ){
|
||
|
|
for (let i = 0; i < sprites.length; i++) {
|
||
|
|
|
||
|
|
let selectNode = this.defaultScheme[i];
|
||
|
|
let cmp = selectNode.getComponent( ItemBase );
|
||
|
|
if( cmp ){
|
||
|
|
cmp.setData( sprites[i].item_bid );
|
||
|
|
this.defaultLst[i] = sprites[i].item_bid;
|
||
|
|
if( i == this.select_pos ){
|
||
|
|
cmp.onFocus();
|
||
|
|
// this.freshSkillDesc( cmp.mdata.item_bid );
|
||
|
|
}else{
|
||
|
|
cmp.outFocus();
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
this.scheduleOnce( () => {
|
||
|
|
self.onFreshFocus();
|
||
|
|
}, 0.1 );
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
// 刷新单个方案只可以操作默认的方案
|
||
|
|
freshDefaultScheme : function( _schemeitem ){
|
||
|
|
|
||
|
|
this.unscheduleAllCallbacks();
|
||
|
|
this.freshDefaultSchemeFocus();
|
||
|
|
let selectNode = this.defaultScheme[this.select_pos];
|
||
|
|
let cmp = selectNode.getComponent( ItemBase );
|
||
|
|
if( cmp ){
|
||
|
|
// this.defaultLst[this.select_pos] = _schemeitem[this.select_pos].item_bid ;
|
||
|
|
cmp.setData( _schemeitem[this.select_pos].item_bid );
|
||
|
|
cmp.onFocus();
|
||
|
|
// 切换节点 控制技能说明
|
||
|
|
this.onFocusNod( this.select_pos );
|
||
|
|
}
|
||
|
|
|
||
|
|
this.scheduleOnce( () => {
|
||
|
|
this.onFreshFocus();
|
||
|
|
}, 0.1 );
|
||
|
|
// console.log( JSON.stringify( _schemeitem ) + "当前的上阵僚机数据" + JSON.stringify( this.defaultLst ) );
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
// 取消默认的聚焦
|
||
|
|
freshDefaultSchemeFocus : function( ){
|
||
|
|
|
||
|
|
for (let i = 0; i < this.defaultScheme.length; i++) {
|
||
|
|
let item = this.defaultScheme[i];
|
||
|
|
if( item ){
|
||
|
|
let cmp = item.getComponent( ItemBase );
|
||
|
|
if( cmp ){
|
||
|
|
cmp.outFocus();
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
// 取消生成的动态显示的方案的聚焦
|
||
|
|
freshOtherSchemeFocus : function( ){
|
||
|
|
|
||
|
|
let nodes = nx.gui.find( this.svcschemeList, "view/content" ).children;
|
||
|
|
// console.log( "当前的方案处理www" );
|
||
|
|
for (let i = 0; i < nodes.length; i++) {
|
||
|
|
if( nodes[i].svItem ){
|
||
|
|
let chd = nodes[i].svItem.sinfo;
|
||
|
|
for (let j = 0; j < chd.length; j++) {
|
||
|
|
let sitem = chd[j];
|
||
|
|
let cmp = sitem.getComponent( ItemBase );
|
||
|
|
if( cmp ){
|
||
|
|
cmp.outFocus();
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
},
|
||
|
|
|
||
|
|
// 刷新单个方案
|
||
|
|
freshSchemeItem : function( _schemeitem ){
|
||
|
|
|
||
|
|
let index = _schemeitem.id;
|
||
|
|
let i = index - 1;
|
||
|
|
let ElfinCtl = ElfinController.getInstance();
|
||
|
|
let model = ElfinCtl.getModel();
|
||
|
|
|
||
|
|
// let formLst = model.getFormOn();
|
||
|
|
|
||
|
|
// console.log( "当前的上阵或者方案信息" + JSON.stringify( formLst ) );
|
||
|
|
|
||
|
|
let defaultSchemeInfo = model.getDedefaultElfinInfo();
|
||
|
|
let dsprites = nx.dt.objClone( defaultSchemeInfo );
|
||
|
|
// "plan_sprites":[{"pos":1,"item_bid":113008},{"pos":2,"item_bid":113007}]}
|
||
|
|
dsprites.forEach( _sprite => {
|
||
|
|
if( _sprite.item_bid > 0 ){
|
||
|
|
_sprite.item_bid = 0;
|
||
|
|
}
|
||
|
|
} )
|
||
|
|
let plan_sprites = _schemeitem.plan_sprites;
|
||
|
|
_schemeitem.plan_sprites = nx.dt.arrEmpty( _schemeitem.plan_sprites ) ? dsprites : _schemeitem.plan_sprites;
|
||
|
|
let node = nx.gui.find( this.svcschemeList, "view/content" );
|
||
|
|
let item = node.children[i];
|
||
|
|
if( item.svItem ){
|
||
|
|
item.svItem.rebind( i, _schemeitem );
|
||
|
|
}
|
||
|
|
|
||
|
|
// 在新增方案的时候刷新列表显示,目的是刷新可以新增的相关
|
||
|
|
if( nx.dt.arrEmpty( plan_sprites ) ) {
|
||
|
|
this.freshSchemeList();
|
||
|
|
}
|
||
|
|
|
||
|
|
// this.freshSchemeList();
|
||
|
|
},
|
||
|
|
|
||
|
|
|
||
|
|
// 刷新技能介绍
|
||
|
|
freshSkillDesc : function( _mdata ){
|
||
|
|
|
||
|
|
if( _mdata == 0 ){
|
||
|
|
let cmp = this.skill.getComponent( "cmp.skill.base" );
|
||
|
|
if( cmp ){
|
||
|
|
cmp.setData( {} );
|
||
|
|
}
|
||
|
|
nx.gui.setActive( this.skill, "type/title", false );
|
||
|
|
nx.gui.setActive( this.skill, "type/txt", false );
|
||
|
|
nx.gui.setStringRich( this.skill, "skill/desc/cd", "" );
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
let key = _mdata;
|
||
|
|
let sfg = gdata( "sprite_data","data_elfin_data", key );
|
||
|
|
let sfgc = game.configs.sprite_data.data_elfin_data[key];
|
||
|
|
let cmp = this.skill.getComponent( "cmp.skill.base" );
|
||
|
|
let ifg = gdata( "item_data","data_unit9", key );
|
||
|
|
|
||
|
|
nx.gui.setString( this.skill, "type/txt", nx.text.getKey( ifg.use_desc ) );
|
||
|
|
if ( sfgc ) {
|
||
|
|
let sfgs = gskilldata( 'data_get_skill', sfg.skill );
|
||
|
|
// let txt = nx.text.format( "SkillCD2", sfgs.cd );
|
||
|
|
let desc = nx.text.format( "CD", sfgs.cd, ( parseInt(this.select_pos ) + 1) );
|
||
|
|
// console.log( "des说明" + desc );
|
||
|
|
nx.gui.setStringRich( this.skill, "skill/desc/cd", desc );
|
||
|
|
nx.gui.setActive( this.skill, "type/txt", true );
|
||
|
|
nx.gui.setActive( this.skill, "type/title", true );
|
||
|
|
if( cmp ){
|
||
|
|
cmp.setData( sfg.skill );
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
}else{
|
||
|
|
if( cmp ){
|
||
|
|
cmp.setData( {} );
|
||
|
|
nx.gui.setStringRich( this.skill, "skill/desc/cd", "" );
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
// 刷新购买按钮
|
||
|
|
freshBuy :function(){
|
||
|
|
|
||
|
|
// if( )
|
||
|
|
let allIds = [];
|
||
|
|
this.schemes.forEach( _sch => {
|
||
|
|
if( _sch.id != 9 ){
|
||
|
|
allIds.push( _sch );
|
||
|
|
}
|
||
|
|
} )
|
||
|
|
let key = this.schemes.length;
|
||
|
|
let key2 = allIds.length;
|
||
|
|
|
||
|
|
let maxCount = game.configs.sprite_data.data_elfin_plan_length;
|
||
|
|
let need = gdata( "sprite_data","data_elfin_plan", key );
|
||
|
|
nx.gui.setString( this.buy, "txt", key2 < maxCount ? need.expend[0][1] : 0 );
|
||
|
|
nx.gui.setActive( this.buy, "", key2 < maxCount );
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
// 购买方案
|
||
|
|
onTouchAdd : function(){
|
||
|
|
|
||
|
|
let key = this.schemes.length;
|
||
|
|
let EC = ElfinController.getInstance();
|
||
|
|
let pfg = game.configs.sprite_data.data_elfin_plan[ key ];
|
||
|
|
let have = BackpackController.getInstance().getModel().getItemNumByBid( pfg.expend[0][0] );
|
||
|
|
let need = pfg.expend[0][1];
|
||
|
|
// 不足弹出提示
|
||
|
|
if( have < need ){
|
||
|
|
nx.tbox( nx.text.getKey( "elfin_hatch_unlock_5" ) );
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
let mat0 = pfg.expend[0][0];
|
||
|
|
let txt = nx.text.format( "lab_heaven_msg_tips_19n", need, key );
|
||
|
|
EC.openElfUseTipsWindow( true , txt, [mat0], [ need ], ( _deal =>{
|
||
|
|
EC.send26562( key );
|
||
|
|
EC.openElfUseTipsWindow( false );
|
||
|
|
} ) );
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
// 保存当前的方案
|
||
|
|
onTouchSave : function(){
|
||
|
|
|
||
|
|
let show = [];
|
||
|
|
let cfg = gdata( "item_data", "data_unit9" );
|
||
|
|
let cfgs = game.configs.item_data.data_unit9;
|
||
|
|
let have = 0;
|
||
|
|
for (let i = 0; i < this.defaultLst.length; i++) {
|
||
|
|
let c = this.defaultLst[i];
|
||
|
|
let icon = gdata( "item_data", "data_unit9", c ).icon;
|
||
|
|
// console.log( "圖標顯示" + JSON.stringify( ) );
|
||
|
|
if( c > 0 && nx.dt.arrMember( show, icon ) ){
|
||
|
|
have++;
|
||
|
|
}else{
|
||
|
|
show.push( icon );
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
if( have > 0 ){
|
||
|
|
nx.tbox( "AssembleTip" );
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
let ElfinCtl = ElfinController.getInstance();
|
||
|
|
let choice = [];
|
||
|
|
// console.log( "当前的类型wwwww-------" + this.type );
|
||
|
|
|
||
|
|
for (let i = 0; i < this.defaultScheme.length; i++) {
|
||
|
|
|
||
|
|
let selectNode = this.defaultScheme[i];
|
||
|
|
let cmp = selectNode.getComponent( ItemBase );
|
||
|
|
if( cmp ){
|
||
|
|
if( !nx.dt.objGood( cmp.mdata ) ){
|
||
|
|
let data = {};
|
||
|
|
data.pos = i + 1;
|
||
|
|
data.item_bid = nx.dt.objClone( cmp.mdata || -1 );
|
||
|
|
choice.push( data );
|
||
|
|
}else{
|
||
|
|
let data = {};
|
||
|
|
|
||
|
|
data.pos = i + 1;
|
||
|
|
data.item_bid = 0;
|
||
|
|
// console.log( "当前的pos2" + JSON.stringify( data ) );
|
||
|
|
choice.push( data );
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
for (let i = 0; i < choice.length; i++) {
|
||
|
|
if ( choice[i].item_bid < 0 ) {
|
||
|
|
choice.splice(i, 1); // 将使后面的元素依次前移,数组长度减1
|
||
|
|
i--; // 如果不减,将漏掉一个元素
|
||
|
|
}
|
||
|
|
}
|
||
|
|
// {"sprites":[{"pos":1,"item_bid":112002}]}
|
||
|
|
// {"sprites":[{"pos":1,"item_bid":112001}]}
|
||
|
|
// console.log( "当前方案信息" + JSON.stringify( choice ) );
|
||
|
|
|
||
|
|
if( this.type == 100 || this.type == 0 ){
|
||
|
|
ElfinCtl.sender26514( choice, this.type == 100 );
|
||
|
|
}else{
|
||
|
|
/********_type, sprites, team, flag, only_save */
|
||
|
|
ElfinCtl.send26560( this.type, choice, this.team );
|
||
|
|
}
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
dealSame : function( _lst ){
|
||
|
|
|
||
|
|
let lst = _lst;
|
||
|
|
let same = false;
|
||
|
|
let count = 0;
|
||
|
|
|
||
|
|
for (let i = 0; i < lst.length; i++) {
|
||
|
|
let it = lst[i];
|
||
|
|
let itd = this.defaultLst[i];
|
||
|
|
if( it == itd ){
|
||
|
|
count++;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
same = count >= lst.length;
|
||
|
|
return same;
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
// 返回主场景
|
||
|
|
onBackToMain: function(){
|
||
|
|
|
||
|
|
this.unscheduleAllCallbacks();
|
||
|
|
let HR = HeroController.getInstance();
|
||
|
|
let EC = ElfinController.getInstance();
|
||
|
|
let lst = this.dealResult();
|
||
|
|
const BC = BackpackController.getInstance();
|
||
|
|
// if( BC ) {
|
||
|
|
|
||
|
|
// }
|
||
|
|
if( this.type == 100 ){
|
||
|
|
// console.log( this.type + "类型" + JSON.stringify( lst ) + "当前的默认方案数据" + JSON.stringify( this.defaultLst ) );
|
||
|
|
if( !this.dealSame( lst ) ){
|
||
|
|
|
||
|
|
nx.mbox( "ASSAskConfirmBack", ['yes'], ( _key, _box ) => {
|
||
|
|
_box.close();
|
||
|
|
if( _key == 'yes' ) {
|
||
|
|
|
||
|
|
this.onTouchSave();
|
||
|
|
this.scheduleOnce( () =>{
|
||
|
|
BC.openMainWindow( false );
|
||
|
|
HR.openHeroMainInfoWindow( false );
|
||
|
|
HR.openHeroBagWindow( false );
|
||
|
|
EC.openElfinAdjustWindow( false );
|
||
|
|
|
||
|
|
}, 0.6 );
|
||
|
|
}
|
||
|
|
} );
|
||
|
|
}else{
|
||
|
|
BC.openMainWindow( false );
|
||
|
|
HR.openHeroMainInfoWindow( false );
|
||
|
|
HR.openHeroBagWindow( false );
|
||
|
|
EC.openElfinAdjustWindow( false );
|
||
|
|
}
|
||
|
|
}else{
|
||
|
|
BC.openMainWindow( false );
|
||
|
|
HR.openHeroMainInfoWindow( false );
|
||
|
|
HR.openHeroBagWindow( false );
|
||
|
|
EC.openElfinAdjustWindow( false );
|
||
|
|
}
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
dealResult: function(){
|
||
|
|
|
||
|
|
let ElfinCtl = ElfinController.getInstance();
|
||
|
|
let model = ElfinCtl.getModel();
|
||
|
|
|
||
|
|
let defaultSchemeInfo = model.getDedefaultElfinInfo();
|
||
|
|
let lst = [];
|
||
|
|
for (let i = 0; i < defaultSchemeInfo.length; i++) {
|
||
|
|
|
||
|
|
lst.push( defaultSchemeInfo[i].item_bid );
|
||
|
|
|
||
|
|
}
|
||
|
|
return lst;
|
||
|
|
},
|
||
|
|
|
||
|
|
closeSelf: function(){
|
||
|
|
|
||
|
|
this.unscheduleAllCallbacks();
|
||
|
|
let lst = this.dealResult();
|
||
|
|
if( this.type == 100 ){
|
||
|
|
if( !this.dealSame( lst ) ){
|
||
|
|
nx.mbox( "ASSAskConfirmBack", ['yes'], ( _key, _box ) => {
|
||
|
|
_box.close();
|
||
|
|
if( _key == 'yes' ) {
|
||
|
|
|
||
|
|
this.onTouchSave();
|
||
|
|
this.scheduleOnce( () =>{
|
||
|
|
this.close();
|
||
|
|
}, 0.3 );
|
||
|
|
}
|
||
|
|
} );
|
||
|
|
}else{
|
||
|
|
this.close();
|
||
|
|
}
|
||
|
|
|
||
|
|
}else{
|
||
|
|
this.close();
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
},
|
||
|
|
|
||
|
|
// ============================================
|
||
|
|
// 引导辅助
|
||
|
|
// ============================================
|
||
|
|
|
||
|
|
// 定位可以操作的
|
||
|
|
positionDoPlot: function() {
|
||
|
|
|
||
|
|
let node = null;
|
||
|
|
let chd = nx.gui.find( this.svcwingsList.bindSCV, "view/content" ).children;
|
||
|
|
node = chd[ 0 ];
|
||
|
|
// let node = null;
|
||
|
|
// let children = this.svcList.bindSCV.content.children;
|
||
|
|
// for( let i = 0; i < children.length; ++i ) {
|
||
|
|
// let temp = children[ i ];
|
||
|
|
// if( temp.svItem && temp.svItem.mdata && temp.svItem.mdata.bid == 20401 ) {
|
||
|
|
// node = temp;
|
||
|
|
// break;
|
||
|
|
// }
|
||
|
|
// }
|
||
|
|
|
||
|
|
if( !node ) {
|
||
|
|
nx.error( "$ParterPage:定位特定英雄失败!" );
|
||
|
|
node = chd[ 0 ];
|
||
|
|
if( !node ) {
|
||
|
|
return;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
let cell = nx.gui.find( this, "plot" );
|
||
|
|
let pos = node.convertToWorldSpaceAR( cc.Vec2.ZERO );
|
||
|
|
cell.position = cell.parent.convertToNodeSpaceAR( pos );
|
||
|
|
cell.width = node.width;
|
||
|
|
cell.height = node.height;
|
||
|
|
cell.mdata = node.svItem.mdata;
|
||
|
|
},
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
} );
|