From 5146fe3e3b599c9be5adc31c644aa5eeef28b2f7 Mon Sep 17 00:00:00 2001 From: "Dr. Jochen Manns" Date: Fri, 13 Feb 2026 12:24:01 +0100 Subject: [PATCH] Support decoding list of modifiers on repeat. (zergmbh/websam#2007) --- Library/Scripting/Engine/GroupStatus.cs | 3 --- Library/Scripting/Engine/ScriptEngine.Input.cs | 1 - Library/Scripting/ScriptCommon.cs | 17 +++++++++-------- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/Library/Scripting/Engine/GroupStatus.cs b/Library/Scripting/Engine/GroupStatus.cs index 47d984b..7e403af 100644 --- a/Library/Scripting/Engine/GroupStatus.cs +++ b/Library/Scripting/Engine/GroupStatus.cs @@ -1,8 +1,5 @@ using System.ComponentModel.DataAnnotations; using System.Diagnostics.CodeAnalysis; -using System.IO.Compression; -using System.Text; -using System.Text.Json; namespace BlocklyNet.Scripting.Engine; diff --git a/Library/Scripting/Engine/ScriptEngine.Input.cs b/Library/Scripting/Engine/ScriptEngine.Input.cs index e0a6240..26ccbc6 100644 --- a/Library/Scripting/Engine/ScriptEngine.Input.cs +++ b/Library/Scripting/Engine/ScriptEngine.Input.cs @@ -1,5 +1,4 @@ using System.Text.Json; -using System.Text.Json.Nodes; using BlocklyNet.Extensions.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; diff --git a/Library/Scripting/ScriptCommon.cs b/Library/Scripting/ScriptCommon.cs index ecb8911..5f76263 100644 --- a/Library/Scripting/ScriptCommon.cs +++ b/Library/Scripting/ScriptCommon.cs @@ -1,6 +1,5 @@ using BlocklyNet.Scripting.Engine; using BlocklyNet.Scripting.Logging; -using System.Text.Json; namespace BlocklyNet.Scripting; @@ -104,18 +103,20 @@ private class CustomGroupInformation /// private readonly Stack _ActiveGroups = []; + /// + /// Decode list of modifiers on this script. + /// + /// Some status information. + /// List of modifiers. + protected IEnumerable GetModifiers(GroupStatus status) + => BlockyUtils.Decompress(status.CustomizerBlob)?.Modifiers ?? Enumerable.Empty(); + /// public override async Task BeginGroupExecutionAsync(GroupStatus status, bool repeat) { if (repeat) - { - /* Reconstruct extra information. */ - var info = BlockyUtils.Decompress(status.CustomizerBlob)!; - - /* Re-apply all side effects on the logging. */ - foreach (var modifier in info.Modifiers) + foreach (var modifier in GetModifiers(status)) await modifier.ApplyAsync(this, false); - } else _ActiveGroups.Push(new() { ModifierIndex = _Modifiers.Count }); }