Only allow using path tool when panel is enabled

This commit is contained in:
Gustas
2025-07-23 20:06:09 +03:00
committed by Matthias Mailänder
parent 42181d77a5
commit b2215c6dd1
7 changed files with 55 additions and 22 deletions

View File

@@ -9,6 +9,7 @@
*/
#endregion
using System;
using System.Collections.Generic;
using System.Linq;
using OpenRA.Mods.Common.Traits;
@@ -18,14 +19,20 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{
public class MapToolsLogic : ChromeLogic
{
public static event Action<bool> OnSelected;
readonly List<Widget> toolPanels = [];
readonly Dictionary<Widget, string> toolLabels = [];
readonly Widget widget;
Widget selectedPanel;
[ObjectCreator.UseCtor]
public MapToolsLogic(Widget widget, World world)
{
this.widget = widget;
var toolDropdownWidget = widget.Get<DropDownButtonWidget>("TOOLS_DROPDOWN");
MapEditorTabsLogic.OnTabChanged += SelectedTab;
var tools = world.WorldActor.TraitsImplementing<IEditorTool>();
foreach (var tool in tools)
{
@@ -44,6 +51,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic
toolDropdownWidget.Disabled = true;
}
void SelectedTab()
{
OnSelected?.Invoke(widget.IsVisible());
}
void ShowToolsDropDown(DropDownButtonWidget dropdown)
{
ScrollItemWidget SetupItem(Widget panel, ScrollItemWidget itemTemplate)
@@ -68,6 +80,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic
selectedPanel = panel;
if (panel != null)
selectedPanel.Visible = true;
OnSelected?.Invoke(widget.IsVisible());
}
protected override void Dispose(bool disposing)
{
MapEditorTabsLogic.OnTabChanged -= SelectedTab;
base.Dispose(disposing);
}
}
}