277 lines
8.0 KiB
JavaScript
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(); |