--只显示装备信息的tips, 可与showiconitem搭配使用 WingInfoTips = WingInfoTips or BaseClass(EquipToolTips) WingInfoTips.ONLY_SHOW = 0 --只展示信息 WingInfoTips.COMPOSE_OFF = 1 --显示取出按钮,点击移除合成物品 WingInfoTips.OFF_AND_REPLACE = 2 --显示取出和替换 function WingInfoTips:__init() self.base_file = "common" self.layout_file = "EquipToolTips" self.layer_name = "Top" self.use_background = true self.click_bg_toClose = true self.close_mode = CloseMode.CloseDestroy self.destroy_imm = true self.goods_vo = nil --self:AddPreLoadList("common_asset",{"star", "com_blackstar"},LuaResManager.RES_TYPE.SPRITE) self.load_callback = function () self:LoadSuccess() end self.open_callback = function () self:SetData(self.goods_vo) end self.close_callback = function () end self.destroy_callback = function () self:Remove() end end --[[ dynamic: 在外部整合好的物品动态信息table,一般获取背包中的动态信息即可 若要实现预览等特殊信息,在外部修改后传入 type_or_goodsID: 枚举类型,实现某个界面的特殊需求,显示某些按钮,实现特定功能 ]] function WingInfoTips:Open(type_id, x, y, type_or_goodsID, off_callback, replace_callback) do return end if not Config.Twing[type_id] then print("WingInfoTips:Open() 不存在的翅膀类型, type_id = "..type_id) self:Close() return end self.type_id = type_id self.type_or_goodsID = type_or_goodsID self.pos_x = x self.pos_y = y self.off_callback = off_callback self.replace_callback = replace_callback BaseView.Open(self) end function WingInfoTips:LoadSuccess() EquipToolTips.LoadSuccess(self) self.normal_tra = self:GetChild("layout/normal") self.replaceBtn = self.strengthBtn self.replace_btn_text, self.equip_text = self:GetChildTexts({"layout/normal/btn_conta/strengthBtn/Text", "layout/normal/Text2"}) self.replace_btn_text.text = "替换" self.normal_tra.anchoredPosition = Vector2(0,0) SetSizeDelta(self.transform,ScreenWidth,ScreenHeight) self.skill_desc = self:GetChild("layout/normal/ScrollView/Viewport/Content/addStrengthProp"):GetComponent("Text") self:GetChild("layout/normal/ScrollView/Viewport/Content/line2/Text"):GetComponent("Text").text = "翅膀描述" self.ScrollView:GetComponent("ScrollRect").enabled = false end function WingInfoTips:Remove() if self.icon_item then self.icon_item:DeleteMe() self.icon_item = nil end if self.modelPreview then self.modelPreview:DeleteMe() self.modelPreview = nil end self:DeleteArrowTip() if self.addNumComponent then if self.change_count_id then self.addNumComponent:UnBind(self.change_count_id) self.change_count_id = nil end self.addNumComponent:DeleteMe() self.addNumComponent = nil end end function WingInfoTips:InitEvent() local function onBtnClickHandler(target) if target == self.takeBtn then if self.off_callback ~= nil then local fun = self.off_callback setTimeout(fun, 0) self:Close() end elseif target == self.replaceBtn then if self.replace_callback ~= nil then self:Close() self.replace_callback() end elseif target == self.wearBtn then WingModel:getInstance():OutsideRequireWearWing(self.type_or_goodsID) self:Close() elseif target == self.shelvesUpBtn then end end AddClickEvent(self.takeBtn, onBtnClickHandler) AddClickEvent(self.strengthBtn, onBtnClickHandler) AddClickEvent(self.wearBtn, onBtnClickHandler) AddClickEvent(self.shelvesUpBtn, onBtnClickHandler) end function WingInfoTips:SetData() self.goods_vo = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.type_id) local wing_vo = Config.Twing[self.type_id] local basic = GoodsModel:getInstance():GetGoodsBasicByTypeId(self.type_id) if wing_vo == nil or basic == nil then return print("WingInfoTips:SetData() 数据错误, wing_vo = "..tostring(wing_vo)..", basic = "..tostring(basic)..", type_id = "..self.type_id) end -- 名字 self.nameText.text = ""..basic.goods_name.."" local mainVo = RoleManager.Instance.mainRoleInfo local color_str -- 职业 if wing_vo.career_id == 0 or mainVo.career == wing_vo.career_id then color_str = ColorUtil.WHITE else color_str = ColorUtil.RED end local career_name = WordManager:GetCareerName(wing_vo.career) or "无" self.career.text = "" .. career_name .. "" -- 等级 color_str = ColorUtil.WHITE if basic.level > mainVo.level then color_str = ColorUtil.RED end self.level.text = "" .. basic.level .. "" -- 等阶 local step_str = WordManager:GetWingStepNum(self.type_id) self.step_num.text = "" .. step_str .. "" self.icon_item:SetData(basic) lua_resM:setImageSprite(self, self.step_bg, "uiComponent_asset", "tsui_pj_"..basic.color) if basic then local base_pro = ErlangParser:GetInstance():Parse(wing_vo.attr) self:SetProperty(base_pro) --self.composite_score.text = GetFighting(base_pro) self.composite_score.text = wing_vo.power end self:SetBtns() self:AdjustLayoutPos() if Config.ConfigModelPreview[self.type_id] then self.modelPreview = ModelPreviewCon.New(self.normal_tra) self.modelPreview:SetData(self.type_id,self.bg.sizeDelta.y-29) if self.layout.anchoredPosition.x < 400 then self.layout.anchoredPosition = Vector2(400, self.layout.anchoredPosition.y) end end end --按钮显示 function WingInfoTips:SetBtns() for i,v in ipairs(self.btn_list) do v:SetActive(false) end local btn_list = nil if self.type_or_goodsID == WingInfoTips.COMPOSE_OFF then btn_list = {self.takeBtn} elseif self.type_or_goodsID == WingInfoTips.OFF_AND_REPLACE then btn_list = {self.takeBtn,self.replaceBtn} elseif self.type_or_goodsID == WingInfoTips.ONLY_SHOW then btn_list = {} else btn_list = {self.wearBtn,self.shelvesUpBtn} end for i,v in ipairs(btn_list) do v:SetActive(true) end self.btn_conta.sizeDelta = Vector2(self.btn_conta.sizeDelta.x, #btn_list * 60 +10) end --设置基础属性 function WingInfoTips:SetProperty(base_pro) self.equip_text.gameObject:SetActive(false) self.equip_score.gameObject:SetActive(false) 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.strengthAdd.gameObject:SetActive(false) self.addName.gameObject:SetActive(false) self.addPro.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) local name_str = "" local pro_str = "" local size = #base_pro 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])) if i < size then name_str = name_str.."\n" pro_str = pro_str.."\n" end end self.baseName.text = name_str self.basePro.text = pro_str SetSizeDelta(self.baseName.transform, self.baseName.transform.sizeDelta.x, 25 * size) SetSizeDelta(self.basePro.transform, self.basePro.transform.sizeDelta.x, 25 * size) local wing_vo = Config.Twing[self.type_id] self.skill_desc.text = ""..Trim(wing_vo.description).."" local skill_desc_h = 75 SetAnchoredPosition(self.skill_desc.transform, 25, -25 * size - 100) SetSizeDelta(self.skill_desc.transform, 344, skill_desc_h) SetAnchoredPosition(self.line2, 0, -25 * size - 52) SetSizeDelta(self.bg, self.bg.sizeDelta.x, 315 + 25 * size + skill_desc_h) self.btn_conta.anchoredPosition = Vector2(self.btn_conta.anchoredPosition.x, -205 - 25 * size) setTimeout(function () if not self._use_delete_method then local skill_desc_h = self.skill_desc.preferredHeight SetSizeDelta(self.skill_desc.transform, 344, skill_desc_h) SetSizeDelta(self.bg, self.bg.sizeDelta.x, 315 + 25 * size + skill_desc_h) self.btn_conta.anchoredPosition = Vector2(self.btn_conta.anchoredPosition.x, -205 - 25 * size - skill_desc_h) end end,0) end function WingInfoTips:AdjustLayoutPos() if self.pos_x and self.pos_y then local layout_width = self.bg.sizeDelta.x + self.btn_conta.sizeDelta.x local layout_height = self.bg.sizeDelta.y local x,y = ScreenToViewportPoint(self.pos_x,self.pos_y) local iphone_x_offset = math.max(ClientConfig.iphone_x_offset_left,ClientConfig.iphone_x_offset_right) if x + layout_width + 50 + iphone_x_offset * 2 > SrcScreenWidth then x = SrcScreenWidth - layout_width - 90 - iphone_x_offset * 2 end if y < layout_height + 50 then y = layout_height + 50 end self.layout.anchoredPosition = Vector2(x,y - ScreenHeight) end end