Files
fc/dev/project/library/imports/1d/1dfded56-2d4b-474a-aa2a-7626c6ab9ca5.js
T

334 lines
8.8 KiB
JavaScript
Raw Normal View History

2026-05-24 10:21:26 +08:00
"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();