| | |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using UnityEngine; |
| | | public class ItemBaseEffect : MonoBehaviour |
| | | public class ItemBaseEffect : MonoBehaviour |
| | | { |
| | | [SerializeField] EffectPlayer m_SuitEffect; |
| | | |
| | | int itemId = 0; |
| | | |
| | | private void OnEnable() |
| | | { |
| | | [SerializeField] UIEffect m_SuitEffect; |
| | | |
| | | int itemId = 0; |
| | | Display(itemId); |
| | | } |
| | | |
| | | private void OnEnable() |
| | | public void Display(int itemId, bool dirty = false) |
| | | { |
| | | this.itemId = itemId; |
| | | var curItem = ItemConfig.Get(this.itemId); |
| | | bool isPlay = true; |
| | | if (curItem == null) |
| | | { |
| | | Display(itemId); |
| | | isPlay = false; |
| | | return; |
| | | } |
| | | |
| | | public void Display(int itemId, bool dirty = false) |
| | | int effectId = 0; |
| | | switch (curItem.ItemColor) |
| | | { |
| | | 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)); |
| | | // } |
| | | case 4: |
| | | effectId = 7119; |
| | | break; |
| | | case 5: |
| | | effectId = 7120; |
| | | break; |
| | | case 6: |
| | | case 7: |
| | | case 8: |
| | | effectId = 7121; |
| | | break; |
| | | } |
| | | |
| | | public static ItemBaseEffect Create(RectTransform transform) |
| | | if (curItem.BaseEffectID != 0) |
| | | { |
| | | 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; |
| | | effectId = curItem.BaseEffectID; |
| | | } |
| | | |
| | | static IEnumerator Co_SetOrder(ItemBaseEffect behaviour, RectTransform transform) |
| | | if (m_SuitEffect.effectId != effectId) |
| | | { |
| | | 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(); |
| | | } |
| | | //同一个位置替换特效需要先释放 |
| | | m_SuitEffect.Stop(); |
| | | } |
| | | m_SuitEffect.effectId = effectId; |
| | | |
| | | static float GetEffectScale(ItemCellformat format) |
| | | if (m_SuitEffect.effectId == 0) |
| | | { |
| | | 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; |
| | | } |
| | | 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; |
| | | } |
| | | } |
| | | } |