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