HorseEquipCompareTips = HorseEquipCompareTips or BaseClass(BaseItem) function HorseEquipCompareTips:__init() self.base_file = "common" self.layout_file = "EquipCompareTips" self.goods_vo = nil self.show_wake_suit = false self.model = GoodsModel:getInstance() self.horseModel = HorseModel:getInstance() self.is_set_zdepth = true self.star_list = {} self.item_list = {} self.fumo_item_list = {} self.stone_item_list = {} self:Load() end function HorseEquipCompareTips:__delete() if self.arrowHint then self.arrowHint:DeleteMe() self.arrowHint = nil end if self.icon_item then self.icon_item:DeleteMe() end for i,v in ipairs(self.item_list) do v:DeleteMe() v = nil end self.item_list = {} for i,v in ipairs(self.fumo_item_list) do v:DeleteMe() v = nil end self.fumo_item_list = {} for i, v in ipairs(self.stone_item_list) do v:DeleteMe() v = nil end self.stone_item_list = {} if self.expire_label then lua_viewM:ClearItem(self.expire_label) self.expire_label = nil end if self.update_equip_combat_id then self.horseModel:UnBind(self.update_equip_combat_id) self.update_equip_combat_id = nil end end function HorseEquipCompareTips:Load_callback() self.step_bg,self.sell_icon, self.wear_icon = GetChildImages(self.transform, { "normal/setp_bg","normal/sell_conta/icon", "normal/wear_icon", }) self.bg,self.career_conta,self.descCon,self.expired_label,self.sell_conta, self.icon_con,self.star_conta,self.ScrollView, self.ScrollViewContent,self.ScrollViewViewport, self.line1,self.line2, self.line3,self.line4, self.line5,self.line6, self.line7,self.line8, self.line9,self.line10, self.stone_conta,self.down_arrow = GetChildTransforms(self.transform, { "normal/bg","normal/career_conta","normal/descCon","normal/expired_label","normal/sell_conta", "normal/icon_con","normal/star_conta","normal/ScrollView", "normal/ScrollView/Viewport/Content","normal/ScrollView/Viewport", "normal/ScrollView/Viewport/Content/line1","normal/ScrollView/Viewport/Content/line2", "normal/ScrollView/Viewport/Content/line3","normal/ScrollView/Viewport/Content/line4", "normal/ScrollView/Viewport/Content/line5","normal/ScrollView/Viewport/Content/line6", "normal/ScrollView/Viewport/Content/line7","normal/ScrollView/Viewport/Content/line8", "normal/ScrollView/Viewport/Content/line9","normal/ScrollView/Viewport/Content/line10", "normal/ScrollView/Viewport/Content/stone_conta","normal/down_arrow" }) self.descLabel,self.getWayLabel,self.nameText, self.step_num,self.composite_score,self.equip_score, self.career,self.level,self.equip_pos,self.fight, self.base_name,self.baseName, self.basePro,self.strengthAdd, self.add_name,self.addName, self.addPro,self.wash_name, self.washName,self.washPro, self.spirit_name,self.spiritName, self.spiritPro,self.stone_name, self.suit_name,self.suitNum, self.suitName,self.suitPro, self.suitNameList, self.wake_base_name,self.wake_baseName, self.wake_basePro,self.wake_baseAdd, self.wake_stren_name,self.wake_strenName, self.wake_strenPro,self.wake_strenAdd, self.wake_suit_name,self.wake_suitNum, self.wake_suitName,self.wake_suitPro, self.wake_suitAdd,self.magic_skill_name, self.magic_skillName,self.magic_skillLevel, self.price_label = GetChildTexts(self.transform, { "normal/descCon/descLabel","normal/descCon/getWayLabel","normal/nameText", "normal/step_num","normal/composite_score","normal/equip_score", "normal/career_conta/career","normal/level","normal/career_conta/equip_pos","normal/fight", "normal/ScrollView/Viewport/Content/line1/Text","normal/ScrollView/Viewport/Content/baseName", "normal/ScrollView/Viewport/Content/basePro","normal/ScrollView/Viewport/Content/strengthAdd", "normal/ScrollView/Viewport/Content/line2/Text","normal/ScrollView/Viewport/Content/addName", "normal/ScrollView/Viewport/Content/addPro","normal/ScrollView/Viewport/Content/line5/Text", "normal/ScrollView/Viewport/Content/washName","normal/ScrollView/Viewport/Content/washPro", "normal/ScrollView/Viewport/Content/line6/Text","normal/ScrollView/Viewport/Content/spiritName", "normal/ScrollView/Viewport/Content/spiritPro","normal/ScrollView/Viewport/Content/line3/Text", "normal/ScrollView/Viewport/Content/line4/Text","normal/ScrollView/Viewport/Content/suitNum", "normal/ScrollView/Viewport/Content/suitName","normal/ScrollView/Viewport/Content/suitPro", "normal/ScrollView/Viewport/Content/suitNameList", "normal/ScrollView/Viewport/Content/line7/Text","normal/ScrollView/Viewport/Content/wakeBaseName", "normal/ScrollView/Viewport/Content/wakeBasePro","normal/ScrollView/Viewport/Content/wakeBaseAdd", "normal/ScrollView/Viewport/Content/line8/Text","normal/ScrollView/Viewport/Content/wakeStrenName", "normal/ScrollView/Viewport/Content/wakeStrenPro","normal/ScrollView/Viewport/Content/wakeStrenAdd", "normal/ScrollView/Viewport/Content/line9/Text","normal/ScrollView/Viewport/Content/wakeSuitNum", "normal/ScrollView/Viewport/Content/wakeSuitName","normal/ScrollView/Viewport/Content/wakeSuitPro", "normal/ScrollView/Viewport/Content/wakeSuitAdd","normal/ScrollView/Viewport/Content/line10/Text", "normal/ScrollView/Viewport/Content/magicSkillName","normal/ScrollView/Viewport/Content/magicSkillLevel", "normal/sell_conta/price_label" }) self.stageBg, self.step_num_obj, self.text1_obj, self.text2_obj = GetChildGameObjects(self.transform, { "normal/stageBg", "normal/step_num", "normal/Text1", "normal/Text2", }) self.careerName = GetChildTexts(self.transform, { "normal/career_conta/careerName", }) self.careerName.text = "品质:" self.stageBg:SetActive(false) self.step_num_obj:SetActive(false) -- self.text1_obj:SetActive(false) self.text1_obj.transform:GetComponent("Text").text = "部位:" self.text2_obj.transform:GetComponent("Text").text = "评分:" -- self.equip_score.gameObject:SetActive(false) -- self.text2_obj:SetActive(false) self.icon_item = HorseBagIconItem.New(self.icon_con,false, self.layer_name) self.icon_item:ChangeCountVisible(false) -- self.level.gameObject:SetActive(false) self:InitEvent() if self.need_refresh then self:SetData(self.goods_vo, self.view_type) end end function HorseEquipCompareTips:InitEvent() --更新装备的战力 local function onUpdateCombat(vo) if vo.goods_id == self.goods_vo.goods_id then self.level_vo = vo -- self:SetCombat(vo, self.view_type) if self.goods_vo then basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.goods_vo.type_id) end if basic then local base_pro = ErlangParser:GetInstance():Parse(basic.base_attrlist) self:SetProperty(base_pro, self.dynamic.stren, basic.equip_type) end self.composite_score.text = self:GetFightList(self.dynamic, basic) self:SetAddProperty(self.dynamic) self:RefreshPosAndSize(self.dynamic) end end self.update_equip_combat_id = self.horseModel:Bind(HorsePetEvent.SHOW_HORSE_UPGRADE, onUpdateCombat) end function HorseEquipCompareTips:SetData(goods_vo, view_type) self.goods_vo = goods_vo self.view_type = view_type -- self.horseModel:Fire(HorsePetEvent.REQUEST_HORSE_UPGRADE, self.goods_vo.cell) if self.goods_vo == nil then return print("EquipCompareTips里面没有物品数据") end if self.is_loaded then 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 = "" .. WordManager:GetEquipPrefixByColor(self.goods_vo.color) .. self.goods_vo.goods_name .. stren .. "" -- local step_str = WordManager:GetEquipStepNum(self.goods_vo.type_id) -- self.step_num.text = "" .. step_str .. "" -- lua_resM:setImageSprite(self, self.step_bg, "uiComponent_asset", "tsui_pj_"..self.dynamic.color) -- lua_resM:setImageSprite(self, self.step_bg, "uiComponent_asset", "tsui_pj_"..WordManager:GetEquipStepOnlyNum(self.goods_vo.type_id)) self.icon_item:SetData(self.goods_vo) -- self.composite_score.text = self.dynamic.overall_rating if self.view_type == 1 then -- 装备打造中 打造成功后的 装备对比 lua_resM:setImageSprite(self, self.wear_icon, "uiComponent_asset", "tsui_dzq") -- self:SetCombat(nil, self.view_type) local basic = nil if self.goods_vo then basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.goods_vo.type_id) end if basic then local base_pro = ErlangParser:GetInstance():Parse(basic.base_attrlist) self:SetProperty(base_pro, dynamic.stren, basic.equip_type) end self.composite_score.text = self:GetFightList(self.dynamic, basic) else -- 装备穿着中 新的数据 和旧的数据的对比 self.horseModel:Fire(HorsePetEvent.REQUEST_HORSE_UPGRADE, self.goods_vo.cell) end -- self.equip_score.text = self.dynamic.rating -- self.level.text = ""..self.dynamic.rating.."" self.equip_score.text = ""..self.dynamic.rating.."" -- local basic = nil -- if self.goods_vo then -- basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.goods_vo.type_id) -- end -- if basic then -- local base_pro = ErlangParser:GetInstance():Parse(basic.base_attrlist) -- self:SetProperty(base_pro, dynamic.stren, basic.equip_type) self.fight.text = dynamic.combat_power or 0 -- end self:SetAddProperty(self.dynamic) self:RefreshPosAndSize(self.dynamic) -- self:SetWashProperty(self.dynamic) -- self:SetSpiritProperty(self.dynamic) -- if self.dynamic.suit_lv and self.dynamic.suit_lv > 0 then -- self:SetSuitProperty(self.dynamic, self.goods_vo.equip_type) -- end -- if self.dynamic.awakening_lv and self.dynamic.awakening_lv > 0 then -- self:SetWakeProperty(self.dynamic) -- end -- if self.dynamic.equip_skill_lv and self.dynamic.equip_skill_lv > 0 then -- self:SetMagicSKill(self.dynamic) -- end -- self:Refresh() --self:ShowReDot() end end GoodsModel:getInstance():GetDynamic(self.goods_vo.goods_id, callback) end local cfg = self.horseModel:GetHorseEquipAttrCfg(self.goods_vo.type_id) if cfg then local quality_cfg = Config.ConfigQualityName.HorseEquipQualityName[cfg.quality] if quality_cfg then self.career.text = quality_cfg.name end self.nameText.text = ""..self.goods_vo.goods_name.."" end local equip_info = self.horseModel:GetHorseEquipCfg() if cfg and equip_info then for k,v in pairs(equip_info) do if v and v.equip_type and cfg.pos and v.equip_type == cfg.pos then local str = Trim(v.pos_name) -- local str_arr = Split(self.goods_vo.goods_name, "·") -- self.level.text = str_arr[#str_arr] self.level.text = str end end end self:SetBtns() else self.need_refresh = true end end --设置战力 穿戴状态 打造完成后的旧数据状态 function HorseEquipCompareTips:SetCombat(vo, view_type) if view_type then if view_type == 2 then --穿戴中的 战力显示为 评分加战力 if vo then if not self.cell then self.cell = self.horseModel:GetEquipWearPos(self.goods_vo.type_id) end local cfg = self.horseModel:GetHorseEquipLvCfg(self.cell, vo.lv) if cfg then local grade = self.horseModel:GetHorseEquipAttrCfg(self.goods_vo.type_id).base_rating self.composite_score.text = cfg.combat + grade end end elseif view_type == 1 then --打造成功后的旧数据 直接显示为评分 self.composite_score.text = self.horseModel:GetHorseEquipAttrCfg(self.goods_vo.type_id).base_rating end end end function HorseEquipCompareTips:GetFightList(dynamic, basic) local list = {} if basic then --基础属性 local base_pro = ErlangParser:GetInstance():Parse(basic.base_attrlist) if self.view_type == 2 then --穿戴 --升级 local cfg = self.horseModel:GetHorseEquipLvCfg(self.goods_vo.cell, self.level_vo.lv) local equip_pro = ErlangParser:GetInstance():Parse(cfg.attr) for k,v in pairs(base_pro) do local next_attr = {} local next_prop = WordManager:GetPropertyValue(tonumber(v[1]),tonumber(v[2])) for i,j in pairs(equip_pro) do if tonumber(j[1]) == tonumber(v[1]) then next_prop = tonumber(next_prop) + tonumber(j[2]) next_attr.attr_id = tonumber(v[1]) next_attr.attr_val = next_prop end end table.insert(list, next_attr) end else for i,v in ipairs(base_pro) do table.insert(list,{attr_id = v[1],attr_val = v[2]}) end end end --极品属性 for i,v in ipairs(dynamic.equip_extra_attr) do table.insert(list,{attr_id = v.attr_id,attr_val = v.attr_val}) end local AllProList = {} local tempList = {} local mainVo = RoleManager.Instance.mainRoleInfo for i,v in ipairs(list) do local cfg = Config.ConfigAttributeAddition[v.attr_id] if cfg then local val = v.attr_val * mainVo[cfg.baseAttrVo] / 10000 table.insert(tempList,{attr_id = cfg.baseAttr,attr_val = val}) else table.insert(AllProList,v) end end for i,v in ipairs(tempList) do table.insert(AllProList,v) end local endList = {} for i,v in ipairs(AllProList) do table.insert(endList,{[1] = v.attr_id,[2] = v.attr_val}) end return GetFighting(endList) end --设置基础属性 function HorseEquipCompareTips:SetProperty(base_pro, stren, pos) -- stren = stren or 0 -- local stren_config = EquipModel:getInstance():GetStrengthConfig(pos, stren) local name_str = "" local pro_str = "" local stren_str = "" local prop -- local pro_list = {} -- if stren_config and Trim(stren_config.attr_list) ~= "[]" then -- pro_list = ErlangParser:GetInstance():Parse(stren_config.attr_list) -- end local equip_pro local next_equip_pro if self.view_type == 2 and self.level_vo then local cfg = self.horseModel:GetHorseEquipLvCfg(self.goods_vo.cell, self.level_vo.lv) equip_pro = ErlangParser:GetInstance():Parse(cfg.attr) -- next_equip_pro = ErlangParser:GetInstance():Parse(self.horseModel:GetHorseEquipLvCfg(self.goods_vo.cell, (self.level_vo.lv+1)).attr) end for i,v in ipairs(base_pro) do name_str = name_str .. WordManager:GetProperties(tonumber(v[1])) prop = WordManager:GetPropertyValue(tonumber(v[1]),tonumber(v[2])) if equip_pro and #equip_pro > 0 then for x,y in pairs(equip_pro) do if y[1] == v[1] then prop = tonumber(prop) + tonumber(y[2]) stren_str = stren_str.."(强化+"..y[2]..")" end end end pro_str = pro_str.."+" .. prop--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 self.view_type == 2 then -- stren_str = stren_str .. "(升级+" .. 0 .. ")" -- 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.."" local off_y = 0 local line_y = 39 off_y = self.basePro.preferredHeight + 15 SetSizeDelta(self.baseName.transform, self.baseName.transform.sizeDelta.x, off_y) SetSizeDelta(self.basePro.transform, self.basePro.transform.sizeDelta.x, off_y) SetSizeDelta(self.strengthAdd.transform, self.strengthAdd.transform.sizeDelta.x, off_y) end --设置附加属性 function HorseEquipCompareTips:SetAddProperty(dynamic) if dynamic and dynamic.equip_extra_attr then local equip_extra_attr = nil equip_extra_attr = self.horseModel:SortEquipAttr(dynamic.equip_extra_attr) local name_str = "" local pro_str = "" if equip_extra_attr then for i,v in ipairs(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 < #equip_extra_attr then name_str = name_str .. "\n" pro_str = pro_str .. "\n" end end end self.addName.text = name_str self.addPro.text = pro_str SetSizeDelta(self.addName.transform, 130, self.addName.preferredHeight + 15) SetSizeDelta(self.addPro.transform, self.addPro.transform.sizeDelta.x, self.addPro.preferredHeight + 15) end end --按钮显示 function HorseEquipCompareTips:SetBtns() self.line3.gameObject:SetActive(false) self.line4.gameObject:SetActive(false) self.line5.gameObject:SetActive(false) self.line6.gameObject:SetActive(false) self.line7.gameObject:SetActive(false) self.line8.gameObject:SetActive(false) self.line9.gameObject:SetActive(false) self.line10.gameObject:SetActive(false) self.washName.gameObject:SetActive(false) self.washPro.gameObject:SetActive(false) self.spiritName.gameObject:SetActive(false) self.spiritPro.gameObject:SetActive(false) self.stone_conta.gameObject:SetActive(false) self.suitNum.gameObject:SetActive(false) self.suitName.gameObject:SetActive(false) self.suitPro.gameObject:SetActive(false) self.suitNameList.gameObject:SetActive(false) self.wake_baseName.gameObject:SetActive(false) self.wake_basePro.gameObject:SetActive(false) self.wake_baseAdd.gameObject:SetActive(false) self.wake_strenName.gameObject:SetActive(false) self.wake_strenPro.gameObject:SetActive(false) self.wake_strenAdd.gameObject:SetActive(false) self.wake_suitNum.gameObject:SetActive(false) self.wake_suitName.gameObject:SetActive(false) self.wake_suitPro.gameObject:SetActive(false) self.wake_suitAdd.gameObject:SetActive(false) self.magic_skillName.gameObject:SetActive(false) self.magic_skillLevel.gameObject:SetActive(false) self.expired_label.gameObject:SetActive(false) self.descCon.gameObject:SetActive(false) end -- function HorseEquipCompareTips:SetCombat(vo) -- if vo then -- local cfg = self.horseModel:GetHorseEquipLvCfg(self.goods_vo.cell, vo.lv) -- if cfg then -- local grade = self.horseModel:GetHorseEquipAttrCfg(self.goods_vo.type_id).base_rating -- self.composite_score.text = cfg.combat + grade -- end -- end -- end --计算父物体大小 function HorseEquipCompareTips:CalculateSize( dynamic ) local off_y = 0 local line_y = 39 off_y = self.basePro.preferredHeight + 15 off_y = off_y + line_y local show_add = false if dynamic and dynamic.equip_extra_attr and #dynamic.equip_extra_attr > 0 then show_add = true end if show_add then off_y = off_y + line_y off_y = off_y + self.addPro.preferredHeight + 10 end SetSizeDelta(self.ScrollViewContent, self.ScrollViewContent.sizeDelta.x, off_y) end --更新各个控件的位置 function HorseEquipCompareTips:RefreshPosAndSize(dynamic) self.gameObject:SetActive(true) self:CalculateSize(dynamic) -- SetSizeDelta(self.ScrollViewContent, 326, 184) local off_y = 0 local line_y = 39 off_y = self.basePro.preferredHeight + 15 SetSizeDelta(self.baseName.transform, self.baseName.transform.sizeDelta.x, off_y) SetSizeDelta(self.basePro.transform, self.basePro.transform.sizeDelta.x, off_y) SetSizeDelta(self.strengthAdd.transform, self.strengthAdd.transform.sizeDelta.x, off_y) off_y = off_y + line_y local show_add = false if dynamic and dynamic.equip_extra_attr and #dynamic.equip_extra_attr > 0 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 + line_y SetSizeDelta(self.addName.transform, self.addName.transform.sizeDelta.x, self.addName.preferredHeight + 15) SetSizeDelta(self.addPro.transform, self.addPro.transform.sizeDelta.x, self.addPro.preferredHeight + 15) SetLocalPosition(self.addName.transform, self.addName.transform.localPosition.x, -off_y) SetLocalPosition(self.addPro.transform, self.addPro.transform.localPosition.x, -off_y) off_y = off_y + self.addPro.preferredHeight + 10 else self.line2.gameObject:SetActive(false) self.addName.gameObject:SetActive(false) self.addPro.gameObject:SetActive(false) end SetSizeDelta(self.ScrollViewContent, self.ScrollViewContent.sizeDelta.x, off_y) SetSizeDelta(self.ScrollView, self.ScrollView.sizeDelta.x, off_y) SetSizeDelta(self.ScrollViewViewport, self.ScrollViewViewport.sizeDelta.x, off_y) SetSizeDelta(self.bg, self.bg.sizeDelta.x, off_y - self.ScrollView.localPosition.y + 15) end