Merge pull request #10493 from pchote/fix-menu-hover
Update button mouseover when switching menus.
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user