Files
fc/dev/project/library/imports/0f/0f8ecd4d-2024-4697-81b6-2ed2f4279a0f.js
2026-05-24 10:21:26 +08:00

284 lines
10 KiB
JavaScript

"use strict";
cc._RF.push(module, '0f8ec1NICRGl4G2LtL0J5oP', 'cmp.wing.skill.uplev');
// Scripts/mod/partner/wings/cmp/cmp.wing.skill.uplev.js
"use strict";
/******************************************************************
*
* 僚机技能升级界面
*
******************************************************************/
var BridgeWindow = require("bridge.window");
var BackPackController = require("backpack_controller");
var HeroControl = require("hero_controller");
cc.Class({
"extends": BridgeWindow,
properties: {
nodSks: {
"default": null,
type: cc.Node
},
nodNeeds: {
"default": null,
type: cc.Node
}
},
// 重载:参数打开 僚机的id
onOpenConfigs: function onOpenConfigs(_params) {
this.item_id = _params.item_bid;
this.sid = _params.skill_id;
this.pos = _params.pos;
// this.cb = _params.cb;
this.from = _params.from;
this.camp = _params.camp;
this.cb = _params.cb;
this.fresh();
},
// 刷新
fresh: function fresh() {
var self = this;
var BC = BackPackController.getInstance();
var BM = BC.getModel();
// 通过传入的配置表来进行显隐ui
var dealShow = function dealShow(_cfg, _award) {
if (nx.dt.objEmpty(_cfg)) {
// 技能升到满级
if (!_cfg || !_award || !nx.dt.numPositive(_award, false)) {
// 技能信息
var cur = nx.gui.getComponent(self.nodSks, "from/icon", "cmp.skill.base");
cur.setData(self.sid);
nx.gui.setActive(self.nodSks, "arrow", false);
nx.gui.setActive(self.nodSks, "to", false);
nx.gui.setActive(self, "panel/panel/needtip", false);
nx.gui.setActive(self.nodNeeds, "", false);
nx.gui.setActive(self, "panel/panel/leveltip", true);
nx.gui.setActive(self, "panel/panel/max", true);
nx.gui.setActive(self, "panel/up", false);
nx.gui.setActive(self, "panel/close", true);
}
nx.error("无效技能升级配置:", self.item_id);
// this.scheduleOnce( () => { this.close(); }, 0.03 );
return;
}
nx.gui.setActive(self.nodSks, "arrow", true);
nx.gui.setActive(self.nodSks, "to", true);
nx.gui.setActive(self, "panel/panel/needtip", true);
nx.gui.setActive(self.nodNeeds, "", true);
nx.gui.setActive(self, "panel/panel/leveltip", false);
nx.gui.setActive(self, "panel/panel/max", false);
nx.gui.setActive(self, "panel/up", true);
nx.gui.setActive(self, "panel/close", false);
};
var dealMat = function dealMat(_expend) {
// console.log( "当前的材料数据" + JSON.stringify( _expend ) );
var temp = nx.gui.find(self.nodNeeds, "list");
for (var i = 0; i < temp.children.length; ++i) {
var item = temp.children[i];
var info = _expend[i];
if (!info) {
nx.gui.setActive(item, "", false);
continue;
}
nx.gui.setActive(item, "", true);
var cmp = nx.gui.getComponent(item, "", "cmp.item.base");
if (cmp) {
cmp.setData(info[0]);
var hcnt = 0;
if (info[0] != 10040) {
if (self.item_id == info[0]) {
hcnt = BM.getItemNumByBid(info[0]) > info[1] ? BM.getItemNumByBid(info[0]) : 0;
} else {
hcnt = BM.getItemNumByBid(info[0]);
}
} else {
hcnt = BM.getItemNumByBid(info[0]);
}
nx.gui.setString(cmp, "count", nx.dt.shortCount(info[1]) + "/" + nx.dt.shortCount(hcnt));
var eno = hcnt >= info[1];
nx.gui.setColor(cmp, "count", eno ? cc.Color.WHITE : cc.Color.RED);
if (!eno) {
self.enough = false;
}
}
}
};
// 配置获取 僚机技能升级
var cfgs = {};
if (this.from == "wing") {
cfgs = game.configs.sprite_data.data_elfin_com[this.item_id];
// console.log( "数据信息" + JSON.stringify( cfgs ) );
var award = 0;
if (cfgs) {
if (cfgs.award) {
award = cfgs.award;
var cur = nx.gui.getComponent(this.nodSks, "from/icon", "cmp.skill.base");
cur.setData(this.sid);
var tar = nx.gui.getComponent(this.nodSks, "to/icon", "cmp.skill.base");
var ufg = gdata("sprite_data", "data_elfin_data", cfgs.award);
// console.log( cfgs.award + "配置数据" + JSON.stringify( ufg ) );
tar.setData(ufg.skill);
}
// 耗材
this.enough = true;
var expend = cfgs ? cfgs.expend : [];
dealMat(expend);
}
dealShow(cfgs, award);
}
if (this.from == "kernel") {
// 技能显示相关
cfgs = nx.dt.objClone(game.configs.halidom_data.data_step[this.camp][this.item_id]);
var next = game.configs.halidom_data.data_step[this.camp][this.item_id + 1];
var _award2 = 0;
if (cfgs && next) {
_award2 = next.skill_icon;
//当前阶的技能配置
var scfgs = nx.dt.objClone(game.configs.halidom_data.data_skill[cfgs.skill_icon]);
var nscfgs = nx.dt.objClone(game.configs.halidom_data.data_skill[next.skill_icon]);
// 技能信息
var snode = nx.gui.find(this.nodSks, "from");
var tnode = nx.gui.find(this.nodSks, "to");
var setInfo = function setInfo(_node, _ffg, _sfg) {
var icon = nx.gui.find(_node, "icon/icon");
var nodLev = nx.gui.find(_node, "icon/level");
var nodLevName = nx.gui.find(_node, "name");
var nodDesc = nx.gui.find(_node, "desc/srv/view/content");
var path = _ffg.skill_icon ? cc.path.join("resDB/icons/skills/" + _sfg.res_id) : "";
nx.gui.setSpriteFrame(icon, "", path);
nx.gui.setString(nodLev, "txt", _sfg.lev || 0);
nx.gui.setString(nodLevName, "txt", _sfg.name || nx.text.getKey("lab_role_title_panel_tip_3"));
nx.gui.setString(nodDesc, "txt", _sfg.desc || "");
};
setInfo(snode, cfgs, scfgs || {});
setInfo(tnode, next, nscfgs);
// let cur = nx.gui.getComponent( this.nodSks, "from/icon", "cmp.skill.base" );
// cur.setData( cfgs.skill_icon );
// let tar = nx.gui.getComponent( this.nodSks, "to/icon", "cmp.skill.base" );
// tar.setData( next.skill_icon );
var temp = nx.gui.find(self.nodNeeds, "list");
nx.gui.hideAllChildren(temp);
if (next.loss_rand[0].length > 2) {
this.matneeds = {
mat: [],
count: next.loss_rand[0][2]
};
var nodAdd = temp.children[2];
nx.gui.setActive(nodAdd, "", true);
nx.gui.setString(nodAdd, "txt", nx.text.format("matNeed", next.loss_rand[0][1], nx.text.getKey("AnyNameCamp" + next.loss_rand[0][0])));
var cmp = nx.gui.getComponent(nodAdd, "", "cmp.item.base");
if (cmp) {
cmp.setData(0);
}
}
if (next.loss_items[0]) {
var nod = temp.children[0];
nx.gui.setActive(nod, "", true);
nx.gui.setActive(nod, "", true);
var _cmp2 = nx.gui.getComponent(nod, "", "cmp.item.base");
if (_cmp2) {
_cmp2.setData(next.loss_items[0][0]);
}
var hcnt = BM.getItemNumByBid(next.loss_items[0][0]);
nx.gui.setString(_cmp2, "count", nx.dt.shortCount(next.loss_items[0][1]) + "/" + nx.dt.shortCount(hcnt));
var eno = hcnt >= next.loss_items[0][1];
nx.gui.setColor(_cmp2, "count", eno ? cc.Color.WHITE : cc.Color.RED);
if (!eno) {
self.enough = false;
}
}
}
dealShow(cfgs, _award2);
}
},
// 点击确认
onTouchConfirm: function onTouchConfirm() {
if (this.from == "wing") {
if (this.enough) {
var data = {
item_id: this.item_id,
type: 1,
pos: this.pos
};
nx.dt.fnInvoke(this.cb, data);
} else {
nx.tbox(nx.text.getKey("elfin_compound_5") + nx.text.getKey("lab_seerNoEnough"));
return;
}
}
if (this.from == "kernel") {
/***
* [22204]:{"id":1,"list1":[],"list2":[{"id":11},{"id":111},{"id":112}]}
*/
var lst = [];
this.matneeds.mat.forEach(function (_mat) {
if (_mat) {
lst.push({
"id": _mat.id
});
}
});
var _data = {
id: this.camp,
list1: [],
list2: lst
};
nx.dt.fnInvoke(this.cb, _data);
}
this.close();
},
onTouchAdd: function onTouchAdd() {
var _this = this;
var next = game.configs.halidom_data.data_step[this.camp][this.item_id + 1];
// 需要的星级限制
var needStar = next.loss_rand[0][1];
var needCount = next.loss_rand[0][2];
this.needCountShow = next.loss_rand[0][2];
var partners = HeroControl.getInstance().getModel().getDeepHeroListByCamp(this.camp);
var canUseLst = [];
var HC = HeroControl.getInstance();
partners.forEach(function (_partner) {
if (_partner.is_in_form == 0 && _partner.camp_type == _this.camp && _partner.star == needStar) {
canUseLst.push(_partner);
}
});
var nowSelect = [];
var temp = nx.gui.find(this.nodNeeds, "list");
var cmp = nx.gui.find(temp, "add").getComponent("cmp.item.base");
nowSelect = this.matneeds.mat || [];
this.CanUsePartners = nx.dt.objClone(canUseLst);
var args = {
partners: canUseLst,
count: needCount,
selects: nowSelect
};
HC.openPartnerSelector(true, args, function (_selects) {
// if( cmp ){
// cmp.setData( _selects[0] )
// }
_this.freshMatInfo(cmp, _selects || []);
HC.openPartnerSelector(false);
});
},
freshMatInfo: function freshMatInfo(_cmp, _selectsD) {
var BC = BackPackController.getInstance();
var BM = BC.getModel();
_cmp.setData(_selectsD[0]);
this.matneeds.mat = _selectsD;
var hcnt = this.CanUsePartners.length;
nx.gui.setString(_cmp, "count", nx.dt.shortCount(_selectsD.length) + "/" + nx.dt.shortCount(this.needCountShow));
var eno = hcnt >= _selectsD.length;
nx.gui.setColor(_cmp, "count", eno ? cc.Color.WHITE : cc.Color.RED);
if (!eno) {
this.enough = false;
}
}
});
cc._RF.pop();