diff --git a/OpenRA.Mods.Common/EditorBrushes/EditorResourceBrush.cs b/OpenRA.Mods.Common/EditorBrushes/EditorResourceBrush.cs index 22e935ec7d..92fb51e112 100644 --- a/OpenRA.Mods.Common/EditorBrushes/EditorResourceBrush.cs +++ b/OpenRA.Mods.Common/EditorBrushes/EditorResourceBrush.cs @@ -45,8 +45,6 @@ namespace OpenRA.Mods.Common.Widgets resourceRenderers = world.WorldActor.TraitsImplementing().ToArray(); cell = wr.Viewport.ViewToWorld(wr.Viewport.WorldToViewPx(Viewport.LastMousePos)); UpdatePreview(); - - action = new AddResourcesEditorAction(resourceType, resourceLayer); } public bool HandleMouseInput(MouseInput mi) @@ -70,13 +68,14 @@ namespace OpenRA.Mods.Common.Widgets if (mi.Button == MouseButton.Left && mi.Event != MouseInputEvent.Up && resourceLayer.CanAddResource(ResourceType, cell)) { + action ??= new AddResourcesEditorAction(ResourceType, resourceLayer); action.Add(new CellResource(cell, resourceLayer.GetResource(cell))); resourceAdded = true; } else if (resourceAdded && mi.Button == MouseButton.Left && mi.Event == MouseInputEvent.Up) { editorActionManager.Add(action); - action = new AddResourcesEditorAction(ResourceType, resourceLayer); + action = null; resourceAdded = false; } @@ -101,7 +100,7 @@ namespace OpenRA.Mods.Common.Widgets } } - IEnumerable IEditorBrush.RenderAboveShroud(Actor self, WorldRenderer wr) { return preview; } + IEnumerable IEditorBrush.RenderAboveShroud(Actor self, WorldRenderer wr) { return action == null ? preview : null; } IEnumerable IEditorBrush.RenderAnnotations(Actor self, WorldRenderer wr) { yield break; } public void Tick() { }