This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
TrueCraft/TrueCraft.Core/UserSettings.cs
Drew DeVault d04e5de273 Add option to invert the mouse
Closes #189

Regards to @illblew
2016-04-06 18:53:40 -04:00

92 lines
3.0 KiB
C#

using System;
using Newtonsoft.Json;
using System.IO;
namespace TrueCraft.Core
{
public class UserSettings
{
public static UserSettings Local { get; set; }
public bool AutoLogin { get; set; }
public string Username { get; set; }
public string Password { get; set; }
public string LastIP { get; set; }
public string SelectedTexturePack { get; set; }
public FavoriteServer[] FavoriteServers { get; set; }
public bool IsFullscreen { get; set; }
public bool InvertedMouse { get; set; }
public WindowResolution WindowResolution { get; set; }
public UserSettings()
{
AutoLogin = false;
Username = "";
Password = "";
LastIP = "";
SelectedTexturePack = TexturePack.Default.Name;
FavoriteServers = new FavoriteServer[0];
IsFullscreen = false;
InvertedMouse = false;
WindowResolution = new WindowResolution()
{
Width = 1280,
Height = 720
};
}
public void Load()
{
if (File.Exists(Paths.Settings))
JsonConvert.PopulateObject(File.ReadAllText(Paths.Settings), this);
}
public void Save()
{
Directory.CreateDirectory(Path.GetDirectoryName(Paths.Settings));
File.WriteAllText(Paths.Settings, JsonConvert.SerializeObject(this, Formatting.Indented));
}
}
public class FavoriteServer
{
public string Name { get; set; }
public string Address { get; set; }
}
public class WindowResolution
{
public static readonly WindowResolution[] Defaults =
new WindowResolution[]
{
// (from Wikipedia/other)
WindowResolution.FromString("800 x 600"), // SVGA
WindowResolution.FromString("960 x 640"), // DVGA
WindowResolution.FromString("1024 x 600"), // WSVGA
WindowResolution.FromString("1024 x 768"), // XGA
WindowResolution.FromString("1280 x 1024"), // SXGA
WindowResolution.FromString("1600 x 1200"), // UXGA
WindowResolution.FromString("1920 x 1080"), // big
WindowResolution.FromString("1920 x 1200"), // really big
WindowResolution.FromString("4096 x 2160"), // huge
};
public static WindowResolution FromString(string str)
{
var tmp = str.Split('x');
return new WindowResolution()
{
Width = int.Parse(tmp[0].Trim()),
Height = int.Parse(tmp[1].Trim())
};
}
public int Width { get; set; }
public int Height { get; set; }
public override string ToString()
{
return string.Format("{0} x {1}", Width, Height);
}
}
}