Skip to content

Commit 034ce0d

Browse files
committed
feat: IMaaContext & IMaaResource .GetNodeData()
MaaXYZ/MaaFramework#680
1 parent 3466460 commit 034ce0d

6 files changed

Lines changed: 56 additions & 1 deletion

File tree

src/MaaFramework.Binding.Native/MaaContext.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,14 @@ public bool OverrideNext(string nodeName, IEnumerable<string> nextList)
8888
=> MaaStringListBuffer.TrySetList(nextList, listBuffer
8989
=> MaaContextOverrideNext(Handle, nodeName, listBuffer));
9090

91+
/// <inheritdoc/>
92+
/// <remarks>
93+
/// Wrapper of <see cref="MaaContextGetNodeData"/>.
94+
/// </remarks>
95+
public bool GetNodeData(string nodeName, [MaybeNullWhen(false)][StringSyntax("Json")] out string data)
96+
=> MaaStringBuffer.TryGetValue(out data, buffer
97+
=> MaaContextGetNodeData(Handle, nodeName, buffer));
98+
9199
/// <inheritdoc/>
92100
/// <remarks>
93101
/// Wrapper of <see cref="MaaContextGetTaskId"/>.

src/MaaFramework.Binding.Native/MaaResource.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,14 @@ public bool OverrideNext(string nodeName, IEnumerable<string> nextList)
204204
=> MaaStringListBuffer.TrySetList(nextList, listBuffer
205205
=> MaaResourceOverrideNext(Handle, nodeName, listBuffer));
206206

207+
/// <inheritdoc/>
208+
/// <remarks>
209+
/// Wrapper of <see cref="MaaResourceGetNodeData"/>.
210+
/// </remarks>
211+
public bool GetNodeData(string nodeName, [MaybeNullWhen(false)][StringSyntax("Json")] out string data)
212+
=> MaaStringBuffer.TryGetValue(out data, buffer
213+
=> MaaResourceGetNodeData(Handle, nodeName, buffer));
214+
207215
/// <inheritdoc/>
208216
/// <remarks>
209217
/// Wrapper of <see cref="MaaResourceStatus"/>.

src/MaaFramework.Binding.UnitTests/Test_Custom.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,10 @@ public bool Analyze(in IMaaContext context, in AnalyzeArgs args, in AnalyzeResul
5656
Assert.AreEqual(
5757
context.TaskJob.Id, cloneContext.TaskJob.Id);
5858

59+
Assert.IsFalse(
60+
context.GetNodeData(DiffEntry, out var data));
61+
Assert.IsNull(data);
62+
5963
var recognitionDetail =
6064
context.RunRecognition(DiffEntry, args.Image, DiffParam);
6165
Assert.IsNotNull(
@@ -68,6 +72,17 @@ public bool Analyze(in IMaaContext context, in AnalyzeArgs args, in AnalyzeResul
6872
Assert.IsTrue(
6973
cloneContext.OverrideNext(DiffEntry, [DiffEntry]));
7074

75+
Assert.IsTrue(
76+
cloneContext.GetNodeData(DiffEntry, out data));
77+
Assert.IsNotNull(data);
78+
Assert.IsTrue(
79+
data.Contains($"\"next\":[\"{DiffEntry}\"]"));
80+
81+
Assert.IsTrue(
82+
context.GetNodeData(DiffEntry, out data));
83+
Assert.IsFalse(
84+
data.Contains($"\"next\":[\"{DiffEntry}\"]"));
85+
7186
Assert.IsTrue(
7287
recognitionDetail.HitBox.TryCopyTo(results.Box));
7388
Assert.IsTrue(

src/MaaFramework.Binding.UnitTests/Test_IMaaResource.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,14 +74,21 @@ public void Interface_AppendBundle_IsLoaded(MaaTypes type, IMaaResource maaResou
7474

7575
[TestMethod]
7676
[MaaData(MaaTypes.All, nameof(Data))]
77-
public void Interface_OverridePipeline_OverrideNext(MaaTypes type, IMaaResource maaResource)
77+
public void Interface_OverridePipeline_OverrideNext_GetNodeData(MaaTypes type, IMaaResource maaResource)
7878
{
7979
var DiffParam = Custom.DiffParam;
8080
var DiffEntry = Custom.DiffEntry;
8181
Assert.IsTrue(
8282
maaResource.OverridePipeline(DiffParam));
8383
Assert.IsTrue(
8484
maaResource.OverrideNext(DiffEntry, [DiffEntry]));
85+
Assert.IsTrue(
86+
maaResource.GetNodeData(DiffEntry, out var data));
87+
88+
Assert.IsNotNull(
89+
data);
90+
Assert.IsTrue(
91+
data.Contains($"\"next\":[\"{DiffEntry}\"]"));
8592
}
8693

8794
private static void Interface_IMaaPost_Success(MaaJob job)

src/MaaFramework.Binding/IMaaContext.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,14 @@ public interface IMaaContext : ICloneable
6464
/// <returns><see langword="true"/> if the operation was executed successfully; otherwise, <see langword="false"/>.</returns>
6565
bool OverrideNext(string nodeName, IEnumerable<string> nextList);
6666

67+
/// <summary>
68+
/// Gets the node data from the <see cref="IMaaContext"/> by node name.
69+
/// </summary>
70+
/// <param name="nodeName">The node name.</param>
71+
/// <param name="data">The node data.</param>
72+
/// <returns><see langword="true"/> if the operation was executed successfully; otherwise, <see langword="false"/>.</returns>
73+
bool GetNodeData(string nodeName, [MaybeNullWhen(false)][StringSyntax("Json")] out string data);
74+
6775
/// <summary>
6876
/// Gets the task job from the <see cref="IMaaContext"/>.
6977
/// </summary>

src/MaaFramework.Binding/IMaaResource.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using MaaFramework.Binding.Abstractions;
22
using MaaFramework.Binding.Custom;
3+
using System.Diagnostics.CodeAnalysis;
34

45
namespace MaaFramework.Binding;
56

@@ -74,6 +75,14 @@ public interface IMaaResource : IMaaCommon, IMaaOption<ResourceOption>, IMaaPost
7475
/// <returns><see langword="true"/> if the operation was executed successfully; otherwise, <see langword="false"/>.</returns>
7576
bool OverrideNext(string nodeName, IEnumerable<string> nextList);
7677

78+
/// <summary>
79+
/// Gets the node data from the <see cref="IMaaResource"/> by node name.
80+
/// </summary>
81+
/// <param name="nodeName">The node name.</param>
82+
/// <param name="data">The node data.</param>
83+
/// <returns><see langword="true"/> if the operation was executed successfully; otherwise, <see langword="false"/>.</returns>
84+
bool GetNodeData(string nodeName, [MaybeNullWhen(false)][StringSyntax("Json")] out string data);
85+
7786
/// <summary>
7887
/// Gets whether the <see cref="IMaaResource"/> is fully loaded.
7988
/// </summary>

0 commit comments

Comments
 (0)