Files
fc/dev/project/library/imports/91/912c1259-24ed-4213-ac3c-0c45591fac6a.js
2026-05-24 10:21:26 +08:00

201 lines
5.2 KiB
JavaScript

"use strict";
cc._RF.push(module, '912c1JZJO1CE6w8DEVZH6xq', 'cmp.partner.skill.learn.wnd');
// Scripts/mod/partner/cmps/skill/cmp.partner.skill.learn.wnd.js
"use strict";
var _HCTNames;
/******************************************************************
*
* 技能学习界面
*
******************************************************************/
var BridgeWindow = require("bridge.window");
var FxSVC = require("nx.fx.sv.expand");
var HeroConst = require("hero_const");
var HeroController = require("hero_controller");
var BackpackController = require("backpack_controller");
var HCT = HeroConst.CareerType;
// --英雄职业对应名字
var HCTNames = (_HCTNames = {}, _HCTNames[HCT.eMagician] = "order_magician", _HCTNames[HCT.eWarrior] = "order_warrior", _HCTNames[HCT.eTank] = "order_tank", _HCTNames[HCT.eSsistant] = "order_ssistant", _HCTNames);
cc.Class({
"extends": BridgeWindow,
properties: {
svcList: {
"default": null,
type: FxSVC
},
curDesc: {
"default": null,
type: cc.Node
}
},
// 重载:参数打开
onOpenConfigs: function onOpenConfigs(_params) {
this.partner = _params.hero_vo;
this.cb = _params.cb;
this.fresh();
},
// 重载:关闭前
onPreClosed: function onPreClosed() {
this.svcList.rebuild([]);
},
// 刷新
fresh: function fresh() {
var _this = this;
// 统计已有技能
var had = {};
var sks = this.partner.talent_skill_list;
for (var pos in sks) {
var id = sks[pos];
had[id] = pos;
}
var HC = HeroController.getInstance();
var HM = HC.getModel();
// 统计推荐技能
var commends = {};
var csks = game.configs.partner_skill_data.data_partner_commend_skill[this.partner.bid];
if (csks) {
for (var i in csks) {
var _id = csks[i];
commends[_id] = i + 1;
}
}
// 筛选可学技能
this.skills = [];
var libs = game.configs.partner_skill_data.data_partner_skill_learn;
var reds = HM.getTalentRedpointRecord();
for (var _id2 in libs) {
var cfgs = libs[_id2];
var sdt = {
id: _id2,
config: cfgs,
order: cfgs.order,
career_order: 1000,
order_had: 2,
// 已拥有
order_can: 2 // 可领悟
};
// 该英雄有单独推荐的
if (commends[_id2]) {
sdt.career_order = commends[_id2];
} else {
// 特定职业排序
var key = HCTNames[this.partner.type];
if (nx.dt.strNEmpty(key)) {
sdt.career_order = cfgs[key];
}
}
// // 已经有了
// if( had[id] ) {
// sdt.order_had = 1;
// }
// 可领悟
if (reds[_id2]) {
sdt.order_can = 1;
}
this.skills.push(sdt);
}
// 排序
var fnc = Utils.tableLowerSorter(["order_had", "order_can", "career_order", "order"]);
this.skills.sort(fnc);
// 重置
this.svcList.rebuild(this.skills);
// 设置默认
this.scheduleOnce(function () {
_this.onFocusChanged({
mdata: _this.skills[0],
index: 0
});
}, 0.1);
},
// 选中切换
onFocusChanged: function onFocusChanged(_item) {
// 空
if (!_item || !_item.mdata) {
return;
}
nx.audio.playSFX("audios/effects/touchitem");
// 聚焦
this.svcList.cleanFocus();
this.svcList.addFocus(_item.index);
this.setCurrent(_item.mdata);
},
// 设置当前
setCurrent: function setCurrent(_data) {
var info = gskilldata('data_get_skill', _data.id);
if (nx.dt.objEmpty(info)) {
nx.gui.setActive(this.curDesc, "", false);
return;
}
this.sid = _data.id;
nx.gui.setActive(this.curDesc, "", true);
// 名字
nx.gui.setString(this.curDesc, "name", nx.text.getKey(info.name));
// 图标设置
nx.bridge.setIcon(this.curDesc, "icon", info.icon);
// 描述设置
var detail = nx.gui.find(this.curDesc, "detail/view/content");
if (detail) {
// 描述
var desc = nx.text.getKey(info.des || info.desc);
nx.gui.setString(detail, "desc/txt", desc);
// 冷却
var txt = nx.text.getKey("SkillCD1");
if (info.cd > 0) {
txt = nx.text.format("SkillCD2", info.cd);
}
if (info.fire_cd != 0) {
txt += nx.text.format("SkillCD3", info.fire_cd);
}
nx.gui.setString(detail, "cd/txt", txt);
}
// 学习面板
var node = nx.gui.find(this.curDesc, "learn");
if (node) {
var BC = BackpackController.getInstance();
var BM = BC.getModel();
// 耗材
var expend = _data ? _data.config.expend : [];
var temp = nx.gui.find(node, "needs");
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 = BM.getItemNumByBid(_info[0]);
nx.gui.setString(cmp, "count", _info[1] + "/" + hcnt);
}
}
}
},
// 点击学习
onTouchLearn: function onTouchLearn() {
nx.dt.fnInvoke(this.cb, this.sid);
this.close();
}
});
cc._RF.pop();