using Cysharp.Threading.Tasks; using Gameplay; using PhxhSDK; using System.Threading; using TMPro; using UnityEngine; using Button = UnityEngine.UI.Button; using Image = UnityEngine.UI.Image; public class UI_MusicPannelController : UIWindow { #region UI_Obj //UI GameObj ///Auto Gen Start/// public Image Image_CurrentAlbum; public Image Image_Dd; public Image Image_Rd; public Image Image_Top; public Image Image_Ld; public Image Image_LD; public Image Image_CDbox; public Image Image_CDB; public Image Image_CD; //public Button Button_Back; public Button Button_back; public TMP_Text Text_Back; public Button Button_Home; public Button Button_Left; public Button Button_Right; public Image Image_DBG; public Image Image_RightBg; public Image Image_ChooseBar; public TMP_Text Text_Num_Choose; public TMP_Text Text_MusicName_Choose; public Image Image_Play; public Image Image_Pause; public TMP_Text Text_Author_Choose; public Image Image_NotChoose; public TMP_Text Text_Num_NotChoose; public TMP_Text Text_MusicName_NotChoose; public TMP_Text Text_Author_NotChoose; public Image Image_EmptyH; public Image Image_Heart; public Image Image_PlayBg; public Image Image_DownPoint; public Image Image_Analysis1; public Image Image_Analysis2; public Image Image_Analysis3; public Image Image_Analysis4; public Image Image_Analysis5; public Image Image_Analysis6; public Image Image_Analysis7; public Image Image_Analysis8; public Image Image_Analysis9; public Image Image_Analysis10; public Image Image_Analysis11; public Image Image_Analysis12; public Image Image_Analysis13; public Image Image_Analysis14; public Image Image_Analysis15; public Image Image_Analysis16; public Image Image_MusicRect; public Image Image_Logo; public Image Image_ProcessBg; public Image Image_ProcessNow; public TMP_Text Text_TimeNow; public TMP_Text Text_AllTime; public Image Image_PL; public TMP_Text Text_Play; public Image Image_PA; public TMP_Text Text_Pause; public Image Image_Lbg; public Button Button_Previous; public TMP_Text Text_Previous; public Button Button_PlayAndPause; public TMP_Text Text_PP; public Image Image_circle; public Button Button_Next; public TMP_Text Text_Next; public Image Image_Seperate; public Image Image_Rbg; public Button Button_Seq; public Image Image_CSeq; public TMP_Text Text_Sequence; public Button Button_Shu; public Image Image_CShu; public TMP_Text Text_Shuffle; public Button Button_Rep; public Image Image_CRep; public TMP_Text Text_Repeat; public Button Button_Set; public TMP_Text Text_Set; public Button Button_Lock; public TMP_Text Text_LockButton; public Button Button_Seted; public TMP_Text Text_Seted; public Button Button_UnLock; public TMP_Text Text_Unlock; public TMP_Text Text_Spend; public Image Image_CoinLogo; public Image Image_MusicNameBG; public TMP_Text Text_Name; public TMP_Text Text_Name2; public TMP_Text Text_Lock; ///Auto Gen End/// #endregion PhxhScrollView AlbumPageScrollView; Timer albumTimer = new(); public static async UniTask Open() { CommonUtils.CaptureScreenshot(); return await UIManager.Instance.CreateAndOpenWindow(UINameConst.UI_MusicPanel); } private void _OnClickClose() { CloseWindow(); } // deal with input data public override void PreLoad(object data = null) { } // Use this for initialization public override void OnInit() { //bind UI GameObj UI_MusicPannelBinder.GetComponents(this); AlbumPageScrollView = GetComponent("PhxhScrollView"); BindButton(Button_back, _OnClickClose); if (AudioManager.Instance.IsPlayingAlbum) { DebugUtil.Log("pause music"); AudioManager.Instance.PauseBackgroundMusic(); } BindButton(Button_PlayAndPause, PauseAndResume); var albumID = AlbumManager.Instance.GetCurAlbum(); AlbumPageScrollView.SetItemCountFunc(() => AlbumManager.Instance.AlbumsLst.Count); AlbumPageScrollView.SetUpdateFunc(AlbumPageRefreshFunc); CDPagesImage(AlbumManager.Instance.GetCurAlbum().Id); } //invoke when open window protected override void OnShowWindow(object data = null) { } //invoke when reload window protected override void OnReloadWindow(object data = null) { } //invoke when close window protected override void OnHideWindow() { } //invoke when destroy public override void OnRelease() { base.OnRelease(); if (!AudioManager.Instance.IsPlayingAlbum) { DebugUtil.Log("resume music"); AudioManager.Instance.ResumeBackgroundMusic(); } } #region button_click async void PauseAndResume() { AudioManager.Instance.IsPlayingAlbum = !AudioManager.Instance.IsPlayingAlbum; if (AudioManager.Instance.IsPlayingAlbum) { if (!AudioManager.Instance.PauseAndResumeAlbum(false)) { await AudioManager.Instance.PlayAlbum("NLD_BGM_Album_01_01"); AlbumManager.Instance.curMusicKey = "NLD_BGM_Album_01_01"; albumTimer.Start(Text_TimeNow, Text_AllTime); Text_AllTime.text = AudioManager.Instance.GetAlbumLength().ToString(); } Image_PL.gameObject.SetActive(true); Image_PA.gameObject.SetActive(false); } else { albumTimer.Stop(); AudioManager.Instance.PauseAndResumeAlbum(true); Image_PL.gameObject.SetActive(false); Image_PA.gameObject.SetActive(true); } } #endregion #region album_page_SV void AlbumPageRefreshFunc(int index,RectTransform rt) { SetPageImage(rt.GetComponent(), index); } async void SetPageImage(Image img, int index) { var path = "Assets/Art/UI/Texture/Icon/MusicBox/" + AlbumManager.Instance.AlbumsDic[index].CoverPath + ".png"; var sprite = await LoadAssetAsync(path); img.sprite = sprite; } #endregion async void CDPagesImage(int index) { var CDBpath = "Assets/Art/UI/Texture/Icon/MusicBox/" + AlbumManager.Instance.AlbumsDic[index].CoverPath + "-" + AlbumManager.Instance.AlbumsDic[index].Id + ".png"; Image_CDB.sprite = await LoadAssetAsync(CDBpath); var CDpath = "Assets/Art/UI/Texture/Icon/MusicBox/Tapes/" + AlbumManager.Instance.AlbumsDic[index].CoverPath + ".png"; Image_CD.sprite = await LoadAssetAsync(CDpath); Text_Name.text = AlbumManager.Instance.AlbumsDic[index].Name; } class Timer { TMP_Text timeTxt; bool isPlaying; TMP_Text allTime; async UniTask AudioTimer() { while(isPlaying) { float totalSeconds = AudioManager.Instance.GetAlbumProgress(); int minutes = Mathf.FloorToInt(totalSeconds / 60F); int seconds = Mathf.FloorToInt(totalSeconds - minutes * 60); timeTxt.text = $"{minutes:00}:{seconds:00}"; //allTime.text = AudioManager.Instance.GetAlbumLength().ToString(); await UniTask.Delay(1000); } } public void Start(TMP_Text text,TMP_Text all) { isPlaying = true; timeTxt = text; allTime = all; AudioTimer().Forget(); } public void Stop() { isPlaying = false; } } }