From c216f8e436b7e2ff07441b14aed329f997f846e5 Mon Sep 17 00:00:00 2001 From: FramePerfection <1663221+FramePerfection@users.noreply.github.com> Date: Sat, 18 Jul 2026 09:52:53 +0200 Subject: [PATCH 1/4] fix null value treatment in VariableSelectionUtilities.GetNumberValue --- STROOP/Utilities/VariableSelectionUtilities.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/STROOP/Utilities/VariableSelectionUtilities.cs b/STROOP/Utilities/VariableSelectionUtilities.cs index 1bf7e6407..da7f48168 100644 --- a/STROOP/Utilities/VariableSelectionUtilities.cs +++ b/STROOP/Utilities/VariableSelectionUtilities.cs @@ -27,7 +27,10 @@ static IEnumerable FilterNumberVariables(IEnumerable cells.OfType().Where(x => x is not IVariableCellData); static double GetNumberValue(this INumberVariableCell cell) - => (double)(Convert.ChangeType(cell.CombineValues().value, TypeCode.Double) ?? double.NaN); + { + var cellValue = cell.CombineValues().value; + return cellValue == null ? double.NaN : (double)(Convert.ChangeType(cellValue, TypeCode.Double)); + } static bool SetValue(this INumberVariableCell cell, double value) => cell.TrySetValue(value.ToString(CultureInfo.InvariantCulture)); From 154e5fe2c3a278b4eebd239833bf266ecf59630a Mon Sep 17 00:00:00 2001 From: FramePerfection <1663221+FramePerfection@users.noreply.github.com> Date: Sat, 18 Jul 2026 09:53:10 +0200 Subject: [PATCH 2/4] make VariableAngleCell implement INumberVariableCell --- STROOP/Controls/VariablePanel/Cells/VariableAngleCell.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/STROOP/Controls/VariablePanel/Cells/VariableAngleCell.cs b/STROOP/Controls/VariablePanel/Cells/VariableAngleCell.cs index 7ed6ef8ab..dab3d7115 100644 --- a/STROOP/Controls/VariablePanel/Cells/VariableAngleCell.cs +++ b/STROOP/Controls/VariablePanel/Cells/VariableAngleCell.cs @@ -6,6 +6,7 @@ namespace STROOP.Controls.VariablePanel.Cells; public class VariableAngleCell(VariableNumberCell baseCell) : VariableAngleCell(baseCell) + , INumberVariableCell where TNumber : struct, IConvertible { protected override bool DisplayAsUnsigned() => SavedSettingsConfig.DisplayYawAnglesAsUnsigned; From 0790099db1022f4fb9d74cfb82471d1be71405bb Mon Sep 17 00:00:00 2001 From: FramePerfection <1663221+FramePerfection@users.noreply.github.com> Date: Sat, 18 Jul 2026 09:53:24 +0200 Subject: [PATCH 3/4] implement CreateDummyVariable --- .../Controls/VariablePanel/VariablePanel.cs | 24 +++++++++---------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/STROOP/Controls/VariablePanel/VariablePanel.cs b/STROOP/Controls/VariablePanel/VariablePanel.cs index c11bf7d5a..e07910e8d 100644 --- a/STROOP/Controls/VariablePanel/VariablePanel.cs +++ b/STROOP/Controls/VariablePanel/VariablePanel.cs @@ -411,19 +411,17 @@ private void AddToVarHackTab(List cells) private static CustomVariable CreateDummyVariable() where T : struct, IConvertible { - throw new NotImplementedException(); - // T capturedValue = default(T); - // - // return new CustomVariableView(VariableUtilities.GetWrapperType(typeof(T))) - // { - // Name = $"Dummy {++numDummies} {StringUtilities.Capitalize(typeof(T).Name)}", - // _getterFunction = () => capturedValue.Yield(), - // _setterFunction = (T value) => - // { - // capturedValue = value; - // return true.Yield(); - // } - // }; + T capturedValue = default(T); + + var variable = new CustomVariable("Number"); + variable.getter = () => capturedValue.Yield(); + variable.setter = value => + { + capturedValue = value; + return true.Yield(); + }; + + return variable; } private ToolStripMenuItem CreateFilterItem(string varGroup) From 9ea1db00caf6a2c530c1957a415afdbee44d23e1 Mon Sep 17 00:00:00 2001 From: FramePerfection <1663221+FramePerfection@users.noreply.github.com> Date: Sat, 18 Jul 2026 11:47:47 +0200 Subject: [PATCH 4/4] remove unused variable --- STROOP/Controls/VariablePanel/VariablePanel.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/STROOP/Controls/VariablePanel/VariablePanel.cs b/STROOP/Controls/VariablePanel/VariablePanel.cs index e07910e8d..2a6cc2ba1 100644 --- a/STROOP/Controls/VariablePanel/VariablePanel.cs +++ b/STROOP/Controls/VariablePanel/VariablePanel.cs @@ -34,8 +34,6 @@ static void ViewInMemoryTab(DescribedMemoryState memoryDescriptor) tab.UpdateHexDisplay(); } - private static int numDummies = 0; - public readonly Func> GetSelectedVars; public Func> getSpecialFuncVariables = null;