Ingame settings menu

This commit is contained in:
Paul Chote
2010-04-11 18:01:20 +12:00
parent a89f576fb9
commit 98fce23100
10 changed files with 32 additions and 23 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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