"use strict"; cc._RF.push(module, '44b77iQXahB6KlEyNv5b3KT', 'voyage_order_item'); // Scripts/mod/voyage/view/voyage_order_item.js "use strict"; // -------------------------------------------------------------------- // @author: xxx@syg.com(必填, 创建模块的人员) // @description: // 这里是描述这个窗体的作用的 //
Create: 2019-03-07 15:49:44 // -------------------------------------------------------------------- var PathTool = require("pathtool"); var VoyageController = require("voyage_controller"); var CommonScrollView = require("common_scrollview"); var VoyageConst = require("voyage_const"); var TimeTool = require("timetool"); var VoyageEvent = require("voyage_event"); var GuideEvent = require("guide_event"); var Voyage_order_itemPanel = cc.Class({ "extends": BasePanel, ctor: function ctor() { this.prefabPath = PathTool.getPrefabPath("voyage", "voyage_order_item"); }, // 可以初始化声明一些变量的 initConfig: function initConfig() { this.ctrl = VoyageController.getInstance(); this.model = this.ctrl.getModel(); }, // 初始化一些配置数据,可以用于声明一些变量之类的 initPanel: function initPanel() { this.container = this.seekChild("container"); this.rarity_image_sp = this.seekChild(this.container, "rarity_image", cc.Sprite); this.order_name_lb = this.seekChild(this.container, "order_name", cc.Label); this.order_name_lo = this.seekChild(this.container, "order_name", cc.LabelOutline); this.get_btn_nd = this.seekChild(this.container, "get_btn"); this.get_btn_lb = this.seekChild(this.get_btn_nd, "label", cc.Label); this.get_btn_sp = this.seekChild(this.get_btn_nd, "img", cc.Sprite); this.get_btn_sp.node.active = false; this.btn_sp = this.seekChild(this.container, "get_btn", cc.Sprite); this.progress_bg_nd = this.seekChild(this.container, "progress_bg"); this.progress_pb = this.seekChild(this.progress_bg_nd, "progress", cc.ProgressBar); this.progress_value_lb = this.seekChild(this.progress_bg_nd, "progress_value", cc.Label); this.special_sk = this.seekChild("effect").getComponent(sp.Skeleton); var goods_list = this.seekChild(this.container, "goods_list"); var bgSize = goods_list.getContentSize(); var tab_size = cc.size(bgSize.width, bgSize.height); var setting = { item_class: "backpack_item", // 单元类 start_x: 0, // 第一个单元的X起点 space_x: 20, // x方向的间隔 start_y: 0, // 第一个单元的Y起点 space_y: 0, // y方向的间隔 item_width: BackPackItem.Width * 0.7, // 单元的尺寸width item_height: BackPackItem.Height * 0.7, // 单元的尺寸height row: 1, // 行数,作用于水平滚动类型 col: 0, // 列数,作用于垂直滚动类型 scale: 0.7 }; this.expend_label_rt = this.seekChild(this.container, "expend_label", cc.RichText); this.good_scrollview = new CommonScrollView(); this.good_scrollview.createScroll(goods_list, cc.v2(0, 0), ScrollViewDir.horizontal, ScrollViewStartPos.top, tab_size, setting, cc.v2(0.5, 0.5)); }, // 注册事件监听的接口,不需要手动调用,如果是使用gcore.GlobalEvent监听,可以直接调用addGlobalEvent registerEvent: function registerEvent() { Utils.onTouchEnd(this.get_btn_nd, function () { if (this.data) { if (this.data.status == VoyageConst.Order_Status.Unget) { this.ctrl.openVoyageDispatchWindow(true, this.data); } else if (this.data.status == VoyageConst.Order_Status.Underway) { this.ctrl.requestFinishOrder(this.data.order_id, 1); } else if (this.data.status == VoyageConst.Order_Status.Finish) { this.ctrl.requestFinishOrder(this.data.order_id, 0); } if (window.TASK_TIPS) gcore.GlobalEvent.fire(GuideEvent.TaskNextStep, "get_btn_1"); //任务引导用到 } }.bind(this), 2); //远航活动开启/关闭时价格刷新 this.addGlobalEvent(VoyageEvent.UpdateActivityStatusEvent, function () { this.refreshOrderBtnStatus(); }, this); }, setData: function setData(data) { this.data = data; if (this.root_wnd) this.onShow(); }, // 预制体加载完成之后,添加到对应主节点之后的回调可以设置一些数据了 onShow: function onShow() { if (this.data == null) return; if (this.update_self_event == null) { this.update_self_event = this.data.bind(VoyageEvent.UpdateOrderDataEvent, function () { this.refreshOrderInfo(); }, this); } this.handleEffect(false); this.refreshOrderInfo(); }, refreshOrderInfo: function refreshOrderInfo() { if (!this.data) return; var config = this.data.config; if (!config || Utils.next(config) == null) return; this.config = config; this.get_btn_nd.name = "get_btn_" + (this.tmp_index + 1); //稀有度背景 var rarity_res = PathTool.getUIIconPath("voyage", VoyageConst.Order_Rarity_Res[config.quality]); this.loadRes(rarity_res, function (sf_obj) { this.rarity_image_sp.spriteFrame = sf_obj; }.bind(this)); this.order_name_lb.string = config.name; this.order_name_lo.color = VoyageConst.Order_Rarity_Color[config.quality]; //奖励 var award_data = []; for (var i in config.award) { var v = config.award[i]; var bid = v[0]; var num = v[1]; var vo = {}; vo.bid = bid; vo.num = num; award_data.push(vo); } this.good_scrollview.setData(award_data); this.good_scrollview.addEndCallBack(function () { var list = this.good_scrollview.getItemList(); for (var k = 0; k < list.length; ++k) { list[k].setDefaultTip(true); } }.bind(this)); this.refreshOrderBtnStatus(); }, //刷新按钮状态显示 refreshOrderBtnStatus: function refreshOrderBtnStatus() { if (this.data.status == VoyageConst.Order_Status.Unget) { var expend = this.config.expend[0]; if (expend) { var bid = expend[0]; var num = expend[1]; var item_config = Utils.getItemConfig(bid); var res = PathTool.getItemRes(item_config.icon); if (this.model.getActivityStatus() == 1) { var discount_cfg = Config.shipping_data.data_const["discount"]; if (discount_cfg) { num = num * discount_cfg.val / 1000; } } this.expend_label_rt.string = cc.js.formatStr(Utils.TI18N("消耗: %s"), item_config.icon, num); this.loadRes(res, function (resObject) { this.expend_label_rt.addSpriteFrame(resObject); }.bind(this)); } this.get_btn_lb.string = Utils.TI18N("接取"); this.get_btn_lb.node.color = new cc.Color(0x25, 0x55, 0x05, 0xff); this.loadRes(PathTool.getUIIconPath("common", "common_1098"), function (sf_obj) { this.btn_sp.spriteFrame = sf_obj; }.bind(this)); this.get_btn_sp.node.active = false; this.openOrderTimer(false); this.expend_label_rt.node.active = true; this.progress_bg_nd.active = false; } else if (this.data.status == VoyageConst.Order_Status.Underway) { var cur_time = gcore.SmartSocket.getTime(); this.left_time = this.data.end_time - cur_time; if (this.left_time < 0) { this.left_time = 0; } var gold_num = this.model.getQuickFinishNeedGoldByTime(this.left_time); this.get_btn_lb.string = cc.js.formatStr("%d 加速", gold_num); this.get_btn_lb.node.color = new cc.Color(0x25, 0x55, 0x05, 0xff); this.loadRes(PathTool.getUIIconPath("common", "common_1098"), function (sf_obj) { this.btn_sp.spriteFrame = sf_obj; }.bind(this)); this.loadRes(PathTool.getItemRes(3), function (sf_obj) { this.get_btn_sp.spriteFrame = sf_obj; }.bind(this)); this.get_btn_sp.node.active = true; //进度 var percent = 1 - this.left_time / this.config.need_time; this.progress_pb.progress = percent; this.progress_value_lb.string = TimeTool.getTimeFormat(this.left_time); this.openOrderTimer(true); //只有未领取,转到领取的时候拨一下特效 if (this.data.old_status == VoyageConst.Order_Status.Unget) { this.data.old_status = this.data.status; this.handleEffect(true); } if (this.expend_label_rt) { this.expend_label_rt.node.active = false; } this.progress_bg_nd.active = true; } else if (this.data.status == VoyageConst.Order_Status.Finish) { this.get_btn_lb.string = Utils.TI18N("完成"); this.get_btn_lb.node.color = new cc.Color(0x71, 0x28, 0x04, 0xff); this.loadRes(PathTool.getUIIconPath("common", "common_1027"), function (sf_obj) { this.btn_sp.spriteFrame = sf_obj; }.bind(this)); this.progress_pb.progress = 1; this.progress_value_lb.string = Utils.TI18N("完成"); this.openOrderTimer(false); if (this.expend_label_rt) { this.expend_label_rt.node.active = false; } this.progress_bg_nd.active = true; } }, //剩余时间定时器 openOrderTimer: function openOrderTimer(status) { if (status == true) { if (this.order_timer == null) { this.order_timer = gcore.Timer.set(function () { this.left_time = this.left_time - 1; if (this.left_time >= 0) { var percent = 1 - this.left_time / this.config.need_time; this.progress_pb.progress = percent; this.progress_value_lb.string = TimeTool.getTimeFormat(this.left_time); } else { this.progress.progress = 1; this.progress_value_lb.string = Utils.TI18N("完成"); gcore.Timer.del(this.order_timer); this.order_timer = null; } }.bind(this), 1000, -1); } } else { if (this.order_timer != null) { gcore.Timer.del(this.order_timer); this.order_timer = null; } } }, handleEffect: function handleEffect(status) { if (status == false) { if (this.special_sk) { this.special_sk.setToSetupPose(); this.special_sk.clearTracks(); this.special_sk.node.active = false; } } else { if (this.special_sk) { this.special_sk.node.active = true; var res = cc.js.formatStr("spine/%s/action.atlas", PathTool.getEffectRes(629)); this.loadRes(res, function (res_object) { this.special_sk.skeletonData = res_object; this.special_sk.setAnimation(1, PlayerAction.action, false); }.bind(this)); } } }, suspendAllActions: function suspendAllActions() { if (this.data != null) { if (this.update_self_event != null) { this.data.unbind(this.update_self_event); this.update_self_event = null; } this.data = null; } this.handleEffect(false); this.openOrderTimer(false); }, // 面板设置不可见的回调,这里做一些不可见的屏蔽处理 onHide: function onHide() {}, // 当面板从主节点释放掉的调用接口,需要手动调用,而且也一定要调用 onDelete: function onDelete() { if (this.update_self_event != null) { this.data.unbind(this.update_self_event); this.update_self_event = null; } if (this.good_scrollview) { this.good_scrollview.deleteMe(); this.good_scrollview = null; } if (this.order_timer != null) { gcore.Timer.del(this.order_timer); this.order_timer = null; } this.handleEffect(false); this.openOrderTimer(false); } }); cc._RF.pop();