Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 792df05

Browse files
committed
Made compatible with current ReClass.NET master branch.
1 parent 3b566ab commit 792df05

File tree

4 files changed

+68
-55
lines changed

4 files changed

+68
-55
lines changed

‎FrostbitePluginExt.cs‎

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.Drawing;
4+
using System.Text;
35
using ReClassNET;
6+
using ReClassNET.Extensions;
47
using ReClassNET.Memory;
58
using ReClassNET.Nodes;
69
using ReClassNET.Plugins;
7-
using ReClassNET.Util;
810

911
namespace FrostbitePlugin
1012
{
@@ -14,11 +16,6 @@ public class FrostbitePluginExt : Plugin
1416

1517
internal static Settings Settings;
1618

17-
private INodeInfoReader reader;
18-
19-
private WeakPtrNodeConverter converter;
20-
private WeakPtrCodeGenerator generator;
21-
2219
public override Image Icon => Properties.Resources.logo_frostbite;
2320

2421
public override bool Initialize(IPluginHost host)
@@ -34,33 +31,38 @@ public override bool Initialize(IPluginHost host)
3431

3532
Settings = host.Settings;
3633

37-
// Register the InfoReader
38-
reader = new FrostBiteNodeInfoReader();
39-
host.RegisterNodeInfoReader(reader);
40-
41-
// Register the WeakPtr node
42-
converter = new WeakPtrNodeConverter();
43-
generator = new WeakPtrCodeGenerator();
44-
host.RegisterNodeType(typeof(WeakPtrNode), "Frostbite WeakPtr", Icon, converter, generator);
45-
4634
return true;
4735
}
4836

4937
public override void Terminate()
5038
{
51-
host.DeregisterNodeType(typeof(WeakPtrNode), converter, generator);
39+
host = null;
40+
}
41+
42+
public override IReadOnlyList<INodeInfoReader> GetNodeInfoReaders()
43+
{
44+
// Register the InfoReader
5245

53-
host.DeregisterNodeInfoReader(reader);
46+
return new[] { new FrostBiteNodeInfoReader() };
47+
}
5448

55-
host = null;
49+
public override CustomNodeTypes GetCustomNodeTypes()
50+
{
51+
// Register the WeakPtr node
52+
53+
return new CustomNodeTypes
54+
{
55+
CodeGenerator = new WeakPtrCodeGenerator(),
56+
Serializer = new WeakPtrNodeConverter(),
57+
NodeTypes = new[] { typeof(WeakPtrNode) }
58+
};
5659
}
5760
}
5861

59-
6062
/// <summary>A custom node info reader which outputs Frostbite type infos.</summary>
6163
public class FrostBiteNodeInfoReader : INodeInfoReader
6264
{
63-
public string ReadNodeInfo(BaseNode node, IntPtr nodeAddress, IntPtr nodeValue, MemoryBuffer memory)
65+
public string ReadNodeInfo(BaseHexCommentNode node, IntPtr nodeAddress, IntPtr nodeValue, MemoryBuffer memory)
6466
{
6567
// 1. try the direct value
6668
var info = ReadPtrInfo(nodeValue, memory);
@@ -70,7 +72,7 @@ public string ReadNodeInfo(BaseNode node, IntPtr nodeAddress, IntPtr nodeValue,
7072
}
7173

7274
// 2. try indirect pointer
73-
var indirectPtr = memory.Process.ReadRemoteObject<IntPtr>(nodeValue);
75+
var indirectPtr = memory.Process.ReadRemoteIntPtr(nodeValue);
7476
if (indirectPtr.MayBeValid())
7577
{
7678
info = ReadPtrInfo(indirectPtr, memory);
@@ -83,7 +85,7 @@ public string ReadNodeInfo(BaseNode node, IntPtr nodeAddress, IntPtr nodeValue,
8385
var weakTempPtr = indirectPtr - IntPtr.Size;
8486
if (weakTempPtr.MayBeValid())
8587
{
86-
var weakPtr = memory.Process.ReadRemoteObject<IntPtr>(weakTempPtr);
88+
var weakPtr = memory.Process.ReadRemoteIntPtr(weakTempPtr);
8789
if (weakPtr.MayBeValid())
8890
{
8991
info = ReadPtrInfo(weakPtr, memory);
@@ -100,24 +102,24 @@ public string ReadNodeInfo(BaseNode node, IntPtr nodeAddress, IntPtr nodeValue,
100102

101103
private static string ReadPtrInfo(IntPtr value, MemoryBuffer memory)
102104
{
103-
var getTypeFnPtr = memory.Process.ReadRemoteObject<IntPtr>(value);
105+
var getTypeFnPtr = memory.Process.ReadRemoteIntPtr(value);
104106
if (getTypeFnPtr.MayBeValid())
105107
{
106108
#if RECLASSNET64
107-
var offset = memory.Process.ReadRemoteObject<int>(getTypeFnPtr + 3);
109+
var offset = memory.Process.ReadRemoteInt32(getTypeFnPtr + 3);
108110
var typeInfoPtr = getTypeFnPtr + offset + 7;
109111
#else
110-
var typeInfoPtr = memory.Process.ReadRemoteObject<IntPtr>(getTypeFnPtr + 1);
112+
var typeInfoPtr = memory.Process.ReadRemoteIntPtr(getTypeFnPtr + 1);
111113
#endif
112114
if (typeInfoPtr.MayBeValid())
113115
{
114-
var typeInfoDataPtr = memory.Process.ReadRemoteObject<IntPtr>(typeInfoPtr);
116+
var typeInfoDataPtr = memory.Process.ReadRemoteIntPtr(typeInfoPtr);
115117
if (typeInfoDataPtr.MayBeValid())
116118
{
117-
var namePtr = memory.Process.ReadRemoteObject<IntPtr>(typeInfoDataPtr);
119+
var namePtr = memory.Process.ReadRemoteIntPtr(typeInfoDataPtr);
118120
if (namePtr.MayBeValid())
119121
{
120-
var info = memory.Process.ReadRemoteUTF8StringUntilFirstNullCharacter(namePtr, 64);
122+
var info = memory.Process.ReadRemoteStringUntilFirstNullCharacter(Encoding.UTF8,namePtr, 64);
121123
if (info.Length > 0 && info[0].IsPrintable())
122124
{
123125
return info;

‎WeakPtrCodeGenerator.cs‎

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,21 @@
44

55
namespace FrostbitePlugin
66
{
7-
public class WeakPtrCodeGenerator : ICustomCodeGenerator
7+
public class WeakPtrCodeGenerator : ICustomCppCodeGenerator
88
{
9-
/// <summary>Checks if the language is C++ and the node is a WeakPtrNode.</summary>
10-
/// <param name="node">The node to check.</param>
11-
/// <param name="language">The language to check.</param>
12-
/// <returns>True if we can generate code, false if not.</returns>
13-
public bool CanGenerateCode(BaseNode node, Language language) => language == Language.Cpp && node is WeakPtrNode;
9+
public bool CanHandle(BaseNode node)
10+
{
11+
return node is WeakPtrNode;
12+
}
13+
14+
public BaseNode TransformNode(BaseNode node)
15+
{
16+
return node;
17+
}
1418

15-
/// <summary>Gets the member definition of the node.</summary>
16-
/// <param name="node">The member node.</param>
17-
/// <param name="language">The language to generate.</param>
18-
/// <returns>The member definition of the node.</returns>
19-
public MemberDefinition GetMemberDefinition(BaseNode node, Language language, ILogger logger)
19+
public string GetTypeDefinition(BaseNode node, GetTypeDefinitionFunc defaultGetTypeDefinitionFunc, ResolveWrappedTypeFunc defaultResolveWrappedTypeFunc, ILogger logger)
2020
{
21-
return newMemberDefinition(node,$"fb::WeakPtr<{((BaseReferenceNode)node).InnerNode.Name}>");
21+
return $"fb::WeakPtr<class {((ClassNode)((WeakPtrNode)node).InnerNode).Name}>";
2222
}
2323
}
2424
}

‎WeakPtrNode.cs‎

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,50 @@
11
using System;
22
using System.Drawing;
3+
using ReClassNET.Extensions;
34
using ReClassNET.Memory;
45
using ReClassNET.Nodes;
56
using ReClassNET.UI;
6-
using ReClassNET.Util;
77

88
namespace FrostbitePlugin
99
{
10-
public class WeakPtrNode : BaseReferenceNode
10+
public class WeakPtrNode : BaseWrapperNode
1111
{
1212
private readonly MemoryBuffer memory = new MemoryBuffer();
1313

1414
/// <summary>Size of the node in bytes.</summary>
1515
public override int MemorySize => IntPtr.Size;
1616

17-
/// <summary>Disable the cycle check for pointer references.</summary>
18-
public override bool PerformCycleCheck => false;
17+
/// <summary>Disable the cycle check for pointers.</summary>
18+
protected override bool PerformCycleCheck => false;
19+
20+
public override void GetUserInterfaceInfo(out string name, out Image icon)
21+
{
22+
name = "Weak Pointer";
23+
icon = Properties.Resources.logo_frostbite;
24+
}
1925

2026
/// <summary>Called when the node was created. Creates a new class as inner node.</summary>
21-
public override void Intialize()
27+
public override void Initialize()
2228
{
2329
var node = ClassNode.Create();
24-
node.Intialize();
30+
node.Initialize();
2531
node.AddBytes(64);
2632
InnerNode = node;
2733
}
2834

35+
public override bool CanChangeInnerNodeTo(BaseNode node)
36+
{
37+
return node is ClassNode;
38+
}
39+
2940
/// <summary>Draws this node.</summary>
3041
/// <param name="view">The view information.</param>
3142
/// <param name="x">The x coordinate.</param>
3243
/// <param name="y">The y coordinate.</param>
3344
/// <returns>The pixel size the node occupies.</returns>
3445
public override Size Draw(ViewInfo view, int x, int y)
3546
{
36-
if (IsHidden)
47+
if (IsHidden&&!IsWrapped)
3748
{
3849
return DrawHidden(view, x, y);
3950
}
@@ -54,7 +65,7 @@ public override Size Draw(ViewInfo view, int x, int y)
5465
x = AddText(view, x, y, view.Settings.TypeColor, HotSpot.NoneId, "WeakPtr") + view.Font.Width;
5566
x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NameId, Name) + view.Font.Width;
5667
x = AddText(view, x, y, view.Settings.ValueColor, HotSpot.NoneId, $"<{InnerNode.Name}>");
57-
x = AddIcon(view, x, y, Icons.Change, 4, HotSpotType.ChangeType);
68+
x = AddIcon(view, x, y, Icons.Change, 4, HotSpotType.ChangeClassType);
5869

5970
x += view.Font.Width;
6071
AddComment(view, x, y);
@@ -63,7 +74,7 @@ public override Size Draw(ViewInfo view, int x, int y)
6374

6475
var size = new Size(x - origX, y - origY);
6576

66-
if (levelsOpen[view.Level])
77+
if (LevelsOpen[view.Level])
6778
{
6879
var ptr = view.Memory.ReadObject<IntPtr>(Offset);
6980
if (!ptr.IsNull())
@@ -97,13 +108,13 @@ public override Size Draw(ViewInfo view, int x, int y)
97108
/// <returns>The calculated height.</returns>
98109
public override int CalculateDrawnHeight(ViewInfo view)
99110
{
100-
if (IsHidden)
111+
if (IsHidden&&!IsWrapped)
101112
{
102113
return HiddenHeight;
103114
}
104115

105116
var h = view.Font.Height;
106-
if (levelsOpen[view.Level])
117+
if (LevelsOpen[view.Level])
107118
{
108119
h += InnerNode.CalculateDrawnHeight(view);
109120
}

‎WeakPtrNodeConverter.cs‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
namespace FrostbitePlugin
99
{
10-
public class WeakPtrNodeConverter : ICustomNodeConverter
10+
public class WeakPtrNodeConverter : ICustomNodeSerializer
1111
{
1212
/// <summary>Name of the type used in the XML data.</summary>
1313
private const string XmlType = "FrostBite::WeakPtr";
@@ -29,7 +29,7 @@ public class WeakPtrNodeConverter : ICustomNodeConverter
2929
/// <param name="logger">The logger used to output messages.</param>
3030
/// <param name="node">[out] The node for the xml element.</param>
3131
/// <returns>True if a node was created, otherwise false.</returns>
32-
public bool TryCreateNodeFromElement(XElement element, ClassNode parent, IEnumerable<ClassNode> classes, ILogger logger, out BaseNode node)
32+
public bool TryCreateNodeFromElement(XElement element, BaseNode parent, IEnumerable<ClassNode> classes, ILogger logger,CreateNodeFromElementHandlerdefaultHandler, out BaseNode node)
3333
{
3434
node = null;
3535

@@ -59,14 +59,14 @@ public bool TryCreateNodeFromElement(XElement element, ClassNode parent, IEnumer
5959
/// <param name="node">The node to create the xml element from.</param>
6060
/// <param name="logger">The logger used to output messages.</param>
6161
/// <returns>The xml element for the node.</returns>
62-
public XElement CreateElementFromNode(BaseNode node, ILogger logger)
62+
public XElement CreateElementFromNode(BaseNode node, ILogger logger,CreateElementFromNodeHandlerdefaultHandler)
6363
{
6464
return new XElement(
6565
ReClassNetFile.XmlNodeElement,
6666
new XAttribute(ReClassNetFile.XmlNameAttribute, node.Name ?? string.Empty),
6767
new XAttribute(ReClassNetFile.XmlCommentAttribute, node.Comment ?? string.Empty),
6868
new XAttribute(ReClassNetFile.XmlTypeAttribute, XmlType),
69-
new XAttribute(ReClassNetFile.XmlReferenceAttribute, (nodeasWeakPtrNode).InnerNode.Uuid.ToBase64String())
69+
new XAttribute(ReClassNetFile.XmlReferenceAttribute, ((ClassNode)((WeakPtrNode)node).InnerNode).Uuid.ToBase64String())
7070
);
7171
}
7272
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /