--装备对比的tips StarSoulEquipCompareTips = StarSoulEquipCompareTips or BaseClass(BaseItem) function StarSoulEquipCompareTips:__init() self.base_file = "common" self.layout_file = "StarSoulEquipCompareTips" self.layer_name = "Top" -- self.use_local_view = true self.use_background = true self.click_bg_toClose = true self.close_mode = CloseMode.CloseDestroy self.is_set_zdepth = true -- self.destroy_imm = true self.goods_vo = nil self.model = StarSpiritModel:getInstance() self:Load() end function StarSoulEquipCompareTips:__delete() if self.icon_item then self.icon_item:ReleaseObj() self.icon_item = nil end end function StarSoulEquipCompareTips:Load_callback() self:LoadSuccess() self:InitEvent() if self.need_refreshData then self:SetData(self.goods_vo) end end function StarSoulEquipCompareTips:LoadSuccess() self.layout, self.bg, self.icon_con, self.ScrollView, self.ScrollViewContent, self.line1, self.line2, self.line3 = GetChildTransforms(self.transform, { "layout", "layout/normal/bg", "layout/normal/icon_con", "layout/normal/ScrollView", "layout/normal/ScrollView/Viewport/Content", "layout/normal/ScrollView/Viewport/Content/line1", "layout/normal/ScrollView/Viewport/Content/line2", "layout/normal/ScrollView/Viewport/Content/line3", }) self.name_text, self.pos_text, self.base_name_text, self.basePro_text, self.base_stren_text, self.add_name_text, self.addPro_text, self.equip_score, self.random_name_text, self.random_pro_text = GetChildTexts(self.transform, { "layout/normal/nameText", "layout/normal/posText", "layout/normal/ScrollView/Viewport/Content/baseName", "layout/normal/ScrollView/Viewport/Content/basePro", "layout/normal/ScrollView/Viewport/Content/strengthAdd", "layout/normal/ScrollView/Viewport/Content/addName", "layout/normal/ScrollView/Viewport/Content/addPro", "layout/normal/equip_score", "layout/normal/ScrollView/Viewport/Content/randomName", "layout/normal/ScrollView/Viewport/Content/randomPro", }) self.step_bg, self.item_bg = GetChildImages(self.transform, { "layout/normal/setp_bg", "layout/normal/itemBg", }) self.layout.anchoredPosition = Vector2(-384, 0) self.icon_item = UIObjPool:getInstance():PopItem(UIObjPool.UIType.AwardItem, self.icon_con, nil, self.layer_name) self.icon_item:SetStrenTextPos(6.5, 23.5) self.icon_item:SetPosition(50, -60) self.icon_item:SetItemBgVisible(false) end function StarSoulEquipCompareTips:InitEvent() end function StarSoulEquipCompareTips:SetData(goods_vo) self.goods_vo = goods_vo if self.goods_vo == nil then return end if self.is_loaded then local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(goods_vo.type_id) local equip_cfg = Config.Starsoulequip[goods_vo.type_id] --部位 self.pos_text.text = equip_cfg and Config.Starsoulequippos[equip_cfg.pos] and Trim(Config.Starsoulequippos[equip_cfg.pos].describe) or "无" local stren = 0 for _, v in pairs(self.model.equip_stren_data) do if v.goods_id == self.goods_vo.goods_id then stren = v.stren break end end self.icon_item:SetData(goods_vo.type_id, nil, nil, stren,nil,nil,nil,nil,nil,true) self.icon_item:SetStar(equip_cfg and equip_cfg.star or 0) self:SetBestPro(equip_cfg.best_attr) --计算强化后的属性加成 self:SetProperty(basic, stren) 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 --背景 lua_resM:setImageSprite(self, self.step_bg, "uiComponent_asset", "tsui_pj_"..self.dynamic.color) lua_resM:setImageSprite(self, self.item_bg, "common_asset", "xlui_zbpz_"..self.dynamic.color) --评分 self.equip_score.text = self.dynamic.rating + (equip_cfg and equip_cfg.base_rating or 0) if basic then -- 名字 self.name_text.text = "" .. basic.goods_name .. "+"..stren .. "" end self:SetBetterProperty(self.dynamic.equip_extra_attr) end self:RefreshPos() end GoodsModel:getInstance():GetDynamic(self.goods_vo.goods_id, callback, false) else self.need_refreshData = true end end function StarSoulEquipCompareTips:SetName() local basic = GoodsModel.Instance:GetGoodsBasicByTypeId(self.goods_vo.type_id) self.name_text.text = basic and basic.goods_name-- self.goods_vo.goods_name end function StarSoulEquipCompareTips:SetScore() local cfg = Config.Starsoulequip[self.goods_vo.type_id] local base_score = 0 local better_score = 0 if cfg then base_score = cfg.base_rating end self.base_score_text.text = base_score self.better_score_text.text = base_score + self.goods_vo.rating end --红点 function StarSoulEquipCompareTips:ShowReDot() if self.dynamic and self.dynamic.type_id and self.dynamic.stren and self.dynamic.cell then if RoleManager.Instance.mainRoleInfo.level >= Config.ConfigOpenLv.Equip.strength then local bool = EquipModel:getInstance():IsCanStrength(self.dynamic.type_id, self.dynamic.stren, self.dynamic.cell) and true or false self.strengthBtn_dot:SetActive(bool) end end end --设置基础属性 function StarSoulEquipCompareTips:SetProperty(basic, stren) stren = stren or 0 if basic then local equip_cfg = Config.Starsoulequip[self.goods_vo.type_id] if not equip_cfg then Message.show("没有配置", self.goods_vo.type_id) return end local pos = equip_cfg.pos or 0 local rare = equip_cfg.rare local base_attrlist = ErlangParser:GetInstance():Parse(basic.base_attrlist) local base_equip_attr_list = Config.Starsoulequiplv[pos.."@"..rare.."@0"] and Config.Starsoulequiplv[pos.."@"..rare.."@0"].attr_list or {} base_equip_attr_list = ErlangParser:GetInstance():Parse(base_equip_attr_list) local stren_attr_list = {} local add_prop = {} local base_prop = {} local attr_id_list = {} local name_str = "" local pro_str = "" local stren_str = "" for _, v in pairs(base_attrlist) do local id, value = tonumber(v[1]), tonumber(v[2]) base_prop[id] = {id = id, value = value} table.insert(attr_id_list, id) end table.sort(attr_id_list, function (a, b) return a < b end) for _, v in pairs(base_equip_attr_list) do local id, value = tonumber(v[1]), tonumber(v[2]) if base_prop[id] then base_prop[id].value = base_prop[id].value + value end end for i = 1, stren do local list = Config.Starsoulequiplv[pos.."@"..rare.."@"..i] and Config.Starsoulequiplv[pos.."@"..rare.."@"..i].attr_list if list then list = ErlangParser:GetInstance():Parse(list) for _, v in pairs(list) do local id, value = tonumber(v[1]), tonumber(v[2]) if not stren_attr_list[id] then stren_attr_list[id] = {id = id, value = 0} end stren_attr_list[id].value = stren_attr_list[id].value + value end end end for _, id in ipairs(attr_id_list) do local data = base_prop[id] if data then local add_value = stren_attr_list[id] and stren_attr_list[id].value or 0 local _, name, _, value = WordManager:GetPropertyInfo(data.id, data.value + add_value) name_str = name_str..name.."\n" pro_str = pro_str..value.."\n" if stren_attr_list[id] then local value_add = WordManager:GetPropertyValue(stren_attr_list[id].id, stren_attr_list[id].value) stren_str = stren_str.."(强化 +"..value_add..")\n" else stren_str = stren_str.."(强化 +0)\n" end end end self.base_name_text.text = Trim(name_str) self.basePro_text.text = Trim(pro_str) self.base_stren_text.text = Trim(stren_str) self.base_name_text.transform.sizeDelta = Vector2(self.base_name_text.transform.sizeDelta.x, self.base_name_text.preferredHeight) self.basePro_text.transform.sizeDelta = Vector2(self.basePro_text.transform.sizeDelta.x, self.basePro_text.preferredHeight) self.base_stren_text.transform.sizeDelta = Vector2(self.base_stren_text.transform.sizeDelta.x, self.base_stren_text.preferredHeight) end end --设置附加属性 function StarSoulEquipCompareTips:SetBetterProperty(equip_extra_attr) local better_str = "" local name_str = "" local pro_str = "" if equip_extra_attr then table.sort(equip_extra_attr, function (a, b) return a.attr_id < b.attr_id end) for i, v in ipairs(equip_extra_attr) do local _, name, _, value = WordManager:GetPropertyInfo(v.attr_id, v.attr_val) name_str = name_str .. ""..name.."" .. "\n" pro_str = pro_str..""..value.."" .. "\n" end end self.random_name_text.text = Trim(name_str) self.random_pro_text.text = Trim(pro_str) self.random_pro_text.transform.sizeDelta = Vector2(self.random_pro_text.transform.sizeDelta.x, self.random_pro_text.preferredHeight) self.random_name_text.transform.sizeDelta = Vector2(self.random_name_text.transform.sizeDelta.x, self.random_name_text.preferredHeight) end --设置极品属性 function StarSoulEquipCompareTips:SetBestPro(best_attr) local attr_list = ErlangParser:GetInstance():Parse(best_attr) local name_str = "" local pro_str = "" for i, v in ipairs(attr_list) do local _, name, _, value = WordManager:GetPropertyInfo(tonumber(v[1]), tonumber(v[2])) name_str = name_str ..name.."\n" pro_str = pro_str..value.."\n" end if name_str == "" then name_str = "无" end self.add_name_text.text = Trim(name_str) self.addPro_text.text = Trim(pro_str) self.addPro_text.transform.sizeDelta = Vector2(self.addPro_text.transform.sizeDelta.x, self.addPro_text.preferredHeight) self.add_name_text.transform.sizeDelta = Vector2(self.add_name_text.transform.sizeDelta.x, self.add_name_text.preferredHeight) end function StarSoulEquipCompareTips:RefreshPos() local base_offset = 55 base_offset = base_offset + self.basePro_text.preferredHeight base_offset = base_offset + 40 base_offset = base_offset + self.addPro_text.preferredHeight base_offset = base_offset + 50 base_offset = base_offset + self.random_pro_text.preferredHeight base_offset = base_offset + 190 self.ScrollView.sizeDelta = Vector2(380, base_offset - 175) self.ScrollViewContent.sizeDelta = Vector2(380, base_offset - 175) base_offset = 55 base_offset = base_offset + self.basePro_text.preferredHeight self.line2.anchoredPosition = Vector2(0, -base_offset) base_offset = base_offset + 40 self.addPro_text.transform.anchoredPosition = Vector2(171, -base_offset) self.add_name_text.transform.anchoredPosition = Vector2(25, -base_offset) base_offset = base_offset + self.addPro_text.preferredHeight + 10 self.line3.anchoredPosition = Vector2(0, -base_offset) base_offset = base_offset + 40 self.random_name_text.transform.anchoredPosition = Vector2(25, -base_offset) self.random_pro_text.transform.anchoredPosition = Vector2(171, -base_offset) base_offset = base_offset + self.random_pro_text.preferredHeight base_offset = base_offset + 190 --190 是背景初始高度 self.bg.sizeDelta = Vector2(382.7, base_offset) end