"use strict"; cc._RF.push(module, '3e4f97ctNZFJY2Akocnka5f', 'mall_son_panel'); // Scripts/mod/mall/view/mall_son_panel.js "use strict"; function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } // -------------------------------------------------------------------- // @author: @syg.com(必填, 创建模块的人员) // @description: // 竖版商城子商城 //
Create: new Date().toISOString() // -------------------------------------------------------------------- var PathTool = require("pathtool"); var MallController = require("mall_controller"); var RoleController = require("role_controller"); var MallConst = require("mall_const"); var MallEvent = require("mall_event"); var MallItem = require("mall_item"); var CommonScrollView = require("common_scrollview"); var BackpackController = require("backpack_controller"); var TimeTool = require("timetool"); var treasure_type = 16; //针对探宝的 var MallSonPanel = cc.Class({ "extends": BasePanel, ctor: function ctor() { this.prefabPath = PathTool.getPrefabPath("mall", "mall_son_panel"); this.ctrl = MallController.getInstance(); this.role_vo = RoleController.getInstance().getRoleVo(); this.tab_list = []; this.cur_index = null; this.cur_tab = null; this.data_list = []; }, initPanel: function initPanel() { this.main_container = this.root_wnd.getChildByName("main_container"); this.tab_container = this.main_container.getChildByName("tab_container"); for (var i = 1; i < 5; i++) { var tab_btn = this.tab_container.getChildByName(cc.js.formatStr("tab_btn_%s", i)); tab_btn.label = tab_btn.getChildByName("title").getComponent(cc.Label); tab_btn.label.node.color = new cc.Color(0xcf, 0xb5, 0x93, 0xff); // tab_btn.bright = false; tab_btn.btn = tab_btn.getComponent(cc.Button); tab_btn.btn.interactable = false; tab_btn.index = i; tab_btn.is_first = true; this.tab_list[i] = tab_btn; } this.refresh_panel = this.main_container.getChildByName("refresh_panel"); this.refresh_panel.active = false; this.btn_refresh = this.refresh_panel.getChildByName("btn_refresh"); this.refresh_time = this.refresh_panel.getChildByName("refresh_time").getComponent(cc.Label); this.refresh_time.string = ""; var config = gdata("exchange_data", "data_shop_list", [treasure_type]); var Sprit_1 = this.btn_refresh.getChildByName("Sprite_1").getComponent(cc.Sprite); Sprit_1.node.setScale(0.5, 0.5); var item_res_path = PathTool.getItemRes(Utils.getItemConfig(config.item_bid).icon); if (item_res_path) { this.loadRes(item_res_path, function (res_object) { Sprit_1.spriteFrame = res_object; }.bind(this)); } var Text_1 = this.btn_refresh.getChildByName("Text_1").getComponent(cc.Label); Text_1.string = config.cost_list[0][1] + "刷新"; this.scrollCon = this.main_container.getChildByName("scrollCon"); this.coin = this.main_container.getChildByName("coin").getComponent(cc.Sprite); this.count = this.main_container.getChildByName("count").getComponent(cc.Label); this.add_btn = this.main_container.getChildByName("add_btn"); this.add_btn.active = false; var scroll_view_size = cc.size(622, 648); 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.scrollCon, cc.v2(0, 0), ScrollViewDir.vertical, ScrollViewStartPos.top, scroll_view_size, setting, cc.v2(0.5, 0.5)); }, registerEvent: function registerEvent() { // for (var k in this.tab_list){ // var tab_btn = this.tab_list[k]; // var func = function(btn){ // if(btn.type != null){ // if(btn.btn.interactable == false){ // message(Utils.TI18N(btn.notice)); // }else{ // this.changeTabView(btn.index); // } // } // }.bind(this) // tab_btn.on(cc.Node.EventType.TOUCH_END,func(tab_btn)) // } this.add_btn.on(cc.Node.EventType.TOUCH_END, function () { var item_bid = gdata("exchange_data", "data_shop_list", [this.cur_tab.type]).item_bid; var data = Utils.getItemConfig(item_bid); BackpackController.getInstance().openTipsSource(true, data); }, this); this.addGlobalEvent(MallEvent.Open_View_Event, function (data) { if (this.cur_index != 4) { var list = this.getConfig(this.cur_tab.type, data); this.data_list[this.cur_index] = Utils.deepCopy(list); this.item_scrollview.setData(this.data_list[this.cur_index], 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) { if (k == this.cur_index) { continue; } this.setTabBtnTouchStatus(this.checkBtnIsOpen(k), k); } } else if (key == "gsrv_id" || key == "gid") { this.setTabBtnTouchStatus(this.checkBtnIsOpen(5), 1); } else if (key == "gold" || key == "arena_cent" || key == "guild" || key == "hero_soul" || key == "friend_point" || key == "arena_guesscent" || key == "star_point" || key == "expedition_medal") { var item_bid = gdata("exchange_data", "data_shop_list", [this.cur_tab.type]).item_bid; if (gdata("item_data", "data_assets_id2label", [item_bid]) == key) { 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)); } if (this.cur_index == 4) { this.count.string = this.role_vo.star_point; } else { if (this.cur_index == 1) { this.count.string = this.role_vo.expedition_medal; } else { this.count.string = this.role_vo[gdata("item_data", "data_assets_id2label", [item_bid])]; } } } } }, this); } } //除神秘神格商城以外的购买成功 this.addGlobalEvent(MallEvent.Buy_Success_Event, function (data) { if (this.cur_index && this.data_list && this.data_list[this.cur_index]) { for (var k in this.data_list[this.cur_index]) { var v = this.data_list[this.cur_index][k]; if (typeof v == "number") { if (v != null && v.id != null && v.has_buy != null) { if (v.id == data.eid && Utils.next(data.ext || {}) != null) v.has_buy = data.ext[0].val; } } } } }.bind(this)); this.btn_refresh.on(cc.Node.EventType.TOUCH_END, function () { var list = gdata("exchange_data", "data_shop_list", [treasure_type]).cost_list; if (this.role_vo.star_point >= list[0][1]) { this.ctrl.sender13405(treasure_type); } else { message(Utils.TI18N("探宝积分不足")); BackpackController.getInstance().openTipsSource(true, 18); } }, this); this.addGlobalEvent(MallEvent.Get_Buy_list, function (data) { if (data.type == treasure_type) { this.setLessTime(data.refresh_time - gcore.SmartSocket.getTime()); for (var k in data.item_list) { data.item_list[k].shop_type = treasure_type; } this.data_list[this.cur_index] = Utils.deepCopy(data); this.item_scrollview.setData(this.data_list[this.cur_index].item_list, function (cell) { this.ctrl.openMallBuyWindow(true, cell); }.bind(this)); } }.bind(this)); }, //设置倒计时 setLessTime: function setLessTime(less_time) { if (this.refresh_time == null) return; this.refresh_time.node.stopAllActions(); if (less_time > 0) { this.setTimeFormatString(less_time); var callfun = cc.callFunc(function () { less_time = less_time - 1; if (less_time < 0) { this.refresh_time.node.stopAllActions(); } else { this.setTimeFormatString(less_time); } }.bind(this)); this.refresh_time.node.runAction(cc.repeatForever(cc.sequence(cc.delayTime(1), callfun))); } else { this.setTimeFormatString(less_time); } }, setTimeFormatString: function setTimeFormatString(time) { if (time > 0) { this.refresh_time.string = TimeTool.getTimeFormat(time); } else { this.refresh_time.string = "00:00:00"; } }, setData: function setData(data) { if (data == null) return; this.data = data; if (this.root_wnd) this.onShow(); }, onShow: function onShow() { this.setList(this.list); this.openById(this.id); }, setCallFun: function setCallFun(call_fun) { this.call_fun = call_fun; }, setVisibleStatus: function setVisibleStatus(bool) { if (this.root_wnd == null) return; this.root_wnd.active = bool; }, onDelete: function onDelete() { if (this.item_scrollview) this.item_scrollview.deleteMe(); this.item_scrollview = null; if (this.role_update_lev_event) { if (this.role_vo) { this.role_vo.unbind(this.role_update_lev_event); this.role_update_lev_event = null; this.role_vo = null; } } if (this.refresh_time) { this.refresh_time.node.stopAllActions(); this.refresh_time = null; } }, changeTabView: function changeTabView(index) { if (this.cur_index == index) return; if (this.cur_tab != null) { this.cur_tab.label.node.color = new cc.Color(0xcf, 0xb5, 0x93, 0xff); this.cur_tab.btn.interactable = true; } this.cur_index = index; this.cur_tab = this.tab_list[this.cur_index]; if (this.cur_tab) { this.cur_tab.label.node.color = new cc.Color(0xff, 0xed, 0xd6, 0xff); this.cur_tab.btn.interactable = false; } this.refresh_panel.active = this.cur_index == 4; if (this.cur_tab.is_first) { this.ctrl.sender13401(this.cur_tab.type); this.cur_tab.is_first = false; } else { if (this.cur_index != 4) { this.item_scrollview.setData(this.data_list[this.cur_index], function (cell) { this.ctrl.openMallBuyWindow(true, cell); }.bind(this)); } } if (this.cur_index == 4) { this.item_scrollview.setData([]); this.ctrl.sender13403(treasure_type); } var item_bid = gdata("exchange_data", "data_shop_list", [this.cur_tab.type]).item_bid; if (item_bid) { if (this.cur_index == 4) { var item_bid = gdata("exchange_data", "data_shop_list", [treasure_type]).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.count.string = this.role_vo.star_point; } } else { 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.count.string = this.role_vo.star_point; } if (this.cur_index == 1) this.count.string = this.role_vo.expedition_medal;else this.count.string = Utils.getMoneyString(this.role_vo[gdata("item_data", "data_assets_id2label", [item_bid])]); } } }, openById: function openById(id) { this.id = id; if (this.root_wnd == null) return; for (var k in this.tab_list) { var v = this.tab_list[k]; if (v.type == id) { this.cur_index = null; this.changeTabView(v.index); } } }, getConfig: function getConfig(index, data) { var config = []; if (index == 5) { config = Utils.deepCopy(Config.exchange_data.data_shop_exchage_guild); } else if (index == 6) { config = Utils.deepCopy(Config.exchange_data.data_shop_exchage_arena); } else if (index == 7) { config = Utils.deepCopy(Config.exchange_data.data_shop_exchage_boss); } else if (index == 8) { config = Utils.deepCopy(Config.exchange_data.data_shop_exchage_expediton); } else if (index == 16) { //探宝 config = Utils.deepCopy(Config.exchange_data.data_shop_exchage_guess); } var list = Utils.deepCopy(data.item_list); var show_list = []; for (var a in config) { var j = config[a]; if (j.type == this.cur_tab.type) { 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; }, checkBtnIsOpen: function checkBtnIsOpen(type) { if (type == 5) { //工会 if (this.role_vo.lev >= gdata("exchange_data", "data_shop_exchage_cost", "open_guild_lev").val && this.role_vo.isHasGuild()) return true;else return false; } else if (type == 6 || type == 16) { //竞技 var SceneConst = require("scene_const"); var build_vo = require("mainscene_controller").getInstance().getBuildVo(SceneConst.CenterSceneBuild.arena); if (build_vo && build_vo.is_lock) return false;else return true; } else if (type == 7) { if (this.role_vo.lev >= gdata("exchange_data", "data_shop_exchage_cost", "open_god_point_lev").val) return true;else return false; } return true; }, setTabBtnTouchStatus: function setTabBtnTouchStatus(status, index) { var tab_btn = this.tab_list[index]; if (tab_btn) { if (!status) tab_btn.getComponent(cc.Sprite).setState(cc.Sprite.State.GRAY);else { tab_btn.getComponent(cc.Sprite).setState(cc.Sprite.State.NORMAL); tab_btn.getComponent(cc.Button).interactable = status; tab_btn.getComponent(cc.Button).enableAutoGrayEffect = !status; } tab_btn.can_touch = status; } }, setList: function setList(list) { var _notice_list; this.list = list; if (this.root_wnd == null) return; var notice_list = (_notice_list = {}, _defineProperty(_notice_list, 5, gdata("exchange_data", "data_shop_exchage_cost", "open_guild_lev").desc), _defineProperty(_notice_list, 16, gdata("exchange_data", "data_shop_exchage_cost", "open_arena_cent_lev").desc), _defineProperty(_notice_list, 6, gdata("exchange_data", "data_shop_exchage_cost", "open_arena_cent_lev").desc), _notice_list); for (var k in this.tab_list) { var v = this.tab_list[k]; if (list[k - 1] != null) { v.active = true; v.label.string = gdata("exchange_data", "data_shop_list", [list[k - 1]]).name; v.type = list[k - 1]; v.notice = notice_list[v.type]; this.setTabBtnTouchStatus(this.checkBtnIsOpen(v.type), k); } else { v.active = false; } } if (this.btn_event == null) { for (var k in this.tab_list) { var tab_btn = this.tab_list[k]; if (tab_btn != null) { tab_btn.on(cc.Node.EventType.TOUCH_END, function (event) { var btn = event.currentTarget; if (btn.type != null) { if (btn.can_touch == false) message(Utils.TI18N(btn.notice));else this.changeTabView(btn.index); } }, this); } } this.btn_event = true; } // var select_index = 1; // for(var i = 0;i < list.length; i ++){ // if (list[i] != null){ // if (this.checkBtnIsOpen(this.tab_list[i]).type){ // select_index = i; // break // } // } // } } }); module.exports = MallSonPanel; cc._RF.pop();