Files
fc/dev/project/library/imports/3a/3a443a7d-a0f6-40da-b08c-e48cf3f3089c.js
T
2026-05-24 10:21:26 +08:00

207 lines
7.3 KiB
JavaScript

"use strict";
cc._RF.push(module, '3a443p9oPZA2rCM5Izz8wic', 'cmp.kernel.upgrade');
// Scripts/mod/home/base_kernel/cmp.kernel.upgrade.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();
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 || "");
};
// 通过传入的配置表来进行显隐ui
var dealShow = function dealShow(_cfg, _award) {
if (nx.dt.objEmpty(_cfg)) {
// 技能升到满级
if (!_cfg || !_award || !nx.dt.numPositive(_award, false)) {
// 技能信息
// let cur = nx.gui.getComponent( self.nodSks, "from/icon", "cmp.skill.base" );
// console.log( "需要設置的技能id" + self.sid );
// cur.setData( self.sid );
var nod = nx.gui.find(self.nodSks, "from");
setInfo(nod, cfgs, scfgs);
}
nx.gui.setActive(self.nodSks, "from/name/max", true);
}
nx.gui.setActive(self.nodSks, "arrow", !nx.dt.objEmpty(_cfg));
nx.gui.setActive(self.nodSks, "to", !nx.dt.objEmpty(_cfg));
nx.gui.setActive(self, "panel/panel/needtip", !nx.dt.objEmpty(_cfg));
nx.gui.setActive(self.nodNeeds, "", !nx.dt.objEmpty(_cfg));
nx.gui.setActive(self, "panel/panel/leveltip", nx.dt.objEmpty(_cfg));
nx.gui.setActive(self, "panel/panel/max", nx.dt.objEmpty(_cfg));
nx.gui.setActive(self, "panel/up", !nx.dt.objEmpty(_cfg));
nx.gui.setActive(self, "panel/close", nx.dt.objEmpty(_cfg));
};
// 配置获取 僚机技能升级
var cfgs = nx.dt.objClone(game.configs.halidom_data.data_step[this.camp][this.item_id]);
var scfgs = nx.dt.objClone(game.configs.halidom_data.data_skill[cfgs.skill_icon]);
if (this.from == "kernel") {
// 技能显示相关
var next = game.configs.halidom_data.data_step[this.camp][this.item_id + 1];
var award = 0;
if (cfgs && next) {
award = next.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");
nx.gui.setActive(snode, "name/max", false);
setInfo(snode, cfgs, scfgs || {});
setInfo(tnode, next, nscfgs);
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(hcnt) + "/" + nx.dt.shortCount(next.loss_items[0][1]));
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, award);
} else {
dealShow({});
}
}
},
// 点击确认
onTouchConfirm: function onTouchConfirm() {
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();