Simply the common case for buttons.

This commit is contained in:
Paul Chote
2011-05-07 11:41:02 +12:00
parent b73575f37b
commit c15d2f5cfe
4 changed files with 31 additions and 35 deletions

View File

@@ -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

View File

@@ -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()

View File

@@ -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(); })}
});
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;
}

View File

@@ -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");