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