// -------------------------------------------------------------------- // @author: shiraho@syg.com(必填, 创建模块的人员) // @description: // 背包主界面 //
Create: new Date().toISOString() // -------------------------------------------------------------------- var PathTool = require("pathtool"); var BackPackController = require("backpack_controller"); var BackPackConst = require("backpack_const"); var CommonScrollView = require("common_scrollview"); var TipsConst = require("tips_const"); var BackpackEvent = require("backpack_event"); var GuideController = require("guide_controller"); var BackPackWindow = cc.Class({ extends: BaseView, ctor: function () { this.rleasePrefab = false; this.prefabPath = PathTool.getPrefabPath("backpack", "backpack_window"); this.viewTag = SCENE_TAG.ui; this.win_type = WinType.Full; }, initConfig: function(){ this.panel_list = {}; this.tab_list = {}; this.min_size = 30; // 每一页最小的物品数目 this.col_size = 5; // 一行最多 this.normal_color = new cc.Color(0xd3, 0xb4, 0x9b, 0xff) this.normal_outlinecolor = new cc.Color(0x40, 0x22, 0x15, 0xff) this.select_color = new cc.Color(0xff, 0xff, 0xff, 0xff) this.select_outlinecolor = new cc.Color(0x6d, 0x35, 0x07, 0xff) }, openCallBack: function () { var title_list = [Utils.TI18N("装备"), Utils.TI18N("道具"), Utils.TI18N("碎片"), Utils.TI18N("特殊")] this.mainContainer = this.root_wnd.getChildByName("main_container"); this.title_effect = this.mainContainer.getChildByName("title_img").getComponent(sp.Skeleton); var anima_path = PathTool.getSpinePath(PathTool.getEffectRes(640), "action"); this.loadRes(anima_path, function(ske_data) { this.title_effect.skeletonData = ske_data; this.title_effect.setAnimation(0, PlayerAction.stand, true); }.bind(this)); this.background = this.seekChild("background"); this.background.scale = FIT_SCALE; var tab_container = this.seekChild("tab_container") for (let index = 0; index < 4; index++) { var object = {} var new_index = index + 1 object.btn = tab_container.getChildByName("tab_btn_" + new_index) //获取主节点 object.normal = object.btn.getChildByName("normal") //普通状态 object.select = object.btn.getChildByName("select") //选中状态 object.red_point = object.btn.getChildByName("red_point") //红点 object.title = object.btn.getChildByName("label") //label对象 object.title_label = object.title.getComponent(cc.Label) //label object.title_outline = object.title.getComponent(cc.LabelOutline) //描边 object.title_label.string = title_list[index] object.index = new_index this.tab_list[new_index] = object; } var container = this.seekChild("container") var scroll_view_size = cc.size(620,600) var setting = { item_class: "backpack_item", // 单元类 start_x: 0, // 第一个单元的X起点 space_x: 4, // x方向的间隔 start_y: 0, // 第一个单元的Y起点 space_y: 10, // y方向的间隔 item_width: 120, // 单元的尺寸width item_height: 120, // 单元的尺寸height row: 5, // 行数,作用于水平滚动类型 col: 5, // 列数,作用于垂直滚动类型 once_num: 5, need_dynamic: true } this.item_scrollview = new CommonScrollView() this.item_scrollview.createScroll(container, cc.v2(0, -30), ScrollViewDir.vertical, ScrollViewStartPos.top, scroll_view_size, setting, cc.v2(0.5,0.5)) if (GuideController.getInstance().isInGuide()) this.item_scrollview.setClickEnabled(false); }, registerEvent: function () { for(var key in this.tab_list){ const element = this.tab_list[key] if (element.btn) { element.btn.on(cc.Node.EventType.TOUCH_END, (function (event) { this.changeTabView(element.index) }).bind(this)) } } this.addGlobalEvent(EventId.ADD_GOODS, function (bag_code, item_list){ this.updateBackPack(bag_code, item_list) }.bind(this)) this.addGlobalEvent(EventId.DELETE_GOODS, function (bag_code, item_list) { this.updateBackPack(bag_code, item_list) }.bind(this)) this.addGlobalEvent(EventId.MODIFY_GOODS_NUM, function (bag_code, item_list) { this.updateBackPack(bag_code, item_list) if(this.cur_index == 3){ this.isCompRedPoint() } }.bind(this)) this.addGlobalEvent(BackpackEvent.Compose_BackPack_Success, function () { this.isCompRedPoint(); this.setPanelData(); }.bind(this)) }, openRootWnd: function (params){ var index = params || BackPackConst.item_tab_type.EQUIPS this.changeTabView(index) this.isCompRedPoint() }, // --判断碎片是否显示红点 isCompRedPoint(){ var self = this let item_list = BackPackController.getInstance().getModel().getAllBackPackArray(3) let status = false let partner_config = Config.partner_data.data_get_compound_info for(let i=0;i= partner_config[v.base_id].num){ status = true break } } // --神器的时候 // let hallow_list = BackpackController:getModel():getHallowsCompData(v.base_id) // if hallow_list and next(hallow_list) ~= nil then // if v.quantity >= hallow_list.num then // status = true // break // end // end } } self.tab_list[3].red_point.active = status //--仅碎片需要红点显示 }, /** * 切换标签页 * @param {*} index */ changeTabView:function(index){ if(this.cur_index == index) { return; } if (this.cur_tab){ this.cur_tab.select.active = false this.cur_tab.title.color = this.normal_color this.cur_tab.title_outline.color = this.normal_outlinecolor } this.cur_index = index this.cur_tab = this.tab_list[index] if (this.cur_tab) { this.cur_tab.select.active = true this.cur_tab.title.color = this.select_color this.cur_tab.title_outline.color = this.select_outlinecolor } this.setPanelData() }, /** * 设置当前显示标签页内容 */ setPanelData:function(){ if(this.cur_index == null) { return; } if (this.cur_index == BackPackConst.item_tab_type.HERO) { this.item_scrollview.setSpaceY(30,true); } else { this.item_scrollview.setSpaceY(10); } var item_list = BackPackController.getInstance().getModel().getAllBackPackArray(this.cur_index) // 这个是一个数组 var item_total_length = item_list.length // 不足30个补满30个.不足5的倍数,补满5的倍数 this.min_size = item_total_length if (this.min_size < 30){ this.min_size = 30 }else if((this.min_size % this.col_size) != 0){ this.min_size = this.min_size + this.col_size - this.min_size % this.col_size } // 需要填充的数量 var fill_num = this.min_size - item_total_length if (fill_num > 0){ for (let index = 0; index < fill_num; index++) { item_list.push({sort:-1, quality:-1, undata:true}) } } var callback = function(cell){ this.selectedItem(cell) }.bind(this) var sort_func = null; if(this.cur_index == BackPackConst.item_tab_type.EQUIPS){ sort_func = Utils.tableUpperSorter(["quality","sort"]); }else if (this.cur_index == BackPackConst.item_tab_type.PROPS){ sort_func = Utils.tableUpperSorter(["quality","sort","base_id"]); }else if(this.cur_index == BackPackConst.item_tab_type.SPECIAL){ // 特殊分页只有符文,星级越大的放前面 sort_func = function ( objA, objB ){ return objA.quality > objB.quality?-1:1; }; }else if(this.cur_index == BackPackConst.item_tab_type.HERO){ var checkIsFull = function(data){ var is_full = false; if(data.quality != -1 && data.base_id){ if(Config.partner_data.data_get_compound_info[data.base_id]){ if(data.quantity >= Config.partner_data.data_get_compound_info[data.base_id].num){ is_full = true; } } } return is_full; }; var sortFunc = function(objA, objB){ if(checkIsFull(objA) && !checkIsFull(objB)){ return -1; }else if(!checkIsFull(objA) && checkIsFull(objB)){ return 1; }else{ if(objA.quality != -1 && objA.base_id && objB.quality != -1 && objB.base_id){ if(objA.quality == objB.quality){ return objA.base_id < objB.base_id?-1:1; }else{ return objA.quality > objB.quality?-1:1; } }else if(objA.quality != -1 && objA.base_id && objB.quality == -1){ return -1; }else if(objA.quality == -1 && objB.quality != -1 && objB.base_id){ return 1; }else{ return 1; } } }; sort_func = sortFunc; // --英雄碎片需要取消红点 var MainuiController = require("mainui_controller") var MainuiConst = require("mainui_const") MainuiController.getInstance().setBtnRedPoint(MainuiConst.btn_index.backpack, false) }else{ sort_func = Utils.tableUpperSorter(["sort", "quality"]); } item_list.sort(sort_func); var ext = {is_other:false, scale:1, effect:false, is_show_tips:false, is_show_chip_loading:true}; if(this.cur_index == 3){ ext.is_comp_num = true; }else{ ext.is_comp_num = false; } this.item_scrollview.setData(item_list, callback, ext); }, // 点击返回,显示tips selectedItem:function(cell){ if (cell == null) return; var data = cell.getItemData() if (data == null) return; var data_config = cell.getItemConfig() if (data_config == null) return; var TipsController = require("tips_controller") if (BackPackConst.checkIsEquip(data_config.type)){ // 装备 TipsController.getInstance().showEquipTips(data, TipsConst.eqmTips.backpack) }else if(data_config.type == BackPackConst.item_type.ARTIFACTCHIPS){ // 符文 var PartnerConst = require("partner_const"); require("hero_controller").getInstance().openArtifactTipsWindow(true, data, PartnerConst.ArtifactTips.backpack) }else if(data_config.sub_type == BackPackConst.item_tab_type.HERO){ // 碎片 TipsController.getInstance().showBackPackCompTips(true,data.base_id) }else if(BackPackConst.checkIsHeroSkin(data_config.type)){ var HeroController = require("hero_controller") var PartnerConst = require("partner_const"); //皮肤 HeroController.getInstance().openHeroSkinTipsPanel(true, data, PartnerConst.EqmTips.backpack) }else{ TipsController.getInstance().showGoodsTips(data, true) } }, updateBackPack:function(bag_code, item_list){ if (this.cur_index == null) return; if(this.cur_index == BackPackConst.item_tab_type.EQUIPS){ if(bag_code != BackPackConst.Bag_Code.EQUIPS)return; }else{ if(bag_code == BackPackConst.Bag_Code.EQUIPS)return; } if (item_list == null || Object.keys(item_list).length == 0) return; var can_update = false for(var key in item_list){ var vo = item_list[key] if (vo.sub_type == this.cur_index){ can_update = true break } } if (can_update){ this.setPanelData() } }, closeCallBack: function(){ BackPackController.getInstance().openMainWindow(false) if (this.item_scrollview){ this.item_scrollview.DeleteMe() } this.item_scrollview = null }, });