ro-table/Asstes/Resources/Script/Com/Data/EffectShow/EffectShowDataWraper.txt
2025-06-04 05:02:57 +08:00

167 lines
5.2 KiB
Plaintext

EffectShowDataWraper = class("EffectShowDataWraper")
autoImport("CardNCell")
autoImport("ItemCell")
EffectShowDataWraper.IconType = {
item = 1,
skill =2,
ui = 3,
career = 4,
}
EffectShowDataWraper.DefaultWidth = 380
EffectShowDataWraper.DefaultHeight = 380
EffectShowDataWraper.Default = 1
EffectShowDataWraper.CardNCellResPath = ResourcePathHelper.UICell("CardNCell")
EffectShowDataWraper.ItemCellResPath = ResourcePathHelper.UICell("AwardItemCell")
function EffectShowDataWraper:ctor(itemData,effectPath,showType,from,callback)
self.itemData = itemData
self.callback = callback
self.effectPath = effectPath
self.showType = showType
self.effectFromType = from
self.obj = nil
self.resPath = nil
if(itemData.staticData)then
self.dataName = itemData:GetName()
self.canBeShare = itemData.staticData.Share == 1
else
self.tb = TableUtil.unserialize(itemData.data)
self.dataName = self.tb.text
end
end
function EffectShowDataWraper:canBeShared( )
return self.canBeShare
end
local tempVector3 = LuaVector3.zero
function EffectShowDataWraper:adjustDepth( obj )
-- body
local max = -999
if(obj)then
local objs = GameObjectUtil.Instance:GetAllChildren(obj)
for i=1,#objs do
local child = objs[i]
local widget = child:GetComponent(UIWidget)
if(widget)then
widget.depth = widget.depth+50
if(widget.depth > max)then
max = widget.depth
end
end
end
-- NGUITools.NormalizeWidgetDepths()
end
return max
end
function EffectShowDataWraper:getModelObj( parent )
-- body
local obj
if(self.showType == FloatAwardView.ShowType.ModelType)then
obj = ItemUtil.getAssetPartByItemData(self.itemData.staticData.id,parent)
elseif(self.showType == FloatAwardView.ShowType.ItemType)then
self.resPath = EffectShowDataWraper.ItemCellResPath
obj = Game.AssetManager_UI:CreateAsset(self.resPath,parent)
tempVector3:Set(0,0,0)
obj.transform.localPosition = tempVector3
tempVector3:Set(1,1,1)
obj.transform.localScale = tempVector3
obj.name = "ItemCell";
self.cell = ItemCell.new(obj)
self.cell:SetData(self.itemData)
local max = self:adjustDepth(parent)
local tx = GameObjectUtil.Instance:DeepFind(parent.transform.parent.gameObject, "Texture")
if(tx)then
tx = tx:GetComponent(UITexture)
tx.depth = max+1
end
elseif(self.showType == FloatAwardView.ShowType.CardType)then
self.resPath = EffectShowDataWraper.CardNCellResPath
obj = Game.AssetManager_UI:CreateAsset(self.resPath,parent)
tempVector3:Set(0,35,0)
obj.transform.localPosition = tempVector3
tempVector3:Set(1,1,1)
obj.transform.localScale = tempVector3
obj.name = "CardNCell";
self.cell = CardNCell.new(obj)
self.cell:SetData(nil)
self.cell:SetData(self.itemData)
self.cell:Hide(self.cell.useButton.gameObject)
local max = self:adjustDepth(parent)
local tx = GameObjectUtil.Instance:DeepFind(parent.transform.parent.gameObject, "Texture")
if(tx)then
tx = tx:GetComponent(UITexture)
tx.depth = max+1
end
elseif(self.showType == FloatAwardView.ShowType.IconType)then
obj = GameObject("tmp")
obj.transform:SetParent(parent.transform)
tempVector3:Set(0,0,0)
obj.transform.localPosition = tempVector3
local cpn = obj:AddComponent(UISprite)
cpn.depth = 3
if(self.itemData.type == EffectShowDataWraper.IconType.skill)then
IconManager:SetSkillIcon(self.tb.icon,cpn)
elseif(self.itemData.type == EffectShowDataWraper.IconType.career)then
IconManager:SetProfessionIcon(self.tb.icon,cpn)
elseif(self.itemData.type == EffectShowDataWraper.IconType.ui)then
IconManager:SetUIIcon(self.tb.icon, cpn);
elseif(self.itemData.type == EffectShowDataWraper.IconType.item)then
IconManager:SetItemIcon(self.tb.icon, cpn);
end
cpn:MakePixelPerfect();
local scale = self.tb.scale or EffectShowDataWraper.Default
local cpnWidth = cpn.width*scale
local cpnHeight = cpn.height*scale
if(cpnWidth > EffectShowDataWraper.DefaultWidth or cpnHeight > EffectShowDataWraper.DefaultHeight)then
local orginRatio = EffectShowDataWraper.DefaultWidth / EffectShowDataWraper.DefaultHeight
local textureRatio = cpnWidth / cpnHeight
local wRatio = math.min(orginRatio,textureRatio) == orginRatio
local height = EffectShowDataWraper.DefaultHeight
local width = EffectShowDataWraper.DefaultWidth
if(wRatio)then
height = EffectShowDataWraper.DefaultWidth/textureRatio
else
width = EffectShowDataWraper.DefaultHeight*textureRatio
end
cpn.width = width
cpn.height = height
tempVector3:Set(1,1,1)
obj.transform.localScale = tempVector3
else
tempVector3:Set(1,1,1)
tempVector3:Mul(scale)
obj.transform.localScale = tempVector3
end
end
self.obj = obj
return obj
end
function EffectShowDataWraper:Exit( )
-- body
if(self.cell)then
self.cell:SetData(nil)
end
if(self.obj and self.showType == FloatAwardView.ShowType.ModelType)then
self.obj:Destroy()
elseif(self.obj and self.resPath)then
Game.GOLuaPoolManager:AddToUIPool(self.resPath, self.obj)
elseif(self.obj)then
GameObject.DestroyImmediate(self.obj)
end
self.cell = nil
self.obj = nil
end
function EffectShowDataWraper:clone( )
-- body
local showData = EffectShowDataWraper.new(self.itemData,self.effectPath,self.showType,self.effectFromType)
return showData
end