--装备对比的tips SealCompareTips = SealCompareTips or BaseClass(BaseItem) function SealCompareTips:__init() self.base_file = "common" self.layout_file = "EquipCompareTips" self.goods_vo = nil self.model = GoodsModel:getInstance() self.seal_item_list = {} self:Load() end function SealCompareTips:__delete() if self.icon_item then self.icon_item:DeleteMe() end for i,v in ipairs(self.seal_item_list) do v:DeleteMe() v = nil end self.seal_item_list = {} if self.expire_label then lua_viewM:ClearItem(self.expire_label) self.expire_label = nil end end function SealCompareTips:Load_callback() EquipCompareTips.Load_callback(self) end function SealCompareTips:InitEvent() EquipCompareTips.InitEvent(self) end function SealCompareTips:SetData(goods_vo) self.goods_vo = goods_vo if self.goods_vo == nil then return print("SealCompareTips里面没有物品数据") end if self.is_loaded then local color_str = ColorUtil.WHITE if self.goods_vo.level > RoleManager.Instance.mainRoleInfo.level then color_str = ColorUtil.RED end self.level.text = "" .. self.goods_vo.level .. "" -- local index = Config.ConfigEquipShow[self.goods_vo.subtype].index self.equip_pos.text = Trim(Config.Holysealpos[self.goods_vo.subtype].name) self.fight.text = self.goods_vo.combat_power or 0 color_str = (self.goods_vo.career_id == 0 or RoleManager.Instance.mainRoleInfo.career == self.goods_vo.career_id) and ColorUtil.WHITE or ColorUtil.RED local career_name = Config.Career[self.goods_vo.career_id] and Config.Career[self.goods_vo.career_id].career_name or "通用" self.career.text = "" .. career_name .. "" local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.goods_vo.type_id) -- self:CreateStar(8) if self.goods_vo.goods_id then local callback = function (dynamic) if self.goods_vo.goods_id and dynamic and self.goods_vo.goods_id == dynamic.goods_id then self.dynamic = dynamic self.dynamic.stren = dynamic.stren or 0 local stren = "" if dynamic.stren and dynamic.stren > 0 then stren = "+" ..dynamic.stren end self.nameText.text = "" .. self.goods_vo.goods_name .. stren .. "" local step = Config.Holysealgoods[self.goods_vo.type_id] and Config.Holysealgoods[self.goods_vo.type_id].stage or 0 self.step_num.text = "" .. step .. "阶" self.icon_item:SetData(self.goods_vo) self.composite_score.text = self.dynamic.overall_rating self.equip_score.text = self.dynamic.rating if basic then local base_pro = ErlangParser:GetInstance():Parse(basic.base_attrlist) self:SetProperty(base_pro, dynamic.stren, basic.subtype) self.fight.text = dynamic.combat_power or 0 end self:SetAddProperty(self.dynamic) self:SetSpecialProperty(self.goods_vo) self:SetSuitProperty(self.dynamic) self:Refresh() --self:ShowReDot() end end GoodsModel:getInstance():GetDynamic(self.goods_vo.goods_id, callback) end --self:SetSellState(self.goods_vo.sell, self.goods_vo.price_type, self.goods_vo.type_id) self:Refresh() else self.need_refresh = true end end --设置附加属性 function SealCompareTips:SetAddProperty(dynamic) if dynamic and dynamic.equip_extra_attr then local name_str = "" local pro_str = "" if #dynamic.equip_extra_attr == 0 then self.addName.text = "无" self.addPro.text = "" else for i,v in ipairs(dynamic.equip_extra_attr) do if v.type_id == 1 then name_str = name_str .. "每"..v.plus_interval.."级"..WordManager:GetProperties(tonumber(v.attr_id)).."" pro_str = pro_str .."+"..WordManager:GetPropertyValue(tonumber(v.attr_id), tonumber(v.plus_unit)) .. "" else name_str = name_str .. ""..WordManager:GetProperties(tonumber(v.attr_id)).."" pro_str = pro_str .. "+"..WordManager:GetPropertyValue(tonumber(v.attr_id), v.attr_val).."" end if i < #dynamic.equip_extra_attr then name_str = name_str .. "\n" pro_str = pro_str .. "\n" end end self.addName.text = name_str self.addPro.text = pro_str end end end --设置洗炼属性 function SealCompareTips:SetSpecialProperty(goodsVo) self.wash_name.text = "特殊属性" if goodsVo then if Config.Holysealgoods[goodsVo.type_id] then local name_str = "" local pro_str = "" local attr = ErlangParser:GetInstance():Parse(Config.Holysealgoods[goodsVo.type_id].special_attr) for i,v in ipairs(attr) do name_str = name_str .. WordManager:GetProperties(tonumber(v[1])) pro_str = pro_str .. "+" .. WordManager:GetPropertyValue(tonumber(v[1]), tonumber(v[2])) if i < #attr then name_str = name_str .. "\n" pro_str = pro_str .. "\n" end end self.washName.text = name_str self.washPro.text = pro_str end end end --刷新相关控件的位置 function SealCompareTips:Refresh() if self.goods_vo then self:RefreshPosAndSize(self.dynamic) self:SetRootPos() end end --设置基础属性 function SealCompareTips:SetProperty(base_pro, stren, pos) stren = stren or 0 local stren_config = SealModel:getInstance():GetStrengthConfig(pos, stren) local name_str = "" local pro_str = "" local stren_str = "" local pro_list = {} if stren_config and Trim(stren_config.attr_list) ~= "[]" then pro_list = ErlangParser:GetInstance():Parse(stren_config.attr_list) end for i,v in ipairs(base_pro) do name_str = name_str .. WordManager:GetProperties(tonumber(v[1])) pro_str = pro_str.."+" .. WordManager:GetPropertyValue(tonumber(v[1]),tonumber(v[2])) for i2, v2 in ipairs(pro_list) do if tonumber(v2[1]) == tonumber(v[1]) then stren_str = stren_str .. "(强化+" .. v2[2] .. ")" end end if i < #base_pro then name_str = name_str.."\n" pro_str = pro_str.."\n" stren_str = stren_str.."\n" end end self.baseName.text = name_str self.basePro.text = pro_str self.strengthAdd.text = stren_str end --设置套装属性 function SealCompareTips:SetSuitProperty(dynamic, subtype) local suit_id = Config.Holysealgoods[dynamic.type_id] and Config.Holysealgoods[dynamic.type_id].suit_id local suit_num if isOther then suit_num = dynamic.suit_count else suit_num = SealModel:getInstance():GetSuitNum(suit_id) or 0 end local config = Config.Holysealsuit[suit_id] if config then self.suit_name.text = Trim(config.name).."("..suit_num.."/"..config.max_count..")" local attr = ErlangParser:GetInstance():Parse(config.attr_list) if attr and #attr > 0 then local num_str = "" local name_str = "" local pro_str = "" for i, v in ipairs(attr) do local color if suit_num >= tonumber(v[1]) then color = ColorUtil.GREEN else color = ColorUtil.GRAY end num_str = num_str.."【"..v[1].."件】" for i2, v2 in ipairs(v[3]) do name_str = name_str ..""..WordManager:GetProperties(tonumber(v2[1])).."" pro_str = pro_str .."+"..WordManager:GetPropertyValue(tonumber(v2[1]), tonumber(v2[2])).."" if i < #attr or i2 < #v[3] then num_str = num_str.."\n" name_str = name_str.."\n" pro_str = pro_str.."\n" end end end self.suitNum.text = num_str self.suitName.text = name_str self.suitPro.text = pro_str end end end --更新各个控件的位置 function SealCompareTips:RefreshPosAndSize(dynamic) local off_y = 0 off_y = self.basePro.preferredHeight + 15 self.baseName.transform.sizeDelta = Vector2(self.baseName.transform.sizeDelta.x, off_y) self.basePro.transform.sizeDelta = Vector2(self.basePro.transform.sizeDelta.x, off_y) self.strengthAdd.transform.sizeDelta = Vector2(self.strengthAdd.transform.sizeDelta.x, off_y) off_y = off_y + 30 local show_add = false if dynamic then show_add = true end if show_add then self.line2.gameObject:SetActive(true) self.addName.gameObject:SetActive(true) self.addPro.gameObject:SetActive(true) self.line2.localPosition = Vector3(0, -off_y, 0) off_y = off_y + 30 self.addName.transform.localPosition = Vector2(self.addName.transform.localPosition.x, -off_y) self.addPro.transform.localPosition = Vector2(self.addPro.transform.localPosition.x, -off_y) self.addName.transform.sizeDelta = Vector2(self.addName.transform.sizeDelta.x, self.addName.preferredHeight + 15) self.addPro.transform.sizeDelta = Vector2(self.addPro.transform.sizeDelta.x, self.addPro.preferredHeight + 15) off_y = off_y + self.addPro.preferredHeight + 15 else self.line2.gameObject:SetActive(false) self.addName.gameObject:SetActive(false) self.addPro.gameObject:SetActive(false) end local show_wash = false if dynamic and Config.Holysealgoods[dynamic.type_id] then show_wash = true end if show_wash then self.line5.gameObject:SetActive(true) self.washName.gameObject:SetActive(true) self.washPro.gameObject:SetActive(true) self.line5.localPosition = Vector3(0, -off_y, 0) off_y = off_y + 30 self.washName.transform.localPosition = Vector3(self.washName.transform.localPosition.x, -off_y, 0) self.washName.transform.sizeDelta = Vector2(self.washName.transform.sizeDelta.x, self.washName.preferredHeight + 15) self.washPro.transform.localPosition = Vector3(self.washPro.transform.localPosition.x, -off_y, 0) self.washPro.transform.sizeDelta = Vector2(self.washPro.transform.sizeDelta.x, self.washPro.preferredHeight + 15) off_y = off_y + self.washPro.preferredHeight + 15 else self.line5.gameObject:SetActive(false) self.washName.gameObject:SetActive(false) self.washPro.gameObject:SetActive(false) end local show_spirit = false --[[if dynamic and dynamic.cspirit_stage and dynamic.cspirit_lv and dynamic.cspirit_stage > 0 and dynamic.cspirit_lv > 0 then show_spirit = true end--]] if show_spirit then self.line6.gameObject:SetActive(true) self.spiritName.gameObject:SetActive(true) self.spiritPro.gameObject:SetActive(true) self.line6.localPosition = Vector3(0, -off_y, 0) off_y = off_y + 30 self.spiritName.transform.localPosition = Vector3(self.spiritName.transform.localPosition.x, -off_y, 0) self.spiritName.transform.sizeDelta = Vector2(self.spiritName.transform.sizeDelta.x, self.spiritName.preferredHeight + 15) self.spiritPro.transform.localPosition = Vector3(self.spiritPro.transform.localPosition.x, -off_y, 0) self.spiritPro.transform.sizeDelta = Vector2(self.spiritPro.transform.sizeDelta.x, self.spiritPro.preferredHeight + 15) off_y = off_y + self.spiritPro.preferredHeight + 10 else self.line6.gameObject:SetActive(false) self.spiritName.gameObject:SetActive(false) self.spiritPro.gameObject:SetActive(false) end local show_stone = false if dynamic and Config.Goodsdecompose[dynamic.type_id] then show_stone = true end if show_stone then self.line3.localPosition = Vector3(0, -off_y, 0) off_y = off_y + 30 self.line3.gameObject:SetActive(true) self.stone_conta.gameObject:SetActive(true) local height = self:SetDecompose(dynamic) self.stone_conta.sizeDelta = Vector2(self.stone_conta.sizeDelta.x, height) self.stone_conta.localPosition = Vector3(self.stone_conta.localPosition.x, -off_y, 0) off_y = off_y + height + 15 else self.line3.gameObject:SetActive(false) self.stone_conta.gameObject:SetActive(false) end local show_suit = false if dynamic then show_suit = true end if show_suit then self.line4.gameObject:SetActive(true) self.suitNum.gameObject:SetActive(true) self.suitName.gameObject:SetActive(true) self.suitPro.gameObject:SetActive(true) self.line4.localPosition = Vector3(0, -off_y, 0) off_y = off_y + 30 self.suitNum.transform.localPosition = Vector3(self.suitNum.transform.localPosition.x, -off_y, 0) self.suitNum.transform.sizeDelta = Vector2(self.suitNum.transform.sizeDelta.x, self.suitNum.preferredHeight + 15) self.suitName.transform.localPosition = Vector3(self.suitName.transform.localPosition.x, -off_y, 0) self.suitName.transform.sizeDelta = Vector2(self.suitName.transform.sizeDelta.x, self.suitName.preferredHeight + 15) self.suitPro.transform.localPosition = Vector3(self.suitPro.transform.localPosition.x, -off_y, 0) self.suitPro.transform.sizeDelta = Vector2(self.suitPro.transform.sizeDelta.x, self.suitPro.preferredHeight + 15) off_y = off_y + self.suitPro.preferredHeight + 15 else self.line4.gameObject:SetActive(false) self.suitNum.gameObject:SetActive(false) self.suitName.gameObject:SetActive(false) self.suitPro.gameObject:SetActive(false) end self.line7.gameObject:SetActive(false) self.wake_baseName.gameObject:SetActive(false) self.wake_basePro.gameObject:SetActive(false) self.line8.gameObject:SetActive(false) self.wake_strenName.gameObject:SetActive(false) self.wake_strenPro.gameObject:SetActive(false) self.line9.gameObject:SetActive(false) self.wake_suitNum.gameObject:SetActive(false) self.wake_suitName.gameObject:SetActive(false) self.wake_suitPro.gameObject:SetActive(false) self.line10.gameObject:SetActive(false) self.magic_skillName.gameObject:SetActive(false) self.magic_skillLevel.gameObject:SetActive(false) -- if off_y > 451 then -- self.down_arrow.localPosition = Vector3(150, -621.6, 0) -- self.sell_conta.localPosition = Vector3(22, -643.5, 0) -- self.ScrollView.sizeDelta = Vector2(287, 451) self.ScrollViewContent.sizeDelta = Vector2(self.ScrollViewContent.sizeDelta.x, off_y) -- self.ScrollViewViewport.sizeDelta = Vector2(276, 451) -- self.transform.sizeDelta = Vector2(328, 685) -- self.bg.sizeDelta = Vector2(328, 711) -- else -- self.down_arrow.localPosition = Vector3(150, -off_y + self.ScrollView.localPosition.y + 20, 0) -- self.sell_conta.localPosition = Vector3(22, -off_y + self.ScrollView.localPosition.y, 0) -- self.ScrollView.sizeDelta = Vector2(287, off_y) -- self.ScrollViewContent.sizeDelta = Vector2(276, off_y) -- self.ScrollViewViewport.sizeDelta = Vector2(276, off_y) -- self.transform.sizeDelta = Vector2(328, off_y - self.ScrollView.localPosition.y + 60) -- self.bg.sizeDelta = Vector2(328, off_y - self.ScrollView.localPosition.y + 60) -- end if self.ScrollViewContent.sizeDelta.y > 451 then self.down_arrow.gameObject:SetActive(true) else self.down_arrow.gameObject:SetActive(false) end --[[--小天使小恶魔,位置改变 self.expired_label.gameObject:SetActive(false) self.descCon.gameObject:SetActive(false) self.ScrollViewViewport.transform.sizeDelta = Vector2(326, 447) if self.goods_vo.type==10 and self.goods_vo.subtype==11 then local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.goods_vo.type_id) self.bg.sizeDelta = Vector2(335, 507) self.career_conta.transform.anchoredPosition = Vector3(-61, 394, 0) self.ScrollView.transform.anchoredPosition = Vector3(-3.5, -165, 0) self.ScrollViewViewport.transform.sizeDelta = Vector2(326, 136) self.ui_line1.transform.anchoredPosition = Vector3(113, -115, 0) self.ui_line2.transform.anchoredPosition = Vector3(110, -253, 0) self.descCon.transform.anchoredPosition = Vector3(-3.5, -351, 0) self.descCon.gameObject:SetActive(true) self.descLabel.text = Trim(basic.intro) self.getWayLabel.text = Trim(basic.getway) if self.goods_vo.expire_time then if self.goods_vo.expire_time == 0 then self.expired_label.gameObject:SetActive(false) else self.expired_label.gameObject:SetActive(true) local text = "" if TimeUtil:getServerTime() > self.goods_vo.expire_time then text = "已过期" else local time = self.goods_vo.expire_time - TimeUtil:getServerTime() text = string.format("【%s】后过期",TimeUtil:timeConvert6(time)) end self.expired_label:GetComponent("Text").text = text self.expired_label.transform.sizeDelta = Vector2(280, 30) self.expired_label.transform.anchoredPosition = Vector3(114, -96, 0) end end end--]] end --设置宝石 function SealCompareTips:SetDecompose(goodsVo) self.stone_name.text = "分解获得" local cfg = Config.Goodsdecompose[goodsVo.type_id] if cfg then local list = ErlangParser:GetInstance():Parse(cfg.regular_mat) for i, v in ipairs(list) do local item = self.seal_item_list[i] if item == nil then item = SealToolDecomItem.New(self.stone_conta) self.seal_item_list[i] = item end item:SetData(v) end return 25 * #list end return 25 end