Browse Source

add a savedata table

master
jkpete 2 months ago
parent
commit
7596a60b51
  1. 19
      Example/SaveSystem/Script/ViewSaveSystem.cs
  2. 22
      addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotSaveTable.cs
  3. 16
      addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotTable.cs
  4. 2
      addons/EGFramework/Module/SaveTools/Data/EGSqliteSave.cs
  5. 52
      addons/EGFramework/Module/SaveTools/EGSave.cs

19
Example/SaveSystem/Script/ViewSaveSystem.cs

@ -13,22 +13,24 @@ namespace EGFramework.Examples.Test{
public string[][] DataList2 { get; set; } public string[][] DataList2 { get; set; }
public override void _Ready() public override void _Ready()
{ {
Container container = this.GetNode<TabContainer>("TabContainer"); Container container = this.GetNode<TabContainer>("TabContainer");
DataStudent dataStudent = new DataStudent(null, 18);
DataStudent dataStudent2 = new DataStudent("F", 20);
List<DataStudent> dataStudents = new List<DataStudent>(); List<DataStudent> dataStudents = new List<DataStudent>();
for (int stu = 0; stu < 10; stu++) for (int stu = 0; stu < 10; stu++)
{ {
dataStudents.Add(new DataStudent("stu" + stu, 18)); dataStudents.Add(new DataStudent("stu" + stu, 18));
} }
for (int stu = 0; stu < 10; stu++) for (int stu = 0; stu < 11; stu++)
{ {
dataStudents.Add(dataStudent2); dataStudents.Add(new DataStudent("A" + stu, 20 + stu));
} }
EGodotTable table = container.CreateNode<EGodotTable>("Teacher"); EGodotTable table = container.CreateNode<EGodotTable>("Teacher");
table.InitData<DataStudent>(dataStudents); table.InitData<DataStudent>(dataStudents);
IEGSaveData SqliteTest = this.EGSave().LoadDataFile<EGSqliteSave>("SaveData/test.db");
EGodotSaveTable PersonTable = container.CreateNode<EGodotSaveTable>("Person");
PersonTable.InitSaveData<EGSqliteSave>(SqliteTest);
PersonTable.InitData<DataPerson>("person");
// EGodotTableRowData rowData = container.CreateNode<EGodotTableRowData>("RowData"); // EGodotTableRowData rowData = container.CreateNode<EGodotTableRowData>("RowData");
// rowData.Init(new Dictionary<string, object>() { { "Name", "Tom" }, { "Age", 18 } }); // rowData.Init(new Dictionary<string, object>() { { "Name", "Tom" }, { "Age", 18 } });
// EGodotRowData rowData2 = container.CreateNode<EGodotRowData>("RowData2"); // EGodotRowData rowData2 = container.CreateNode<EGodotRowData>("RowData2");
@ -54,4 +56,11 @@ namespace EGFramework.Examples.Test{
ID = 0; ID = 0;
} }
} }
public struct DataPerson{
public string id { get; set; }
public string namee { set; get; }
public string workPlace { set; get; }
public string policeNum { set; get; }
}
} }

22
addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotSaveTable.cs

@ -1,4 +1,5 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using Godot; using Godot;
namespace EGFramework.UI namespace EGFramework.UI
@ -8,6 +9,27 @@ namespace EGFramework.UI
public IEGSaveData SaveData { set; get; } public IEGSaveData SaveData { set; get; }
public Dictionary<string, string> TitleList { set; get; } = new Dictionary<string, string>(); public Dictionary<string, string> TitleList { set; get; } = new Dictionary<string, string>();
public void InitSaveData<TSaveData>(IEGSaveData eGSaveData) where TSaveData : IEGSaveData
{
this.SaveData = eGSaveData;
} }
public void InitData<T>(string key) where T : new()
{
int count = SaveData.GetAll<T>(key).Count();
if (PageAdapter == null)
{
PageAdapter = new EGodotTablePageAdapter(count, PageLimit);
}
else
{
PageAdapter.Reload(count, PageLimit);
}
this.Vertical = true;
InitFunctionMenu();
InitTitle(typeof(T).EGenerateDictiontaryByType());
InitRowData(SaveData.GetAll<T>(key).EGenerateDictionaryByGroup());
InitPageMenu();
}
}
} }

16
addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotTable.cs

@ -87,17 +87,6 @@ namespace EGFramework.UI
this.TableData = rowDataList; this.TableData = rowDataList;
ToFirstPage(); ToFirstPage();
// int dataPointer = 0;
// foreach (Dictionary<string, object> row in rowDataList)
// {
// EGodotTableRowData rowData = RowDataContainer.CreateNode<EGodotTableRowData>("row" + dataPointer);
// rowData.Init(row);
// rowData.OnModify.Register(data =>
// {
// this.EGEditDialog(data, rowData.OnDataEdit, "Modify");
// });
// dataPointer++;
// }
InitPageData(); InitPageData();
} }
@ -133,6 +122,7 @@ namespace EGFramework.UI
}); });
} }
} }
public void InitPageMenu() public void InitPageMenu()
{ {
if (PageContainer == null) if (PageContainer == null)
@ -151,10 +141,12 @@ namespace EGFramework.UI
Button firstPage = PageContainer.CreateNode<Button>("firstPage"); Button firstPage = PageContainer.CreateNode<Button>("firstPage");
firstPage.Text = "<<"; firstPage.Text = "<<";
firstPage.Connect("pressed", Callable.From(ToFirstPage)); firstPage.Connect("pressed", Callable.From(ToFirstPage));
firstPage.FocusMode = FocusModeEnum.None;
Button lastPage = PageContainer.CreateNode<Button>("lastPage"); Button lastPage = PageContainer.CreateNode<Button>("lastPage");
lastPage.Text = "<"; lastPage.Text = "<";
lastPage.Connect("pressed", Callable.From(LastPage)); lastPage.Connect("pressed", Callable.From(LastPage));
lastPage.FocusMode = FocusModeEnum.None;
Label currentPage = PageContainer.CreateNode<Label>("currenLabel"); Label currentPage = PageContainer.CreateNode<Label>("currenLabel");
currentPage.Text = PageAdapter.CurrentPage.ToString(); currentPage.Text = PageAdapter.CurrentPage.ToString();
@ -163,10 +155,12 @@ namespace EGFramework.UI
Button nextPage = PageContainer.CreateNode<Button>("next"); Button nextPage = PageContainer.CreateNode<Button>("next");
nextPage.Text = ">"; nextPage.Text = ">";
nextPage.Connect("pressed", Callable.From(NextPage)); nextPage.Connect("pressed", Callable.From(NextPage));
nextPage.FocusMode = FocusModeEnum.None;
Button endPage = PageContainer.CreateNode<Button>("firstPage"); Button endPage = PageContainer.CreateNode<Button>("firstPage");
endPage.Text = ">>"; endPage.Text = ">>";
endPage.Connect("pressed", Callable.From(ToEndPage)); endPage.Connect("pressed", Callable.From(ToEndPage));
endPage.FocusMode = FocusModeEnum.None;
Control empty2 = PageContainer.CreateNode<Control>("empty2"); Control empty2 = PageContainer.CreateNode<Control>("empty2");
empty2.CustomMinimumSize = new Vector2(32, 0); empty2.CustomMinimumSize = new Vector2(32, 0);

2
addons/EGFramework/Module/SaveTools/Data/EGSqliteSave.cs

@ -14,7 +14,7 @@ namespace EGFramework{
/// <param name="path">please add *.db suffix or your db file suffix</param> /// <param name="path">please add *.db suffix or your db file suffix</param>
public override void InitSave(string path) public override void InitSave(string path)
{ {
if (!Directory.Exists(path)) if (!File.Exists(path))
{ {
Directory.CreateDirectory(path); Directory.CreateDirectory(path);
} }

52
addons/EGFramework/Module/SaveTools/EGSave.cs

@ -36,37 +36,52 @@ namespace EGFramework
LoadObjectFile<EGJsonSave>("SaveData/DefaultJsonSave.json"); LoadObjectFile<EGJsonSave>("SaveData/DefaultJsonSave.json");
} }
#region Load Data or Object and Unload #region Load Data or Object and Unload
public void LoadDataFile<TSaveData>(string path) where TSaveData:IEGSaveData,IEGSave,new(){ public IEGSaveData LoadDataFile<TSaveData>(string path) where TSaveData : IEGSaveData, IEGSave, new()
{
TSaveData saveData = new TSaveData(); TSaveData saveData = new TSaveData();
saveData.InitSave(path); saveData.InitSave(path);
if(!DataBaseFiles.ContainsKey(path)){ if (!DataBaseFiles.ContainsKey(path))
{
DataBaseFiles.Add(path, saveData); DataBaseFiles.Add(path, saveData);
}else{ }
else
{
DataBaseFiles[path] = saveData; DataBaseFiles[path] = saveData;
} }
return saveData;
} }
public void ReadData<TReadOnlyData>(string key,string data) where TReadOnlyData:IEGSaveDataReadOnly,IEGSaveReadOnly,new(){ public IEGSaveDataReadOnly ReadData<TReadOnlyData>(string key, string data) where TReadOnlyData : IEGSaveDataReadOnly, IEGSaveReadOnly, new()
{
TReadOnlyData readOnlyData = new TReadOnlyData(); TReadOnlyData readOnlyData = new TReadOnlyData();
readOnlyData.InitReadOnly(data); readOnlyData.InitReadOnly(data);
if(!DataBaseReadOnly.ContainsKey(key)){ if (!DataBaseReadOnly.ContainsKey(key))
{
DataBaseReadOnly.Add(key, readOnlyData); DataBaseReadOnly.Add(key, readOnlyData);
}else{ }
else
{
DataBaseReadOnly[key] = readOnlyData; DataBaseReadOnly[key] = readOnlyData;
} }
return readOnlyData;
} }
public void ReadData<TReadOnlyData>(string key,byte[] data) where TReadOnlyData:IEGSaveDataReadOnly,IEGSaveReadOnly,new(){ public IEGSaveDataReadOnly ReadData<TReadOnlyData>(string key, byte[] data) where TReadOnlyData : IEGSaveDataReadOnly, IEGSaveReadOnly, new()
{
TReadOnlyData readOnlyData = new TReadOnlyData(); TReadOnlyData readOnlyData = new TReadOnlyData();
readOnlyData.InitReadOnly(data); readOnlyData.InitReadOnly(data);
if(!DataBaseReadOnly.ContainsKey(key)){ if (!DataBaseReadOnly.ContainsKey(key))
{
DataBaseReadOnly.Add(key, readOnlyData); DataBaseReadOnly.Add(key, readOnlyData);
}else{ }
else
{
DataBaseReadOnly[key] = readOnlyData; DataBaseReadOnly[key] = readOnlyData;
} }
return readOnlyData;
} }
public void LoadObjectFile<TSaveObject>(string path) where TSaveObject:IEGSaveObject,IEGSave,new(){ public IEGSaveObject LoadObjectFile<TSaveObject>(string path) where TSaveObject:IEGSaveObject,IEGSave,new(){
TSaveObject saveObject = new TSaveObject(); TSaveObject saveObject = new TSaveObject();
saveObject.InitSave(path); saveObject.InitSave(path);
if(!ObjectFiles.ContainsKey(path)){ if(!ObjectFiles.ContainsKey(path)){
@ -74,20 +89,25 @@ namespace EGFramework
}else{ }else{
ObjectFiles[path] = saveObject; ObjectFiles[path] = saveObject;
} }
return saveObject;
} }
public void ReadObject<TReadOnlyObject>(string key,string data) where TReadOnlyObject:IEGSaveObjectReadOnly,IEGSaveReadOnly,new(){ public IEGSaveObjectReadOnly ReadObject<TReadOnlyObject>(string key, string data) where TReadOnlyObject : IEGSaveObjectReadOnly, IEGSaveReadOnly, new()
{
TReadOnlyObject readOnlyObject = new TReadOnlyObject(); TReadOnlyObject readOnlyObject = new TReadOnlyObject();
readOnlyObject.InitReadOnly(data); readOnlyObject.InitReadOnly(data);
if(!ObjectReadOnly.ContainsKey(key)){ if (!ObjectReadOnly.ContainsKey(key))
{
ObjectReadOnly.Add(key, readOnlyObject); ObjectReadOnly.Add(key, readOnlyObject);
}else{ }
else
{
ObjectReadOnly[key] = readOnlyObject; ObjectReadOnly[key] = readOnlyObject;
} }
return readOnlyObject;
} }
public void ReadObject<TReadOnlyObject>(string key,byte[] data) where TReadOnlyObject:IEGSaveObjectReadOnly,IEGSaveReadOnly,new(){ public IEGSaveObjectReadOnly ReadObject<TReadOnlyObject>(string key,byte[] data) where TReadOnlyObject:IEGSaveObjectReadOnly,IEGSaveReadOnly,new(){
TReadOnlyObject readOnlyObject = new TReadOnlyObject(); TReadOnlyObject readOnlyObject = new TReadOnlyObject();
readOnlyObject.InitReadOnly(data); readOnlyObject.InitReadOnly(data);
if(!ObjectReadOnly.ContainsKey(key)){ if(!ObjectReadOnly.ContainsKey(key)){
@ -95,7 +115,7 @@ namespace EGFramework
}else{ }else{
ObjectReadOnly[key] = readOnlyObject; ObjectReadOnly[key] = readOnlyObject;
} }
return readOnlyObject;
} }
public void Unload(string keyOrPath){ public void Unload(string keyOrPath){

Loading…
Cancel
Save