TigerEmu/Game/Settings/SettingsManager.cs

35 lines
1.0 KiB
C#

using Microsoft.Extensions.Logging;
namespace Tiger.Game.Settings;
public class SettingsManager : ISettingsManager
{
private IReadOnlyDictionary<string, object> _settings;
private readonly ISettingsDao _settingsDao;
private readonly ILogger<ISettingsManager> _logger;
public SettingsManager(ISettingsDao settingsDao, ILogger<ISettingsManager> logger)
{
_settingsDao = settingsDao;
_logger = logger;
_settings = new Dictionary<string, object>();
}
public async Task ReloadSettingsAsync()
{
_settings = await _settingsDao.GetSettingsAsync();
_logger.LogInformation("Loaded {Count} settings", _settings.Count);
}
public T GetSetting<T>(string key)
{
if (!_settings.TryGetValue(key, out var value))
throw new KeyNotFoundException($"No setting found with key '{key}'");
if (value is T castedValue)
return castedValue;
throw new InvalidCastException($"Setting '{key}' is not of type '{typeof(T)}'");
}
}