Files
fc/dev/project/library/imports/58/589a31ac-c727-4987-9ad1-6db24e1a5d21.js
2026-05-24 10:21:26 +08:00

277 lines
8.0 KiB
JavaScript

"use strict";
cc._RF.push(module, '589a3GsxydJh5rRbbJOGl0h', 'cmp.dispatch.wnd');
// Scripts/mod/home/dispatch/cmps/cmp.dispatch.wnd.js
"use strict";
/******************************************************************
*
* 派遣界面
*
******************************************************************/
var BridgeWindow = require("bridge.window");
var FxSVC = require("nx.fx.sv.expand");
var RoleController = require("role_controller");
var HeroController = require("hero_controller");
var TipsController = require("tips_controller");
var DispatchConst = require("dispatch.const");
var DispatchMod = require("dispatch.mod");
// 订单状态
var DSOS = DispatchConst.Order_Status;
cc.Class({
"extends": BridgeWindow,
properties: {
nodCoin: {
"default": null,
type: cc.Node
},
nodOps: {
"default": null,
type: cc.Node
},
svcList: {
"default": null,
type: FxSVC
}
},
// 显示
onEnable: function onEnable() {
var DC = DispatchMod.getInstance();
DC.reqData();
// 事件监听
this.bindGEvent(DispatchConst.FreshData, this.onFreshTaskList.bind(this));
this.bindGEvent(DispatchConst.DeleteOrder, this.onFreshTaskList.bind(this));
// 基础更新
this.freshBase();
// 数据更新
this.onFreshTaskList();
},
// 关闭
onDisable: function onDisable() {
// 事件监听释放
this.unbindGEvents();
},
// 置空
setEmpty: function setEmpty() {
// 文本置空
nx.gui.setString(this.nodLevel, "txt", "Lv.--");
nx.gui.setString(this.nodVolume, "txt", "0/0");
// 伙伴置空
this.svcList.rebuild([]);
// 目标置空
this.nodTars.children.forEach(function (_tar) {
nx.gui.setActive(_tar, "normal", false);
nx.gui.setActive(_tar, "empty", true);
});
this.data = null;
this.tarTag = "";
},
// 基础更新
freshBase: function freshBase() {
// 最大体力值更新
this.role = RoleController.getInstance().getRoleVo();
nx.gui.setString(this.nodCoin, "value/max", this.role.energy_max);
},
// 全刷新
onFreshTaskList: function onFreshTaskList() {
var _SORT_TAGS,
_this = this;
var DM = DispatchMod.getInstance().getModel();
this.orders = DM.getAllOrderList();
// 排序规则 已完成>可接取>进行中
var SORT_TAGS = (_SORT_TAGS = {}, _SORT_TAGS[DSOS.Finish] = 1, _SORT_TAGS[DSOS.Unget] = 2, _SORT_TAGS[DSOS.Underway] = 3, _SORT_TAGS);
// 排序方法
var sortFunc = function sortFunc(objA, objB) {
var sort_index_a = SORT_TAGS[objA.status];
var sort_index_b = SORT_TAGS[objB.status];
//引导需要订单号为1的放在最前面
if (objA.order_id == 1 && objA.status == DSOS.Unget && objB.order_id != 1) {
return -1;
}
if (objA.order_id != 1 && objB.order_id == 1 && objB.status == DSOS.Unget) {
return 1;
}
//未接取的按照品质排序,已接取和已完成的按照完成时间排序
if (sort_index_a == sort_index_b) {
if (objA.status == DSOS.Unget) {
return objB.config.quality - objA.config.quality;
} else {
return objA.end_time - objB.end_time;
}
} else {
return sort_index_a - sort_index_b;
}
};
this.orders.sort(sortFunc);
nx.gui.setActive(this.svcList, "empty", nx.dt.arrEmpty(this.orders));
this.svcList.rebuild(this.orders);
// 引导辅助
if (nx.bridge.plot && nx.bridge.plot.isDoing()) {
this.scheduleOnce(function () {
_this.positionFirstOrder();
}, 0.1);
}
// 操作更新
this.freshOps();
},
// 操作更新
freshOps: function freshOps() {
nx.gui.hideAllChildren(this.nodOps, "");
var DATA = game.configs.shipping_data.data_refresh[this.role.vip_lev];
if (!DATA) {
return;
}
// 一键领取
nx.gui.setActive(this.nodOps, "once", true);
// 免费刷新
var model = DispatchMod.getInstance().getModel();
var times = model.getFreeTimes();
var total = DATA.free_times;
if (times < total) {
nx.gui.setActive(this.nodOps, "free", true);
nx.gui.setString(this.nodOps, "free/times", nx.text.format("RangeTimes", times, total));
return;
}
// 钻石刷新(次数不封顶)
nx.gui.setActive(this.nodOps, "fresh", true);
var expend = DATA.expend[0];
var info = gitemdata(expend[0]);
nx.bridge.setIconS(this.nodOps, "fresh/cost/icon", info.icon);
nx.gui.setString(this.nodOps, "fresh/cost/txt", expend[1]);
},
// 同步标的单刷
freshTarget: function freshTarget(_node, _data) {
// 置空
if (nx.dt.objEmpty(_data) || !nx.dt.numPositive(_data.id, false)) {
nx.gui.setActive(_node, "normal", false);
nx.gui.setActive(_node, "empty", true);
return;
}
// 更新
var HC = HeroController.getInstance();
var partner = HC.getModel().getHeroById(_data.id);
if (!partner) {
nx.error("同步目标无效:", _data.id);
nx.gui.setActive(_node, "normal", false);
nx.gui.setActive(_node, "empty", true);
return;
}
// 获取配置
var key = partner.bid + "_" + partner.star;
var cfgs = gdata("partner_data", "data_partner_star", key);
if (!cfgs) {
nx.error("同步目标配置无效:", _data.id, key);
nx.gui.setActive(_node, "normal", false);
nx.gui.setActive(_node, "empty", true);
return;
}
nx.gui.setActive(_node, "empty", false);
nx.gui.setActive(_node, "normal", true);
// 等级
nx.gui.setString(_node, "normal/level", partner.lev);
// 角色
var path = cc.path.join("resDB/models", cfgs.res_id, "half_show2");
nx.gui.setSpriteFrame(_node, "normal/avatar/img", path, function (_ret) {
if (!_ret) {
nx.gui.setSpriteFrame(_node, "normal/avatar/img", "resDB/empty/half_show2");
}
});
},
// 点击说明
onTouchHelp: function onTouchHelp() {
var DATA = game.configs.shipping_data.data_explain;
var txt = "";
for (var i in DATA) {
txt += nx.text.getKey(DATA[i].desc);
txt += '<br/>';
}
var TC = TipsController.getInstance();
TC.showTextPanel("tip", txt);
},
// 点击刷新
onTouchFresh: function onTouchFresh() {
var count = 0;
this.orders.forEach(function (_order) {
if (_order.config.quality >= 3 && _order.status == 1) {
count++;
}
});
var DC = DispatchMod.getInstance();
if (count > 0) {
nx.mbox(nx.text.getKey("HomeDispatchTip"), ['cancel', 'confirm'], function (_key, _box) {
_box.close();
if (_key == "confirm") {
// this.reqSummon( _args.type, _times, _args );
DC.requestRefreshOrder();
}
});
} else {
DC.requestRefreshOrder();
}
},
// 点击免费刷新
onTouchFreshFree: function onTouchFreshFree() {
this.onTouchFresh();
},
// 点击一键领取
onTouchGetOnce: function onTouchGetOnce() {
var DC = DispatchMod.getInstance();
DC.requestQuickReceiveOrder(function (_ret, _data) {
if (!_ret) {
nx.tbox(_data);
return;
}
});
},
// ============================================
// 引导辅助
// ============================================
// 定位第一个派遣订单
positionFirstOrder: function positionFirstOrder() {
var children = this.svcList.bindSCV.content.children;
var node = children[0];
if (!node) {
nx.error("$Dispatch:定位第一个派遣订单失败!");
node = children[0];
if (!node) {
return;
}
}
var cell = nx.gui.find(this, "panel/plotCell");
var btn = nx.gui.find(node.svItem, "ops/dispatch");
var pos = btn.convertToWorldSpaceAR(cc.Vec2.ZERO);
cell.position = cell.parent.convertToNodeSpaceAR(pos);
cell.width = btn.width;
cell.height = btn.height;
cell.svItem = node.svItem;
},
// 点击第一个订单派遣
onTouchFirstOrder: function onTouchFirstOrder() {
var cell = nx.gui.find(this, "panel/plotCell");
if (cell && cell.svItem) {
cell.svItem.onTouchDispatch();
}
}
});
cc._RF.pop();