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