Simply the common case for buttons.
This commit is contained in:
@@ -132,21 +132,12 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
CountryNames = Rules.Info["world"].Traits.WithInterface<OpenRA.Traits.CountryInfo>().ToDictionary(a => a.Race, a => a.Name);
|
||||
CountryNames.Add("random", "Random");
|
||||
|
||||
var mapButton = lobby.GetWidget("CHANGEMAP_BUTTON");
|
||||
mapButton.OnMouseUp = mi =>
|
||||
{
|
||||
Widget.OpenWindow( "MAP_CHOOSER", new Dictionary<string, object> { { "orderManager", orderManager }, { "mapName", MapUid } } );
|
||||
return true;
|
||||
};
|
||||
|
||||
var mapButton = lobby.GetWidget<CncMenuButtonWidget>("CHANGEMAP_BUTTON");
|
||||
mapButton.OnClick = () => Widget.OpenWindow( "MAP_CHOOSER", new Dictionary<string, object>{ { "orderManager", orderManager }, { "mapName", MapUid } } );
|
||||
mapButton.IsVisible = () => mapButton.Visible && Game.IsHost;
|
||||
|
||||
var disconnectButton = lobby.GetWidget("DISCONNECT_BUTTON");
|
||||
disconnectButton.OnMouseUp = mi =>
|
||||
{
|
||||
onExit();
|
||||
return true;
|
||||
};
|
||||
var disconnectButton = lobby.GetWidget<CncMenuButtonWidget>("DISCONNECT_BUTTON");
|
||||
disconnectButton.OnClick = onExit;
|
||||
|
||||
var lockTeamsCheckbox = lobby.GetWidget<CheckboxWidget>("LOCKTEAMS_CHECKBOX");
|
||||
lockTeamsCheckbox.IsChecked = () => orderManager.LobbyInfo.GlobalSettings.LockTeams;
|
||||
@@ -166,14 +157,13 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
"allowcheats {0}".F(!orderManager.LobbyInfo.GlobalSettings.AllowCheats)));
|
||||
};
|
||||
|
||||
var startGameButton = lobby.GetWidget("START_GAME_BUTTON");
|
||||
startGameButton.OnMouseUp = mi =>
|
||||
var startGameButton = lobby.GetWidget<CncMenuButtonWidget>("START_GAME_BUTTON");
|
||||
startGameButton.OnClick = () =>
|
||||
{
|
||||
mapButton.Visible = false;
|
||||
disconnectButton.Visible = false;
|
||||
lockTeamsCheckbox.Visible = false;
|
||||
orderManager.IssueOrder(Order.Command("startgame"));
|
||||
return true;
|
||||
};
|
||||
|
||||
// Todo: Only show if the map requirements are met for player slots
|
||||
|
||||
@@ -17,10 +17,20 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
{
|
||||
public class CncMenuButtonWidget : ButtonWidget
|
||||
{
|
||||
public CncMenuButtonWidget() : base() { }
|
||||
protected CncMenuButtonWidget(CncMenuButtonWidget widget) : base(widget) { }
|
||||
|
||||
public Func<bool> IsDisabled = () => false;
|
||||
public Action OnClick = () => {};
|
||||
|
||||
public CncMenuButtonWidget()
|
||||
: base()
|
||||
{
|
||||
OnMouseUp = mi => { OnClick(); return true; };
|
||||
}
|
||||
|
||||
protected CncMenuButtonWidget(CncMenuButtonWidget widget)
|
||||
: base(widget)
|
||||
{
|
||||
OnMouseUp = mi => { OnClick(); return true; };
|
||||
}
|
||||
|
||||
public override int2 ChildOrigin { get { return RenderOrigin; } }
|
||||
public override void DrawInner()
|
||||
|
||||
@@ -38,31 +38,30 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
var mainMenu = widget.GetWidget("MAIN_MENU");
|
||||
mainMenu.IsVisible = () => Menu == MenuType.Main;
|
||||
|
||||
mainMenu.GetWidget("SOLO_BUTTON").OnMouseUp = mi => { StartSkirmishGame(); return true; };
|
||||
mainMenu.GetWidget("MULTIPLAYER_BUTTON").OnMouseUp = mi => { Menu = MenuType.Multiplayer; return true; };
|
||||
mainMenu.GetWidget("SETTINGS_BUTTON").OnMouseUp = mi => { Menu = MenuType.Settings; return true; };
|
||||
mainMenu.GetWidget("QUIT_BUTTON").OnMouseUp = mi => { Game.Exit(); return true; };
|
||||
mainMenu.GetWidget<CncMenuButtonWidget>("SOLO_BUTTON").OnClick = StartSkirmishGame;
|
||||
mainMenu.GetWidget<CncMenuButtonWidget>("MULTIPLAYER_BUTTON").OnClick = () => Menu = MenuType.Multiplayer;
|
||||
mainMenu.GetWidget<CncMenuButtonWidget>("SETTINGS_BUTTON").OnClick = () => Menu = MenuType.Settings;
|
||||
mainMenu.GetWidget<CncMenuButtonWidget>("QUIT_BUTTON").OnClick = Game.Exit;
|
||||
|
||||
// Multiplayer menu
|
||||
var multiplayerMenu = widget.GetWidget("MULTIPLAYER_MENU");
|
||||
multiplayerMenu.IsVisible = () => Menu == MenuType.Multiplayer;
|
||||
|
||||
multiplayerMenu.GetWidget("BACK_BUTTON").OnMouseUp = mi => { Menu = MenuType.Main; return true; };
|
||||
multiplayerMenu.GetWidget("JOIN_BUTTON").OnMouseUp = mi =>
|
||||
multiplayerMenu.GetWidget<CncMenuButtonWidget>("BACK_BUTTON").OnClick = () => Menu = MenuType.Main;
|
||||
multiplayerMenu.GetWidget<CncMenuButtonWidget>("JOIN_BUTTON").OnClick = () =>
|
||||
{
|
||||
Menu = MenuType.None;
|
||||
Widget.OpenWindow("SERVERBROWSER_PANEL", new Dictionary<string, object>()
|
||||
{
|
||||
{"onExit", new Action(() => {Menu = MenuType.Multiplayer; Widget.CloseWindow();})}
|
||||
{"onExit", new Action(() => { Menu = MenuType.Multiplayer; Widget.CloseWindow(); })}
|
||||
});
|
||||
return true;
|
||||
};
|
||||
|
||||
// Settings menu
|
||||
var settingsMenu = widget.GetWidget("SETTINGS_MENU");
|
||||
settingsMenu.IsVisible = () => Menu == MenuType.Settings;
|
||||
|
||||
settingsMenu.GetWidget("BACK_BUTTON").OnMouseUp = mi => { Menu = MenuType.Main; return true; };
|
||||
settingsMenu.GetWidget<CncMenuButtonWidget>("BACK_BUTTON").OnClick = () => Menu = MenuType.Main;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -57,30 +57,27 @@ namespace OpenRA.Mods.Cnc.Widgets
|
||||
var sl = panel.GetWidget<ScrollPanelWidget>("SERVER_LIST");
|
||||
|
||||
// Menu buttons
|
||||
panel.GetWidget("REFRESH_BUTTON").OnMouseUp = mi =>
|
||||
panel.GetWidget<CncMenuButtonWidget>("REFRESH_BUTTON").OnClick = () =>
|
||||
{
|
||||
searchStatus = SearchStatus.Fetching;
|
||||
sl.RemoveChildren();
|
||||
currentServer = null;
|
||||
|
||||
MasterServerQuery.Refresh(Game.Settings.Server.MasterServer);
|
||||
|
||||
return true;
|
||||
};
|
||||
|
||||
var join = panel.GetWidget<CncMenuButtonWidget>("JOIN_BUTTON");
|
||||
join.IsDisabled = () => currentServer == null || !ServerBrowserDelegate.CanJoin(currentServer);
|
||||
join.OnMouseUp = mi =>
|
||||
join.OnClick = () =>
|
||||
{
|
||||
if (currentServer == null)
|
||||
return false;
|
||||
return;
|
||||
|
||||
Widget.CloseWindow();
|
||||
Game.JoinServer(currentServer.Address.Split(':')[0], int.Parse(currentServer.Address.Split(':')[1]));
|
||||
return true;
|
||||
};
|
||||
|
||||
panel.GetWidget("BACK_BUTTON").OnMouseUp = mi => { onExit(); return true; };
|
||||
panel.GetWidget<CncMenuButtonWidget>("BACK_BUTTON").OnClick = onExit;
|
||||
|
||||
// Server list
|
||||
serverTemplate = sl.GetWidget("SERVER_TEMPLATE");
|
||||
|
||||
Reference in New Issue
Block a user