Browse Source

add a savedata table

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

31
Example/SaveSystem/Script/ViewSaveSystem.cs

@ -6,29 +6,31 @@ using Godot; @@ -6,29 +6,31 @@ using Godot;
using LiteDB;
using Renci.SshNet;
namespace EGFramework.Examples.Test{
public partial class ViewSaveSystem : Node,IEGFramework
namespace EGFramework.Examples.Test {
public partial class ViewSaveSystem : Node, IEGFramework
{
public string[][] DataList { get; set; }
public string[][] DataList2 { get; set; }
public override void _Ready()
{
Container container = this.GetNode<TabContainer>("TabContainer");
DataStudent dataStudent = new DataStudent(null, 18);
DataStudent dataStudent2 = new DataStudent("F", 20);
List<DataStudent> dataStudents = new List<DataStudent>();
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");
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");
// rowData.Init(new Dictionary<string, object>() { { "Name", "Tom" }, { "Age", 18 } });
// EGodotRowData rowData2 = container.CreateNode<EGodotRowData>("RowData2");
@ -42,16 +44,23 @@ namespace EGFramework.Examples.Test{ @@ -42,16 +44,23 @@ namespace EGFramework.Examples.Test{
}
}
public struct DataStudent{
public struct DataStudent {
public string Name { get; set; }
public int Age;
public int ID;
public DataStudent(string name,int age){
public DataStudent(string name, int age) {
Name = name;
Age = age;
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; }
}
}

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

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
using System.Collections.Generic;
using System.Linq;
using Godot;
namespace EGFramework.UI
@ -8,6 +9,27 @@ namespace EGFramework.UI @@ -8,6 +9,27 @@ namespace EGFramework.UI
public IEGSaveData SaveData { set; get; }
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();
}
}
}

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

@ -87,17 +87,6 @@ namespace EGFramework.UI @@ -87,17 +87,6 @@ namespace EGFramework.UI
this.TableData = rowDataList;
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();
}
@ -133,6 +122,7 @@ namespace EGFramework.UI @@ -133,6 +122,7 @@ namespace EGFramework.UI
});
}
}
public void InitPageMenu()
{
if (PageContainer == null)
@ -151,22 +141,26 @@ namespace EGFramework.UI @@ -151,22 +141,26 @@ namespace EGFramework.UI
Button firstPage = PageContainer.CreateNode<Button>("firstPage");
firstPage.Text = "<<";
firstPage.Connect("pressed", Callable.From(ToFirstPage));
firstPage.FocusMode = FocusModeEnum.None;
Button lastPage = PageContainer.CreateNode<Button>("lastPage");
lastPage.Text = "<";
lastPage.Connect("pressed", Callable.From(LastPage));
lastPage.FocusMode = FocusModeEnum.None;
Label currentPage = PageContainer.CreateNode<Label>("currenLabel");
currentPage.Text = PageAdapter.CurrentPage.ToString();
Button nextPage = PageContainer.CreateNode<Button>("next");
nextPage.Text = ">";
nextPage.Connect("pressed", Callable.From(NextPage));
nextPage.FocusMode = FocusModeEnum.None;
Button endPage = PageContainer.CreateNode<Button>("firstPage");
endPage.Text = ">>";
endPage.Connect("pressed", Callable.From(ToEndPage));
endPage.FocusMode = FocusModeEnum.None;
Control empty2 = PageContainer.CreateNode<Control>("empty2");
empty2.CustomMinimumSize = new Vector2(32, 0);

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

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

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

@ -36,37 +36,52 @@ namespace EGFramework @@ -36,37 +36,52 @@ namespace EGFramework
LoadObjectFile<EGJsonSave>("SaveData/DefaultJsonSave.json");
}
#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();
saveData.InitSave(path);
if(!DataBaseFiles.ContainsKey(path)){
DataBaseFiles.Add(path,saveData);
}else{
if (!DataBaseFiles.ContainsKey(path))
{
DataBaseFiles.Add(path, saveData);
}
else
{
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();
readOnlyData.InitReadOnly(data);
if(!DataBaseReadOnly.ContainsKey(key)){
DataBaseReadOnly.Add(key,readOnlyData);
}else{
if (!DataBaseReadOnly.ContainsKey(key))
{
DataBaseReadOnly.Add(key, readOnlyData);
}
else
{
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();
readOnlyData.InitReadOnly(data);
if(!DataBaseReadOnly.ContainsKey(key)){
DataBaseReadOnly.Add(key,readOnlyData);
}else{
if (!DataBaseReadOnly.ContainsKey(key))
{
DataBaseReadOnly.Add(key, readOnlyData);
}
else
{
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();
saveObject.InitSave(path);
if(!ObjectFiles.ContainsKey(path)){
@ -74,20 +89,25 @@ namespace EGFramework @@ -74,20 +89,25 @@ namespace EGFramework
}else{
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();
readOnlyObject.InitReadOnly(data);
if(!ObjectReadOnly.ContainsKey(key)){
ObjectReadOnly.Add(key,readOnlyObject);
}else{
if (!ObjectReadOnly.ContainsKey(key))
{
ObjectReadOnly.Add(key, readOnlyObject);
}
else
{
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();
readOnlyObject.InitReadOnly(data);
if(!ObjectReadOnly.ContainsKey(key)){
@ -95,7 +115,7 @@ namespace EGFramework @@ -95,7 +115,7 @@ namespace EGFramework
}else{
ObjectReadOnly[key] = readOnlyObject;
}
return readOnlyObject;
}
public void Unload(string keyOrPath){

Loading…
Cancel
Save