diff --git a/OpenRA.Mods.RA/Widgets/Logic/Ingame/GameInfoStatsLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/Ingame/GameInfoStatsLogic.cs index 3eaa9238810d..0ad0bda5f15d 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/Ingame/GameInfoStatsLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/Ingame/GameInfoStatsLogic.cs @@ -11,16 +11,17 @@ using System; using System.Drawing; using System.Linq; -using OpenRA.Widgets; -using OpenRA.Traits; using OpenRA.Mods.RA; +using OpenRA.Network; +using OpenRA.Traits; +using OpenRA.Widgets; namespace OpenRA.Mods.RA.Widgets.Logic { class GameInfoStatsLogic { [ObjectCreator.UseCtor] - public GameInfoStatsLogic(Widget widget, World world) + public GameInfoStatsLogic(Widget widget, World world, OrderManager orderManager) { var lp = world.LocalPlayer; @@ -44,7 +45,22 @@ public GameInfoStatsLogic(Widget widget, World world) { var pp = p; var client = world.LobbyInfo.ClientWithIndex(pp.ClientIndex); + var item = playerTemplate.Clone(); + + item.Get("ADMIN_INDICATOR").IsVisible = () => client.IsAdmin; + var block = item.Get("LATENCY"); + var visible = client.Bot == null; + block.IsVisible = () => visible; + + if (visible) + block.Get("LATENCY_COLOR").GetColor = () => + LobbyUtils.LatencyColor(orderManager.LobbyInfo.PingFromClient(client)); + + var tooltip = item.Get("CLIENT_REGION"); + tooltip.IsVisible = () => visible; + tooltip.Bind(orderManager, client.Index); + var nameLabel = item.Get("NAME"); nameLabel.GetText = () => { diff --git a/mods/cnc/chrome/ingame-infostats.yaml b/mods/cnc/chrome/ingame-infostats.yaml index f2f99e6431c3..b9c8168bd918 100644 --- a/mods/cnc/chrome/ingame-infostats.yaml +++ b/mods/cnc/chrome/ingame-infostats.yaml @@ -77,8 +77,30 @@ Container@SKIRMISH_STATS: X: 2 Y: 0 Children: + Image@ADMIN_INDICATOR: + ImageCollection: lobby-bits + ImageName: admin + X: 2 + Visible: false + Container@LATENCY: + X: 0 + Y: 6 + Width: 11 + Height: 14 + Visible: false + Children: + ColorBlock@LATENCY_COLOR: + X: 2 + Y: 2 + Width: PARENT_RIGHT-4 + Height: PARENT_BOTTOM-4 + ClientTooltipRegion@CLIENT_REGION: + TooltipContainer: TOOLTIP_CONTAINER + Template: CLIENT_TOOLTIP + Width: 11 + Height: 25 Label@NAME: - X: 10 + X: 12 Width: 150 Height: 25 Image@FACTIONFLAG: @@ -105,4 +127,5 @@ Container@SKIRMISH_STATS: Width: 70 Height: 25 Align: Center + TooltipContainer@TOOLTIP_CONTAINER: diff --git a/mods/ra/chrome/ingame-infostats.yaml b/mods/ra/chrome/ingame-infostats.yaml index 4c8d45ddcd48..be43b351277d 100644 --- a/mods/ra/chrome/ingame-infostats.yaml +++ b/mods/ra/chrome/ingame-infostats.yaml @@ -77,8 +77,30 @@ Container@SKIRMISH_STATS: X: 2 Y: 0 Children: + Image@ADMIN_INDICATOR: + ImageCollection: lobby-bits + ImageName: admin + X: 2 + Visible: false + Container@LATENCY: + X: 0 + Y: 6 + Width: 11 + Height: 14 + Visible: false + Children: + ColorBlock@LATENCY_COLOR: + X: 2 + Y: 2 + Width: PARENT_RIGHT-4 + Height: PARENT_BOTTOM-4 + ClientTooltipRegion@CLIENT_REGION: + TooltipContainer: TOOLTIP_CONTAINER + Template: CLIENT_TOOLTIP + Width: 11 + Height: 25 Label@NAME: - X: 10 + X: 12 Width: 150 Height: 25 Image@FACTIONFLAG: @@ -105,4 +127,5 @@ Container@SKIRMISH_STATS: Width: 70 Height: 25 Align: Center + TooltipContainer@TOOLTIP_CONTAINER: