AlicizaX/Client/Packages/com.alicizax.unity.config/Runtime/Config/ConfigComponent.cs
陈思海 eb38f67131 init
2025-01-23 19:06:48 +08:00

106 lines
3.1 KiB
C#

//------------------------------------------------------------
// Game Framework
// Copyright © 2013-2021 Jiang Yin. All rights reserved.
// Homepage: https://gameframework.cn/
// Feedback: mailto:ellan@gameframework.cn
//------------------------------------------------------------
using System;
using AlicizaX.Runtime;
using UnityEngine;
namespace AlicizaX.Config.Runtime
{
/// <summary>
/// 全局配置组件。
/// </summary>
[DisallowMultipleComponent]
[AddComponentMenu("Game Framework/Config")]
public sealed class ConfigComponent : GameFrameworkComponent
{
private IConfigManager m_ConfigManager = null;
/// <summary>
/// 获取全局配置项数量。
/// </summary>
public int Count
{
get { return m_ConfigManager.Count; }
}
/// <summary>
/// 游戏框架组件初始化。
/// </summary>
protected override void Awake()
{
ImplementationComponentType = Utility.Assembly.GetType(componentType);
InterfaceComponentType = typeof(IConfigManager);
base.Awake();
m_ConfigManager = SysModuleCenter.GetModule<IConfigManager>();
if (m_ConfigManager == null)
{
Log.Fatal("Config manager is invalid.");
return;
}
}
/// <summary>
/// 获取指定全局配置项。
/// </summary>
/// <typeparam name="T"></typeparam>
/// <returns></returns>
public T GetConfig<T>() where T : IDataTable
{
if (HasConfig<T>())
{
var configName = typeof(T).Name;
var config = m_ConfigManager.GetConfig(configName);
if (config != null)
{
return (T)config;
}
}
return default;
}
/// <summary>
/// 检查是否存在指定全局配置项。
/// </summary>
/// <returns>指定的全局配置项是否存在。</returns>
public bool HasConfig<T>() where T : IDataTable
{
var configName = typeof(T).Name;
return m_ConfigManager.HasConfig(configName);
}
/// <summary>
/// 移除指定全局配置项。
/// </summary>
/// <returns>是否移除全局配置项成功。</returns>
public bool RemoveConfig<T>() where T : IDataTable
{
var configName = typeof(T).Name;
return m_ConfigManager.RemoveConfig(configName);
}
/// <summary>
/// 清空所有全局配置项。
/// </summary>
public void RemoveAllConfigs()
{
m_ConfigManager.RemoveAllConfigs();
}
/// <summary>
/// 增加
/// </summary>
/// <param name="configName"></param>
/// <param name="dataTable"></param>
public void Add(string configName, IDataTable dataTable)
{
m_ConfigManager.AddConfig(configName, dataTable);
}
}
}