You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
3.5 KiB
110 lines
3.5 KiB
using System; |
|
using System.IO; |
|
using System.Collections.Generic; |
|
using Godot; |
|
|
|
namespace EGFramework |
|
{ |
|
public enum TypeEGSave{ |
|
Json = 0, |
|
Bson = 1, |
|
Byte = 2, |
|
XML = 3 |
|
} |
|
public enum TypeDBSave{ |
|
Csv = 0, |
|
Sqlite = 1, |
|
LiteDB = 2, |
|
} |
|
|
|
public class EGSave : EGModule |
|
{ |
|
#region About Godot File's PATH |
|
// Godot's Path has res:// and user:// |
|
// UserPath is used for every platform such as android. |
|
// You can use ProjectSettings.GlobalizePath("") to convert a "local" path like res://path/to/file.txt to an absolute OS path. |
|
#endregion |
|
|
|
private Dictionary<string,IEGSaveData> DataBaseFiles = new Dictionary<string,IEGSaveData>(); |
|
private Dictionary<string,IEGSaveObject> ObjectFiles = new Dictionary<string,IEGSaveObject>(); |
|
public EGSave() {} |
|
public override void Init() |
|
{ |
|
LoadObjectFile("SaveData/DefaultJsonSave.json".GetGodotResPath(),TypeEGSave.Json); |
|
} |
|
|
|
public void LoadDataFile(string path,TypeDBSave type){ |
|
switch(type){ |
|
case TypeDBSave.Csv: |
|
break; |
|
default: |
|
break; |
|
} |
|
} |
|
|
|
public void LoadObjectFile(string path,TypeEGSave type){ |
|
switch(type){ |
|
case TypeEGSave.Json: |
|
EGJsonSave newJsonFile = new EGJsonSave(); |
|
newJsonFile.InitSaveFile(path); |
|
ObjectFiles.Add(path, newJsonFile); |
|
break; |
|
default: |
|
break; |
|
} |
|
} |
|
|
|
public void SetObject<TObject>(string path,string objectKey,TObject obj){ |
|
ObjectFiles[path].SetObject(objectKey,obj); |
|
} |
|
public TObject GetObject<TObject>(string path,string key) where TObject : new(){ |
|
return ObjectFiles[path].GetObject<TObject>(key); |
|
} |
|
|
|
public void SetData<TData>(string path,string dataKey,TData data,int id){ |
|
DataBaseFiles[path].SetData(dataKey,data,id); |
|
} |
|
public void GetData<TData>(string path,string key,int id) where TData : new(){ |
|
DataBaseFiles[path].GetData<TData>(key,id); |
|
} |
|
|
|
//------------------------------------------------------------------------------// |
|
|
|
#region Default Json Operation |
|
public void SetObjectToJson<TObject>(TObject obj){ |
|
ObjectFiles["SaveData/DefaultJsonSave.json"].SetObject(typeof(TObject).ToString(),obj); |
|
} |
|
public TObject GetObjectFromJson<TObject>() where TObject : new(){ |
|
return ObjectFiles["SaveData/DefaultJsonSave.json"].GetObject<TObject>(typeof(TObject).ToString()); |
|
} |
|
#endregion |
|
|
|
//------------------------------------------------------------------------------// |
|
|
|
|
|
public void OpenResPath(){ |
|
OS.ShellOpen("".GetGodotResPath()); |
|
} |
|
|
|
public void OpenUserPath(){ |
|
OS.ShellOpen("".GetGodotUserPath()); |
|
} |
|
|
|
|
|
} |
|
|
|
public static class CanGetEGSaveExtension{ |
|
public static EGSave EGSave(this IEGFramework self){ |
|
return self.GetModule<EGSave>(); |
|
} |
|
|
|
public static string GetGodotResPath(this string absPath){ |
|
return ProjectSettings.GlobalizePath("res://"+absPath); |
|
} |
|
|
|
public static string GetGodotUserPath(this string absPath){ |
|
return ProjectSettings.GlobalizePath("user://"+absPath); |
|
} |
|
|
|
} |
|
} |