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_80x80: 
 | 
                    return 0.95f; 
 | 
                case ItemCellformat.Format_70x70: 
 | 
                    return 0.83f; 
 | 
                case ItemCellformat.Format_64x64: 
 | 
                    return 0.76f; 
 | 
                default: 
 | 
                    return 1f; 
 | 
            } 
 | 
        } 
 | 
    } 
 |