"use strict"; cc._RF.push(module, 'ad1dbuoWuFFMpxasNdQRyj+', 'cmp.partner.skin'); // Scripts/mod/partner/cmps/skin/cmp.partner.skin.js "use strict"; /****************************************************************** * * 伙伴换肤界面 * ******************************************************************/ var BridgeComponent = require("bridge.component"); var NxSpine = require("nx.fx.spine"); var HeroController = require("hero_controller"); var TipsController = require("tips_controller"); cc.Class({ "extends": BridgeComponent, properties: { spMini: { "default": null, type: NxSpine }, spRole: { "default": null, type: NxSpine }, nodName: { "default": null, type: cc.Node }, rootAttrs: { "default": null, type: cc.Node }, attrPersons: { "default": null, type: cc.Node }, attrTeam: { "default": null, type: cc.Node }, lstSkin: { "default": null, type: cc.Node }, nodOps: { "default": null, type: cc.Node } }, // 设置伙伴 setPartner: function setPartner(_partner, _cbChanged) { var _this = this; // 置空 if (!_partner) { this.spRole.stop(); this.spMini.stop(); return; } this.partner = _partner; this.preskin = _partner.use_skin; this.cbskin = _cbChanged; this.scheduleOnce(function () { _this.rebuildList(); _this.setSkin(0); }, 0.05); }, // 重建 rebuildList: function rebuildList() { var SkinData = game.configs.partner_skin_data.data_skin_info; var SkinPartners = game.configs.partner_skin_data.data_partner_bid_info; var skins = SkinPartners[this.partner.bid]; this.skins = []; for (var id in skins) { var info = SkinData[id]; this.skins.push(nx.dt.objClone(info)); } // 列表重构 var chds = this.lstSkin.children; nx.gui.gocChildren(this.lstSkin, "", this.skins.length, chds[0]); for (var i = 0; i < this.skins.length; ++i) { var cmp = nx.gui.getComponent(chds[i], "", "cmp.partner.skin.item"); cmp.setSkin(i, this.skins[i]); } }, // 聚焦皮肤 setSkin: function setSkin(_index) { var index = _index; if (this.current == index) { return; } var chds = this.lstSkin.children; for (var i = 0; i < chds.length; ++i) { var cmp = nx.gui.getComponent(chds[i], "", "cmp.partner.skin.item"); cmp.setFocus(i == index); } this.current = index; this.currentShow(this.skins[index]); this.freshShows(); }, // 当前展示 currentShow: function currentShow(_skin) { var _this2 = this; // 如果为空,则还原 if (nx.dt.objEmpty(_skin)) { this.current = -1; var key = this.partner.bid + "_" + this.partner.star; var cfg = gdata("partner_data", "data_partner_star", key); _skin = { res_id: cfg.res_id, skin_name: "SkinRaw", skin_attr: [] }; } // 立绘 var path = PathTool.getSpinePath(_skin.res_id, "show", false); this.spRole.load(path, function (_e) { if (!_e) { _this2.spRole.action("action1", true); } else { _this2.spRole.stop(); } }); // 战斗迷你 path = PathTool.getSpinePath(_skin.res_id, _skin.res_id, false); this.spMini.load(path, function (_e) { if (!_e) { _this2.spMini.action("stand2", true); } else { _this2.spMini.stop(); } }); // 名字 nx.gui.setString(this.nodName, "txt", nx.text.getKey(_skin.skin_name)); // 个人属性加成 var attrs = _skin.skin_attr || []; if (nx.dt.arrEmpty(attrs)) { this.attrPersons.active = false; nx.gui.setActive(this.rootAttrs, "empty1", true); } else { this.attrPersons.active = true; nx.gui.setActive(this.rootAttrs, "empty1", false); var chds = this.attrPersons.children; nx.gui.gocChildren(this.attrPersons, "", attrs.length, chds[0]); for (var i = 0; i < attrs.length; ++i) { nx.bridge.attrs.setAttribute(chds[i], attrs[i]); } } // 团体属性加成 attrs = _skin.skin_attr_all || []; if (nx.dt.arrEmpty(attrs)) { this.attrTeam.active = false; nx.gui.setActive(this.rootAttrs, "empty2", true); } else { this.attrTeam.active = true; nx.gui.setActive(this.rootAttrs, "empty2", false); var _chds = this.attrTeam.children; nx.gui.gocChildren(this.attrTeam, "", attrs.length, _chds[0]); for (var _i = 0; _i < attrs.length; ++_i) { nx.bridge.attrs.setAttribute(_chds[_i], attrs[_i]); } } this.voice = ""; if (nx.dt.strNEmpty(_skin.voice)) { this.voice = cc.path.join("resDB/models", _skin.res_id, _skin.voice); } }, // 展示刷新 freshShows: function freshShows() { var skin = this.skins[this.current]; if (nx.dt.objEmpty(skin)) { this.nodOps.active = false; return; } nx.gui.setActive(this.nodName, "icon", true); nx.gui.setActive(this.nodName, "icon/lock", this.partner.use_skin == 0); // nx.gui.setActive( this.nodName, "icon", this.partner.use_skin != 0 ); // 皮肤项刷新 var node = this.lstSkin.children[this.current]; var cmp = nx.gui.getComponent(node, "", "cmp.partner.skin.item"); if (cmp) { cmp.freshVars(); } // 操作刷新 var HC = HeroController.getInstance(); var HM = HC.getModel(); var used = this.partner.use_skin == skin.skin_id; var lst = HM.hero_skin_list || {}; var have = nx.dt.numGood(lst[skin.skin_id]); this.nodOps.active = true; nx.gui.setActive(this.nodOps, "use", !used && have); nx.gui.setActive(this.nodOps, "using", used); nx.gui.setActive(this.nodOps, "lock", false); // nx.gui.setString( this.nodOps, "lock/txt", nx.text.getKey( skin.unlock_tip ) ); }, // 使用 onTouchChange: function onTouchChange() { var _this3 = this; var skin = this.skins[this.current]; if (nx.dt.objEmpty(skin)) { return; } var HC = HeroController.getInstance(); HC.sender11019(this.partner.partner_id, skin.skin_id, function (_ret, _data) { if (!_ret) { nx.tbox(_data); return; } _this3.freshShows(); nx.dt.fnInvoke(_this3.cbskin); if (nx.dt.strNEmpty(_this3.voice)) { nx.audio.playSFX(_this3.voice); } }); }, // 点击还原 onTouchTakeOff: function onTouchTakeOff() { var _this4 = this; var HC = HeroController.getInstance(); HC.sender11019(this.partner.partner_id, 0, function (_ret, _data) { if (!_ret) { nx.tbox(_data); return; } _this4.freshShows(); nx.dt.fnInvoke(_this4.cbskin); }); }, onTouchLook: function onTouchLook() { var skin_cfg = game.configs.partner_skin_data.data_skin_info[this.skins[this.current].skin_id]; if (skin_cfg) { if (nx.dt.strEmpty(skin_cfg.hcg)) { var tip = nx.text.getKey("NoImplementation"); nx.tbox(tip); return; } nx.bridge.plot.done(); var hcg = skin_cfg.hcg; nx.bridge.plot.records.ids.splice(nx.bridge.plot.records.ids.indexOf(hcg), 1); nx.bridge.plot.fire(hcg); } }, onTouchLock: function onTouchLock() { var skin_cfg = game.configs.partner_skin_data.data_skin_info[this.skins[this.current].skin_id]; var tip = skin_cfg.unlock_tip; nx.tbox(tip); }, // 点击规则 onTouchHelp: function onTouchHelp() { var TC = TipsController.getInstance(); if (TC) { var txt = game.configs.partner_skin_data.data_const.show_txt.desc; TC.showTextPanel("tip", txt); } } }); cc._RF.pop();