"use strict"; cc._RF.push(module, '465b8fUZTdKxJE4l5IjG/gj', 'cmp.personal.figure.wnd'); // Scripts/mod/personal/cmps/cmp.personal.figure.wnd.js "use strict"; /****************************************************************** * * 形象设置 * ******************************************************************/ var BridgeWindow = require("bridge.window"); var RoleController = require("role_controller"); var FxTogs = require("nx.fx.togs"); var FxSVC = require("nx.fx.sv.expand"); // 菜单标签 var MenuTags = { Partner: 0, Skin: 1 }; cc.Class({ "extends": BridgeWindow, properties: { togMenu: { "default": null, type: FxTogs }, nodShow: { "default": null, type: cc.Node }, lstPartners: { "default": null, type: FxSVC } }, // 重载:参数打开 onOpenConfigs: function onOpenConfigs(_params) { // 当前拥有 this.library = []; this.idxPartner = -1; this.use_id = _params.use_id || 0; this.figures = _params.list || []; // Tog监听 this.togMenu.posTog = this.onTogMenu.bind(this); this.togMenu.togTo(MenuTags.Partner); this.onTogMenu(MenuTags.Partner); }, // 重载:关闭前 onPreClosed: function onPreClosed() { this.lstPartners.rebuild([]); }, // 等级切换 onTogMenu: function onTogMenu(_index) { var _this = this; this.tagMenu = _index; // 重置 this.idxPartner = -1; this.partners = this.queryFigureList(this.tagMenu); this.lstPartners.rebuild(this.partners); // 聚焦 this.lstPartners.cleanFocus(); this.scheduleOnce(function () { _this.setUsedPartner(_this.use_id); _this.onPartnerChanged({ index: 0, mdata: _this.partners[0] }); }, 0.1); }, // 设置展示角色 setCurrent: function setCurrent(_info) { // 置空 if (nx.dt.objEmpty(_info)) { nx.gui.setActive(this.nodShow, "show", false); nx.gui.setActive(this.nodShow, "cond", false); nx.gui.setActive(this.nodShow, "props", false); return; } // 模型 nx.gui.setActive(this.nodShow, "show", true); var model = nx.gui.getComponent(this.nodShow, "show", "nx.fx.spine"); if (model) { var path = PathTool.getSpinePath(_info.model, _info.model, false); model.load(path, function (_e) { if (!_e) { model.action("stand2", true); } else { model.stop(); } }); } // 属性 var text = "FigureNoProps"; nx.gui.setActive(this.nodShow, "props", true); if (nx.dt.arrNEmpty(_info.attr)) { text = nx.bridge.attrs.strAttributes(_info.attr); } nx.gui.setString(this.nodShow, "props/txt", nx.text.getKey(text)); // 解锁 text = "FigureUnlocked"; nx.gui.setActive(this.nodShow, "cond", true); if (!_info.unlock) { text = _info.tip; } nx.gui.setString(this.nodShow, "cond/txt", nx.text.getKey(text)); }, // ================================================================ // 伙伴相关 // ================================================================ // 设置当前使用的伙伴形象 setUsedPartner: function setUsedPartner(_id) { this.use_id = _id; var chds = this.lstPartners.bindSCV.content.children; for (var i = 0; i < chds.length; ++i) { var node = chds[i]; if (node && node.svItem) { nx.gui.setActive(node.svItem, "used", node.svItem.mdata.id == _id); } } }, // 选中切换 onPartnerChanged: function onPartnerChanged(_item) { // 空 / 当前使用中 if (!_item || !_item.mdata || _item.index == this.idxPartner) { return; } // 聚焦 this.lstPartners.cleanFocus(); this.lstPartners.addFocus(_item.index); // 展示信息 this.idxPartner = _item.index; this.setCurrent(_item.mdata); // 操作刷新 var ok = _item.mdata.unlock && _item.mdata.id != this.use_id; nx.gui.setLocked(this, "panel/confirm", !ok); }, // 点击确认 onTouchConfirm: function onTouchConfirm() { var _this2 = this; var partner = this.partners[this.idxPartner]; if (!partner) { return; } var RC = RoleController.getInstance(); RC.reqUseFigure(partner.id, function (_ret, _data) { if (!_ret) { nx.tbox(_data); return; } _this2.setUsedPartner(partner.id); nx.gui.setLocked(_this2, "panel/confirm", true); }); }, // 获取形象列表 queryFigureList: function queryFigureList(_type) { // 统计全形象 if (nx.dt.arrEmpty(this.library)) { this.library = []; var LOOKS = game.configs.looks_data.data_data; var SKINS = game.configs.partner_skin_data.data_skin_info; for (var id in LOOKS) { var ifo = LOOKS[id]; var cfgs = game.configs.partner_data.data_partner_base[ifo.partner_id]; if (nx.dt.objEmpty(cfgs)) { nx.error("无效形象配置:", id); continue; } var item = { id: ifo.id, icon: 0, skin: ifo.skin_id, name: ifo.name, model: ifo.model, partner: ifo.partner_id, unlock: false, tip: ifo.unlock_tip, attr: ifo.attr }; // 如果是皮肤 if (nx.dt.numPositive(ifo.skin_id, false)) { var sfo = SKINS[ifo.skin_id]; if (nx.dt.objNEmpty(sfo)) { item.name = sfo.skin_name; item.attr = sfo.skin_attr; item.model = sfo.res_id; item.icon = sfo.head_id; item.tip = sfo.source_tip; } } else { var tf = gitemdata(cfgs.item_id); if (tf) { item.icon = tf.icon; } } this.library.push(item); } } // 是否解锁 var self = this; var isUnlocked = function isUnlocked(_id) { for (var i in self.figures) { var tm = self.figures[i]; if (tm && tm.id == _id) { return true; } } return false; }; // 重建 var partners = []; for (var i = 0; i < this.library.length; ++i) { var partner = this.library[i]; partner.unlock = isUnlocked(partner.id); // 有效皮肤列表 if (_type == MenuTags.Skin && partner.skin > 0) { partners.push(partner); continue; } // 有效伙伴列表 if (_type == MenuTags.Partner && partner.skin == 0) { partners.push(partner); continue; } } // 排序 partners.sort(function (_p1, _p2) { // 聚焦首位 if (_p1.id == self.use_id || _p2.id == self.use_id) { return _p1.id == self.use_id ? -1 : 1; } // 解锁优先 if (_p1.unlock || _p2.unlock) { return _p1.unlock ? -1 : 1; } // ID排序 return _p1.id - _p2.id; }); return partners; } }); cc._RF.pop();