using System;
using System.IO;
using NitroxModel.Helper;
using NitroxModel.Serialization;
namespace NitroxClient.Serialization;
///
/// This is the client config for Nitrox
/// The file should be stored under %appdata%\Roaming\Nitrox\client.cfg
///
[PropertyDescription("These are the settings for the Nitrox Client.")]
public class ClientConfig : NitroxConfig
{
public override string FileName => "client.cfg";
[PropertyDescription("Keybinds to open chat [Default primary is Y]")]
public string OpenChatKeybindPrimary { get; set; } = "Y";
public string OpenChatKeybindSecondary { get; set; } = "";
[PropertyDescription("Keybinds to focus discord, ALT + [Default primary is F]")]
public string FocusDiscordKeybindPrimary { get; set; } = "F";
public string FocusDiscordKeybindSecondary { get; set; } = "";
///
/// This method initialises the client config
/// It checks for an existing file and returns back either a fresh instance, or an existing instance
/// This is ran once on game startup. Use to retrieve instance
///
/// Instance of ClientConfig
public static ClientConfig Init()
{
string appDataPath = NitroxUser.AppDataPath;
Directory.CreateDirectory(appDataPath);
ClientConfig cfg = null;
try
{
if (File.Exists(Path.Combine(appDataPath, "client.cfg")))
{
cfg = Load(appDataPath);
}
else
{
cfg = new ClientConfig();
cfg.Serialize(appDataPath);
}
}
catch (Exception ex)
{
Log.Error($"Unable to load client config: {ex.Message}");
}
return cfg;
}
}