diff --git a/OpenRA.Game/Widgets/ButtonWidget.cs b/OpenRA.Game/Widgets/ButtonWidget.cs
index 861edfdd66..25042782d0 100644
--- a/OpenRA.Game/Widgets/ButtonWidget.cs
+++ b/OpenRA.Game/Widgets/ButtonWidget.cs
@@ -117,7 +117,7 @@ namespace OpenRA.Widgets
public override int2 ChildOrigin { get { return RenderOrigin +
((Depressed) ? new int2(VisualHeight, VisualHeight) : new int2(0, 0)); } }
-
+
public override void Draw()
{
var rb = RenderBounds;
@@ -128,7 +128,7 @@ namespace OpenRA.Widgets
var s = font.Measure(text);
var stateOffset = (Depressed) ? new int2(VisualHeight, VisualHeight) : new int2(0, 0);
- DrawBackground("button", rb, disabled, Depressed, Widget.MouseOverWidget == this);
+ DrawBackground(rb, disabled, Depressed, Widget.MouseOverWidget == this);
font.DrawText(text, new int2(rb.X + (UsableWidth - s.X)/ 2, rb.Y + (Bounds.Height - s.Y) / 2) + stateOffset,
disabled ? Color.Gray : Color.White);
}
@@ -136,6 +136,11 @@ namespace OpenRA.Widgets
public override Widget Clone() { return new ButtonWidget(this); }
public virtual int UsableWidth { get { return Bounds.Width; } }
+ public virtual void DrawBackground(Rectangle rect, bool disabled, bool pressed, bool hover)
+ {
+ ButtonWidget.DrawBackground("button", rect, disabled, pressed, hover);
+ }
+
public static void DrawBackground(string baseName, Rectangle rect, bool disabled, bool pressed, bool hover)
{
var state = disabled ? "-disabled" :
diff --git a/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj b/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj
index 8e97ead0fd..a9ee15e4e3 100644
--- a/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj
+++ b/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj
@@ -98,12 +98,12 @@
-
+
diff --git a/OpenRA.Mods.Cnc/Widgets/Logic/ButtonTooltipLogic.cs b/OpenRA.Mods.Cnc/Widgets/Logic/ButtonTooltipLogic.cs
index 9cb12c6d32..ac798f1ce8 100644
--- a/OpenRA.Mods.Cnc/Widgets/Logic/ButtonTooltipLogic.cs
+++ b/OpenRA.Mods.Cnc/Widgets/Logic/ButtonTooltipLogic.cs
@@ -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("LABEL");
var hotkey = widget.GetWidget("HOTKEY");
diff --git a/OpenRA.Mods.Cnc/Widgets/Logic/CncIngameChromeLogic.cs b/OpenRA.Mods.Cnc/Widgets/Logic/CncIngameChromeLogic.cs
index 4dc0947df9..03224715c8 100644
--- a/OpenRA.Mods.Cnc/Widgets/Logic/CncIngameChromeLogic.cs
+++ b/OpenRA.Mods.Cnc/Widgets/Logic/CncIngameChromeLogic.cs
@@ -44,7 +44,7 @@ namespace OpenRA.Mods.Cnc.Widgets.Logic
}
}
- void SetupProductionGroupButton(ButtonWidget button, string group)
+ void SetupProductionGroupButton(ToggleButtonWidget button, string group)
{
Action 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("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("BUILDING"), "Building");
- SetupProductionGroupButton(queueTypes.GetWidget("DEFENSE"), "Defense");
- SetupProductionGroupButton(queueTypes.GetWidget("INFANTRY"), "Infantry");
- SetupProductionGroupButton(queueTypes.GetWidget("VEHICLE"), "Vehicle");
- SetupProductionGroupButton(queueTypes.GetWidget("AIRCRAFT"), "Aircraft");
+ SetupProductionGroupButton(queueTypes.GetWidget("BUILDING"), "Building");
+ SetupProductionGroupButton(queueTypes.GetWidget("DEFENSE"), "Defense");
+ SetupProductionGroupButton(queueTypes.GetWidget("INFANTRY"), "Infantry");
+ SetupProductionGroupButton(queueTypes.GetWidget("VEHICLE"), "Vehicle");
+ SetupProductionGroupButton(queueTypes.GetWidget("AIRCRAFT"), "Aircraft");
playerWidgets.GetWidget("OPTIONS_BUTTON").OnClick = onOptionsClick;
diff --git a/OpenRA.Mods.Cnc/Widgets/TooltipButtonWidget.cs b/OpenRA.Mods.Cnc/Widgets/ToggleButtonWidget.cs
similarity index 75%
rename from OpenRA.Mods.Cnc/Widgets/TooltipButtonWidget.cs
rename to OpenRA.Mods.Cnc/Widgets/ToggleButtonWidget.cs
index b62ae2bc58..8432aae896 100644
--- a/OpenRA.Mods.Cnc/Widgets/TooltipButtonWidget.cs
+++ b/OpenRA.Mods.Cnc/Widgets/ToggleButtonWidget.cs
@@ -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 IsToggled = () => false;
Lazy tooltipContainer;
- public TooltipButtonWidget()
+ public ToggleButtonWidget()
: base()
{
tooltipContainer = new Lazy(() =>
Widget.RootWidget.GetWidget(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);
+ }
}
}
\ No newline at end of file
diff --git a/artsrc/cnc/chrome.svg b/artsrc/cnc/chrome.svg
index 7cda1a9434..a78a6a1ae2 100644
--- a/artsrc/cnc/chrome.svg
+++ b/artsrc/cnc/chrome.svg
@@ -61,9 +61,9 @@
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
- inkscape:zoom="4"
- inkscape:cx="289.47924"
- inkscape:cy="458.66173"
+ inkscape:zoom="2"
+ inkscape:cx="159.47924"
+ inkscape:cy="358.66173"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
@@ -1234,5 +1234,45 @@
id="path3178"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
+
+
+
+
diff --git a/mods/cnc/chrome.yaml b/mods/cnc/chrome.yaml
index 8f4a7e8cf2..21b9e17b4f 100644
--- a/mods/cnc/chrome.yaml
+++ b/mods/cnc/chrome.yaml
@@ -53,7 +53,51 @@ button-pressed: chrome.png
corner-tr: 126,192,2,2
corner-bl: 64,254,2,2
corner-br: 126,254,2,2
-
+
+button-toggled: chrome.png
+ background: 257,129,30,30
+ border-r: 287,129,1,30
+ border-l: 256,129,1,30
+ border-b: 257,159,30,1
+ border-t: 257,128,30,1
+ corner-tl: 256,128,1,1
+ corner-tr: 287,128,1,1
+ corner-bl: 256,159,1,1
+ corner-br: 287,159,1,1
+
+button-toggled-hover: chrome.png
+ background: 289,129,30,30
+ border-r: 319,129,1,30
+ border-l: 288,129,1,30
+ border-b: 289,159,30,1
+ border-t: 289,128,30,1
+ corner-tl: 288,128,1,1
+ corner-tr: 319,128,1,1
+ corner-bl: 288,159,1,1
+ corner-br: 319,159,1,1
+
+button-toggled-pressed: chrome.png
+ background: 257,161,30,30
+ border-r: 287,161,1,30
+ border-l: 256,161,1,30
+ border-b: 257,191,30,1
+ border-t: 257,160,30,1
+ corner-tl: 256,160,1,1
+ corner-tr: 287,160,1,1
+ corner-bl: 256,191,1,1
+ corner-br: 287,191,1,1
+
+button-toggled-disabled: chrome.png
+ background: 289,161,30,30
+ border-r: 319,161,1,30
+ border-l: 288,161,1,30
+ border-b: 289,191,30,1
+ border-t: 289,160,30,1
+ corner-tl: 288,160,1,1
+ corner-tr: 319,160,1,1
+ corner-bl: 288,191,1,1
+ corner-br: 319,191,1,1
+
scrollthumb: chrome.png
background: 2,194,60,60
border-r: 62,194,2,60
diff --git a/mods/cnc/chrome/ingame.yaml b/mods/cnc/chrome/ingame.yaml
index 173aa48507..119eeaf894 100644
--- a/mods/cnc/chrome/ingame.yaml
+++ b/mods/cnc/chrome/ingame.yaml
@@ -56,7 +56,7 @@ Container@INGAME_ROOT:
Container@OBSERVER_WIDGETS:
Id:OBSERVER_WIDGETS
Children:
- TooltipButton@OPTIONS_BUTTON:
+ ToggleButton@OPTIONS_BUTTON:
Id:OPTIONS_BUTTON
Key:escape
X:WINDOW_RIGHT-202
@@ -127,7 +127,7 @@ Container@PLAYER_WIDGETS:
Height:240
Background:panel-black
Children:
- TooltipButton@OPTIONS_BUTTON:
+ ToggleButton@OPTIONS_BUTTON:
Id:OPTIONS_BUTTON
Key:escape
X:42
@@ -146,7 +146,7 @@ Container@PLAYER_WIDGETS:
Y:5
ImageCollection:order-icons
ImageName:options
- TooltipButton@SELL_BUTTON:
+ ToggleButton@SELL_BUTTON:
Id:SELL_BUTTON
Key: [
X:82
@@ -164,7 +164,7 @@ Container@PLAYER_WIDGETS:
X:7
Y:5
ImageCollection:order-icons
- TooltipButton@REPAIR_BUTTON:
+ ToggleButton@REPAIR_BUTTON:
Id:REPAIR_BUTTON
Key: ]
X:122
@@ -246,7 +246,7 @@ Container@PLAYER_WIDGETS:
Width:170
Height:30
Children:
- TooltipButton@BUILDING:
+ ToggleButton@BUILDING:
Id:BUILDING
Width:30
Height:30
@@ -261,7 +261,7 @@ Container@PLAYER_WIDGETS:
X:7
Y:7
ImageCollection:production-icons
- TooltipButton@DEFENSE:
+ ToggleButton@DEFENSE:
Id:DEFENSE
X:35
Width:30
@@ -277,7 +277,7 @@ Container@PLAYER_WIDGETS:
X:7
Y:7
ImageCollection:production-icons
- TooltipButton@INFANTRY:
+ ToggleButton@INFANTRY:
Id:INFANTRY
X:70
Width:30
@@ -293,7 +293,7 @@ Container@PLAYER_WIDGETS:
X:7
Y:7
ImageCollection:production-icons
- TooltipButton@VEHICLE:
+ ToggleButton@VEHICLE:
Id:VEHICLE
X:105
Width:30
@@ -309,7 +309,7 @@ Container@PLAYER_WIDGETS:
X:7
Y:7
ImageCollection:production-icons
- TooltipButton@AIRCRAFT:
+ ToggleButton@AIRCRAFT:
Id:AIRCRAFT
X:140
Width:30
diff --git a/mods/cnc/uibits/chrome.png b/mods/cnc/uibits/chrome.png
index 4c3f63526d..998f9a4aa3 100644
Binary files a/mods/cnc/uibits/chrome.png and b/mods/cnc/uibits/chrome.png differ