using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
public class ItemBaseEffect : MonoBehaviour
|
{
|
[SerializeField] EffectPlayer m_SuitEffect;
|
|
int itemId = 0;
|
|
private void OnEnable()
|
{
|
Display(itemId);
|
}
|
|
public void Display(int itemId, bool dirty = false)
|
{
|
this.itemId = itemId;
|
var curItem = ItemConfig.Get(this.itemId);
|
bool isPlay = true;
|
if (curItem == null)
|
{
|
isPlay = false;
|
return;
|
}
|
|
int effectId = 0;
|
switch (curItem.ItemColor)
|
{
|
case 4:
|
effectId = 7119;
|
break;
|
case 5:
|
effectId = 7120;
|
break;
|
case 6:
|
case 7:
|
case 8:
|
effectId = 7121;
|
break;
|
}
|
|
if (curItem.BaseEffectID != 0)
|
{
|
effectId = curItem.BaseEffectID;
|
}
|
|
if (m_SuitEffect.effectId != effectId)
|
{
|
//同一个位置替换特效需要先释放
|
m_SuitEffect.Stop();
|
}
|
m_SuitEffect.effectId = effectId;
|
|
if (m_SuitEffect.effectId == 0)
|
{
|
isPlay = false;
|
}
|
if (isPlay)
|
{
|
m_SuitEffect.SetActive(true);
|
}
|
else
|
{
|
m_SuitEffect.SetActive(false);
|
}
|
}
|
|
public static ItemBaseEffect Create(RectTransform transform)
|
{
|
var go = UIUtility.CreateWidget("ItemBaseEffect", "ItemBaseEffect");
|
var behaviour = go.GetComponent<ItemBaseEffect>();
|
|
var scale = 1f;
|
var itemBasic = transform.GetComponentInParent<CommonItemBaisc>();
|
if (itemBasic == null)
|
itemBasic = transform.GetComponentInParent<ItemCell>();
|
if (itemBasic != null)
|
{
|
scale = GetEffectScale(itemBasic.format);
|
}
|
else
|
{
|
var itemBehaviour = transform.GetComponentInParent<ItemBehaviour>();
|
if (itemBehaviour != null)
|
{
|
if (itemBehaviour.backGround != null)
|
{
|
var size = itemBehaviour.backGround.rectTransform.rect.width;
|
scale = size / 84;
|
}
|
}
|
|
}
|
|
var rect = go.transform as RectTransform;
|
go.transform.SetParentEx(transform, Vector3.zero, Quaternion.identity, Vector3.one);
|
rect.MatchWhith(transform);
|
go.transform.localScale = Vector3.one * scale;
|
go.transform.SetAsLastSibling();
|
|
return behaviour;
|
}
|
|
|
static float GetEffectScale(ItemCellformat format)
|
{
|
switch (format)
|
{
|
case ItemCellformat.Format_100x100:
|
return 1.1f;
|
case ItemCellformat.Format_80x80:
|
return 0.95f;
|
case ItemCellformat.Format_70x70:
|
return 0.83f;
|
case ItemCellformat.Format_64x64:
|
return 0.76f;
|
default:
|
return 1f;
|
}
|
}
|
}
|