using DG.Tweening;  
 | 
using System;  
 | 
using System.Linq;  
 | 
using UnityEngine;  
 | 
using UnityEngine.EventSystems;  
 | 
using UnityEngine.UI;  
 | 
  
 | 
public class FloorItemCell : MonoBehaviour, IPointerClickHandler  
 | 
{  
 | 
  
 | 
    [SerializeField] Image itemImage;  
 | 
    [SerializeField] UIEffectPlayer uieff;  
 | 
    [SerializeField] RectTransform scaleObject;    //配合品质做特效缩放  
 | 
  
 | 
    int itemIndex = -1;  
 | 
    bool isPlaying = false;  
 | 
  
 | 
    Vector2 startPos = new Vector2(10000, 10000); //起始位置,用于重置  
 | 
    /// <summary>  
 | 
    /// 播放掉落物品  
 | 
    /// </summary>  
 | 
    /// <param name="index">掉落背包索引</param>  
 | 
    /// <param name="isAnimate">是否播放掉落动画</param>  
 | 
    public void Display(int index, bool isAnimate, RectTransform rect)  
 | 
    {  
 | 
        itemIndex = index;  
 | 
        float duration = 0.5f / AutoFightModel.Instance.fightSpeed; //掉落时间  
 | 
        var item = PackManager.Instance.GetItemByIndex(PackType.DropItem, index);  
 | 
        if (item == null)  
 | 
        {  
 | 
            this.transform.SetActive(false);  
 | 
            return;  
 | 
        }  
 | 
        itemImage.SetOrgSprite(item.config.IconKey);  
 | 
        int effectID = EquipModel.Instance.equipUIEffectLights[Math.Min(item.config.ItemColor, EquipModel.Instance.equipUIEffectLights.Length) - 1];  
 | 
        if (effectID == 0)  
 | 
        {  
 | 
            uieff.Stop();  
 | 
        }  
 | 
        else  
 | 
        {  
 | 
            uieff.effectId = effectID;  
 | 
            float scale = EquipModel.Instance.dropEffectScales[Math.Min(item.config.ItemColor, EquipModel.Instance.equipUIEffectLights.Length) - 1];  
 | 
            scaleObject.localScale = new Vector3(scale, scale, 1);  
 | 
            uieff.Play();  
 | 
        }  
 | 
  
 | 
         
 | 
        this.transform.position = rect.position;  
 | 
        startPos = new Vector2(transform.localPosition.x + UnityEngine.Random.Range(-30, 30), transform.localPosition.y + UnityEngine.Random.Range(50, 100));  
 | 
        if (isAnimate)  
 | 
        {  
 | 
            isPlaying = true;  
 | 
            //随机方向返回1或者-1  
 | 
            int randDir = UnityEngine.Random.Range(0, 2) == 0 ? 1 : -1;  
 | 
  
 | 
            this.transform.localPosition = startPos;  
 | 
            this.transform.DOLocalPath(new Vector3[] { startPos,  
 | 
                    new Vector3(startPos.x + randDir * 15, startPos.y + 30f, 0),  
 | 
                    new Vector3(startPos.x + randDir * 35, startPos.y + UnityEngine.Random.Range(-140, -130), 0) }, duration, PathType.CatmullRom).SetEase(Ease.InOutSine).OnComplete(CompleteDrop);  
 | 
        }  
 | 
        else  
 | 
        {  
 | 
            this.transform.localPosition = startPos;  
 | 
            // 手动点击或者自动模式下处理  
 | 
            // EquipModel.Instance.CalcFloorEquip(itemIndex);  
 | 
            // itemIndex = -1;  
 | 
        }  
 | 
    }  
 | 
  
 | 
    public void OnPointerClick(PointerEventData eventData)  
 | 
    {  
 | 
        if (!isPlaying)  
 | 
            CompleteDrop();  
 | 
    }  
 | 
  
 | 
    void CompleteDrop()  
 | 
    {  
 | 
        EquipModel.Instance.CalcFloorEquip(itemIndex);  
 | 
        isPlaying = false;  
 | 
        itemIndex = -1;  
 | 
    }  
 | 
  
 | 
    // void OnDisable()  
 | 
    // {  
 | 
    //     CompleteDrop();  
 | 
    // }  
 | 
}  
 | 
  
 | 
  
 | 
  
 |