Rename TooltipButton -> ToggleButton and add an active state. Use for production group icons.
This commit is contained in:
@@ -17,7 +17,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
||||
{
|
||||
[ObjectCreator.UseCtor]
|
||||
public ButtonTooltipLogic([ObjectCreator.Param] Widget widget,
|
||||
[ObjectCreator.Param] TooltipButtonWidget button)
|
||||
[ObjectCreator.Param] ToggleButtonWidget button)
|
||||
{
|
||||
var label = widget.GetWidget<LabelWidget>("LABEL");
|
||||
var hotkey = widget.GetWidget<LabelWidget>("HOTKEY");
|
||||
|
||||
@@ -44,7 +44,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
||||
}
|
||||
}
|
||||
|
||||
void SetupProductionGroupButton(ButtonWidget button, string group)
|
||||
void SetupProductionGroupButton(ToggleButtonWidget button, string group)
|
||||
{
|
||||
Action<bool> selectTab = reverse =>
|
||||
{
|
||||
@@ -57,7 +57,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
||||
button.IsDisabled = () => queueTabs.Groups[group].Tabs.Count == 0;
|
||||
button.OnMouseUp = mi => selectTab(mi.Modifiers.HasModifier(Modifiers.Shift));
|
||||
button.OnKeyPress = e => selectTab(e.Modifiers.HasModifier(Modifiers.Shift));
|
||||
|
||||
button.IsToggled = () => queueTabs.QueueGroup == group;
|
||||
var chromeName = group.ToLowerInvariant();
|
||||
var icon = button.GetWidget<ImageWidget>("ICON");
|
||||
icon.GetImageName = () => button.IsDisabled() ? chromeName+"-disabled" :
|
||||
@@ -128,11 +128,11 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
|
||||
world.ActorRemoved += queueTabs.ActorChanged;
|
||||
|
||||
var queueTypes = sidebarRoot.GetWidget("PRODUCTION_TYPES");
|
||||
SetupProductionGroupButton(queueTypes.GetWidget<ButtonWidget>("BUILDING"), "Building");
|
||||
SetupProductionGroupButton(queueTypes.GetWidget<ButtonWidget>("DEFENSE"), "Defense");
|
||||
SetupProductionGroupButton(queueTypes.GetWidget<ButtonWidget>("INFANTRY"), "Infantry");
|
||||
SetupProductionGroupButton(queueTypes.GetWidget<ButtonWidget>("VEHICLE"), "Vehicle");
|
||||
SetupProductionGroupButton(queueTypes.GetWidget<ButtonWidget>("AIRCRAFT"), "Aircraft");
|
||||
SetupProductionGroupButton(queueTypes.GetWidget<ToggleButtonWidget>("BUILDING"), "Building");
|
||||
SetupProductionGroupButton(queueTypes.GetWidget<ToggleButtonWidget>("DEFENSE"), "Defense");
|
||||
SetupProductionGroupButton(queueTypes.GetWidget<ToggleButtonWidget>("INFANTRY"), "Infantry");
|
||||
SetupProductionGroupButton(queueTypes.GetWidget<ToggleButtonWidget>("VEHICLE"), "Vehicle");
|
||||
SetupProductionGroupButton(queueTypes.GetWidget<ToggleButtonWidget>("AIRCRAFT"), "Aircraft");
|
||||
|
||||
playerWidgets.GetWidget<ButtonWidget>("OPTIONS_BUTTON").OnClick = onOptionsClick;
|
||||
|
||||
|
||||
@@ -8,26 +8,29 @@
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.Drawing;
|
||||
using OpenRA.FileFormats;
|
||||
using OpenRA.Widgets;
|
||||
|
||||
namespace OpenRA.Mods.Cnc.Widgets
|
||||
{
|
||||
public class TooltipButtonWidget : ButtonWidget
|
||||
public class ToggleButtonWidget : ButtonWidget
|
||||
{
|
||||
public readonly string TooltipTemplate = "BUTTON_TOOLTIP";
|
||||
public readonly string TooltipText;
|
||||
public readonly string TooltipContainer;
|
||||
public Func<bool> IsToggled = () => false;
|
||||
Lazy<TooltipContainerWidget> tooltipContainer;
|
||||
|
||||
public TooltipButtonWidget()
|
||||
public ToggleButtonWidget()
|
||||
: base()
|
||||
{
|
||||
tooltipContainer = new Lazy<TooltipContainerWidget>(() =>
|
||||
Widget.RootWidget.GetWidget<TooltipContainerWidget>(TooltipContainer));
|
||||
}
|
||||
|
||||
protected TooltipButtonWidget(TooltipButtonWidget other)
|
||||
protected ToggleButtonWidget(ToggleButtonWidget other)
|
||||
: base(other)
|
||||
{
|
||||
TooltipTemplate = other.TooltipTemplate;
|
||||
@@ -48,5 +51,11 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
if (TooltipContainer == null) return;
|
||||
tooltipContainer.Value.RemoveTooltip();
|
||||
}
|
||||
|
||||
public override void DrawBackground(Rectangle rect, bool disabled, bool pressed, bool hover)
|
||||
{
|
||||
var baseName = IsToggled() ? "button-toggled" : "button";
|
||||
ButtonWidget.DrawBackground(baseName, rect, disabled, pressed, hover);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user