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);