NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Gameplay/UI/UI_MusicPannelController.cs

263 lines
7.0 KiB
C#

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<UIWindow> 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>("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<Image>(), 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<Sprite>(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<Sprite>(CDBpath);
var CDpath = "Assets/Art/UI/Texture/Icon/MusicBox/Tapes/" + AlbumManager.Instance.AlbumsDic[index].CoverPath + ".png";
Image_CD.sprite = await LoadAssetAsync<Sprite>(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;
}
}
}