AlicizaX/Client/Packages/com.alicizax.unity.config/Runtime/Config/Config/ConfigManager.cs
2025-03-04 18:40:14 +08:00

104 lines
3.1 KiB
C#

using System;
using System.Collections.Concurrent;
using AlicizaX.Runtime;
namespace AlicizaX.Config.Runtime
{
/// <summary>
/// 全局配置管理器。
/// </summary>
[UnityEngine.Scripting.Preserve]
public sealed partial class ConfigManager : IConfigManager
{
private readonly ConcurrentDictionary<string, IDataTable> m_ConfigDatas;
/// <summary>
/// 初始化全局配置管理器的新实例。
/// </summary>
[UnityEngine.Scripting.Preserve]
public ConfigManager()
{
m_ConfigDatas = new ConcurrentDictionary<string, IDataTable>(StringComparer.Ordinal);
}
/// <summary>
/// 获取全局配置项数量。
/// </summary>
public int Count
{
get { return m_ConfigDatas.Count; }
}
void IModule.Dispose()
{
RemoveAllConfigs();
}
/// <summary>
/// 检查是否存在指定全局配置项。
/// </summary>
/// <param name="configName">要检查全局配置项的名称。</param>
/// <returns>指定的全局配置项是否存在。</returns>
[UnityEngine.Scripting.Preserve]
public bool HasConfig(string configName)
{
return m_ConfigDatas.TryGetValue(configName, out _);
}
/// <summary>
/// 增加指定全局配置项。
/// </summary>
/// <param name="configName">要增加全局配置项的名称。</param>
/// <param name="configValue">全局配置项的值。</param>
/// <returns>是否增加全局配置项成功。</returns>
[UnityEngine.Scripting.Preserve]
public void AddConfig(string configName, IDataTable configValue)
{
bool isExist = m_ConfigDatas.TryGetValue(configName, out var value);
if (isExist)
{
return;
}
m_ConfigDatas.TryAdd(configName, configValue);
}
/// <summary>
/// 移除指定全局配置项。
/// </summary>
/// <param name="configName">要移除全局配置项的名称。</param>
[UnityEngine.Scripting.Preserve]
public bool RemoveConfig(string configName)
{
if (!HasConfig(configName))
{
return false;
}
return m_ConfigDatas.TryRemove(configName, out _);
}
/// <summary>
/// 获取指定全局配置项。
/// </summary>
/// <param name="configName">要获取全局配置项的名称。</param>
/// <returns>要获取全局配置项的全局配置项。</returns>
[UnityEngine.Scripting.Preserve]
public IDataTable GetConfig(string configName)
{
return m_ConfigDatas.TryGetValue(configName, out var value) ? value : null; //GetConfig()
}
/// <summary>
/// 清空所有全局配置项。
/// </summary>
[UnityEngine.Scripting.Preserve]
public void RemoveAllConfigs()
{
m_ConfigDatas.Clear();
}
}
}