2024-07-17 14:26:29 +08:00
|
|
|
|
using cfg.ActorCfg;
|
2024-07-05 18:25:44 +08:00
|
|
|
|
using cfg.AudioCfg;
|
2024-07-15 17:07:49 +08:00
|
|
|
|
using CriWare;
|
2024-07-05 18:25:44 +08:00
|
|
|
|
using Cysharp.Threading.Tasks;
|
2024-07-04 16:32:27 +08:00
|
|
|
|
using Framework;
|
|
|
|
|
|
using PhxhSDK;
|
2024-08-05 19:51:12 +08:00
|
|
|
|
using System;
|
2024-07-04 16:32:27 +08:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
|
|
|
|
|
|
public class AlbumManager : Singlenton<AlbumManager>
|
|
|
|
|
|
{
|
|
|
|
|
|
public enum PlayMode
|
|
|
|
|
|
{
|
|
|
|
|
|
Order,
|
|
|
|
|
|
Random,
|
|
|
|
|
|
Single
|
|
|
|
|
|
}
|
|
|
|
|
|
public PlayMode CurPlayMode => curPlayMode;
|
|
|
|
|
|
public string curMusicKey;
|
2024-10-25 14:15:22 +08:00
|
|
|
|
public Timer playTimer = new();
|
2024-10-17 16:24:24 +08:00
|
|
|
|
public AudioInst bgmAudio
|
|
|
|
|
|
{
|
|
|
|
|
|
get;
|
|
|
|
|
|
private set;
|
|
|
|
|
|
}
|
2024-10-25 14:15:22 +08:00
|
|
|
|
public Dictionary<int, DataAlbum> AlbumsDic => albumDic;
|
|
|
|
|
|
public List<DataAlbum> AlbumsLst => albumList;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private PlayMode curPlayMode = PlayMode.Order;
|
|
|
|
|
|
private int curOrderIndex = 0;
|
|
|
|
|
|
private bool initialized = false;
|
|
|
|
|
|
public readonly bool loadFromLocal = true;
|
|
|
|
|
|
|
|
|
|
|
|
private AlbumLocalData _saveData;
|
|
|
|
|
|
private Dictionary<int, DataAlbum> albumDic = new Dictionary<int, DataAlbum>();
|
|
|
|
|
|
private List<int> playOrderList = new();
|
|
|
|
|
|
private List<DataAlbum> albumList = new List<DataAlbum>();
|
2024-07-04 16:32:27 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void loadOrInit()
|
|
|
|
|
|
{
|
|
|
|
|
|
if(!initialized)
|
|
|
|
|
|
{
|
|
|
|
|
|
Init();
|
|
|
|
|
|
initialized = true;
|
2024-07-05 18:25:44 +08:00
|
|
|
|
playTimer.onPlayEnd += NextAudio;
|
2024-07-04 16:32:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
public void Init()
|
|
|
|
|
|
{
|
|
|
|
|
|
albumDic.Clear();
|
|
|
|
|
|
var albumCfg = TableManager.Instance.Tables.AlbumConfig;
|
|
|
|
|
|
foreach (var item in albumCfg.DataList)
|
|
|
|
|
|
{
|
|
|
|
|
|
albumDic.Add(item.Id, item);
|
|
|
|
|
|
albumList.Add(item);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (loadFromLocal)
|
|
|
|
|
|
{
|
|
|
|
|
|
_saveData = StorageMgr.Instance.GetStorage<AlbumLocalData>("ALBUM_LOCAL_DATA");
|
|
|
|
|
|
if (_saveData == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
_saveData = new AlbumLocalData();
|
|
|
|
|
|
}
|
2024-07-09 16:56:40 +08:00
|
|
|
|
|
2024-07-04 16:32:27 +08:00
|
|
|
|
curPlayMode = (PlayMode)_saveData.curOrderMode;
|
|
|
|
|
|
SetPlayMode(curPlayMode);
|
2024-07-05 18:25:44 +08:00
|
|
|
|
SetPlayList();
|
2024-10-25 14:15:22 +08:00
|
|
|
|
var curAudio = CurPlayingAudioName();
|
2024-07-04 16:32:27 +08:00
|
|
|
|
if (curAudio != null)
|
|
|
|
|
|
{
|
2024-10-25 14:15:22 +08:00
|
|
|
|
curMusicKey = curAudio;
|
2024-08-20 16:22:25 +08:00
|
|
|
|
DebugUtil.Log("CurAudio: " + curAudio);
|
2024-07-04 16:32:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
DebugUtil.LogError("CurAudio is null");
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2024-07-17 13:59:24 +08:00
|
|
|
|
//TODO 服务器逻辑
|
2024-07-04 16:32:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void Release()
|
|
|
|
|
|
{
|
|
|
|
|
|
albumDic.Clear();
|
|
|
|
|
|
albumList.Clear();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public bool AlbumUnlocked(int albumId)
|
|
|
|
|
|
{
|
|
|
|
|
|
loadOrInit();
|
|
|
|
|
|
if(albumDic.ContainsKey(albumId))
|
|
|
|
|
|
{
|
2024-07-17 13:59:24 +08:00
|
|
|
|
if (albumDic[albumId].DefaultUnlock)//默认解锁专辑
|
2024-07-04 16:32:27 +08:00
|
|
|
|
{
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
int itemID = albumDic[albumId].ItemID;
|
|
|
|
|
|
if (CategoryManager.Instance.GetItemCount(itemID) > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
//int ItemID=
|
|
|
|
|
|
DebugUtil.LogError(albumId + " not found in album config");
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-07-05 18:25:44 +08:00
|
|
|
|
public List<cfg.item.ItemCounts> AlbumUnlockCost(int albumId)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (albumDic.ContainsKey(albumId))
|
|
|
|
|
|
{
|
|
|
|
|
|
return albumDic[albumId].CostItems;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
DebugUtil.LogError(albumId + " not found in album config");
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-07-09 15:25:28 +08:00
|
|
|
|
/// <summary>
|
2024-07-17 13:59:24 +08:00
|
|
|
|
/// 当前专辑配置
|
2024-07-09 15:25:28 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
2024-07-04 16:32:27 +08:00
|
|
|
|
public DataAlbum GetCurAlbum()
|
|
|
|
|
|
{
|
|
|
|
|
|
loadOrInit();
|
|
|
|
|
|
if (loadFromLocal)
|
|
|
|
|
|
{
|
2024-07-09 15:25:28 +08:00
|
|
|
|
loadSaveData();
|
2024-07-15 17:15:21 +08:00
|
|
|
|
return albumDic[_saveData.curAlbumId];
|
2024-07-04 16:32:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2024-07-17 13:59:24 +08:00
|
|
|
|
DebugUtil.Log("服务器读取");
|
2024-07-04 16:32:27 +08:00
|
|
|
|
return null;
|
2024-07-17 13:59:24 +08:00
|
|
|
|
//TODO 服务器逻辑
|
2024-07-04 16:32:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-07-09 15:25:28 +08:00
|
|
|
|
/// <summary>
|
2024-07-17 13:59:24 +08:00
|
|
|
|
/// 获取当前播放的音乐在专辑中序号
|
2024-07-09 15:25:28 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
2024-07-04 16:32:27 +08:00
|
|
|
|
public int GetCurAudioIndex()
|
|
|
|
|
|
{
|
|
|
|
|
|
loadOrInit();
|
2024-07-09 15:25:28 +08:00
|
|
|
|
loadSaveData();
|
2024-07-04 16:32:27 +08:00
|
|
|
|
return _saveData.curPlayAudioIndex;
|
|
|
|
|
|
}
|
2024-07-09 15:25:28 +08:00
|
|
|
|
/// <summary>
|
2024-07-17 13:59:24 +08:00
|
|
|
|
/// 设置当前播放的专辑
|
2024-07-09 15:25:28 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="albumId"></param>
|
|
|
|
|
|
/// <param name="audioIndex"></param>
|
2024-07-04 16:32:27 +08:00
|
|
|
|
public void SetCurAlbum(int albumId, int audioIndex)
|
|
|
|
|
|
{
|
|
|
|
|
|
loadOrInit();
|
|
|
|
|
|
if (albumDic.ContainsKey(albumId))
|
|
|
|
|
|
{
|
2024-07-09 15:25:28 +08:00
|
|
|
|
loadSaveData();
|
2024-07-04 16:32:27 +08:00
|
|
|
|
_saveData.curAlbumId = albumId;
|
|
|
|
|
|
_saveData.curPlayAudioIndex = audioIndex;
|
2024-07-12 14:23:06 +08:00
|
|
|
|
if (albumId == _saveData.themeAlbumID)
|
|
|
|
|
|
{
|
|
|
|
|
|
_saveData.themeAlbumAudioIndex = audioIndex;
|
|
|
|
|
|
}
|
2024-07-04 16:32:27 +08:00
|
|
|
|
StorageMgr.Instance.SyncForce = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
DebugUtil.LogError(albumId + " not found in album config");
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-07-09 15:25:28 +08:00
|
|
|
|
/// <summary>
|
2024-07-17 13:59:24 +08:00
|
|
|
|
/// 作为bgm播放的主题专辑
|
2024-07-09 15:25:28 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
2024-07-08 19:25:45 +08:00
|
|
|
|
public int GetCurThemeAlbum()
|
|
|
|
|
|
{
|
|
|
|
|
|
loadOrInit();
|
2024-07-09 15:25:28 +08:00
|
|
|
|
loadSaveData();
|
2024-07-08 19:25:45 +08:00
|
|
|
|
return _saveData.themeAlbumID;
|
|
|
|
|
|
}
|
2024-07-12 14:23:06 +08:00
|
|
|
|
public int GetCurThemeAudioIndex()
|
|
|
|
|
|
{
|
|
|
|
|
|
loadOrInit();
|
|
|
|
|
|
loadSaveData();
|
|
|
|
|
|
return _saveData.themeAlbumAudioIndex;
|
|
|
|
|
|
}
|
2024-07-08 19:25:45 +08:00
|
|
|
|
public void SetCurThemeAlbum(int albumId)
|
|
|
|
|
|
{
|
|
|
|
|
|
loadOrInit();
|
2024-07-09 15:25:28 +08:00
|
|
|
|
loadSaveData();
|
2024-07-08 19:25:45 +08:00
|
|
|
|
if (albumDic.ContainsKey(albumId))
|
|
|
|
|
|
{
|
|
|
|
|
|
_saveData.themeAlbumID = albumId;
|
2024-07-12 14:23:06 +08:00
|
|
|
|
if(albumId == _saveData.curAlbumId)
|
|
|
|
|
|
{
|
|
|
|
|
|
_saveData.themeAlbumAudioIndex = _saveData.curPlayAudioIndex;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
_saveData.themeAlbumAudioIndex = 0;
|
|
|
|
|
|
}
|
2024-07-08 19:25:45 +08:00
|
|
|
|
}
|
2024-07-17 13:59:24 +08:00
|
|
|
|
else//取消主题专辑
|
2024-07-08 19:25:45 +08:00
|
|
|
|
{
|
|
|
|
|
|
_saveData.themeAlbumID = 0;
|
2024-07-12 14:23:06 +08:00
|
|
|
|
_saveData.themeAlbumAudioIndex = 0;
|
2024-07-08 19:25:45 +08:00
|
|
|
|
}
|
|
|
|
|
|
StorageMgr.Instance.SyncForce = true;
|
|
|
|
|
|
}
|
2024-07-04 16:32:27 +08:00
|
|
|
|
|
2024-08-05 19:51:12 +08:00
|
|
|
|
public Type GetPlayListContentType(int albumID)
|
|
|
|
|
|
{
|
|
|
|
|
|
var content = albumDic[albumID].PlayList;
|
|
|
|
|
|
return content.GetType();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-07-04 16:32:27 +08:00
|
|
|
|
/// <summary>
|
2024-07-17 13:59:24 +08:00
|
|
|
|
/// 专辑内容列表
|
2024-07-04 16:32:27 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
2024-08-05 19:51:12 +08:00
|
|
|
|
public List<int> AlbumPlayListOld(int albumID)
|
2024-07-04 16:32:27 +08:00
|
|
|
|
{
|
2024-08-05 19:51:12 +08:00
|
|
|
|
DebugUtil.LogWarning("已过时的方法,请使用返回内容为string的方法");
|
2024-07-04 16:32:27 +08:00
|
|
|
|
if(albumDic.ContainsKey(albumID))
|
|
|
|
|
|
{
|
2024-08-09 14:30:52 +08:00
|
|
|
|
return null;//albumDic[albumID].PlayList.ToList();
|
2024-07-04 16:32:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
DebugUtil.LogError(albumID + " not found in album config");
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-08-05 19:51:12 +08:00
|
|
|
|
public List<string> AlbumPlayList(int albumID)
|
|
|
|
|
|
{
|
|
|
|
|
|
List<string> CueNameLst = new();
|
|
|
|
|
|
if (albumDic.ContainsKey(albumID))
|
|
|
|
|
|
{
|
|
|
|
|
|
var playList = albumDic[albumID].PlayList;
|
2024-07-04 16:32:27 +08:00
|
|
|
|
|
2024-08-05 19:51:12 +08:00
|
|
|
|
foreach (var item in playList)
|
|
|
|
|
|
{
|
|
|
|
|
|
CueNameLst.Add(item.ToString());
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return CueNameLst;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public List<string> CurAlbumPlayList()
|
2024-07-04 16:32:27 +08:00
|
|
|
|
{
|
2024-07-09 15:25:28 +08:00
|
|
|
|
loadSaveData();
|
2024-07-04 16:32:27 +08:00
|
|
|
|
return AlbumPlayList(_saveData.curAlbumId);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-08-20 16:22:25 +08:00
|
|
|
|
public string CurPlayingAudioName()
|
2024-07-04 16:32:27 +08:00
|
|
|
|
{
|
2024-07-09 15:25:28 +08:00
|
|
|
|
loadSaveData();
|
2024-08-20 16:22:25 +08:00
|
|
|
|
var playList = CurAlbumPlayList();
|
2024-07-04 16:32:27 +08:00
|
|
|
|
if (playList != null && playList.Count > 0)
|
|
|
|
|
|
{
|
2024-08-20 16:22:25 +08:00
|
|
|
|
return playList[_saveData.curPlayAudioIndex];
|
2024-07-04 16:32:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
return null;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-08-20 16:22:25 +08:00
|
|
|
|
|
2024-07-04 16:32:27 +08:00
|
|
|
|
public int CurPlayAudioIndex()
|
|
|
|
|
|
{
|
2024-07-09 15:25:28 +08:00
|
|
|
|
loadSaveData();
|
2024-07-04 16:32:27 +08:00
|
|
|
|
return _saveData.curPlayAudioIndex;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void SetPlayMode(PlayMode mode)
|
|
|
|
|
|
{
|
|
|
|
|
|
curPlayMode = mode;
|
2024-07-11 15:57:17 +08:00
|
|
|
|
loadSaveData();
|
|
|
|
|
|
_saveData.curOrderMode = (int)mode;
|
|
|
|
|
|
StorageMgr.Instance.SyncForce = true;
|
2024-07-05 18:25:44 +08:00
|
|
|
|
SetPlayList();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void SetPlayList()
|
|
|
|
|
|
{
|
2024-07-04 16:32:27 +08:00
|
|
|
|
playOrderList.Clear();
|
2024-07-09 15:25:28 +08:00
|
|
|
|
loadSaveData();
|
2024-08-05 19:51:12 +08:00
|
|
|
|
if (GetPlayListContentType(_saveData.curAlbumId) == typeof(int[]))//过时方法
|
2024-07-04 16:32:27 +08:00
|
|
|
|
{
|
2024-08-05 19:51:12 +08:00
|
|
|
|
for (int i = 0; i < AlbumPlayListOld(_saveData.curAlbumId).Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
playOrderList.Add(i);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < AlbumPlayList(_saveData.curAlbumId).Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
playOrderList.Add(i);
|
|
|
|
|
|
}
|
2024-07-04 16:32:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2024-08-05 19:51:12 +08:00
|
|
|
|
|
2024-07-05 18:25:44 +08:00
|
|
|
|
switch (curPlayMode)
|
2024-07-04 16:32:27 +08:00
|
|
|
|
{
|
|
|
|
|
|
case PlayMode.Order:
|
|
|
|
|
|
break;
|
|
|
|
|
|
case PlayMode.Random:
|
2024-07-09 15:25:28 +08:00
|
|
|
|
ShuffleOderLst(playOrderList);
|
|
|
|
|
|
for (int i = 0; i < playOrderList.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (playOrderList[i] == _saveData.curPlayAudioIndex)
|
|
|
|
|
|
{
|
|
|
|
|
|
playOrderList.RemoveAt(i);
|
|
|
|
|
|
playOrderList.Insert(0, _saveData.curPlayAudioIndex);
|
|
|
|
|
|
curOrderIndex = 0;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-07-04 16:32:27 +08:00
|
|
|
|
break;
|
|
|
|
|
|
case PlayMode.Single:
|
|
|
|
|
|
int curIndex = _saveData.curPlayAudioIndex;
|
|
|
|
|
|
for (int i = 0; i < playOrderList.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
playOrderList[i] = curIndex;
|
|
|
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
|
|
|
default:
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < playOrderList.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (playOrderList[i] == _saveData.curPlayAudioIndex)
|
|
|
|
|
|
{
|
|
|
|
|
|
curOrderIndex = i;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-08-05 19:51:12 +08:00
|
|
|
|
public bool CheckIsFavor(string audioID)
|
2024-07-09 15:04:35 +08:00
|
|
|
|
{
|
2024-07-09 15:25:28 +08:00
|
|
|
|
loadSaveData();
|
2024-07-09 15:04:35 +08:00
|
|
|
|
return _saveData.FavorAudioLst.Contains(audioID);
|
|
|
|
|
|
}
|
2024-08-05 19:51:12 +08:00
|
|
|
|
public void AddFavorAudio(string audio)
|
2024-07-09 15:04:35 +08:00
|
|
|
|
{
|
2024-07-09 15:25:28 +08:00
|
|
|
|
loadSaveData();
|
2024-07-09 15:04:35 +08:00
|
|
|
|
if (!_saveData.FavorAudioLst.Contains(audio))
|
|
|
|
|
|
{
|
|
|
|
|
|
_saveData.FavorAudioLst.Add(audio);
|
|
|
|
|
|
StorageMgr.Instance.SyncForce = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-08-05 19:51:12 +08:00
|
|
|
|
public void RemoveFavorAudio(string audio)
|
2024-07-09 15:04:35 +08:00
|
|
|
|
{
|
2024-07-09 15:25:28 +08:00
|
|
|
|
loadSaveData();
|
2024-07-09 15:04:35 +08:00
|
|
|
|
if (_saveData.FavorAudioLst.Contains(audio))
|
|
|
|
|
|
{
|
|
|
|
|
|
_saveData.FavorAudioLst.Remove(audio);
|
|
|
|
|
|
StorageMgr.Instance.SyncForce = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-07-09 15:25:28 +08:00
|
|
|
|
void ShuffleOderLst(List<int> ts)
|
2024-07-05 18:25:44 +08:00
|
|
|
|
{
|
2024-07-09 15:25:28 +08:00
|
|
|
|
int favoriteIndex = 0;
|
2024-07-05 18:25:44 +08:00
|
|
|
|
for (int i = 0; i < ts.Count; i++)
|
2024-07-09 15:25:28 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (CheckIsFavor(AlbumPlayList(_saveData.curAlbumId)[i]))
|
|
|
|
|
|
{
|
|
|
|
|
|
(ts[favoriteIndex], ts[i]) = (ts[i], ts[favoriteIndex]);
|
|
|
|
|
|
favoriteIndex++;
|
|
|
|
|
|
}
|
2024-07-17 13:59:24 +08:00
|
|
|
|
}//将喜欢的音频放在前面
|
2024-07-09 15:25:28 +08:00
|
|
|
|
for (int i = 0; i < favoriteIndex; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
int randomIndex = UnityEngine.Random.Range(i, favoriteIndex);
|
|
|
|
|
|
(ts[randomIndex], ts[i]) = (ts[i], ts[randomIndex]);
|
2024-07-17 13:59:24 +08:00
|
|
|
|
}//将喜欢的音频打乱
|
2024-07-09 15:25:28 +08:00
|
|
|
|
for (int i = favoriteIndex; i < ts.Count; i++)
|
2024-07-05 18:25:44 +08:00
|
|
|
|
{
|
|
|
|
|
|
int randomIndex = UnityEngine.Random.Range(i, ts.Count);
|
|
|
|
|
|
(ts[randomIndex], ts[i]) = (ts[i], ts[randomIndex]);
|
2024-07-17 13:59:24 +08:00
|
|
|
|
}//将后半部分打乱
|
2024-07-05 18:25:44 +08:00
|
|
|
|
}
|
2024-07-04 16:32:27 +08:00
|
|
|
|
|
2024-07-11 13:46:58 +08:00
|
|
|
|
/// <summary>
|
2024-07-17 13:59:24 +08:00
|
|
|
|
/// 以专辑逻辑播放音频,将由相关播放逻辑控制曲目的顺序
|
2024-07-11 13:46:58 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="albumID"></param>
|
|
|
|
|
|
/// <param name="audioIndex"></param>
|
2024-07-04 16:32:27 +08:00
|
|
|
|
public async void PlayAlbumAudio(int albumID, int audioIndex)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (albumDic.ContainsKey(albumID))
|
|
|
|
|
|
{
|
2024-08-05 19:51:12 +08:00
|
|
|
|
float totalSeconds;
|
|
|
|
|
|
if (GetPlayListContentType(albumID) == typeof(int[]))//过时方法
|
2024-07-04 16:32:27 +08:00
|
|
|
|
{
|
2024-08-05 19:51:12 +08:00
|
|
|
|
var playList = AlbumPlayListOld(albumID);
|
|
|
|
|
|
if (playList == null || playList.Count <= 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
DebugUtil.LogError("PlayList is empty");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
2024-07-04 16:32:27 +08:00
|
|
|
|
if (audioIndex >= playList.Count)
|
|
|
|
|
|
{
|
|
|
|
|
|
audioIndex = 0;
|
|
|
|
|
|
}
|
2024-07-22 19:35:34 +08:00
|
|
|
|
await AudioManager.Instance.PlayAudioOld(playList[audioIndex]);
|
2024-07-04 16:32:27 +08:00
|
|
|
|
curMusicKey = TableManager.Instance.Tables.Audios.GetByID(playList[audioIndex]).Key;
|
2024-08-05 19:51:12 +08:00
|
|
|
|
totalSeconds = AlbumManager.Instance.GetAlbumLength(playList[audioIndex]);
|
2024-07-04 16:32:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2024-08-05 19:51:12 +08:00
|
|
|
|
var playList = AlbumPlayList(albumID);
|
|
|
|
|
|
if(playList == null || playList.Count <= 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
DebugUtil.LogError("PlayList is empty");
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
if(audioIndex >= playList.Count)
|
|
|
|
|
|
{
|
|
|
|
|
|
audioIndex = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
var name = playList[audioIndex];
|
2024-10-17 16:24:24 +08:00
|
|
|
|
var id = AudioManager.Instance.PlayAudio(name, AudioCriManager.EPlayType.Music, null, true);
|
|
|
|
|
|
bgmAudio = AudioManager.Instance.GetAudioByID(AudioCriManager.EPlayType.Music, id);
|
2024-10-17 18:38:07 +08:00
|
|
|
|
AudioManager.Instance.IsPlayingAlbum = true;
|
2024-08-05 19:51:12 +08:00
|
|
|
|
curMusicKey = name;
|
|
|
|
|
|
totalSeconds = AlbumManager.Instance.GetAlbumLength(name);
|
2024-07-04 16:32:27 +08:00
|
|
|
|
}
|
2024-08-05 19:51:12 +08:00
|
|
|
|
|
|
|
|
|
|
SetCurAlbum(albumID, audioIndex);
|
|
|
|
|
|
playTimer.Start(totalSeconds);
|
2024-07-04 16:32:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
DebugUtil.LogError(albumID + " not found in album config");
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
public void PlayPreAudio()
|
|
|
|
|
|
{
|
2024-10-24 15:50:02 +08:00
|
|
|
|
var playList = CurAlbumPlayList();
|
2024-07-04 16:32:27 +08:00
|
|
|
|
if (playList != null && playList.Count > 0)
|
2024-07-05 18:25:44 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (curPlayMode == PlayMode.Single)
|
|
|
|
|
|
{
|
|
|
|
|
|
curOrderIndex = _saveData.curPlayAudioIndex;
|
|
|
|
|
|
}
|
2024-07-04 16:32:27 +08:00
|
|
|
|
curOrderIndex--;
|
|
|
|
|
|
if (curOrderIndex < 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
curOrderIndex = playList.Count - 1;
|
|
|
|
|
|
}
|
2024-07-05 18:25:44 +08:00
|
|
|
|
if (curPlayMode == PlayMode.Single)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < playOrderList.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
playOrderList[i] = curOrderIndex;
|
|
|
|
|
|
}
|
|
|
|
|
|
curOrderIndex = 0;
|
|
|
|
|
|
}
|
2024-07-04 16:32:27 +08:00
|
|
|
|
|
|
|
|
|
|
PlayAlbumAudio(GetCurAlbum().Id, playOrderList[curOrderIndex]);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-07-17 13:59:24 +08:00
|
|
|
|
#region 播放时长相关
|
2024-07-15 17:07:49 +08:00
|
|
|
|
/// <summary>
|
2024-07-17 13:59:24 +08:00
|
|
|
|
/// 当前单曲播放进度
|
2024-07-15 17:07:49 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public float GetAlbumProgress()//_albumAudio
|
|
|
|
|
|
{
|
2024-10-17 16:24:24 +08:00
|
|
|
|
//bgmAudio = AudioManager.Instance.AudioMgrObj.BgmAudio;
|
|
|
|
|
|
if (bgmAudio != null)
|
2024-07-15 17:07:49 +08:00
|
|
|
|
{
|
2024-10-17 16:24:24 +08:00
|
|
|
|
if (bgmAudio.CriAtomExPlayback.GetTime() < 0)
|
2024-07-15 17:07:49 +08:00
|
|
|
|
{
|
2024-10-30 16:04:30 +08:00
|
|
|
|
DebugUtil.Log($"指定音频播放长度获取值为{bgmAudio.CriAtomExPlayback.GetTime()},可能音频源已被删除或播放了不存在的音频");
|
2024-07-15 17:07:49 +08:00
|
|
|
|
}
|
2024-10-17 16:24:24 +08:00
|
|
|
|
return bgmAudio.CriAtomExPlayback.GetTime() / 1000f;
|
2024-07-15 17:07:49 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2024-07-17 13:59:24 +08:00
|
|
|
|
DebugUtil.Log("没有专辑音乐在播放!!!");
|
2024-07-15 17:07:49 +08:00
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2024-07-17 13:59:24 +08:00
|
|
|
|
/// 单曲时长
|
2024-07-15 17:07:49 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public float GetAlbumLength(string key)
|
|
|
|
|
|
{
|
2024-10-17 16:24:24 +08:00
|
|
|
|
//bgmAudio = AudioManager.Instance.AudioMgrObj.BgmAudio;
|
2024-07-15 17:07:49 +08:00
|
|
|
|
|
2024-10-17 16:24:24 +08:00
|
|
|
|
if (bgmAudio != null)
|
2024-07-15 17:07:49 +08:00
|
|
|
|
{
|
2024-10-17 16:24:24 +08:00
|
|
|
|
var cueSheetName = bgmAudio.GetCueSheetName();
|
2024-07-15 17:07:49 +08:00
|
|
|
|
|
2024-08-09 14:30:52 +08:00
|
|
|
|
try
|
2024-07-15 17:07:49 +08:00
|
|
|
|
{
|
2024-10-12 15:10:34 +08:00
|
|
|
|
if (AudioManager.Instance.GetAcb(cueSheetName).GetCueInfo(key, out CriAtomEx.CueInfo info))
|
2024-07-15 17:07:49 +08:00
|
|
|
|
{
|
2024-08-09 14:30:52 +08:00
|
|
|
|
if (info.length <= 0)
|
2024-07-15 17:07:49 +08:00
|
|
|
|
{
|
2024-08-09 14:30:52 +08:00
|
|
|
|
DebugUtil.LogWarning("专辑音乐长度非正数,正在尝试读取配置");
|
2024-07-15 17:07:49 +08:00
|
|
|
|
}
|
2024-08-09 14:30:52 +08:00
|
|
|
|
return info.length / 1000f;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
DebugUtil.LogError("==== 获取专辑音乐长度失败!!!");
|
|
|
|
|
|
return 0;
|
2024-07-15 17:07:49 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-08-09 14:30:52 +08:00
|
|
|
|
catch
|
2024-07-15 17:07:49 +08:00
|
|
|
|
{
|
2024-08-09 14:30:52 +08:00
|
|
|
|
DebugUtil.LogError("获取专辑音乐长度异常!!!");
|
2024-07-15 17:07:49 +08:00
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
2024-08-09 14:30:52 +08:00
|
|
|
|
|
2024-07-15 17:07:49 +08:00
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2024-07-17 13:59:24 +08:00
|
|
|
|
DebugUtil.Log(key + "没有专辑音乐在播放!!!");
|
2024-07-15 17:07:49 +08:00
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public float GetAlbumLength(int ID)
|
|
|
|
|
|
{
|
2024-10-17 16:24:24 +08:00
|
|
|
|
//bgmAudio = AudioManager.Instance.AudioMgrObj.BgmAudio;
|
2024-07-15 17:07:49 +08:00
|
|
|
|
|
2024-10-17 16:24:24 +08:00
|
|
|
|
if (bgmAudio != null)
|
2024-07-15 17:07:49 +08:00
|
|
|
|
{
|
|
|
|
|
|
DataAudio audioData;
|
|
|
|
|
|
audioData = TableManager.Instance.Tables.Audios.GetByID(ID);
|
|
|
|
|
|
if (audioData == null)
|
|
|
|
|
|
{
|
2024-07-17 13:59:24 +08:00
|
|
|
|
DebugUtil.LogError("==== 播放的音频不存在!!!音频Key: {0}", ID);
|
2024-07-15 17:07:49 +08:00
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
2024-10-17 16:24:24 +08:00
|
|
|
|
var cueSheetName = bgmAudio.GetCueSheetName();
|
2024-07-22 19:35:34 +08:00
|
|
|
|
if (AudioManager.Instance.GetAcb(cueSheetName).GetCueInfo(audioData.CueID, out CriAtomEx.CueInfo info))
|
2024-07-15 17:07:49 +08:00
|
|
|
|
{
|
|
|
|
|
|
DebugUtil.Log("cue name: " + info.name);
|
|
|
|
|
|
if (info.length <= 0)
|
|
|
|
|
|
{
|
2024-07-17 13:59:24 +08:00
|
|
|
|
DebugUtil.LogWarning("专辑音乐长度非正数,尝试读取配置");
|
2024-07-15 17:07:49 +08:00
|
|
|
|
var len = audioData.Length;
|
|
|
|
|
|
if (len > 0)
|
|
|
|
|
|
{
|
2024-07-17 13:59:24 +08:00
|
|
|
|
DebugUtil.Log("获取音频长度成功!!!" + len);
|
2024-07-15 17:07:49 +08:00
|
|
|
|
return len;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2024-07-17 13:59:24 +08:00
|
|
|
|
DebugUtil.LogError("专辑音乐长度配置错误,音频ID:" + ID);
|
2024-07-15 17:07:49 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
return info.length / 1000f;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2024-07-17 13:59:24 +08:00
|
|
|
|
DebugUtil.LogError("==== 获取专辑音乐长度失败!!!");
|
2024-07-15 17:07:49 +08:00
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
return 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
2024-07-15 17:15:21 +08:00
|
|
|
|
/// <summary>
|
2024-07-17 13:59:24 +08:00
|
|
|
|
/// 尝试设置播放状态
|
2024-07-15 17:15:21 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
/// <param name="pause"></param>
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
|
public bool PauseAndResumeAlbum(bool pause)
|
|
|
|
|
|
{
|
2024-10-17 16:24:24 +08:00
|
|
|
|
//bgmAudio = AudioManager.Instance.AudioMgrObj.BgmAudio;
|
2024-07-15 17:15:21 +08:00
|
|
|
|
|
|
|
|
|
|
if (pause)
|
|
|
|
|
|
{
|
2024-10-17 16:24:24 +08:00
|
|
|
|
bgmAudio?.Pause();
|
2024-10-25 14:15:22 +08:00
|
|
|
|
playTimer.Stop();
|
2024-07-15 17:15:21 +08:00
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
2024-10-17 16:24:24 +08:00
|
|
|
|
if (bgmAudio != null && bgmAudio.IsPaused)
|
2024-07-15 17:15:21 +08:00
|
|
|
|
{
|
2024-10-17 16:24:24 +08:00
|
|
|
|
bgmAudio.Resume();
|
2024-10-25 14:15:22 +08:00
|
|
|
|
playTimer.Start();
|
2024-07-15 17:15:21 +08:00
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
else
|
|
|
|
|
|
{
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-07-04 16:32:27 +08:00
|
|
|
|
public void PlayNextAudio()
|
|
|
|
|
|
{
|
2024-10-24 15:50:02 +08:00
|
|
|
|
var playList = CurAlbumPlayList();
|
2024-07-04 16:32:27 +08:00
|
|
|
|
if (playList != null && playList.Count > 0)
|
2024-07-05 18:25:44 +08:00
|
|
|
|
{
|
|
|
|
|
|
if (curPlayMode == PlayMode.Single)
|
|
|
|
|
|
{
|
|
|
|
|
|
curOrderIndex = _saveData.curPlayAudioIndex;
|
|
|
|
|
|
}
|
|
|
|
|
|
curOrderIndex++;
|
|
|
|
|
|
if (curOrderIndex >= playList.Count)
|
|
|
|
|
|
{
|
|
|
|
|
|
curOrderIndex = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (curPlayMode == PlayMode.Single)
|
|
|
|
|
|
{
|
|
|
|
|
|
for (int i = 0; i < playOrderList.Count; i++)
|
|
|
|
|
|
{
|
|
|
|
|
|
playOrderList[i] = curOrderIndex;
|
|
|
|
|
|
}
|
|
|
|
|
|
curOrderIndex = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
PlayAlbumAudio(GetCurAlbum().Id, playOrderList[curOrderIndex]);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
2024-07-17 13:59:24 +08:00
|
|
|
|
/// 播放完成回调
|
2024-07-05 18:25:44 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
public void NextAudio()
|
|
|
|
|
|
{
|
2024-10-25 14:15:22 +08:00
|
|
|
|
var playList = CurAlbumPlayList();
|
2024-07-05 18:25:44 +08:00
|
|
|
|
if (playList != null && playList.Count > 0)
|
2024-07-04 16:32:27 +08:00
|
|
|
|
{
|
|
|
|
|
|
curOrderIndex++;
|
|
|
|
|
|
if (curOrderIndex >= playList.Count)
|
|
|
|
|
|
{
|
|
|
|
|
|
curOrderIndex = 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
PlayAlbumAudio(GetCurAlbum().Id, playOrderList[curOrderIndex]);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2024-07-17 13:59:24 +08:00
|
|
|
|
/// 播放进度计时器
|
2024-07-04 16:32:27 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
public class Timer
|
|
|
|
|
|
{
|
|
|
|
|
|
bool isPlaying;
|
|
|
|
|
|
float audioLength = -1;
|
|
|
|
|
|
|
|
|
|
|
|
public delegate void OnSecondChange();
|
|
|
|
|
|
public event OnSecondChange onSecondChange;
|
|
|
|
|
|
public delegate void OnPlayEnd();
|
|
|
|
|
|
public event OnPlayEnd onPlayEnd;
|
|
|
|
|
|
|
|
|
|
|
|
async UniTask AudioTimer()
|
|
|
|
|
|
{
|
|
|
|
|
|
while (isPlaying)
|
|
|
|
|
|
{
|
2024-07-15 17:07:49 +08:00
|
|
|
|
float totalSeconds = AlbumManager.Instance.GetAlbumProgress();
|
2024-10-30 16:04:30 +08:00
|
|
|
|
if (totalSeconds < 0 || !AudioManager.Instance.IsPlayingAlbum)
|
2024-07-04 16:32:27 +08:00
|
|
|
|
{
|
|
|
|
|
|
isPlaying = false;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (totalSeconds >= audioLength && audioLength > 0)
|
|
|
|
|
|
{
|
|
|
|
|
|
isPlaying = false;
|
2024-10-30 16:04:30 +08:00
|
|
|
|
|
2024-07-04 16:32:27 +08:00
|
|
|
|
onPlayEnd?.Invoke();
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
2024-10-24 15:50:02 +08:00
|
|
|
|
if (Instance.bgmAudio == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
isPlaying = false;
|
|
|
|
|
|
break;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-10-17 16:24:24 +08:00
|
|
|
|
if (!Instance.bgmAudio.IsPaused)
|
2024-07-17 14:26:29 +08:00
|
|
|
|
onSecondChange?.Invoke();
|
2024-07-04 16:32:27 +08:00
|
|
|
|
await UniTask.Delay(100);//0.1s
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void Start(float audiolen)
|
|
|
|
|
|
{
|
|
|
|
|
|
audioLength = audiolen;
|
2024-07-09 16:56:40 +08:00
|
|
|
|
if (audiolen <= 0)
|
|
|
|
|
|
{
|
2024-07-17 13:59:24 +08:00
|
|
|
|
DebugUtil.LogWarning("当前传入音频长度非正数,请后续考虑更新代码");
|
2024-07-09 16:56:40 +08:00
|
|
|
|
}
|
2024-07-04 16:32:27 +08:00
|
|
|
|
if (isPlaying)
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
isPlaying = true;
|
|
|
|
|
|
AudioTimer().Forget();
|
|
|
|
|
|
}
|
|
|
|
|
|
public void Start()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (isPlaying)
|
|
|
|
|
|
{
|
|
|
|
|
|
return;
|
|
|
|
|
|
}
|
|
|
|
|
|
isPlaying = true;
|
|
|
|
|
|
AudioTimer().Forget();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void Stop()
|
|
|
|
|
|
{
|
|
|
|
|
|
isPlaying = false;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-07-09 15:25:28 +08:00
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
2024-07-17 13:59:24 +08:00
|
|
|
|
/// _saveData未读取时的处理
|
2024-07-09 15:25:28 +08:00
|
|
|
|
/// </summary>
|
|
|
|
|
|
void loadSaveData()
|
|
|
|
|
|
{
|
|
|
|
|
|
if (_saveData == null)
|
|
|
|
|
|
{
|
|
|
|
|
|
_saveData = StorageMgr.Instance.GetStorage<AlbumLocalData>("ALBUM_LOCAL_DATA");
|
2024-07-17 13:59:24 +08:00
|
|
|
|
if (AlbumUnlocked(_saveData.curAlbumId))//如保存的专辑未解锁,则默认播放第一个专辑
|
2024-07-09 15:25:28 +08:00
|
|
|
|
{
|
|
|
|
|
|
SetCurAlbum(1, 0);
|
|
|
|
|
|
}
|
2024-07-17 13:59:24 +08:00
|
|
|
|
if (_saveData.themeAlbumID != 0 && AlbumUnlocked(_saveData.themeAlbumID))//如保存的主题专辑未解锁,设为无主题专辑
|
2024-07-09 15:25:28 +08:00
|
|
|
|
{
|
|
|
|
|
|
SetCurThemeAlbum(0);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-07-04 16:32:27 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public class AlbumLocalData
|
|
|
|
|
|
{
|
|
|
|
|
|
public int curAlbumId = 1;
|
|
|
|
|
|
public int curPlayAudioIndex = 0;
|
|
|
|
|
|
public int curOrderMode = 0;
|
2024-07-08 19:25:45 +08:00
|
|
|
|
|
2024-07-17 13:59:24 +08:00
|
|
|
|
public int themeAlbumID = 0;//如果为0,则表示没有设置主题专辑
|
|
|
|
|
|
public int themeAlbumAudioIndex = 0;//主题专辑音频序号
|
2024-07-09 15:04:35 +08:00
|
|
|
|
|
2024-08-05 19:51:12 +08:00
|
|
|
|
public List<string> FavorAudioLst = new List<string>();
|
2024-07-04 16:32:27 +08:00
|
|
|
|
}
|