Ingame settings menu
This commit is contained in:
@@ -119,6 +119,7 @@ namespace OpenRA
|
||||
rootWidget = WidgetLoader.LoadWidget( widgetYaml.FirstOrDefault() );
|
||||
rootWidget.Initialize();
|
||||
rootWidget.InitDelegates();
|
||||
Widget.WindowList.Push("MAINMENU_BG");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ namespace OpenRA.Graphics
|
||||
{
|
||||
if (!gameWasStarted)
|
||||
{
|
||||
Chrome.rootWidget.ShowMenu("INGAME_ROOT");
|
||||
Chrome.rootWidget.OpenWindow("INGAME_ROOT");
|
||||
gameWasStarted = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -26,11 +26,11 @@ namespace OpenRA.Widgets.Delegates
|
||||
{
|
||||
var r = Chrome.rootWidget;
|
||||
r.GetWidget("CONNECTION_BUTTON_ABORT").OnMouseUp = mi => {
|
||||
r.ShowMenu("MAINMENU_BG");
|
||||
r.CloseWindow();
|
||||
return true;
|
||||
};
|
||||
r.GetWidget("CONNECTION_BUTTON_CANCEL").OnMouseUp = mi => {
|
||||
r.ShowMenu("MAINMENU_BG");
|
||||
r.CloseWindow();
|
||||
return true;
|
||||
};
|
||||
r.GetWidget("CONNECTION_BUTTON_RETRY").OnMouseUp = mi => {
|
||||
|
||||
@@ -31,17 +31,17 @@ namespace OpenRA.Widgets.Delegates
|
||||
{
|
||||
var r = Chrome.rootWidget;
|
||||
r.GetWidget("MAINMENU_BUTTON_CREATE").OnMouseUp = mi => {
|
||||
r.ShowMenu("CREATESERVER_BG");
|
||||
r.OpenWindow("CREATESERVER_BG");
|
||||
return true;
|
||||
};
|
||||
|
||||
r.GetWidget("CREATESERVER_BUTTON_CANCEL").OnMouseUp = mi => {
|
||||
r.ShowMenu("MAINMENU_BG");
|
||||
r.CloseWindow();
|
||||
return true;
|
||||
};
|
||||
|
||||
r.GetWidget("CREATESERVER_BUTTON_START").OnMouseUp = mi => {
|
||||
r.ShowMenu(null);
|
||||
r.OpenWindow("SERVER_LOBBY");
|
||||
Log.Write("Creating server");
|
||||
|
||||
// TODO: Get this from a map chooser
|
||||
|
||||
@@ -43,7 +43,7 @@ namespace OpenRA.Widgets.Delegates
|
||||
};
|
||||
|
||||
optionsBG.GetWidget("BUTTON_SETTINGS").OnMouseUp = mi => {
|
||||
// Todo: Unfail ShowMenu to work with multiple root menus
|
||||
r.OpenWindow("SETTINGS_BG");
|
||||
return true;
|
||||
};
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ namespace OpenRA.Widgets.Delegates
|
||||
var r = Chrome.rootWidget;
|
||||
r.GetWidget("MAINMENU_BUTTON_JOIN").OnMouseUp =
|
||||
mi => {
|
||||
var bg = r.ShowMenu("JOINSERVER_BG");
|
||||
var bg = r.OpenWindow("JOINSERVER_BG");
|
||||
int height = 50;
|
||||
int width = 300;
|
||||
int i = 0;
|
||||
@@ -68,13 +68,13 @@ namespace OpenRA.Widgets.Delegates
|
||||
};
|
||||
|
||||
r.GetWidget("JOINSERVER_BUTTON_DIRECTCONNECT").OnMouseUp = mi => {
|
||||
r.GetWidget("JOINSERVER_BG").Visible = false;
|
||||
r.CloseWindow();
|
||||
Game.JoinServer(Game.Settings.NetworkHost, Game.Settings.NetworkPort);
|
||||
return true;
|
||||
};
|
||||
|
||||
r.GetWidget("JOINSERVER_BUTTON_CANCEL").OnMouseUp = mi => {
|
||||
r.ShowMenu("MAINMENU_BG");
|
||||
r.CloseWindow();
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -38,12 +38,12 @@ namespace OpenRA.Widgets.Delegates
|
||||
|
||||
// Menu Buttons
|
||||
r.GetWidget("MAINMENU_BUTTON_SETTINGS").OnMouseUp = mi => {
|
||||
r.ShowMenu("SETTINGS_BG");
|
||||
r.OpenWindow("SETTINGS_BG");
|
||||
return true;
|
||||
};
|
||||
|
||||
r.GetWidget("SETTINGS_BUTTON_OK").OnMouseUp = mi => {
|
||||
r.ShowMenu("MAINMENU_BG");
|
||||
r.CloseWindow();
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -44,6 +44,7 @@ namespace OpenRA.Widgets
|
||||
public Rectangle Bounds;
|
||||
public Widget Parent = null;
|
||||
static List<string> Delegates = new List<string>();
|
||||
public static Stack<string> WindowList = new Stack<string>();
|
||||
|
||||
// Common Funcs that most widgets will want
|
||||
public Func<MouseInput,bool> OnMouseDown = mi => {return false;};
|
||||
@@ -160,23 +161,26 @@ namespace OpenRA.Widgets
|
||||
return (T)GetWidget(id);
|
||||
}
|
||||
|
||||
public Widget GetCurrentMenu()
|
||||
public Widget GetWindow()
|
||||
{
|
||||
return Chrome.rootWidget.GetWidget(WindowList.Peek());
|
||||
// HACK HACK HACK (this method will vanish soon, so not going to hack the widget yaml itself)
|
||||
return Children.FirstOrDefault(c => c.Visible && c.Id != "MUSIC_BG" && c.Id != "PERF_BG");
|
||||
//return Children.FirstOrDefault(c => c.Visible && c.Id != "MUSIC_BG" && c.Id != "PERF_BG");
|
||||
}
|
||||
|
||||
public Widget ShowMenu(string menu)
|
||||
public void CloseWindow()
|
||||
{
|
||||
var m = GetCurrentMenu();
|
||||
if (m != null)
|
||||
m.Visible = false;
|
||||
Chrome.rootWidget.GetWidget(WindowList.Pop()).Visible = false;
|
||||
Chrome.rootWidget.GetWidget(WindowList.Peek()).Visible = true;
|
||||
}
|
||||
|
||||
var widget = GetWidget(menu);
|
||||
if (widget != null)
|
||||
widget.Visible = true;
|
||||
|
||||
return widget;
|
||||
public Widget OpenWindow(string id)
|
||||
{
|
||||
Chrome.rootWidget.GetWidget(WindowList.Peek()).Visible = false;
|
||||
WindowList.Push(id);
|
||||
var window = Chrome.rootWidget.GetWidget(id);
|
||||
window.Visible = true;
|
||||
return window;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -237,6 +237,8 @@ Container:
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Abort
|
||||
Container@SERVER_LOBBY:
|
||||
Id:SERVER_LOBBY
|
||||
Container@INGAME_ROOT:
|
||||
Id:INGAME_ROOT
|
||||
Delegate:IngameChromeDelegate
|
||||
|
||||
@@ -237,6 +237,8 @@ Container:
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Abort
|
||||
Container@SERVER_LOBBY:
|
||||
Id:SERVER_LOBBY
|
||||
Container@INGAME_ROOT:
|
||||
Id:INGAME_ROOT
|
||||
Delegate:IngameChromeDelegate
|
||||
|
||||
Reference in New Issue
Block a user