NLDClient-yudde/ProjectNLD/Assets/Code/Scripts/Framework/Audio/AlbumManager.cs

112 lines
2.6 KiB
C#

using cfg.ActorCfg;
using Framework;
using PhxhSDK;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class AlbumManager : Singlenton<AlbumManager>, IInitable
{
bool initialized = false;
public string curMusicKey;
Dictionary<int, DataAlbum> albumDic = new Dictionary<int, DataAlbum>();
List<DataAlbum> albumList = new List<DataAlbum>();
public readonly bool loadFromLocal = true;
void loadOrInit()
{
if(!initialized)
{
Init();
initialized = true;
}
}
public void Init()
{
DebugUtil.Log("Test: AlbumMananger init!");
albumDic.Clear();
var albumCfg = TableManager.Instance.Tables.AlbumConfig;
foreach (var item in albumCfg.DataList)
{
albumDic.Add(item.Id, item);
albumList.Add(item);
}
}
public void Release()
{
albumDic.Clear();
albumList.Clear();
}
public Dictionary<int, DataAlbum> AlbumsDic => albumDic;
public List<DataAlbum> AlbumsLst => albumList;
public bool AlbumUnlocked(int albumId)
{
loadOrInit();
if (loadFromLocal)
{
if (albumDic.ContainsKey(albumId))
{
if (albumDic[albumId].DefaultUnlock)
{
return true;
}
var data = StorageMgr.Instance.GetStorage<AlbumLocalData>("ALBUM_LOCAL_DATA");
if (data.unlockedAlbumLst.Contains(albumId))
{
return true;
}
else
{
return false;
}
}
else
{
DebugUtil.LogError(albumId + " not found in album config");
return false;
}
}
else
{
DebugUtil.Log("·þÎñÆ÷¶ÁÈ¡");
return false;
//TODO ·þÎñÆ÷Âß¼­
}
}
public DataAlbum GetCurAlbum()
{
loadOrInit();
if (loadFromLocal)
{
var localData = StorageMgr.Instance.GetStorage<AlbumLocalData>("ALBUM_LOCAL_DATA");
if(localData != null && localData.curAlbumId > 0)
{
return albumDic[localData.curAlbumId];
}
else
{
return albumList[0];
}
}
else
{
DebugUtil.Log("·þÎñÆ÷¶ÁÈ¡");
return null;
//TODO ·þÎñÆ÷Âß¼­
}
}
}
public class AlbumLocalData
{
public int curAlbumId = 0;
public List<int> unlockedAlbumLst = new List<int>();
}