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