Refactor command bar buttons to use unified widget state names

This commit is contained in:
Ivaylo Draganov
2020-05-12 00:12:35 +03:00
committed by Paul Chote
parent 7943f4deb6
commit 39ccac4022
3 changed files with 59 additions and 34 deletions

View File

@@ -10,7 +10,6 @@
#endregion
using System.Linq;
using OpenRA.Graphics;
using OpenRA.Mods.Common.Traits;
using OpenRA.Widgets;
@@ -47,16 +46,7 @@ namespace OpenRA.Mods.Common.Widgets
void BindStanceButton(ButtonWidget button, UnitStance stance)
{
var icon = button.Get<ImageWidget>("ICON");
var hasDisabled = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-disabled") != null;
var hasActive = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-active") != null;
var hasActiveHover = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-active-hover") != null;
var hasHover = ChromeProvider.GetImage(icon.ImageCollection, icon.ImageName + "-hover") != null;
icon.GetImageName = () => hasActive && button.IsHighlighted() ?
(hasActiveHover && Ui.MouseOverWidget == button ? icon.ImageName + "-active-hover" : icon.ImageName + "-active") :
hasDisabled && button.IsDisabled() ? icon.ImageName + "-disabled" :
hasHover && Ui.MouseOverWidget == button ? icon.ImageName + "-hover" : icon.ImageName;
WidgetUtils.BindButtonIcon(button);
button.IsDisabled = () => { UpdateStateIfNecessary(); return !actorStances.Any(); };
button.IsHighlighted = () => actorStances.Any(