using System.Collections; using System.Collections.Generic; using DG.Tweening; using Sirenix.OdinInspector; using TMPro; using UnityEngine; using UnityEngine.UI; namespace Ichni.Menu.UI { public partial class SongSelectionTabUI : MonoBehaviour { public SongItemData connectedSong; public TMP_Text songNameText; public Button switchDifficultyButton; public Button previewButton; public string currentDifficultyName; [Title("背景图&选中处理")] public Image backgroundImage; public Sprite unselectedSprite; public Sprite selectedSprite; public void SetUpTab(SongItemData song) { connectedSong = song; songNameText.text = song.songName; currentDifficultyName = song.difficultyDataList[0].difficultyName; switchDifficultyButton.GetComponentInChildren().text = currentDifficultyName + " Lv." + song.difficultyDataList[0].difficultyValue; switchDifficultyButton.GetComponentInChildren().color = song.difficultyDataList[0].color; switchDifficultyButton.onClick.AddListener(() => { int currentIndex = song.difficultyDataList.FindIndex(d => d.difficultyName == currentDifficultyName); int nextIndex = (currentIndex + 1) % song.difficultyDataList.Count; currentDifficultyName = song.difficultyDataList[nextIndex].difficultyName; switchDifficultyButton.GetComponentInChildren().text = currentDifficultyName + " Lv." + song.difficultyDataList[nextIndex].difficultyValue; switchDifficultyButton.GetComponentInChildren().color = song.difficultyDataList[nextIndex].color; }); previewButton.onClick.AddListener(() => { MenuAudioManager.instance.audioContainer.StopEvent("PlayPreview"); MenuAudioManager.instance.audioContainer.SetSwitch(connectedSong.songSwitch); MenuAudioManager.instance.audioContainer.PostEvent("PlayPreview"); }); } } public partial class SongSelectionTabUI { public void SetSelection(bool isSelected) { backgroundImage.sprite = isSelected ? selectedSprite : unselectedSprite; if (isSelected) { GetComponent().DOScale(1.2f, 0.2f).SetEase(Ease.OutQuad).Play(); GetComponent().GetChild(0).GetComponent().DOAnchorPosX(-100, 0.2f).SetEase(Ease.OutQuad).Play(); }else { GetComponent().DOScale(1f, 0.2f).SetEase(Ease.OutQuad).Play(); GetComponent().GetChild(0).GetComponent().DOAnchorPosX(0, 0.2f).SetEase(Ease.OutQuad).Play(); } } } }