"use strict";
|
cc._RF.push(module, '5b39cJSdOdAzKauqpdNdx1I', 'backpack_window');
|
// Scripts/mod/backpack/view/backpack_window.js
|
|
"use strict";
|
|
// --------------------------------------------------------------------
|
// @author: shiraho@syg.com(必填, 创建模块的人员)
|
// @description:
|
// 背包主界面
|
// <br/>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 ctor() {
|
this.rleasePrefab = false;
|
this.prefabPath = PathTool.getPrefabPath("backpack", "backpack_window");
|
this.viewTag = SCENE_TAG.ui;
|
this.win_type = WinType.Full;
|
},
|
initConfig: function initConfig() {
|
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 openCallBack() {
|
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 (var 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 registerEvent() {
|
var _this = this;
|
|
var _loop = function _loop() {
|
var element = _this.tab_list[key];
|
|
if (element.btn) {
|
element.btn.on(cc.Node.EventType.TOUCH_END, function (event) {
|
this.changeTabView(element.index);
|
}.bind(_this));
|
}
|
};
|
|
for (var key in this.tab_list) {
|
_loop();
|
}
|
|
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 openRootWnd(params) {
|
var index = params || BackPackConst.item_tab_type.EQUIPS;
|
this.changeTabView(index);
|
this.isCompRedPoint();
|
},
|
// --判断碎片是否显示红点
|
isCompRedPoint: function isCompRedPoint() {
|
var self = this;
|
var item_list = BackPackController.getInstance().getModel().getAllBackPackArray(3);
|
var status = false;
|
var partner_config = Config.partner_data.data_get_compound_info;
|
|
for (var i = 0; i < item_list.length; ++i) {
|
var v = item_list[i];
|
|
if (v.quality != -1 && v.base_id) {
|
if (partner_config[v.base_id]) {
|
if (v.quantity >= 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 changeTabView(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 setPanelData() {
|
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 (var 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 sort_func(objA, objB) {
|
return objA.quality > objB.quality ? -1 : 1;
|
};
|
} else if (this.cur_index == BackPackConst.item_tab_type.HERO) {
|
var checkIsFull = function checkIsFull(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 sortFunc(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 selectedItem(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 updateBackPack(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 closeCallBack() {
|
BackPackController.getInstance().openMainWindow(false);
|
|
if (this.item_scrollview) {
|
this.item_scrollview.DeleteMe();
|
}
|
|
this.item_scrollview = null;
|
}
|
});
|
|
cc._RF.pop();
|