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