Merge pull request #10493 from pchote/fix-menu-hover

Update button mouseover when switching menus.
This commit is contained in:
Matthias Mailänder
2016-01-16 14:10:24 +01:00

View File

@@ -31,6 +31,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic
// Update news once per game launch // Update news once per game launch
static bool fetchedNews; static bool fetchedNews;
void SwitchMenu(MenuType type)
{
menuType = type;
// Update button mouseover
Game.RunAfterTick(Ui.ResetTooltips);
}
[ObjectCreator.UseCtor] [ObjectCreator.UseCtor]
public MainMenuLogic(Widget widget, World world) public MainMenuLogic(Widget widget, World world)
{ {
@@ -41,15 +49,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var mainMenu = widget.Get("MAIN_MENU"); var mainMenu = widget.Get("MAIN_MENU");
mainMenu.IsVisible = () => menuType == MenuType.Main; mainMenu.IsVisible = () => menuType == MenuType.Main;
mainMenu.Get<ButtonWidget>("SINGLEPLAYER_BUTTON").OnClick = () => menuType = MenuType.Singleplayer; mainMenu.Get<ButtonWidget>("SINGLEPLAYER_BUTTON").OnClick = () => SwitchMenu(MenuType.Singleplayer);
mainMenu.Get<ButtonWidget>("MULTIPLAYER_BUTTON").OnClick = () => mainMenu.Get<ButtonWidget>("MULTIPLAYER_BUTTON").OnClick = () =>
{ {
menuType = MenuType.None; SwitchMenu(MenuType.None);
Ui.OpenWindow("MULTIPLAYER_PANEL", new WidgetArgs Ui.OpenWindow("MULTIPLAYER_PANEL", new WidgetArgs
{ {
{ "onStart", RemoveShellmapUI }, { "onStart", RemoveShellmapUI },
{ "onExit", () => menuType = MenuType.Main }, { "onExit", () => SwitchMenu(MenuType.Main) },
{ "directConnectHost", null }, { "directConnectHost", null },
{ "directConnectPort", 0 }, { "directConnectPort", 0 },
}); });
@@ -68,14 +76,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic
mainMenu.Get<ButtonWidget>("SETTINGS_BUTTON").OnClick = () => mainMenu.Get<ButtonWidget>("SETTINGS_BUTTON").OnClick = () =>
{ {
menuType = MenuType.None; SwitchMenu(MenuType.None);
Game.OpenWindow("SETTINGS_PANEL", new WidgetArgs Game.OpenWindow("SETTINGS_PANEL", new WidgetArgs
{ {
{ "onExit", () => menuType = MenuType.Main } { "onExit", () => SwitchMenu(MenuType.Main) }
}); });
}; };
mainMenu.Get<ButtonWidget>("EXTRAS_BUTTON").OnClick = () => menuType = MenuType.Extras; mainMenu.Get<ButtonWidget>("EXTRAS_BUTTON").OnClick = () => SwitchMenu(MenuType.Extras);
mainMenu.Get<ButtonWidget>("QUIT_BUTTON").OnClick = Game.Exit; mainMenu.Get<ButtonWidget>("QUIT_BUTTON").OnClick = Game.Exit;
@@ -86,10 +94,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var missionsButton = singleplayerMenu.Get<ButtonWidget>("MISSIONS_BUTTON"); var missionsButton = singleplayerMenu.Get<ButtonWidget>("MISSIONS_BUTTON");
missionsButton.OnClick = () => missionsButton.OnClick = () =>
{ {
menuType = MenuType.None; SwitchMenu(MenuType.None);
Game.OpenWindow("MISSIONBROWSER_PANEL", new WidgetArgs Game.OpenWindow("MISSIONBROWSER_PANEL", new WidgetArgs
{ {
{ "onExit", () => menuType = MenuType.Singleplayer }, { "onExit", () => SwitchMenu(MenuType.Singleplayer) },
{ "onStart", RemoveShellmapUI } { "onStart", RemoveShellmapUI }
}); });
}; };
@@ -102,7 +110,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
singleplayerMenu.Get<ButtonWidget>("SKIRMISH_BUTTON").OnClick = StartSkirmishGame; singleplayerMenu.Get<ButtonWidget>("SKIRMISH_BUTTON").OnClick = StartSkirmishGame;
singleplayerMenu.Get<ButtonWidget>("BACK_BUTTON").OnClick = () => menuType = MenuType.Main; singleplayerMenu.Get<ButtonWidget>("BACK_BUTTON").OnClick = () => SwitchMenu(MenuType.Main);
// Extras menu // Extras menu
var extrasMenu = widget.Get("EXTRAS_MENU"); var extrasMenu = widget.Get("EXTRAS_MENU");
@@ -110,47 +118,47 @@ namespace OpenRA.Mods.Common.Widgets.Logic
extrasMenu.Get<ButtonWidget>("REPLAYS_BUTTON").OnClick = () => extrasMenu.Get<ButtonWidget>("REPLAYS_BUTTON").OnClick = () =>
{ {
menuType = MenuType.None; SwitchMenu(MenuType.None);
Ui.OpenWindow("REPLAYBROWSER_PANEL", new WidgetArgs Ui.OpenWindow("REPLAYBROWSER_PANEL", new WidgetArgs
{ {
{ "onExit", () => menuType = MenuType.Extras }, { "onExit", () => SwitchMenu(MenuType.Extras) },
{ "onStart", RemoveShellmapUI } { "onStart", RemoveShellmapUI }
}); });
}; };
extrasMenu.Get<ButtonWidget>("MUSIC_BUTTON").OnClick = () => extrasMenu.Get<ButtonWidget>("MUSIC_BUTTON").OnClick = () =>
{ {
menuType = MenuType.None; SwitchMenu(MenuType.None);
Ui.OpenWindow("MUSIC_PANEL", new WidgetArgs Ui.OpenWindow("MUSIC_PANEL", new WidgetArgs
{ {
{ "onExit", () => menuType = MenuType.Extras }, { "onExit", () => SwitchMenu(MenuType.Extras) },
{ "world", world } { "world", world }
}); });
}; };
extrasMenu.Get<ButtonWidget>("MAP_EDITOR_BUTTON").OnClick = () => menuType = MenuType.MapEditor; extrasMenu.Get<ButtonWidget>("MAP_EDITOR_BUTTON").OnClick = () => SwitchMenu(MenuType.MapEditor);
var assetBrowserButton = extrasMenu.GetOrNull<ButtonWidget>("ASSETBROWSER_BUTTON"); var assetBrowserButton = extrasMenu.GetOrNull<ButtonWidget>("ASSETBROWSER_BUTTON");
if (assetBrowserButton != null) if (assetBrowserButton != null)
assetBrowserButton.OnClick = () => assetBrowserButton.OnClick = () =>
{ {
menuType = MenuType.None; SwitchMenu(MenuType.None);
Game.OpenWindow("ASSETBROWSER_PANEL", new WidgetArgs Game.OpenWindow("ASSETBROWSER_PANEL", new WidgetArgs
{ {
{ "onExit", () => menuType = MenuType.Extras }, { "onExit", () => SwitchMenu(MenuType.Extras) },
}); });
}; };
extrasMenu.Get<ButtonWidget>("CREDITS_BUTTON").OnClick = () => extrasMenu.Get<ButtonWidget>("CREDITS_BUTTON").OnClick = () =>
{ {
menuType = MenuType.None; SwitchMenu(MenuType.None);
Ui.OpenWindow("CREDITS_PANEL", new WidgetArgs Ui.OpenWindow("CREDITS_PANEL", new WidgetArgs
{ {
{ "onExit", () => menuType = MenuType.Extras }, { "onExit", () => SwitchMenu(MenuType.Extras) },
}); });
}; };
extrasMenu.Get<ButtonWidget>("BACK_BUTTON").OnClick = () => menuType = MenuType.Main; extrasMenu.Get<ButtonWidget>("BACK_BUTTON").OnClick = () => SwitchMenu(MenuType.Main);
// Map editor menu // Map editor menu
var mapEditorMenu = widget.Get("MAP_EDITOR_MENU"); var mapEditorMenu = widget.Get("MAP_EDITOR_MENU");
@@ -165,29 +173,29 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var newMapButton = widget.Get<ButtonWidget>("NEW_MAP_BUTTON"); var newMapButton = widget.Get<ButtonWidget>("NEW_MAP_BUTTON");
newMapButton.OnClick = () => newMapButton.OnClick = () =>
{ {
menuType = MenuType.None; SwitchMenu(MenuType.None);
Game.OpenWindow("NEW_MAP_BG", new WidgetArgs() Game.OpenWindow("NEW_MAP_BG", new WidgetArgs()
{ {
{ "onSelect", onSelect }, { "onSelect", onSelect },
{ "onExit", () => menuType = MenuType.MapEditor } { "onExit", () => SwitchMenu(MenuType.MapEditor) }
}); });
}; };
var loadMapButton = widget.Get<ButtonWidget>("LOAD_MAP_BUTTON"); var loadMapButton = widget.Get<ButtonWidget>("LOAD_MAP_BUTTON");
loadMapButton.OnClick = () => loadMapButton.OnClick = () =>
{ {
menuType = MenuType.None; SwitchMenu(MenuType.None);
Game.OpenWindow("MAPCHOOSER_PANEL", new WidgetArgs() Game.OpenWindow("MAPCHOOSER_PANEL", new WidgetArgs()
{ {
{ "initialMap", null }, { "initialMap", null },
{ "initialTab", MapClassification.User }, { "initialTab", MapClassification.User },
{ "onExit", () => menuType = MenuType.MapEditor }, { "onExit", () => SwitchMenu(MenuType.MapEditor) },
{ "onSelect", onSelect }, { "onSelect", onSelect },
{ "filter", MapVisibility.Lobby | MapVisibility.Shellmap | MapVisibility.MissionSelector }, { "filter", MapVisibility.Lobby | MapVisibility.Shellmap | MapVisibility.MissionSelector },
}); });
}; };
mapEditorMenu.Get<ButtonWidget>("BACK_BUTTON").OnClick = () => menuType = MenuType.Extras; mapEditorMenu.Get<ButtonWidget>("BACK_BUTTON").OnClick = () => SwitchMenu(MenuType.Extras);
var newsBG = widget.GetOrNull("NEWS_BG"); var newsBG = widget.GetOrNull("NEWS_BG");
if (newsBG != null) if (newsBG != null)
@@ -224,11 +232,11 @@ namespace OpenRA.Mods.Common.Widgets.Logic
void OnRemoteDirectConnect(string host, int port) void OnRemoteDirectConnect(string host, int port)
{ {
menuType = MenuType.None; SwitchMenu(MenuType.None);
Ui.OpenWindow("MULTIPLAYER_PANEL", new WidgetArgs Ui.OpenWindow("MULTIPLAYER_PANEL", new WidgetArgs
{ {
{ "onStart", RemoveShellmapUI }, { "onStart", RemoveShellmapUI },
{ "onExit", () => menuType = MenuType.Main }, { "onExit", () => SwitchMenu(MenuType.Main) },
{ "directConnectHost", host }, { "directConnectHost", host },
{ "directConnectPort", port }, { "directConnectPort", port },
}); });
@@ -240,7 +248,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
Game.CreateLocalServer(map.Uid), Game.CreateLocalServer(map.Uid),
"", "",
() => { Game.LoadEditor(map.Uid); }, () => { Game.LoadEditor(map.Uid); },
() => { Game.CloseServer(); menuType = MenuType.MapEditor; }); () => { Game.CloseServer(); SwitchMenu(MenuType.MapEditor); });
} }
void SetNewsStatus(string message) void SetNewsStatus(string message)
@@ -343,10 +351,10 @@ namespace OpenRA.Mods.Common.Widgets.Logic
void OpenSkirmishLobbyPanel() void OpenSkirmishLobbyPanel()
{ {
menuType = MenuType.None; SwitchMenu(MenuType.None);
Game.OpenWindow("SERVER_LOBBY", new WidgetArgs Game.OpenWindow("SERVER_LOBBY", new WidgetArgs
{ {
{ "onExit", () => { Game.Disconnect(); menuType = MenuType.Singleplayer; } }, { "onExit", () => { Game.Disconnect(); SwitchMenu(MenuType.Singleplayer); } },
{ "onStart", RemoveShellmapUI }, { "onStart", RemoveShellmapUI },
{ "skirmishMode", true } { "skirmishMode", true }
}); });
@@ -362,7 +370,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
Game.CreateLocalServer(map), Game.CreateLocalServer(map),
"", "",
OpenSkirmishLobbyPanel, OpenSkirmishLobbyPanel,
() => { Game.CloseServer(); menuType = MenuType.Main; }); () => { Game.CloseServer(); SwitchMenu(MenuType.Main); });
} }
protected override void Dispose(bool disposing) protected override void Dispose(bool disposing)