using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
public class ItemBaseEffect : MonoBehaviour
|
{
|
[SerializeField] UIEffect 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.effect != effectId)
|
{
|
//同一个位置替换特效需要先释放
|
m_SuitEffect.StopImediatly();
|
}
|
m_SuitEffect.effect = effectId;
|
|
if (m_SuitEffect.effect == 0)
|
{
|
isPlay = false;
|
}
|
if (isPlay)
|
{
|
m_SuitEffect.Play();
|
}
|
else
|
{
|
m_SuitEffect.StopImediatly();
|
}
|
|
// if (dirty)
|
// {
|
// SnxxzGame.Instance.StartCoroutine(Co_SetOrder(this, transform as RectTransform));
|
// }
|
}
|
|
public static ItemBaseEffect Create(RectTransform transform)
|
{
|
var go = UIUtility.CreateWidget("ItemBaseEffect", "ItemBaseEffect");
|
var behaviour = go.GetComponent<ItemBaseEffect>();
|
|
// SnxxzGame.Instance.StartCoroutine(Co_SetOrder(behaviour, transform));
|
|
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;
|
// }
|
// }
|
// else
|
// {
|
// var findPreciousItemBehaviour = transform.GetComponentInParent<FindPreciousItemBehaviour>();
|
// if (findPreciousItemBehaviour != null)
|
// {
|
// scale = 0.86f; //暂且写死
|
// }
|
// }
|
// }
|
|
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 IEnumerator Co_SetOrder(ItemBaseEffect behaviour, RectTransform transform)
|
{
|
yield return null;
|
|
if (transform == null || behaviour == null)
|
{
|
yield break;
|
}
|
|
Canvas canva = transform.GetComponentInParent<Canvas>();
|
if (canva != null)
|
{
|
behaviour.m_SuitEffect.ResetOrder(canva.sortingOrder + 1);
|
}
|
|
if (behaviour.m_SuitEffect.maskArea == null)
|
{
|
behaviour.m_SuitEffect.SetMask();
|
}
|
}
|
|
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;
|
}
|
}
|
}
|