"use strict";
cc._RF.push(module, 'ddd5fLQNQdDErBfpTr0feoT', 'mall_window');
// Scripts/mod/mall/view/mall_window.js
"use strict";
// --------------------------------------------------------------------
// @author: shiraho@syg.com(必填, 创建模块的人员)
// @description:
// 用户输入框
//
Create: new Date().toISOString()
// --------------------------------------------------------------------
var PathTool = require("pathtool");
var MallController = require("mall_controller");
var RoleController = require("role_controller");
var CommonScrollView = require("common_scrollview");
var MallEvent = require("mall_event");
var MallConst = require("mall_const");
var MallItem = require("mall_item");
var TimeTool = require("timetool");
var BackpackController = require("backpack_controller");
var BackpackEvent = require("backpack_event");
var BackPackConst = require("backpack_const");
var CommonAlert = require("commonalert");
var MailWindow = cc.Class({
"extends": CommonWindowTab,
ctor: function ctor() {
this.model = MallController.getInstance().getModel();
this.ctrl = MallController.getInstance();
this.win_type = WinType.Full;
this.viewTag = SCENE_TAG.ui; //该窗体所属ui层级,全屏ui需要在ui层,非全屏ui在dialogue层,这个要注意
this.tab_info_list = [{
label: gdata("exchange_data", "data_shop_list", 1).name,
index: 1,
status: true,
notice: cc.js.formatStr("%s级开启", gdata("exchange_data", "data_shop_exchage_cost", "open_gold_lev").val),
is_first: true
}, {
label: gdata("exchange_data", "data_shop_list", 2).name,
index: 2,
status: true,
notice: cc.js.formatStr("%s级开启", gdata("exchange_data", "data_shop_exchage_cost", "open_hero_soul_lev").val),
is_first: true
}, {
label: gdata("exchange_data", "data_shop_list", 3).name,
index: 3,
status: true,
notice: cc.js.formatStr("%s级开启", gdata("exchange_data", "data_shop_exchage_cost", "open_point_lev").val),
is_first: true
}, {
label: gdata("exchange_data", "data_shop_list", MallConst.MallType.SkillShop).name,
index: 4,
status: true,
notice: cc.js.formatStr("%s级开启", gdata("exchange_data", "data_shop_exchage_cost", "open_skill_lev").val),
is_first: true
}];
this.title_str = "商城";
this.tab_list = this.tab_info_list;
this.cur_tab = null;
this.cur_index = null;
this.first_index = null;
this.data_list = {};
this.role_vo = RoleController.getInstance().getRoleVo();
},
initPanel: function initPanel() {
if (this.mall_root_wnd == null) {
this.loadRes(PathTool.getPrefabPath("mall", "mall_window_2"), function (res_obj) {
var obj = res_obj;
this.createMallRootWnd(obj);
}.bind(this));
}
},
createMallRootWnd: function createMallRootWnd(view) {
this.mall_root_wnd = view;
this.mall_root_wnd.setParent(this.container);
this.mall_container = this.mall_root_wnd.getChildByName("container");
this.mall_scroll_con = this.mall_container.getChildByName("scrollCon");
this.btn = this.mall_container.getChildByName("btn");
this.btn.active = false;
this.btn_label = this.seekChild(this.btn, "Label", cc.Label);
this.btn_img = this.seekChild(this.btn, "img", cc.Sprite);
this.coin = this.mall_container.getChildByName("coin").getComponent(cc.Sprite);
this.count = this.mall_container.getChildByName("count").getComponent(cc.Label);
this.add_btn = this.mall_container.getChildByName("add_btn");
this.time_rt = this.mall_container.getChildByName("time").getComponent(cc.RichText);
this.time_down_text_rt = this.mall_container.getChildByName("time_down_text").getComponent(cc.RichText);
this.add_btn.active = false;
this.refresh_count = this.mall_container.getChildByName("refresh_count").getComponent(cc.Label);
this.tips_btn = this.mall_container.getChildByName("tips_btn");
this.tips_btn.active = false;
this.good_cons = this.mall_container.getChildByName("good_cons");
var scroll_view_size = cc.size(622, 705);
var setting = {
item_class: MallItem,
// 单元类
start_x: 4,
// 第一个单元的X起点
space_x: 0,
// x方向的间隔
start_y: 3,
// 第一个单元的Y起点
space_y: 2,
// y方向的间隔
item_width: 306,
// 单元的尺寸width
item_height: 143,
// 单元的尺寸height
row: 0,
// 行数,作用于水平滚动类型
col: 2,
// 列数,作用于垂直滚动类型
need_dynamic: true
};
this.item_scrollview = new CommonScrollView();
this.item_scrollview.createScroll(this.mall_scroll_con, cc.v2(0, 0), ScrollViewDir.vertical, ScrollViewStartPos.top, scroll_view_size, setting, cc.v2(0.5, 0.5));
this.selectedTabCallBack(this.first_index);
this.registerEvent_1();
},
registerEvent_1: function registerEvent_1() {
if (this.add_btn) {
this.add_btn.on(cc.Node.EventType.TOUCH_END, function () {
var item_bid = gdata("exchange_data", "data_shop_list", [this.cur_index]).item_bid;
var data = Utils.getItemConfig(item_bid);
require("backpack_controller").getInstance().openTipsSource(true, data);
}, this);
}
if (this.btn) {
this.btn.on(cc.Node.EventType.TOUCH_END, function () {
if (this.cur_index == 4 || this.cur_index == 2) {
var type = this.cur_index;
var fun = function () {
this.ctrl.sender13405(type);
}.bind(this);
if (this.cur_index == 4) {
type = MallConst.MallType.SkillShop;
fun();
} else {
var asset_cfg = Config.exchange_data.data_shop_exchage_cost["soul_reset_cost"];
var bid, num;
if (asset_cfg) {
bid = asset_cfg.val[0][0];
num = asset_cfg.val[0][1];
}
var good_res_path = Utils.getItemConfig(bid).icon;
var frame_arrays = [];
var good_path = PathTool.getIconPath("item", good_res_path);
frame_arrays.push(good_path);
var text = StringUtil.parseStr("是否消耗
%s
进行重置?").string;
var str = cc.js.formatStr(text, good_res_path, num);
CommonAlert.show(str, Utils.TI18N("确定"), fun.bind(this), Utils.TI18N("取消"), null, null, null, {
resArr: frame_arrays
});
}
}
}, this);
} //获取商品已购买次数(限于购买过的有限购的商品)
this.addGlobalEvent(MallEvent.Open_View_Event, function (data) {
if (this.cur_index != 4 && this.cur_index != 2) {
this.cur_tab.is_first = false;
var list = this.getConfig(this.cur_index, data);
this.data_list[this.cur_index] = Utils.deepCopy(list);
this.item_scrollview.setData(list, function (cell) {
this.ctrl.openMallBuyWindow(true, cell);
});
}
}.bind(this)); //获取神秘商店物品列表
this.addGlobalEvent(MallEvent.Get_Buy_list, function (data) {
if (this.cur_index == 4 || this.cur_index == 2) {
this.cur_tab.is_first = false;
var btn_str = Utils.TI18N("免费刷新");
if (this.cur_index == 2) {
//神格
if (data.free_count <= 0) {
var asset_cfg = gdata("exchange_data", "data_shop_exchage_cost", "soul_reset_cost");
if (asset_cfg) {
var bid = asset_cfg.val[0][0];
var num = asset_cfg.val[0][1];
btn_str = cc.js.formatStr(Utils.TI18N("%s重置"), num);
this.loadRes(PathTool.getItemRes(Utils.getItemConfig(bid).icon), function (res_object) {
this.btn_img.spriteFrame = res_object;
}.bind(this));
}
}
}
this.btn_label.string = btn_str;
this.setResetCount(data);
for (var k in data.item_list) {
var v = data.item_list[k];
if (this.cur_index == 4) {
v.shop_type = MallConst.MallType.SkillShop;
} else {
v.shop_type = this.cur_index;
}
}
this.data_list[this.cur_index] = Utils.deepCopy(data);
if (this.cur_index == 4) {
this.setLessTime(this.data_list[this.cur_index].refresh_time - gcore.SmartSocket.getTime());
}
this.item_scrollview.setData(this.data_list[this.cur_index].item_list, function (cell) {
this.ctrl.openMallBuyWindow(true, cell);
}.bind(this));
}
}.bind(this));
if (this.role_vo) {
if (this.role_update_lev_event == null) {
this.role_update_lev_event = this.role_vo.bind(EventId.UPDATE_ROLE_ATTRIBUTE, function (key, value) {
if (this.cur_index == null || this.cur_index == MallConst.MallType.ScoreShop) return;
if (key == "lev") {
for (var k in this.tab_list) {
this.setTabBtnTouchStatus(this.checkBtnIsOpen(k), k);
}
} else if (key == "gold" || key == "arena_cent" || key == "guild" || key == "hero_soul" || key == "friend_point" || key == "red_gold") {
var config = gdata("exchange_data", "data_shop_list", [this.cur_index]);
if (config) {
var item_bid = config.item_bid;
if (item_bid == 15) {
//钻石
this.count.string = Utils.getMoneyString(this.role_vo.gold);
} else {
if (gdata("item_data", "data_assets_id2label", [item_bid]) == key) this.count.string = Utils.getMoneyString(this.role_vo[gdata("item_data", "data_assets_id2label", [item_bid])]);
}
} // var item_res_path = PathTool.getItemRes(Utils.getItemConfig(item_bid).icon);
// if (item_res_path) {
// this.loadRes(item_res_path, function (res_object) {
// this.coin.spriteFrame = res_object;
// }.bind(this))
// }
}
}, this);
}
} //到时候刷新了
this.addGlobalEvent(MallEvent.Frash_tips_event, function () {
if (this.cur_index == 4 || this.cur_index == 2) {
var _type = this.cur_index;
if (this.cur_index == 4) {
_type = MallConst.MallType.SkillShop;
}
this.ctrl.sender13403(_type);
}
}.bind(this)); //除神秘神格商城以外的购买成功
this.addGlobalEvent(MallEvent.Buy_Success_Event, function (data) {
if (this.cur_index == null || this.data_list == null || this.data_list[this.cur_index] == null) return;
if (this.cur_index != 2 || this.cur_index != 4) {
for (var k in this.data_list[this.cur_index]) {
var v = this.data_list[this.cur_index][k];
if (v.id == data.eid && Utils.next(data.ext || {}) != null) {
v.has_buy = data.ext[0].val;
}
}
}
}.bind(this)); //神秘/神格商城购买成功
this.addGlobalEvent(MallEvent.Buy_One_Success, function (data) {
if (this.cur_index == null || this.data_list == null || this.data_list[this.cur_index] == null) return;
var _shop_type = this.cur_index;
if (this.cur_index == 4) {
_shop_type = MallConst.MallType.SkillShop;
}
for (var k in this.data_list[this.cur_index].item_list) {
var v = this.data_list[this.cur_index].item_list[k];
if (v.shop_type == _shop_type && v.order && data.order == v.order) v.has_buy = 1;
}
}.bind(this));
this.addGlobalEvent(BackpackEvent.DELETE_GOODS, function (bag_code, temp_list) {
if (bag_code != BackPackConst.Bag_Code.EQUIPS) {
var item_bid = Config.exchange_data.data_shop_list[MallConst.MallType.SkillShop].item_bid;
for (var i in temp_list) {
var item = temp_list[i];
if (item.base_id == item_bid) {
this.updateIconInfo(item_bid);
break;
}
}
}
}.bind(this));
this.addGlobalEvent(BackpackEvent.MODIFY_GOODS_NUM, function (bag_code, temp_list) {
if (bag_code != BackPackConst.Bag_Code.EQUIPS) {
var item_bid = Config.exchange_data.data_shop_list[MallConst.MallType.SkillShop].item_bid;
for (var i in temp_list) {
var item = temp_list[i];
if (item.base_id == item_bid) {
this.updateIconInfo(item_bid);
break;
}
}
}
}.bind(this));
this.addGlobalEvent(BackpackEvent.ADD_GOODS, function (bag_code, temp_list) {
if (bag_code != BackPackConst.Bag_Code.EQUIPS) {
var item_bid = Config.exchange_data.data_shop_list[MallConst.MallType.SkillShop].item_bid;
for (var i in temp_list) {
var item = temp_list[i];
if (item.base_id == item_bid) {
this.updateIconInfo(item_bid);
break;
}
}
}
}.bind(this));
this.tips_btn.on(cc.Node.EventType.TOUCH_END, function (event) {
var str = "";
if (this.cur_index == 2) {
var cfg = gdata("exchange_data", "data_shop_exchage_cost", "hero_soul_instruction");
if (cfg && cfg.desc) str = cfg.desc;
} else if (this.cur_index == 4) {
var cfg = gdata("exchange_data", "data_shop_exchage_cost", "secret_instruction");
if (cfg && cfg.desc) str = cfg.desc;
}
Utils.playButtonSound(1);
var pos = event.touch.getLocation();
require("tips_controller").getInstance().showCommonTips(str, pos);
}, this);
},
setLessTime: function setLessTime(less_time) {
var self = this;
if (!self.time_rt) return;
if (this.time_tichet) {
gcore.Timer.del(this.time_tichet);
this.time_tichet = null;
}
this.time_rt.node.active = true;
this.time_down_text_rt.node.active = true;
if (less_time > 0) {
self.setTimeFormatString(less_time);
if (this.time_tichet == null) {
this.time_tichet = gcore.Timer.set(function () {
less_time--;
if (less_time < 0) {
gcore.Timer.del(this.time_tichet);
this.time_tichet = null;
if (self.cur_index == 4) {
self.ctrl.sender13403(MallConst.MallType.SkillShop);
}
} else {
this.setTimeFormatString(less_time);
}
}.bind(this), 1000, -1);
}
} else {
self.setTimeFormatString(less_time);
}
},
setTimeFormatString: function setTimeFormatString(time) {
if (time > 0) {
this.time_rt.string = "免费刷新: " + TimeTool.getTimeFormat(time) + "";
} else {
this.time_rt.string = "免费刷新: 00:00:00";
}
},
updateIconInfo: function updateIconInfo(item_bid) {
if (item_bid == gdata("item_data", "data_assets_label2id", "gold")) {
this.count.string = Utils.getMoneyString(this.role_vo.gold);
} else {
this.count.string = Utils.getMoneyString(BackpackController.getInstance().getModel().getItemNumByBid(item_bid));
}
},
openRootWnd: function openRootWnd(index) {
index = index || 1;
var sub_index = index;
if (index == MallConst.MallType.SkillShop) {
sub_index = 4;
} else if (index > 4) {
var subtype = gdata("exchange_data", "data_shop_list", [3]).subtype;
if (subtype.indexOf(index) != -1) {
sub_index = 3;
}
} else if (index == MallConst.MallType.ScoreShop) {
index = 8;
} //first_index 为选中 //所在类型
this.first_index = sub_index;
this.sub_type = index;
this.ctrl.setFirstLogin(false);
this.setSelecteTab(sub_index);
},
closeCallBack: function closeCallBack() {
this.ctrl.openMallPanel(false);
if (this.item_scrollview) {
this.item_scrollview.DeleteMe();
this.item_scrollview = null;
}
if (this.son_panel) {
this.son_panel.deleteMe();
}
if (this.role_update_lev_event) {
this.role_vo.unbind(this.role_update_lev_event);
this.role_update_lev_event = null;
}
if (this.time_tichet) {
gcore.Timer.del(this.time_tichet);
this.time_tichet = null;
}
this.role_vo = null;
this.son_panel = null;
var ActionController = require("action_controller");
if (ActionController.getInstance().getTreasureView()) {
ActionController.getInstance().getTreasureView().setVisible(true);
}
},
//切换标签
selectedTabCallBack: function selectedTabCallBack(index) {
if (this.cur_index == index) return;
if (this.mall_root_wnd == null) return;
this.first_index = index;
var type;
if (index == 3) {
if (this.sub_type) {
type = this.sub_type;
this.sub_type = null;
} else {
type = gdata("exchange_data", "data_shop_list", [index]).subtype[0];
}
} else {
this.sub_type = null;
}
this.cur_index = index;
this.mall_scroll_con.active = index != 3;
this.cur_tab = this.tab_info_list[index - 1]; //容错旧版本一些跳转问题
if (this.cur_tab == null) {
index = 1;
this.cur_index = index;
this.cur_tab = this.tab_info_list[index - 1];
}
this.time_rt.node.active = false;
this.time_down_text_rt.node.active = false;
this.tips_btn.active = false;
if (this.hasSon(index)) {
this.btn.active = false;
this.good_cons.active = false;
if (!this.son_panel) {
var MallSonPanel = require("mall_son_panel");
this.son_panel = new MallSonPanel();
this.son_panel.show();
this.son_panel.setParent(this.mall_container);
} else {
this.son_panel.setVisibleStatus(true);
}
this.mall_scroll_con.active = false;
this.son_panel.setList(gdata("exchange_data", "data_shop_list", [index]).subtype);
this.son_panel.openById(type);
this.btn.active = false;
this.good_cons.active = false;
this.coin.node.active = false;
this.count.node.active = false;
this.refresh_count.label = "";
this.add_btn.active = false;
} else if (index <= 4) {
if (index != 4 && index != 2) {
this.btn.active = false;
this.coin.node.active = true;
this.count.node.active = true;
this.refresh_count.label = "";
this.add_btn.active = false;
if (this.cur_tab.is_first) {
this.ctrl.sender13401(index); //获取普通商店的限购次数
} else {
this.item_scrollview.setData(this.data_list[this.cur_index], function (cell) {
this.ctrl.openMallBuyWindow(true, cell);
});
}
} else {
this.btn.active = true;
this.coin.node.active = true;
this.count.node.active = true;
this.add_btn.active = false;
if (index == 2) {
this.tips_btn.active = true;
}
if (this.cur_tab.is_first) {
var _type = index;
if (_type == 4) {
_type = MallConst.MallType.SkillShop;
}
this.ctrl.sender13403(_type); //获取神秘/神格商店列表
} else {
if (index == 4) {
var time = this.data_list[this.cur_index].refresh_time - gcore.SmartSocket.getTime();
if (time > 0) {
this.setLessTime(time);
} else {
this.setTimeFormatString(0);
this.ctrl.sender13403(MallConst.MallType.SkillShop);
}
}
this.setResetCount(this.data_list[this.cur_index]);
this.item_scrollview.setData(this.data_list[this.cur_index].item_list, function (cell) {
this.ctrl.openMallBuyWindow(true, cell);
}.bind(this));
}
}
var item_bid;
if (index == 4) {
item_bid = gdata("exchange_data", "data_shop_list", [MallConst.MallType.SkillShop]).item_bid;
} else {
item_bid = gdata("exchange_data", "data_shop_list", [index]).item_bid;
}
var item_res_path = PathTool.getItemRes(Utils.getItemConfig(item_bid).icon);
if (item_res_path) {
this.loadRes(item_res_path, function (res_object) {
this.coin.spriteFrame = res_object;
}.bind(this));
}
this.updateIconInfo(item_bid);
this.good_cons.active = true;
if (this.son_panel) {
this.son_panel.setVisibleStatus(false);
}
}
},
getConfig: function getConfig(index, data) {
var config = [];
var list = [];
if (index == 1) {
config = Utils.deepCopy(Config.exchange_data.data_shop_exchage_gold);
} else if (index == 2) {}
var show_list = [];
if (index != 4 && index != 2) {
var list = Utils.deepCopy(data.item_list);
for (var a in config) {
var j = config[a];
if (j.type == this.cur_index) {
if (list && Utils.next(list)) {
//已经买过的限购物品
for (var k in list) {
var v = list[k];
if (j.id == v.item_id) {
if (v.ext[0] && v.ext[0].val != null) {
//不管是什么限购 赋值已购买次数就好了
j.has_buy = v.ext[0].val;
list.splice(k, 1);
}
break;
} else j.has_buy = 0;
}
} else j.has_buy = 0;
show_list.push(j);
}
}
}
return show_list;
},
//判断是否有子标签:{
hasSon: function hasSon(index) {
var sub_type = gdata("exchange_data", "data_shop_list", [index]).subtype;
return Utils.next(sub_type) != null;
},
//判断是否开启按钮
checkBtnIsOpen: function checkBtnIsOpen(index) {
if (index == 1) {
//钻石商城
if (this.role_vo.lev >= gdata("exchange_data", "data_shop_exchage_cost", "open_gold_lev").val) return true;else return false;
} else if (index == 2) {
//神格商店
if (this.role_vo.lev >= gdata("exchange_data", "data_shop_exchage_cost", "open_hero_soul_lev").val) return true;else return false;
} else if (index == 3) {
//积分
if (this.role_vo.lev >= gdata("exchange_data", "data_shop_exchage_cost", "open_point_lev").val) return true;else return false;
} else if (index == 4) {
//神秘商店
if (this.role_vo.lev >= gdata("exchange_data", "data_shop_exchage_cost", "open_secret_lev").val) return true;else return false;
}
return true;
},
setResetCount: function setResetCount(data) {
var self = this;
if (!data) return;
var free_count = data.free_count || 0;
var btn_str = Utils.TI18N("免费刷新");
this.btn_img.node.active = false;
if (self.cur_index == 2) {
//神格
if (free_count <= 0) {
var asset_cfg = Config.exchange_data.data_shop_exchage_cost["soul_reset_cost"];
if (asset_cfg) {
var bid = asset_cfg.val[0][0];
var num = asset_cfg.val[0][1];
btn_str = num + "重置";
this.btn_img.node.active = true;
this.loadRes(PathTool.getItemRes(Utils.getItemConfig(bid).icon), function (res) {
this.btn_img.spriteFrame = res;
}.bind(this));
}
}
} else if (self.cur_index == 4) {
//技能
if (free_count <= 0) {
var _config = Config.exchange_data.data_shop_list[MallConst.MallType.SkillShop];
if (_config) {
var cost_list = _config.cost_list;
var _bid = cost_list[0][0];
var _num = cost_list[0][1];
btn_str = _num + "刷新";
this.btn_img.node.active = true;
this.loadRes(PathTool.getItemRes(Utils.getItemConfig(_bid).icon), function (res) {
this.btn_img.spriteFrame = res;
}.bind(this));
}
} else {
var _asset_cfg = Config.exchange_data.data_shop_exchage_cost["skill_refresh_free"];
if (_asset_cfg) {
btn_str = cc.js.formatStr("%s(%s/%s)", Utils.TI18N("免费刷新"), free_count, _asset_cfg.val);
}
}
var config = Config.exchange_data.data_shop_exchage_cost.skill_refresh_number;
var max_count = 0;
if (config) {
max_count = config.val;
}
var count = data.count || 0;
var text = cc.js.formatStr("%s:%s/%s", Utils.TI18N("刷新次数"), count, max_count);
self.time_down_text_rt.string = text;
}
self.btn_label.string = btn_str;
},
setTabBtnTouchStatus: function setTabBtnTouchStatus(status, index) {}
});
module.exports = MailWindow;
cc._RF.pop();