Browse Source

move tree code to a special file

master
jkpete 4 weeks ago
parent
commit
f7476a9d99
  1. 15
      addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotMenu.cs
  2. 126
      addons/EGFramework/Module/GenerateTools/Templete/Variant/EGDataStruct.cs
  3. 127
      addons/EGFramework/Module/GenerateTools/Templete/Variant/EGTree.cs

15
addons/EGFramework/Module/GenerateTools/Templete/Godot/UI/EGodotMenu.cs

@ -5,14 +5,21 @@ namespace EGFramework.UI
{ {
public partial class EGodotMenu : Control, IEGFramework public partial class EGodotMenu : Control, IEGFramework
{ {
public IOCContainer PageContainer { set; get; } public Dictionary<string, Control> PageContainer { set; get; } = new Dictionary<string, Control>();
public void RegisterPage<T>(T page) where T : Control public void RegisterPage<T>(string name,T page) where T : Control
{ {
PageContainer.Register(page); if (PageContainer.ContainsKey(name))
{
PageContainer[name] = page;
}
else
{
PageContainer.Add(name,page);
}
} }
public void OpenPage<T>(T page) where T : Control public void OpenPage<T>(string name,T page) where T : Control
{ {
page.Visible = true; page.Visible = true;

126
addons/EGFramework/Module/GenerateTools/Templete/Variant/EGDataStruct.cs

@ -1,10 +1,5 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO;
using System.Linq;
using Godot;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace EGFramework namespace EGFramework
{ {
@ -61,125 +56,4 @@ namespace EGFramework
return Value; return Value;
} }
} }
public interface IEGTree
{
public string Name { set; get; }
public IEGTree GetParent();
public void SetParent(IEGTree tree);
public IEnumerable<IEGTree> GetChilds();
public void AppendTree(IEGTree tree);
}
public class EGTree : IEGTree
{
public string Name { set; get; }
public string StrValue { set; get; }
public long IntegerValue { set; get; }
public byte[] ByteValue { set; get; }
public float FloatValue { set; get; }
public bool BoolValue { set; get; }
public IEGTree Parent { set; get; }
public List<IEGTree> Childs { set; get; } = new List<IEGTree>();
public EGTree()
{
}
public EGTree(string name)
{
this.Name = name;
}
public void AppendTree(IEGTree tree)
{
tree.SetParent(this);
Childs.Add(tree);
}
public virtual IEnumerable<IEGTree> GetChilds()
{
return Childs;
}
public virtual IEGTree GetParent()
{
return Parent;
}
public void SetParent(IEGTree tree)
{
this.Parent = tree;
}
}
public static class EGTreeFactory
{
public static EGTree CreateTreeByJson(string json)
{
JsonTextReader reader = new JsonTextReader(new StringReader(json));
Stack<IEGTree> TreeStack = new Stack<IEGTree>();
EGTree resultTree = new EGTree();
EGTree lastTree = null;
while (reader.Read())
{
if (reader.TokenType == JsonToken.StartObject)
{
if (lastTree != null)
{
TreeStack.Push(lastTree);
}
}
if (reader.TokenType == JsonToken.EndObject)
{
if(TreeStack.Count>0)
TreeStack.Pop();
}
if (reader.TokenType == JsonToken.PropertyName)
{
EGTree newTree = new EGTree();
if (reader.Value != null)
{
newTree.Name = reader.Value.ToString();
}
if (TreeStack.Count > 0)
{
TreeStack.Peek().AppendTree(newTree);
}
else
{
resultTree.AppendTree(newTree);
}
lastTree = newTree;
}
if (lastTree != null && reader.TokenType == JsonToken.Integer)
{
lastTree.IntegerValue = (long)reader.Value;
}
if (lastTree != null && reader.TokenType == JsonToken.Boolean)
{
lastTree.BoolValue = (bool)reader.Value;
}
if (lastTree != null && reader.TokenType == JsonToken.String)
{
lastTree.StrValue = (string)reader.Value;
}
if (lastTree != null && reader.TokenType == JsonToken.Float)
{
lastTree.FloatValue = (float)reader.Value;
}
if (lastTree!=null && reader.TokenType == JsonToken.Bytes)
{
lastTree.ByteValue = (byte[])reader.Value;
}
}
return resultTree;
}
}
} }

127
addons/EGFramework/Module/GenerateTools/Templete/Variant/EGTree.cs

@ -0,0 +1,127 @@
using System.Collections.Generic;
using System.IO;
using Newtonsoft.Json;
namespace EGFramework
{
public interface IEGTree
{
public string Name { set; get; }
public IEGTree GetParent();
public void SetParent(IEGTree tree);
public IEnumerable<IEGTree> GetChilds();
public void AppendTree(IEGTree tree);
}
public class EGTree : IEGTree
{
public string Name { set; get; }
public string StrValue { set; get; }
public long IntegerValue { set; get; }
public byte[] ByteValue { set; get; }
public float FloatValue { set; get; }
public bool BoolValue { set; get; }
public IEGTree Parent { set; get; }
public List<IEGTree> Childs { set; get; } = new List<IEGTree>();
public EGTree()
{
}
public EGTree(string name)
{
this.Name = name;
}
public void AppendTree(IEGTree tree)
{
tree.SetParent(this);
Childs.Add(tree);
}
public virtual IEnumerable<IEGTree> GetChilds()
{
return Childs;
}
public virtual IEGTree GetParent()
{
return Parent;
}
public void SetParent(IEGTree tree)
{
this.Parent = tree;
}
}
public static class EGTreeFactory
{
public static EGTree CreateTreeByJson(string json)
{
JsonTextReader reader = new JsonTextReader(new StringReader(json));
Stack<IEGTree> TreeStack = new Stack<IEGTree>();
EGTree resultTree = new EGTree();
EGTree lastTree = null;
while (reader.Read())
{
if (reader.TokenType == JsonToken.StartObject)
{
if (lastTree != null)
{
TreeStack.Push(lastTree);
}
}
if (reader.TokenType == JsonToken.EndObject)
{
if(TreeStack.Count>0)
TreeStack.Pop();
}
if (reader.TokenType == JsonToken.PropertyName)
{
EGTree newTree = new EGTree();
if (reader.Value != null)
{
newTree.Name = reader.Value.ToString();
}
if (TreeStack.Count > 0)
{
TreeStack.Peek().AppendTree(newTree);
}
else
{
resultTree.AppendTree(newTree);
}
lastTree = newTree;
}
if (lastTree != null && reader.TokenType == JsonToken.Integer)
{
lastTree.IntegerValue = (long)reader.Value;
}
if (lastTree != null && reader.TokenType == JsonToken.Boolean)
{
lastTree.BoolValue = (bool)reader.Value;
}
if (lastTree != null && reader.TokenType == JsonToken.String)
{
lastTree.StrValue = (string)reader.Value;
}
if (lastTree != null && reader.TokenType == JsonToken.Float)
{
lastTree.FloatValue = (float)reader.Value;
}
if (lastTree!=null && reader.TokenType == JsonToken.Bytes)
{
lastTree.ByteValue = (byte[])reader.Value;
}
}
return resultTree;
}
}
}
Loading…
Cancel
Save