From 7596a60b51af3f1d9869afdca10703afab679e88 Mon Sep 17 00:00:00 2001 From: jkpete <1031139173@qq.com> Date: Tue, 24 Jun 2025 11:21:49 +0800 Subject: [PATCH] add a savedata table --- Example/SaveSystem/Script/ViewSaveSystem.cs | 31 ++++++---- .../Templete/Godot/UI/EGodotSaveTable.cs | 24 +++++++- .../Templete/Godot/UI/EGodotTable.cs | 18 ++---- .../Module/SaveTools/Data/EGSqliteSave.cs | 2 +- addons/EGFramework/Module/SaveTools/EGSave.cs | 60 ++++++++++++------- 5 files changed, 90 insertions(+), 45 deletions(-) diff --git a/Example/SaveSystem/Script/ViewSaveSystem.cs b/Example/SaveSystem/Script/ViewSaveSystem.cs index a1cfdbc..c9b17df 100644 --- a/Example/SaveSystem/Script/ViewSaveSystem.cs +++ b/Example/SaveSystem/Script/ViewSaveSystem.cs @@ -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"); - DataStudent dataStudent = new DataStudent(null, 18); - DataStudent dataStudent2 = new DataStudent("F", 20); List dataStudents = new List(); 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("Teacher"); table.InitData(dataStudents); + IEGSaveData SqliteTest = this.EGSave().LoadDataFile("SaveData/test.db"); + EGodotSaveTable PersonTable = container.CreateNode("Person"); + PersonTable.InitSaveData(SqliteTest); + PersonTable.InitData("person"); + // EGodotTableRowData rowData = container.CreateNode("RowData"); // rowData.Init(new Dictionary() { { "Name", "Tom" }, { "Age", 18 } }); // EGodotRowData rowData2 = container.CreateNode("RowData2"); @@ -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; } + } } \ No newline at end of file diff --git a/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotSaveTable.cs b/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotSaveTable.cs index 36e517a..38f8a4f 100644 --- a/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotSaveTable.cs +++ b/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotSaveTable.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Linq; using Godot; namespace EGFramework.UI @@ -8,6 +9,27 @@ namespace EGFramework.UI public IEGSaveData SaveData { set; get; } public Dictionary TitleList { set; get; } = new Dictionary(); - + public void InitSaveData(IEGSaveData eGSaveData) where TSaveData : IEGSaveData + { + this.SaveData = eGSaveData; + + } + public void InitData(string key) where T : new() + { + int count = SaveData.GetAll(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(key).EGenerateDictionaryByGroup()); + InitPageMenu(); + } } } \ No newline at end of file diff --git a/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotTable.cs b/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotTable.cs index 70cce4a..d27591c 100644 --- a/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotTable.cs +++ b/addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotTable.cs @@ -87,17 +87,6 @@ namespace EGFramework.UI this.TableData = rowDataList; ToFirstPage(); - // int dataPointer = 0; - // foreach (Dictionary row in rowDataList) - // { - // EGodotTableRowData rowData = RowDataContainer.CreateNode("row" + dataPointer); - // rowData.Init(row); - // rowData.OnModify.Register(data => - // { - // this.EGEditDialog(data, rowData.OnDataEdit, "Modify"); - // }); - // dataPointer++; - // } InitPageData(); } @@ -133,6 +122,7 @@ namespace EGFramework.UI }); } } + public void InitPageMenu() { if (PageContainer == null) @@ -151,22 +141,26 @@ namespace EGFramework.UI Button firstPage = PageContainer.CreateNode