From 8535e8d2578e77c9f69dd55c1d40f050a501d22c Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Thu, 20 Mar 2014 22:53:19 +1300 Subject: [PATCH] Add settings tab to TD lobby. Partially fixes #4770. --- OpenRA.Mods.RA/Widgets/Logic/LobbyLogic.cs | 19 +++++++++++++++---- mods/cnc/chrome/lobby.yaml | 8 +++++++- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/OpenRA.Mods.RA/Widgets/Logic/LobbyLogic.cs b/OpenRA.Mods.RA/Widgets/Logic/LobbyLogic.cs index e72f2272bd..0c42be7d1b 100644 --- a/OpenRA.Mods.RA/Widgets/Logic/LobbyLogic.cs +++ b/OpenRA.Mods.RA/Widgets/Logic/LobbyLogic.cs @@ -12,6 +12,7 @@ using System; using System.Collections.Generic; using System.Drawing; using System.Linq; +using OpenRA.Graphics; using OpenRA.Network; using OpenRA.Traits; using OpenRA.Widgets; @@ -20,6 +21,8 @@ namespace OpenRA.Mods.RA.Widgets.Logic { public class LobbyLogic { + static readonly Action DoNothing = () => { }; + readonly Action onStart; readonly Action onExit; readonly OrderManager orderManager; @@ -86,7 +89,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic } [ObjectCreator.UseCtor] - internal LobbyLogic(Widget widget, World world, OrderManager orderManager, + internal LobbyLogic(Widget widget, World world, WorldRenderer worldRenderer, OrderManager orderManager, Action onExit, Action onStart, bool skirmishMode) { lobby = widget; @@ -164,7 +167,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic Ui.OpenWindow("MAPCHOOSER_PANEL", new WidgetArgs() { { "initialMap", preview.Uid }, - { "onExit", () => { } }, + { "onExit", DoNothing }, { "onSelect", onSelect } }); }; @@ -469,9 +472,17 @@ namespace OpenRA.Mods.RA.Widgets.Logic var musicButton = lobby.GetOrNull("MUSIC_BUTTON"); if (musicButton != null) - musicButton.OnClick = () => Ui.OpenWindow("MUSIC_PANEL", - new WidgetArgs { { "onExit", () => { } } }); + musicButton.OnClick = () => Ui.OpenWindow("MUSIC_PANEL", new WidgetArgs { { "onExit", DoNothing } }); + var settingsButton = lobby.GetOrNull("SETTINGS_BUTTON"); + if (settingsButton != null) + { + settingsButton.OnClick = () => Ui.OpenWindow("SETTINGS_PANEL", new WidgetArgs + { + { "onExit", DoNothing }, + { "worldRenderer", worldRenderer } + }); + } // Add a bot on the first lobbyinfo update if (this.skirmishMode) Game.LobbyInfoChanged += WidgetUtils.Once(() => diff --git a/mods/cnc/chrome/lobby.yaml b/mods/cnc/chrome/lobby.yaml index 41859af2b4..1ce1394529 100644 --- a/mods/cnc/chrome/lobby.yaml +++ b/mods/cnc/chrome/lobby.yaml @@ -161,10 +161,16 @@ Container@SERVER_LOBBY: Height:35 Text:Leave Game Key: escape - Button@MUSIC_BUTTON: + Button@SETTINGS_BUTTON: X:150 Y:499 Width:140 Height:35 + Text:Settings + Button@MUSIC_BUTTON: + X:300 + Y:499 + Width:140 + Height:35 Text:Music TooltipContainer@TOOLTIP_CONTAINER: