Files
aibis-dream/Assets/Scripts/Framework/Config/ConfigContainer.cs
T
dingyuntian 9f20ef52d8 UI工具翻新
1. 增加UI工具
2. 增加设置页面
3. GameLoop更新
4. 导入ActionKit工具
2025-04-21 18:53:30 +08:00

70 lines
1.8 KiB
C#

using System;
using System.Collections.Generic;
using AibisDream.Utility;
using Newtonsoft.Json.Linq;
namespace AibisDream.Kit
{
/// <summary>
/// 配置项容器
/// 1. 读取时可以直接从文件读取
/// 2. 保存时可以直接保存到文件
/// 3. 修改时会触发回调函数
/// </summary>
public class ConfigContainer
{
private readonly string _configPath;
private JObject Data => JsonUtil.ReadJObject(_configPath);
public event Action<string, string> OnWrite;
public ConfigContainer(string configPath)
{
_configPath = configPath;
}
/// <summary>
/// 写入
/// </summary>
/// <param name="key">键</param>
/// <param name="value">值</param>
public void Write(string key, string value)
{
var data = Data;
data[key] = value;
JsonUtil.SaveJObject(data, _configPath);
OnWrite?.Invoke(key, value);
}
/// <summary>
/// 读取配置项
/// </summary>
/// <param name="key">键</param>
/// <param name="value">值</param>
/// <returns>是否读取完成</returns>
public bool TryRead(string key, out string value)
{
var res = Data.TryGetValue(key, out var jsValue);
value = jsValue?.ToString();
return res;
}
/// <summary>
/// 读取全部配置项为Dict
/// </summary>
/// <returns>配置项字典</returns>
public Dictionary<string, string> ReadAll()
{
var data = Data;
var res = new Dictionary<string, string>();
foreach (var pair in data)
{
res[pair.Key] = pair.Value.ToString();
}
return res;
}
}
}