263 lines
7.0 KiB
C#
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;
|
|
}
|
|
}
|
|
} |