From c06c3f0c44e56e45c0bf9df42ccdc4f0fc550092 Mon Sep 17 00:00:00 2001 From: KirillGutyrchik Date: Mon, 23 Dec 2024 16:45:15 +0300 Subject: [PATCH] Fix parameter binding after replace parameters --- src/TechObject/Base/Properties/ActionParameter.cs | 7 ++++++- .../ObjectsTree/UniversalObject/ParamsManager.cs | 15 ++++++--------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/TechObject/Base/Properties/ActionParameter.cs b/src/TechObject/Base/Properties/ActionParameter.cs index 65df19435..943074e92 100644 --- a/src/TechObject/Base/Properties/ActionParameter.cs +++ b/src/TechObject/Base/Properties/ActionParameter.cs @@ -100,7 +100,12 @@ public override string Value { var parameterNumber = Parameter.GetParameterNumber; if (parameterNumber == 0) - SetNewValue("-1"); // Параметр удален + { + if (Parameters.GetParam(Parameter.GetNameLua()) == null) + SetNewValue("-1"); // Параметр удален + else + SetNewValue(Parameters.GetParam(Parameter.GetNameLua()).GetParameterNumber.ToString()); // Параметр заменен + } else if (OnlyParameterNumber && parameterNumber.ToString() != value.ToString()) SetNewValue(parameterNumber.ToString()); // Параметр задан номером и перемещен } diff --git a/src/TechObject/ObjectsTree/UniversalObject/ParamsManager.cs b/src/TechObject/ObjectsTree/UniversalObject/ParamsManager.cs index d665066fc..8988715aa 100644 --- a/src/TechObject/ObjectsTree/UniversalObject/ParamsManager.cs +++ b/src/TechObject/ObjectsTree/UniversalObject/ParamsManager.cs @@ -289,17 +289,15 @@ override public bool Delete(object child) return false; } - override public ITreeViewItem Replace(object child, - object copyObject) + override public ITreeViewItem Replace(object child, object copyObject) { - var parsManager = child as ParamsManager; - if (copyObject is ParamsManager && parsManager != null) + if (copyObject is ParamsManager && child is ParamsManager parsManager) { Clear(); var copyPars = copyObject as ParamsManager; - foreach (Params parGroup in copyPars.Items) + foreach (var parGroup in copyPars.Items.OfType()) { - foreach (Param par in parGroup.Items) + foreach (var par in parGroup.Items.OfType()) { Param addedParam = AddParam(parGroup.LuaName, par.GetName(), float.Parse(par.GetValue()), @@ -312,12 +310,11 @@ override public ITreeViewItem Replace(object child, return parsManager; } - Params pars = child as Params; - if (copyObject is Params && pars != null) + if (copyObject is Params && child is Params pars) { pars.Clear(); Params copyPars = copyObject as Params; - foreach (Param par in copyPars.Items) + foreach (var par in copyPars.Items.OfType()) { pars.InsertCopy(par); }