diff --git a/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj b/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj index 333af4cfeb..b236ce20d8 100644 --- a/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj +++ b/OpenRA.Mods.Cnc/OpenRA.Mods.Cnc.csproj @@ -70,6 +70,7 @@ + @@ -103,5 +104,6 @@ cd "$(SolutionDir)" + \ No newline at end of file diff --git a/OpenRA.Mods.Cnc/Widgets/CncMenuLogic.cs b/OpenRA.Mods.Cnc/Widgets/CncMenuLogic.cs new file mode 100755 index 0000000000..7bea4f5668 --- /dev/null +++ b/OpenRA.Mods.Cnc/Widgets/CncMenuLogic.cs @@ -0,0 +1,49 @@ +#region Copyright & License Information +/* + * Copyright 2007-2011 The OpenRA Developers (see AUTHORS) + * This file is part of OpenRA, which is free software. It is made + * available to you under the terms of the GNU General Public License + * as published by the Free Software Foundation. For more information, + * see COPYING. + */ +#endregion + +using System.Collections.Generic; +using OpenRA.FileFormats; +using OpenRA.Network; +using OpenRA.Server; +using OpenRA.Widgets; +using System; +using System.Drawing; +using System.Linq; + +namespace OpenRA.Mods.RA.Widgets.Delegates +{ + public class CncMenuLogic : IWidgetDelegate + { + enum MenuType + { + Main, + Multiplayer, + Settings + } + MenuType Menu = MenuType.Main; + + [ObjectCreator.UseCtor] + public CncMenuLogic([ObjectCreator.Param] Widget widget) + { + // Root level menu + var mainButtons = widget.GetWidget("MAIN_BUTTONS"); + mainButtons.IsVisible = () => Menu == MenuType.Main; + + mainButtons.GetWidget("MULTIPLAYER_BUTTON").OnMouseUp = mi => { Menu = MenuType.Multiplayer; return true; }; + mainButtons.GetWidget("QUIT_BUTTON").OnMouseUp = mi => { Game.Exit(); return true; }; + + // Multiplayer menu + var multiplayerButtons = widget.GetWidget("MULTIPLAYER_BUTTONS"); + multiplayerButtons.IsVisible = () => Menu == MenuType.Multiplayer; + + multiplayerButtons.GetWidget("BACK_BUTTON").OnMouseUp = mi => { Menu = MenuType.Main; return true; }; + } + } +} diff --git a/mods/cnc/chrome/mainmenu.yaml b/mods/cnc/chrome/mainmenu.yaml index 5658debed1..88af571fa4 100644 --- a/mods/cnc/chrome/mainmenu.yaml +++ b/mods/cnc/chrome/mainmenu.yaml @@ -4,6 +4,7 @@ Container@MAINMENU_BG: Y:0 Width:WINDOW_RIGHT Height:WINDOW_BOTTOM + Delegate:CncMenuLogic Children: Image@RETICLE: X:(WINDOW_RIGHT-WIDTH)/2 @@ -18,20 +19,29 @@ Container@MAINMENU_BG: Width:WINDOW_RIGHT Height:WINDOW_BOTTOM Background:shellmapborder - Container@BUTTON_CONTAINER: - Id:BUTTON_CONTAINER + Container@MAIN_BUTTONS: + Id:MAIN_BUTTONS X:(WINDOW_RIGHT-WIDTH)/2 Y:WINDOW_BOTTOM-33-HEIGHT-10 Width:740 Height:35 Children: + Label@TITLE: + X:0 + Y:0-30 + Width:PARENT_RIGHT + Height:20 + Text:Main Menu + Align:Center + Bold:True + Contrast:True Button@SOLO_BUTTON: Id:SOLO_BUTTON X:0 Y:0 Width:140 Height:35 - Text:Solo Play + Text:Skirmish Bold:True Button@MULTIPLAYER_BUTTON: Id:MULTIPLAYER_BUTTON @@ -65,6 +75,55 @@ Container@MAINMENU_BG: Height:35 Text:Quit Bold:True + Container@MULTIPLAYER_BUTTONS: + Id:MULTIPLAYER_BUTTONS + X:(WINDOW_RIGHT-WIDTH)/2 + Y:WINDOW_BOTTOM-33-HEIGHT-10 + Width:740 + Height:35 + Visible:false + Children: + Label@TITLE: + X:0 + Y:0-30 + Width:PARENT_RIGHT + Height:20 + Text:Multiplayer + Align:Center + Bold:True + Contrast:True + Button@CREATE_BUTTON: + Id:CREATE_BUTTON + X:0 + Y:0 + Width:140 + Height:35 + Text:Create Server + Bold:True + Button@JOIN_BUTTON: + Id:JOIN_BUTTON + X:150 + Y:0 + Width:140 + Height:35 + Text:Find Server + Bold:True + Button@DIRECTCONNECT_BUTTON: + Id:DIRECTCONNECT_BUTTON + X:300 + Y:0 + Width:140 + Height:35 + Text:Direct Connect + Bold:True + Button@BACK_BUTTON: + Id:BACK_BUTTON + X:600 + Y:0 + Width:140 + Height:35 + Text:Back + Bold:True Background@QUICKMODSWITCHER: Id:QUICKMODSWITCHER Background: dialog4