"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 += '
'; } 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();