perf
This commit is contained in:
107
Assets/Scripts/UI/SongSelection/DifficultySelectionButton.cs
Normal file
107
Assets/Scripts/UI/SongSelection/DifficultySelectionButton.cs
Normal file
@@ -0,0 +1,107 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using DG.Tweening;
|
||||
using Sirenix.OdinInspector;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Ichni.Menu.UI
|
||||
{
|
||||
public partial class DifficultySelectionButton : MonoBehaviour
|
||||
{
|
||||
private DifficultySelectionContainer container => MenuManager.instance.songSelectionUIPage.difficultySelectionContainer;
|
||||
|
||||
public Button button;
|
||||
public DifficultyData difficultyData;
|
||||
|
||||
public TMP_Text difficultyValueText;
|
||||
public TMP_Text difficultyNameText;
|
||||
|
||||
public Sprite selectedSprite;
|
||||
public Sprite unselectedSprite;
|
||||
|
||||
[Title("Parts")]
|
||||
public Image background;
|
||||
public Image innerRing;
|
||||
public Image outerRing;
|
||||
public Image star;
|
||||
public Image upperLeftCorner;
|
||||
public Image lowerLeftCorner;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
button.onClick.AddListener(Select);
|
||||
}
|
||||
}
|
||||
|
||||
public partial class DifficultySelectionButton
|
||||
{
|
||||
public void SetUp(DifficultyData difficulty)
|
||||
{
|
||||
this.difficultyData = difficulty;
|
||||
difficultyValueText.text = difficulty.difficultyValue.ToString();
|
||||
difficultyNameText.text = difficulty.GetDifficultyName();
|
||||
}
|
||||
|
||||
private Sequence seq;
|
||||
|
||||
public void Select()
|
||||
{
|
||||
MenuManager.instance.songSelectionUIPage.selectedDifficulty = difficultyData;
|
||||
MenuManager.instance.songSelectionUIPage.songInfoUI.SetCharter(difficultyData.charterName);
|
||||
|
||||
if(container.selectedButton == this) return;
|
||||
|
||||
MenuManager.instance.songSelectionUIPage.difficultySelectionContainer.selectedButton?.Deselect();
|
||||
MenuManager.instance.songSelectionUIPage.difficultySelectionContainer.selectedButton = this;
|
||||
MenuManager.instance.songSelectionUIPage.currentSelectedDifficultyIndex = difficultyData.difficultyIndex;
|
||||
|
||||
seq?.Kill(true);
|
||||
background.sprite = selectedSprite;
|
||||
|
||||
seq = DOTween.Sequence();
|
||||
seq.Append(background.rectTransform.DOAnchorPosX(-7.5f, 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(background.rectTransform.DOSizeDelta(new Vector2(85, 85), 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(background.DOColor(difficultyData.color, 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(innerRing.rectTransform.DOScale(Vector3.one, 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(innerRing.rectTransform.DOLocalRotate(Vector3.zero, 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(outerRing.rectTransform.DOScale(Vector3.one, 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(outerRing.rectTransform.DOLocalRotate(Vector3.zero, 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(star.rectTransform.DOAnchorPosX(-55, 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(star.rectTransform.DOScale(Vector3.one, 0.4f).SetEase(Ease.OutQuart));
|
||||
|
||||
seq.Append(upperLeftCorner.rectTransform.DOScale(Vector3.one, 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(upperLeftCorner.rectTransform.DOAnchorPos(new Vector2(-52, 52), 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(lowerLeftCorner.rectTransform.DOScale(Vector3.one, 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(lowerLeftCorner.rectTransform.DOAnchorPos(new Vector2(-52, -52), 0.4f).SetEase(Ease.OutQuart));
|
||||
|
||||
seq.Play();
|
||||
}
|
||||
|
||||
public void Deselect()
|
||||
{
|
||||
seq?.Kill(true);
|
||||
background.sprite = unselectedSprite;
|
||||
background.color = Color.white;
|
||||
|
||||
seq = DOTween.Sequence();
|
||||
seq.Append(upperLeftCorner.rectTransform.DOScale(Vector3.zero, 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(upperLeftCorner.rectTransform.DOAnchorPos(Vector2.zero,0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(lowerLeftCorner.rectTransform.DOScale(Vector3.zero, 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(lowerLeftCorner.rectTransform.DOAnchorPos(Vector2.zero, 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(background.rectTransform.DOAnchorPosX(0f, 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(background.rectTransform.DOSizeDelta(new Vector2(100, 100), 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(innerRing.rectTransform.DOScale(Vector3.zero, 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(innerRing.rectTransform.DOLocalRotate(new Vector3(0, 0, 180), 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(outerRing.rectTransform.DOScale(Vector3.zero, 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(outerRing.rectTransform.DOLocalRotate(new Vector3(0, 0, -180), 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(star.rectTransform.DOScale(Vector3.zero, 0.4f).SetEase(Ease.OutQuart));
|
||||
seq.Join(star.rectTransform.DOAnchorPosX(0, 0.4f).SetEase(Ease.OutQuart));
|
||||
|
||||
seq.Play();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user