"use strict";
cc._RF.push(module, '9c0d5vfkGBJN7b1Ocs11bzH', 'redbag_send_panel');
// Scripts/mod/redbag/view/redbag_send_panel.js
"use strict";
// --------------------------------------------------------------------
// @author: @syg.com(必填, 创建模块的人员)
// @description:
// 抢红包
//
Create: new Date().toISOString()
// --------------------------------------------------------------------
var PathTool = require("pathtool");
var RedbagController = require("redbag_controller");
var RedbagEvent = require("redbag_event");
var RedBagItem = require("redbag_item");
var RedBagListPanel = require("redbag_list_panel");
var BackpackController = require("backpack_controller");
var BackPackConst = require("backpack_const");
var RedBagGetPanel = cc.Class({
"extends": BasePanel,
ctor: function ctor() {
this.prefabPath = PathTool.getPrefabPath("redbag", "redbag_send");
this.ctrl = RedbagController.getInstance();
this.size = cc.v2(644, 740);
this.is_can_save = false;
this.item_list = {};
this.need_list = {};
this.default_msg = Utils.TI18N("身为土豪,有钱任性");
this.is_send_proto = false;
this.use_assert = 0; //使用道具还是资产法红包
this.msg_list = {};
this.extend_id = arguments[0] || this.ctrl.getModel().getHaveItemID() || 1;
this.select_msg = null;
},
initPanel: function initPanel() {
// this.background = this.seekChild("background");
this.main_panel = this.seekChild("main_panel");
this.top_panel = this.seekChild(this.main_panel, "top_panel");
this.bottom_panel = this.seekChild(this.main_panel, "bottom_panel");
this.num_panel = this.seekChild(this.bottom_panel, "num_panel");
this.send_btn = this.seekChild(this.bottom_panel, "send_btn");
this.send_btn_red_point = this.seekChild(this.send_btn, "red_point");
this.send_btn_red_point.active = false;
this.btn_label = this.seekChild(this.send_btn, "label", cc.RichText);
this.send_tips_lb = this.seekChild("send_tips", cc.Label);
this.left_btn = this.seekChild(this.top_panel, "left_btn");
this.right_btn = this.seekChild(this.top_panel, "right_btn");
this.right_btn_red_point = this.seekChild(this.right_btn, "red_point");
this.right_btn_red_point.active = false;
this.left_btn_red_point = this.seekChild(this.left_btn, "red_point");
this.left_btn_red_point.active = false;
this.item_container = this.seekChild(this.bottom_panel, "item_container");
this.num_label = this.seekChild(this.bottom_panel, "num_label", cc.Label);
this.send_content = this.seekChild(this.bottom_panel, "send_content", cc.Label);
this.createDesc();
this.requireProto();
},
createDesc: function createDesc() {
this.send_notice = this.seekChild(this.top_panel, "send_notice", cc.RichText);
this.send_notice.string = cc.js.formatStr(Utils.TI18N("(今日还可发%s)"), 100); //红包金额
this.coin_label = this.seekChild(this.bottom_panel, "coin_label", cc.RichText);
this.coin_img = this.seekChild(this.bottom_panel, "coin_img", cc.Sprite);
this.updateBagList();
},
requireProto: function requireProto() {
this.ctrl.send13546();
},
registerEvent: function registerEvent() {
this.send_btn.on(cc.Node.EventType.TOUCH_END, function () {
if (this.red_send_info == null || this.select_vo == null) return;
if (this.cost_item_bid && this.cost_item_bid != 0) {
this.ctrl.sender13535(this.select_vo.id, 1);
} else {
var charge_config = gdata("charge_data", "data_charge_data", [this.select_vo.charge_id]);
if (charge_config) {
SDK.pay(charge_config.val, null, charge_config.id, charge_config.name, charge_config.name, null, null);
}
}
}.bind(this));
this.left_btn.on(cc.Node.EventType.TOUCH_END, function () {
if (this.list_view) {
this.list_view.runLeftPostion();
}
}.bind(this));
this.right_btn.on(cc.Node.EventType.TOUCH_END, function () {
if (this.list_view) {
this.list_view.runRightPostion();
}
}.bind(this));
this.addGlobalEvent(RedbagEvent.Update_Red_Bag_Event, function (data) {
this.updateRedInfo(data);
}.bind(this)); //道具数量更新
this.addGlobalEvent(EventId.ADD_GOODS, function (bag_code, data_list) {
this.updateItemNum(bag_code, data_list);
}.bind(this));
this.addGlobalEvent(EventId.DELETE_GOODS, function (bag_code, data_list) {
this.updateItemNum(bag_code, data_list);
}.bind(this));
this.addGlobalEvent(EventId.MODIFY_GOODS_NUM, function (bag_code, data_list) {
this.updateItemNum(bag_code, data_list);
}.bind(this));
},
openRootWnd: function openRootWnd() {},
updateBagList: function updateBagList() {
if (this.list_view == null) {
var list_size = cc.size(580, 370);
var setting = {
item_class: RedBagItem,
// 单元类
start_x: 0,
// 第一个单元的X起点
space_x: 0,
// x方向的间隔
start_y: 2,
// 第一个单元的Y起点
space_y: 0,
// y方向的间隔
item_width: 262,
// 单元的尺寸width
item_height: 327,
// 单元的尺寸height
row: 1,
// 行数,作用于水平滚动类型
col: 1 // 列数,作用于垂直滚动类型
};
this.list_view = new RedBagListPanel();
this.list_view.createScroll(this.top_panel, cc.v2(270, 20), ScrollViewDir.horizontal, ScrollViewStartPos.top, list_size, setting, cc.v2(0.5, 0.5));
}
var config = Config.guild_data.data_guild_red_bag;
var list = [];
var index = 0;
for (var i in config) {
var v = config[i];
list[index] = {
data: v,
open_type: 1
};
index = index + 1;
}
for (var i in list) {
var v = list[i];
v.sort_index = 1;
if (v.data.id == this.extend_id) v.sort_index = 0;
}
list.sort(Utils.tableLowerSorter(["sort_index", "id"]));
this.list_view.setData(list);
this.list_view.addEndCallBack(function () {
this.updateMessage();
}.bind(this));
this.list_view.setData(list);
},
updateMessage: function updateMessage() {
var item = this.list_view.getSelectItem();
var vo = null;
if (item) {
vo = item.getData();
}
if (item == null) return;
if (this.select_vo && this.select_vo == vo) return;
this.select_vo = vo;
if (!this.select_vo) return;
var data = this.select_vo; //红包金额
var coint = data.assets;
var item_id = gdata("item_data", "data_assets_label2id", [coint]);
var item_config = Utils.getItemConfig(item_id);
if (item_config) {
this.coin_label.string = String(data.val);
var res = PathTool.getItemRes(item_config.icon);
this.loadRes(res, function (res_object) {
this.coin_img.spriteFrame = res_object;
}.bind(this));
}
this.send_content.string = data.msg;
this.num_label.string = data.num;
this.fileRewardsItem(data.reward);
this.showRedSendNum();
},
fileRewardsItem: function fileRewardsItem(list) {
if (list == null || Utils.next(list) == null) return;
for (var k in this.item_list) {
var v = this.item_list[k];
v.setVisible(false);
}
var scale = 0.7;
var off = 10;
for (var i in list) {
var v = list[i];
if (this.item_list[i] == null) {
var item = ItemsPool.getInstance().getItem("backpack_item");
item.initConfig(false, scale, false, false);
item.show();
var x = 20 + (120 * scale + off) * (i - 1) + 120 * scale * 0.5 - 388 / 2 + 60 * scale;
item.setPosition(x, 50);
item.setParent(this.item_container);
this.item_list[i] = item;
}
var item = this.item_list[i];
item.setData({
bid: v[0],
num: v[1]
});
item.setVisible(true);
}
},
//设置红包可发次数
updateRedInfo: function updateRedInfo(data) {
this.red_send_info = data;
this.showRedSendNum();
},
updateItemNum: function updateItemNum(bag_code, data_list) {
if (this.cost_item_bid) {
if (bag_code != null && data_list != null) {
if (bag_code == BackPackConst.Bag_Code.BACKPACK) {
for (var i in data_list) {
var v = data_list[i];
if (v && v.base_id != null && this.cost_item_bid == v.base_id) {
this.showRedSendNum();
break;
}
}
}
}
}
},
showRedSendNum: function showRedSendNum() {
if (this.red_send_info == null || this.select_vo == null) return;
var red_config = Config.guild_data.data_guild_red_bag[this.select_vo.id];
if (!red_config) return;
this.cost_item_bid = 0; //可以消耗道具发红包的道具bid
this.send_tips_lb.node.active = false;
var send_num = 0;
for (var i in this.red_send_info) {
var v = this.red_send_info[i];
if (v.id == this.select_vo.id) {
send_num = v.num;
break;
}
}
send_num = this.select_vo.limit - send_num;
if (send_num < 0) {
send_num = 0;
}
this.send_notice.string = cc.js.formatStr(Utils.TI18N("(今日还可发%s)"), send_num);
if (send_num == 0) {
this.btn_label.string = Utils.TI18N("次数已达上限");
} else {
var charge_config = gdata("charge_data", "data_charge_data", [this.select_vo.charge_id]);
if (this.checkLossItemIsEnough(red_config.loss_item)) {
var bid = red_config.loss_item[0][0];
var num = red_config.loss_item[0][1];
var item_cfg = Utils.getItemConfig(bid);
if (item_cfg) {
this.cost_item_bid = bid;
var res = PathTool.getItemRes(item_cfg.icon);
this.btn_label.string = cc.js.formatStr(Utils.TI18N("
%s 发红包"), item_cfg.icon, num);
this.loadRes(res, function (resObject) {
this.btn_label.addSpriteFrame(resObject);
}.bind(this));
this.send_tips_lb.string = cc.js.formatStr(Utils.TI18N("当前拥有红包令,消耗%s个可发放1次该红包"), num);
this.send_tips_lb.node.active = true;
}
} else if (charge_config) this.btn_label.string = cc.js.formatStr(Utils.TI18N("%s元 发红包"), charge_config.val);
}
if (this.cur_send_num != send_num) {
this.cur_send_num = send_num;
if (send_num == 0) {
Utils.setGreyButton(this.send_btn, true); // this.btn_label
} else {
Utils.setGreyButton(this.send_btn, false); // enableOutline
}
}
},
//判断道具数量是否足够发红包
checkLossItemIsEnough: function checkLossItemIsEnough(loss_item) {
var is_enough = false;
if (loss_item && loss_item[0] != null) {
var bid = loss_item[0][0];
var need_num = loss_item[0][1];
var have_num = BackpackController.getInstance().getModel().getItemNumByBid(bid);
if (have_num >= need_num) {
is_enough = true;
}
}
return is_enough;
},
setVisibleStatus: function setVisibleStatus(bool) {
this.setVisible(bool);
},
onShow: function onShow() {},
setData: function setData(data) {},
onDelete: function onDelete() {
if (this.list_view) {
this.list_view.deleteMe();
this.list_view = null;
}
if (this.item_list) {
for (var k in this.item_list) {
var v = this.item_list[k];
v.deleteMe();
}
this.item_list = null;
}
}
});
module.exports = RedBagGetPanel;
cc._RF.pop();