diff --git a/OpenRA.Game/Graphics/LineRenderer.cs b/OpenRA.Game/Graphics/LineRenderer.cs index 6ddc923fae..f3b7187d80 100644 --- a/OpenRA.Game/Graphics/LineRenderer.cs +++ b/OpenRA.Game/Graphics/LineRenderer.cs @@ -90,6 +90,19 @@ namespace OpenRA.Graphics DrawLine(new float2(r.Left, y), new float2(r.Right, y), color, color); } + public void FillEllipse(RectangleF r, Color color) + { + var a = (r.Right - r.Left) / 2; + var b = (r.Bottom - r.Top) / 2; + var xc = (r.Right + r.Left) / 2; + var yc = (r.Bottom + r.Top) / 2; + for (var y = r.Top; y <= r.Bottom; y++) + { + var dx = a * System.Convert.ToSingle(System.Math.Sqrt(1 - (y - yc) * (y - yc) / b / b)); + DrawLine(new float2(xc - dx, y), new float2(xc + dx, y), color, color); + } + } + public void SetViewportParams(Size screen, float zoom, float2 scroll) { shader.SetVec("Scroll", (int)scroll.X, (int)scroll.Y); diff --git a/OpenRA.Game/Primitives/float2.cs b/OpenRA.Game/Primitives/float2.cs index b7a9bbc9ef..c8c10b5e76 100644 --- a/OpenRA.Game/Primitives/float2.cs +++ b/OpenRA.Game/Primitives/float2.cs @@ -66,6 +66,7 @@ namespace OpenRA public static float2 operator *(float2 b, float a) { return new float2(a * b.X, a * b.Y); } public static float2 operator *( float2 a, float2 b ) { return new float2( a.X * b.X, a.Y * b.Y ); } public static float2 operator /( float2 a, float2 b ) { return new float2( a.X / b.X, a.Y / b.Y ); } + public static float2 operator /(float2 a, float b) { return new float2(a.X / b, a.Y / b); } public static bool operator ==(float2 me, float2 other) { return (me.X == other.X && me.Y == other.Y); } public static bool operator !=(float2 me, float2 other) { return !(me == other); } diff --git a/OpenRA.Game/Widgets/MapPreviewWidget.cs b/OpenRA.Game/Widgets/MapPreviewWidget.cs index c1d6f69038..928066c406 100644 --- a/OpenRA.Game/Widgets/MapPreviewWidget.cs +++ b/OpenRA.Game/Widgets/MapPreviewWidget.cs @@ -117,14 +117,19 @@ namespace OpenRA.Widgets var owned = colors.ContainsKey(p); var pos = ConvertToPreview(p); var sprite = ChromeProvider.GetImage("lobby-bits", owned ? "spawn-claimed" : "spawn-unclaimed"); - var offset = new int2(-sprite.bounds.Width/2, -sprite.bounds.Height/2); + var offset = new int2(sprite.bounds.Width, sprite.bounds.Height) / 2; if (owned) - WidgetUtils.FillRectWithColor(new Rectangle(pos.X + offset.X + 2, pos.Y + offset.Y + 2, 12, 12), colors[p]); + WidgetUtils.FillEllipseWithColor(new Rectangle(pos.X - offset.X + 1, pos.Y - offset.Y + 1, sprite.bounds.Width - 2, sprite.bounds.Height - 2), colors[p]); - Game.Renderer.RgbaSpriteRenderer.DrawSprite(sprite, pos + offset); + Game.Renderer.RgbaSpriteRenderer.DrawSprite(sprite, pos - offset); + var fonts = Game.Renderer.Fonts[ChromeMetrics.Get("SpawnFont")]; + var number = Convert.ToChar('A' + spawnPoints.IndexOf(p)).ToString(); + offset = fonts.Measure(number) / 2; + offset.Y += 1; // Does not center well vertically for some reason + fonts.DrawTextWithContrast(number, pos - offset, ChromeMetrics.Get("SpawnColor"), ChromeMetrics.Get("SpawnContrastColor"), 1); - if ((pos - Viewport.LastMousePos).LengthSquared < 64) + if (((pos - Viewport.LastMousePos).ToFloat2() * offset.ToFloat2()).LengthSquared < 1) TooltipSpawnIndex = spawnPoints.IndexOf(p) + 1; } } diff --git a/OpenRA.Game/Widgets/WidgetUtils.cs b/OpenRA.Game/Widgets/WidgetUtils.cs index 573a824d80..f355abe934 100644 --- a/OpenRA.Game/Widgets/WidgetUtils.cs +++ b/OpenRA.Game/Widgets/WidgetUtils.cs @@ -68,6 +68,11 @@ namespace OpenRA.Widgets Game.Renderer.LineRenderer.FillRect(new RectangleF(r.X, r.Y, r.Width, r.Height), c); } + public static void FillEllipseWithColor(Rectangle r, Color c) + { + Game.Renderer.LineRenderer.FillEllipse(new RectangleF(r.X, r.Y, r.Width, r.Height), c); + } + public static int[] GetBorderSizes(string collection) { var images = new[] { "border-t", "border-b", "border-l", "border-r" }; diff --git a/OpenRA.Mods.RA/Widgets/ColorMixerWidget.cs b/OpenRA.Mods.RA/Widgets/ColorMixerWidget.cs index 925e71b02f..5b10bc1aca 100755 --- a/OpenRA.Mods.RA/Widgets/ColorMixerWidget.cs +++ b/OpenRA.Mods.RA/Widgets/ColorMixerWidget.cs @@ -134,8 +134,8 @@ namespace OpenRA.Mods.RA.Widgets Game.Renderer.RgbaSpriteRenderer.DrawSprite(mixerSprite, RenderOrigin, new float2(RenderBounds.Size)); var sprite = ChromeProvider.GetImage("lobby-bits", "colorpicker"); - var pos = RenderOrigin + PxFromValue() - new int2(sprite.bounds.Width/2, sprite.bounds.Height/2); - WidgetUtils.FillRectWithColor(new Rectangle(pos.X + 3, pos.Y + 3, 10, 10), Color.RGB); + var pos = RenderOrigin + PxFromValue() - new int2(sprite.bounds.Width, sprite.bounds.Height) / 2; + WidgetUtils.FillEllipseWithColor(new Rectangle(pos.X + 1, pos.Y + 1, sprite.bounds.Width - 2, sprite.bounds.Height - 2), Color.RGB); Game.Renderer.RgbaSpriteRenderer.DrawSprite(sprite, pos); } diff --git a/OpenRA.Mods.RA/Widgets/Logic/LobbyLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/LobbyLogic.cs index 178889fc58..5db050422c 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/LobbyLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/LobbyLogic.cs @@ -614,6 +614,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic LobbyUtils.SetupEditableColorWidget(template, slot, client, orderManager, colorPreview); LobbyUtils.SetupEditableFactionWidget(template, slot, client, orderManager, countryNames); LobbyUtils.SetupEditableTeamWidget(template, slot, client, orderManager, Map); + LobbyUtils.SetupEditableSpawnWidget(template, slot, client, orderManager, Map); LobbyUtils.SetupEditableReadyWidget(template, slot, client, orderManager, Map); } else @@ -629,6 +630,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic LobbyUtils.SetupColorWidget(template, slot, client); LobbyUtils.SetupFactionWidget(template, slot, client, countryNames); LobbyUtils.SetupTeamWidget(template, slot, client); + LobbyUtils.SetupSpawnWidget(template, slot, client); LobbyUtils.SetupReadyWidget(template, slot, client); } diff --git a/OpenRA.Mods.RA/Widgets/Logic/LobbyUtils.cs b/OpenRA.Mods.RA/Widgets/Logic/LobbyUtils.cs index d16c28686e..554679f1de 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/LobbyUtils.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/LobbyUtils.cs @@ -88,6 +88,23 @@ namespace OpenRA.Mods.RA.Widgets.Logic dropdown.ShowDropDown("TEAM_DROPDOWN_TEMPLATE", 150, options, setupItem); } + public static void ShowSpawnDropDown(DropDownButtonWidget dropdown, Session.Client client, + OrderManager orderManager, IEnumerable spawnPoints) + { + Func setupItem = (ii, itemTemplate) => + { + var spawnPoint = spawnPoints.ToList()[ii]; + var item = ScrollItemWidget.Setup(itemTemplate, + () => client.SpawnPoint == spawnPoint, + () => SetSpawnPoint(orderManager, client, spawnPoint)); + item.Get("LABEL").GetText = () => spawnPoint == 0 ? "-" : Convert.ToChar('A' - 1 + spawnPoint).ToString(); + return item; + }; + + var options = Exts.MakeArray(spawnPoints.Count(), i => i).ToList(); + dropdown.ShowDropDown("SPAWN_DROPDOWN_TEMPLATE", 150, options, setupItem); + } + public static void ShowRaceDropDown(DropDownButtonWidget dropdown, Session.Client client, OrderManager orderManager, Dictionary countryNames) { @@ -150,17 +167,20 @@ namespace OpenRA.Mods.RA.Widgets.Logic var selectedSpawn = preview.SpawnPoints .Select((sp, i) => Pair.New(mapPreview.ConvertToPreview(sp), i)) - .Where(a => (a.First - mi.Location).LengthSquared < 64) + .Where(a => ((a.First - mi.Location).ToFloat2() / new float2(ChromeProvider.GetImage("lobby-bits", "spawn-unclaimed").bounds.Width / 2, ChromeProvider.GetImage("lobby-bits", "spawn-unclaimed").bounds.Height / 2)).LengthSquared <= 1) .Select(a => a.Second + 1) .FirstOrDefault(); + var locals = orderManager.LobbyInfo.Clients.Where(c => c.Index == orderManager.LocalClient.Index || (Game.IsHost && c.Bot != null)); + var playerToMove = locals.FirstOrDefault(c => ((selectedSpawn == 0) ^ (c.SpawnPoint == 0) && !c.IsObserver)); + SetSpawnPoint(orderManager, playerToMove, selectedSpawn); + } + + private static void SetSpawnPoint(OrderManager orderManager, Session.Client playerToMove, int selectedSpawn) + { var owned = orderManager.LobbyInfo.Clients.Any(c => c.SpawnPoint == selectedSpawn); if (selectedSpawn == 0 || !owned) - { - var locals = orderManager.LobbyInfo.Clients.Where(c => c.Index == orderManager.LocalClient.Index || (Game.IsHost && c.Bot != null)); - var playerToMove = locals.FirstOrDefault(c => ((selectedSpawn == 0) ^ (c.SpawnPoint == 0) && !c.IsObserver)); orderManager.IssueOrder(Order.Command("spawn {0} {1}".F((playerToMove ?? orderManager.LocalClient).Index, selectedSpawn))); - } } public static Color LatencyColor(int latency) @@ -384,6 +404,20 @@ namespace OpenRA.Mods.RA.Widgets.Logic parent.Get("TEAM").GetText = () => (c.Team == 0) ? "-" : c.Team.ToString(); } + public static void SetupEditableSpawnWidget(Widget parent, Session.Slot s, Session.Client c, OrderManager orderManager, MapPreview map) + { + var dropdown = parent.Get("SPAWN"); + dropdown.IsDisabled = () => s.LockSpawn || orderManager.LocalClient.IsReady; + dropdown.OnMouseDown = _ => ShowSpawnDropDown(dropdown, c, orderManager, Enumerable.Range(0, map.PlayerCount + 1) + .Except(orderManager.LobbyInfo.Clients.Where(client => client != c && client.SpawnPoint != 0).Select(client => client.SpawnPoint))); + dropdown.GetText = () => (c.SpawnPoint == 0) ? "-" : Convert.ToChar('A' - 1 + c.SpawnPoint).ToString(); + } + + public static void SetupSpawnWidget(Widget parent, Session.Slot s, Session.Client c) + { + parent.Get("SPAWN").GetText = () => (c.SpawnPoint == 0) ? "-" : c.SpawnPoint.ToString(); + } + public static void SetupEditableReadyWidget(Widget parent, Session.Slot s, Session.Client c, OrderManager orderManager, MapPreview map) { var status = parent.Get("STATUS_CHECKBOX"); diff --git a/artsrc/cnc/chrome.svg b/artsrc/cnc/chrome.svg index ecd33e9e92..c7073554e1 100644 --- a/artsrc/cnc/chrome.svg +++ b/artsrc/cnc/chrome.svg @@ -13,9 +13,9 @@ height="512" id="svg2" version="1.1" - inkscape:version="0.48.2 r9819" + inkscape:version="0.48.4 r9939" sodipodi:docname="chrome.svg" - inkscape:export-filename="/Users/paul/src/OpenRA/mods/cnc/uibits/chrome.png" + inkscape:export-filename="D:\Documents\Visual Studio 2013\Projects\OpenRA\mods\cnc\uibits\chrome.png" inkscape:export-xdpi="90" inkscape:export-ydpi="90" enable-background="new"> @@ -99,17 +99,17 @@ borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" - inkscape:zoom="11.313708" - inkscape:cx="399.83211" - inkscape:cy="452.59159" + inkscape:zoom="7.9999996" + inkscape:cx="465.51623" + inkscape:cy="457.58054" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" - inkscape:window-width="1151" - inkscape:window-height="1004" - inkscape:window-x="540" - inkscape:window-y="22" - inkscape:window-maximized="0" + inkscape:window-width="1680" + inkscape:window-height="1027" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" showguides="true" inkscape:guide-bbox="true"> image/svg+xml - + @@ -696,7 +696,7 @@ d="m 280,556.36218 -8,8 0,0 8,8 z" style="fill:#ffffff;fill-opacity:1;stroke:none" /> @@ -1403,6 +1403,49 @@ id="path4056" inkscape:connector-curvature="0" sodipodi:nodetypes="csssssssccssssssscc" /> + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mods/cnc/chrome.yaml b/mods/cnc/chrome.yaml index 23746d7890..dc37ddde46 100644 --- a/mods/cnc/chrome.yaml +++ b/mods/cnc/chrome.yaml @@ -392,10 +392,10 @@ music: chrome.png slowmo: 416,80,16,16 lobby-bits: chrome.png - spawn-claimed: 256,32,16,16 - spawn-unclaimed: 256,48,16,16 + spawn-claimed: 485,69,22,22 + spawn-unclaimed: 453,69,22,22 admin: 340,39,7,5 - colorpicker: 256,32,16,16 + colorpicker: 485,69,22,22 huepicker: 388,96,7,15 kick: 386,115,11,11 diff --git a/mods/cnc/chrome/dialogs.yaml b/mods/cnc/chrome/dialogs.yaml index 28ac34187d..a95831d6b4 100644 --- a/mods/cnc/chrome/dialogs.yaml +++ b/mods/cnc/chrome/dialogs.yaml @@ -64,6 +64,22 @@ ScrollPanel@TEAM_DROPDOWN_TEMPLATE: Height: 25 Align: Center +ScrollPanel@SPAWN_DROPDOWN_TEMPLATE: + Width: DROPDOWN_WIDTH + Children: + ScrollItem@TEMPLATE: + Width: PARENT_RIGHT-27 + Height: 25 + X: 2 + Y: 0 + Visible: false + Children: + Label@LABEL: + X: 0 + Width: PARENT_RIGHT + Height: 25 + Align: Center + ScrollPanel@SPECTATOR_DROPDOWN_TEMPLATE: Width: DROPDOWN_WIDTH Background: panel-black diff --git a/mods/cnc/chrome/lobby-dialogs.yaml b/mods/cnc/chrome/lobby-dialogs.yaml index b7c49102d4..776bed5db8 100644 --- a/mods/cnc/chrome/lobby-dialogs.yaml +++ b/mods/cnc/chrome/lobby-dialogs.yaml @@ -92,7 +92,7 @@ Background@KICK_SPECTATORS_DIALOG: Background@LOBBY_OPTIONS_BIN: X: 15 Y: 30 - Width: 501 + Width: 556 Height: 219 Background: scrollpanel-bg Children: diff --git a/mods/cnc/chrome/lobby-playerbin.yaml b/mods/cnc/chrome/lobby-playerbin.yaml index 7f8a6bf5b6..20d3fcd322 100644 --- a/mods/cnc/chrome/lobby-playerbin.yaml +++ b/mods/cnc/chrome/lobby-playerbin.yaml @@ -1,14 +1,14 @@ ScrollPanel@LOBBY_PLAYER_BIN: X: 15 Y: 30 - Width: 501 + Width: 556 Height: 219 ItemSpacing: 5 Children: Container@TEMPLATE_EDITABLE_PLAYER: X: 5 Y: 0 - Width: 475 + Width: 530 Height: 25 Visible: false Children: @@ -84,9 +84,14 @@ ScrollPanel@LOBBY_PLAYER_BIN: Height: 25 X: 390 Font: Regular + DropDownButton@SPAWN: + X: 445 + Width: 50 + Height: 25 + Text: Spawn Image@STATUS_IMAGE: Visible: false - X: 450 + X: 495 Y: 4 Width: 20 Height: 20 @@ -94,14 +99,14 @@ ScrollPanel@LOBBY_PLAYER_BIN: ImageName: checked Checkbox@STATUS_CHECKBOX: Visible: false - X: 446 + X: 501 Y: 2 Width: 20 Height: 20 Container@TEMPLATE_NONEDITABLE_PLAYER: X: 5 Y: 0 - Width: 475 + Width: 530 Height: 25 Visible: false Children: @@ -173,7 +178,7 @@ ScrollPanel@LOBBY_PLAYER_BIN: Y: 0 Image@STATUS_IMAGE: Visible: false - X: 448 + X: 501 Y: 4 Width: 20 Height: 20 @@ -182,7 +187,7 @@ ScrollPanel@LOBBY_PLAYER_BIN: Container@TEMPLATE_EMPTY: X: 5 Y: 0 - Width: 475 + Width: 530 Height: 25 Visible: false Children: @@ -202,14 +207,14 @@ ScrollPanel@LOBBY_PLAYER_BIN: Button@JOIN: Text: Play in this slot Font: Regular - Width: 257 + Width: 312 Height: 25 X: 210 Y: 0 Container@TEMPLATE_EDITABLE_SPECTATOR: X: 5 Y: 0 - Width: 475 + Width: 530 Height: 25 Visible: false Children: @@ -244,7 +249,7 @@ ScrollPanel@LOBBY_PLAYER_BIN: MaxLength: 16 Label@SPECTATOR: Text: Spectator - Width: 315-55 + Width: 315-55+55 Height: 25 X: 210 Y: 0 @@ -253,7 +258,7 @@ ScrollPanel@LOBBY_PLAYER_BIN: Container@TEMPLATE_NONEDITABLE_SPECTATOR: X: 5 Y: 0 - Width: 475 + Width: 530 Height: 25 Visible: false Children: @@ -294,7 +299,7 @@ ScrollPanel@LOBBY_PLAYER_BIN: Font: Bold Label@SPECTATOR: Text: Spectator - Width: 315-55 + Width: 315-55+55 Height: 25 X: 210 Y: 0 @@ -303,7 +308,7 @@ ScrollPanel@LOBBY_PLAYER_BIN: Container@TEMPLATE_NEW_SPECTATOR: X: 5 Y: 0 - Width: 474 + Width: 529 Height: 25 Visible: false Children: @@ -317,7 +322,7 @@ ScrollPanel@LOBBY_PLAYER_BIN: Button@SPECTATE: Text: Spectate Font: Regular - Width: 257 + Width: 312 Height: 25 X: 210 Y: 0 diff --git a/mods/cnc/chrome/lobby.yaml b/mods/cnc/chrome/lobby.yaml index d86d8aa139..541dbb2a04 100644 --- a/mods/cnc/chrome/lobby.yaml +++ b/mods/cnc/chrome/lobby.yaml @@ -2,18 +2,18 @@ Container@SERVER_LOBBY: Logic: LobbyLogic X: (WINDOW_RIGHT - WIDTH)/2 Y: (WINDOW_BOTTOM - 500)/2 - Width: 740 + Width: 800 Height: 535 Children: ColorPreviewManager@COLOR_MANAGER: Label@SERVER_NAME: - Width: 740 + Width: 800 Y: 0-25 Font: BigBold Contrast: true Align: Center Background@bg: - Width: 740 + Width: 800 Height: 500 Background: panel-black Children: @@ -51,8 +51,15 @@ Container@SERVER_LOBBY: Text: Team Align: Center Font: Bold + Label@SPAWN: + X: 445 + Width: 50 + Height: 25 + Text: Spawn + Align: Left + Font: Bold Label@STATUS: - X: 446 + X: 501 Width: 20 Height: 25 Text: Ready @@ -62,24 +69,24 @@ Container@SERVER_LOBBY: DropDownButton@SLOTS_DROPDOWNBUTTON: X: 15 Y: 254 - Width: 150 + Width: 166 Height: 25 Text: Slot Admin Button@OPTIONS_BUTTON: - X: 170 + X: 186 Y: 254 - Width: 112 + Width: 125 Height: 25 Button@CHANGEMAP_BUTTON: - X: 287 + X: 316 Y: 254 - Width: 112 + Width: 125 Height: 25 Text: Change Map Button@START_GAME_BUTTON: - X: 404 + X: 446 Y: 254 - Width: 112 + Width: 125 Height: 25 Text: Start Game ScrollPanel@CHAT_DISPLAY: diff --git a/mods/cnc/chrome/mapchooser.yaml b/mods/cnc/chrome/mapchooser.yaml index 16e204c5db..15deb5d0e7 100644 --- a/mods/cnc/chrome/mapchooser.yaml +++ b/mods/cnc/chrome/mapchooser.yaml @@ -2,7 +2,7 @@ Container@MAPCHOOSER_PANEL: Logic: MapChooserLogic X: (WINDOW_RIGHT - WIDTH)/2 Y: (WINDOW_BOTTOM - 500)/2 - Width: 740 + Width: 800 Height: 535 Children: Label@TITLE: @@ -37,8 +37,8 @@ Container@MAPCHOOSER_PANEL: Height: 440 Children: ScrollItem@MAP_TEMPLATE: - Width: 168 - Height: 217 + Width: 183 + Height: 232 X: 2 Y: 0 Visible: false @@ -46,15 +46,15 @@ Container@MAPCHOOSER_PANEL: Background@PREVIEW_PLACEHOLDER: X: (PARENT_RIGHT - WIDTH)/2 Y: 4 - Width: 158 - Height: 158 + Width: 173 + Height: 173 Background: panel-black ClickThrough: false MapPreview@PREVIEW: X: (PARENT_RIGHT - WIDTH)/2 Y: 4 - Width: 158 - Height: 158 + Width: 173 + Height: 173 Label@TITLE: X: 2 Y: PARENT_BOTTOM-48 diff --git a/mods/cnc/metrics.yaml b/mods/cnc/metrics.yaml index dcbaf3bfa1..4b71e6239c 100644 --- a/mods/cnc/metrics.yaml +++ b/mods/cnc/metrics.yaml @@ -18,4 +18,7 @@ Metrics: TextColor: 255,255,255 TextContrast: false TextContrastColor: 0,0,0 - ColorPickerRemapIndices: 176, 178, 180, 182, 184, 186, 189, 191, 177, 179, 181, 183, 185, 187, 188, 190 \ No newline at end of file + ColorPickerRemapIndices: 176, 178, 180, 182, 184, 186, 189, 191, 177, 179, 181, 183, 185, 187, 188, 190 + SpawnFont: TinyBold + SpawnColor: 255,255,255 + SpawnContrastColor: 0,0,0 diff --git a/mods/cnc/uibits/chrome.png b/mods/cnc/uibits/chrome.png index 18e26ae4bd..baefa2014c 100644 Binary files a/mods/cnc/uibits/chrome.png and b/mods/cnc/uibits/chrome.png differ diff --git a/mods/d2k/chrome.yaml b/mods/d2k/chrome.yaml index 217eba2850..cf54d9356e 100644 --- a/mods/d2k/chrome.yaml +++ b/mods/d2k/chrome.yaml @@ -225,12 +225,12 @@ dialog4: dialog.png corner-br: 571,446,6,6 lobby-bits: spawnpoints.png - spawn-unclaimed: 16,0,16,16 - spawn-claimed: 0,0,16,16 - admin: 37,5,7,5 - colorpicker: 0,0,16,16 - huepicker: 45,0,7,15 - + spawn-unclaimed: 37,5,22,22 + spawn-claimed: 5,5,22,22 + admin: 64,5,7,5 + colorpicker: 5,5,22,22 + huepicker: 71,0,7,15 + strategic: strategic.png unowned: 0,0,32,32 critical_unowned: 0,32,32,32 diff --git a/mods/d2k/chrome/dropdowns.yaml b/mods/d2k/chrome/dropdowns.yaml index 6de43b47ab..32308acc15 100644 --- a/mods/d2k/chrome/dropdowns.yaml +++ b/mods/d2k/chrome/dropdowns.yaml @@ -42,6 +42,22 @@ ScrollPanel@TEAM_DROPDOWN_TEMPLATE: Height: 25 Align: Center +ScrollPanel@SPAWN_DROPDOWN_TEMPLATE: + Width: DROPDOWN_WIDTH + Children: + ScrollItem@TEMPLATE: + Width: PARENT_RIGHT-27 + Height: 25 + X: 2 + Y: 0 + Visible: false + Children: + Label@LABEL: + X: 0 + Width: PARENT_RIGHT + Height: 25 + Align: Center + ScrollPanel@SPECTATOR_DROPDOWN_TEMPLATE: Width: DROPDOWN_WIDTH Children: diff --git a/mods/d2k/chrome/lobby-playerbin.yaml b/mods/d2k/chrome/lobby-playerbin.yaml index cd3fe38856..c297883e10 100644 --- a/mods/d2k/chrome/lobby-playerbin.yaml +++ b/mods/d2k/chrome/lobby-playerbin.yaml @@ -2,7 +2,7 @@ ScrollPanel@LOBBY_PLAYER_BIN: X: 20 Y: 67 ItemSpacing: 5 - Width: 535 + Width: 593 Height: 235 Children: Container@TEMPLATE_EDITABLE_PLAYER: @@ -78,15 +78,20 @@ ScrollPanel@LOBBY_PLAYER_BIN: Width: 48 Height: 25 Text: Team + DropDownButton@SPAWN: + X: 478 + Width: 48 + Height: 25 + Text: Spawn Checkbox@STATUS_CHECKBOX: - X: 477 + X: 535 Y: 2 Width: 20 Height: 20 Visible: false Image@STATUS_IMAGE: Visible: false - X: 479 + X: 537 Y: 4 Width: 20 Height: 20 @@ -166,7 +171,7 @@ ScrollPanel@LOBBY_PLAYER_BIN: Y: 0 Image@STATUS_IMAGE: Visible: false - X: 479 + X: 537 Y: 4 Width: 20 Height: 20 @@ -194,7 +199,7 @@ ScrollPanel@LOBBY_PLAYER_BIN: Visible: false Button@JOIN: Text: Play in this slot - Width: 278 + Width: 336 Height: 25 X: 190 Y: 0 @@ -235,7 +240,7 @@ ScrollPanel@LOBBY_PLAYER_BIN: MaxLength: 16 Label@SPECTATOR: Text: Spectator - Width: 278 + Width: 336 Height: 25 X: 190 Y: 0 @@ -285,7 +290,7 @@ ScrollPanel@LOBBY_PLAYER_BIN: Font: Bold Label@SPECTATOR: Text: Spectator - Width: 278 + Width: 336 Height: 25 X: 190 Y: 0 @@ -308,7 +313,7 @@ ScrollPanel@LOBBY_PLAYER_BIN: Button@SPECTATE: Text: Spectate Font: Regular - Width: 278 + Width: 336 Height: 25 X: 190 Y: 0 diff --git a/mods/d2k/metrics.yaml b/mods/d2k/metrics.yaml index 1f3a480376..137dc82c50 100644 --- a/mods/d2k/metrics.yaml +++ b/mods/d2k/metrics.yaml @@ -19,3 +19,6 @@ Metrics: TextContrast: false TextContrastColor: 0,0,0 ColorPickerRemapIndices: 255, 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, 242, 241, 240 + SpawnFont: TinyBold + SpawnColor: 255,255,255 + SpawnContrastColor: 0,0,0 diff --git a/mods/ra/chrome.yaml b/mods/ra/chrome.yaml index 5ece00106e..63f6d0e646 100644 --- a/mods/ra/chrome.yaml +++ b/mods/ra/chrome.yaml @@ -169,11 +169,11 @@ dialog4: dialog.png corner-br: 571,446,6,6 lobby-bits: spawnpoints.png - spawn-unclaimed: 16,0,16,16 - spawn-claimed: 0,0,16,16 - admin: 37,5,7,5 - colorpicker: 0,0,16,16 - huepicker: 45,0,7,15 + spawn-unclaimed: 37,5,22,22 + spawn-claimed: 5,5,22,22 + admin: 64,5,7,5 + colorpicker: 5,5,22,22 + huepicker: 71,0,7,15 strategic: strategic.png unowned: 0,0,32,32 diff --git a/mods/ra/chrome/dropdowns.yaml b/mods/ra/chrome/dropdowns.yaml index f707cb05fc..749ab3d071 100644 --- a/mods/ra/chrome/dropdowns.yaml +++ b/mods/ra/chrome/dropdowns.yaml @@ -42,6 +42,22 @@ ScrollPanel@TEAM_DROPDOWN_TEMPLATE: Height: 25 Align: Center +ScrollPanel@SPAWN_DROPDOWN_TEMPLATE: + Width: DROPDOWN_WIDTH + Children: + ScrollItem@TEMPLATE: + Width: PARENT_RIGHT-27 + Height: 25 + X: 2 + Y: 0 + Visible: false + Children: + Label@LABEL: + X: 0 + Width: PARENT_RIGHT + Height: 25 + Align: Center + ScrollPanel@SPECTATOR_DROPDOWN_TEMPLATE: Width: DROPDOWN_WIDTH Children: diff --git a/mods/ra/chrome/lobby-dialogs.yaml b/mods/ra/chrome/lobby-dialogs.yaml index 0018649893..1c1f8a6c16 100644 --- a/mods/ra/chrome/lobby-dialogs.yaml +++ b/mods/ra/chrome/lobby-dialogs.yaml @@ -91,7 +91,7 @@ Background@KICK_SPECTATORS_DIALOG: Background@LOBBY_OPTIONS_BIN: X: 20 Y: 67 - Width: 535 + Width: 593 Height: 235 Background: dialog3 Children: diff --git a/mods/ra/chrome/lobby-playerbin.yaml b/mods/ra/chrome/lobby-playerbin.yaml index 7154083283..8ac2f5a7aa 100644 --- a/mods/ra/chrome/lobby-playerbin.yaml +++ b/mods/ra/chrome/lobby-playerbin.yaml @@ -2,7 +2,7 @@ ScrollPanel@LOBBY_PLAYER_BIN: X: 20 Y: 67 ItemSpacing: 5 - Width: 535 + Width: 593 Height: 235 Children: Container@TEMPLATE_EDITABLE_PLAYER: @@ -78,15 +78,20 @@ ScrollPanel@LOBBY_PLAYER_BIN: Width: 48 Height: 25 Text: Team + DropDownButton@SPAWN: + X: 478 + Width: 48 + Height: 25 + Text: Spawn Checkbox@STATUS_CHECKBOX: - X: 477 + X: 535 Y: 2 Width: 20 Height: 20 Visible: false Image@STATUS_IMAGE: Visible: false - X: 479 + X: 537 Y: 4 Width: 20 Height: 20 @@ -166,7 +171,7 @@ ScrollPanel@LOBBY_PLAYER_BIN: Y: 0 Image@STATUS_IMAGE: Visible: false - X: 479 + X: 537 Y: 4 Width: 20 Height: 20 @@ -194,7 +199,7 @@ ScrollPanel@LOBBY_PLAYER_BIN: Visible: false Button@JOIN: Text: Play in this slot - Width: 278 + Width: 336 Height: 25 X: 190 Y: 0 @@ -235,7 +240,7 @@ ScrollPanel@LOBBY_PLAYER_BIN: MaxLength: 16 Label@SPECTATOR: Text: Spectator - Width: 278 + Width: 336 Height: 25 X: 190 Y: 0 @@ -285,7 +290,7 @@ ScrollPanel@LOBBY_PLAYER_BIN: Font: Bold Label@SPECTATOR: Text: Spectator - Width: 278 + Width: 336 Height: 25 X: 190 Y: 0 @@ -308,7 +313,7 @@ ScrollPanel@LOBBY_PLAYER_BIN: Button@SPECTATE: Text: Spectate Font: Regular - Width: 278 + Width: 336 Height: 25 X: 190 Y: 0 diff --git a/mods/ra/chrome/lobby.yaml b/mods/ra/chrome/lobby.yaml index c12f73e400..b8e26c6f99 100644 --- a/mods/ra/chrome/lobby.yaml +++ b/mods/ra/chrome/lobby.yaml @@ -2,7 +2,7 @@ Background@SERVER_LOBBY: Logic: LobbyLogic X: (WINDOW_RIGHT - WIDTH)/2 Y: (WINDOW_BOTTOM - HEIGHT)/2 - Width: 800 + Width: 858 Height: 600 Children: ColorPreviewManager@COLOR_MANAGER: @@ -48,8 +48,15 @@ Background@SERVER_LOBBY: Text: Team Align: Center Font: Bold + Label@LABEL_LOBBY_TEAM: + X: 478 + Width: 48 + Height: 25 + Text: Spawn + Align: Center + Font: Bold Label@LABEL_LOBBY_STATUS: - X: 477 + X: 535 Width: 20 Height: 25 Text: Ready @@ -59,35 +66,35 @@ Background@SERVER_LOBBY: DropDownButton@SLOTS_DROPDOWNBUTTON: X: 20 Y: PARENT_BOTTOM - 291 - Width: 151 + Width: 167 Height: 25 Font: Bold Text: Slot Admin Button@OPTIONS_BUTTON: - X: 178 + X: 194 Y: PARENT_BOTTOM - 291 - Width: 121 + Width: 135 Height: 25 Font: Bold Text: Game Options Button@CHANGEMAP_BUTTON: - X: 306 + X: 336 Y: PARENT_BOTTOM - 291 - Width: 121 + Width: 135 Height: 25 Text: Change Map Font: Bold Button@START_GAME_BUTTON: - X: 434 + X: 478 Y: PARENT_BOTTOM - 291 - Width: 121 + Width: 135 Height: 25 Text: Start Game Font: Bold ScrollPanel@CHAT_DISPLAY: X: 20 Y: PARENT_BOTTOM - HEIGHT - 52 - Width: 760 + Width: 818 Height: 210 ItemSpacing: 1 Children: diff --git a/mods/ra/chrome/map-chooser.yaml b/mods/ra/chrome/map-chooser.yaml index 5c87b37e5a..500ed1f432 100644 --- a/mods/ra/chrome/map-chooser.yaml +++ b/mods/ra/chrome/map-chooser.yaml @@ -2,14 +2,14 @@ Background@MAPCHOOSER_PANEL: X: (WINDOW_RIGHT - WIDTH)/2 Y: (WINDOW_BOTTOM - HEIGHT)/2 Logic: MapChooserLogic - Width: 800 + Width: 858 Height: 600 Children: Label@MAPCHOOSER_TITLE: X: 0 Y: 17 Align: Center - Width: 800 + Width: 858 Height: 20 Text: Choose Map Font: Bold @@ -20,8 +20,8 @@ Background@MAPCHOOSER_PANEL: Height: 474 Children: ScrollItem@MAP_TEMPLATE: - Width: 180 - Height: 229 + Width: 194 + Height: 243 X: 4 Y: 0 Visible: false @@ -29,15 +29,15 @@ Background@MAPCHOOSER_PANEL: Background@PREVIEW_PLACEHOLDER: X: (PARENT_RIGHT - WIDTH)/2 Y: 4 - Width: 170 - Height: 170 + Width: 184 + Height: 184 Background: dialog3 ClickThrough: true MapPreview@PREVIEW: X: (PARENT_RIGHT - WIDTH)/2 Y: 4 - Width: 170 - Height: 170 + Width: 184 + Height: 184 Label@TITLE: X: 2 Y: PARENT_BOTTOM-48 diff --git a/mods/ra/metrics.yaml b/mods/ra/metrics.yaml index 8917a2d756..c4b902869c 100644 --- a/mods/ra/metrics.yaml +++ b/mods/ra/metrics.yaml @@ -19,3 +19,6 @@ Metrics: TextContrast: false TextContrastColor: 0,0,0 ColorPickerRemapIndices: 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95 + SpawnFont: TinyBold + SpawnColor: 255,255,255 + SpawnContrastColor: 0,0,0 diff --git a/mods/ra/uibits/spawnpoints.png b/mods/ra/uibits/spawnpoints.png index 058dfc523a..3d06826dd5 100644 Binary files a/mods/ra/uibits/spawnpoints.png and b/mods/ra/uibits/spawnpoints.png differ diff --git a/mods/ts/chrome.yaml b/mods/ts/chrome.yaml index 91fb49929f..e5e2a87c07 100644 --- a/mods/ts/chrome.yaml +++ b/mods/ts/chrome.yaml @@ -163,11 +163,11 @@ dialog4: dialog.png corner-br: 571,446,6,6 lobby-bits: spawnpoints.png - spawn-unclaimed: 16,0,16,16 - spawn-claimed: 0,0,16,16 - admin: 37,5,7,5 - colorpicker: 0,0,16,16 - huepicker: 45,0,7,15 + spawn-unclaimed: 37,5,22,22 + spawn-claimed: 5,5,22,22 + admin: 64,5,7,5 + colorpicker: 5,5,22,22 + huepicker: 71,0,7,15 strategic: strategic.png unowned: 0,0,32,32 diff --git a/mods/ts/metrics.yaml b/mods/ts/metrics.yaml index f0e66e52a0..5402e155fb 100644 --- a/mods/ts/metrics.yaml +++ b/mods/ts/metrics.yaml @@ -19,3 +19,6 @@ Metrics: TextContrast: false TextContrastColor: 0,0,0 ColorPickerRemapIndices: 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 + SpawnFont: TinyBold + SpawnColor: 255,255,255 + SpawnContrastColor: 0,0,0