-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPrefsHelper.cs
More file actions
60 lines (45 loc) · 1.43 KB
/
PrefsHelper.cs
File metadata and controls
60 lines (45 loc) · 1.43 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
using UnityEngine;
namespace Polychievements;
public static class PrefsHelper
{
private const string Key = "Polychievements";
public static Dictionary<string, bool> CreateDefault()
{
var dict = new Dictionary<string, bool>();
for (int i = 0; i < Main.Achievements.Count; i++)
dict[Main.Achievements[i].idx] = false;
return dict;
}
public static void SaveDict(Dictionary<string, bool> dict)
{
var parts = new List<string>();
foreach (var kvp in dict)
parts.Add($"{kvp.Key}={(kvp.Value ? 1 : 0)}");
string encoded = string.Join(";", parts);
PlayerPrefs.SetString(Key, encoded);
PlayerPrefs.Save();
}
public static Dictionary<string, bool> LoadDict()
{
var dict = CreateDefault();
if (!PlayerPrefs.HasKey(Key))
return dict;
string encoded = PlayerPrefs.GetString(Key);
foreach (var entry in encoded.Split(';'))
{
if (string.IsNullOrWhiteSpace(entry))
continue;
var kv = entry.Split('=');
if (kv.Length != 2)
continue;
string key = kv[0].Trim();
string value = kv[1].Trim();
if (!int.TryParse(value, out int val))
continue;
if (!dict.ContainsKey(key))
continue;
dict[key] = val != 0;
}
return dict;
}
}