-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
BuiltInConnectionFactory.cs
48 lines (36 loc) · 1.58 KB
/
BuiltInConnectionFactory.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
using UnityEngine;
namespace Bayat.SaveSystem.Storage
{
/// <summary>
/// The built-in connection factory.
/// </summary>
public class BuiltInConnectionFactory : IConnectionFactory
{
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
private static void Register()
{
ConnectionStringFactory.Register(new BuiltInConnectionFactory());
}
public IStorage CreateStorage(StorageConnectionString connectionString)
{
if (connectionString.Prefix == "disk")
{
string path = connectionString.Get("path", Application.persistentDataPath, "base-path", "folder", "directory", "dir");
return new LocalDiskStorage(path);
}
if (connectionString.Prefix == "playerprefs")
{
string encodingName = connectionString.Get("encoding", StorageBase.DefaultTextEncodingName, "text-encoding", "encoding-name");
bool useBase64 = connectionString.GetBoolean("usebase64", true, "use-base64");
return new PlayerPrefsStorage(encodingName, useBase64);
}
if (connectionString.Prefix == "memory")
{
string encodingName = connectionString.Get("encoding", StorageBase.DefaultTextEncodingName, "text-encoding", "encoding-name");
bool useBase64 = connectionString.GetBoolean("usebase64", true, "use-base64");
return new MemoryStorage(encodingName, useBase64);
}
return null;
}
}
}