"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();