84 lines
2.4 KiB
C#
84 lines
2.4 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Text.Json;
|
|
using Saradomin.Model.Settings.Client;
|
|
using Saradomin.Model.Settings.Launcher;
|
|
using Saradomin.Utilities;
|
|
|
|
namespace Saradomin.Infrastructure.Services
|
|
{
|
|
public class SettingsService : ISettingsService
|
|
{
|
|
public LauncherSettings Launcher { get; private set; } = new();
|
|
public ClientSettings Client { get; private set; } = new();
|
|
|
|
private string ClientSettingsPath
|
|
=> Path.Combine(CrossPlatform.Get2009scapeHome(), ClientSettings.FileName);
|
|
|
|
private string LauncherSettingsPath
|
|
=> Path.Combine(CrossPlatform.GetSaradominHome(), LauncherSettings.FileName);
|
|
|
|
public SettingsService()
|
|
{
|
|
TryReadConfigurationData();
|
|
}
|
|
|
|
public void SaveAll()
|
|
{
|
|
SaveLauncherSettings();
|
|
SaveClientSettings();
|
|
}
|
|
|
|
private void TryReadConfigurationData()
|
|
{
|
|
Directory.CreateDirectory(CrossPlatform.GetSaradominHome());
|
|
|
|
if (File.Exists(LauncherSettingsPath))
|
|
{
|
|
using (var stream = File.OpenRead(LauncherSettingsPath))
|
|
{
|
|
Launcher = JsonSerializer.Deserialize<LauncherSettings>(stream);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
SaveLauncherSettings();
|
|
}
|
|
|
|
Directory.CreateDirectory(CrossPlatform.Get2009scapeHome());
|
|
if (File.Exists(ClientSettingsPath))
|
|
{
|
|
using (var stream = File.OpenRead(ClientSettingsPath))
|
|
{
|
|
Client = JsonSerializer.Deserialize<ClientSettings>(stream);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
SaveClientSettings();
|
|
}
|
|
}
|
|
|
|
private void SaveLauncherSettings()
|
|
{
|
|
File.WriteAllText(
|
|
LauncherSettingsPath,
|
|
JsonSerializer.Serialize(Launcher, new JsonSerializerOptions
|
|
{
|
|
WriteIndented = true
|
|
})
|
|
);
|
|
}
|
|
|
|
private void SaveClientSettings()
|
|
{
|
|
File.WriteAllText(
|
|
ClientSettingsPath,
|
|
JsonSerializer.Serialize(Client, new JsonSerializerOptions
|
|
{
|
|
WriteIndented = true
|
|
})
|
|
);
|
|
}
|
|
}
|
|
} |