Luski/Luski/Globals.cs

85 lines
2.4 KiB
C#

using System.Reflection;
using System.Text.Json;
using System.Text.Json.Serialization.Metadata;
using GraphicsManager;
using GraphicsManager.Objects.Core;
using Luski.Clesses;
using Luski.GUI.MainScreen;
using Luski.net;
using Luski.net.Enums;
using OpenTK.Windowing.Common.Input;
namespace Luski;
public class Globals
{
public static bool Download { get; set; } = false;
public static Server Luski { get; set; } = null!;
public static MainScreen ms;
public static Settings Settings { get; set; }
public static Font DefaultFont { get; set; }
public static UpdaterSettings UpdaterSettings { get; set; }
public static Texture LuskiTexture;
public static TResult GetSettings<TResult>(string path, JsonTypeInfo<TResult> TypeInfo) where TResult : new()
{
TResult? @out;
if (!File.Exists(path))
{
@out = new();
Console.WriteLine("Overiding 1");
File.WriteAllText(path, JsonSerializer.Serialize(@out, TypeInfo));
}
try
{
@out = JsonSerializer.Deserialize(File.ReadAllText(path), TypeInfo);
Console.WriteLine("Found");
if (@out is null)
{
Console.WriteLine("Overiding 2");
@out = new();
}
}
catch
{
Console.WriteLine("Overiding 3");
@out = new();
}
File.WriteAllText(path, JsonSerializer.Serialize(@out, TypeInfo));
return @out;
}
public static string JT
{
get
{
string tmp = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "JacobTech");
if (OperatingSystem.IsLinux())
{
tmp = Path.Combine(Environment.GetEnvironmentVariable("HOME")!, ".config/");
tmp += "JacobTech";
}
if (!Directory.Exists(tmp)) Directory.CreateDirectory(tmp);
if (!Directory.Exists(Path.Combine(tmp, "Luski"))) Directory.CreateDirectory(Path.Combine(tmp, "Luski"));
return tmp;
}
}
public static WindowIcon Icon { get; set; }
public static string LuskiPath
{
get
{
return Path.Combine(JT, "Luski");
}
}
public static bool Empty(string? str)
{
return (string.IsNullOrEmpty(str) || string.IsNullOrWhiteSpace(str));
}
}