"use strict"; cc._RF.push(module, '4ed5c8wJE9G9JPCxYTADehr', 'cmp.partner.equips'); // Scripts/mod/partner/cmps/basic/cmp.partner.equips.js "use strict"; /****************************************************************** * * 伙伴信息页 --- 装备 * ******************************************************************/ var BridgeComponent = require("bridge.component"); var HeroConst = require("hero_const"); var HeroEvent = require("hero_event"); var HeroControl = require("hero_controller"); var HeroCalculate = require("hero_calculate"); var HomeMod = require("home.mod"); var FID = require("bridge.function.ids"); var TipsController = require("tips_controller"); var BackpackController = require("backpack_controller"); var BackPackConst = require("backpack_const"); var BIT = BackPackConst.item_type; var HEQP = HeroConst.EquipPosList; cc.Class({ "extends": BridgeComponent, properties: { nodEquips: { "default": null, type: cc.Node }, nodArtifacts: { "default": null, type: cc.Node }, spOnce: { "default": null, type: sp.Skeleton }, nodWeapon: { "default": null, type: cc.Node } }, // 显示 onLoad: function onLoad() { // 视图监听 this.vbind([["ShowPartner", this.onPartnerChanged.bind(this)]]); // 事件监听 // this.bindGEvent( HeroEvent.Hero_Data_Update, this.onPartnerUpdate.bind( this ) ); this.bindGEvent(HeroEvent.Equip_Update_Event, this.onPartnerUpdate.bind(this)); this.bindGEvent(HeroEvent.Artifact_Update_Event, this.onPartnerUpdate.bind(this)); this.spOnce.animation = ""; nx.st = this; }, // 隐藏 // onDisable: function() { // // 视图监听解除 // this.vunbind(); // // 事件监听解除 // this.unbindGEvents(); // }, // 有伙伴数据更新 onPartnerUpdate: function onPartnerUpdate(_vo) { if (_vo && this.partner && _vo.partner_id == this.partner.partner_id) { this.onPartnerChanged(_vo); nx.bridge.vset("ShowPartner", _vo); } }, // 伙伴更新 onPartnerChanged: function onPartnerChanged(_partner) { this.partner = _partner; // 亲密度 if (!game.configs.favor_data) { nx.gui.setActive(this.nodWeapon, "", false); } else { var canshow = 0; this.emptyeqm = {}; var weaponcfg = game.configs.weapon_data.data_get_skill; this.unlock = game.configs.weapon_data.data_const.unlock_con.val; for (var e in weaponcfg) { var eqm = weaponcfg[e]; if (eqm.partner_id == this.partner.bid) { canshow++; this.emptyeqm = { bid: eqm.id, num: 1 }; } } nx.gui.setActive(this.nodWeapon, "", canshow > 0); // let girl = HomeMod.getInstance().queryGirl( this.partner.bid ); // if( girl ) { // nx.gui.setActive( this.nodWeapon, "", true ); // } else { // nx.gui.setActive( this.nodWeapon, "", false ); // } } // 全刷新 this.freshEquipments(); this.freshArtifacts(); // this.freshExWeapon(); }, // 刷新装备槽 freshEquipments: function freshEquipments() { // 空处理 var root = this.nodEquips.parent; var slots = this.nodEquips; var empty = function empty(_sc) { if (_sc === void 0) { _sc = false; } // 卡槽置空 slots.children.forEach(function (_c) { nx.gui.setActive(_c, "item", false); nx.gui.setActive(_c, "tip", false); nx.gui.setActive(_c, "empty", true); }); // 操作置空 if (_sc) { nx.gui.setActive(root, "onceOn", false); nx.gui.setActive(root, "onceOff", false); } }; // 判空 if (nx.dt.objEmpty(this.partner)) { empty(true); return; } var canUpdate = false; var calculate = HeroCalculate.getInstance(); var model = HeroControl.getInstance().getModel(); var eqmAll = model.getHeroEquipList(this.partner.partner_id) || {}; // 装备刷新 var eqms = this.partner.eqm_list; var weapon = {}; if (eqms) { for (var i in eqms) { var eqm = eqms[i]; if (eqm && eqm.type == BIT.Exclusive) { // if( wcfg[eqm.] ) weapon = eqm; } } } else { weapon = {}; } for (var pos in HEQP) { // 当前装备 var _eqm = eqms[pos]; var emt = nx.dt.objEmpty(_eqm); var slot = nx.gui.find(slots, "slot" + pos); nx.gui.setActive(slot, "item", !emt); nx.gui.setActive(slot, "empty", emt); if (!emt) { var icon = nx.gui.getComponent(slot, "item", "cmp.item.base"); if (icon) { icon.setData(_eqm); } } // 红点提示 var etype = HEQP[pos]; var rp = calculate.checkSingleHeroEachPosEquipRedPoint(etype, eqmAll[etype]); nx.gui.setActive(slot, "tip", rp); // 有提升 if (!canUpdate && rp) { canUpdate = true; } } // 快捷显隐 if (canUpdate || nx.dt.objEmpty(eqms)) { nx.gui.setActive(root, "onceOn", true); nx.gui.setActive(root, "onceOff", false); } else { nx.gui.setActive(root, "onceOn", false); nx.gui.setActive(root, "onceOff", true); } this.freshExWeapon(weapon); }, // 刷新神器槽 freshArtifacts: function freshArtifacts() { var _Conditions, _this$artLocked; // 置空 var slots = this.nodArtifacts; var empty = function empty() { slots.children.forEach(function (_c) { nx.gui.setActive(_c, "item", false); nx.gui.setActive(_c, "tip", false); nx.gui.setActive(_c, "lock", false); nx.gui.setActive(_c, "empty", true); }); }; // 判空 if (nx.dt.objEmpty(this.partner)) { empty(true); return; } var CPD = game.configs.partner_data.data_partner_const; var Conditions = (_Conditions = {}, _Conditions[1] = CPD["artifact_one"].val, _Conditions[2] = CPD["artifact_two"].val, _Conditions); // 锁定统计 this.artLocked = (_this$artLocked = {}, _this$artLocked[1] = { lock: false, desc: "" }, _this$artLocked[2] = { lock: false, desc: "" }, _this$artLocked); for (var pos in Conditions) { var cond = Conditions[pos]; switch (cond[0]) { case "lev": { if (this.partner.lev < cond[1]) { this.artLocked[pos].lock = true; this.artLocked[pos].desc = cond[1] + nx.text.getKey("btn_lvUnlock"); } else { var maxLv = game.configs.partner_data.data_partner_max_lev[this.partner.bid]; if (maxLv && maxLv >= cond[1]) { this.artLocked[pos].lock = false; // this.artLocked[ pos ].desc = cond[ 1 ] + nx.text.getKey( "btn_lvUnlock" ); } } } break; case "star": { if (this.partner.star < cond[1]) { this.artLocked[pos].lock = true; this.artLocked[pos].desc = cond[1] + nx.text.getKey("btn_starUnlock"); } else { var maxSt = game.configs.partner_data.data_partner_max_star[this.partner.bid]; if (maxSt && maxSt >= cond[1]) { this.artLocked[pos].lock = false; // this.artLocked[ pos ].desc = cond[ 1 ] + nx.text.getKey( "btn_starUnlock" ); } } } break; default: { nx.error("未处理的解锁条件!", cond[0]); } break; } } var arts = this.partner.artifact_list || {}; var calculate = HeroCalculate.getInstance(); // 刷新 for (var _pos in this.artLocked) { // 当前装备 var art = arts[_pos]; var emt = nx.dt.objEmpty(art); var sta = this.artLocked[_pos]; var slot = nx.gui.find(slots, "slot" + _pos); nx.gui.setActive(slot, "item", !emt); nx.gui.setActive(slot, "empty", emt && !sta.lock); nx.gui.setActive(slot, "lock", emt && sta.lock); if (!emt) { var icon = nx.gui.getComponent(slot, "item", "cmp.item.base"); if (icon) { icon.setData(art); } } // 红点提示 var red = false; if (!sta.lock && art) { red = calculate.checkSingleArtifactRedPoint(art); } nx.gui.setActive(slot, "tip", red); } }, // 刷新专属武器 freshExWeapon: function freshExWeapon(_weapon) { var self = this; var weapon = nx.dt.objEmpty(_weapon) && this.partner.star < this.unlock ? this.emptyeqm : _weapon; var slot = nx.gui.find(this.nodWeapon, "slot1"); nx.gui.find(slot, "lock").info = weapon; var icon = nx.gui.getComponent(slot, "item", "cmp.item.base"); var empty = function empty() { if (icon) { icon.setData(null); } nx.gui.setActive(slot, "item", false); nx.gui.setActive(slot, "tip", false); nx.gui.setActive(slot, "empty", true); nx.gui.setActive(slot, "lock", self.partner.star < self.unlock); }; if (nx.dt.objEmpty(weapon)) { empty(); return; } // 当前装备 nx.gui.setActive(slot, "item", true); nx.gui.setActive(slot, "tip", false); nx.gui.setActive(slot, "empty", false); nx.gui.setActive(slot, "lock", this.partner.star < this.unlock); nx.gui.setActive(slot, "touch", this.partner.star >= this.unlock); if (icon) { icon.setData(weapon); } // // 红点提示 // let red = false; // if( !sta.lock && art ) { // red = calculate.checkSingleArtifactRedPoint( art ); // } // nx.gui.setActive( slot, "tip", red ); }, // 点击装备槽 onTouchEquipmentSlot: function onTouchEquipmentSlot(_partId) { var self = this; var HC = HeroControl.getInstance(); var eqms = this.partner.eqm_list; var eqm = eqms[_partId]; // if( this.partner.star < 10 && _partId == 41 ){ // nx.tbox( nx.text.format( "WearWeaponTip", 10 ) ); // return; // } // 脱下 var takeoff = function takeoff() { HC.sender11011(self.partner.partner_id, eqm.id); }; // 更换 var change = function change() { HC.openEquipPanel(true, { type: parseInt(_partId), partner_id: self.partner.bid }, function (_id, _panel) { _panel.close(); HC.sender11010(self.partner.partner_id, _id); }); }; // 当前装备操作 if (eqm) { HC.openEquipChangePanel(true, eqm, function (_op, _panel) { _panel.close(); if (_op == "takeoff") { takeoff(); } if (_op == "change") { change(); } }); } // 新装备穿戴 else { change(); } }, // 点击神器槽 onTouchArtifactSlot: function onTouchArtifactSlot(_slotId) { var pos = parseInt(_slotId); var sta = this.artLocked[pos]; if (sta.lock) { if (nx.dt.strNEmpty(sta.desc)) { nx.tbox(sta.desc); } return; } var self = this; var HC = HeroControl.getInstance(); var arts = self.partner.artifact_list; var art = arts[pos]; art ? art.partner_id = self.partner.partner_id : ""; // 洗炼 var refinement = function refinement() { nx.bridge.jumper.jump2Window(FID.ArtifactReset, { item: art, pos: pos, config: art.config }); }; // 脱下 var takeoff = function takeoff() { HC.sender11030(self.partner.partner_id, pos, art.id, 0); }; // 更换 var change = function change() { HC.openEquipPanel(true, { type: BIT.ARTIFACTCHIPS, partner_id: self.partner.bid }, function (_id, _panel) { _panel.close(); HC.sender11030(self.partner.partner_id, pos, _id, 1); }); }; // 当前神器操作 if (art) { HC.openEquipChangePanel(true, art, function (_op, _panel) { _panel.close(); if (_op == "takeoff") { takeoff(); } if (_op == "change") { change(); } if (_op == "refinement") { refinement(); } }); } // 新装备神器 else { change(); } }, // 一键穿戴 onTouchOnceOn: function onTouchOnceOn() { if (this.partner && nx.dt.numPositive(this.partner.partner_id, false)) { var HC = HeroControl.getInstance(); HC.sender11010(this.partner.partner_id, 0); this.spOnce.animation = "action"; } }, // 一键脱装 onTouchOnceOff: function onTouchOnceOff() { if (this.partner && nx.dt.numPositive(this.partner.partner_id, false)) { var HC = HeroControl.getInstance(); HC.sender11011(this.partner.partner_id, 0); } }, onTouchWeaponLock: function onTouchWeaponLock(_nod) { var TC = TipsController.getInstance(); if (TC && _nod.info) { TC.showItemTips(_nod.info.bid ? _nod.info.bid : _nod.info.base_id); } } }); cc._RF.pop();