-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathConfigFile.cs
More file actions
84 lines (66 loc) · 1.97 KB
/
Copy pathConfigFile.cs
File metadata and controls
84 lines (66 loc) · 1.97 KB
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
using System.Text.Json;
using System.Text.Json.Nodes;
using TShockAPI;
namespace ShockMP
{
public class ConfigFile
{
private readonly string path;
private JsonObject data;
public ConfigFile(string fileName)
{
path = Path.Combine(TShock.SavePath, fileName + ".json");
data = new();
load();
}
public void load()
{
if (File.Exists(path)) data = JsonNode.Parse(File.ReadAllText(path))!.AsObject();
else data = new JsonObject();
}
public void save() => File.WriteAllText(path, data.ToJsonString(new JsonSerializerOptions { WriteIndented = true }));
public bool has(string key) => data.ContainsKey(key);
public void set(string key, string value)
{
data[key] = JsonValue.Create(value);
save();
}
public void set(string key, bool value)
{
data[key] = JsonValue.Create(value);
save();
}
public void set(string key, int value)
{
data[key] = JsonValue.Create(value);
save();
}
public void setIfAbsent(string key, string value)
{
if (!has(key)) set(key, value);
}
public void setIfAbsent(string key, bool value)
{
if (!has(key)) set(key, value);
}
public void setIfAbsent(string key, int value)
{
if (!has(key)) set(key, value);
}
public string get(string key, string def)
{
if (!has(key)) return def;
return data[key]!.GetValue<string>();
}
public bool get(string key, bool def)
{
if (!has(key)) return def;
return data[key]!.GetValue<bool>();
}
public int get(string key, int def)
{
if (!has(key)) return def;
return data[key]!.GetValue<int>();
}
}
}