-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathOverlayConfig.cs
98 lines (89 loc) · 2.85 KB
/
OverlayConfig.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
using Sync.Tools;
using Sync.Tools.ConfigurationAttribute;
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using IngameOverlay.Gui;
using Newtonsoft.Json;
namespace IngameOverlay
{
class OverlayConfig : IConfigurable
{
[List(ValueList = new[] { "Default", "Chinese", "Cyrillic", "Japanese", "Korean", "Thai" })]
public ConfigurationElement GlyphRanges
{
get => Setting.GlobalConfig.GlyphRanges;
set
{
Setting.GlobalConfig.GlyphRanges = value;
Setting.GlobalConfig.WriteToMmf();
}
}
[OverlayGui]
public ConfigurationElement OverlayConfigJson
{
get
{
using (MemoryStream ms = new MemoryStream())
{
using (var gzip = new GZipStream(ms, CompressionLevel.Optimal,true))
{
byte[] bytes = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(Setting.OverlayConfigs));
gzip.Write(bytes,0,bytes.Length);
}
return Convert.ToBase64String(ms.ToArray());
}
}
set
{
try
{
using (MemoryStream ms = new MemoryStream(Convert.FromBase64String(value)))
using (var gzip = new GZipStream(ms, CompressionMode.Decompress))
using (var sr = new StreamReader(gzip))
{
Setting.OverlayConfigs = JsonConvert.DeserializeObject<OverlayConfigs>(sr.ReadToEnd());
}
}
catch (Exception)
{
Setting.OverlayConfigs = JsonConvert.DeserializeObject<OverlayConfigs>(value);
}
}
}
[Path(IsDirectory = false)]
public ConfigurationElement OsuExecPath
{
get => Setting.OsuExecPath;
set => Setting.OsuExecPath = value;
}
[Bool(Hide = true)]
public ConfigurationElement AcceptEula
{
get => Setting.AcceptEula.ToString();
set => Setting.AcceptEula = bool.Parse(value);
}
#region unused
public void onConfigurationLoad()
{
}
public void onConfigurationReload()
{
}
public void onConfigurationSave()
{
}
#endregion
}
public static class Setting
{
public static string OsuExecPath = "";
public static OverlayConfigs OverlayConfigs=new OverlayConfigs();
public static GlobalConfig GlobalConfig = new GlobalConfig();
public static bool AcceptEula = false;
}
}