2025-06-04 05:12:01 +08:00

194 lines
5.4 KiB
Plaintext

autoImport("BaseTip")
TitleTip = class("TitleTip", BaseTip)
-- function TitlePropTip:ctor(prefab,parent)
-- TitlePropTip.super.ctor(self,prefab,parent)
-- end
local yellowEffectColor=Color(161/255,161/255,161/255,1)
local grayEffectColor = Color(158/255,86/255,0/255,1)
local lockBtnSpriteName="com_btn_13"
local unlockBtnSpriteName = "com_btn_2"
local standardHeight = 58
local bgStandardHeight = 103
function TitleTip:Init()
self.titleName=self:FindComponent("titleName",UILabel)
self.propDesLab=self:FindComponent("propDesLab",UILabel)
self.unlockDes= self:FindComponent("unlockDes",UILabel)
self.DesLab=self:FindComponent("DesLab",UILabel)
self.ArrowBtn=self:FindComponent("ArrowBtn",UISprite)
self.UseBtn=self:FindComponent("useBtn",UISprite)
self.useBtnLab=self:FindComponent("useBtnLab",UILabel)
self.DescFrame=self:FindComponent("Des",UISprite)
self:_AddAnchor(self:FindComponent("useBtn",UISprite))
self:_AddAnchor(self:FindComponent("BgButtomFrame",UISprite))
self:_AddAnchor(self:FindComponent("bg",UISprite))
self:AddButtonEvent("useBtn",function ( obj )
self:ClickUseBtn()
end)
self:AddButtonEvent("ArrowBtn",function ( obj )
self:ClickArrowBtn()
end)
self.closecomp = self.gameObject:GetComponent(CloseWhenClickOtherPlace);
self.closecomp.callBack = function (go)
self:CloseSelf();
end
EventManager.Me():AddEventListener(ServiceEvent.UserEventChangeTitle, self.SetUseBtnState, self)
TitleTip.super.Init(self);
end
function TitleTip:SetData(data)
self.callback = data.callback;
local data = data.itemdata
self.data=data
self.id=data.id
self.unlocked=data.unlocked
self.type=data.titleType
self:SetUseBtnState()
self:SetArrowBtnState()
local staticData = Table_Appellation[self.id]
if(not staticData) then return end
local name = staticData.Name
self.titleName.text=name -- 名字
local achieveId = self.data:GetAchievemnetIDByTitle(self.id)
if(achieveId and 0~=achieveId)then
local unlockDes=Table_Achievement[achieveId] and Table_Achievement[achieveId].Name or ""
self.unlockDes.text=string.format(ZhString.UnlockAchievenment,unlockDes);
else
helplog("索引失敗---稱號id ",self.id," 並沒有配在Table_Achievement.RewardItems 欄位中. ")
end
local content = Table_Item[self.id].Desc
self.DesLab.text=content -- 描述
local prop = staticData.BaseProp -- 屬性描述
local propDesc
for k,v in pairs(prop) do
if(propDesc)then
propDesc = propDesc .. " , ".. tostring(k).."+"..tostring(v)
else
propDesc = tostring(k).."+"..tostring(v)
end
end
self.callbackParam = data.callbackParam;
self.propDesLab.text=propDesc
self:_CalculateBgHeight()
self:_UpdateAnchor()
end
function TitleTip:_CalculateBgHeight()
local labelHeight = self.DesLab.height
local delta = labelHeight-standardHeight
if(0 < delta)then
self.DescFrame.height=bgStandardHeight+delta
else
self.DescFrame.height=bgStandardHeight
end
end
function TitleTip:_AddAnchor(uirect)
if(self.anchors == nil) then
self.anchors = {}
end
self.anchors[#self.anchors+1] = uirect
end
function TitleTip:_UpdateAnchor()
if(self.anchors) then
for i=1,#self.anchors do
self.anchors[i]:ResetAndUpdateAnchors()
end
end
end
function TitleTip:SetUseBtnState()
local curTitle=Game.Myself.data:GetAchievementtitle()
if(not self.unlocked)then
self.UseBtn.spriteName=lockBtnSpriteName
self.useBtnLab.text=ZhString.AchievementTitle_Unlock -- 未解鎖
self.useBtnLab.effectColor = yellowEffectColor
elseif(self.unlocked and self.id~=curTitle)then
if(TitleProxy.Instance:bLowerTitleGroup(self.id))then
self.UseBtn.spriteName=lockBtnSpriteName
self.useBtnLab.text=ZhString.QuickUsePopupFuncCell_UseBtn -- 使用
else
self.UseBtn.spriteName=unlockBtnSpriteName
self.useBtnLab.text=ZhString.QuickUsePopupFuncCell_UseBtn -- 使用
end
self.useBtnLab.effectColor = grayEffectColor
else
self.UseBtn.spriteName=unlockBtnSpriteName
self.useBtnLab.text=ZhString.AchievementTitle_unfix
self.useBtnLab.effectColor = grayEffectColor
end
end
function TitleTip:SetArrowBtnState()
local bVisibily = self.data:bVisibilyAchievement()
local unlock = FunctionUnLockFunc.Me():CheckCanOpen(23)
if(not unlock or self.data.hideFlag)then
self.ArrowBtn.gameObject:SetActive(false)
elseif(bVisibily and not self.unlocked)then
self.ArrowBtn.gameObject:SetActive(false)
else
self.ArrowBtn.gameObject:SetActive(true)
end
end
function TitleTip:ClickUseBtn()
local curTitle=Game.Myself.data:GetAchievementtitle()
if(not self.unlocked)then
return
end
local lowerCsv = TitleProxy.Instance:bLowerTitleGroup(self.id)
if(lowerCsv)then
local achieveName = lowerCsv.config.Name
MsgManager.ShowMsgByIDTable(2871,achieveName)
return
end
if(curTitle==self.id)then
TitleProxy.Instance:ChangeTitle(2,0)
else
TitleProxy.Instance:ChangeTitle(self.type,self.id)
end
end
function TitleTip:ClickArrowBtn()
local id = self.data:GetAchievemnetIDByTitle()
if(id and id~=0)then
autoImport("AdventurePanel")
AdventurePanel.OpenAchievePageById(id)
self:DestroySelf()
end
end
function TitleTip:AddIgnoreBounds(obj)
if(self.gameObject and self.closecomp)then
self.closecomp:AddTarget(obj.transform);
end
end
function TitleTip:CloseSelf()
if(self.callback)then
self.callback(self.callbackParam);
end
TipsView.Me():HideCurrent();
end
function TitleTip:DestroySelf()
if(not Slua.IsNull(self.gameObject))then
EventManager.Me():RemoveEventListener(ServiceEvent.UserEventChangeTitle,self.SetUseBtnState,self)
GameObject.Destroy(self.gameObject);
end
end