diff --git a/OpenRA.Mods.Common/Traits/Player/ProductionQueue.cs b/OpenRA.Mods.Common/Traits/Player/ProductionQueue.cs index 6fd87d36b8..1a600babbe 100644 --- a/OpenRA.Mods.Common/Traits/Player/ProductionQueue.cs +++ b/OpenRA.Mods.Common/Traits/Player/ProductionQueue.cs @@ -236,6 +236,11 @@ namespace OpenRA.Mods.Common.Traits return Queue.Count > 0 && Queue[0] == item; } + public ProductionItem CurrentItem() + { + return Queue.ElementAtOrDefault(0); + } + public virtual IEnumerable AllQueued() { return Queue; diff --git a/OpenRA.Mods.Common/Widgets/LineGraphWidget.cs b/OpenRA.Mods.Common/Widgets/LineGraphWidget.cs index 4e8ae667d9..16cc2e33e7 100644 --- a/OpenRA.Mods.Common/Widgets/LineGraphWidget.cs +++ b/OpenRA.Mods.Common/Widgets/LineGraphWidget.cs @@ -148,19 +148,19 @@ namespace OpenRA.Mods.Common.Widgets for (int n = pointStart, x = 0; n <= pointEnd; n++, x += xStep) { cr.DrawLine(origin + new float2(x, 0), origin + new float2(x, -5), 1, Color.White); - tiny.DrawText(GetXAxisValueFormat().F(n), origin + new float2(x, 2), Color.White); + tiny.DrawTextWithShadow(GetXAxisValueFormat().F(n), origin + new float2(x, 2), Color.White, BackgroundColorDark, BackgroundColorLight, 1); } - bold.DrawText(GetXAxisLabel(), origin + new float2(width / 2, 20), Color.White); + bold.DrawTextWithShadow(GetXAxisLabel(), origin + new float2(width / 2, 20), Color.White, BackgroundColorDark, BackgroundColorLight, 1); for (var y = GetDisplayFirstYAxisValue() ? 0 : yStep; y <= height; y += yStep) { var yValue = y / scale; cr.DrawLine(origin + new float2(width - 5, -y), origin + new float2(width, -y), 1, Color.White); - tiny.DrawText(GetYAxisValueFormat().F(yValue), origin + new float2(width + 2, -y), Color.White); + tiny.DrawTextWithShadow(GetYAxisValueFormat().F(yValue), origin + new float2(width + 2, -y), Color.White, BackgroundColorDark, BackgroundColorLight, 1); } - bold.DrawText(GetYAxisLabel(), origin + new float2(width + 40, -(height / 2)), Color.White); + bold.DrawTextWithShadow(GetYAxisLabel(), origin + new float2(width + 40, -(height / 2)), Color.White, BackgroundColorDark, BackgroundColorLight, 1); cr.DrawLine(origin, origin + new float2(width, 0), 1, Color.White); cr.DrawLine(origin, origin + new float2(0, -height), 1, Color.White); diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/MenuButtonsChromeLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/MenuButtonsChromeLogic.cs index 9e6ebb397a..ceb1f7c5db 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/MenuButtonsChromeLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/MenuButtonsChromeLogic.cs @@ -12,13 +12,11 @@ using System; using System.Collections.Generic; using System.Linq; -using OpenRA.Mods.Common.Lint; using OpenRA.Mods.Common.Traits; using OpenRA.Widgets; namespace OpenRA.Mods.Common.Widgets.Logic { - [ChromeLogicArgsHotkeys("StatisticsBasicKey", "StatisticsEconomyKey", "StatisticsProductionKey", "StatisticsCombatKey", "StatisticsGraphKey", "StatisticsArmyGraphKey")] public class MenuButtonsChromeLogic : ChromeLogic { readonly World world; @@ -38,10 +36,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic menuRoot = Ui.Root.Get("MENU_ROOT"); MiniYaml yaml; - string[] keyNames = Enum.GetNames(typeof(ObserverStatsPanel)); - var statsHotkeys = new HotkeyReference[keyNames.Length]; - for (var i = 0; i < keyNames.Length; i++) - statsHotkeys[i] = logicArgs.TryGetValue("Statistics" + keyNames[i] + "Key", out yaml) ? modData.Hotkeys[yaml.Value] : new HotkeyReference(); // System buttons var options = widget.GetOrNull("OPTIONS_BUTTON"); @@ -91,35 +85,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic }); } - var stats = widget.GetOrNull("OBSERVER_STATS_BUTTON"); - if (stats != null) - { - stats.IsDisabled = () => disableSystemButtons || world.Map.Visibility.HasFlag(MapVisibility.MissionSelector); - stats.OnClick = () => OpenMenuPanel(stats, new WidgetArgs() { { "activePanel", ObserverStatsPanel.Basic } }); - } - - var keyListener = widget.GetOrNull("OBSERVER_KEY_LISTENER"); - if (keyListener != null) - { - keyListener.AddHandler(e => - { - if (e.Event == KeyInputEvent.Down && !e.IsRepeat) - { - for (var i = 0; i < statsHotkeys.Length; i++) - { - if (statsHotkeys[i].IsActivatedBy(e)) - { - Game.Sound.PlayNotification(modData.DefaultRules, null, "Sounds", clickSound, null); - OpenMenuPanel(stats, new WidgetArgs() { { "activePanel", i } }); - return true; - } - } - } - - return false; - }); - } - if (logicArgs.TryGetValue("ClickSound", out yaml)) clickSound = yaml.Value; } diff --git a/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverStatsLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverStatsLogic.cs index 2fe9490749..f8b274c9d3 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverStatsLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/Ingame/ObserverStatsLogic.cs @@ -21,14 +21,16 @@ using OpenRA.Widgets; namespace OpenRA.Mods.Common.Widgets.Logic { - public enum ObserverStatsPanel { Basic, Economy, Production, Combat, Graph, ArmyGraph } + public enum ObserverStatsPanel { None, Basic, Economy, Production, SupportPowers, Combat, Graph, ArmyGraph } - [ChromeLogicArgsHotkeys("StatisticsBasicKey", "StatisticsEconomyKey", "StatisticsProductionKey", "StatisticsCombatKey", "StatisticsGraphKey", "StatisticsArmyGraphKey")] + [ChromeLogicArgsHotkeys("StatisticsBasicKey", "StatisticsEconomyKey", "StatisticsProductionKey", "StatisticsSupportPowersKey", "StatisticsCombatKey", "StatisticsGraphKey", + "StatisticsArmyGraphKey")] public class ObserverStatsLogic : ChromeLogic { readonly ContainerWidget basicStatsHeaders; readonly ContainerWidget economyStatsHeaders; readonly ContainerWidget productionStatsHeaders; + readonly ContainerWidget supportPowerStatsHeaders; readonly ContainerWidget combatStatsHeaders; readonly ContainerWidget earnedThisMinuteGraphHeaders; readonly ContainerWidget armyThisMinuteGraphHeaders; @@ -36,19 +38,24 @@ namespace OpenRA.Mods.Common.Widgets.Logic readonly ScrollItemWidget basicPlayerTemplate; readonly ScrollItemWidget economyPlayerTemplate; readonly ScrollItemWidget productionPlayerTemplate; + readonly ScrollItemWidget supportPowersPlayerTemplate; readonly ScrollItemWidget combatPlayerTemplate; - readonly ContainerWidget earnedThisMinuteGraphTemplate; - readonly ContainerWidget armyThisMinuteGraphTemplate; + readonly ContainerWidget earnedThisMinuteGraphContainer; + readonly ContainerWidget armyThisMinuteGraphContainer; + readonly LineGraphWidget earnedThisMinuteGraph; + readonly LineGraphWidget armyThisMinuteGraph; readonly ScrollItemWidget teamTemplate; readonly IEnumerable players; + readonly IOrderedEnumerable> teams; + readonly bool hasTeams; readonly World world; readonly WorldRenderer worldRenderer; readonly string clickSound = ChromeMetrics.Get("ClickSound"); + bool noneSelected = true; [ObjectCreator.UseCtor] - public ObserverStatsLogic(World world, ModData modData, WorldRenderer worldRenderer, Widget widget, - Action onExit, ObserverStatsPanel activePanel, Dictionary logicArgs) + public ObserverStatsLogic(World world, ModData modData, WorldRenderer worldRenderer, Widget widget, Dictionary logicArgs) { this.world = world; this.worldRenderer = worldRenderer; @@ -60,28 +67,49 @@ namespace OpenRA.Mods.Common.Widgets.Logic statsHotkeys[i] = logicArgs.TryGetValue("Statistics" + keyNames[i] + "Key", out yaml) ? modData.Hotkeys[yaml.Value] : new HotkeyReference(); players = world.Players.Where(p => !p.NonCombatant); + teams = players.GroupBy(p => (world.LobbyInfo.ClientWithIndex(p.ClientIndex) ?? new Session.Client()).Team).OrderBy(g => g.Key); + hasTeams = !(teams.Count() == 1 && teams.First().Key == 0); basicStatsHeaders = widget.Get("BASIC_STATS_HEADERS"); economyStatsHeaders = widget.Get("ECONOMY_STATS_HEADERS"); productionStatsHeaders = widget.Get("PRODUCTION_STATS_HEADERS"); + supportPowerStatsHeaders = widget.Get("SUPPORT_POWERS_HEADERS"); combatStatsHeaders = widget.Get("COMBAT_STATS_HEADERS"); + earnedThisMinuteGraphHeaders = widget.Get("EARNED_THIS_MIN_GRAPH_HEADERS"); armyThisMinuteGraphHeaders = widget.Get("ARMY_THIS_MIN_GRAPH_HEADERS"); playerStatsPanel = widget.Get("PLAYER_STATS_PANEL"); playerStatsPanel.Layout = new GridLayout(playerStatsPanel); + playerStatsPanel.IgnoreMouseOver = true; + + if (ShowScrollBar) + { + playerStatsPanel.ScrollBar = ScrollBar.Left; + + AdjustHeader(basicStatsHeaders); + AdjustHeader(economyStatsHeaders); + AdjustHeader(productionStatsHeaders); + AdjustHeader(supportPowerStatsHeaders); + AdjustHeader(combatStatsHeaders); + } basicPlayerTemplate = playerStatsPanel.Get("BASIC_PLAYER_TEMPLATE"); economyPlayerTemplate = playerStatsPanel.Get("ECONOMY_PLAYER_TEMPLATE"); productionPlayerTemplate = playerStatsPanel.Get("PRODUCTION_PLAYER_TEMPLATE"); + supportPowersPlayerTemplate = playerStatsPanel.Get("SUPPORT_POWERS_PLAYER_TEMPLATE"); combatPlayerTemplate = playerStatsPanel.Get("COMBAT_PLAYER_TEMPLATE"); - earnedThisMinuteGraphTemplate = playerStatsPanel.Get("EARNED_THIS_MIN_GRAPH_TEMPLATE"); - armyThisMinuteGraphTemplate = playerStatsPanel.Get("ARMY_THIS_MIN_GRAPH_TEMPLATE"); + + earnedThisMinuteGraphContainer = widget.Get("EARNED_THIS_MIN_GRAPH_CONTAINER"); + earnedThisMinuteGraph = earnedThisMinuteGraphContainer.Get("EARNED_THIS_MIN_GRAPH"); + + armyThisMinuteGraphContainer = widget.Get("ARMY_THIS_MIN_GRAPH_CONTAINER"); + armyThisMinuteGraph = armyThisMinuteGraphContainer.Get("ARMY_THIS_MIN_GRAPH"); teamTemplate = playerStatsPanel.Get("TEAM_TEMPLATE"); var statsDropDown = widget.Get("STATS_DROPDOWN"); - Func createStatsOption = (title, headers, a) => + Func createStatsOption = (title, headers, template, a) => { return new StatsDropDownOption { @@ -89,21 +117,40 @@ namespace OpenRA.Mods.Common.Widgets.Logic IsSelected = () => headers.Visible, OnClick = () => { + noneSelected = false; ClearStats(); + playerStatsPanel.Visible = true; statsDropDown.GetText = () => title; + if (template != null) + AdjustStatisticsPanel(template); + a(); + Ui.ResetTooltips(); } }; }; var statsDropDownOptions = new StatsDropDownOption[] { - createStatsOption("Basic", basicStatsHeaders, () => DisplayStats(BasicStats)), - createStatsOption("Economy", economyStatsHeaders, () => DisplayStats(EconomyStats)), - createStatsOption("Production", productionStatsHeaders, () => DisplayStats(ProductionStats)), - createStatsOption("Combat", combatStatsHeaders, () => DisplayStats(CombatStats)), - createStatsOption("Earnings (graph)", earnedThisMinuteGraphHeaders, () => EarnedThisMinuteGraph()), - createStatsOption("Army (graph)", armyThisMinuteGraphHeaders, () => ArmyThisMinuteGraph()), + new StatsDropDownOption + { + Title = "Information: None", + IsSelected = () => noneSelected, + OnClick = () => + { + noneSelected = true; + statsDropDown.GetText = () => "Information: None"; + playerStatsPanel.Visible = false; + ClearStats(); + } + }, + createStatsOption("Basic", basicStatsHeaders, basicPlayerTemplate, () => DisplayStats(BasicStats)), + createStatsOption("Economy", economyStatsHeaders, economyPlayerTemplate, () => DisplayStats(EconomyStats)), + createStatsOption("Production", productionStatsHeaders, productionPlayerTemplate, () => DisplayStats(ProductionStats)), + createStatsOption("Support powers", supportPowerStatsHeaders, supportPowersPlayerTemplate, () => DisplayStats(SupportPowerStats)), + createStatsOption("Combat", combatStatsHeaders, combatPlayerTemplate, () => DisplayStats(CombatStats)), + createStatsOption("Earnings (graph)", earnedThisMinuteGraphHeaders, null, () => EarnedThisMinuteGraph()), + createStatsOption("Army (graph)", armyThisMinuteGraphHeaders, null, () => ArmyThisMinuteGraph()), }; Func setupItem = (option, template) => @@ -113,17 +160,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic return item; }; - statsDropDown.OnMouseDown = _ => statsDropDown.ShowDropDown("LABEL_DROPDOWN_TEMPLATE", 155, statsDropDownOptions, setupItem); - statsDropDownOptions[(int)activePanel].OnClick(); + var statsDropDownPanelTemplate = logicArgs.TryGetValue("StatsDropDownPanelTemplate", out yaml) ? yaml.Value : "LABEL_DROPDOWN_TEMPLATE"; - var close = widget.GetOrNull("CLOSE"); - if (close != null) - close.OnClick = () => - { - Ui.CloseWindow(); - Ui.Root.RemoveChild(widget); - onExit(); - }; + statsDropDown.OnMouseDown = _ => statsDropDown.ShowDropDown(statsDropDownPanelTemplate, 205, statsDropDownOptions, setupItem); + statsDropDownOptions[0].OnClick(); var keyListener = statsDropDown.Get("STATS_DROPDOWN_KEYHANDLER"); keyListener.AddHandler(e => @@ -154,53 +194,70 @@ namespace OpenRA.Mods.Common.Widgets.Logic basicStatsHeaders.Visible = false; economyStatsHeaders.Visible = false; productionStatsHeaders.Visible = false; + supportPowerStatsHeaders.Visible = false; combatStatsHeaders.Visible = false; earnedThisMinuteGraphHeaders.Visible = false; armyThisMinuteGraphHeaders.Visible = false; + + earnedThisMinuteGraphContainer.Visible = false; + armyThisMinuteGraphContainer.Visible = false; + + earnedThisMinuteGraph.GetSeries = null; + armyThisMinuteGraph.GetSeries = null; } void EarnedThisMinuteGraph() { + playerStatsPanel.Visible = false; earnedThisMinuteGraphHeaders.Visible = true; - var template = earnedThisMinuteGraphTemplate.Clone(); + earnedThisMinuteGraphContainer.Visible = true; - var graph = template.Get("EARNED_THIS_MIN_GRAPH"); - graph.GetSeries = () => + earnedThisMinuteGraph.GetSeries = () => players.Select(p => new LineGraphSeries( p.PlayerName, p.Color, (p.PlayerActor.TraitOrDefault() ?? new PlayerStatistics(p.PlayerActor)).EarnedSamples.Select(s => (float)s))); - - playerStatsPanel.AddChild(template); - playerStatsPanel.ScrollToTop(); } void ArmyThisMinuteGraph() { + playerStatsPanel.Visible = false; armyThisMinuteGraphHeaders.Visible = true; - var template = armyThisMinuteGraphTemplate.Clone(); + armyThisMinuteGraphContainer.Visible = true; - var graph = template.Get("ARMY_THIS_MIN_GRAPH"); - graph.GetSeries = () => + armyThisMinuteGraph.GetSeries = () => players.Select(p => new LineGraphSeries( p.PlayerName, p.Color, (p.PlayerActor.TraitOrDefault() ?? new PlayerStatistics(p.PlayerActor)).ArmySamples.Select(s => (float)s))); - - playerStatsPanel.AddChild(template); - playerStatsPanel.ScrollToTop(); } void DisplayStats(Func createItem) { - var teams = players.GroupBy(p => (world.LobbyInfo.ClientWithIndex(p.ClientIndex) ?? new Session.Client()).Team).OrderBy(g => g.Key); - foreach (var t in teams) + foreach (var team in teams) { - var team = t; - var tt = ScrollItemWidget.Setup(teamTemplate, () => false, () => { }); - tt.IgnoreMouseOver = true; - tt.Get("TEAM").GetText = () => team.Key == 0 ? "No Team" : "Team " + team.Key; - playerStatsPanel.AddChild(tt); + if (hasTeams) + { + var tt = ScrollItemWidget.Setup(teamTemplate, () => false, () => { }); + tt.IgnoreMouseOver = true; + + var teamLabel = tt.Get("TEAM"); + teamLabel.GetText = () => team.Key == 0 ? "No Team" : "Team " + team.Key; + tt.Bounds.Width = teamLabel.Bounds.Width = Game.Renderer.Fonts[tt.Font].Measure(tt.Get("TEAM").GetText()).X; + + var colorBlockWidget = tt.Get("TEAM_COLOR"); + var scrollBarOffset = playerStatsPanel.ScrollBar != ScrollBar.Hidden + ? playerStatsPanel.ScrollbarWidth + : 0; + var boundsWidth = tt.Parent.Bounds.Width - scrollBarOffset; + colorBlockWidget.Bounds.Width = boundsWidth - 200; + + var gradient = tt.Get("TEAM_GRADIENT"); + gradient.Bounds.X = boundsWidth - 200; + + playerStatsPanel.AddChild(tt); + } + foreach (var p in team) { var player = p; @@ -216,6 +273,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic LobbyUtils.AddPlayerFlagAndName(template, player); + var playerName = template.Get("PLAYER"); + playerName.GetColor = () => Color.White; + + var playerColor = template.Get("PLAYER_COLOR"); + var playerGradient = template.Get("PLAYER_GRADIENT"); + + SetupPlayerColor(player, template, playerColor, playerGradient); + var stats = player.PlayerActor.TraitOrDefault(); if (stats == null) return template; template.Get("ASSETS_DESTROYED").GetText = () => "$" + stats.KillsCost; @@ -236,7 +301,35 @@ namespace OpenRA.Mods.Common.Widgets.Logic LobbyUtils.AddPlayerFlagAndName(template, player); + var playerName = template.Get("PLAYER"); + playerName.GetColor = () => Color.White; + + var playerColor = template.Get("PLAYER_COLOR"); + var playerGradient = template.Get("PLAYER_GRADIENT"); + + SetupPlayerColor(player, template, playerColor, playerGradient); + template.Get("PRODUCTION_ICONS").GetPlayer = () => player; + template.IgnoreChildMouseOver = false; + + return template; + } + + ScrollItemWidget SupportPowerStats(Player player) + { + supportPowerStatsHeaders.Visible = true; + var template = SetupPlayerScrollItemWidget(supportPowersPlayerTemplate, player); + + LobbyUtils.AddPlayerFlagAndName(template, player); + + var playerName = template.Get("PLAYER"); + playerName.GetColor = () => Color.White; + + var playerColor = template.Get("PLAYER_COLOR"); + var playerGradient = template.Get("PLAYER_GRADIENT"); + + SetupPlayerColor(player, template, playerColor, playerGradient); + template.Get("SUPPORT_POWER_ICONS").GetPlayer = () => player; template.IgnoreChildMouseOver = false; @@ -250,6 +343,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic LobbyUtils.AddPlayerFlagAndName(template, player); + var playerName = template.Get("PLAYER"); + playerName.GetColor = () => Color.White; + + var playerColor = template.Get("PLAYER_COLOR"); + var playerGradient = template.Get("PLAYER_GRADIENT"); + + SetupPlayerColor(player, template, playerColor, playerGradient); + var res = player.PlayerActor.Trait(); var stats = player.PlayerActor.TraitOrDefault(); if (stats == null) return template; @@ -278,6 +379,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic LobbyUtils.AddPlayerFlagAndName(template, player); + var playerName = template.Get("PLAYER"); + playerName.GetColor = () => Color.White; + + var playerColor = template.Get("PLAYER_COLOR"); + var playerGradient = template.Get("PLAYER_GRADIENT"); + + SetupPlayerColor(player, template, playerColor, playerGradient); + var res = player.PlayerActor.Trait(); template.Get("CASH").GetText = () => "$" + (res.Cash + res.Resources); template.Get("EARNED_MIN").GetText = () => AverageEarnedPerMinute(res.Earned); @@ -302,6 +411,21 @@ namespace OpenRA.Mods.Common.Widgets.Logic return template; } + void SetupPlayerColor(Player player, ScrollItemWidget template, ColorBlockWidget colorBlockWidget, GradientColorBlockWidget gradientColorBlockWidget) + { + var color = Color.FromArgb(128, player.Color.R, player.Color.G, player.Color.B); + var hoverColor = Color.FromArgb(192, player.Color.R, player.Color.G, player.Color.B); + + var isMouseOver = new CachedTransform(w => w == template || template.Children.Contains(w)); + + colorBlockWidget.GetColor = () => isMouseOver.Update(Ui.MouseOverWidget) ? hoverColor : color; + + gradientColorBlockWidget.GetTopLeftColor = () => isMouseOver.Update(Ui.MouseOverWidget) ? hoverColor : color; + gradientColorBlockWidget.GetBottomLeftColor = () => isMouseOver.Update(Ui.MouseOverWidget) ? hoverColor : color; + gradientColorBlockWidget.GetTopRightColor = () => isMouseOver.Update(Ui.MouseOverWidget) ? hoverColor : Color.Transparent; + gradientColorBlockWidget.GetBottomRightColor = () => isMouseOver.Update(Ui.MouseOverWidget) ? hoverColor : Color.Transparent; + } + ScrollItemWidget SetupPlayerScrollItemWidget(ScrollItemWidget template, Player player) { return ScrollItemWidget.Setup(template, () => false, () => @@ -312,9 +436,28 @@ namespace OpenRA.Mods.Common.Widgets.Logic }); } - static string MapControl(double control) + void AdjustStatisticsPanel(Widget itemTemplate) { - return (control * 100).ToString("F1") + "%"; + var height = playerStatsPanel.Bounds.Height; + + var scrollbarWidth = playerStatsPanel.ScrollBar != ScrollBar.Hidden ? playerStatsPanel.ScrollbarWidth : 0; + playerStatsPanel.Bounds.Width = itemTemplate.Bounds.Width + scrollbarWidth; + + if (playerStatsPanel.Bounds.Height < height) + playerStatsPanel.ScrollToTop(); + } + + void AdjustHeader(ContainerWidget headerTemplate) + { + var offset = playerStatsPanel.ScrollbarWidth; + + headerTemplate.Get("HEADER_COLOR").Bounds.Width += offset; + headerTemplate.Get("HEADER_GRADIENT").Bounds.X += offset; + + foreach (var headerLabel in headerTemplate.Children.OfType()) + { + headerLabel.Bounds.X += offset; + } } string AverageOrdersPerMinute(double orders) @@ -324,13 +467,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic string AverageEarnedPerMinute(double earned) { - return "$" + (world.WorldTick == 0 ? 0 : earned / (world.WorldTick / 1500.0)).ToString("F2"); - } - - string KillDeathRatio(int killed, int dead) - { - var kdr = (float)killed / Math.Max(1.0, dead); - return kdr.ToString("F2"); + return "$" + (world.WorldTick == 0 ? 0 : earned / (world.WorldTick / 1500.0)).ToString("F0"); } static Color GetPowerColor(PowerState state) @@ -340,6 +477,12 @@ namespace OpenRA.Mods.Common.Widgets.Logic return Color.LimeGreen; } + // HACK The height of the templates and the scrollpanel needs to be kept in synch + bool ShowScrollBar + { + get { return players.Count() + (hasTeams ? teams.Count() : 0) > 10; } + } + class StatsDropDownOption { public string Title; diff --git a/OpenRA.Mods.Common/Widgets/ObserverProductionIconsWidget.cs b/OpenRA.Mods.Common/Widgets/ObserverProductionIconsWidget.cs index f569fdcd6d..55152aa609 100644 --- a/OpenRA.Mods.Common/Widgets/ObserverProductionIconsWidget.cs +++ b/OpenRA.Mods.Common/Widgets/ObserverProductionIconsWidget.cs @@ -31,7 +31,7 @@ namespace OpenRA.Mods.Common.Widgets public int IconWidth = 32; public int IconHeight = 24; - public int IconSpacing = 8; + public int IconSpacing = 1; public string ClockAnimation = "clock"; public string ClockSequence = "idle"; @@ -41,12 +41,12 @@ namespace OpenRA.Mods.Common.Widgets public Func GetTooltipIcon; Dictionary clocks; + readonly Lazy tooltipContainer; + readonly List productionIcons = new List(); + readonly List productionIconsBounds = new List(); + float2 iconSize; - Rectangle[] iconRects = new Rectangle[0]; - ProductionIcon[] icons; - Rectangle renderBounds; int lastIconIdx; - Lazy tooltipContainer; [ObjectCreator.UseCtor] public ObserverProductionIconsWidget(World world, WorldRenderer worldRenderer) @@ -87,11 +87,13 @@ namespace OpenRA.Mods.Common.Widgets tooltipContainer = Exts.Lazy(() => Ui.Root.Get(TooltipContainer)); - renderBounds = Rectangle.Empty; } public override void Draw() { + productionIcons.Clear(); + productionIconsBounds.Clear(); + var player = GetPlayer(); if (player == null) return; @@ -100,57 +102,75 @@ namespace OpenRA.Mods.Common.Widgets .Where(a => a.Actor.Owner == player) .Select((a, i) => new { a.Trait, i }); - if (renderBounds != RenderBounds) - { - renderBounds = RenderBounds; - InitIcons(renderBounds); - } - else - for (var i = 0; i < icons.Length; i++) - icons[i].Actor = null; - foreach (var queue in queues) - { if (!clocks.ContainsKey(queue.Trait)) clocks.Add(queue.Trait, new Animation(world, ClockAnimation)); - var current = queue.Trait.AllQueued().FirstOrDefault(); - if (current == null || queue.i >= icons.Length) - continue; + var currentItemsByItem = queues + .Select(a => a.Trait.CurrentItem()) + .Where(pi => pi != null) + .GroupBy(pr => pr.Item) + .OrderBy(g => g.First().Queue.Info.Type) + .ThenBy(g => g.First().Item) + .ToList(); - var faction = queue.Trait.Actor.Owner.Faction.InternalName; - var actor = queue.Trait.AllItems().FirstOrDefault(a => a.Name == current.Item); + Bounds.Width = currentItemsByItem.Count * (IconWidth + IconSpacing); + + var queueCol = 0; + foreach (var currentItems in currentItemsByItem) + { + var current = currentItems.OrderBy(pi => pi.Done ? 0 : (pi.Paused ? 2 : 1)).ThenBy(q => q.RemainingTimeActual).First(); + var queue = current.Queue; + + var faction = queue.Actor.Owner.Faction.InternalName; + var actor = queue.AllItems().FirstOrDefault(a => a.Name == current.Item); if (actor == null) continue; var rsi = actor.TraitInfo(); var icon = new Animation(world, rsi.GetImage(actor, world.Map.Rules.Sequences, faction)); var bi = actor.TraitInfo(); + icon.Play(bi.Icon); - var location = new float2(iconRects[queue.i].Location); - WidgetUtils.DrawSHPCentered(icon.Image, location + 0.5f * iconSize, worldRenderer.Palette(bi.IconPalette), 0.5f); + var topLeftOffset = new float2(queueCol * (IconWidth + IconSpacing), 0); - icons[queue.i].Actor = actor; - icons[queue.i].ProductionQueue = queue.Trait; + var iconTopLeft = RenderOrigin + topLeftOffset; + var centerPosition = iconTopLeft; - var pio = queue.Trait.Actor.Owner.PlayerActor.TraitsImplementing() + WidgetUtils.DrawSHPCentered(icon.Image, centerPosition + 0.5f * iconSize, worldRenderer.Palette(bi.IconPalette), 0.5f); + + productionIcons.Add(new ProductionIcon { Actor = actor, ProductionQueue = current.Queue }); + productionIconsBounds.Add(new Rectangle((int)iconTopLeft.X, (int)iconTopLeft.Y, (int)iconSize.X, (int)iconSize.Y)); + + var pio = queue.Actor.Owner.PlayerActor.TraitsImplementing() .FirstOrDefault(p => p.IsOverlayActive(actor)); + if (pio != null) - WidgetUtils.DrawSHPCentered(pio.Sprite, location + 0.5f * iconSize + pio.Offset(iconSize), + WidgetUtils.DrawSHPCentered(pio.Sprite, centerPosition + 0.5f * iconSize + pio.Offset(iconSize), worldRenderer.Palette(pio.Palette), 0.5f); - var clock = clocks[queue.Trait]; - clock.PlayFetchIndex(ClockSequence, - () => current.TotalTime == 0 ? 0 : ((current.TotalTime - current.RemainingTime) - * (clock.CurrentSequence.Length - 1) / current.TotalTime)); + var clock = clocks[queue]; + clock.PlayFetchIndex(ClockSequence, () => current.TotalTime == 0 ? 0 : + (current.TotalTime - current.RemainingTime) * (clock.CurrentSequence.Length - 1) / current.TotalTime); + clock.Tick(); - WidgetUtils.DrawSHPCentered(clock.Image, location + 0.5f * iconSize, worldRenderer.Palette(ClockPalette), 0.5f); + WidgetUtils.DrawSHPCentered(clock.Image, centerPosition + 0.5f * iconSize, worldRenderer.Palette(ClockPalette), 0.5f); var tiny = Game.Renderer.Fonts["Tiny"]; var text = GetOverlayForItem(current, timestep); tiny.DrawTextWithContrast(text, - location + new float2(16, 16) - new float2(tiny.Measure(text).X / 2, 0), + centerPosition + new float2(16, 12) - new float2(tiny.Measure(text).X / 2, 0), Color.White, Color.Black, 1); + + if (currentItems.Count() > 1) + { + var bold = Game.Renderer.Fonts["Small"]; + text = currentItems.Count().ToString(); + bold.DrawTextWithContrast(text, centerPosition + new float2(16, 0) - new float2(bold.Measure(text).X / 2, 0), + Color.White, Color.Black, 1); + } + + queueCol++; } } @@ -172,9 +192,19 @@ namespace OpenRA.Mods.Common.Widgets public override void MouseEntered() { - if (TooltipContainer != null) - tooltipContainer.Value.SetTooltip(TooltipTemplate, - new WidgetArgs() { { "player", GetPlayer() }, { "getTooltipIcon", GetTooltipIcon } }); + if (TooltipContainer == null) + return; + + for (var i = 0; i < productionIconsBounds.Count; i++) + { + if (!productionIconsBounds[i].Contains(Viewport.LastMousePos)) + continue; + + TooltipIcon = productionIcons[i]; + break; + } + + tooltipContainer.Value.SetTooltip(TooltipTemplate, new WidgetArgs { { "player", GetPlayer() }, { "getTooltipIcon", GetTooltipIcon } }); } public override void MouseExited() @@ -187,34 +217,26 @@ namespace OpenRA.Mods.Common.Widgets public override void Tick() { - if (TooltipIcon != null && iconRects[lastIconIdx].Contains(Viewport.LastMousePos)) + if (lastIconIdx >= productionIconsBounds.Count) + { + TooltipIcon = null; + return; + } + + if (TooltipIcon != null && productionIconsBounds[lastIconIdx].Contains(Viewport.LastMousePos)) return; - for (var i = 0; i < iconRects.Length; i++) + for (var i = 0; i < productionIconsBounds.Count; i++) { - if (iconRects[i].Contains(Viewport.LastMousePos)) - { - lastIconIdx = i; - TooltipIcon = icons[i]; - return; - } + if (!productionIconsBounds[i].Contains(Viewport.LastMousePos)) + continue; + + lastIconIdx = i; + TooltipIcon = productionIcons[i]; + return; } TooltipIcon = null; } - - void InitIcons(Rectangle renderBounds) - { - var iconWidthWithSpacing = IconWidth + IconSpacing; - var numOfIcons = renderBounds.Width / iconWidthWithSpacing; - iconRects = new Rectangle[numOfIcons]; - icons = new ProductionIcon[numOfIcons]; - - for (var i = 0; i < numOfIcons; i++) - { - iconRects[i] = new Rectangle(renderBounds.X + i * iconWidthWithSpacing, renderBounds.Y, IconWidth, IconHeight); - icons[i] = new ProductionIcon(); - } - } } } diff --git a/OpenRA.Mods.Common/Widgets/ObserverSupportPowerIconsWidget.cs b/OpenRA.Mods.Common/Widgets/ObserverSupportPowerIconsWidget.cs index 209f98550e..d186bf7813 100644 --- a/OpenRA.Mods.Common/Widgets/ObserverSupportPowerIconsWidget.cs +++ b/OpenRA.Mods.Common/Widgets/ObserverSupportPowerIconsWidget.cs @@ -29,7 +29,7 @@ namespace OpenRA.Mods.Common.Widgets public int IconWidth = 32; public int IconHeight = 24; - public int IconSpacing = 8; + public int IconSpacing = 1; public string ClockAnimation = "clock"; public string ClockSequence = "idle"; @@ -104,7 +104,7 @@ namespace OpenRA.Mods.Common.Widgets var tiny = Game.Renderer.Fonts["Tiny"]; var text = GetOverlayForItem(item, timestep); tiny.DrawTextWithContrast(text, - location + new float2(16, 16) - new float2(tiny.Measure(text).X / 2, 0), + location + new float2(16, 12) - new float2(tiny.Measure(text).X / 2, 0), Color.White, Color.Black, 1); } } diff --git a/mods/cnc/chrome.yaml b/mods/cnc/chrome.yaml index c58fd873ae..86beb84dd1 100644 --- a/mods/cnc/chrome.yaml +++ b/mods/cnc/chrome.yaml @@ -445,6 +445,9 @@ scrollitem-selected: chrome.png corner-bl: 128,63,1,1 corner-br: 159,63,1,1 +scrollitem-nohover: chrome.png + + # # Slider # === diff --git a/mods/cnc/chrome/ingame-observerstats.yaml b/mods/cnc/chrome/ingame-observerstats.yaml deleted file mode 100644 index 9ebe42eb9a..0000000000 --- a/mods/cnc/chrome/ingame-observerstats.yaml +++ /dev/null @@ -1,610 +0,0 @@ -Background@INGAME_OBSERVERSTATS_BG: - Logic: ObserverStatsLogic - StatisticsBasicKey: StatisticsBasic - StatisticsEconomyKey: StatisticsEconomy - StatisticsProductionKey: StatisticsProduction - StatisticsCombatKey: StatisticsCombat - StatisticsGraphKey: StatisticsGraph - StatisticsArmyGraphKey: StatisticsArmyGraph - X: (WINDOW_RIGHT - WIDTH) / 2 - Y: (WINDOW_BOTTOM - HEIGHT) / 2 - Width: 1005 - Height: 500 - Children: - Background@BACKGROUND: - Width: PARENT_RIGHT - Background: panel-black - Height: PARENT_BOTTOM - 35 - Children: - Label@TITLE: - X: 0 - Y: 0 - 25 - Width: PARENT_RIGHT - Font: BigBold - Align: Center - Contrast: True - Text: Statistics - DropDownButton@STATS_DROPDOWN: - X: PARENT_RIGHT - 200 - Y: 15 - Width: 185 - Height: 25 - Font: Bold - Children: - LogicKeyListener@STATS_DROPDOWN_KEYHANDLER: - Container@BASIC_STATS_HEADERS: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Children: - Label@PLAYER_HEADER: - X: 75 - Y: 40 - Width: 160 - Height: 25 - Font: Bold - Text: Player - Label@CASH_HEADER: - X: 235 - Y: 40 - Width: 80 - Height: 25 - Font: Bold - Text: Cash - Label@EARNED_MIN_HEADER: - X: 315 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Earned/min - Label@POWER_HEADER: - X: 415 - Y: 40 - Width: 80 - Height: 25 - Font: Bold - Text: Power - Label@KILLS_HEADER: - X: 475 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Kills - Align: Right - Label@DEATHS_HEADER: - X: 535 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Deaths - Align: Right - Label@ASSETS_DESTROYED_HEADER: - X: 595 - Y: 40 - Width: 80 - Height: 25 - Font: Bold - Text: Destroyed - Align: Right - Label@ASSETS_LOST_HEADER: - X: 675 - Y: 40 - Width: 80 - Height: 25 - Font: Bold - Text: Lost - Align: Right - Label@EXPERIENCE_HEADER: - X: 755 - Y: 40 - Width: 94 - Height: 25 - Font: Bold - Text: Score - Align: Right - Label@ACTIONS_MIN_HEADER: - X: 850 - Y: 40 - Width: 90 - Height: 25 - Font: Bold - Text: Actions/min - Align: Right - Container@ECONOMY_STATS_HEADERS: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Children: - Label@PLAYER_HEADER: - X: 75 - Y: 40 - Width: 160 - Height: 25 - Font: Bold - Text: Player - Label@CASH_HEADER: - X: 235 - Y: 40 - Width: 80 - Height: 25 - Font: Bold - Text: Cash - Label@EARNED_MIN_HEADER: - X: 315 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Earned/min - Label@EARNED_THIS_MIN_HEADER: - X: 415 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Earned this min - Label@ASSETS_HEADER: - X: 555 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Assets - Label@EARNED_HEADER: - X: 635 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Earned - Label@SPENT_HEADER: - X: 715 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Spent - Label@HARVESTERS_HEADER: - X: 795 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Harvesters - Align: Right - Container@PRODUCTION_STATS_HEADERS: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Children: - Label@PLAYER_HEADER: - X: 75 - Y: 40 - Width: 160 - Height: 25 - Font: Bold - Text: Player - Label@PRODUCTION_HEADER: - X: 235 - Y: 40 - Width: 320 - Height: 25 - Font: Bold - Text: Production - Label@SUPPORT_POWERS_HEADER: - X: 555 - Y: 40 - Width: 320 - Height: 25 - Font: Bold - Text: Support Powers - Container@COMBAT_STATS_HEADERS: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Children: - Label@PLAYER_HEADER: - X: 75 - Y: 40 - Width: 160 - Height: 25 - Font: Bold - Text: Player - Label@ASSETS_DESTROYED_HEADER: - X: 230 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Destroyed - Label@ASSETS_LOST_HEADER: - X: 325 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Lost - Label@UNITS_KILLED_HEADER: - X: 415 - Y: 40 - Width: 40 - Height: 25 - Font: Bold - Text: Units Killed - Align: Right - Label@UNITS_DEAD_HEADER: - X: 515 - Y: 40 - Width: 40 - Height: 25 - Font: Bold - Text: Units Lost - Align: Right - Label@BUILDINGS_KILLED_HEADER: - X: 635 - Y: 40 - Width: 40 - Height: 25 - Font: Bold - Text: Bldg Killed - Align: Right - Label@BUILDINGS_DEAD_HEADER: - X: 735 - Y: 40 - Width: 40 - Height: 25 - Font: Bold - Text: Bldg Lost - Align: Right - Label@ARMY_VALUE_HEADER: - X: 835 - Y: 40 - Width: 40 - Height: 25 - Font: Bold - Text: Army Value - Align: Right - Container@EARNED_THIS_MIN_GRAPH_HEADERS: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Children: - Label@EARNED_THIS_MIN_HEADER: - X: 0 - Y: 40 - Width: PARENT_RIGHT - Height: 25 - Font: Bold - Text: Earnings received each minute - Align: Center - Container@ARMY_THIS_MIN_GRAPH_HEADERS: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Children: - Label@EARNED_THIS_MIN_HEADER: - X: 0 - Y: 40 - Width: PARENT_RIGHT - Height: 25 - Font: Bold - Text: Army value over time - Align: Center - ScrollPanel@PLAYER_STATS_PANEL: - X: 15 - Y: 70 - Width: PARENT_RIGHT - 30 - Height: PARENT_BOTTOM - 35 - 50 - TopBottomSpacing: 5 - ItemSpacing: 5 - Children: - ScrollItem@TEAM_TEMPLATE: - X: 0 - Y: 0 - Width: PARENT_RIGHT - 35 - Height: 25 - Children: - Label@TEAM: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Font: Bold - ScrollItem@BASIC_PLAYER_TEMPLATE: - X: 0 - Y: 0 - Width: PARENT_RIGHT - 35 - Height: 25 - Children: - Image@FLAG: - X: 20 - Y: 5 - Width: 35 - Height: PARENT_BOTTOM - 5 - ImageName: random - ImageCollection: flags - Label@PLAYER: - X: 55 - Y: 0 - Width: 160 - Height: PARENT_BOTTOM - Font: Bold - Shadow: True - Label@CASH: - X: 215 - Y: 0 - Width: 80 - Height: PARENT_BOTTOM - Shadow: True - Label@EARNED_MIN: - X: 295 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@POWER: - X: 395 - Y: 0 - Width: 80 - Height: PARENT_BOTTOM - Shadow: True - Label@KILLS: - X: 455 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@DEATHS: - X: 515 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@ASSETS_DESTROYED: - X: 575 - Y: 0 - Width: 80 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@ASSETS_LOST: - X: 655 - Y: 0 - Width: 80 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@EXPERIENCE: - X: 735 - Y: 0 - Width: 95 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@ACTIONS_MIN: - X: 830 - Y: 0 - Width: 90 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - ScrollItem@ECONOMY_PLAYER_TEMPLATE: - X: 0 - Y: 0 - Width: PARENT_RIGHT - 35 - Height: 25 - Children: - Image@FLAG: - X: 20 - Y: 5 - Width: 35 - Height: PARENT_BOTTOM - 5 - ImageName: random - ImageCollection: flags - Label@PLAYER: - X: 55 - Y: 0 - Width: 160 - Height: PARENT_BOTTOM - Font: Bold - Shadow: True - Label@CASH: - X: 215 - Y: 0 - Width: 80 - Height: PARENT_BOTTOM - Shadow: True - Label@EARNED_MIN: - X: 295 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@EARNED_THIS_MIN: - X: 395 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@ASSETS: - X: 535 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@EARNED: - X: 615 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@SPENT: - X: 695 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@HARVESTERS: - X: 775 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - ScrollItem@PRODUCTION_PLAYER_TEMPLATE: - X: 0 - Y: 0 - Width: PARENT_RIGHT - 35 - Height: 25 - Children: - Image@FLAG: - X: 20 - Y: 5 - Width: 35 - Height: PARENT_BOTTOM - 5 - ImageName: random - ImageCollection: flags - Label@PLAYER: - X: 55 - Y: 0 - Width: 160 - Height: PARENT_BOTTOM - Font: Bold - Shadow: True - ObserverProductionIcons@PRODUCTION_ICONS: - X: 215 - Y: 0 - Width: 320 - Height: PARENT_BOTTOM - TooltipContainer: TOOLTIP_CONTAINER - ObserverSupportPowerIcons@SUPPORT_POWER_ICONS: - X: 535 - Y: 0 - Width: 320 - Height: PARENT_BOTTOM - ScrollItem@COMBAT_PLAYER_TEMPLATE: - X: 0 - Y: 0 - Width: PARENT_RIGHT - 35 - Height: 25 - Children: - Image@FLAG: - X: 20 - Y: 5 - Width: 35 - Height: PARENT_BOTTOM - 5 - ImageName: random - ImageCollection: flags - Label@PLAYER: - X: 55 - Y: 0 - Width: 160 - Height: PARENT_BOTTOM - Font: Bold - Shadow: True - Label@ASSETS_DESTROYED: - X: 215 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@ASSETS_LOST: - X: 295 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@UNITS_KILLED: - X: 395 - Y: 0 - Width: 40 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@UNITS_DEAD: - X: 495 - Y: 0 - Width: 40 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@BUILDINGS_KILLED: - X: 615 - Y: 0 - Width: 40 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@BUILDINGS_DEAD: - X: 715 - Y: 0 - Width: 40 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@ARMY_VALUE: - X: 815 - Y: 0 - Width: 40 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Container@EARNED_THIS_MIN_GRAPH_TEMPLATE: - X: 10 - Y: 10 - Width: PARENT_RIGHT - 100 - Height: PARENT_BOTTOM - 60 - Children: - LineGraph@EARNED_THIS_MIN_GRAPH: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - ValueFormat: ${0} - XAxisValueFormat: {0} - YAxisValueFormat: ${0:F0} - XAxisSize: 20 - YAxisSize: 10 - XAxisLabel: m - YAxisLabel: $ - LabelFont: TinyBold - AxisFont: Bold - Container@ARMY_THIS_MIN_GRAPH_TEMPLATE: - X: 10 - Y: 10 - Width: PARENT_RIGHT - 100 - Height: PARENT_BOTTOM - 60 - Children: - LineGraph@ARMY_THIS_MIN_GRAPH: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - ValueFormat: ${0} - XAxisValueFormat: {0} - YAxisValueFormat: ${0:F0} - XAxisSize: 20 - YAxisSize: 10 - XAxisLabel: m - YAxisLabel: $ - LabelFont: TinyBold - AxisFont: Bold - Button@CLOSE: - X: 0 - Y: PARENT_BOTTOM - 36 - Width: 140 - Height: 35 - Text: Close - Key: escape - Font: Bold diff --git a/mods/cnc/chrome/ingame.yaml b/mods/cnc/chrome/ingame.yaml index 823eb74cee..2f79871f27 100644 --- a/mods/cnc/chrome/ingame.yaml +++ b/mods/cnc/chrome/ingame.yaml @@ -71,12 +71,6 @@ Container@PERF_WIDGETS: Container@OBSERVER_WIDGETS: Logic: MenuButtonsChromeLogic - StatisticsBasicKey: StatisticsBasic - StatisticsEconomyKey: StatisticsEconomy - StatisticsProductionKey: StatisticsProduction - StatisticsCombatKey: StatisticsCombat - StatisticsGraphKey: StatisticsGraph - StatisticsArmyGraphKey: StatisticsArmyGraph Children: ViewportController: Width: WINDOW_RIGHT @@ -130,23 +124,6 @@ Container@OBSERVER_WIDGETS: Y: 5 ImageCollection: order-icons ImageName: options - MenuButton@OBSERVER_STATS_BUTTON: - Key: StatisticsBasic - X: WINDOW_RIGHT - 260 - WIDTH - Y: 35 - Width: 30 - Height: 25 - TooltipText: Statistics - TooltipContainer: TOOLTIP_CONTAINER - MenuContainer: INGAME_OBSERVERSTATS_BG - HideIngameUI: false - Pause: false - Children: - Image@ICON: - X: 7 - Y: 5 - ImageCollection: order-icons - ImageName: stats Background@RADAR: X: WINDOW_RIGHT - WIDTH - 5 Y: 5 @@ -282,6 +259,863 @@ Container@OBSERVER_WIDGETS: Width: PARENT_RIGHT Height: 25 Shadow: True + Container@INGAME_OBSERVERSTATS_BG: + Logic: ObserverStatsLogic + StatisticsNoneKey: StatisticsNone + StatisticsBasicKey: StatisticsBasic + StatisticsEconomyKey: StatisticsEconomy + StatisticsProductionKey: StatisticsProduction + StatisticsSupportPowersKey: StatisticsSupportPowers + StatisticsCombatKey: StatisticsCombat + StatisticsGraphKey: StatisticsGraph + StatisticsArmyGraphKey: StatisticsArmyGraph + X: 5 + Y: 5 + Width: 765 + Height: 240 + Children: + DropDownButton@STATS_DROPDOWN: + X: 0 + Y: 0 + Width: 185 + Height: 25 + Font: Bold + Children: + LogicKeyListener@STATS_DROPDOWN_KEYHANDLER: + Container@GRAPH_BG: + Y: 30 + X: 0 + Width: PARENT_RIGHT + Height: 24 + Children: + Container@BASIC_STATS_HEADERS: + X: 0 + Y: 0 + Width: 765 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@PLAYER_HEADER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Player + Align: Left + Shadow: True + Label@CASH_HEADER: + X: 160 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Cash + Align: Right + Shadow: True + Label@EARNED_MIN_HEADER: + X: 240 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Font: Bold + Text: $/min + Align: Right + Shadow: True + Label@POWER_HEADER: + X: 300 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Power + Align: Center + Shadow: True + Label@KILLS_HEADER: + X: 380 + Y: 0 + Width: 40 + Height: PARENT_BOTTOM + Font: Bold + Text: Kills + Align: Right + Shadow: True + Label@DEATHS_HEADER: + X: 420 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Font: Bold + Text: Deaths + Align: Right + Shadow: True + Label@ASSETS_DESTROYED_HEADER: + X: 480 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Destroyed + Align: Right + Shadow: True + Label@ASSETS_LOST_HEADER: + X: 560 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Lost + Align: Right + Shadow: True + Label@EXPERIENCE_HEADER: + X: 640 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Font: Bold + Text: Score + Align: Right + Shadow: True + Label@ACTIONS_MIN_HEADER: + X: 700 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Font: Bold + Text: APM + Align: Right + Shadow: True + Container@ECONOMY_STATS_HEADERS: + X: 0 + Y: 0 + Width: 745 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@PLAYER_HEADER: + X: 40 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Player + Shadow: True + Label@CASH_HEADER: + X: 160 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Cash + Align: Right + Shadow: True + Label@EARNED_MIN_HEADER: + X: 240 + Width: 60 + Height: PARENT_BOTTOM + Font: Bold + Text: $/min + Align: Right + Shadow: True + Label@EARNED_THIS_MIN_HEADER: + X: 300 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Earned this min + Align: Right + Shadow: True + Label@ASSETS_HEADER: + X: 420 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Assets + Align: Right + Shadow: True + Label@EARNED_HEADER: + X: 500 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Earned + Align: Right + Shadow: True + Label@SPENT_HEADER: + X: 580 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Spent + Align: Right + Shadow: True + Label@HARVESTERS_HEADER: + X: 660 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Harvesters + Align: Right + Shadow: True + Container@PRODUCTION_STATS_HEADERS: + X: 0 + Y: 0 + Width: 400 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@PLAYER_HEADER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Player + Align: Left + Shadow: True + Label@PRODUCTION_HEADER: + X: 160 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Font: Bold + Text: Production + Shadow: True + Container@SUPPORT_POWERS_HEADERS: + X: 0 + Y: 0 + Width: 400 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@PLAYER_HEADER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Player + Align: Left + Shadow: True + Label@SUPPORT_POWERS_HEADER: + X: 160 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Font: Bold + Text: Support Powers + Shadow: True + Container@COMBAT_STATS_HEADERS: + X: 0 + Y: 0 + Width: 775 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@PLAYER_HEADER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Player + Align: Left + Shadow: True + Label@ASSETS_DESTROYED_HEADER: + X: 160 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Destroyed + Align: Right + Shadow: True + Label@ASSETS_LOST_HEADER: + X: 240 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Lost + Align: Right + Shadow: True + Label@UNITS_KILLED_HEADER: + X: 320 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Font: Bold + Text: Units Killed + Align: Right + Shadow: True + Label@UNITS_DEAD_HEADER: + X: 420 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Units Lost + Align: Right + Shadow: True + Label@BUILDINGS_KILLED_HEADER: + X: 500 + Y: 0 + Width: 90 + Height: PARENT_BOTTOM + Font: Bold + Text: Bldg Killed + Align: Right + Shadow: True + Label@BUILDINGS_DEAD_HEADER: + X: 590 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Bldg Lost + Align: Right + Shadow: True + Label@ARMY_VALUE_HEADER: + X: 670 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Font: Bold + Text: Army Value + Align: Right + Shadow: True + Container@EARNED_THIS_MIN_GRAPH_HEADERS: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 25 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@EARNED_THIS_MIN_HEADER: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Font: Bold + Text: Earnings received each minute + Align: Center + Shadow: True + Container@ARMY_THIS_MIN_GRAPH_HEADERS: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 25 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@EARNED_THIS_MIN_HEADER: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Font: Bold + Text: Army value over time + Align: Center + Shadow: True + ScrollPanel@PLAYER_STATS_PANEL: + X: 0 + Y: 54 + Width: PARENT_RIGHT + Height: 240 + TopBottomSpacing: 0 + BorderWidth: 0 + Background: + ScrollbarWidth: 24 + ScrollBar: Hidden + Children: + ScrollItem@TEAM_TEMPLATE: + X: 0 + Y: 0 + Width: 650 #PARENT_RIGHT - 35 + Height: 24 + Children: + ColorBlock@TEAM_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@TEAM_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@TEAM: + X: 10 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + ScrollItem@BASIC_PLAYER_TEMPLATE: + X: 0 + Y: 0 + Width: 765 + Height: 24 + BaseName: scrollitem-nohover + Children: + ColorBlock@PLAYER_COLOR: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@PLAYER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + Width: 200 + Height: PARENT_BOTTOM + Image@FLAG: + X: 5 + Y: 4 + Width: 35 + Height: PARENT_BOTTOM - 4 + ImageName: random + ImageCollection: flags + Label@PLAYER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + Label@CASH: + X: 160 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@EARNED_MIN: + X: 240 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@POWER: + X: 300 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Center + Shadow: True + Label@KILLS: + X: 380 + Y: 0 + Width: 40 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@DEATHS: + X: 420 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ASSETS_DESTROYED: + X: 480 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ASSETS_LOST: + X: 560 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@EXPERIENCE: + X: 640 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ACTIONS_MIN: + X: 700 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + ScrollItem@ECONOMY_PLAYER_TEMPLATE: + X: 0 + Y: 0 + Width: 745 + Height: 24 + BaseName: scrollitem-nohover + Children: + ColorBlock@PLAYER_COLOR: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@PLAYER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + Width: 200 + Height: PARENT_BOTTOM + Image@FLAG: + X: 5 + Y: 4 + Width: 35 + Height: PARENT_BOTTOM - 4 + ImageName: random + ImageCollection: flags + Label@PLAYER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + Label@CASH: + X: 160 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@EARNED_MIN: + X: 240 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@EARNED_THIS_MIN: + X: 300 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ASSETS: + X: 420 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@EARNED: + X: 500 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@SPENT: + X: 580 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@HARVESTERS: + X: 660 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + ScrollItem@PRODUCTION_PLAYER_TEMPLATE: + X: 0 + Y: 0 + Width: 400 + Height: 24 + BaseName: scrollitem-nohover + Children: + ColorBlock@PLAYER_COLOR: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@PLAYER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + Width: 200 + Height: PARENT_BOTTOM + Image@FLAG: + X: 5 + Y: 4 + Width: 35 + Height: PARENT_BOTTOM - 4 + ImageName: random + ImageCollection: flags + Label@PLAYER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + ObserverProductionIcons@PRODUCTION_ICONS: + X: 160 + Y: 0 + Width: 0 + Height: PARENT_BOTTOM + TooltipContainer: TOOLTIP_CONTAINER + ScrollItem@SUPPORT_POWERS_PLAYER_TEMPLATE: + X: 0 + Y: 0 + Width: 400 + Height: 24 + BaseName: scrollitem-nohover + Children: + ColorBlock@PLAYER_COLOR: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@PLAYER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + Width: 200 + Height: PARENT_BOTTOM + Image@FLAG: + X: 5 + Y: 4 + Width: 35 + Height: PARENT_BOTTOM - 4 + ImageName: random + ImageCollection: flags + Label@PLAYER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + ObserverSupportPowerIcons@SUPPORT_POWER_ICONS: + X: 160 + Y: 0 + Width: 0 + Height: PARENT_BOTTOM + ScrollItem@COMBAT_PLAYER_TEMPLATE: + X: 0 + Y: 0 + Width: 775 + Height: 24 + BaseName: scrollitem-nohover + Children: + ColorBlock@PLAYER_COLOR: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@PLAYER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + Width: 200 + Height: PARENT_BOTTOM + Image@FLAG: + X: 5 + Y: 4 + Width: 35 + Height: PARENT_BOTTOM - 4 + ImageName: random + ImageCollection: flags + Label@PLAYER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + Label@ASSETS_DESTROYED: + X: 160 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ASSETS_LOST: + X: 240 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@UNITS_KILLED: + X: 320 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@UNITS_DEAD: + X: 420 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@BUILDINGS_KILLED: + X: 500 + Y: 0 + Width: 90 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@BUILDINGS_DEAD: + X: 590 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ARMY_VALUE: + X: 670 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Container@EARNED_THIS_MIN_GRAPH_CONTAINER: + X: 0 + Y: 54 + Width: PARENT_RIGHT - 25 + Height: PARENT_BOTTOM - 65 + Visible: False + Children: + ColorBlock@GRAPH_BACKGROUND: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Color: 00000090 + LineGraph@EARNED_THIS_MIN_GRAPH: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + ValueFormat: ${0} + XAxisValueFormat: {0} + YAxisValueFormat: ${0:F0} + XAxisSize: 20 + YAxisSize: 10 + XAxisLabel: m + YAxisLabel: $ + LabelFont: TinyBold + AxisFont: Bold + Container@ARMY_THIS_MIN_GRAPH_CONTAINER: + X: 0 + Y: 54 + Width: PARENT_RIGHT - 25 + Height: PARENT_BOTTOM - 65 + Visible: False + Children: + ColorBlock@GRAPH_BACKGROUND: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Color: 00000090 + LineGraph@ARMY_THIS_MIN_GRAPH: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + ValueFormat: ${0} + XAxisValueFormat: {0} + YAxisValueFormat: ${0:F0} + XAxisSize: 20 + YAxisSize: 10 + XAxisLabel: m + YAxisLabel: $ + LabelFont: TinyBold + AxisFont: Bold Container@PLAYER_WIDGETS: Children: diff --git a/mods/cnc/mod.yaml b/mods/cnc/mod.yaml index a590e10f7f..92d6292213 100644 --- a/mods/cnc/mod.yaml +++ b/mods/cnc/mod.yaml @@ -119,7 +119,6 @@ ChromeLayout: cnc|chrome/ingame-infoscripterror.yaml cnc|chrome/ingame-infoobjectives.yaml cnc|chrome/ingame-infostats.yaml - cnc|chrome/ingame-observerstats.yaml cnc|chrome/ingame-debuginfo.yaml cnc|chrome/music.yaml cnc|chrome/settings.yaml diff --git a/mods/common/chrome/dropdowns.yaml b/mods/common/chrome/dropdowns.yaml index a382dd7783..9b8d1e35fb 100644 --- a/mods/common/chrome/dropdowns.yaml +++ b/mods/common/chrome/dropdowns.yaml @@ -77,6 +77,7 @@ ScrollPanel@SPAWN_DROPDOWN_TEMPLATE: ScrollPanel@SPECTATOR_DROPDOWN_TEMPLATE: Width: DROPDOWN_WIDTH Background: observer-scrollpanel-button-pressed + ScrollBarBackground: observer-scrollpanel-button-pressed Button: observer-scrollpanel-button Children: ScrollItem@HEADER: @@ -116,6 +117,38 @@ ScrollPanel@SPECTATOR_DROPDOWN_TEMPLATE: Height: 25 Shadow: True +ScrollPanel@SPECTATOR_LABEL_DROPDOWN_TEMPLATE: + Width: DROPDOWN_WIDTH + Background: observer-scrollpanel-button-pressed + ScrollBarBackground: observer-scrollpanel-button-pressed + Button: observer-scrollpanel-button + Children: + ScrollItem@HEADER: + BaseName: observer-scrollitem + Width: PARENT_RIGHT - 27 + Height: 13 + X: 2 + Y: 0 + Visible: false + Children: + Label@LABEL: + Font: TinyBold + Width: PARENT_RIGHT + Height: 10 + Align: Center + ScrollItem@TEMPLATE: + BaseName: observer-scrollitem + Width: PARENT_RIGHT - 27 + Height: 25 + X: 2 + Y: 0 + Visible: false + Children: + Label@LABEL: + X: 10 + Width: PARENT_RIGHT - 20 + Height: 25 + ScrollPanel@NEWS_PANEL: Width: 400 Height: 265 diff --git a/mods/common/chrome/ingame-observer.yaml b/mods/common/chrome/ingame-observer.yaml index 9ed0be5f3f..0accdb9edd 100644 --- a/mods/common/chrome/ingame-observer.yaml +++ b/mods/common/chrome/ingame-observer.yaml @@ -1,31 +1,16 @@ Container@OBSERVER_WIDGETS: Logic: MenuButtonsChromeLogic - StatisticsBasicKey: StatisticsBasic - StatisticsEconomyKey: StatisticsEconomy - StatisticsProductionKey: StatisticsProduction - StatisticsCombatKey: StatisticsCombat - StatisticsGraphKey: StatisticsGraph - StatisticsArmyGraphKey: StatisticsArmyGraph Children: LogicKeyListener@OBSERVER_KEY_LISTENER: MenuButton@OPTIONS_BUTTON: + X: 5 + Y: 5 Width: 160 Height: 25 Text: Options (Esc) Font: Bold Key: escape DisableWorldSounds: true - MenuButton@OBSERVER_STATS_BUTTON: - Key: StatisticsBasic - MenuContainer: INGAME_OBSERVERSTATS_BG - HideIngameUI: False - Pause: False - X: 162 - Y: 0 - Width: 160 - Height: 25 - Text: Statistics - Font: Bold Container@GAME_TIMER_BLOCK: Logic: GameTimerLogic X: (WINDOW_RIGHT - WIDTH) / 2 @@ -179,3 +164,850 @@ Container@OBSERVER_WIDGETS: TooltipContainer: TOOLTIP_CONTAINER Text: MAX Font: TinyBold + Container@INGAME_OBSERVERSTATS_BG: + Logic: ObserverStatsLogic + StatisticsNoneKey: StatisticsNone + StatisticsBasicKey: StatisticsBasic + StatisticsEconomyKey: StatisticsEconomy + StatisticsProductionKey: StatisticsProduction + StatisticsSupportPowersKey: StatisticsSupportPowers + StatisticsCombatKey: StatisticsCombat + StatisticsGraphKey: StatisticsGraph + StatisticsArmyGraphKey: StatisticsArmyGraph + X: 5 + Y: 5 + Width: 765 + Height: 250 + Children: + DropDownButton@STATS_DROPDOWN: + X: 165 + Y: 0 + Width: 185 + Height: 25 + Font: Bold + Children: + LogicKeyListener@STATS_DROPDOWN_KEYHANDLER: + Container@GRAPH_BG: + Y: 30 + X: 0 + Width: PARENT_RIGHT + Height: 25 + Children: + Container@BASIC_STATS_HEADERS: + X: 0 + Y: 0 + Width: 760 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@PLAYER_HEADER: + X: 35 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Player + Align: Left + Shadow: True + Label@CASH_HEADER: + X: 155 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Cash + Align: Right + Shadow: True + Label@EARNED_MIN_HEADER: + X: 235 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Font: Bold + Text: $/min + Align: Right + Shadow: True + Label@POWER_HEADER: + X: 295 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Power + Align: Center + Shadow: True + Label@KILLS_HEADER: + X: 375 + Y: 0 + Width: 40 + Height: PARENT_BOTTOM + Font: Bold + Text: Kills + Align: Right + Shadow: True + Label@DEATHS_HEADER: + X: 415 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Font: Bold + Text: Deaths + Align: Right + Shadow: True + Label@ASSETS_DESTROYED_HEADER: + X: 475 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Destroyed + Align: Right + Shadow: True + Label@ASSETS_LOST_HEADER: + X: 555 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Lost + Align: Right + Shadow: True + Label@EXPERIENCE_HEADER: + X: 635 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Font: Bold + Text: Score + Align: Right + Shadow: True + Label@ACTIONS_MIN_HEADER: + X: 695 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Font: Bold + Text: APM + Align: Right + Shadow: True + Container@ECONOMY_STATS_HEADERS: + X: 0 + Y: 0 + Width: 740 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@PLAYER_HEADER: + X: 35 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Player + Shadow: True + Label@CASH_HEADER: + X: 155 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Cash + Align: Right + Shadow: True + Label@EARNED_MIN_HEADER: + X: 235 + Width: 60 + Height: PARENT_BOTTOM + Font: Bold + Text: $/min + Align: Right + Shadow: True + Label@EARNED_THIS_MIN_HEADER: + X: 295 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Earned this min + Align: Right + Shadow: True + Label@ASSETS_HEADER: + X: 415 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Assets + Align: Right + Shadow: True + Label@EARNED_HEADER: + X: 495 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Earned + Align: Right + Shadow: True + Label@SPENT_HEADER: + X: 575 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Spent + Align: Right + Shadow: True + Label@HARVESTERS_HEADER: + X: 655 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Harvesters + Align: Right + Shadow: True + Container@PRODUCTION_STATS_HEADERS: + X: 0 + Y: 0 + Width: 400 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@PLAYER_HEADER: + X: 35 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Player + Align: Left + Shadow: True + Label@PRODUCTION_HEADER: + X: 155 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Font: Bold + Text: Production + Shadow: True + Container@SUPPORT_POWERS_HEADERS: + X: 0 + Y: 0 + Width: 400 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@PLAYER_HEADER: + X: 35 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Player + Align: Left + Shadow: True + Label@SUPPORT_POWERS_HEADER: + X: 155 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Font: Bold + Text: Support Powers + Shadow: True + Container@COMBAT_STATS_HEADERS: + X: 0 + Y: 0 + Width: 770 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@PLAYER_HEADER: + X: 35 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Player + Align: Left + Shadow: True + Label@ASSETS_DESTROYED_HEADER: + X: 155 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Destroyed + Align: Right + Shadow: True + Label@ASSETS_LOST_HEADER: + X: 235 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Lost + Align: Right + Shadow: True + Label@UNITS_KILLED_HEADER: + X: 315 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Font: Bold + Text: Units Killed + Align: Right + Shadow: True + Label@UNITS_DEAD_HEADER: + X: 415 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Units Lost + Align: Right + Shadow: True + Label@BUILDINGS_KILLED_HEADER: + X: 495 + Y: 0 + Width: 90 + Height: PARENT_BOTTOM + Font: Bold + Text: Bldg Killed + Align: Right + Shadow: True + Label@BUILDINGS_DEAD_HEADER: + X: 585 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Bldg Lost + Align: Right + Shadow: True + Label@ARMY_VALUE_HEADER: + X: 665 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Font: Bold + Text: Army Value + Align: Right + Shadow: True + Container@EARNED_THIS_MIN_GRAPH_HEADERS: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 25 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@EARNED_THIS_MIN_HEADER: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Font: Bold + Text: Earnings received each minute + Align: Center + Shadow: True + Container@ARMY_THIS_MIN_GRAPH_HEADERS: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 25 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@EARNED_THIS_MIN_HEADER: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Font: Bold + Text: Army value over time + Align: Center + Shadow: True + ScrollPanel@PLAYER_STATS_PANEL: + X: 0 + Y: 55 + Width: PARENT_RIGHT + Height: 250 + TopBottomSpacing: 0 + BorderWidth: 0 + Background: + ScrollbarWidth: 25 + ScrollBar: Hidden + Children: + ScrollItem@TEAM_TEMPLATE: + X: 0 + Y: 0 + Width: 650 #PARENT_RIGHT - 35 + Height: 25 + Children: + ColorBlock@TEAM_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@TEAM_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@TEAM: + X: 10 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + ScrollItem@BASIC_PLAYER_TEMPLATE: + X: 0 + Y: 0 + Width: 760 + Height: 25 + BaseName: scrollitem-nohover + Children: + ColorBlock@PLAYER_COLOR: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@PLAYER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + Width: 200 + Height: PARENT_BOTTOM + Image@FLAG: + X: 2 + Y: 2 + ImageName: random + ImageCollection: flags + Label@PLAYER: + X: 35 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + Label@CASH: + X: 155 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@EARNED_MIN: + X: 235 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@POWER: + X: 295 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Center + Shadow: True + Label@KILLS: + X: 375 + Y: 0 + Width: 40 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@DEATHS: + X: 415 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ASSETS_DESTROYED: + X: 475 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ASSETS_LOST: + X: 555 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@EXPERIENCE: + X: 635 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ACTIONS_MIN: + X: 695 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + ScrollItem@ECONOMY_PLAYER_TEMPLATE: + X: 0 + Y: 0 + Width: 740 + Height: 25 + BaseName: scrollitem-nohover + Children: + ColorBlock@PLAYER_COLOR: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@PLAYER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + Width: 200 + Height: PARENT_BOTTOM + Image@FLAG: + X: 2 + Y: 2 + ImageName: random + ImageCollection: flags + Label@PLAYER: + X: 35 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + Label@CASH: + X: 155 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@EARNED_MIN: + X: 235 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@EARNED_THIS_MIN: + X: 295 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ASSETS: + X: 415 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@EARNED: + X: 495 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@SPENT: + X: 575 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@HARVESTERS: + X: 655 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + ScrollItem@PRODUCTION_PLAYER_TEMPLATE: + X: 0 + Y: 0 + Width: 400 + Height: 25 + BaseName: scrollitem-nohover + Children: + ColorBlock@PLAYER_COLOR: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@PLAYER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + Width: 200 + Height: PARENT_BOTTOM + Image@FLAG: + X: 2 + Y: 2 + ImageName: random + ImageCollection: flags + Label@PLAYER: + X: 35 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + ObserverProductionIcons@PRODUCTION_ICONS: + X: 155 + Y: 0 + Width: 0 + Height: PARENT_BOTTOM + TooltipContainer: TOOLTIP_CONTAINER + ScrollItem@SUPPORT_POWERS_PLAYER_TEMPLATE: + X: 0 + Y: 0 + Width: 400 + Height: 25 + BaseName: scrollitem-nohover + Children: + ColorBlock@PLAYER_COLOR: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@PLAYER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + Width: 200 + Height: PARENT_BOTTOM + Image@FLAG: + X: 2 + Y: 2 + ImageName: random + ImageCollection: flags + Label@PLAYER: + X: 35 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + ObserverSupportPowerIcons@SUPPORT_POWER_ICONS: + X: 155 + Y: 0 + Width: 0 + Height: PARENT_BOTTOM + ScrollItem@COMBAT_PLAYER_TEMPLATE: + X: 0 + Y: 0 + Width: 770 + Height: 25 + BaseName: scrollitem-nohover + Children: + ColorBlock@PLAYER_COLOR: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@PLAYER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + Width: 200 + Height: PARENT_BOTTOM + Image@FLAG: + X: 2 + Y: 2 + ImageName: random + ImageCollection: flags + Label@PLAYER: + X: 35 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + Label@ASSETS_DESTROYED: + X: 155 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ASSETS_LOST: + X: 235 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@UNITS_KILLED: + X: 315 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@UNITS_DEAD: + X: 415 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@BUILDINGS_KILLED: + X: 495 + Y: 0 + Width: 90 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@BUILDINGS_DEAD: + X: 585 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ARMY_VALUE: + X: 665 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Container@EARNED_THIS_MIN_GRAPH_CONTAINER: + X: 0 + Y: 54 + Width: PARENT_RIGHT - 25 + Height: PARENT_BOTTOM - 65 + Visible: False + Children: + ColorBlock@GRAPH_BACKGROUND: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Color: 00000090 + LineGraph@EARNED_THIS_MIN_GRAPH: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + ValueFormat: ${0} + XAxisValueFormat: {0} + YAxisValueFormat: ${0:F0} + XAxisSize: 20 + YAxisSize: 10 + XAxisLabel: m + YAxisLabel: $ + LabelFont: TinyBold + AxisFont: Bold + Container@ARMY_THIS_MIN_GRAPH_CONTAINER: + X: 0 + Y: 54 + Width: PARENT_RIGHT - 25 + Height: PARENT_BOTTOM - 65 + Visible: False + Children: + ColorBlock@GRAPH_BACKGROUND: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Color: 00000090 + LineGraph@ARMY_THIS_MIN_GRAPH: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + ValueFormat: ${0} + XAxisValueFormat: {0} + YAxisValueFormat: ${0:F0} + XAxisSize: 20 + YAxisSize: 10 + XAxisLabel: m + YAxisLabel: $ + LabelFont: TinyBold + AxisFont: Bold diff --git a/mods/common/chrome/ingame-observerstats.yaml b/mods/common/chrome/ingame-observerstats.yaml deleted file mode 100644 index 2530b3f58e..0000000000 --- a/mods/common/chrome/ingame-observerstats.yaml +++ /dev/null @@ -1,610 +0,0 @@ -Background@INGAME_OBSERVERSTATS_BG: - Logic: ObserverStatsLogic - StatisticsBasicKey: StatisticsBasic - StatisticsEconomyKey: StatisticsEconomy - StatisticsProductionKey: StatisticsProduction - StatisticsCombatKey: StatisticsCombat - StatisticsGraphKey: StatisticsGraph - StatisticsArmyGraphKey: StatisticsArmyGraph - X: 25 - Y: 50 - Width: 1025 - Height: 500 - Background: dialog - Children: - Container@BACKGROUND: - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - 35 - Children: - Label@TITLE: - X: 0 - Y: 15 - Width: PARENT_RIGHT - Height: 25 - Font: Bold - Align: Center - Text: Statistics - DropDownButton@STATS_DROPDOWN: - X: PARENT_RIGHT - 200 - Y: 15 - Width: 185 - Height: 25 - Font: Bold - Children: - LogicKeyListener@STATS_DROPDOWN_KEYHANDLER: - Container@BASIC_STATS_HEADERS: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Children: - Label@PLAYER_HEADER: - X: 85 - Y: 40 - Width: 160 - Height: 25 - Font: Bold - Text: Player - Label@CASH_HEADER: - X: 245 - Y: 40 - Width: 80 - Height: 25 - Font: Bold - Text: Cash - Label@EARNED_MIN_HEADER: - X: 325 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Earned/min - Label@POWER_HEADER: - X: 425 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Power - Label@KILLS_HEADER: - X: 485 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Kills - Align: Right - Label@DEATHS_HEADER: - X: 545 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Deaths - Align: Right - Label@ASSETS_DESTROYED_HEADER: - X: 605 - Y: 40 - Width: 80 - Height: 25 - Font: Bold - Text: Destroyed - Align: Right - Label@ASSETS_LOST_HEADER: - X: 685 - Y: 40 - Width: 80 - Height: 25 - Font: Bold - Text: Lost - Align: Right - Label@EXPERIENCE_HEADER: - X: 765 - Y: 40 - Width: 95 - Height: 25 - Font: Bold - Text: Score - Align: Right - Label@ACTIONS_MIN_HEADER: - X: 860 - Y: 40 - Width: 90 - Height: 25 - Font: Bold - Text: Actions/min - Align: Right - Container@ECONOMY_STATS_HEADERS: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Children: - Label@PLAYER_HEADER: - X: 85 - Y: 40 - Width: 160 - Height: 25 - Font: Bold - Text: Player - Label@CASH_HEADER: - X: 245 - Y: 40 - Width: 80 - Height: 25 - Font: Bold - Text: Cash - Label@EARNED_MIN_HEADER: - X: 325 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Earned/min - Label@EARNED_THIS_MIN_HEADER: - X: 425 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Earned this min - Label@ASSETS_HEADER: - X: 565 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Assets - Label@EARNED_HEADER: - X: 645 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Earned - Label@SPENT_HEADER: - X: 725 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Spent - Label@HARVESTERS_HEADER: - X: 805 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Harvesters - Align: Right - Container@PRODUCTION_STATS_HEADERS: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Children: - Label@PLAYER_HEADER: - X: 85 - Y: 40 - Width: 160 - Height: 25 - Font: Bold - Text: Player - Label@PRODUCTION_HEADER: - X: 245 - Y: 40 - Width: 320 - Height: 25 - Font: Bold - Text: Production - Label@SUPPORT_POWERS_HEADER: - X: 565 - Y: 40 - Width: 320 - Height: 25 - Font: Bold - Text: Support Powers - Container@COMBAT_STATS_HEADERS: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Children: - Label@PLAYER_HEADER: - X: 85 - Y: 40 - Width: 160 - Height: 25 - Font: Bold - Text: Player - Label@ASSETS_DESTROYED_HEADER: - X: 230 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Destroyed - Label@ASSETS_LOST_HEADER: - X: 325 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Lost - Label@UNITS_KILLED_HEADER: - X: 425 - Y: 40 - Width: 40 - Height: 25 - Font: Bold - Text: Units Killed - Align: Right - Label@UNITS_DEAD_HEADER: - X: 525 - Y: 40 - Width: 40 - Height: 25 - Font: Bold - Text: Units Lost - Align: Right - Label@BUILDINGS_KILLED_HEADER: - X: 645 - Y: 40 - Width: 40 - Height: 25 - Font: Bold - Text: Bldg Killed - Align: Right - Label@BUILDINGS_DEAD_HEADER: - X: 745 - Y: 40 - Width: 40 - Height: 25 - Font: Bold - Text: Bldg Lost - Align: Right - Label@ARMY_VALUE_HEADER: - X: 845 - Y: 40 - Width: 40 - Height: 25 - Font: Bold - Text: Army Value - Align: Right - Container@EARNED_THIS_MIN_GRAPH_HEADERS: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Children: - Label@EARNED_THIS_MIN_HEADER: - X: 0 - Y: 40 - Width: PARENT_RIGHT - Height: 25 - Font: Bold - Text: Earnings received each minute - Align: Center - Container@ARMY_THIS_MIN_GRAPH_HEADERS: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Children: - Label@EARNED_THIS_MIN_HEADER: - X: 0 - Y: 40 - Width: PARENT_RIGHT - Height: 25 - Font: Bold - Text: Army value over time - Align: Center - ScrollPanel@PLAYER_STATS_PANEL: - X: 25 - Y: 70 - Width: PARENT_RIGHT - 50 - Height: PARENT_BOTTOM - 45 - 50 - TopBottomSpacing: 5 - ItemSpacing: 5 - Children: - ScrollItem@TEAM_TEMPLATE: - X: 0 - Y: 0 - Width: PARENT_RIGHT - 35 - Height: 25 - Children: - Label@TEAM: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Font: Bold - ScrollItem@BASIC_PLAYER_TEMPLATE: - X: 0 - Y: 0 - Width: PARENT_RIGHT - 35 - Height: 25 - Children: - Image@FLAG: - X: 20 - Y: 5 - Width: 35 - Height: PARENT_BOTTOM - 5 - ImageName: random - ImageCollection: flags - Label@PLAYER: - X: 55 - Y: 0 - Width: 160 - Height: PARENT_BOTTOM - Font: Bold - Shadow: True - Label@CASH: - X: 215 - Y: 0 - Width: 80 - Height: PARENT_BOTTOM - Shadow: True - Label@EARNED_MIN: - X: 295 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@POWER: - X: 395 - Y: 0 - Width: 80 - Height: PARENT_BOTTOM - Shadow: True - Label@KILLS: - X: 455 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@DEATHS: - X: 515 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@ASSETS_DESTROYED: - X: 575 - Y: 0 - Width: 80 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@ASSETS_LOST: - X: 655 - Y: 0 - Width: 80 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@EXPERIENCE: - X: 735 - Y: 0 - Width: 95 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@ACTIONS_MIN: - X: 830 - Y: 0 - Width: 90 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - ScrollItem@ECONOMY_PLAYER_TEMPLATE: - X: 0 - Y: 0 - Width: PARENT_RIGHT - 35 - Height: 25 - Children: - Image@FLAG: - X: 20 - Y: 5 - Width: 35 - Height: PARENT_BOTTOM - 5 - ImageName: random - ImageCollection: flags - Label@PLAYER: - X: 55 - Y: 0 - Width: 160 - Height: PARENT_BOTTOM - Font: Bold - Shadow: True - Label@CASH: - X: 215 - Y: 0 - Width: 80 - Height: PARENT_BOTTOM - Shadow: True - Label@EARNED_MIN: - X: 295 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@EARNED_THIS_MIN: - X: 395 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@ASSETS: - X: 535 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@EARNED: - X: 615 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@SPENT: - X: 695 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@HARVESTERS: - X: 775 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - ScrollItem@PRODUCTION_PLAYER_TEMPLATE: - X: 0 - Y: 0 - Width: PARENT_RIGHT - 35 - Height: 25 - Children: - Image@FLAG: - X: 20 - Y: 5 - Width: 35 - Height: PARENT_BOTTOM - 5 - ImageName: random - ImageCollection: flags - Label@PLAYER: - X: 55 - Y: 0 - Width: 160 - Height: PARENT_BOTTOM - Font: Bold - Shadow: True - ObserverProductionIcons@PRODUCTION_ICONS: - X: 215 - Y: 0 - Width: 320 - Height: PARENT_BOTTOM - TooltipContainer: TOOLTIP_CONTAINER - ObserverSupportPowerIcons@SUPPORT_POWER_ICONS: - X: 535 - Y: 0 - Width: 320 - Height: PARENT_BOTTOM - ScrollItem@COMBAT_PLAYER_TEMPLATE: - X: 0 - Y: 0 - Width: PARENT_RIGHT - 35 - Height: 25 - Children: - Image@FLAG: - X: 20 - Y: 5 - Width: 35 - Height: PARENT_BOTTOM - 5 - ImageName: random - ImageCollection: flags - Label@PLAYER: - X: 55 - Y: 0 - Width: 160 - Height: PARENT_BOTTOM - Font: Bold - Shadow: True - Label@ASSETS_DESTROYED: - X: 215 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@ASSETS_LOST: - X: 295 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@UNITS_KILLED: - X: 395 - Y: 0 - Width: 40 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@UNITS_DEAD: - X: 495 - Y: 0 - Width: 40 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@BUILDINGS_KILLED: - X: 615 - Y: 0 - Width: 40 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@BUILDINGS_DEAD: - X: 715 - Y: 0 - Width: 40 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@ARMY_VALUE: - X: 815 - Y: 0 - Width: 40 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Container@EARNED_THIS_MIN_GRAPH_TEMPLATE: - X: 0 - Y: 0 - Width: PARENT_RIGHT - 100 - Height: PARENT_BOTTOM - 50 - Children: - LineGraph@EARNED_THIS_MIN_GRAPH: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - ValueFormat: ${0} - XAxisValueFormat: {0} - YAxisValueFormat: ${0:F0} - XAxisSize: 20 - YAxisSize: 10 - XAxisLabel: m - YAxisLabel: $ - LabelFont: TinyBold - AxisFont: Bold - Container@ARMY_THIS_MIN_GRAPH_TEMPLATE: - X: 0 - Y: 0 - Width: PARENT_RIGHT - 100 - Height: PARENT_BOTTOM - 50 - Children: - LineGraph@ARMY_THIS_MIN_GRAPH: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - ValueFormat: ${0} - XAxisValueFormat: {0} - YAxisValueFormat: ${0:F0} - XAxisSize: 20 - YAxisSize: 10 - XAxisLabel: m - YAxisLabel: $ - LabelFont: TinyBold - AxisFont: Bold - Button@CLOSE: - X: PARENT_RIGHT - 145 - Y: PARENT_BOTTOM - 45 - Width: 120 - Height: 25 - Text: Close - Key: escape - Font: Bold diff --git a/mods/common/hotkeys/observer.yaml b/mods/common/hotkeys/observer.yaml index 6888c97963..3da1dd26b1 100644 --- a/mods/common/hotkeys/observer.yaml +++ b/mods/common/hotkeys/observer.yaml @@ -22,26 +22,34 @@ ReplaySpeedMax: F12 Description: Maximum speed Types: Replay -StatisticsBasic: F1 +StatisticsNone: F1 + Description: Disable statistics + Types: Observer, Replay + +StatisticsBasic: F2 Description: Basic statistics Types: Observer, Replay -StatisticsEconomy: F2 +StatisticsEconomy: F3 Description: Economy statistics Types: Observer, Replay -StatisticsProduction: F3 +StatisticsProduction: F4 Description: Production statistics Types: Observer, Replay -StatisticsCombat: F4 +StatisticsSupportPowers: F5 + Description: Support Power statistics + Types: Observer, Replay + +StatisticsCombat: F6 Description: Combat statistics Types: Observer, Replay -StatisticsGraph: F5 +StatisticsGraph: F7 Description: Statistics graph Types: Observer, Replay -StatisticsArmyGraph: F6 +StatisticsArmyGraph: F8 Description: Army value graph Types: Observer, Replay diff --git a/mods/d2k/chrome.yaml b/mods/d2k/chrome.yaml index 49baa2612e..b391f8b086 100644 --- a/mods/d2k/chrome.yaml +++ b/mods/d2k/chrome.yaml @@ -637,6 +637,8 @@ scrollheader-selected: dialog.png corner-bl: 512,127,1,1 corner-br: 639,127,1,1 +scrollitem-nohover: dialog.png + dropdown: dialog.png separator: 512,1,1,19 diff --git a/mods/d2k/mod.yaml b/mods/d2k/mod.yaml index 214b8628c6..46587d8e95 100644 --- a/mods/d2k/mod.yaml +++ b/mods/d2k/mod.yaml @@ -76,7 +76,6 @@ ChromeLayout: common|chrome/ingame-infoobjectives.yaml d2k|chrome/ingame-infostats.yaml common|chrome/ingame-observer.yaml - common|chrome/ingame-observerstats.yaml d2k|chrome/ingame-player.yaml common|chrome/ingame-perf.yaml common|chrome/ingame-debug.yaml diff --git a/mods/ra/chrome.yaml b/mods/ra/chrome.yaml index cfad39e401..4d2da80e72 100644 --- a/mods/ra/chrome.yaml +++ b/mods/ra/chrome.yaml @@ -1043,6 +1043,8 @@ scrollheader-selected: dialog.png corner-bl: 512,127,1,1 corner-br: 639,127,1,1 +scrollitem-nohover: dialog.png + logos: loadscreen.png logo: 0,0,256,256 @@ -1061,4 +1063,4 @@ mainmenu-border: dialog.png dropdown: dialog.png separator: 512,1,1,19 - observer-separator: 768,256,1,19 \ No newline at end of file + observer-separator: 768,256,1,19 diff --git a/mods/ra/chrome/ingame-observer.yaml b/mods/ra/chrome/ingame-observer.yaml index a54f385a3c..9c2e58ba03 100644 --- a/mods/ra/chrome/ingame-observer.yaml +++ b/mods/ra/chrome/ingame-observer.yaml @@ -31,34 +31,10 @@ Container@OBSERVER_WIDGETS: TooltipTemplate: SIMPLE_TOOLTIP Container@TOP_BUTTONS: Logic: MenuButtonsChromeLogic - StatisticsBasicKey: StatisticsBasic - StatisticsEconomyKey: StatisticsEconomy - StatisticsProductionKey: StatisticsProduction - StatisticsCombatKey: StatisticsCombat - StatisticsGraphKey: StatisticsGraph - StatisticsArmyGraphKey: StatisticsArmyGraph X: 9 Y: 7 Children: LogicKeyListener@OBSERVER_KEY_LISTENER: - MenuButton@OBSERVER_STATS_BUTTON: - Key: StatisticsBasic - MenuContainer: INGAME_OBSERVERSTATS_BG - HideIngameUI: false - Pause: false - X: 160 - Width: 28 - Height: 28 - Background: sidebar-button-observer - TooltipText: Statistics - TooltipContainer: TOOLTIP_CONTAINER - VisualHeight: 0 - Children: - Image@ICON: - X: 6 - Y: 6 - ImageCollection: order-icons - ImageName: stats MenuButton@OPTIONS_BUTTON: Key: escape X: 192 @@ -221,3 +197,865 @@ Container@OBSERVER_WIDGETS: VisualHeight: 0 Text: MAX Font: TinyBold + Container@INGAME_OBSERVERSTATS_BG: + Logic: ObserverStatsLogic + StatisticsNoneKey: StatisticsNone + StatisticsBasicKey: StatisticsBasic + StatisticsEconomyKey: StatisticsEconomy + StatisticsProductionKey: StatisticsProduction + StatisticsSupportPowersKey: StatisticsSupportPowers + StatisticsCombatKey: StatisticsCombat + StatisticsGraphKey: StatisticsGraph + StatisticsArmyGraphKey: StatisticsArmyGraph + StatsDropDownPanelTemplate: SPECTATOR_LABEL_DROPDOWN_TEMPLATE + X: 5 + Y: 5 + Width: 765 + Height: 240 + Children: + DropDownButton@STATS_DROPDOWN: + X: 0 + Y: 0 + Width: 185 + Height: 25 + Font: Bold + Background: observer-scrollpanel-button + SeparatorImage: observer-separator + Children: + LogicKeyListener@STATS_DROPDOWN_KEYHANDLER: + Container@GRAPH_BG: + Y: 30 + X: 0 + Width: PARENT_RIGHT + Height: 24 + Children: + Container@BASIC_STATS_HEADERS: + X: 0 + Y: 0 + Width: 765 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@PLAYER_HEADER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Player + Align: Left + Shadow: True + Label@CASH_HEADER: + X: 160 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Cash + Align: Right + Shadow: True + Label@EARNED_MIN_HEADER: + X: 240 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Font: Bold + Text: $/min + Align: Right + Shadow: True + Label@POWER_HEADER: + X: 300 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Power + Align: Center + Shadow: True + Label@KILLS_HEADER: + X: 380 + Y: 0 + Width: 40 + Height: PARENT_BOTTOM + Font: Bold + Text: Kills + Align: Right + Shadow: True + Label@DEATHS_HEADER: + X: 420 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Font: Bold + Text: Deaths + Align: Right + Shadow: True + Label@ASSETS_DESTROYED_HEADER: + X: 480 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Destroyed + Align: Right + Shadow: True + Label@ASSETS_LOST_HEADER: + X: 560 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Lost + Align: Right + Shadow: True + Label@EXPERIENCE_HEADER: + X: 640 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Font: Bold + Text: Score + Align: Right + Shadow: True + Label@ACTIONS_MIN_HEADER: + X: 700 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Font: Bold + Text: APM + Align: Right + Shadow: True + Container@ECONOMY_STATS_HEADERS: + X: 0 + Y: 0 + Width: 745 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@PLAYER_HEADER: + X: 40 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Player + Shadow: True + Label@CASH_HEADER: + X: 160 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Cash + Align: Right + Shadow: True + Label@EARNED_MIN_HEADER: + X: 240 + Width: 60 + Height: PARENT_BOTTOM + Font: Bold + Text: $/min + Align: Right + Shadow: True + Label@EARNED_THIS_MIN_HEADER: + X: 300 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Earned this min + Align: Right + Shadow: True + Label@ASSETS_HEADER: + X: 420 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Assets + Align: Right + Shadow: True + Label@EARNED_HEADER: + X: 500 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Earned + Align: Right + Shadow: True + Label@SPENT_HEADER: + X: 580 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Spent + Align: Right + Shadow: True + Label@HARVESTERS_HEADER: + X: 660 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Harvesters + Align: Right + Shadow: True + Container@PRODUCTION_STATS_HEADERS: + X: 0 + Y: 0 + Width: 400 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@PLAYER_HEADER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Player + Align: Left + Shadow: True + Label@PRODUCTION_HEADER: + X: 160 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Font: Bold + Text: Production + Shadow: True + Container@SUPPORT_POWERS_HEADERS: + X: 0 + Y: 0 + Width: 400 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@PLAYER_HEADER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Player + Align: Left + Shadow: True + Label@SUPPORT_POWERS_HEADER: + X: 160 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Font: Bold + Text: Support Powers + Shadow: True + Container@COMBAT_STATS_HEADERS: + X: 0 + Y: 0 + Width: 775 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@PLAYER_HEADER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Player + Align: Left + Shadow: True + Label@ASSETS_DESTROYED_HEADER: + X: 160 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Destroyed + Align: Right + Shadow: True + Label@ASSETS_LOST_HEADER: + X: 240 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Lost + Align: Right + Shadow: True + Label@UNITS_KILLED_HEADER: + X: 320 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Font: Bold + Text: Units Killed + Align: Right + Shadow: True + Label@UNITS_DEAD_HEADER: + X: 420 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Units Lost + Align: Right + Shadow: True + Label@BUILDINGS_KILLED_HEADER: + X: 500 + Y: 0 + Width: 90 + Height: PARENT_BOTTOM + Font: Bold + Text: Bldg Killed + Align: Right + Shadow: True + Label@BUILDINGS_DEAD_HEADER: + X: 590 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Bldg Lost + Align: Right + Shadow: True + Label@ARMY_VALUE_HEADER: + X: 670 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Font: Bold + Text: Army Value + Align: Right + Shadow: True + Container@EARNED_THIS_MIN_GRAPH_HEADERS: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 25 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@EARNED_THIS_MIN_HEADER: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Font: Bold + Text: Earnings received each minute + Align: Center + Shadow: True + Container@ARMY_THIS_MIN_GRAPH_HEADERS: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 25 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@EARNED_THIS_MIN_HEADER: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Font: Bold + Text: Army value over time + Align: Center + Shadow: True + ScrollPanel@PLAYER_STATS_PANEL: + X: 0 + Y: 54 + Width: PARENT_RIGHT + Height: 240 + TopBottomSpacing: 0 + BorderWidth: 0 + Background: + ScrollBarBackground: observer-scrollpanel-button + Button: observer-scrollpanel-button + ScrollbarWidth: 24 + ScrollBar: Hidden + Children: + ScrollItem@TEAM_TEMPLATE: + X: 0 + Y: 0 + Width: 650 #PARENT_RIGHT - 35 + Height: 24 + Children: + ColorBlock@TEAM_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@TEAM_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@TEAM: + X: 10 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + ScrollItem@BASIC_PLAYER_TEMPLATE: + X: 0 + Y: 0 + Width: 765 + Height: 24 + BaseName: scrollitem-nohover + Children: + ColorBlock@PLAYER_COLOR: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@PLAYER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + Width: 200 + Height: PARENT_BOTTOM + Image@FLAG: + X: 5 + Y: 4 + Width: 35 + Height: PARENT_BOTTOM - 4 + ImageName: random + ImageCollection: flags + Label@PLAYER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + Label@CASH: + X: 160 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@EARNED_MIN: + X: 240 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@POWER: + X: 300 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Center + Shadow: True + Label@KILLS: + X: 380 + Y: 0 + Width: 40 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@DEATHS: + X: 420 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ASSETS_DESTROYED: + X: 480 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ASSETS_LOST: + X: 560 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@EXPERIENCE: + X: 640 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ACTIONS_MIN: + X: 700 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + ScrollItem@ECONOMY_PLAYER_TEMPLATE: + X: 0 + Y: 0 + Width: 745 + Height: 24 + BaseName: scrollitem-nohover + Children: + ColorBlock@PLAYER_COLOR: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@PLAYER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + Width: 200 + Height: PARENT_BOTTOM + Image@FLAG: + X: 5 + Y: 4 + Width: 35 + Height: PARENT_BOTTOM - 4 + ImageName: random + ImageCollection: flags + Label@PLAYER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + Label@CASH: + X: 160 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@EARNED_MIN: + X: 240 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@EARNED_THIS_MIN: + X: 300 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ASSETS: + X: 420 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@EARNED: + X: 500 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@SPENT: + X: 580 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@HARVESTERS: + X: 660 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + ScrollItem@PRODUCTION_PLAYER_TEMPLATE: + X: 0 + Y: 0 + Width: 400 + Height: 24 + BaseName: scrollitem-nohover + Children: + ColorBlock@PLAYER_COLOR: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@PLAYER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + Width: 200 + Height: PARENT_BOTTOM + Image@FLAG: + X: 5 + Y: 4 + Width: 35 + Height: PARENT_BOTTOM - 4 + ImageName: random + ImageCollection: flags + Label@PLAYER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + ObserverProductionIcons@PRODUCTION_ICONS: + X: 160 + Y: 0 + Width: 0 + Height: PARENT_BOTTOM + TooltipContainer: TOOLTIP_CONTAINER + ScrollItem@SUPPORT_POWERS_PLAYER_TEMPLATE: + X: 0 + Y: 0 + Width: 400 + Height: 24 + BaseName: scrollitem-nohover + Children: + ColorBlock@PLAYER_COLOR: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@PLAYER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + Width: 200 + Height: PARENT_BOTTOM + Image@FLAG: + X: 5 + Y: 4 + Width: 35 + Height: PARENT_BOTTOM - 4 + ImageName: random + ImageCollection: flags + Label@PLAYER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + ObserverSupportPowerIcons@SUPPORT_POWER_ICONS: + X: 160 + Y: 0 + Width: 0 + Height: PARENT_BOTTOM + ScrollItem@COMBAT_PLAYER_TEMPLATE: + X: 0 + Y: 0 + Width: 775 + Height: 24 + BaseName: scrollitem-nohover + Children: + ColorBlock@PLAYER_COLOR: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@PLAYER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + Width: 200 + Height: PARENT_BOTTOM + Image@FLAG: + X: 5 + Y: 4 + Width: 35 + Height: PARENT_BOTTOM - 4 + ImageName: random + ImageCollection: flags + Label@PLAYER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + Label@ASSETS_DESTROYED: + X: 160 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ASSETS_LOST: + X: 240 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@UNITS_KILLED: + X: 320 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@UNITS_DEAD: + X: 420 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@BUILDINGS_KILLED: + X: 500 + Y: 0 + Width: 90 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@BUILDINGS_DEAD: + X: 590 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ARMY_VALUE: + X: 670 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Container@EARNED_THIS_MIN_GRAPH_CONTAINER: + X: 0 + Y: 54 + Width: PARENT_RIGHT - 25 + Height: PARENT_BOTTOM - 65 + Visible: False + Children: + ColorBlock@GRAPH_BACKGROUND: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Color: 00000090 + LineGraph@EARNED_THIS_MIN_GRAPH: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + ValueFormat: ${0} + XAxisValueFormat: {0} + YAxisValueFormat: ${0:F0} + XAxisSize: 20 + YAxisSize: 10 + XAxisLabel: m + YAxisLabel: $ + LabelFont: TinyBold + AxisFont: Bold + Container@ARMY_THIS_MIN_GRAPH_CONTAINER: + X: 0 + Y: 54 + Width: PARENT_RIGHT - 25 + Height: PARENT_BOTTOM - 65 + Visible: False + Children: + ColorBlock@GRAPH_BACKGROUND: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Color: 00000090 + LineGraph@ARMY_THIS_MIN_GRAPH: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + ValueFormat: ${0} + XAxisValueFormat: {0} + YAxisValueFormat: ${0:F0} + XAxisSize: 20 + YAxisSize: 10 + XAxisLabel: m + YAxisLabel: $ + LabelFont: TinyBold + AxisFont: Bold diff --git a/mods/ra/mod.yaml b/mods/ra/mod.yaml index eb7905e37a..9959d51a47 100644 --- a/mods/ra/mod.yaml +++ b/mods/ra/mod.yaml @@ -91,7 +91,6 @@ ChromeLayout: common|chrome/ingame-infostats.yaml common|chrome/ingame-menu.yaml ra|chrome/ingame-observer.yaml - common|chrome/ingame-observerstats.yaml ra|chrome/ingame-player.yaml common|chrome/ingame-perf.yaml common|chrome/ingame-debug.yaml diff --git a/mods/ts/chrome.yaml b/mods/ts/chrome.yaml index 0270527952..c7180b0578 100644 --- a/mods/ts/chrome.yaml +++ b/mods/ts/chrome.yaml @@ -904,6 +904,8 @@ scrollitem-hover: dialog.png corner-bl: 512,127,1,1 corner-br: 639,127,1,1 +scrollitem-nohover: dialog.png + # A copy of dialog2 (normal button) scrollheader-selected: dialog.png background: 513,1,126,126 diff --git a/mods/ts/chrome/ingame-observer.yaml b/mods/ts/chrome/ingame-observer.yaml index 203212f661..1d07e52397 100644 --- a/mods/ts/chrome/ingame-observer.yaml +++ b/mods/ts/chrome/ingame-observer.yaml @@ -1,31 +1,16 @@ Container@OBSERVER_WIDGETS: Logic: MenuButtonsChromeLogic - StatisticsBasicKey: StatisticsBasic - StatisticsEconomyKey: StatisticsEconomy - StatisticsProductionKey: StatisticsProduction - StatisticsCombatKey: StatisticsCombat - StatisticsGraphKey: StatisticsGraph - StatisticsArmyGraphKey: StatisticsArmyGraph Children: LogicKeyListener@OBSERVER_KEY_LISTENER: MenuButton@OPTIONS_BUTTON: + X: 5 + Y: 5 Width: 160 Height: 25 Text: Options (Esc) Font: Bold Key: escape DisableWorldSounds: true - MenuButton@OBSERVER_STATS_BUTTON: - Key: StatisticsBasic - MenuContainer: INGAME_OBSERVERSTATS_BG - HideIngameUI: False - Pause: False - X: 162 - Y: 0 - Width: 160 - Height: 25 - Text: Statistics - Font: Bold Container@GAME_TIMER_BLOCK: Logic: GameTimerLogic X: (WINDOW_RIGHT - WIDTH) / 2 @@ -179,3 +164,862 @@ Container@OBSERVER_WIDGETS: TooltipContainer: TOOLTIP_CONTAINER Text: MAX Font: TinyBold + Container@INGAME_OBSERVERSTATS_BG: + Logic: ObserverStatsLogic + StatisticsNoneKey: StatisticsNone + StatisticsBasicKey: StatisticsBasic + StatisticsEconomyKey: StatisticsEconomy + StatisticsProductionKey: StatisticsProduction + StatisticsSupportPowersKey: StatisticsSupportPowers + StatisticsCombatKey: StatisticsCombat + StatisticsGraphKey: StatisticsGraph + StatisticsArmyGraphKey: StatisticsArmyGraph + X: 5 + Y: 5 + Width: 765 + Height: 240 + Children: + DropDownButton@STATS_DROPDOWN: + X: 165 + Y: 0 + Width: 185 + Height: 25 + Font: Bold + Children: + LogicKeyListener@STATS_DROPDOWN_KEYHANDLER: + Container@GRAPH_BG: + Y: 30 + X: 0 + Width: PARENT_RIGHT + Height: 24 + Children: + Container@BASIC_STATS_HEADERS: + X: 0 + Y: 0 + Width: 765 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@PLAYER_HEADER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Player + Align: Left + Shadow: True + Label@CASH_HEADER: + X: 160 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Cash + Align: Right + Shadow: True + Label@EARNED_MIN_HEADER: + X: 240 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Font: Bold + Text: $/min + Align: Right + Shadow: True + Label@POWER_HEADER: + X: 300 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Power + Align: Center + Shadow: True + Label@KILLS_HEADER: + X: 380 + Y: 0 + Width: 40 + Height: PARENT_BOTTOM + Font: Bold + Text: Kills + Align: Right + Shadow: True + Label@DEATHS_HEADER: + X: 420 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Font: Bold + Text: Deaths + Align: Right + Shadow: True + Label@ASSETS_DESTROYED_HEADER: + X: 480 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Destroyed + Align: Right + Shadow: True + Label@ASSETS_LOST_HEADER: + X: 560 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Lost + Align: Right + Shadow: True + Label@EXPERIENCE_HEADER: + X: 640 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Font: Bold + Text: Score + Align: Right + Shadow: True + Label@ACTIONS_MIN_HEADER: + X: 700 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Font: Bold + Text: APM + Align: Right + Shadow: True + Container@ECONOMY_STATS_HEADERS: + X: 0 + Y: 0 + Width: 745 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@PLAYER_HEADER: + X: 40 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Player + Shadow: True + Label@CASH_HEADER: + X: 160 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Cash + Align: Right + Shadow: True + Label@EARNED_MIN_HEADER: + X: 240 + Width: 60 + Height: PARENT_BOTTOM + Font: Bold + Text: $/min + Align: Right + Shadow: True + Label@EARNED_THIS_MIN_HEADER: + X: 300 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Earned this min + Align: Right + Shadow: True + Label@ASSETS_HEADER: + X: 420 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Assets + Align: Right + Shadow: True + Label@EARNED_HEADER: + X: 500 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Earned + Align: Right + Shadow: True + Label@SPENT_HEADER: + X: 580 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Spent + Align: Right + Shadow: True + Label@HARVESTERS_HEADER: + X: 660 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Harvesters + Align: Right + Shadow: True + Container@PRODUCTION_STATS_HEADERS: + X: 0 + Y: 0 + Width: 400 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@PLAYER_HEADER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Player + Align: Left + Shadow: True + Label@PRODUCTION_HEADER: + X: 160 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Font: Bold + Text: Production + Shadow: True + Container@SUPPORT_POWERS_HEADERS: + X: 0 + Y: 0 + Width: 400 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@PLAYER_HEADER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Player + Align: Left + Shadow: True + Label@SUPPORT_POWERS_HEADER: + X: 160 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Font: Bold + Text: Support Powers + Shadow: True + Container@COMBAT_STATS_HEADERS: + X: 0 + Y: 0 + Width: 775 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@PLAYER_HEADER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Text: Player + Align: Left + Shadow: True + Label@ASSETS_DESTROYED_HEADER: + X: 160 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Destroyed + Align: Right + Shadow: True + Label@ASSETS_LOST_HEADER: + X: 240 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Lost + Align: Right + Shadow: True + Label@UNITS_KILLED_HEADER: + X: 320 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Font: Bold + Text: Units Killed + Align: Right + Shadow: True + Label@UNITS_DEAD_HEADER: + X: 420 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Units Lost + Align: Right + Shadow: True + Label@BUILDINGS_KILLED_HEADER: + X: 500 + Y: 0 + Width: 90 + Height: PARENT_BOTTOM + Font: Bold + Text: Bldg Killed + Align: Right + Shadow: True + Label@BUILDINGS_DEAD_HEADER: + X: 590 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Font: Bold + Text: Bldg Lost + Align: Right + Shadow: True + Label@ARMY_VALUE_HEADER: + X: 670 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Font: Bold + Text: Army Value + Align: Right + Shadow: True + Container@EARNED_THIS_MIN_GRAPH_HEADERS: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 25 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@EARNED_THIS_MIN_HEADER: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Font: Bold + Text: Earnings received each minute + Align: Center + Shadow: True + Container@ARMY_THIS_MIN_GRAPH_HEADERS: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 25 + Height: PARENT_BOTTOM + Children: + ColorBlock@HEADER_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@HEADER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@EARNED_THIS_MIN_HEADER: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Font: Bold + Text: Army value over time + Align: Center + Shadow: True + ScrollPanel@PLAYER_STATS_PANEL: + X: 0 + Y: 54 + Width: PARENT_RIGHT + Height: 240 + TopBottomSpacing: 0 + BorderWidth: 0 + Background: + ScrollbarWidth: 24 + ScrollBar: Hidden + Children: + ScrollItem@TEAM_TEMPLATE: + X: 0 + Y: 0 + Width: 650 #PARENT_RIGHT - 35 + Height: 24 + Children: + ColorBlock@TEAM_COLOR: + X: 0 + Y: 0 + Color: 00000090 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@TEAM_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + TopLeftColor: 00000090 + BottomLeftColor: 00000090 + Width: 200 + Height: PARENT_BOTTOM + Label@TEAM: + X: 10 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + ScrollItem@BASIC_PLAYER_TEMPLATE: + X: 0 + Y: 0 + Width: 765 + Height: 24 + BaseName: scrollitem-nohover + Children: + ColorBlock@PLAYER_COLOR: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@PLAYER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + Width: 200 + Height: PARENT_BOTTOM + Image@FLAG: + X: 5 + Y: 4 + Width: 35 + Height: PARENT_BOTTOM - 4 + ImageName: random + ImageCollection: flags + Label@PLAYER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + Label@CASH: + X: 160 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@EARNED_MIN: + X: 240 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@POWER: + X: 300 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Center + Shadow: True + Label@KILLS: + X: 380 + Y: 0 + Width: 40 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@DEATHS: + X: 420 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ASSETS_DESTROYED: + X: 480 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ASSETS_LOST: + X: 560 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@EXPERIENCE: + X: 640 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ACTIONS_MIN: + X: 700 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + ScrollItem@ECONOMY_PLAYER_TEMPLATE: + X: 0 + Y: 0 + Width: 745 + Height: 24 + BaseName: scrollitem-nohover + Children: + ColorBlock@PLAYER_COLOR: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@PLAYER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + Width: 200 + Height: PARENT_BOTTOM + Image@FLAG: + X: 5 + Y: 4 + Width: 35 + Height: PARENT_BOTTOM - 4 + ImageName: random + ImageCollection: flags + Label@PLAYER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + Label@CASH: + X: 160 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@EARNED_MIN: + X: 240 + Y: 0 + Width: 60 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@EARNED_THIS_MIN: + X: 300 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ASSETS: + X: 420 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@EARNED: + X: 500 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@SPENT: + X: 580 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@HARVESTERS: + X: 660 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + ScrollItem@PRODUCTION_PLAYER_TEMPLATE: + X: 0 + Y: 0 + Width: 400 + Height: 24 + BaseName: scrollitem-nohover + Children: + ColorBlock@PLAYER_COLOR: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@PLAYER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + Width: 200 + Height: PARENT_BOTTOM + Image@FLAG: + X: 5 + Y: 4 + Width: 35 + Height: PARENT_BOTTOM - 4 + ImageName: random + ImageCollection: flags + Label@PLAYER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + ObserverProductionIcons@PRODUCTION_ICONS: + X: 160 + Y: 0 + Width: 0 + Height: PARENT_BOTTOM + TooltipContainer: TOOLTIP_CONTAINER + ClockPalette: iconclock + ScrollItem@SUPPORT_POWERS_PLAYER_TEMPLATE: + X: 0 + Y: 0 + Width: 400 + Height: 24 + BaseName: scrollitem-nohover + Children: + ColorBlock@PLAYER_COLOR: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@PLAYER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + Width: 200 + Height: PARENT_BOTTOM + Image@FLAG: + X: 5 + Y: 4 + Width: 35 + Height: PARENT_BOTTOM - 4 + ImageName: random + ImageCollection: flags + Label@PLAYER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + ObserverSupportPowerIcons@SUPPORT_POWER_ICONS: + X: 160 + Y: 0 + Width: 0 + Height: PARENT_BOTTOM + ClockPalette: iconclock + ScrollItem@COMBAT_PLAYER_TEMPLATE: + X: 0 + Y: 0 + Width: 775 + Height: 24 + BaseName: scrollitem-nohover + Children: + ColorBlock@PLAYER_COLOR: + X: 0 + Y: 0 + Width: PARENT_RIGHT - 200 + Height: PARENT_BOTTOM + GradientColorBlock@PLAYER_GRADIENT: + X: PARENT_RIGHT - 200 + Y: 0 + Width: 200 + Height: PARENT_BOTTOM + Image@FLAG: + X: 5 + Y: 4 + Width: 35 + Height: PARENT_BOTTOM - 4 + ImageName: random + ImageCollection: flags + Label@PLAYER: + X: 40 + Y: 0 + Width: 120 + Height: PARENT_BOTTOM + Font: Bold + Shadow: True + Label@ASSETS_DESTROYED: + X: 160 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ASSETS_LOST: + X: 240 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@UNITS_KILLED: + X: 320 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@UNITS_DEAD: + X: 420 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@BUILDINGS_KILLED: + X: 500 + Y: 0 + Width: 90 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@BUILDINGS_DEAD: + X: 590 + Y: 0 + Width: 80 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Label@ARMY_VALUE: + X: 670 + Y: 0 + Width: 100 + Height: PARENT_BOTTOM + Align: Right + Shadow: True + Container@EARNED_THIS_MIN_GRAPH_CONTAINER: + X: 0 + Y: 54 + Width: PARENT_RIGHT - 25 + Height: PARENT_BOTTOM - 65 + Visible: False + Children: + ColorBlock@GRAPH_BACKGROUND: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Color: 00000090 + LineGraph@EARNED_THIS_MIN_GRAPH: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + ValueFormat: ${0} + XAxisValueFormat: {0} + YAxisValueFormat: ${0:F0} + XAxisSize: 20 + YAxisSize: 10 + XAxisLabel: m + YAxisLabel: $ + LabelFont: TinyBold + AxisFont: Bold + Container@ARMY_THIS_MIN_GRAPH_CONTAINER: + X: 0 + Y: 54 + Width: PARENT_RIGHT - 25 + Height: PARENT_BOTTOM - 65 + Visible: False + Children: + ColorBlock@GRAPH_BACKGROUND: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + Color: 00000090 + LineGraph@ARMY_THIS_MIN_GRAPH: + X: 0 + Y: 0 + Width: PARENT_RIGHT + Height: PARENT_BOTTOM + ValueFormat: ${0} + XAxisValueFormat: {0} + YAxisValueFormat: ${0:F0} + XAxisSize: 20 + YAxisSize: 10 + XAxisLabel: m + YAxisLabel: $ + LabelFont: TinyBold + AxisFont: Bold diff --git a/mods/ts/chrome/ingame-observerstats.yaml b/mods/ts/chrome/ingame-observerstats.yaml deleted file mode 100644 index a921ba2c44..0000000000 --- a/mods/ts/chrome/ingame-observerstats.yaml +++ /dev/null @@ -1,612 +0,0 @@ -Background@INGAME_OBSERVERSTATS_BG: - Logic: ObserverStatsLogic - StatisticsBasicKey: StatisticsBasic - StatisticsEconomyKey: StatisticsEconomy - StatisticsProductionKey: StatisticsProduction - StatisticsCombatKey: StatisticsCombat - StatisticsGraphKey: StatisticsGraph - StatisticsArmyGraphKey: StatisticsArmyGraph - X: 25 - Y: 50 - Width: 1025 - Height: 500 - Background: dialog - Children: - Container@BACKGROUND: - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - 35 - Children: - Label@TITLE: - X: 0 - Y: 15 - Width: PARENT_RIGHT - Height: 25 - Font: Bold - Align: Center - Text: Statistics - DropDownButton@STATS_DROPDOWN: - X: PARENT_RIGHT - 200 - Y: 15 - Width: 185 - Height: 25 - Font: Bold - Children: - LogicKeyListener@STATS_DROPDOWN_KEYHANDLER: - Container@BASIC_STATS_HEADERS: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Children: - Label@PLAYER_HEADER: - X: 85 - Y: 40 - Width: 160 - Height: 25 - Font: Bold - Text: Player - Label@CASH_HEADER: - X: 245 - Y: 40 - Width: 80 - Height: 25 - Font: Bold - Text: Cash - Label@EARNED_MIN_HEADER: - X: 325 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Earned/min - Label@POWER_HEADER: - X: 425 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Power - Label@KILLS_HEADER: - X: 485 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Kills - Align: Right - Label@DEATHS_HEADER: - X: 545 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Deaths - Align: Right - Label@ASSETS_DESTROYED_HEADER: - X: 605 - Y: 40 - Width: 80 - Height: 25 - Font: Bold - Text: Destroyed - Align: Right - Label@ASSETS_LOST_HEADER: - X: 685 - Y: 40 - Width: 80 - Height: 25 - Font: Bold - Text: Lost - Align: Right - Label@EXPERIENCE_HEADER: - X: 765 - Y: 40 - Width: 95 - Height: 25 - Font: Bold - Text: Score - Align: Right - Label@ACTIONS_MIN_HEADER: - X: 860 - Y: 40 - Width: 90 - Height: 25 - Font: Bold - Text: Actions/min - Align: Right - Container@ECONOMY_STATS_HEADERS: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Children: - Label@PLAYER_HEADER: - X: 85 - Y: 40 - Width: 160 - Height: 25 - Font: Bold - Text: Player - Label@CASH_HEADER: - X: 245 - Y: 40 - Width: 80 - Height: 25 - Font: Bold - Text: Cash - Label@EARNED_MIN_HEADER: - X: 325 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Earned/min - Label@EARNED_THIS_MIN_HEADER: - X: 425 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Earned this min - Label@ASSETS_HEADER: - X: 565 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Assets - Label@EARNED_HEADER: - X: 645 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Earned - Label@SPENT_HEADER: - X: 725 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Spent - Label@HARVESTERS_HEADER: - X: 805 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Harvesters - Align: Right - Container@PRODUCTION_STATS_HEADERS: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Children: - Label@PLAYER_HEADER: - X: 85 - Y: 40 - Width: 160 - Height: 25 - Font: Bold - Text: Player - Label@PRODUCTION_HEADER: - X: 245 - Y: 40 - Width: 320 - Height: 25 - Font: Bold - Text: Production - Label@SUPPORT_POWERS_HEADER: - X: 565 - Y: 40 - Width: 320 - Height: 25 - Font: Bold - Text: Support Powers - Container@COMBAT_STATS_HEADERS: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Children: - Label@PLAYER_HEADER: - X: 85 - Y: 40 - Width: 160 - Height: 25 - Font: Bold - Text: Player - Label@ASSETS_DESTROYED_HEADER: - X: 230 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Destroyed - Label@ASSETS_LOST_HEADER: - X: 325 - Y: 40 - Width: 60 - Height: 25 - Font: Bold - Text: Lost - Label@UNITS_KILLED_HEADER: - X: 425 - Y: 40 - Width: 40 - Height: 25 - Font: Bold - Text: Units Killed - Align: Right - Label@UNITS_DEAD_HEADER: - X: 525 - Y: 40 - Width: 40 - Height: 25 - Font: Bold - Text: Units Lost - Align: Right - Label@BUILDINGS_KILLED_HEADER: - X: 645 - Y: 40 - Width: 40 - Height: 25 - Font: Bold - Text: Bldg Killed - Align: Right - Label@BUILDINGS_DEAD_HEADER: - X: 745 - Y: 40 - Width: 40 - Height: 25 - Font: Bold - Text: Bldg Lost - Align: Right - Label@ARMY_VALUE_HEADER: - X: 845 - Y: 40 - Width: 40 - Height: 25 - Font: Bold - Text: Army Value - Align: Right - Container@EARNED_THIS_MIN_GRAPH_HEADERS: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Children: - Label@EARNED_THIS_MIN_HEADER: - X: 0 - Y: 40 - Width: PARENT_RIGHT - Height: 25 - Font: Bold - Text: Earnings received each minute - Align: Center - Container@ARMY_THIS_MIN_GRAPH_HEADERS: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Children: - Label@EARNED_THIS_MIN_HEADER: - X: 0 - Y: 40 - Width: PARENT_RIGHT - Height: 25 - Font: Bold - Text: Army value over time - Align: Center - ScrollPanel@PLAYER_STATS_PANEL: - X: 25 - Y: 70 - Width: PARENT_RIGHT - 50 - Height: PARENT_BOTTOM - 45 - 50 - TopBottomSpacing: 5 - ItemSpacing: 5 - Children: - ScrollItem@TEAM_TEMPLATE: - X: 0 - Y: 0 - Width: PARENT_RIGHT - 35 - Height: 25 - Children: - Label@TEAM: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - Font: Bold - ScrollItem@BASIC_PLAYER_TEMPLATE: - X: 0 - Y: 0 - Width: PARENT_RIGHT - 35 - Height: 25 - Children: - Image@FLAG: - X: 20 - Y: 5 - Width: 35 - Height: PARENT_BOTTOM - 5 - ImageName: random - ImageCollection: flags - Label@PLAYER: - X: 55 - Y: 0 - Width: 160 - Height: PARENT_BOTTOM - Font: Bold - Shadow: True - Label@CASH: - X: 215 - Y: 0 - Width: 80 - Height: PARENT_BOTTOM - Shadow: True - Label@EARNED_MIN: - X: 295 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@POWER: - X: 395 - Y: 0 - Width: 80 - Height: PARENT_BOTTOM - Shadow: True - Label@KILLS: - X: 455 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@DEATHS: - X: 515 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@ASSETS_DESTROYED: - X: 575 - Y: 0 - Width: 80 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@ASSETS_LOST: - X: 655 - Y: 0 - Width: 80 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@EXPERIENCE: - X: 735 - Y: 0 - Width: 95 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@ACTIONS_MIN: - X: 830 - Y: 0 - Width: 90 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - ScrollItem@ECONOMY_PLAYER_TEMPLATE: - X: 0 - Y: 0 - Width: PARENT_RIGHT - 35 - Height: 25 - Children: - Image@FLAG: - X: 20 - Y: 5 - Width: 35 - Height: PARENT_BOTTOM - 5 - ImageName: random - ImageCollection: flags - Label@PLAYER: - X: 55 - Y: 0 - Width: 160 - Height: PARENT_BOTTOM - Font: Bold - Shadow: True - Label@CASH: - X: 215 - Y: 0 - Width: 80 - Height: PARENT_BOTTOM - Shadow: True - Label@EARNED_MIN: - X: 295 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@EARNED_THIS_MIN: - X: 395 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@ASSETS: - X: 535 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@EARNED: - X: 615 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@SPENT: - X: 695 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@HARVESTERS: - X: 775 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - ScrollItem@PRODUCTION_PLAYER_TEMPLATE: - X: 0 - Y: 0 - Width: PARENT_RIGHT - 35 - Height: 25 - Children: - Image@FLAG: - X: 20 - Y: 5 - Width: 35 - Height: PARENT_BOTTOM - 5 - ImageName: random - ImageCollection: flags - Label@PLAYER: - X: 55 - Y: 0 - Width: 160 - Height: PARENT_BOTTOM - Font: Bold - Shadow: True - ObserverProductionIcons@PRODUCTION_ICONS: - X: 215 - Y: 0 - Width: 320 - Height: PARENT_BOTTOM - ClockPalette: iconclock - TooltipContainer: TOOLTIP_CONTAINER - ObserverSupportPowerIcons@SUPPORT_POWER_ICONS: - X: 535 - Y: 0 - Width: 320 - Height: PARENT_BOTTOM - ClockPalette: iconclock - ScrollItem@COMBAT_PLAYER_TEMPLATE: - X: 0 - Y: 0 - Width: PARENT_RIGHT - 35 - Height: 25 - Children: - Image@FLAG: - X: 20 - Y: 5 - Width: 35 - Height: PARENT_BOTTOM - 5 - ImageName: random - ImageCollection: flags - Label@PLAYER: - X: 55 - Y: 0 - Width: 160 - Height: PARENT_BOTTOM - Font: Bold - Shadow: True - Label@ASSETS_DESTROYED: - X: 215 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@ASSETS_LOST: - X: 295 - Y: 0 - Width: 60 - Height: PARENT_BOTTOM - Shadow: True - Label@UNITS_KILLED: - X: 395 - Y: 0 - Width: 40 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@UNITS_DEAD: - X: 495 - Y: 0 - Width: 40 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@BUILDINGS_KILLED: - X: 615 - Y: 0 - Width: 40 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@BUILDINGS_DEAD: - X: 715 - Y: 0 - Width: 40 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Label@ARMY_VALUE: - X: 815 - Y: 0 - Width: 40 - Height: PARENT_BOTTOM - Align: Right - Shadow: True - Container@EARNED_THIS_MIN_GRAPH_TEMPLATE: - X: 0 - Y: 0 - Width: PARENT_RIGHT - 100 - Height: PARENT_BOTTOM - 50 - Children: - LineGraph@EARNED_THIS_MIN_GRAPH: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - ValueFormat: ${0} - XAxisValueFormat: {0} - YAxisValueFormat: ${0:F0} - XAxisSize: 20 - YAxisSize: 10 - XAxisLabel: m - YAxisLabel: $ - LabelFont: TinyBold - AxisFont: Bold - Container@ARMY_THIS_MIN_GRAPH_TEMPLATE: - X: 0 - Y: 0 - Width: PARENT_RIGHT - 100 - Height: PARENT_BOTTOM - 50 - Children: - LineGraph@ARMY_THIS_MIN_GRAPH: - X: 0 - Y: 0 - Width: PARENT_RIGHT - Height: PARENT_BOTTOM - ValueFormat: ${0} - XAxisValueFormat: {0} - YAxisValueFormat: ${0:F0} - XAxisSize: 20 - YAxisSize: 10 - XAxisLabel: m - YAxisLabel: $ - LabelFont: TinyBold - AxisFont: Bold - Button@CLOSE: - X: PARENT_RIGHT - 145 - Y: PARENT_BOTTOM - 45 - Width: 120 - Height: 25 - Text: Close - Key: escape - Font: Bold diff --git a/mods/ts/mod.yaml b/mods/ts/mod.yaml index 16177fba8a..7413add11e 100644 --- a/mods/ts/mod.yaml +++ b/mods/ts/mod.yaml @@ -138,7 +138,6 @@ ChromeLayout: common|chrome/ingame-infoobjectives.yaml common|chrome/ingame-infostats.yaml ts|chrome/ingame-observer.yaml - ts|chrome/ingame-observerstats.yaml ts|chrome/ingame-player.yaml common|chrome/ingame-perf.yaml ts|chrome/ingame-debug.yaml