Files
aibis-dream/Assets/Scripts/Config/ConfigUtil.cs
T
2024-09-13 19:39:22 +00:00

71 lines
2.2 KiB
C#

using System.Collections.Generic;
using System.Linq;
using AibisDream.Utility;
using UnityEngine;
namespace AibisDream.Config
{
public class ConfigUtil : SingletonBase<ConfigUtil>
{
private const string CharacterConfigPath = "/Config/character.csv";
private const string BaseConfigPath = "/Config/base_config.csv";
private Dictionary<string, string> _baseConfigDic;
private Dictionary<string, Character> _characters;
/// <summary>
/// 用于单例模式
/// </summary>
private ConfigUtil() {}
public void InitConfig()
{
InitBaseConfig();
InitCharacterConfig();
}
private void InitBaseConfig()
{
var baseList = CsvUtil.Read(Application.streamingAssetsPath + BaseConfigPath);
if (baseList.Count <= 0)
{
Debug.Log("基础配置不存在");
}
// 基础配置只有key和value
_baseConfigDic = new Dictionary<string, string>();
foreach (var arr in baseList)
{
_baseConfigDic.Add(arr[0], arr[1]);
}
}
private void InitCharacterConfig()
{
var characterList = CsvUtil.ReadAsBean<Character>(Application.streamingAssetsPath + CharacterConfigPath);
_characters = characterList.ToDictionary(item => item.Key, item => item);
}
/// <summary>
/// 按key获取角色预设
/// </summary>
/// <param name="key">key</param>
/// <param name="character">角色配置</param>
/// <returns>是否能获取</returns>
public bool TryGetCharacter(string key, out Character character)
{
return _characters.TryGetValue(key, out character);
}
/// <summary>
/// 按key获取基础配置
/// </summary>
/// <param name="key">key</param>
/// <param name="value">配置项</param>
/// <returns>是否能获取</returns>
public bool TryGetBaseConfig(string key, out string value)
{
return _baseConfigDic.TryGetValue(key, out value);
}
}
}