From 4bf887a905928969a9d5237d47af860782a92384 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Tue, 12 Jan 2016 00:16:13 +0000 Subject: [PATCH 1/2] Extract a helper method for switching menu types. --- .../Widgets/Logic/MainMenuLogic.cs | 65 ++++++++++--------- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs index 1e6422d7d3..f2c5ae9ee2 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs @@ -31,6 +31,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic // Update news once per game launch static bool fetchedNews; + void SwitchMenu(MenuType type) + { + menuType = type; + } + [ObjectCreator.UseCtor] public MainMenuLogic(Widget widget, World world) { @@ -41,15 +46,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic var mainMenu = widget.Get("MAIN_MENU"); mainMenu.IsVisible = () => menuType == MenuType.Main; - mainMenu.Get("SINGLEPLAYER_BUTTON").OnClick = () => menuType = MenuType.Singleplayer; + mainMenu.Get("SINGLEPLAYER_BUTTON").OnClick = () => SwitchMenu(MenuType.Singleplayer); mainMenu.Get("MULTIPLAYER_BUTTON").OnClick = () => { - menuType = MenuType.None; + SwitchMenu(MenuType.None); Ui.OpenWindow("MULTIPLAYER_PANEL", new WidgetArgs { { "onStart", RemoveShellmapUI }, - { "onExit", () => menuType = MenuType.Main }, + { "onExit", () => SwitchMenu(MenuType.Main) }, { "directConnectHost", null }, { "directConnectPort", 0 }, }); @@ -68,14 +73,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic mainMenu.Get("SETTINGS_BUTTON").OnClick = () => { - menuType = MenuType.None; + SwitchMenu(MenuType.None); Game.OpenWindow("SETTINGS_PANEL", new WidgetArgs { - { "onExit", () => menuType = MenuType.Main } + { "onExit", () => SwitchMenu(MenuType.Main) } }); }; - mainMenu.Get("EXTRAS_BUTTON").OnClick = () => menuType = MenuType.Extras; + mainMenu.Get("EXTRAS_BUTTON").OnClick = () => SwitchMenu(MenuType.Extras); mainMenu.Get("QUIT_BUTTON").OnClick = Game.Exit; @@ -86,10 +91,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic var missionsButton = singleplayerMenu.Get("MISSIONS_BUTTON"); missionsButton.OnClick = () => { - menuType = MenuType.None; + SwitchMenu(MenuType.None); Game.OpenWindow("MISSIONBROWSER_PANEL", new WidgetArgs { - { "onExit", () => menuType = MenuType.Singleplayer }, + { "onExit", () => SwitchMenu(MenuType.Singleplayer) }, { "onStart", RemoveShellmapUI } }); }; @@ -102,7 +107,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic singleplayerMenu.Get("SKIRMISH_BUTTON").OnClick = StartSkirmishGame; - singleplayerMenu.Get("BACK_BUTTON").OnClick = () => menuType = MenuType.Main; + singleplayerMenu.Get("BACK_BUTTON").OnClick = () => SwitchMenu(MenuType.Main); // Extras menu var extrasMenu = widget.Get("EXTRAS_MENU"); @@ -110,47 +115,47 @@ namespace OpenRA.Mods.Common.Widgets.Logic extrasMenu.Get("REPLAYS_BUTTON").OnClick = () => { - menuType = MenuType.None; + SwitchMenu(MenuType.None); Ui.OpenWindow("REPLAYBROWSER_PANEL", new WidgetArgs { - { "onExit", () => menuType = MenuType.Extras }, + { "onExit", () => SwitchMenu(MenuType.Extras) }, { "onStart", RemoveShellmapUI } }); }; extrasMenu.Get("MUSIC_BUTTON").OnClick = () => { - menuType = MenuType.None; + SwitchMenu(MenuType.None); Ui.OpenWindow("MUSIC_PANEL", new WidgetArgs { - { "onExit", () => menuType = MenuType.Extras }, + { "onExit", () => SwitchMenu(MenuType.Extras) }, { "world", world } }); }; - extrasMenu.Get("MAP_EDITOR_BUTTON").OnClick = () => menuType = MenuType.MapEditor; + extrasMenu.Get("MAP_EDITOR_BUTTON").OnClick = () => SwitchMenu(MenuType.MapEditor); var assetBrowserButton = extrasMenu.GetOrNull("ASSETBROWSER_BUTTON"); if (assetBrowserButton != null) assetBrowserButton.OnClick = () => { - menuType = MenuType.None; + SwitchMenu(MenuType.None); Game.OpenWindow("ASSETBROWSER_PANEL", new WidgetArgs { - { "onExit", () => menuType = MenuType.Extras }, + { "onExit", () => SwitchMenu(MenuType.Extras) }, }); }; extrasMenu.Get("CREDITS_BUTTON").OnClick = () => { - menuType = MenuType.None; + SwitchMenu(MenuType.None); Ui.OpenWindow("CREDITS_PANEL", new WidgetArgs { - { "onExit", () => menuType = MenuType.Extras }, + { "onExit", () => SwitchMenu(MenuType.Extras) }, }); }; - extrasMenu.Get("BACK_BUTTON").OnClick = () => menuType = MenuType.Main; + extrasMenu.Get("BACK_BUTTON").OnClick = () => SwitchMenu(MenuType.Main); // Map editor menu var mapEditorMenu = widget.Get("MAP_EDITOR_MENU"); @@ -165,29 +170,29 @@ namespace OpenRA.Mods.Common.Widgets.Logic var newMapButton = widget.Get("NEW_MAP_BUTTON"); newMapButton.OnClick = () => { - menuType = MenuType.None; + SwitchMenu(MenuType.None); Game.OpenWindow("NEW_MAP_BG", new WidgetArgs() { { "onSelect", onSelect }, - { "onExit", () => menuType = MenuType.MapEditor } + { "onExit", () => SwitchMenu(MenuType.MapEditor) } }); }; var loadMapButton = widget.Get("LOAD_MAP_BUTTON"); loadMapButton.OnClick = () => { - menuType = MenuType.None; + SwitchMenu(MenuType.None); Game.OpenWindow("MAPCHOOSER_PANEL", new WidgetArgs() { { "initialMap", null }, { "initialTab", MapClassification.User }, - { "onExit", () => menuType = MenuType.MapEditor }, + { "onExit", () => SwitchMenu(MenuType.MapEditor) }, { "onSelect", onSelect }, { "filter", MapVisibility.Lobby | MapVisibility.Shellmap | MapVisibility.MissionSelector }, }); }; - mapEditorMenu.Get("BACK_BUTTON").OnClick = () => menuType = MenuType.Extras; + mapEditorMenu.Get("BACK_BUTTON").OnClick = () => SwitchMenu(MenuType.Extras); var newsBG = widget.GetOrNull("NEWS_BG"); if (newsBG != null) @@ -224,11 +229,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic void OnRemoteDirectConnect(string host, int port) { - menuType = MenuType.None; + SwitchMenu(MenuType.None); Ui.OpenWindow("MULTIPLAYER_PANEL", new WidgetArgs { { "onStart", RemoveShellmapUI }, - { "onExit", () => menuType = MenuType.Main }, + { "onExit", () => SwitchMenu(MenuType.Main) }, { "directConnectHost", host }, { "directConnectPort", port }, }); @@ -240,7 +245,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic Game.CreateLocalServer(map.Uid), "", () => { Game.LoadEditor(map.Uid); }, - () => { Game.CloseServer(); menuType = MenuType.MapEditor; }); + () => { Game.CloseServer(); SwitchMenu(MenuType.MapEditor); }); } void SetNewsStatus(string message) @@ -343,10 +348,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic void OpenSkirmishLobbyPanel() { - menuType = MenuType.None; + SwitchMenu(MenuType.None); Game.OpenWindow("SERVER_LOBBY", new WidgetArgs { - { "onExit", () => { Game.Disconnect(); menuType = MenuType.Singleplayer; } }, + { "onExit", () => { Game.Disconnect(); SwitchMenu(MenuType.Singleplayer); } }, { "onStart", RemoveShellmapUI }, { "skirmishMode", true } }); @@ -362,7 +367,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic Game.CreateLocalServer(map), "", OpenSkirmishLobbyPanel, - () => { Game.CloseServer(); menuType = MenuType.Main; }); + () => { Game.CloseServer(); SwitchMenu(MenuType.Main); }); } protected override void Dispose(bool disposing) From 44b1402080637d480d881dfeec47a491d61e95d9 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Tue, 12 Jan 2016 00:23:39 +0000 Subject: [PATCH 2/2] Update button mouseover when switching menus. --- OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs b/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs index f2c5ae9ee2..fbf65cd305 100644 --- a/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs +++ b/OpenRA.Mods.Common/Widgets/Logic/MainMenuLogic.cs @@ -34,6 +34,9 @@ namespace OpenRA.Mods.Common.Widgets.Logic void SwitchMenu(MenuType type) { menuType = type; + + // Update button mouseover + Game.RunAfterTick(Ui.ResetTooltips); } [ObjectCreator.UseCtor]