Skip to content

Commit 67ac5c8

Browse files
committed
Added BaseClassWrapperNode.
1 parent dd018ee commit 67ac5c8

File tree

5 files changed

+46
-28
lines changed

5 files changed

+46
-28
lines changed

ReClass.NET/DataExchange/ReClass/ReClassNetFile.Read.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ ClassNode GetClassNodeFromElementReference()
178178
{
179179
BaseNode innerNode = null;
180180

181-
if (node is ClassInstanceNode)
181+
if (node is BaseClassWrapperNode)
182182
{
183183
innerNode = GetClassNodeFromElementReference();
184184
if (innerNode == null)

ReClass.NET/DataExchange/ReClass/ReClassNetFile.Write.cs

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -65,33 +65,45 @@ private static XElement CreateElementFromNode(BaseNode node, ILogger logger)
6565
Contract.Requires(node != null);
6666
Contract.Requires(logger != null);
6767

68-
var converter = CustomNodeSerializer.GetWriteConverter(node);
69-
if (converter != null)
68+
XElement CreateElement()
7069
{
71-
return converter.CreateElementFromNode(node, logger, CreateElementFromNode);
70+
var converter = CustomNodeSerializer.GetWriteConverter(node);
71+
if (converter != null)
72+
{
73+
return converter.CreateElementFromNode(node, logger, CreateElementFromNode);
74+
}
75+
76+
if (!buildInTypeToStringMap.TryGetValue(node.GetType(), out var typeString))
77+
{
78+
logger.Log(LogLevel.Error, $"Skipping node with unknown type: {node.Name}");
79+
logger.Log(LogLevel.Warning, node.GetType().ToString());
80+
81+
return null;
82+
}
83+
84+
return new XElement(
85+
XmlNodeElement,
86+
new XAttribute(XmlTypeAttribute, typeString)
87+
);
7288
}
7389

74-
if (!buildInTypeToStringMap.TryGetValue(node.GetType(), out var typeString))
90+
var element = CreateElement();
91+
if (element == null)
7592
{
76-
logger.Log(LogLevel.Error, $"Skipping node with unknown type: {node.Name}");
77-
logger.Log(LogLevel.Warning, node.GetType().ToString());
93+
logger.Log(LogLevel.Error, "Could not create element.");
7894

7995
return null;
8096
}
8197

82-
var element = new XElement(
83-
XmlNodeElement,
84-
new XAttribute(XmlNameAttribute, node.Name ?? string.Empty),
85-
new XAttribute(XmlCommentAttribute, node.Comment ?? string.Empty),
86-
new XAttribute(XmlHiddenAttribute, node.IsHidden.ToString()),
87-
new XAttribute(XmlTypeAttribute, typeString)
88-
);
98+
element.SetAttributeValue(XmlNameAttribute, node.Name ?? string.Empty);
99+
element.SetAttributeValue(XmlCommentAttribute, node.Comment ?? string.Empty);
100+
element.SetAttributeValue(XmlHiddenAttribute, node.IsHidden.ToString());
89101

90102
if (node is BaseWrapperNode wrapperNode)
91103
{
92-
if (node is ClassInstanceNode classInstanceNode)
104+
if (node is BaseClassWrapperNode classWrapperNode)
93105
{
94-
element.SetAttributeValue(XmlReferenceAttribute, ((ClassNode)classInstanceNode.InnerNode).Uuid.ToBase64String());
106+
element.SetAttributeValue(XmlReferenceAttribute, ((ClassNode)classWrapperNode.InnerNode).Uuid.ToBase64String());
95107
}
96108
else if (wrapperNode.InnerNode != null)
97109
{
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
namespace ReClassNET.Nodes
2+
{
3+
public abstract class BaseClassWrapperNode : BaseWrapperNode
4+
{
5+
public override void Initialize()
6+
{
7+
InnerNode = ClassNode.Create();
8+
InnerNode.Initialize();
9+
}
10+
11+
public override bool CanChangeInnerNodeTo(BaseNode node)
12+
{
13+
return node is ClassNode;
14+
}
15+
}
16+
}

ReClass.NET/Nodes/ClassInstanceNode.cs

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
namespace ReClassNET.Nodes
77
{
8-
public class ClassInstanceNode : BaseWrapperNode
8+
public class ClassInstanceNode : BaseClassWrapperNode
99
{
1010
public override int MemorySize => InnerNode.MemorySize;
1111

@@ -17,17 +17,6 @@ public override void GetUserInterfaceInfo(out string name, out Image icon)
1717
icon = Properties.Resources.B16x16_Button_Class_Instance;
1818
}
1919

20-
public override void Initialize()
21-
{
22-
InnerNode = ClassNode.Create();
23-
InnerNode.Initialize();
24-
}
25-
26-
public override bool CanChangeInnerNodeTo(BaseNode node)
27-
{
28-
return node is ClassNode;
29-
}
30-
3120
public override Size Draw(ViewInfo view, int x, int y)
3221
{
3322
if (IsHidden && !IsWrapped)

ReClass.NET/ReClass.NET.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,7 @@
248248
<Compile Include="Native\NativeMethods.Unix.cs" />
249249
<Compile Include="Native\NativeMethods.Windows.cs" />
250250
<Compile Include="Nodes\ArrayNode.cs" />
251+
<Compile Include="Nodes\BaseClassWrapperNode.cs" />
251252
<Compile Include="Nodes\BaseFunctionNode.cs" />
252253
<Compile Include="Nodes\BaseWrapperArrayNode.cs" />
253254
<Compile Include="Nodes\BaseWrapperNode.cs" />

0 commit comments

Comments
 (0)