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