diff --git a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
index 1af418c00c..9620cff63e 100644
--- a/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
+++ b/OpenRA.Mods.RA/OpenRA.Mods.RA.csproj
@@ -540,6 +540,7 @@
+
diff --git a/OpenRA.Mods.RA/Widgets/Logic/ClassicProductionLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/ClassicProductionLogic.cs
new file mode 100644
index 0000000000..082cbecc65
--- /dev/null
+++ b/OpenRA.Mods.RA/Widgets/Logic/ClassicProductionLogic.cs
@@ -0,0 +1,141 @@
+#region Copyright & License Information
+/*
+ * Copyright 2007-2014 The OpenRA Developers (see AUTHORS)
+ * This file is part of OpenRA, which is free software. It is made
+ * available to you under the terms of the GNU General Public License
+ * as published by the Free Software Foundation. For more information,
+ * see COPYING.
+ */
+#endregion
+
+using System;
+using System.Linq;
+using OpenRA.Mods.RA.Widgets;
+using OpenRA.Network;
+using OpenRA.Widgets;
+
+namespace OpenRA.Mods.RA.Widgets.Logic
+{
+ public class ClassicProductionLogic
+ {
+ readonly ProductionPaletteWidget palette;
+ readonly World world;
+
+ void SetupProductionGroupButton(OrderManager orderManager, ProductionTypeButtonWidget button)
+ {
+ if (button == null)
+ return;
+
+ // Classic production queues are initialized at game start, and then never change.
+ var queues = world.LocalPlayer.PlayerActor.TraitsImplementing()
+ .Where(q => q.Info.Type == button.ProductionGroup)
+ .ToArray();
+
+ Action selectTab = reverse =>
+ {
+ palette.CurrentQueue = queues.FirstOrDefault(q => q.Enabled);
+ };
+
+ button.IsDisabled = () => !queues.Any(q => q.BuildableItems().Any());
+ button.OnMouseUp = mi => selectTab(mi.Modifiers.HasModifier(Modifiers.Shift));
+ button.OnKeyPress = e => selectTab(e.Modifiers.HasModifier(Modifiers.Shift));
+ button.OnClick = () => selectTab(false);
+ button.IsHighlighted = () => queues.Contains(palette.CurrentQueue);
+
+ var chromeName = button.ProductionGroup.ToLowerInvariant();
+ var icon = button.Get("ICON");
+ icon.GetImageName = () => button.IsDisabled() ? chromeName + "-disabled" :
+ queues.Any(q => q.CurrentDone) ? chromeName + "-alert" : chromeName;
+ }
+
+ [ObjectCreator.UseCtor]
+ public ClassicProductionLogic(Widget widget, OrderManager orderManager, World world)
+ {
+ this.world = world;
+ palette = widget.Get("PRODUCTION_PALETTE");
+
+ var background = widget.GetOrNull("PALETTE_BACKGROUND");
+ var foreground = widget.GetOrNull("PALETTE_FOREGROUND");
+ if (background != null || foreground != null)
+ {
+ Widget backgroundTemplate = null;
+ Widget backgroundBottom = null;
+ Widget foregroundTemplate = null;
+
+ if (background != null)
+ {
+ backgroundTemplate = background.Get("ROW_TEMPLATE");
+ backgroundBottom = background.GetOrNull("BOTTOM_CAP");
+ }
+
+ if (foreground != null)
+ foregroundTemplate = foreground.Get("ROW_TEMPLATE");
+
+ Action updateBackground = (_, icons) =>
+ {
+ // Minimum of four rows to make space for the production buttons.
+ var rows = Math.Max(4, (icons + palette.Columns - 1) / palette.Columns);
+
+ if (background != null)
+ {
+ background.RemoveChildren();
+
+ var rowHeight = backgroundTemplate.Bounds.Height;
+ for (var i = 0; i < rows; i++)
+ {
+ var row = backgroundTemplate.Clone();
+ row.Bounds.Y = i * rowHeight;
+ background.AddChild(row);
+ }
+
+ if (backgroundBottom == null)
+ return;
+
+ backgroundBottom.Bounds.Y = rows * rowHeight;
+ background.AddChild(backgroundBottom);
+ }
+
+ if (foreground != null)
+ {
+ foreground.RemoveChildren();
+
+ var rowHeight = foregroundTemplate.Bounds.Height;
+ for (var i = 0; i < rows; i++)
+ {
+ var row = foregroundTemplate.Clone();
+ row.Bounds.Y = i * rowHeight;
+ foreground.AddChild(row);
+ }
+ }
+ };
+
+ palette.OnIconCountChanged += updateBackground;
+
+ // Set the initial palette state
+ updateBackground(0, 0);
+ }
+
+ var typesContainer = widget.Get("PRODUCTION_TYPES");
+ foreach (var i in typesContainer.Children)
+ SetupProductionGroupButton(orderManager, i as ProductionTypeButtonWidget);
+
+ var ticker = widget.Get("PRODUCTION_TICKER");
+ ticker.OnTick = () =>
+ {
+ if (palette.CurrentQueue == null || palette.IconCount == 0)
+ {
+ // Select the first active tab
+ foreach (var b in typesContainer.Children)
+ {
+ var button = b as ProductionTypeButtonWidget;
+ if (button == null || button.IsDisabled())
+ continue;
+
+ button.OnClick();
+ break;
+ }
+ }
+ };
+ }
+ }
+}
diff --git a/artsrc/ra/bits.psd b/artsrc/ra/bits.psd
deleted file mode 100644
index 157a1ff1db..0000000000
Binary files a/artsrc/ra/bits.psd and /dev/null differ
diff --git a/artsrc/ra/buildpalette.xcf b/artsrc/ra/buildpalette.xcf
deleted file mode 100644
index 4d380e3b20..0000000000
Binary files a/artsrc/ra/buildpalette.xcf and /dev/null differ
diff --git a/artsrc/ra/chrome.pxm b/artsrc/ra/chrome.pxm
new file mode 100644
index 0000000000..22a740ed15
Binary files /dev/null and b/artsrc/ra/chrome.pxm differ
diff --git a/artsrc/ra/chrome.xcf b/artsrc/ra/chrome.xcf
deleted file mode 100644
index edce53b3bb..0000000000
Binary files a/artsrc/ra/chrome.xcf and /dev/null differ
diff --git a/artsrc/ra/morebits.psd b/artsrc/ra/morebits.psd
deleted file mode 100644
index 0aef28c5ba..0000000000
Binary files a/artsrc/ra/morebits.psd and /dev/null differ
diff --git a/artsrc/ra/powerdown-cursors.psd b/artsrc/ra/powerdown-cursors.psd
deleted file mode 100644
index 6178de233a..0000000000
Binary files a/artsrc/ra/powerdown-cursors.psd and /dev/null differ
diff --git a/artsrc/ra/tabs.psd b/artsrc/ra/tabs.psd
deleted file mode 100644
index 6db8f7b760..0000000000
Binary files a/artsrc/ra/tabs.psd and /dev/null differ
diff --git a/mods/ra/chrome.yaml b/mods/ra/chrome.yaml
index 7086f5a7dc..ddb471cd49 100644
--- a/mods/ra/chrome.yaml
+++ b/mods/ra/chrome.yaml
@@ -1,118 +1,90 @@
-chrome-allies: chrome-allies.png
- specialbin-top: 0,0,30,51
- specialbin-middle: 0,51,30,51
- specialbin-bottom: 0,153,30,39
- moneybin: 192,0,320,31
- radar: 297,31,210,222
- tooltip-bg: 0,288,272,136
+sidebar-allies: chrome.png
+ background-top: 0,167,238,290
+ background-iconrow: 0,457,238,47
+ background-bottom: 0,504,238,8
+ background-iconoverlay: 314,118,238,48
+ background-supportoverlay: 184,118,64,48
-power-allies: chrome-allies.png
- power-indicator: 187,4,4,7
+sidebar-button-allies: chrome.png
+ background: 56,28,28,28
+sidebar-button-allies-hover: chrome.png
+ background: 56,0,28,28
+sidebar-button-allies-pressed: chrome.png
+ background: 56,28,28,28
+sidebar-button-allies-highlighted: chrome.png
+ background: 84,28,28,28
+sidebar-button-allies-highlighted-hover: chrome.png
+ background: 84,0,28,28
+sidebar-button-allies-highlighted-pressed: chrome.png
+ background: 84,28,28,28
+sidebar-button-allies-disabled: chrome.png
+ background: 112,0,28,28
+sidebar-button-allies-highlighted-disabled: chrome.png
+ background: 112,0,28,28
-palette-allies: chrome-allies.png
- top: 297,288,201,9
- dock-top: 498,274,14,23
- bottom: 297,489,201,9
- dock-bottom: 498,489,14,23
- bg-0: 297,297,201,48
- dock-0: 498,297,14,48
- bg-1: 297,345,201,48
- dock-1: 498,345,14,48
- bg-2: 297,393,201,48
- dock-2: 498,393,14,48
- bg-3: 297,441,201,48
- dock-3: 498,441,14,48
+sidebar-soviet: chrome.png
+ background-top: 274,167,238,290
+ background-iconrow: 274,457,238,47
+ background-bottom: 274,504,238,8
+ background-iconoverlay: 314,118,238,48
+ background-supportoverlay: 249,118,64,48
-digits-allies: chrome-allies.png
- 0: 32,0,13,17
- 1: 45,0,13,17
- 2: 58,0,13,17
- 3: 71,0,13,17
- 4: 84,0,13,17
- 5: 97,0,13,17
- 6: 110,0,13,17
- 7: 123,0,13,17
- 8: 136,0,13,17
- 9: 149,0,13,17
+sidebar-button-soviet: chrome.png
+ background: 0,28,28,28
+sidebar-button-soviet-hover: chrome.png
+ background: 0,0,28,28
+sidebar-button-soviet-pressed: chrome.png
+ background: 0,28,28,28
+sidebar-button-soviet-highlighted: chrome.png
+ background: 28,28,28,28
+sidebar-button-soviet-highlighted-hover: chrome.png
+ background: 28,0,28,28
+sidebar-button-soviet-highlighted-pressed: chrome.png
+ background: 28,28,28,28
+sidebar-button-soviet-disabled: chrome.png
+ background: 112,0,28,28
+sidebar-button-soviet-highlighted-disabled: chrome.png
+ background: 112,0,28,28
-chrome-soviet: chrome-soviet.png
- specialbin-top: 0,0,30,51
- specialbin-middle: 0,51,30,51
- specialbin-bottom: 0,153,30,39
- moneybin: 192,0,320,31
- radar: 297,31,210,222
- tooltip-bg: 0,288,272,136
+production-icons: chrome.png
+ building: 384,0,16,16
+ building-disabled: 384,16,16,16
+ building-alert: 384,32,16,16
+ defense: 400,0,16,16
+ defense-disabled: 400,16,16,16
+ defense-alert: 400,32,16,16
+ infantry: 416,0,16,16
+ infantry-disabled: 416,16,16,16
+ infantry-alert: 416,32,16,16
+ vehicle: 432,0,16,16
+ vehicle-disabled: 432,16,16,16
+ vehicle-alert: 432,32,16,16
+ aircraft: 448,0,16,16
+ aircraft-disabled: 448,16,16,16
+ aircraft-alert: 448,32,16,16
+ ship: 496,48,16,16
+ ship-disabled: 496,64,16,16
+ ship-alert: 496,80,16,16
-power-soviet: chrome-soviet.png
- power-indicator: 187,4,4,7
-
-palette-soviet: chrome-soviet.png
- top: 297,288,201,9
- dock-top: 498,274,14,23
- bottom: 297,489,201,9
- dock-bottom: 498,489,14,23
- bg-0: 297,297,201,48
- dock-0: 498,297,14,48
- bg-1: 297,345,201,48
- dock-1: 498,345,14,48
- bg-2: 297,393,201,48
- dock-2: 498,393,14,48
- bg-3: 297,441,201,48
- dock-3: 498,441,14,48
-
-digits-soviet: chrome-soviet.png
- 0: 32,0,13,17
- 1: 45,0,13,17
- 2: 58,0,13,17
- 3: 71,0,13,17
- 4: 84,0,13,17
- 5: 97,0,13,17
- 6: 110,0,13,17
- 7: 123,0,13,17
- 8: 136,0,13,17
- 9: 149,0,13,17
-
-tabs-selected: tabs.png
- allies-Building: 0,0,27,41
- allies-Defense: 0,40,27,41
- allies-Infantry: 0,80,27,41
- allies-Vehicle: 0,120,27,41
- allies-Aircraft: 162,200,27,41
- allies-Ship: 0,200,27,41
- soviet-Building: 81,0,27,41
- soviet-Defense: 81,40,27,41
- soviet-Infantry: 81,80,27,41
- soviet-Vehicle: 81,120,27,41
- soviet-Aircraft: 81,160,27,41
- soviet-Ship: 81,200,27,41
-
-tabs-ready: tabs.png
- allies-Building: 27,0,27,41
- allies-Defense: 27,40,27,41
- allies-Infantry: 27,80,27,41
- allies-Vehicle: 27,120,27,41
- allies-Aircraft: 162,160,27,41
- allies-Ship: 27,200,27,41
- soviet-Building: 108,0,27,41
- soviet-Defense: 108,40,27,41
- soviet-Infantry: 108,80,27,41
- soviet-Vehicle: 108,120,27,41
- soviet-Aircraft: 108,160,27,41
- soviet-Ship: 108,200,27,41
-
-tabs-normal: tabs.png
- allies-Building: 54,0,27,41
- allies-Defense: 54,40,27,41
- allies-Infantry: 54,80,27,41
- allies-Vehicle: 54,120,27,41
- allies-Aircraft: 162,120,27,41
- allies-Ship: 54,200,27,41
- soviet-Building: 135,0,27,41
- soviet-Defense: 135,40,27,41
- soviet-Infantry: 135,80,27,41
- soviet-Vehicle: 135,120,27,41
- soviet-Aircraft: 135,160,27,41
- soviet-Ship: 135,200,27,41
+order-icons: chrome.png
+ options: 480,0,16,16
+ options-disabled: 480,16,16,16
+ options-active: 480,32,16,16
+ diplomacy: 464,48,16,16
+ diplomacy-disabled: 464,64,16,16
+ diplomacy-active: 464,80,16,16
+ sell: 496,0,16,16
+ sell-disabled: 496,16,16,16
+ sell-active: 496,32,16,16
+ repair: 384,48,16,16
+ repair-disabled: 384,64,16,16
+ repair-active: 384,80,16,16
+ beacon: 400,48,16,16
+ beacon-disabled: 400,64,16,16
+ beacon-active: 400,80,16,16
+ power: 480,48,16,16
+ power-disabled: 480,64,16,16
+ power-active: 480,80,16,16
# Used for the menu
dialog: dialog.png
@@ -175,20 +147,6 @@ strategic: strategic.png
enemy_owned: 32,32,32,32
player_owned: 96,0,32,32
-order-icons: buttons.png
- sell: 0,0,34,28
- sell-disabled: 68,0,34,28
- sell-active: 34,0,34,28
- repair: 0,28,34,28
- repair-disabled: 68,28,34,28
- repair-active: 34,28,34,28
- power: 0,56,34,28
- power-disabled: 68,56,34,28
- power-active: 34,56,34,28
- beacon: 0,84,34,28
- beacon-disabled: 68,84,34,28
- beacon-active: 34,84,34,28
-
flags: buttons.png
allies: 30,112,30,15
soviet: 0,112,30,15
diff --git a/mods/ra/chrome/ingame-menu.yaml b/mods/ra/chrome/ingame-menu.yaml
index bb307ae628..73ad81ea76 100644
--- a/mods/ra/chrome/ingame-menu.yaml
+++ b/mods/ra/chrome/ingame-menu.yaml
@@ -4,7 +4,6 @@ Background@INGAME_OPTIONS_BG:
Width: 300
Height: 295
Logic: IngameMenuLogic
- Visible: false
Children:
Label@LABEL_TITLE:
X: (PARENT_RIGHT - WIDTH)/2
diff --git a/mods/ra/chrome/ingame-observer.yaml b/mods/ra/chrome/ingame-observer.yaml
index f6c0beee3f..149ac0f679 100644
--- a/mods/ra/chrome/ingame-observer.yaml
+++ b/mods/ra/chrome/ingame-observer.yaml
@@ -1,5 +1,32 @@
Container@OBSERVER_WIDGETS:
Children:
+ Container@GAME_TIMER_BLOCK:
+ Logic: GameTimerLogic
+ X: WINDOW_RIGHT/2 - WIDTH
+ Width: 100
+ Height: 55
+ Children:
+ Label@GAME_TIMER:
+ Width: PARENT_RIGHT
+ Height: 15
+ Align: Center
+ Font: Title
+ Contrast: true
+ Label@GAME_TIMER_STATUS:
+ Y: 35
+ Width: PARENT_RIGHT
+ Height: 15
+ Align: Center
+ Font: Bold
+ Contrast: true
+ Button@INGAME_OPTIONS_BUTTON:
+ X: 0
+ Y: 0
+ Width: 160
+ Height: 25
+ Text: Options (ESC)
+ Font: Bold
+ Key: escape
Button@INGAME_STATS_BUTTON:
X: 162
Y: 0
diff --git a/mods/ra/chrome/ingame-player.yaml b/mods/ra/chrome/ingame-player.yaml
index 4c50ca7ea9..1c55696df9 100644
--- a/mods/ra/chrome/ingame-player.yaml
+++ b/mods/ra/chrome/ingame-player.yaml
@@ -3,23 +3,6 @@ Container@PLAYER_WIDGETS:
LogicKeyListener@CONTROLGROUP_KEYHANDLER:
Logic: ControlGroupLogic
LogicTicker@SIDEBAR_TICKER:
- Button@INGAME_DIPLOMACY_BUTTON:
- X: 162
- Y: 0
- Width: 160
- Height: 25
- Text: Diplomacy (F1)
- Font: Bold
- Key: f1
- Button@INGAME_DEBUG_BUTTON:
- X: 324
- Y: 0
- Width: 160
- Height: 25
- Text: Debug (F2)
- Visible: false
- Font: Bold
- Key: f2
Button@OBJECTIVES_BUTTON:
X: 486
Y: 0
@@ -29,87 +12,327 @@ Container@PLAYER_WIDGETS:
Visible: false
Font: Bold
Key: f3
- SlidingContainer@INGAME_RADAR_BIN:
- X: WINDOW_RIGHT-215
- Y: 0
- OpenOffset: 0,29
- ClosedOffset: 0,-166
- AnimationLength: 15
+ Container@SUPPORT_POWERS:
+ Logic: SupportPowerBinLogic
+ X: 10
+ Y: 10
Children:
- Image@RADAR_BIN_BG:
- ImageName: radar
- Radar@RADAR_MINIMAP:
- WorldInteractionController: INTERACTION_CONTROLLER
- X: 9
- Width: 192
- Height: 192
- ResourceBar@POWERBAR:
- X: 42
- Y: 205
- Width: 138
- Height: 5
+ SupportPowers@SUPPORT_PALETTE:
+ IconSize: 62, 46
+ IconSpriteOffset: -1, -1
TooltipContainer: TOOLTIP_CONTAINER
- TooltipTemplate: SIMPLE_TOOLTIP
- IndicatorImage: power-indicator
- Orientation: Horizontal
- Style: Bevelled
- MoneyBin@INGAME_MONEY_BIN:
- Logic: OrderButtonsChromeLogic
- X: WINDOW_RIGHT - WIDTH
- Width: 320
- Height: 32
- Children:
- Button@BEACON_BUTTON:
- X: 3-36
- Width: 34
- Height: 28
- TooltipText: Place Beacon
- TooltipContainer: TOOLTIP_CONTAINER
- VisualHeight: 0
+ ReadyText: READY
+ HoldText: ON HOLD
+ Container@PALETTE_FOREGROUND:
Children:
- Image@ICON:
- ImageCollection: order-icons
- Button@SELL_BUTTON:
- X: 3
- Width: 34
- Height: 28
- TooltipText: Sell
- TooltipContainer: TOOLTIP_CONTAINER
- VisualHeight: 0
- Children:
- Image@ICON:
- ImageCollection: order-icons
- Button@POWER_BUTTON:
- X: 39
- Width: 34
- Height: 28
- TooltipText: Power Down
- TooltipContainer: TOOLTIP_CONTAINER
- VisualHeight: 0
- Children:
- Image@ICON:
- ImageCollection: order-icons
- Button@REPAIR_BUTTON:
- X: 75
- Width: 34
- Height: 28
- TooltipText: Repair
- TooltipContainer: TOOLTIP_CONTAINER
- VisualHeight: 0
- Children:
- Image@ICON:
- ImageCollection: order-icons
- SupportPowerBin@INGAME_POWERS_BIN:
- X: 0
- Y: 25
- ReadyText: READY
- HoldText: ON HOLD
- BuildPalette@INGAME_BUILD_PALETTE:
+ Image@ICON_TEMPLATE:
+ Logic: AddRaceSuffixLogic
+ X:0-2
+ Y:0-2
+ Width: 62
+ Height: 46
+ IgnoreMouseOver: true
+ ImageCollection: sidebar
+ ImageName: background-supportoverlay
+ Image@SIDEBAR_BACKGROUND_TOP:
+ Logic: AddRaceSuffixLogic
X: WINDOW_RIGHT - 250
- Y: 280
- Width: 250
- Height: 500
- ReadyText: READY
- HoldText: ON HOLD
- RequiresText: Requires {0}
-
+ Y: 10
+ Width: 238
+ Height: 291
+ ImageCollection: sidebar
+ ImageName: background-top
+ ClickThrough: false
+ Children:
+ Container@TOP_BUTTONS:
+ Logic: OrderButtonsChromeLogic
+ X: 9
+ Y: 7
+ Children:
+ Button@BEACON_BUTTON:
+ Logic: AddRaceSuffixLogic
+ Width: 28
+ Height: 28
+ Background: sidebar-button
+ TooltipText: Place Beacon
+ TooltipContainer: TOOLTIP_CONTAINER
+ VisualHeight: 0
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: order-icons
+ Button@SELL_BUTTON:
+ Logic: AddRaceSuffixLogic
+ X: 32
+ Width: 28
+ Height: 28
+ Background: sidebar-button
+ TooltipText: Sell
+ TooltipContainer: TOOLTIP_CONTAINER
+ VisualHeight: 0
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: order-icons
+ Button@POWER_BUTTON:
+ Logic: AddRaceSuffixLogic
+ X: 64
+ Width: 28
+ Height: 28
+ Background: sidebar-button
+ TooltipText: Power Down
+ TooltipContainer: TOOLTIP_CONTAINER
+ VisualHeight: 0
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: order-icons
+ Button@REPAIR_BUTTON:
+ Logic: AddRaceSuffixLogic
+ X: 96
+ Width: 28
+ Height: 28
+ Background: sidebar-button
+ TooltipText: Repair
+ TooltipContainer: TOOLTIP_CONTAINER
+ VisualHeight: 0
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: order-icons
+ MenuButton@DEBUG_BUTTON:
+ Logic: AddRaceSuffixLogic
+ MenuContainer: INGAME_DEBUG_BG
+ HideIngameUI: false
+ Key: f2
+ X: 128
+ Width: 28
+ Height: 28
+ Background: sidebar-button
+ TooltipText: Debug Menu
+ TooltipContainer: TOOLTIP_CONTAINER
+ VisualHeight: 0
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: order-icons
+ ImageName: options
+ MenuButton@DIPLOMACY_BUTTON:
+ Logic: AddRaceSuffixLogic
+ MenuContainer: INGAME_DIPLOMACY_BG
+ HideIngameUI: false
+ Key: f1
+ X: 160
+ Width: 28
+ Height: 28
+ Background: sidebar-button
+ TooltipText: Diplomacy
+ TooltipContainer: TOOLTIP_CONTAINER
+ VisualHeight: 0
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: order-icons
+ ImageName: diplomacy
+ MenuButton@OPTIONS_BUTTON:
+ Logic: AddRaceSuffixLogic
+ MenuContainer: INGAME_OPTIONS_BG
+ HideIngameUI: false
+ Key: escape
+ X: 192
+ Width: 28
+ Height: 28
+ Background: sidebar-button
+ TooltipText: Options
+ TooltipContainer: TOOLTIP_CONTAINER
+ VisualHeight: 0
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: order-icons
+ ImageName: options
+ Container@RADAR:
+ Logic: IngameRadarDisplayLogic
+ Children:
+ LogicTicker@RADAR_TICKER:
+ ColorBlock@RADAR_FADETOBLACK:
+ X: 8
+ Y: 40
+ Width: 222
+ Height: 222
+ Radar@RADAR_MINIMAP:
+ WorldInteractionController: INTERACTION_CONTROLLER
+ X: 9
+ Y: 41
+ Width: 220
+ Height: 220
+ Children:
+ Label@CASH:
+ Logic: IngameCashCounterLogic
+ X: 35
+ Y: 262
+ Width: 100
+ Height: 22
+ Font: Bold
+ Text: {0}
+ Label@POWER:
+ Logic: IngamePowerCounterLogic
+ X: PARENT_RIGHT - WIDTH - 30
+ Y: 262
+ Width: 100
+ Height: 22
+ Align: Right
+ Font: Bold
+ Text: {0}
+ Label@GAME_TIMER:
+ Logic: GameTimerLogic
+ Y: 263
+ Width: PARENT_RIGHT
+ Height: 22
+ Align: Center
+ Font: TinyBold
+ Container@SIDEBAR_PRODUCTION:
+ Logic: ClassicProductionLogic
+ X: WINDOW_RIGHT - 250
+ Y: 300
+ Width: 238
+ Height: 250
+ Children:
+ Container@PALETTE_BACKGROUND:
+ Children:
+ Image@ROW_TEMPLATE:
+ Logic: AddRaceSuffixLogic
+ Width: 238
+ Height: 47
+ ClickThrough: false
+ ImageCollection: sidebar
+ ImageName: background-iconrow
+ Image@BOTTOM_CAP:
+ Logic: AddRaceSuffixLogic
+ Width: 238
+ Height: 8
+ ClickThrough: false
+ ImageCollection: sidebar
+ ImageName: background-bottom
+ LogicTicker@PRODUCTION_TICKER:
+ ProductionPalette@PRODUCTION_PALETTE:
+ X: 42
+ Y: 1
+ TooltipContainer: TOOLTIP_CONTAINER
+ ReadyText: READY
+ HoldText: ON HOLD
+ IconSize: 62, 46
+ IconMargin: 1, 1
+ IconSpriteOffset: -1, -1
+ Container@PALETTE_FOREGROUND:
+ X: 40
+ Y: 0-1
+ Children:
+ Image@ROW_TEMPLATE:
+ Width: 238
+ Height: 47
+ IgnoreMouseOver: true
+ ImageCollection: sidebar-soviet
+ ImageName: background-iconoverlay
+ Container@PRODUCTION_TYPES:
+ X: 7
+ Y: 2
+ Width: 29
+ Height: 240
+ Children:
+ ProductionTypeButton@BUILDING:
+ Logic: AddRaceSuffixLogic
+ Width: 28
+ Height: 28
+ VisualHeight: 0
+ Background: sidebar-button
+ TooltipText: Buildings
+ TooltipContainer: TOOLTIP_CONTAINER
+ ProductionGroup: Building
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: production-icons
+ ProductionTypeButton@DEFENSE:
+ Logic: AddRaceSuffixLogic
+ Y: 31
+ Width: 28
+ Height: 28
+ VisualHeight: 0
+ Background: sidebar-button
+ TooltipText: Defense
+ TooltipContainer: TOOLTIP_CONTAINER
+ ProductionGroup: Defense
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: production-icons
+ ProductionTypeButton@INFANTRY:
+ Logic: AddRaceSuffixLogic
+ Y: 62
+ Width: 28
+ Height: 28
+ VisualHeight: 0
+ Background: sidebar-button
+ TooltipText: Infantry
+ TooltipContainer: TOOLTIP_CONTAINER
+ ProductionGroup: Infantry
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: production-icons
+ ProductionTypeButton@VEHICLE:
+ Logic: AddRaceSuffixLogic
+ Y: 93
+ Width: 28
+ Height: 28
+ VisualHeight: 0
+ Background: sidebar-button
+ TooltipText: Vehicles
+ TooltipContainer: TOOLTIP_CONTAINER
+ ProductionGroup: Vehicle
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: production-icons
+ ProductionTypeButton@AIRCRAFT:
+ Logic: AddRaceSuffixLogic
+ Y: 124
+ Width: 28
+ Height: 28
+ VisualHeight: 0
+ Background: sidebar-button
+ TooltipText: Aircraft
+ TooltipContainer: TOOLTIP_CONTAINER
+ ProductionGroup: Aircraft
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: production-icons
+ ProductionTypeButton@AIRCRAFT:
+ Logic: AddRaceSuffixLogic
+ Y: 155
+ Width: 28
+ Height: 28
+ VisualHeight: 0
+ Background: sidebar-button
+ TooltipText: Naval
+ TooltipContainer: TOOLTIP_CONTAINER
+ ProductionGroup: Ship
+ Children:
+ Image@ICON:
+ X: 6
+ Y: 6
+ ImageCollection: production-icons
diff --git a/mods/ra/chrome/ingame.yaml b/mods/ra/chrome/ingame.yaml
index ccf1813083..e24e7b3ca5 100644
--- a/mods/ra/chrome/ingame.yaml
+++ b/mods/ra/chrome/ingame.yaml
@@ -1,5 +1,5 @@
Container@INGAME_ROOT:
- Logic: IngameChromeLogic
+ Logic: LoadIngamePlayerOrObserverUILogic
Children:
LogicTicker@DISCONNECT_WATCHER:
Logic: DisconnectWatcherLogic
@@ -19,41 +19,14 @@ Container@INGAME_ROOT:
Y: 0
Width: WINDOW_RIGHT
Height: WINDOW_BOTTOM
- Container@GAME_TIMER_BLOCK:
- Logic: GameTimerLogic
- X: WINDOW_RIGHT/2 - WIDTH
- Width: 100
- Height: 55
- Children:
- Label@GAME_TIMER:
- Width: PARENT_RIGHT
- Height: 15
- Align: Center
- Font: Title
- Contrast: true
- Label@GAME_TIMER_STATUS:
- Y: 35
- Width: PARENT_RIGHT
- Height: 15
- Align: Center
- Font: Bold
- Contrast: true
StrategicProgress@STRATEGIC_PROGRESS:
X: WINDOW_RIGHT/2
Y: 40
SupportPowerTimer@SUPPORT_POWER_TIMER:
X: 80
- Y: 34
+ Y: 10
Order: Descending
Container@PLAYER_ROOT:
- Button@INGAME_OPTIONS_BUTTON:
- X: 0
- Y: 0
- Width: 160
- Height: 25
- Text: Options (ESC)
- Font: Bold
- Key: escape
Container@PERFORMANCE_INFO:
Logic: PerfDebugLogic
Children:
diff --git a/mods/ra/chrome/tooltips.yaml b/mods/ra/chrome/tooltips.yaml
index 14d4190cca..ecb57dd4bf 100644
--- a/mods/ra/chrome/tooltips.yaml
+++ b/mods/ra/chrome/tooltips.yaml
@@ -108,3 +108,63 @@ Background@CLIENT_TOOLTIP:
Height: 10
Font: TinyBold
+Background@PRODUCTION_TOOLTIP:
+ Logic: ProductionTooltipLogic
+ Background: dialog4
+ Width: 200
+ Height: 65
+ Children:
+ Label@NAME:
+ X: 7
+ Y: 2
+ Height: 23
+ Font: Bold
+ Label@REQUIRES:
+ X: 7
+ Y: 21
+ Height: 23
+ Font: TinyBold
+ Text: Requires {0}
+ Label@DESC:
+ X: 7
+ Y: 41
+ Height: 23
+ Font: TinyBold
+ VAlign: Top
+ Label@COST:
+ Height: 23
+ Font: Bold
+ Label@TIME:
+ Y: 21
+ Height: 23
+ Font: Bold
+ Label@POWER:
+ Y: 41
+ Height: 23
+ Font: Bold
+ Label@TIME:
+ Y: 41
+ Height: 23
+ Font: Bold
+
+Background@SUPPORT_POWER_TOOLTIP:
+ Logic: SupportPowerTooltipLogic
+ Background: dialog4
+ Width: 200
+ Height: 29
+ Children:
+ Label@NAME:
+ X: 7
+ Y: 2
+ Height: 20
+ Font: Bold
+ Label@TIME:
+ X: 20
+ Y: 8
+ Font: TinyBold
+ VAlign: Top
+ Label@DESC:
+ X: 7
+ Y: 22
+ Font: TinyBold
+ VAlign: Top
\ No newline at end of file
diff --git a/mods/ra/rules/world.yaml b/mods/ra/rules/world.yaml
index bba7700680..4f34728d95 100644
--- a/mods/ra/rules/world.yaml
+++ b/mods/ra/rules/world.yaml
@@ -16,7 +16,8 @@ World:
LightPaletteRotator:
ExcludePalettes: terrain, effect
BuildingInfluence:
- ChooseBuildTabOnSelect:
+ ProductionQueueFromSelection:
+ ProductionPaletteWidget: PRODUCTION_PALETTE
BridgeLayer:
Bridges: bridge1, bridge2, br1, br2, br3, sbridge1, sbridge2, sbridge3, sbridge4
CrateSpawner:
diff --git a/mods/ra/uibits/chrome-allies.png b/mods/ra/uibits/chrome-allies.png
deleted file mode 100644
index ac63a2000e..0000000000
Binary files a/mods/ra/uibits/chrome-allies.png and /dev/null differ
diff --git a/mods/ra/uibits/chrome-soviet.png b/mods/ra/uibits/chrome-soviet.png
deleted file mode 100644
index 0dc3fd917c..0000000000
Binary files a/mods/ra/uibits/chrome-soviet.png and /dev/null differ
diff --git a/mods/ra/uibits/chrome.png b/mods/ra/uibits/chrome.png
new file mode 100644
index 0000000000..c3db51ddfc
Binary files /dev/null and b/mods/ra/uibits/chrome.png differ
diff --git a/mods/ra/uibits/tabs.png b/mods/ra/uibits/tabs.png
deleted file mode 100644
index 42f40d119d..0000000000
Binary files a/mods/ra/uibits/tabs.png and /dev/null differ