"use strict"; cc._RF.push(module, '1dfde1WLUtHSqoqdibGq5yl', 'cmp.personal.clerk.wnd'); // Scripts/mod/personal/cmps/cmp.personal.clerk.wnd.js "use strict"; /****************************************************************** * * 秘书组 * ******************************************************************/ var BridgeWindow = require("bridge.window"); var FxTogs = require("nx.fx.togs"); var FxSVC = require("nx.fx.sv.expand"); var Clerk = require("partner.clerk.mod"); var TipsController = require("tips_controller"); var RoleController = require("role_controller"); var HeroConst = require("hero_const"); var HeroControl = require("hero_controller"); var HCT = HeroConst.CampType; cc.Class({ "extends": BridgeWindow, properties: { pageGroup: { "default": null, type: cc.Node }, pageSelect: { "default": null, type: cc.Node }, togCamp: { "default": null, type: FxTogs }, svcList: { "default": null, type: FxSVC }, nodCount: { "default": null, type: cc.Node } }, // 加载 onLoad: function onLoad() { this.skins = {}; this.selects = []; // 视图监听 this.vbind([["clerkList", this.onFreshGroup.bind(this)]]); // 获取秘书组信息 Clerk.getInstance().reqFetch(); // 切换秘书页 this.showGroupPage(); }, // 销毁 onDestroy: function onDestroy() { // 视图监听释放 this.vunbind(); }, // ============================================================ // 秘书页 // ============================================================ // 切换秘书页 showGroupPage: function showGroupPage() { this.pageGroup.active = true; this.pageSelect.active = false; }, // 重置 onFreshGroup: function onFreshGroup(_clerks, _old, _init) { if (_init) { return; } var conds = game.configs.secretary_data.data_secretary_info; var role = RoleController.getInstance().getRoleVo(); // 单设 var count = 0, max = 0; var reset = function reset(_node, _data, _rank) { var _nx$bridge$partner; // 未解锁 var rank = _rank || 1; var limit = conds[rank] || 0; var locked = role.lev < limit; if (locked) { nx.gui.setActive(_node, "empty", false); nx.gui.setActive(_node, "normal", false); nx.gui.setActive(_node, "locked", true); nx.gui.setString(_node, "locked/txt", nx.text.format("UnLockedLevel", limit)); return; } // 解锁数量 ++max; // 空缺 if (nx.dt.objEmpty(_data)) { nx.gui.setActive(_node, "empty", true); nx.gui.setActive(_node, "normal", false); nx.gui.setActive(_node, "locked", false); return; } // 秘书验证 var args = _data.resource_id.split("_"); var key = args[0] + "_" + args[1]; var clerk = gdata("partner_data", "data_partner_star", key); if (!clerk) { nx.error("秘书无效!", _data.resource_id); nx.gui.setActive(_node, "empty", true); nx.gui.setActive(_node, "normal", false); nx.gui.setActive(_node, "locked", false); return; } ++count; // 有角色 nx.gui.setActive(_node, "empty", false); nx.gui.setActive(_node, "locked", false); var node = nx.gui.setActive(_node, "normal", true); var cfgs = game.configs.partner_data.data_partner_base[clerk.bid]; // 阵营标记 var camp = cfgs ? cfgs.camp_type : HCT.eWater; var path = cc.path.join("coms/images", "camps" + camp); nx.gui.setSpriteFrame(node, "head/camp", path); // 阵营背景 path = cc.path.join("coms/camps", "bg" + camp); nx.gui.setSpriteFrame(node, "bg", path); // 阵营边框 path = cc.path.join("coms/camps", "frame" + camp); nx.gui.setSpriteFrame(node, "frame", path); // 角色 var info = (_nx$bridge$partner = nx.bridge.partner).parseShowInfo.apply(_nx$bridge$partner, args); nx.gui.setSpriteFrame(node, "mask/img", info.img_half_nor, function (_ret) { if (!_ret) { nx.gui.setSpriteFrame(node, "mask/img", "resDB/empty/half_show2"); } }); }; // 遍历填充 var chds = this.pageGroup.children; for (var i = 0; i < chds.length; ++i) { reset(chds[i], _clerks ? _clerks[i] : null, i + 1); } this.cntSelect = count; this.maxSelect = max; }, // 批量重选 reselectOnce: function reselectOnce() { this.showSelectPage(); }, // 点击更换 onTouchChange: function onTouchChange(_rank) { this.reselectOnce(); }, // 点击添加 onTouchAdd: function onTouchAdd(_rank) { this.reselectOnce(); }, // 点击帮助 onTouchHelp: function onTouchHelp() { var txt = game.configs.secretary_data.data_secretary_const.secretary_rule.des; if (nx.dt.strNEmpty(txt)) { var TC = TipsController.getInstance(); TC.showTextPanel("tip", txt); } }, // ============================================================ // 选择页 // ============================================================ // 切换选择页 showSelectPage: function showSelectPage() { var _this = this; this.pageGroup.active = false; this.pageSelect.active = true; // 初始选择 this.selects = []; var arr = nx.bridge.vget("clerkList") || []; arr.forEach(function (_t) { _this.selects.push(_t.resource_id); }); // 初始化 if (!nx.dt.fnGood(this.togCamp.posTog)) { this.togCamp.posTog = this.onTogCamp.bind(this); this.togCamp.togTo(0); this.scheduleOnce(function () { _this.onTogCamp(HCT.eNone); }, 0.01); } }, // 整体刷新 freshClerks: function freshClerks() { var _this2 = this; // 获取当前秘书列表 var clerks = this.skins[this.curCamp]; if (!clerks) { // 筛选当前阵营所有不同的皮肤资源 clerks = []; var records = {}; var HC = HeroControl.getInstance(); var partners = HC.getModel().getHeroListByCamp(this.curCamp); partners.sort(function (_a, _b) { return _a.star - _b.star; }); for (var i in partners) { var pt = partners[i]; if (!pt) { continue; } var key = pt.bid + "_" + pt.star + "_" + pt.use_skin; var cfg = nx.bridge.partner.getShowInfo(pt); if (!cfg || records[cfg.resid]) { continue; } records[cfg.resid] = cfg; clerks.push({ key: key, partner: pt, cfg: cfg }); } this.skins[this.curCamp] = clerks; } // 排序 clerks.sort(function (_a, _b) { var ain = nx.dt.arrMember(_this2.selects, _a.key); var bin = nx.dt.arrMember(_this2.selects, _b.key); if (ain != bin) { return ain ? -1 : 1; } if (_a.cfg.star != _b.cfg.star) { return _a.cfg.bid - _b.cfg.bid; } return _b.cfg.star - _a.cfg.star; }); // 列表重置 nx.gui.setActive(this.svcList, "empty", nx.dt.arrEmpty(clerks)); this.svcList.rebuild(clerks); // 当前选中统计 for (var k in clerks) { var ck = clerks[k]; if (nx.dt.arrMember(this.selects, ck.key)) { this.svcList.addFocus(k); } } // 刷新选择数量 this.freshCount(); }, // 刷新选择数量 freshCount: function freshCount() { var txt = this.selects.length + "/" + this.maxSelect; nx.gui.setString(this.nodCount, "txt", txt); }, // 点击取消 onTouchCancel: function onTouchCancel() { this.showGroupPage(); }, // 点击确认 onTouchConfirm: function onTouchConfirm() { var _this3 = this; var args = []; for (var i = 0; i < this.selects.length; ++i) { args.push({ resource_id: this.selects[i] }); } nx.bridge.clerks.reqModify(args, function () { _this3.showGroupPage(); }); }, // 阵营切换 onTogCamp: function onTogCamp(_index) { var idx = parseInt(_index) || 0; if (this.curCamp == idx) { return; } nx.debug("[Hero]\u9635\u8425\u5207\u6362:" + this.curCamp + " -> " + idx); this.curCamp = idx; // 整体刷新 this.freshClerks(); }, // 选中切换 onFocusChanged: function onFocusChanged(_item) { // 空 if (nx.dt.objEmpty(_item) || nx.dt.objEmpty(_item.mdata)) { return; } // 取消聚焦 if (this.svcList.isFocus(_item.index)) { this.svcList.removeFocus(_item.index); nx.dt.arrDelete(this.selects, function (_t) { return _item.mdata.key == _t; }); this.freshCount(); return; } // 超限 if (this.selects.length >= this.maxSelect) { return; } // 聚焦 this.svcList.addFocus(_item.index); this.selects.push(_item.mdata.key); this.freshCount(); }, close: function close() { this._super(); nx.bridge.createPanel("WndPersonal"); } }); cc._RF.pop();