| 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();  | 
|     // }  | 
| }  | 
|   | 
|   | 
|   |