From 955634a5202d7382017f186562b2b01dd2f2823b Mon Sep 17 00:00:00 2001 From: Gustas <37534529+PunkPun@users.noreply.github.com> Date: Fri, 28 Mar 2025 14:13:47 +0200 Subject: [PATCH] Don't update resource layer more than needed --- .../EditorBrushes/EditorResourceBrush.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/OpenRA.Mods.Common/EditorBrushes/EditorResourceBrush.cs b/OpenRA.Mods.Common/EditorBrushes/EditorResourceBrush.cs index 99c825652f..22e935ec7d 100644 --- a/OpenRA.Mods.Common/EditorBrushes/EditorResourceBrush.cs +++ b/OpenRA.Mods.Common/EditorBrushes/EditorResourceBrush.cs @@ -136,25 +136,24 @@ namespace OpenRA.Mods.Common.Widgets public void Do() { foreach (var resourceCell in cellResources) - { - resourceLayer.ClearResources(resourceCell.Cell); resourceLayer.AddResource(resourceType, resourceCell.Cell, resourceLayer.GetMaxDensity(resourceType)); - } } public void Undo() { foreach (var resourceCell in cellResources) { - resourceLayer.ClearResources(resourceCell.Cell); - if (resourceCell.OldResourceTile.Type != null) + // If resources match, simulate a replace command. + if (resourceCell.OldResourceTile.Type == resourceType || resourceCell.OldResourceTile.Type == null) + resourceLayer.ClearResources(resourceCell.Cell); + + if (resourceCell.OldResourceTile.Type == resourceType || resourceCell.OldResourceTile.Type != null) resourceLayer.AddResource(resourceCell.OldResourceTile.Type, resourceCell.Cell, resourceCell.OldResourceTile.Density); } } public void Add(CellResource resourceCell) { - resourceLayer.ClearResources(resourceCell.Cell); resourceLayer.AddResource(resourceType, resourceCell.Cell, resourceLayer.GetMaxDensity(resourceType)); cellResources.Add(resourceCell); Text = FluentProvider.GetMessage(AddedResource, "count", cellResources.Count, "type", resourceType);