"use strict";
cc._RF.push(module, '70481KJ12hOtZnX0lMjPCYr', 'mall_item');
// Scripts/mod/mall/view/mall_item.js
"use strict";
// --------------------------------------------------------------------
// @author: @syg.com(必填, 创建模块的人员)
// @description:
// 竖版商城列表子项
//
Create: new Date().toISOString()
// --------------------------------------------------------------------
var MallController = require("mall_controller");
var MallEvent = require("mall_event");
var RoleController = require("role_controller");
var MallItem = cc.Class({
"extends": BasePanel,
ctor: function ctor() {
this.prefabPath = PathTool.getPrefabPath("mall", "mall_item");
this.ctrl = MallController.getInstance();
this.size = cc.size(306, 143);
this.width = 306;
this.height = 143;
this.vo = null;
this.data = null;
this.is_touch = true;
this.role_vo = RoleController.getInstance().getRoleVo();
},
initPanel: function initPanel() {
this.main_container = this.root_wnd.getChildByName("main_container");
this.name = this.main_container.getChildByName("name").getComponent(cc.Label);
this.coin = this.main_container.getChildByName("count_bg").getChildByName("coin").getComponent(cc.Sprite);
this.price = this.main_container.getChildByName("count_bg").getChildByName("price").getComponent(cc.Label);
this.good = this.main_container.getChildByName("good");
this.goods_item = ItemsPool.getInstance().getItem("backpack_item");
this.goods_item.initConfig(false, 1, false, true); // this.goods_item.setPosition(10 + BackPackItem.Width / 2, this.root_wnd.getContentSize().height / 2)
this.goods_item.setParent(this.good);
this.goods_item.show();
this.discount = this.main_container.getChildByName("discount");
this.discount_num = this.discount.getChildByName("discount_num").getComponent(cc.Label);
this.discount.active = false;
this.discount_label = this.main_container.getChildByName("discount_label").getComponent(cc.RichText);
this.sold = this.main_container.getChildByName("sold");
this.sold.active = false;
this.grey = this.main_container.getChildByName("grey");
this.grey.active = false;
this.need_icon = this.main_container.getChildByName("need_icon");
this.need_label = this.main_container.getChildByName("need_label").getComponent(cc.Label);
this.need_icon.active = false;
this.need_label.node.active = false;
this.setSellAll(false);
this.setData(this.data);
},
registerEvent: function registerEvent() {
this.main_container.on(cc.Node.EventType.TOUCH_END, function () {
if (!this.is_touch) return;
if (this.vip_limit_flag > 0) {
message(cc.js.formatStr(Utils.TI18N("VIP%s以上可购买"), this.vip_limit_flag));
return;
}
if (this.rank_limit_flag) {
message(Utils.TI18N("未满足购买条件"));
return;
}
if (this.limit_glev_status) {
message(Utils.TI18N("该商品暂未达解锁条件哦,请努力提高公会等级"));
return;
}
if (this.callback) this.callback(this.data);
}, this); //除神秘商城以外的购买成功
this.addGlobalEvent(MallEvent.Buy_Success_Event, function (data) {
if (this.data.id && data.eid == this.data.id && Utils.next(data.ext || {}) != null) {
this.data.has_buy = data.ext[0].val;
this.discount_label.string = cc.js.formatStr(Utils.TI18N("%s %s/%s个"), this.str, this.data.has_buy, this.data.limit_num);
if (this.data.has_buy == this.data.limit_num) this.setSellAll(true);
}
}.bind(this)); //神秘/神格商城购买成功
this.addGlobalEvent(MallEvent.Buy_One_Success, function (data) {
if (this.data.order && data.order == this.data.order) {
this.data.has_buy = this.data.has_buy + 1;
this.discount_label.string = cc.js.formatStr(Utils.TI18N("%s %s/%s个"), this.str, this.data.has_buy, this.data.limit_num);
var limit_num = this.data.limit_count || this.data.limit_num;
if (limit_num != null || this.data.has_buy >= this.data.limit_num) this.setSellAll(true);
}
}.bind(this));
if (this.role_vo) {
if (this.role_update_event == null) {
this.role_update_event = this.role_vo.bind(EventId.UPDATE_ROLE_ATTRIBUTE, function (key, value) {
if (key == "gold" || key == "red_gold" || key == "hero_soul" || key == "arena_cent" || key == "friend_point" || key == "guild") {
if (this.data["limit_day"] == 0 && this.data["limit_month"] == 0 && this.data["limit_week"] == 0 && this.data["limit_count"] == 0) {
//不限购的非神秘神格商店物品
if (this.data.shop_type != 4 && this.data.shop_type != 2) {
if (this.pay_type != "red_gold_or_gold") {
if (this.role_vo[this.pay_type] && this.role_vo[this.pay_type] < 20 * this.data.price) {
var temp = Math.floor(this.role_vo[this.pay_type] / this.data.price);
if (temp >= 1) {
this.data.limit_num = temp;
} else {
this.data.limit_num = 1;
}
} else {
this.data.limit_num = 20;
}
} else {
var own = this.role_vo["gold"] + this.role_vo["red_gold"];
if (own && own < 20 * this.data.price) {
var temp = Math.floor(own / this.data.price);
if (temp >= 1) {
this.data.limit_num = temp;
} else {
this.data.limit_num = 1;
}
} else {
this.data.limit_num = 20;
}
}
}
}
}
if (key == "vip_lev") {
if (this.vip_limit_flag > 0) {
this.setData(this.data);
}
}
}, this);
}
}
},
setData: function setData(data) {
this.data = data;
if (this.root_wnd == null) return; // return
var shop_num = null; //商品类型
if (data.shop_type != null) shop_num = data.shop_type;else shop_num = data.type;
this.data = Utils.deepCopy(data);
var config = Utils.getItemConfig(data.item_bid || data.item_id);
config = Utils.deepCopy(config);
var pay_config, pay_type;
config.bid = data.item_bid || data.item_id;
if (config) {
if (data.item_num && data.item_num != 1) {
config.num = data.item_num;
}
this.goods_item.setData(config);
this.name.string = config.name;
} // this.goods_item.setDefaultTips();
if (typeof data.pay_type == "number") {
pay_config = Utils.getItemConfig(data.pay_type);
pay_type = gdata("item_data", "data_assets_id2label", [data.pay_type]);
} else {
pay_config = Utils.getItemConfig(gdata("item_data", "data_assets_label2id", [data.pay_type]));
pay_type = data.pay_type;
}
this.pay_type = pay_type;
this.price.string = data.price;
var item_res_path = PathTool.getItemRes(pay_config.icon);
if (item_res_path) {
this.loadRes(item_res_path, function (res_object) {
this.coin.spriteFrame = res_object;
}.bind(this));
} //限购
this.str = "";
var limit_num = 0;
var limit_rank = 0;
var limit_vip = 0;
var is_show_limit_label = false; //天梯排名限购
this.rank_limit_flag = false;
if (data.limit_rank && data.limit_rank > 0) {
if (shop_num == MallConst.MallType.Ladder) {
var ladder_data = LadderController.getInstance().getModel().getLadderMyBaseInfo();
if (ladder_data && ladder_data.best_rank == 0 || ladder_data.best_rank > data.limit_rank) {
limit_rank = data.limit_rank;
is_show_limit_label = true;
}
}
} //vip等级限购
this.vip_limit_flag = 0;
if (data.limit_vip && data.limit_vip > 0) {
if (this.role_vo && this.role_vo.vip_lev < data.limit_vip) {
is_show_limit_label = true;
limit_vip = data.limit_vip;
}
}
if (is_show_limit_label == false) {
if (data.limit_count != null && data.limit_count > 0) {
this.str = "限购";
limit_num = data.limit_count;
is_show_limit_label = true;
} else if (data.limit_month != null && data.limit_month > 0) {
this.str = "每月限购";
limit_num = data.limit_month;
is_show_limit_label = true;
} else if (data.limit_week != null && data.limit_week > 0) {
this.str = "每周限购";
limit_num = data.limit_week;
is_show_limit_label = true;
} else if (data.limit_day != null && data.limit_day > 0) {
this.str = "每日限购";
limit_num = data.limit_day;
is_show_limit_label = true;
} else {
if (data.shop_type == 4 || data.shop_type == 2) {
limit_num = 1;
is_show_limit_label = true;
} else {
if (pay_type != "red_gold_or_gold") {
if (this.role_vo[pay_type] && this.role_vo[pay_type] < 20 * data.price) {
//取资产最大可买
var temp = Math.floor(this.role_vo[pay_type] / data.price);
if (temp >= 1) limit_num = temp;else limit_num = 1;
} else {
limit_num = 20; //无限制购买的物品 一次购买上限20
is_show_limit_label = false;
}
} else {
var own = this.role_vo.gold + this.role_vo.red_gold;
if (own != null && own < 20 * data.price) {
var temp = Math.floor(own / data.price);
if (temp >= 1) limit_num = temp;else limit_num = 1;
} else {
limit_num = 20; //无限制购买的物品 一次购买上限20
is_show_limit_label = false;
}
}
}
}
}
if (limit_vip > 0 && is_show_limit_label) {
this.discount_label.node.active = true;
this.discount_label.string = cc.js.formatStr(Utils.TI18N(" VIP%d专属"), limit_vip);
this.setSellAll(false);
this.vip_limit_flag = limit_vip;
} else if (limit_num > 0 && is_show_limit_label) {
this.discount_label.node.active = true;
this.discount_label.string = cc.js.formatStr(Utils.TI18N("%s %s/%s个"), this.str, data.has_buy, limit_num);
if (data.has_buy == limit_num) this.setSellAll(true);else this.setSellAll(false);
} else if (limit_rank > 0 && is_show_limit_label) {
this.discount_label.node.active = true;
this.discount_label.string = cc.js.formatStr(Utils.TI18N("需达到%s名"), limit_rank);
this.setSellAll(false);
this.rank_limit_flag = true;
} else {
this.discount_label.node.active = false;
if (data.has_buy == 1) this.setSellAll(true);else this.setSellAll(false);
}
this.data.limit_num = limit_num;
this.data.is_show_limit_label = is_show_limit_label; //折扣标签和折扣价格
if (data.label != null && data.label > 0) {
//表里的
this.discount.active = true;
this.discount_num.string = data.label + Utils.TI18N("折");
} else if (data.discount_type != null && data.discount_type > 0) {
//服务器信息
this.discount.active = true;
this.discount_num.string = data.discount_type + Utils.TI18N("折");
} else if (data.lable != null && data.lable > 0) {
this.discount.active = true;
this.discount_num.string = Utils.TI18N("超值");
} else {
this.discount.active = false;
}
if (data.discount != null && data.discount > 0) {
this.price.string = data.discount;
}
if (this.data.type == 10 || this.data.type == 11 || this.data.type == 12 || this.data.type == 13) {
//装备特殊处理显示等级显示
this.isShowLevLimit(true, this.data.lev);
} else {
this.isShowLevLimit(false);
}
if (this.data.type == 5 && this.data.glev != null) {
this.isShowGLevLimit(true, this.data.glev);
} else {
this.isShowGLevLimit(false, 0);
}
var bid = this.ctrl.getNeedBid();
if (bid != null && (bid == data.item_id || bid == data.item_bid)) {
this.need_icon.active = true;
this.need_label.node.active = true;
} else {
this.need_icon.active = false;
this.need_label.node.active = false;
}
if (this.data.type == 3) {
var is_show = this.ctrl.getModel().checkHeroChips(data.item_id);
this.showChipTag(is_show);
} else {
this.showChipTag(false);
}
},
setSellAll: function setSellAll(bool) {
if (this.root_wnd == null) return;
this.sold.active = bool;
this.grey.active = bool;
this.is_touch = !bool;
},
showChipTag: function showChipTag(status) {},
isShowLevLimit: function isShowLevLimit(status, lev) {
if (!this.limit_lev_label) {}
},
isShowGLevLimit: function isShowGLevLimit(status, lev) {},
addCallBack: function addCallBack(value) {
this.callback = value;
},
onShow: function onShow() {},
onDelete: function onDelete() {
if (this.role_update_event) {
if (this.role_vo) {
this.role_vo.unbind(this.role_update_event);
this.role_update_event = null;
this.role_vo = null;
}
}
if (this.goods_item) {
this.goods_item.deleteMe();
this.goods_item = null;
} // if(this.main_container){
// this.main_container.off(cc.Node.EventType.TOUCH_END,function(){},this)
// }
}
});
module.exports = MallItem;
cc._RF.pop();