using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
namespace vnxbqy.UI
|
{
|
public class EquipSuitEffect : 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 isSuitEquip = ItemLogicUtility.Instance.IsSuitEquip(itemId);
|
if (isSuitEquip)
|
{
|
m_SuitEffect.Play();
|
}
|
else
|
{
|
m_SuitEffect.StopImediatly();
|
}
|
|
if (dirty)
|
{
|
SnxxzGame.Instance.StartCoroutine(Co_SetOrder(this, transform as RectTransform));
|
}
|
}
|
|
public static EquipSuitEffect Create(RectTransform transform)
|
{
|
var go = UIUtility.CreateWidget("EquipSuitEffect", "EquipSuitEffect");
|
var behaviour = go.GetComponent<EquipSuitEffect>();
|
|
SnxxzGame.Instance.StartCoroutine(Co_SetOrder(behaviour, transform));
|
|
var scale = 1f;
|
var itemBasic = transform.GetComponentInParent<CommonItemBaisc>();
|
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 IEnumerator Co_SetOrder(EquipSuitEffect 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_80x80:
|
return 0.95f;
|
case ItemCellformat.Format_70x70:
|
return 0.8f;
|
case ItemCellformat.Format_64x64:
|
return 0.75f;
|
default:
|
return 1f;
|
}
|
}
|
}
|
}
|