"use strict"; cc._RF.push(module, '9705cDvcn9Nj5R7VTOXRjCi', 'equip_tips'); // Scripts/mod/tips/view/equip_tips.js "use strict"; // -------------------------------------------------------------------- // @author: shiraho@syg.com(必填, 创建模块的人员) // @description: // 装备tisp //
Create: new Date().toISOString() // -------------------------------------------------------------------- var PathTool = require("pathtool"); var TipsConst = require("tips_const"); var GoodsVo = require("goods_vo"); var BackPackConst = require("backpack_const"); var StringUtil = require("string_util"); var HeroController = require("hero_controller"); var PartnerConst = require("partner_const"); var PartnerCalculate = require("partner_calculate"); var EquipTips = cc.Class({ "extends": BaseView, ctor: function ctor() { this.prefabPath = PathTool.getPrefabPath("tips", "equip_tips"); this.viewTag = SCENE_TAG.dialogue; this.win_type = WinType.Tips; }, initConfig: function initConfig() { this.tips_controller = require("tips_controller").getInstance(); this.btn_list = {}; }, openCallBack: function openCallBack() { this.background = this.seekChild("background"); this.container = this.seekChild("container"); this.container_init_height = this.container.height; this.close_btn = this.seekChild("close_btn"); this.base_panel = this.seekChild(this.container, "base_panel"); this.base_panel_sprite = this.base_panel.getComponent(cc.Sprite); this.goods_item = ItemsPool.getInstance().getItem("backpack_item"); this.goods_item.setParent(this.base_panel); this.goods_item.initConfig(false, 1, false, false); this.goods_item.setPosition(-134, -68); this.goods_item.show(); this.score_title = this.seekChild(this.base_panel, "score_title", cc.Label); this.score_title.string = Utils.TI18N("评分:"); this.power_label = this.seekChild(this.base_panel, "power_num").getComponent("CusRichText"); this.name = this.seekChild(this.base_panel, "name"); this.equip_type = this.seekChild(this.base_panel, "equip_type", cc.Label); this.baseattr_panel = this.seekChild("baseattr_panel"); this.seekChild(this.baseattr_panel, "label", cc.Label).string = Utils.TI18N("基础属性"); this.baseattr_panel_height = this.baseattr_panel.height; this.suitattr_panel = this.seekChild("suitattr_panel"); this.suitattr_panel_height = this.suitattr_panel.height; this.suitattr_name = this.seekChild(this.suitattr_panel, "label", cc.Label); this.desc_panel = this.seekChild(this.container, "desc_panel"); this.desc_panel_height = this.desc_panel.height; this.scroll_view = this.seekChild(this.desc_panel, "content"); this.desc_label = this.seekChild(this.scroll_view, "desc_label"); this.tab_panel = this.seekChild(this.container, "tab_panel"); this.tab_panel_height = this.tab_panel.height; this.left_btn = this.seekChild(this.tab_panel, "tab_btn_1"); this.left_btn_label = this.seekChild(this.left_btn, "Label", cc.Label); this.right_btn = this.seekChild(this.tab_panel, "tab_btn_3"); this.right_btn_label = this.seekChild(this.right_btn, "Label", cc.Label); this.item = this.seekChild("item"); // 属性拷贝对象 }, registerEvent: function registerEvent() { this.background.on(cc.Node.EventType.TOUCH_END, function (event) { this.tips_controller.closeTIpsByType(TipsConst.type.EQUIP); }.bind(this)); this.close_btn.on(cc.Node.EventType.TOUCH_END, function (event) { this.tips_controller.closeTIpsByType(TipsConst.type.EQUIP); }.bind(this)); this.right_btn.on(cc.Node.EventType.TOUCH_END, function (event) { // 背包中是穿戴, 英雄上面是替换 if (!this.data) return; var partner_id = this.partner_id || 0; var item_id = this.data.id || 0; this.tips_controller.closeTIpsByType(TipsConst.type.EQUIP); if (this.cloth_type == PartnerConst.EqmTips.backpack) { // 1是穿戴 if (partner_id == 0) { var MainuiController = require("mainui_controller"); var MainuiConst = require("mainui_const"); MainuiController.getInstance().changeMainUIStatus(MainuiConst.btn_index.partner, { index: 1 }); } else { var HeroController = require("hero_controller").getInstance(); HeroController.sender11010(partner_id, item_id); } } else if (this.cloth_type == PartnerConst.EqmTips.partner) { // 2是更换 var HeroController = require("hero_controller"); HeroController.getInstance().openEquipPanel(true, this.data.type, this.partner_id, this.data); } }.bind(this)); this.left_btn.on(cc.Node.EventType.TOUCH_END, function (event) { // 背包中是出售, 英雄上面是卸下 this.tips_controller.closeTIpsByType(TipsConst.type.EQUIP); if (this.cloth_type == PartnerConst.EqmTips.backpack) { // 1是出售 var BackpackController = require("backpack_controller"); var BackPackConst = require("backpack_const"); BackpackController.getInstance().openItemSellPanel(true, this.data, BackPackConst.Bag_Code.EQUIPS); } else if (this.cloth_type == PartnerConst.EqmTips.partner) { // 2是卸下 HeroController.getInstance().sender11011(this.partner_id, this.data.id); } }.bind(this)); }, openRootWnd: function openRootWnd(object) { object = object || {}; var data = object.data; // 物品数据 var type = this.cloth_type = object.type || TipsConst.eqmTips.normal; // tips来源 this.item_config = null; if (typeof data == "number") { this.item_config = Utils.getItemConfig(data); } else if (data instanceof GoodsVo || data.type_vo == "GoodsVo") { this.item_config = data.config; } else { this.item_config = data; } if (this.item_config == null) { this.tips_controller.closeTIpsByType(TipsConst.type.EQUIP); return; } this.data = data; this.partner = object.partner; if (this.partner) { this.partner_id = this.partner.partner_id || 0; } this.goods_item.setData(this.item_config); this.resetLayout(type); }, // 重构界面 resetLayout: function resetLayout(type) { // 是否显示套装属性 var need_show_suitattr = false; if (this.item_config.eqm_set != 0) { this.suit_config = gdata("partner_eqm_data", "data_eqm_suit", this.item_config.eqm_set); if (this.suit_config) { need_show_suitattr = true; } } // 是否显示按钮 var is_show_btn = type == TipsConst.eqmTips.backpack || type == TipsConst.eqmTips.partner; //只有背包和伙伴身上才需要显示按钮 var target_height = this.container_init_height; var extend_height = 0; if (need_show_suitattr) { var y = this.setSuitAttrInfo(); if (y == -1) { need_show_suitattr = false; this.suitattr_panel.active = false; target_height -= this.suitattr_panel_height; } else { target_height += y - this.suitattr_panel_height; extend_height = y; } } else { this.suitattr_panel.active = false; target_height -= this.suitattr_panel_height; } if (!is_show_btn) { this.tab_panel.active = false; target_height -= this.tab_panel_height; } if (this.container_init_height != target_height) { this.container.height = target_height; if (need_show_suitattr) { this.desc_panel.y = this.suitattr_panel.y - extend_height; } else { this.desc_panel.y = this.baseattr_panel.y - this.baseattr_panel_height; } this.tab_panel.y = this.desc_panel.y - this.desc_panel_height; } if (is_show_btn) { this.updateBtnList(type); } this.setBaseInfo(); this.setBaseAttrInfo(); }, // 设置套装 setSuitAttrInfo: function setSuitAttrInfo() { if (this.item_config == null) { return -1; } if (this.suit_config == null) { return -1; } // 按照套装排个序 this.suit_config.sort(function (a, b) { return a.num - b.num; }); var max_count = this.suit_config[this.suit_config.length - 1].num; var name = null; var suit_list = []; for (var index = 0; index < this.suit_config.length; index++) { var element = this.suit_config[index]; if (name == null) { name = element.name; } if (element.attr.length > 0) { //只取第一个属性 var attr = element.attr[element.attr.length - 1]; suit_list.push({ count: element.num, attr_key: attr[0], attr_val: attr[1] }); } } var act_count = this.getEquipActiveCount(); this.suitattr_name.string = name + "(" + act_count + "/" + max_count + ")"; var suit = suit_list[suit_list.length - 1]; if (suit && act_count >= suit.count && this.suitattr_name && this.suitattr_name.node) { this.suitattr_name.node.color = new cc.Color(0x8b, 0xff, 0x8e, 255); } // 设置属性 for (var _index = 0; _index < suit_list.length; _index++) { var _element = suit_list[_index]; var item = cc.instantiate(this.item); item.active = true; item.x = -167; item.y = -50 - _index * 40; this.suitattr_panel.addChild(item); var attr_icon = PathTool.getAttrIconByStr(_element.attr_key); var common_res_path = PathTool.getCommonIcomPath(attr_icon); this.loadRes(common_res_path, function (item, sf_obj) { item.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = sf_obj; }.bind(this, item)); var attr_val = BackPackConst.getAttrValue(_element.attr_key, _element.attr_val); var attr_name = gdata("attr_data", "data_key_to_name", _element.attr_key); var attr_color = "#c1b7ab"; var val_color = "#ffeedd"; if (act_count >= _element.count) { // 如果激活了的话,颜色统一 attr_color = "#8bff8e"; val_color = "#8bff8e"; } item.getChildByName("attr").getComponent(cc.RichText).string = cc.js.formatStr("%s: %s", attr_color, attr_name, val_color, attr_val); var info = item.getChildByName("info"); info.active = true; var color = info.color; color.fromHEX(val_color); info.color = color; info.getComponent(cc.Label).string = cc.js.formatStr("(%s%s)", _element.count, Utils.TI18N("件激活")); } return 50 + suit_list.length * 40; }, // 套装激活数量 getEquipActiveCount: function getEquipActiveCount() { if (this.partner_id == null || this.partner_id == 0) { return 0; } var count = 0; var equip_list = []; if (this.item_config.sub_type == BackPackConst.item_tab_type.HOLYEQUIPMENT) {//神装 } else if (this.item_config.sub_type == BackPackConst.item_tab_type.EQUIPS) { //普通装备 if (this.partner.eqms != null) { // 说明是网络返回的 for (var i in this.partner.eqms) { var item_vo = new GoodsVo(); item_vo.setBaseId(this.partner.eqms[i].base_id); equip_list[this.partner.eqms[i].type] = item_vo; } } else if (this.partner.eqm_list != null) { //说明是本地的 hero_vo for (var k in this.partner.eqm_list) { equip_list[k] = this.partner.eqm_list[k]; } } } for (var k in equip_list) { var goodvo = equip_list[k]; if (goodvo.config) { if (this.item_config.eqm_set == goodvo.config.eqm_set) { count = count + 1; } } } return count; }, // 按钮显示 updateBtnList: function updateBtnList(type) { type = type || TipsConst.eqmTips.normal; if (type == TipsConst.eqmTips.backpack) { this.right_btn_label.string = Utils.TI18N("穿戴"); this.left_btn_label.string = Utils.TI18N("出售"); } else if (type == TipsConst.eqmTips.partner) { this.right_btn_label.string = Utils.TI18N("更换"); this.left_btn_label.string = Utils.TI18N("卸下"); } }, setBaseInfo: function setBaseInfo() { if (this.item_config == null) return; var hex = BackPackConst.quality_color(this.item_config.quality); var color = this.name.color; color.fromHEX(hex); this.name.color = color; this.name.getComponent(cc.Label).string = this.item_config.name; this.equip_type.string = Utils.TI18N("类型:") + this.item_config.type_desc; this.desc_label.getComponent(cc.RichText).string = "" + StringUtil.parse(this.item_config.desc) + ""; this.scroll_view.height = this.desc_label.height; var score = this.data.score || 0; if (score <= 0) { score = this.getBaseScore() || 0; } var all_score = this.data.all_score || 0; all_score = Math.max(all_score, score); this.power_label.setNum(all_score); // var plist = PathTool.getPlistPath("tips", "tips") // this.loadRes(plist, function(res_object){ // this.base_panel_sprite.spriteFrame = res_object.getSpriteFrame("tips_" + this.item_config.quality); // }.bind(this)) this.loadRes(PathTool.getUIIconPath("tips", "tips_" + this.item_config.quality), function (sf_obj) { this.base_panel_sprite.spriteFrame = sf_obj; }.bind(this)); }, //设置基础属性 setBaseAttrInfo: function setBaseAttrInfo() { if (this.item_config == null || this.item_config.ext.length == 0 || this.item_config.ext[0][1] == null) return; // 基础属性只要取第一个 var base_attr = this.item_config.ext[0][1][0]; if (base_attr == null) return; var attr_key = base_attr[0]; var attr_val = BackPackConst.getAttrValue(attr_key, base_attr[1]); var base_item = cc.instantiate(this.item); base_item.active = true; base_item.x = -167; base_item.y = -50; this.baseattr_panel.addChild(base_item); var attr_icon = PathTool.getAttrIconByStr(attr_key); var common_res_path = PathTool.getCommonIcomPath(attr_icon); this.loadRes(common_res_path, function (sf_obj) { base_item.getChildByName("icon").getComponent(cc.Sprite).spriteFrame = sf_obj; }.bind(this)); var attr_name = gdata("attr_data", "data_key_to_name", attr_key); base_item.getChildByName("attr").getComponent(cc.RichText).string = cc.js.formatStr("%s: %s", attr_name, attr_val); }, // 计算基础评分 getBaseScore: function getBaseScore() { if (!this.item_config || !this.item_config.ext || !this.item_config.ext[0]) { return 0; } var base_attr = this.item_config.ext[0][1] || {}; var num = PartnerCalculate.calculatePower(base_attr); return num; }, closeCallBack: function closeCallBack() { if (this.goods_item) { this.goods_item.deleteMe(); } this.tips_controller.closeTIpsByType(TipsConst.type.EQUIP); } }); cc._RF.pop();