Files
ft/Client/Assets/Scripts/Capsule/Pack/UIPanel/CapsuleRewardCell.cs
2026-06-29 21:18:33 +08:00

95 lines
3.0 KiB
C#

using System.Threading.Tasks;
using Capsule.Reward;
using DG.Tweening;
using UnityEngine;
namespace Capsule.Pack.UIPanel
{
public class CapsuleRewardCell : AbstractCapsuleRewardCell
{
private GameObject bg1;
private GameObject bg2;
private GameObject bg3;
[SerializeField] private Vector2 startPos;
[SerializeField] private Vector2 endPos;
[SerializeField] private float time;
[SerializeField] private Ease easeCurve;
[SerializeField] private float startAlpha=0;
private Rigidbody2D _rigidbody2D;
public Rigidbody2D Rigidbody2D=>_rigidbody2D??=GetComponent<Rigidbody2D>();
private CanvasGroup _canvasGroup;
private CanvasGroup CanvasGroup=>_canvasGroup??=gameObject.GetOrAddComponent<CanvasGroup>();
private CapsuleCollider2D _collider;
public CapsuleCollider2D Collider=>_collider??=GetComponent<CapsuleCollider2D>();
public RectTransform RectTransform=>(RectTransform)transform;
protected override void Awake()
{
base.Awake();
bg1 = gameObject.FindChildGameObject("bg1");
bg2 = gameObject.FindChildGameObject("bg2");
bg3 = gameObject.FindChildGameObject("bg3");
}
public void Init()
{
if(CanvasGroup)CanvasGroup.alpha=startAlpha;
SetCurrentPosByStartPos();
}
public async Task PlayEnterAni(float capsuleShowTime)
{
RectTransform.DOAnchorPos(endPos, time).SetEase(easeCurve);
if(CanvasGroup)CanvasGroup.DOFadeAlpha(1, time);
await Awaiters.Seconds(capsuleShowTime);
}
public void PlayEnterAni2()
{
Init();
_=PlayEnterAni(0);
}
public override void SetData(ICapsuleReward rewardData)
{
_rewardData = rewardData;
}
public override void ShowUI()
{
SetRewardItem(_rewardData);
SetBackground(_rewardData);
}
protected override void SetBackground(ICapsuleReward rewardData)
{
bg1?.SetActive(rewardData.Quality == 1);
bg2?.SetActive(rewardData.Quality == 2);
bg3?.SetActive(rewardData.Quality == 3);
}
protected override string GetBackgroundSprite(ICapsuleReward reward)
{
return string.Empty;
}
[ContextMenu("SetStartPos")]
private void SetStartPos()
{
startPos = RectTransform.anchoredPosition;
}
[ContextMenu("SetEndPos")]
private void SetEndPos()
{
endPos = RectTransform.anchoredPosition;
}
[ContextMenu("SetCurrentPosByStartPos")]
private void SetCurrentPosByStartPos()
{
RectTransform.anchoredPosition = startPos;
}
[ContextMenu("SetCurrentPosByEndPos")]
private void SetCurrentPosByEndPos()
{
RectTransform.anchoredPosition = endPos;
}
}
}