Skip to content

Commit 6df5e9a

Browse files
committed
Replaced PlayerPrefs with custom file.
Added datapaths command to view where data is being stored.
1 parent dbf0e06 commit 6df5e9a

File tree

3 files changed

+131
-13
lines changed

3 files changed

+131
-13
lines changed

Runtime/DevConsoleData.cs

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
// File: DevConsoleData.cs
2+
// Purpose: Static class for accessing saved developer console preferences.
3+
// Created by: DavidFDev
4+
5+
using System.Collections.Generic;
6+
using System.IO;
7+
using System.Runtime.Serialization.Formatters.Binary;
8+
using UnityEngine;
9+
10+
namespace DavidFDev.DevConsole
11+
{
12+
internal static class DevConsoleData
13+
{
14+
#region Static fields
15+
16+
private static Dictionary<string, object> _data;
17+
18+
#endregion
19+
20+
#region Static properties
21+
22+
public static string FilePath { get; private set; }
23+
24+
#endregion
25+
26+
#region Static constructor
27+
28+
static DevConsoleData()
29+
{
30+
_data = new Dictionary<string, object>();
31+
FilePath = Path.Combine(Application.persistentDataPath, "devconsole.dat");
32+
}
33+
34+
#endregion
35+
36+
#region Static methods
37+
38+
public static void SetObject(string key, object value)
39+
{
40+
_data[key] = value;
41+
}
42+
43+
public static T GetObject<T>(string key, T defaultValue)
44+
{
45+
return !_data.ContainsKey(key) ? defaultValue : (T)_data[key];
46+
}
47+
48+
public static void Save()
49+
{
50+
FileStream fs = new FileStream(FilePath, FileMode.Create);
51+
BinaryFormatter bf = new BinaryFormatter();
52+
53+
try
54+
{
55+
bf.Serialize(fs, _data);
56+
}
57+
finally
58+
{
59+
fs.Close();
60+
}
61+
}
62+
63+
public static void Load()
64+
{
65+
if (!File.Exists(FilePath))
66+
{
67+
return;
68+
}
69+
70+
FileStream fs = new FileStream(FilePath, FileMode.Open);
71+
BinaryFormatter bf = new BinaryFormatter();
72+
73+
try
74+
{
75+
_data = (Dictionary<string, object>)bf.Deserialize(fs);
76+
}
77+
finally
78+
{
79+
fs.Close();
80+
}
81+
}
82+
83+
public static void Clear()
84+
{
85+
_data.Clear();
86+
}
87+
88+
#endregion
89+
}
90+
}

Runtime/DevConsoleData.cs.meta

Lines changed: 11 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Runtime/DevConsoleMono.cs

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ internal sealed class DevConsoleMono : MonoBehaviour
7070

7171
#endregion
7272

73-
#region PlayerPref constants
73+
#region File data constants
7474

7575
private const string PrefConsoleToggleKey =
7676
#if USE_NEW_INPUT_SYSTEM
@@ -1503,6 +1503,20 @@ void logChildren(GameObject obj, int tabAmount)
15031503
}
15041504
));
15051505

1506+
AddCommand(Command.Create(
1507+
"datapath",
1508+
"",
1509+
"Display information about where data is stored by Unity and the developer console",
1510+
() =>
1511+
{
1512+
LogSeperator("Data paths");
1513+
LogVariable("Data path", Application.dataPath);
1514+
LogVariable("Persistent data path", Application.persistentDataPath);
1515+
LogVariable("Developer console data path", DevConsoleData.FilePath);
1516+
LogSeperator();
1517+
}
1518+
));
1519+
15061520
#endregion
15071521
}
15081522

@@ -1981,24 +1995,27 @@ private Vector2 GetMousePosition()
19811995

19821996
private void SavePreferences()
19831997
{
1984-
PlayerPrefs.SetInt(PrefConsoleToggleKey, !ConsoleToggleKey.HasValue ? -1 : (int)ConsoleToggleKey.Value);
1985-
PlayerPrefs.SetInt(PrefDisplayUnityLogs, _displayUnityLogs ? 1 : 0);
1986-
PlayerPrefs.SetInt(PrefDisplayUnityErrors, _displayUnityErrors ? 1 : 0);
1987-
PlayerPrefs.SetInt(PrefDisplayUnityExceptions, _displayUnityExceptions ? 1 : 0);
1988-
PlayerPrefs.SetInt(PrefDisplayUnityWarnings, _displayUnityWarnings ? 1 : 0);
1998+
DevConsoleData.SetObject(PrefConsoleToggleKey, ConsoleToggleKey);
1999+
DevConsoleData.SetObject(PrefBindings, _bindings);
2000+
DevConsoleData.SetObject(PrefDisplayUnityErrors, _displayUnityErrors);
2001+
DevConsoleData.SetObject(PrefDisplayUnityExceptions, _displayUnityExceptions);
2002+
DevConsoleData.SetObject(PrefDisplayUnityWarnings, _displayUnityWarnings);
19892003

1990-
PlayerPrefs.Save();
2004+
DevConsoleData.Save();
19912005
}
19922006

19932007
private void LoadPreferences()
19942008
{
1995-
int n = PlayerPrefs.GetInt(PrefConsoleToggleKey, (int)DefaultToggleKey);
1996-
ConsoleToggleKey = n < 0 ? (InputKey?)null : (InputKey)n;
2009+
DevConsoleData.Load();
2010+
2011+
ConsoleToggleKey = DevConsoleData.GetObject(PrefConsoleToggleKey, (InputKey?)DefaultToggleKey);
2012+
_bindings = DevConsoleData.GetObject(PrefBindings, new Dictionary<InputKey, string>());
2013+
_displayUnityLogs = DevConsoleData.GetObject(PrefDisplayUnityLogs, true);
2014+
_displayUnityErrors = DevConsoleData.GetObject(PrefDisplayUnityErrors, true);
2015+
_displayUnityExceptions = DevConsoleData.GetObject(PrefDisplayUnityExceptions, true);
2016+
_displayUnityWarnings = DevConsoleData.GetObject(PrefDisplayUnityWarnings, true);
19972017

1998-
_displayUnityLogs = PlayerPrefs.GetInt(PrefDisplayUnityLogs, 1) == 1;
1999-
_displayUnityErrors = PlayerPrefs.GetInt(PrefDisplayUnityErrors, 1) == 1;
2000-
_displayUnityExceptions = PlayerPrefs.GetInt(PrefDisplayUnityExceptions, 1) == 1;
2001-
_displayUnityWarnings = PlayerPrefs.GetInt(PrefDisplayUnityWarnings, 1) == 1;
2018+
DevConsoleData.Clear();
20022019
}
20032020

20042021
#endregion

0 commit comments

Comments
 (0)