create widgets on demand

This commit is contained in:
Bob
2010-09-21 00:01:44 +12:00
parent f4699132d6
commit 3165ec5359
19 changed files with 1808 additions and 1797 deletions

View File

@@ -279,6 +279,35 @@ namespace OpenRA
JoinLocal(); JoinLocal();
StartGame(modData.Manifest.ShellmapUid); StartGame(modData.Manifest.ShellmapUid);
Game.BeforeGameStart = () => Widget.OpenWindow("INGAME_ROOT");
Game.ConnectionStateChanged = () =>
{
Widget.CloseWindow();
switch( Game.orderManager.Connection.ConnectionState )
{
case ConnectionState.PreConnecting:
Widget.OpenWindow("MAINMENU_BG");
break;
case ConnectionState.Connecting:
Widget.OpenWindow("CONNECTING_BG");
break;
case ConnectionState.NotConnected:
Widget.OpenWindow("CONNECTION_FAILED_BG");
break;
case ConnectionState.Connected:
var lobby = Widget.OpenWindow("SERVER_LOBBY");
lobby.GetWidget<ChatDisplayWidget>("CHAT_DISPLAY").ClearChat();
lobby.GetWidget("CHANGEMAP_BUTTON").Visible = true;
lobby.GetWidget("LOCKTEAMS_CHECKBOX").Visible = true;
lobby.GetWidget("DISCONNECT_BUTTON").Visible = true;
//r.GetWidget("INGAME_ROOT").GetWidget<ChatDisplayWidget>("CHAT_DISPLAY").ClearChat();
break;
}
};
Widget.OpenWindow("MAINMENU_BG");
ResetTimer(); ResetTimer();
} }

View File

@@ -24,6 +24,7 @@ namespace OpenRA
public readonly SheetBuilder SheetBuilder; public readonly SheetBuilder SheetBuilder;
public readonly CursorSheetBuilder CursorSheetBuilder; public readonly CursorSheetBuilder CursorSheetBuilder;
public readonly Dictionary<string, MapStub> AvailableMaps; public readonly Dictionary<string, MapStub> AvailableMaps;
public readonly WidgetLoader WidgetLoader;
public ILoadScreen LoadScreen = null; public ILoadScreen LoadScreen = null;
public ModData( params string[] mods ) public ModData( params string[] mods )
@@ -39,6 +40,7 @@ namespace OpenRA
SheetBuilder = new SheetBuilder( TextureChannel.Red ); SheetBuilder = new SheetBuilder( TextureChannel.Red );
CursorSheetBuilder = new CursorSheetBuilder( this ); CursorSheetBuilder = new CursorSheetBuilder( this );
AvailableMaps = FindMaps( mods ); AvailableMaps = FindMaps( mods );
WidgetLoader = new WidgetLoader( this );
} }
// TODO: Do this nicer // TODO: Do this nicer

View File

@@ -14,56 +14,37 @@ namespace OpenRA.Widgets.Delegates
{ {
public class ConnectionDialogsDelegate : IWidgetDelegate public class ConnectionDialogsDelegate : IWidgetDelegate
{ {
public ConnectionDialogsDelegate() [ObjectCreator.UseCtor]
public ConnectionDialogsDelegate( [ObjectCreator.Param( "widget" )] Widget widget )
{ {
var r = Widget.RootWidget; widget.GetWidget("CONNECTION_BUTTON_ABORT").OnMouseUp = mi => {
r.GetWidget("CONNECTION_BUTTON_ABORT").OnMouseUp = mi => { widget.GetWidget("CONNECTION_BUTTON_ABORT").Parent.Visible = false;
r.GetWidget("CONNECTION_BUTTON_ABORT").Parent.Visible = false;
Game.Disconnect(); Game.Disconnect();
return true; return true;
}; };
r.GetWidget("CONNECTION_BUTTON_CANCEL").OnMouseUp = mi => {
r.GetWidget("CONNECTION_BUTTON_CANCEL").Parent.Visible = false; widget.GetWidget<LabelWidget>("CONNECTING_DESC").GetText = () =>
"Connecting to {0}:{1}...".F(Game.CurrentHost, Game.CurrentPort);
}
}
public class ConnectionFailedDelegate : IWidgetDelegate
{
[ObjectCreator.UseCtor]
public ConnectionFailedDelegate( [ObjectCreator.Param( "widget" )] Widget widget )
{
widget.GetWidget("CONNECTION_BUTTON_CANCEL").OnMouseUp = mi => {
widget.GetWidget("CONNECTION_BUTTON_CANCEL").Parent.Visible = false;
Game.Disconnect(); Game.Disconnect();
return true; return true;
}; };
r.GetWidget("CONNECTION_BUTTON_RETRY").OnMouseUp = mi => { widget.GetWidget("CONNECTION_BUTTON_RETRY").OnMouseUp = mi => {
Game.JoinServer(Game.CurrentHost, Game.CurrentPort); Game.JoinServer(Game.CurrentHost, Game.CurrentPort);
return true; return true;
}; };
r.GetWidget<LabelWidget>("CONNECTING_DESC").GetText = () => widget.GetWidget<LabelWidget>("CONNECTION_FAILED_DESC").GetText = () =>
"Connecting to {0}:{1}...".F(Game.CurrentHost, Game.CurrentPort);
r.GetWidget<LabelWidget>("CONNECTION_FAILED_DESC").GetText = () =>
"Could not connect to {0}:{1}".F(Game.CurrentHost, Game.CurrentPort); "Could not connect to {0}:{1}".F(Game.CurrentHost, Game.CurrentPort);
Game.ConnectionStateChanged += () =>
{
Widget.CloseWindow();
switch( Game.orderManager.Connection.ConnectionState )
{
case ConnectionState.PreConnecting:
Widget.OpenWindow("MAINMENU_BG");
break;
case ConnectionState.Connecting:
Widget.OpenWindow("CONNECTING_BG");
break;
case ConnectionState.NotConnected:
Widget.OpenWindow("CONNECTION_FAILED_BG");
break;
case ConnectionState.Connected:
Widget.OpenWindow("SERVER_LOBBY");
var lobby = r.GetWidget("SERVER_LOBBY");
lobby.GetWidget<ChatDisplayWidget>("CHAT_DISPLAY").ClearChat();
lobby.GetWidget("CHANGEMAP_BUTTON").Visible = true;
lobby.GetWidget("LOCKTEAMS_CHECKBOX").Visible = true;
lobby.GetWidget("DISCONNECT_BUTTON").Visible = true;
r.GetWidget("INGAME_ROOT").GetWidget<ChatDisplayWidget>("CHAT_DISPLAY").ClearChat();
break;
}
};
} }
} }
} }

View File

@@ -14,26 +14,18 @@ using System.Net;
namespace OpenRA.Widgets.Delegates namespace OpenRA.Widgets.Delegates
{ {
public class CreateServerMenuDelegate : IWidgetDelegate public class CreateServerMenuDelegate : IWidgetDelegate
{ {
public CreateServerMenuDelegate() [ObjectCreator.UseCtor]
public CreateServerMenuDelegate( [ObjectCreator.Param( "widget" )] Widget cs )
{ {
var settings = Game.Settings; var settings = Game.Settings;
var r = Widget.RootWidget;
var cs = r.GetWidget("CREATESERVER_BG");
r.GetWidget("MAINMENU_BUTTON_CREATE").OnMouseUp = mi => {
Widget.OpenWindow("CREATESERVER_BG");
return true;
};
cs.GetWidget("BUTTON_CANCEL").OnMouseUp = mi => { cs.GetWidget("BUTTON_CANCEL").OnMouseUp = mi => {
Widget.CloseWindow(); Widget.CloseWindow();
return true; return true;
}; };
cs.GetWidget("BUTTON_START").OnMouseUp = mi => { cs.GetWidget("BUTTON_START").OnMouseUp = mi => {
Widget.OpenWindow("SERVER_LOBBY");
var map = Game.modData.AvailableMaps.FirstOrDefault(m => m.Value.Selectable).Key; var map = Game.modData.AvailableMaps.FirstOrDefault(m => m.Value.Selectable).Key;
settings.Server.Name = cs.GetWidget<TextFieldWidget>("GAME_TITLE").Text; settings.Server.Name = cs.GetWidget<TextFieldWidget>("GAME_TITLE").Text;

View File

@@ -27,7 +27,8 @@ namespace OpenRA.Widgets.Delegates
public static Color CurrentColorPreview1; public static Color CurrentColorPreview1;
public static Color CurrentColorPreview2; public static Color CurrentColorPreview2;
public LobbyDelegate() [ObjectCreator.UseCtor]
public LobbyDelegate( [ObjectCreator.Param( "widget" )] Widget lobby )
{ {
Game.LobbyInfoChanged += UpdateCurrentMap; Game.LobbyInfoChanged += UpdateCurrentMap;
UpdateCurrentMap(); UpdateCurrentMap();
@@ -35,9 +36,7 @@ namespace OpenRA.Widgets.Delegates
CurrentColorPreview1 = Game.Settings.Player.Color1; CurrentColorPreview1 = Game.Settings.Player.Color1;
CurrentColorPreview2 = Game.Settings.Player.Color2; CurrentColorPreview2 = Game.Settings.Player.Color2;
var r = Widget.RootWidget; Players = lobby.GetWidget("PLAYERS");
var lobby = r.GetWidget("SERVER_LOBBY");
Players = Widget.RootWidget.GetWidget("SERVER_LOBBY").GetWidget("PLAYERS");
LocalPlayerTemplate = Players.GetWidget("TEMPLATE_LOCAL"); LocalPlayerTemplate = Players.GetWidget("TEMPLATE_LOCAL");
RemotePlayerTemplate = Players.GetWidget("TEMPLATE_REMOTE"); RemotePlayerTemplate = Players.GetWidget("TEMPLATE_REMOTE");
EmptySlotTemplate = Players.GetWidget("TEMPLATE_EMPTY"); EmptySlotTemplate = Players.GetWidget("TEMPLATE_EMPTY");
@@ -74,8 +73,7 @@ namespace OpenRA.Widgets.Delegates
var mapButton = lobby.GetWidget("CHANGEMAP_BUTTON"); var mapButton = lobby.GetWidget("CHANGEMAP_BUTTON");
mapButton.OnMouseUp = mi => mapButton.OnMouseUp = mi =>
{ {
r.GetWidget("MAP_CHOOSER").SpecialOneArg(MapUid); Widget.OpenWindow("MAP_CHOOSER").SpecialOneArg(MapUid); // WTF
Widget.OpenWindow("MAP_CHOOSER");
return true; return true;
}; };

View File

@@ -14,13 +14,17 @@ namespace OpenRA.Widgets.Delegates
{ {
public class MainMenuButtonsDelegate : IWidgetDelegate public class MainMenuButtonsDelegate : IWidgetDelegate
{ {
public MainMenuButtonsDelegate() [ObjectCreator.UseCtor]
public MainMenuButtonsDelegate( [ObjectCreator.Param( "widget" )] Widget widget )
{ {
// Main menu is the default window // Main menu is the default window
Widget.WindowList.Push("MAINMENU_BG"); widget.GetWidget( "MAINMENU_BUTTON_JOIN" ).OnMouseUp = mi => { Widget.OpenWindow( "JOINSERVER_BG" ); return true; };
Widget.RootWidget.GetWidget("MAINMENU_BUTTON_QUIT").OnMouseUp = mi => { Game.Exit(); return true; }; widget.GetWidget( "MAINMENU_BUTTON_CREATE" ).OnMouseUp = mi => { Widget.OpenWindow( "CREATESERVER_BG" ); return true; };
widget.GetWidget( "MAINMENU_BUTTON_SETTINGS" ).OnMouseUp = mi => { Widget.OpenWindow( "SETTINGS_MENU" ); return true; };
widget.GetWidget( "MAINMENU_BUTTON_MUSIC" ).OnMouseUp = mi => { Widget.OpenWindow( "MUSIC_MENU" ); return true; };
widget.GetWidget( "MAINMENU_BUTTON_QUIT" ).OnMouseUp = mi => { Game.Exit(); return true; };
var version = Widget.RootWidget.GetWidget("MAINMENU_BG").GetWidget<LabelWidget>("VERSION_STRING"); var version = widget.GetWidget<LabelWidget>("VERSION_STRING");
if (FileSystem.Exists("VERSION")) if (FileSystem.Exists("VERSION"))
{ {

View File

@@ -17,10 +17,10 @@ namespace OpenRA.Widgets.Delegates
public class MapChooserDelegate : IWidgetDelegate public class MapChooserDelegate : IWidgetDelegate
{ {
MapStub Map = null; MapStub Map = null;
public MapChooserDelegate()
[ObjectCreator.UseCtor]
public MapChooserDelegate( [ObjectCreator.Param( "widget" )] Widget bg )
{ {
var r = Widget.RootWidget;
var bg = r.GetWidget("MAP_CHOOSER");
bg.SpecialOneArg = (map) => RefreshMapList(map); bg.SpecialOneArg = (map) => RefreshMapList(map);
var ml = bg.GetWidget<ListBoxWidget>("MAP_LIST"); var ml = bg.GetWidget<ListBoxWidget>("MAP_LIST");

View File

@@ -27,12 +27,7 @@ namespace OpenRA.Widgets.Delegates
Widget.CloseWindow(); Widget.CloseWindow();
return true; return true;
}; };
Widget.RootWidget.GetWidget("MAINMENU_BUTTON_MUSIC").OnMouseUp = mi => {
Widget.OpenWindow("MUSIC_MENU");
return true;
};
bg.GetWidget("BUTTON_PLAY").OnMouseUp = mi => bg.GetWidget("BUTTON_PLAY").OnMouseUp = mi =>
{ {
if (CurrentSong == null) if (CurrentSong == null)

View File

@@ -23,28 +23,20 @@ namespace OpenRA.Widgets.Delegates
GameServer currentServer = null; GameServer currentServer = null;
Widget ServerTemplate; Widget ServerTemplate;
public ServerBrowserDelegate() [ObjectCreator.UseCtor]
public ServerBrowserDelegate( [ObjectCreator.Param( "widget" )] Widget widget )
{ {
var r = Widget.RootWidget; var bg = widget.GetWidget("JOINSERVER_BG");
var bg = r.GetWidget("JOINSERVER_BG");
var dc = r.GetWidget("DIRECTCONNECT_BG");
MasterServerQuery.OnComplete += games => RefreshServerList(games); MasterServerQuery.OnComplete += games => RefreshServerList(games);
r.GetWidget("MAINMENU_BUTTON_JOIN").OnMouseUp = mi => widget.GetWidget("JOINSERVER_PROGRESS_TITLE").Visible = true;
{ widget.GetWidget<LabelWidget>("JOINSERVER_PROGRESS_TITLE").Text = "Fetching game list...";
Widget.OpenWindow("JOINSERVER_BG");
r.GetWidget("JOINSERVER_PROGRESS_TITLE").Visible = true; bg.Children.RemoveAll(a => GameButtons.Contains(a));
r.GetWidget<LabelWidget>("JOINSERVER_PROGRESS_TITLE").Text = "Fetching game list..."; GameButtons.Clear();
bg.Children.RemoveAll(a => GameButtons.Contains(a)); MasterServerQuery.Refresh(Game.Settings.Server.MasterServer);
GameButtons.Clear();
MasterServerQuery.Refresh(Game.Settings.Server.MasterServer);
return true;
};
bg.GetWidget("SERVER_INFO").IsVisible = () => currentServer != null; bg.GetWidget("SERVER_INFO").IsVisible = () => currentServer != null;
var preview = bg.GetWidget<MapPreviewWidget>("MAP_PREVIEW"); var preview = bg.GetWidget<MapPreviewWidget>("MAP_PREVIEW");
@@ -70,8 +62,8 @@ namespace OpenRA.Widgets.Delegates
bg.GetWidget("REFRESH_BUTTON").OnMouseUp = mi => bg.GetWidget("REFRESH_BUTTON").OnMouseUp = mi =>
{ {
r.GetWidget("JOINSERVER_PROGRESS_TITLE").Visible = true; widget.GetWidget("JOINSERVER_PROGRESS_TITLE").Visible = true;
r.GetWidget<LabelWidget>("JOINSERVER_PROGRESS_TITLE").Text = "Fetching game list..."; widget.GetWidget<LabelWidget>("JOINSERVER_PROGRESS_TITLE").Text = "Fetching game list...";
bg.Children.RemoveAll(a => GameButtons.Contains(a)); bg.Children.RemoveAll(a => GameButtons.Contains(a));
GameButtons.Clear(); GameButtons.Clear();
@@ -90,8 +82,6 @@ namespace OpenRA.Widgets.Delegates
bg.GetWidget("DIRECTCONNECT_BUTTON").OnMouseUp = mi => bg.GetWidget("DIRECTCONNECT_BUTTON").OnMouseUp = mi =>
{ {
Widget.CloseWindow(); Widget.CloseWindow();
dc.GetWidget<TextFieldWidget>("SERVER_ADDRESS").Text = Game.Settings.Player.LastServer;
Widget.OpenWindow("DIRECTCONNECT_BG"); Widget.OpenWindow("DIRECTCONNECT_BG");
return true; return true;
}; };
@@ -123,29 +113,6 @@ namespace OpenRA.Widgets.Delegates
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; return true;
}; };
// Direct Connect
dc.GetWidget("JOIN_BUTTON").OnMouseUp = mi =>
{
var address = dc.GetWidget<TextFieldWidget>("SERVER_ADDRESS").Text;
var cpts = address.Split(':').ToArray();
if (cpts.Length != 2)
return true;
Game.Settings.Player.LastServer = address;
Game.Settings.Save();
Widget.CloseWindow();
Game.JoinServer(cpts[0], int.Parse(cpts[1]));
return true;
};
dc.GetWidget("CANCEL_BUTTON").OnMouseUp = mi =>
{
Widget.CloseWindow();
return r.GetWidget("MAINMENU_BUTTON_JOIN").OnMouseUp(mi);
};
} }
MapStub CurrentMap() MapStub CurrentMap()
@@ -205,4 +172,37 @@ namespace OpenRA.Widgets.Delegates
} }
} }
} }
public class DirectConnectDelegate : IWidgetDelegate
{
[ObjectCreator.UseCtor]
public DirectConnectDelegate( [ObjectCreator.Param( "widget" )] Widget widget )
{
var dc = widget.GetWidget("DIRECTCONNECT_BG");
dc.GetWidget<TextFieldWidget>("SERVER_ADDRESS").Text = Game.Settings.Player.LastServer;
dc.GetWidget("JOIN_BUTTON").OnMouseUp = mi =>
{
var address = dc.GetWidget<TextFieldWidget>("SERVER_ADDRESS").Text;
var cpts = address.Split(':').ToArray();
if (cpts.Length != 2)
return true;
Game.Settings.Player.LastServer = address;
Game.Settings.Save();
Widget.CloseWindow();
Game.JoinServer(cpts[0], int.Parse(cpts[1]));
return true;
};
dc.GetWidget("CANCEL_BUTTON").OnMouseUp = mi =>
{
Widget.CloseWindow();
return widget.GetWidget("MAINMENU_BUTTON_JOIN").OnMouseUp(mi);
};
}
}
} }

View File

@@ -153,14 +153,6 @@ namespace OpenRA.Widgets.Delegates
Widget.CloseWindow(); Widget.CloseWindow();
return true; return true;
}; };
// Menu Buttons
Widget.RootWidget.GetWidget("MAINMENU_BUTTON_SETTINGS").OnMouseUp = mi => {
Widget.OpenWindow("SETTINGS_MENU");
return true;
};
} }
string open = null; string open = null;

View File

@@ -26,6 +26,7 @@ namespace OpenRA.Widgets
public string Width = "0"; public string Width = "0";
public string Height = "0"; public string Height = "0";
public string Delegate = null; public string Delegate = null;
public string EventHandler = null;
public bool ClickThrough = true; public bool ClickThrough = true;
public bool Visible = true; public bool Visible = true;
public readonly List<Widget> Children = new List<Widget>(); public readonly List<Widget> Children = new List<Widget>();
@@ -35,7 +36,7 @@ namespace OpenRA.Widgets
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>(); public static Stack<Widget> WindowList = new Stack<Widget>();
// Common Funcs that most widgets will want // Common Funcs that most widgets will want
public Action<object> SpecialOneArg = (arg) => {}; public Action<object> SpecialOneArg = (arg) => {};
@@ -47,24 +48,13 @@ namespace OpenRA.Widgets
public Func<bool> IsVisible; public Func<bool> IsVisible;
public Widget() { IsVisible = () => Visible; } public Widget() { IsVisible = () => Visible; }
public static Widget RootWidget { public static Widget RootWidget
get {
{ get { return rootWidget; }
if (rootWidget == null) set { rootWidget = value; }
{
rootWidget = new ContainerWidget();
foreach( var file in Game.modData.Manifest.ChromeLayout.Select( a => MiniYaml.FromFile( a ) ) )
foreach( var w in file )
rootWidget.AddChild( WidgetLoader.LoadWidget( w ) );
rootWidget.Initialize();
rootWidget.InitDelegates();
}
return rootWidget;
}
} }
private static Widget rootWidget = null; private static Widget rootWidget = new ContainerWidget();
public Widget(Widget widget) public Widget(Widget widget)
{ {
@@ -132,14 +122,15 @@ namespace OpenRA.Widgets
Evaluator.Evaluate(Y, substitutions), Evaluator.Evaluate(Y, substitutions),
width, width,
height); height);
}
// Non-static func definitions public void PostInit()
{
if (Delegate != null && !Delegates.Contains(Delegate)) if( Delegate != null )
Delegates.Add(Delegate); {
var createDict = new Dictionary<string, object> { { "widget", this } };
foreach (var child in Children) Game.modData.ObjectCreator.CreateObject<IWidgetDelegate>( Delegate, createDict );
child.Initialize(); }
} }
public void InitDelegates() public void InitDelegates()
@@ -324,18 +315,17 @@ namespace OpenRA.Widgets
public static void CloseWindow() public static void CloseWindow()
{ {
RootWidget.GetWidget(WindowList.Pop()).Visible = false; RootWidget.Children.Remove( WindowList.Pop() );
if (WindowList.Count > 0) if( WindowList.Count > 0 )
RootWidget.GetWidget(WindowList.Peek()).Visible = true; rootWidget.Children.Add( WindowList.Peek() );
} }
public static Widget OpenWindow(string id) public static Widget OpenWindow(string id)
{ {
if (WindowList.Count > 0) var window = Game.modData.WidgetLoader.LoadWidget( rootWidget, id );
RootWidget.GetWidget(WindowList.Peek()).Visible = false; if( WindowList.Count > 0 )
WindowList.Push(id); rootWidget.Children.Remove( WindowList.Peek() );
var window = RootWidget.GetWidget(id); WindowList.Push( window );
window.Visible = true;
return window; return window;
} }

View File

@@ -8,29 +8,57 @@
*/ */
#endregion #endregion
using System.Linq;
using System.Collections.Generic; using System.Collections.Generic;
using OpenRA.FileFormats; using OpenRA.FileFormats;
using OpenRA.Widgets; using OpenRA.Widgets;
namespace OpenRA namespace OpenRA
{ {
class WidgetLoader public class WidgetLoader
{ {
public static Widget LoadWidget(MiniYamlNode node) // foreach( var file in Game.modData.Manifest.ChromeLayout.Select( a => MiniYaml.FromFile( a ) ) )
// foreach( var w in file )
// rootWidget.AddChild( WidgetLoader.LoadWidget( w ) );
// rootWidget.Initialize();
// rootWidget.InitDelegates();
Dictionary<string, MiniYamlNode> widgets = new Dictionary<string, MiniYamlNode>();
public WidgetLoader( ModData modData )
{
foreach( var file in modData.Manifest.ChromeLayout.Select( a => MiniYaml.FromFile( a ) ) )
foreach( var w in file )
widgets.Add( w.Key.Substring( w.Key.IndexOf( '@' ) + 1 ), w );
}
public Widget LoadWidget( Widget parent, string w )
{
return LoadWidget( parent, widgets[ w ] );
}
public Widget LoadWidget( Widget parent, MiniYamlNode node)
{ {
var widget = NewWidget(node.Key); var widget = NewWidget(node.Key);
parent.AddChild( widget );
foreach (var child in node.Value.Nodes)
if (child.Key != "Children")
FieldLoader.LoadField(widget, child.Key, child.Value.Value);
widget.Initialize();
foreach (var child in node.Value.Nodes) foreach (var child in node.Value.Nodes)
{
if (child.Key == "Children") if (child.Key == "Children")
foreach (var c in child.Value.Nodes) foreach (var c in child.Value.Nodes)
widget.AddChild(LoadWidget(c)); LoadWidget( widget, c);
else
FieldLoader.LoadField(widget, child.Key, child.Value.Value); widget.PostInit();
}
return widget; return widget;
} }
static Widget NewWidget(string widgetType) Widget NewWidget(string widgetType)
{ {
widgetType = widgetType.Split('@')[0]; widgetType = widgetType.Split('@')[0];
return Game.CreateObject<Widget>(widgetType + "Widget"); return Game.CreateObject<Widget>(widgetType + "Widget");

View File

@@ -21,9 +21,6 @@ namespace OpenRA.Mods.RA.Widgets.Delegates
var gameRoot = r.GetWidget("INGAME_ROOT"); var gameRoot = r.GetWidget("INGAME_ROOT");
var optionsBG = gameRoot.GetWidget("INGAME_OPTIONS_BG"); var optionsBG = gameRoot.GetWidget("INGAME_OPTIONS_BG");
Game.BeforeGameStart += () => Widget.OpenWindow("INGAME_ROOT");
Game.AfterGameStart += () => gameRoot.GetWidget<RadarBinWidget>("INGAME_RADAR_BIN").SetWorld(Game.world);
r.GetWidget("INGAME_OPTIONS_BUTTON").OnMouseUp = mi => { r.GetWidget("INGAME_OPTIONS_BUTTON").OnMouseUp = mi => {
optionsBG.Visible = !optionsBG.Visible; optionsBG.Visible = !optionsBG.Visible;
return true; return true;

View File

@@ -163,6 +163,9 @@ namespace OpenRA.Mods.RA.Widgets
int updateTicks = 0; int updateTicks = 0;
public override void Tick(World w) public override void Tick(World w)
{ {
if( world != w )
SetWorld( w );
var hasRadarNew = world.Queries.OwnedBy[world.LocalPlayer] var hasRadarNew = world.Queries.OwnedBy[world.LocalPlayer]
.WithTrait<ProvidesRadar>() .WithTrait<ProvidesRadar>()
.Any(a => a.Trait.IsActive); .Any(a => a.Trait.IsActive);

File diff suppressed because it is too large Load Diff

View File

@@ -1,286 +1,286 @@
Container@INGAME_ROOT: Container@INGAME_ROOT:
Id:INGAME_ROOT Id:INGAME_ROOT
Delegate:IngameChromeDelegate Delegate:IngameChromeDelegate
Visible:false Visible:true
Children: Children:
WorldInteractionController: WorldInteractionController:
X:0 X:0
Y:0 Y:0
Width:WINDOW_RIGHT Width:WINDOW_RIGHT
Height:WINDOW_BOTTOM Height:WINDOW_BOTTOM
ViewportScrollController: ViewportScrollController:
X:0 X:0
Y:0 Y:0
Width:WINDOW_RIGHT Width:WINDOW_RIGHT
Height:WINDOW_BOTTOM Height:WINDOW_BOTTOM
Timer@GAME_TIMER: Timer@GAME_TIMER:
Id:GAME_TIMER Id:GAME_TIMER
X: WINDOW_RIGHT/2 X: WINDOW_RIGHT/2
Y: 10 Y: 10
Background@POSTGAME_BG: Background@POSTGAME_BG:
Id:POSTGAME_BG Id:POSTGAME_BG
X:(WINDOW_RIGHT - WIDTH)/2 X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2 Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:400 Width:400
Height:100 Height:100
Background:dialog4 Background:dialog4
Visible:false Visible:false
Children: Children:
Label@TEXT: Label@TEXT:
Id:TEXT Id:TEXT
X:(PARENT_RIGHT - WIDTH)/2 X:(PARENT_RIGHT - WIDTH)/2
Y:(PARENT_BOTTOM - HEIGHT)/2 Y:(PARENT_BOTTOM - HEIGHT)/2
Width:200 Width:200
Height:40 Height:40
Align:Center Align:Center
Bold:True Bold:True
SpecialPowerBin@INGAME_POWERS_BIN: SpecialPowerBin@INGAME_POWERS_BIN:
Id:INGAME_POWERS_BIN Id:INGAME_POWERS_BIN
X:0 X:0
Y:25 Y:25
BuildPalette@INGAME_BUILD_PALETTE: BuildPalette@INGAME_BUILD_PALETTE:
Id:INGAME_BUILD_PALETTE Id:INGAME_BUILD_PALETTE
X:WINDOW_RIGHT - 250 X:WINDOW_RIGHT - 250
Y:280 Y:280
Width:250 Width:250
Height:500 Height:500
Button@INGAME_OPTIONS_BUTTON: Button@INGAME_OPTIONS_BUTTON:
Id:INGAME_OPTIONS_BUTTON Id:INGAME_OPTIONS_BUTTON
X:0 X:0
Y:0 Y:0
Width:160 Width:160
Height:25 Height:25
Text:Options Text:Options
Bold:True Bold:True
Button@INGAME_DIPLOMACY_BUTTON: Button@INGAME_DIPLOMACY_BUTTON:
Id:INGAME_DIPLOMACY_BUTTON Id:INGAME_DIPLOMACY_BUTTON
X:162 X:162
Y:0 Y:0
Width:160 Width:160
Height:25 Height:25
Text:Diplomacy Text:Diplomacy
Bold:True Bold:True
Button@INGAME_DEVELOPERMODE_BUTTON: Button@INGAME_DEVELOPERMODE_BUTTON:
Id:INGAME_DEVELOPERMODE_BUTTON Id:INGAME_DEVELOPERMODE_BUTTON
X:324 X:324
Y:0 Y:0
Width:160 Width:160
Height:25 Height:25
Text:Developer Mode Text:Developer Mode
Visible:false Visible:false
Bold:True Bold:True
RadarBin@INGAME_RADAR_BIN: RadarBin@INGAME_RADAR_BIN:
Id:INGAME_RADAR_BIN Id:INGAME_RADAR_BIN
PowerBin@INGAME_POWER_BIN: PowerBin@INGAME_POWER_BIN:
Id:INGAME_POWER_BIN Id:INGAME_POWER_BIN
MoneyBin@INGAME_MONEY_BIN: MoneyBin@INGAME_MONEY_BIN:
Id:INGAME_MONEY_BIN Id:INGAME_MONEY_BIN
X:WINDOW_RIGHT - WIDTH X:WINDOW_RIGHT - WIDTH
Y:0 Y:0
Width:320 Width:320
Height: 32 Height: 32
SplitOreAndCash:No SplitOreAndCash:No
Children: Children:
OrderButton@SELL: OrderButton@SELL:
Id:SELL Id:SELL
Delegate:OrderButtonsChromeDelegate Delegate:OrderButtonsChromeDelegate
X:3 X:3
Y:0 Y:0
Width:30 Width:30
Height:30 Height:30
Image:sell Image:sell
Description:Sell Description:Sell
LongDesc:Sell buildings, reclaiming a \nproportion of their build cost LongDesc:Sell buildings, reclaiming a \nproportion of their build cost
OrderButton@POWER_DOWN: OrderButton@POWER_DOWN:
Id:POWER_DOWN Id:POWER_DOWN
Delegate:OrderButtonsChromeDelegate Delegate:OrderButtonsChromeDelegate
X:39 X:39
Y:0 Y:0
Width:30 Width:30
Height:30 Height:30
Image:power Image:power
Description:Powerdown Description:Powerdown
LongDesc:Disable unneeded structures so their \npower can be used elsewhere LongDesc:Disable unneeded structures so their \npower can be used elsewhere
OrderButton@REPAIR: OrderButton@REPAIR:
Id:REPAIR Id:REPAIR
Delegate:OrderButtonsChromeDelegate Delegate:OrderButtonsChromeDelegate
X:75 X:75
Y:0 Y:0
Width:30 Width:30
Height:30 Height:30
Image:repair Image:repair
Description:Repair Description:Repair
LongDesc:Repair damaged buildings LongDesc:Repair damaged buildings
WorldTooltip: WorldTooltip:
Background@INGAME_OPTIONS_BG: Background@INGAME_OPTIONS_BG:
Id:INGAME_OPTIONS_BG Id:INGAME_OPTIONS_BG
X:(WINDOW_RIGHT - WIDTH)/2 X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2 Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:300 Width:300
Height:320 Height:320
Visible:false Visible:false
Children: Children:
Label@LABEL_TITLE: Label@LABEL_TITLE:
Id:LABEL_TITLE Id:LABEL_TITLE
X:(PARENT_RIGHT - WIDTH)/2 X:(PARENT_RIGHT - WIDTH)/2
Y:20 Y:20
Width:250 Width:250
Height:25 Height:25
Text:Options Text:Options
Align:Center Align:Center
Bold:True Bold:True
Button@RESUME: Button@RESUME:
Id:RESUME Id:RESUME
X:(PARENT_RIGHT - WIDTH)/2 X:(PARENT_RIGHT - WIDTH)/2
Y:60 Y:60
Width:160 Width:160
Height:25 Height:25
Text:Resume Text:Resume
Bold:True Bold:True
Button@SETTINGS: Button@SETTINGS:
Id:SETTINGS Id:SETTINGS
X:(PARENT_RIGHT - WIDTH)/2 X:(PARENT_RIGHT - WIDTH)/2
Y:100 Y:100
Width:160 Width:160
Height:25 Height:25
Text:Settings Text:Settings
Bold:True Bold:True
Button@MUSIC: Button@MUSIC:
Id:MUSIC Id:MUSIC
X:(PARENT_RIGHT - WIDTH)/2 X:(PARENT_RIGHT - WIDTH)/2
Y:140 Y:140
Width:160 Width:160
Height:25 Height:25
Text:Music Text:Music
Bold:True Bold:True
Button@SURRENDER: Button@SURRENDER:
Id:SURRENDER Id:SURRENDER
X:(PARENT_RIGHT - WIDTH)/2 X:(PARENT_RIGHT - WIDTH)/2
Y:180 Y:180
Width:160 Width:160
Height:25 Height:25
Text:Surrender Text:Surrender
Bold:True Bold:True
Button@DISCONNECT: Button@DISCONNECT:
Id:DISCONNECT Id:DISCONNECT
X:(PARENT_RIGHT - WIDTH)/2 X:(PARENT_RIGHT - WIDTH)/2
Y:220 Y:220
Width:160 Width:160
Height:25 Height:25
Text:Disconnect Text:Disconnect
Bold:True Bold:True
Button@QUIT: Button@QUIT:
Id:QUIT Id:QUIT
X:(PARENT_RIGHT - WIDTH)/2 X:(PARENT_RIGHT - WIDTH)/2
Y:260 Y:260
Width:160 Width:160
Height:25 Height:25
Text:Quit Text:Quit
Bold:True Bold:True
Background@DIPLOMACY_BG: Background@DIPLOMACY_BG:
Id:DIPLOMACY_BG Id:DIPLOMACY_BG
Delegate:DiplomacyDelegate Delegate:DiplomacyDelegate
X:(WINDOW_RIGHT - WIDTH)/2 X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2 Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:450 Width:450
Height:400 Height:400
Visible:false Visible:false
Children: Children:
Label@LABEL_TITLE: Label@LABEL_TITLE:
Id:LABEL_TITLE Id:LABEL_TITLE
X:(PARENT_RIGHT - WIDTH)/2 X:(PARENT_RIGHT - WIDTH)/2
Y:20 Y:20
Width:250 Width:250
Height:25 Height:25
Text:Diplomacy Text:Diplomacy
Align:Center Align:Center
Bold:True Bold:True
ChatDisplay@CHAT_DISPLAY: ChatDisplay@CHAT_DISPLAY:
Id:CHAT_DISPLAY Id:CHAT_DISPLAY
X:250 X:250
Y:WINDOW_BOTTOM - HEIGHT - 30 Y:WINDOW_BOTTOM - HEIGHT - 30
Width: 760 Width: 760
Height: 200 Height: 200
ClickThrough: True ClickThrough: True
DrawBackground: False DrawBackground: False
RemoveTime:250 RemoveTime:250
ChatEntry@CHAT_ENTRY: ChatEntry@CHAT_ENTRY:
Id:CHAT_ENTRY Id:CHAT_ENTRY
X:250 X:250
Y:WINDOW_BOTTOM - HEIGHT Y:WINDOW_BOTTOM - HEIGHT
Width: 760 Width: 760
Height: 30 Height: 30
ClickThrough: True ClickThrough: True
Background@DEVELOPERMODE_BG: Background@DEVELOPERMODE_BG:
Id:DEVELOPERMODE_BG Id:DEVELOPERMODE_BG
Delegate:DeveloperModeDelegate Delegate:DeveloperModeDelegate
X:(WINDOW_RIGHT - WIDTH)/2 X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2 Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:350 Width:350
Height:330 Height:330
Visible:false Visible:false
Children: Children:
Label@LABEL_TITLE: Label@LABEL_TITLE:
Id:LABEL_TITLE Id:LABEL_TITLE
X:(PARENT_RIGHT - WIDTH)/2 X:(PARENT_RIGHT - WIDTH)/2
Y:20 Y:20
Width:250 Width:250
Height:25 Height:25
Text:Developer Mode Text:Developer Mode
Align:Center Align:Center
Checkbox@CHECKBOX_SHROUD Checkbox@CHECKBOX_SHROUD
Id:CHECKBOX_SHROUD Id:CHECKBOX_SHROUD
X:30 X:30
Y:50 Y:50
Height:20 Height:20
Width:PARENT_RIGHT - 30 Width:PARENT_RIGHT - 30
Text:Disable Shroud Text:Disable Shroud
Checkbox@CHECKBOX_UNITDEBUG: Checkbox@CHECKBOX_UNITDEBUG:
Id:CHECKBOX_UNITDEBUG Id:CHECKBOX_UNITDEBUG
X:30 X:30
Y:80 Y:80
Width:PARENT_RIGHT - 30 Width:PARENT_RIGHT - 30
Height:20 Height:20
Text:Show Occupied Cells Text:Show Occupied Cells
Checkbox@CHECKBOX_PATHDEBUG: Checkbox@CHECKBOX_PATHDEBUG:
Id:CHECKBOX_PATHDEBUG Id:CHECKBOX_PATHDEBUG
X:30 X:30
Y:110 Y:110
Width:PARENT_RIGHT - 30 Width:PARENT_RIGHT - 30
Height:20 Height:20
Text:Show Unit Paths Text:Show Unit Paths
Button@GIVE_CASH Button@GIVE_CASH
Id:GIVE_CASH Id:GIVE_CASH
X:30 X:30
Y:140 Y:140
Width:200 Width:200
Height:20 Height:20
Text: Give Cash Text: Give Cash
Checkbox@INSTANT_BUILD Checkbox@INSTANT_BUILD
Id:INSTANT_BUILD Id:INSTANT_BUILD
X:30 X:30
Y:170 Y:170
Width:PARENT_RIGHT - 30 Width:PARENT_RIGHT - 30
Height:20 Height:20
Text:Instant Build Speed Text:Instant Build Speed
Checkbox@INSTANT_CHARGE Checkbox@INSTANT_CHARGE
Id:INSTANT_CHARGE Id:INSTANT_CHARGE
X:30 X:30
Y:200 Y:200
Width:PARENT_RIGHT - 30 Width:PARENT_RIGHT - 30
Height:20 Height:20
Text:Instant Charge Time (Special Powers) Text:Instant Charge Time (Special Powers)
Checkbox@ENABLE_TECH Checkbox@ENABLE_TECH
Id:ENABLE_TECH Id:ENABLE_TECH
X:30 X:30
Y:230 Y:230
Width:PARENT_RIGHT - 30 Width:PARENT_RIGHT - 30
Height:20 Height:20
Text:Build Everything Text:Build Everything
Button@GIVE_EXPLORATION Button@GIVE_EXPLORATION
Id:GIVE_EXPLORATION Id:GIVE_EXPLORATION
X:30 X:30
Y:260 Y:260
Width:200 Width:200
Height:20 Height:20
Text: Give Exploration Text: Give Exploration

View File

@@ -1,253 +1,253 @@
Background@MAINMENU_BG: Background@MAINMENU_BG:
Id:MAINMENU_BG Id:MAINMENU_BG
X:(WINDOW_RIGHT - WIDTH)/2 X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2 Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:250 Width:250
Height:290 Height:290
Delegate:MainMenuButtonsDelegate Delegate:MainMenuButtonsDelegate
Children: Children:
Label@MAINMENU_LABEL_TITLE: Label@MAINMENU_LABEL_TITLE:
Id:MAINMENU_LABEL_TITLE Id:MAINMENU_LABEL_TITLE
X:0 X:0
Y:20 Y:20
Width:250 Width:250
Height:25 Height:25
Text:OpenRA Main Menu Text:OpenRA Main Menu
Align:Center Align:Center
Bold:True Bold:True
Button@MAINMENU_BUTTON_JOIN: Button@MAINMENU_BUTTON_JOIN:
Id:MAINMENU_BUTTON_JOIN Id:MAINMENU_BUTTON_JOIN
X:45 X:45
Y:70 Y:70
Width:160 Width:160
Height:25 Height:25
Text:Join Game Text:Join Game
Bold:True Bold:True
Button@MAINMENU_BUTTON_CREATE: Button@MAINMENU_BUTTON_CREATE:
Id:MAINMENU_BUTTON_CREATE Id:MAINMENU_BUTTON_CREATE
X:45 X:45
Y:110 Y:110
Width:160 Width:160
Height:25 Height:25
Text:Create Game Text:Create Game
Bold:True Bold:True
Button@MAINMENU_BUTTON_SETTINGS: Button@MAINMENU_BUTTON_SETTINGS:
Id:MAINMENU_BUTTON_SETTINGS Id:MAINMENU_BUTTON_SETTINGS
X:45 X:45
Y:150 Y:150
Width:160 Width:160
Height:25 Height:25
Text:Settings Text:Settings
Bold:True Bold:True
Button@MAINMENU_BUTTON_MUSIC: Button@MAINMENU_BUTTON_MUSIC:
Id:MAINMENU_BUTTON_MUSIC Id:MAINMENU_BUTTON_MUSIC
X:45 X:45
Y:190 Y:190
Width:160 Width:160
Height:25 Height:25
Text:Music Text:Music
Bold:True Bold:True
Button@MAINMENU_BUTTON_QUIT: Button@MAINMENU_BUTTON_QUIT:
Id:MAINMENU_BUTTON_QUIT Id:MAINMENU_BUTTON_QUIT
X:45 X:45
Y:230 Y:230
Width:160 Width:160
Height:25 Height:25
Text:Quit Text:Quit
Bold:True Bold:True
Button@MAINMENU_BUTTON_VIDEOPLAYER: Button@MAINMENU_BUTTON_VIDEOPLAYER:
Id:MAINMENU_BUTTON_VIDEOPLAYER Id:MAINMENU_BUTTON_VIDEOPLAYER
Visible:false Visible:false
X:45 X:45
Y:260 Y:260
Width:160 Width:160
Height:25 Height:25
Text:Video Player Text:Video Player
Bold:True Bold:True
Label@VERSION_STRING: Label@VERSION_STRING:
Id:VERSION_STRING Id:VERSION_STRING
X:WINDOW_RIGHT - PARENT_LEFT - WIDTH - 15 X:WINDOW_RIGHT - PARENT_LEFT - WIDTH - 15
Y:WINDOW_BOTTOM - PARENT_TOP - 25 Y:WINDOW_BOTTOM - PARENT_TOP - 25
Width:400 Width:400
Height:35 Height:35
Text: Text:
Align:Right Align:Right
Bold:True Bold:True
Background@PERF_BG: Background@PERF_BG:
ClickThrough:true ClickThrough:true
Id:PERF_BG Id:PERF_BG
Background:dialog4 Background:dialog4
Delegate:PerfDebugDelegate Delegate:PerfDebugDelegate
X:10 X:10
Y:WINDOW_BOTTOM - 250 Y:WINDOW_BOTTOM - 250
Width: 210 Width: 210
Height: 250 Height: 250
Children: Children:
PerfGraph@GRAPH: PerfGraph@GRAPH:
Id:GRAPH Id:GRAPH
X:5 X:5
Y:5 Y:5
Width:200 Width:200
Height:200 Height:200
Label@TEXT: Label@TEXT:
Id:TEXT Id:TEXT
Bold: false Bold: false
X:20 X:20
Y:205 Y:205
Width:170 Width:170
Height:40 Height:40
Background@MUSIC_MENU: Background@MUSIC_MENU:
Id:MUSIC_MENU Id:MUSIC_MENU
Delegate:MusicPlayerDelegate Delegate:MusicPlayerDelegate
X:(WINDOW_RIGHT - WIDTH)/2 X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2 Y:(WINDOW_BOTTOM - HEIGHT)/2
Width: 450 Width: 450
Height: 250 Height: 250
Visible: false Visible: true
Children: Children:
Label@SETTINGS_LABEL_TITLE: Label@SETTINGS_LABEL_TITLE:
Id:SETTINGS_LABEL_TITLE Id:SETTINGS_LABEL_TITLE
X:0 X:0
Y:20 Y:20
Width:450 Width:450
Height:25 Height:25
Text:Music Text:Music
Align:Center Align:Center
Bold:True Bold:True
Button@BUTTON_CLOSE: Button@BUTTON_CLOSE:
Id:BUTTON_CLOSE Id:BUTTON_CLOSE
X:PARENT_RIGHT - 180 X:PARENT_RIGHT - 180
Y:PARENT_BOTTOM - 45 Y:PARENT_BOTTOM - 45
Width:160 Width:160
Height:25 Height:25
Text:Close Text:Close
Bold:True Bold:True
Container@BUTTONS: Container@BUTTONS:
X:PARENT_RIGHT - 150 X:PARENT_RIGHT - 150
Y:50 Y:50
Children: Children:
Button@BUTTON_PLAY: Button@BUTTON_PLAY:
Id:BUTTON_PLAY Id:BUTTON_PLAY
X:35 X:35
Y:0 Y:0
Width:25 Width:25
Height:25 Height:25
Children: Children:
Image@IMAGE_PLAY: Image@IMAGE_PLAY:
Id:IMAGE_PLAY Id:IMAGE_PLAY
X:0 X:0
Y:0 Y:0
Width:25 Width:25
Height:25 Height:25
ImageCollection:music ImageCollection:music
ImageName:play ImageName:play
Button@BUTTON_PAUSE: Button@BUTTON_PAUSE:
Id:BUTTON_PAUSE Id:BUTTON_PAUSE
Visible:false Visible:false
X:35 X:35
Y:0 Y:0
Width:25 Width:25
Height:25 Height:25
Children: Children:
Image@IMAGE_PAUSE: Image@IMAGE_PAUSE:
Id:IMAGE_PAUSE Id:IMAGE_PAUSE
X:0 X:0
Y:0 Y:0
Width:25 Width:25
Height:25 Height:25
ImageCollection:music ImageCollection:music
ImageName:pause ImageName:pause
Button@BUTTON_STOP: Button@BUTTON_STOP:
Id:BUTTON_STOP Id:BUTTON_STOP
X:70 X:70
Y:0 Y:0
Width:25 Width:25
Height:25 Height:25
Children: Children:
Image@IMAGE_STOP: Image@IMAGE_STOP:
Id:IMAGE_STOP Id:IMAGE_STOP
X:0 X:0
Y:0 Y:0
Width:25 Width:25
Height:25 Height:25
ImageCollection:music ImageCollection:music
ImageName:stop ImageName:stop
Button@BUTTON_NEXT: Button@BUTTON_NEXT:
Id:BUTTON_NEXT Id:BUTTON_NEXT
X:105 X:105
Y:0 Y:0
Width:25 Width:25
Height:25 Height:25
Children: Children:
Image@IMAGE_NEXT: Image@IMAGE_NEXT:
Id:IMAGE_NEXT Id:IMAGE_NEXT
X:0 X:0
Y:0 Y:0
Width:25 Width:25
Height:25 Height:25
ImageCollection:music ImageCollection:music
ImageName:next ImageName:next
Button@BUTTON_PREV: Button@BUTTON_PREV:
Id:BUTTON_PREV Id:BUTTON_PREV
X:0 X:0
Y:0 Y:0
Width:25 Width:25
Height:25 Height:25
Children: Children:
Image@IMAGE_PREV: Image@IMAGE_PREV:
Id:IMAGE_PREV Id:IMAGE_PREV
X:0 X:0
Y:0 Y:0
Width:25 Width:25
Height:25 Height:25
ImageCollection:music ImageCollection:music
ImageName:prev ImageName:prev
Label@TIME: Label@TIME:
Id:TIME Id:TIME
X:PARENT_RIGHT - 150 X:PARENT_RIGHT - 150
Y:75 Y:75
Width:140 Width:140
Height:25 Height:25
Align: Center Align: Center
ListBox@MUSIC_LIST: ListBox@MUSIC_LIST:
Id:MUSIC_LIST Id:MUSIC_LIST
X:10 X:10
Y:50 Y:50
Width:280 Width:280
Height:140 Height:140
Children: Children:
Label@MUSIC_TEMPLATE: Label@MUSIC_TEMPLATE:
Id:MUSIC_TEMPLATE Id:MUSIC_TEMPLATE
Width:PARENT_RIGHT-28 Width:PARENT_RIGHT-28
Height:25 Height:25
ClickThrough:false ClickThrough:false
X:2 X:2
Y:0 Y:0
Visible:false Visible:false
Children: Children:
Label@TITLE: Label@TITLE:
Id:TITLE Id:TITLE
X:5 X:5
Width:PARENT_RIGHT - 10 Width:PARENT_RIGHT - 10
Height:PARENT_BOTTOM Height:PARENT_BOTTOM
Align: Left Align: Left
Label@LENGTH: Label@LENGTH:
Id:LENGTH Id:LENGTH
X:5 X:5
Width:PARENT_RIGHT - 10 Width:PARENT_RIGHT - 10
Height:PARENT_BOTTOM Height:PARENT_BOTTOM
Align: Right Align: Right
Checkbox@SHUFFLE: Checkbox@SHUFFLE:
Id:SHUFFLE Id:SHUFFLE
X:PARENT_RIGHT - 150 X:PARENT_RIGHT - 150
Y:110 Y:110
Width:100 Width:100
Height:20 Height:20
Text:Shuffle Text:Shuffle
Checkbox@REPEAT: Checkbox@REPEAT:
Id:REPEAT Id:REPEAT
X:PARENT_RIGHT - 150 X:PARENT_RIGHT - 150
Y:140 Y:140
Width:100 Width:100
Height:20 Height:20
Text:Loop Text:Loop

View File

@@ -1,372 +1,372 @@
Background@CREATESERVER_BG: Background@CREATESERVER_BG:
Id:CREATESERVER_BG Id:CREATESERVER_BG
Delegate:CreateServerMenuDelegate Delegate:CreateServerMenuDelegate
X:(WINDOW_RIGHT - WIDTH)/2 X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2 Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:400 Width:400
Height:240 Height:240
Visible:false Visible:true
Children: Children:
Label@LABEL_TITLE: Label@LABEL_TITLE:
Id:LABEL_TITLE Id:LABEL_TITLE
X:0 X:0
Y:20 Y:20
Width:400 Width:400
Height:25 Height:25
Text:Create Server Text:Create Server
Align:Center Align:Center
Bold:True Bold:True
Label@GAME_TITLE_LABEL: Label@GAME_TITLE_LABEL:
Id:GAME_TITLE_LABEL Id:GAME_TITLE_LABEL
X:50 X:50
Y:59 Y:59
Width:95 Width:95
Height:25 Height:25
Align: Right Align: Right
Text:Game Title: Text:Game Title:
TextField@GAME_TITLE: TextField@GAME_TITLE:
Id:GAME_TITLE Id:GAME_TITLE
X:150 X:150
Y:60 Y:60
Width:210 Width:210
MaxLength:50 MaxLength:50
Height:25 Height:25
Text:OpenRA Game Text:OpenRA Game
Label@EXTERNAL_PORT_LABEL: Label@EXTERNAL_PORT_LABEL:
Id:EXTERNAL_PORT_LABEL Id:EXTERNAL_PORT_LABEL
X:50 X:50
Y:94 Y:94
Width:95 Width:95
Height:25 Height:25
Align: Right Align: Right
Text:External Port: Text:External Port:
TextField@EXTERNAL_PORT: TextField@EXTERNAL_PORT:
Id:EXTERNAL_PORT Id:EXTERNAL_PORT
X:150 X:150
Y:95 Y:95
Width:50 Width:50
MaxLength:5 MaxLength:5
Height:25 Height:25
Text:OpenRA Game Text:OpenRA Game
Label@LISTEN_PORT_LABEL: Label@LISTEN_PORT_LABEL:
Id:LISTEN_PORT_LABEL Id:LISTEN_PORT_LABEL
X:210 X:210
Y:94 Y:94
Width:95 Width:95
Height:25 Height:25
Align: Right Align: Right
Text:Listen Port: Text:Listen Port:
TextField@LISTEN_PORT: TextField@LISTEN_PORT:
Id:LISTEN_PORT Id:LISTEN_PORT
X:310 X:310
Y:95 Y:95
Width:50 Width:50
MaxLength:5 MaxLength:5
Height:25 Height:25
Checkbox@CHECKBOX_ONLINE: Checkbox@CHECKBOX_ONLINE:
Id:CHECKBOX_ONLINE Id:CHECKBOX_ONLINE
X:165 X:165
Y:130 Y:130
Width:300 Width:300
Height:20 Height:20
Text:Advertise game Online Text:Advertise game Online
Checkbox@CHECKBOX_CHEATS: Checkbox@CHECKBOX_CHEATS:
Id:CHECKBOX_CHEATS Id:CHECKBOX_CHEATS
X:165 X:165
Y:160 Y:160
Width:300 Width:300
Height:20 Height:20
Text:Allow Cheats Text:Allow Cheats
Button@BUTTON_START: Button@BUTTON_START:
Id:BUTTON_START Id:BUTTON_START
X:130 X:130
Y:PARENT_BOTTOM - 45 Y:PARENT_BOTTOM - 45
Width:120 Width:120
Height:25 Height:25
Text:Create Text:Create
Bold:True Bold:True
Button@BUTTON_CANCEL: Button@BUTTON_CANCEL:
Id:BUTTON_CANCEL Id:BUTTON_CANCEL
X:260 X:260
Y:PARENT_BOTTOM - 45 Y:PARENT_BOTTOM - 45
Width:120 Width:120
Height:25 Height:25
Text:Cancel Text:Cancel
Bold:True Bold:True
Background@JOINSERVER_BG: Background@JOINSERVER_BG:
Id:JOINSERVER_BG Id:JOINSERVER_BG
Delegate:ServerBrowserDelegate Delegate:ServerBrowserDelegate
X:(WINDOW_RIGHT - WIDTH)/2 X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2 Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:700 Width:700
Height:410 Height:410
Visible:false Visible:true
Children: Children:
Label@JOINSERVER_LABEL_TITLE: Label@JOINSERVER_LABEL_TITLE:
Id:JOINSERVER_LABEL_TITLE Id:JOINSERVER_LABEL_TITLE
X:0 X:0
Y:20 Y:20
Width:PARENT_RIGHT Width:PARENT_RIGHT
Height:25 Height:25
Text:Join Server Text:Join Server
Align:Center Align:Center
Bold:True Bold:True
ListBox@SERVER_LIST: ListBox@SERVER_LIST:
Id:SERVER_LIST Id:SERVER_LIST
X:20 X:20
Y:50 Y:50
Width:390 Width:390
Height:300 Height:300
Children: Children:
Label@SERVER_TEMPLATE: Label@SERVER_TEMPLATE:
Id:SERVER_TEMPLATE Id:SERVER_TEMPLATE
Width:PARENT_RIGHT-28 Width:PARENT_RIGHT-28
Height:25 Height:25
ClickThrough:false ClickThrough:false
X:2 X:2
Y:0 Y:0
Visible:false Visible:false
Label@JOINSERVER_PROGRESS_TITLE: Label@JOINSERVER_PROGRESS_TITLE:
Id:JOINSERVER_PROGRESS_TITLE Id:JOINSERVER_PROGRESS_TITLE
X:150 X:150
Y:PARENT_BOTTOM / 2 - HEIGHT Y:PARENT_BOTTOM / 2 - HEIGHT
Width:150 Width:150
Height:30 Height:30
Background:dialog4 Background:dialog4
Text:Fetching games... Text:Fetching games...
Align:Center Align:Center
Container@SERVER_INFO: Container@SERVER_INFO:
Id:SERVER_INFO Id:SERVER_INFO
X:0 X:0
Y:0 Y:0
Width:PARENT_RIGHT Width:PARENT_RIGHT
Height:PARENT_BOTTOM Height:PARENT_BOTTOM
Visible:false Visible:false
Children: Children:
Label@SERVER_IP_LABEL: Label@SERVER_IP_LABEL:
Id:SERVER_IP_LABEL Id:SERVER_IP_LABEL
X:PARENT_RIGHT - 200 - WIDTH X:PARENT_RIGHT - 200 - WIDTH
Y:50 Y:50
Align:Right Align:Right
Width:70 Width:70
Height:20 Height:20
Text:Server: Text:Server:
Bold:True Bold:True
Label@SERVER_IP: Label@SERVER_IP:
Id:SERVER_IP Id:SERVER_IP
X:PARENT_RIGHT - 195 X:PARENT_RIGHT - 195
Y:50 Y:50
Align:Left Align:Left
Width:70 Width:70
Height:20 Height:20
Label@SERVER_MODS_LABEL: Label@SERVER_MODS_LABEL:
Id:SERVER_MODS_LABEL Id:SERVER_MODS_LABEL
X:PARENT_RIGHT - 200 - WIDTH X:PARENT_RIGHT - 200 - WIDTH
Y:70 Y:70
Align:Right Align:Right
Width:70 Width:70
Height:20 Height:20
Text:Mods: Text:Mods:
Bold:True Bold:True
Label@SERVER_MODS: Label@SERVER_MODS:
Id:SERVER_MODS Id:SERVER_MODS
X:PARENT_RIGHT - 195 X:PARENT_RIGHT - 195
Y:70 Y:70
Align:Left Align:Left
Width:70 Width:70
Height:20 Height:20
Label@MAP_TITLE_LABEL: Label@MAP_TITLE_LABEL:
Id:MAP_TITLE_LABEL Id:MAP_TITLE_LABEL
X:PARENT_RIGHT - 200 - WIDTH X:PARENT_RIGHT - 200 - WIDTH
Y:90 Y:90
Align:Right Align:Right
Width:70 Width:70
Height:20 Height:20
Text:Map: Text:Map:
Bold:True Bold:True
Label@MAP_TITLE: Label@MAP_TITLE:
Id:MAP_TITLE Id:MAP_TITLE
X:PARENT_RIGHT - 195 X:PARENT_RIGHT - 195
Y:90 Y:90
Align:Left Align:Left
Width:70 Width:70
Height:20 Height:20
Label@MAP_PLAYERS_LABEL: Label@MAP_PLAYERS_LABEL:
Id:MAP_PLAYERS_LABEL Id:MAP_PLAYERS_LABEL
X:PARENT_RIGHT - 200 - WIDTH X:PARENT_RIGHT - 200 - WIDTH
Y:110 Y:110
Align:Right Align:Right
Width:70 Width:70
Height:20 Height:20
Text:Players: Text:Players:
Bold:True Bold:True
Label@MAP_PLAYERS: Label@MAP_PLAYERS:
Id:MAP_PLAYERS Id:MAP_PLAYERS
X:PARENT_RIGHT - 195 X:PARENT_RIGHT - 195
Y:110 Y:110
Align:Left Align:Left
Width:70 Width:70
Height:20 Height:20
MapPreview@MAP_PREVIEW: MapPreview@MAP_PREVIEW:
Id:MAP_PREVIEW Id:MAP_PREVIEW
X:PARENT_RIGHT-241 X:PARENT_RIGHT-241
Y:140 Y:140
Width:192 Width:192
Height:192 Height:192
Button@DIRECTCONNECT_BUTTON: Button@DIRECTCONNECT_BUTTON:
Id:DIRECTCONNECT_BUTTON Id:DIRECTCONNECT_BUTTON
X:20 X:20
Y:PARENT_BOTTOM - 45 Y:PARENT_BOTTOM - 45
Width:120 Width:120
Height:25 Height:25
Text:Direct Connect Text:Direct Connect
Bold:True Bold:True
Button@REFRESH_BUTTON: Button@REFRESH_BUTTON:
Id:REFRESH_BUTTON Id:REFRESH_BUTTON
X:160 X:160
Y:PARENT_BOTTOM - 45 Y:PARENT_BOTTOM - 45
Width:120 Width:120
Height:25 Height:25
Text:Refresh Text:Refresh
Bold:True Bold:True
Button@JOIN_BUTTON: Button@JOIN_BUTTON:
Id:JOIN_BUTTON Id:JOIN_BUTTON
X:PARENT_RIGHT - 140 - 130 X:PARENT_RIGHT - 140 - 130
Y:PARENT_BOTTOM - 45 Y:PARENT_BOTTOM - 45
Width:120 Width:120
Height:25 Height:25
Text:Join Text:Join
Bold:True Bold:True
Button@CANCEL_BUTTON: Button@CANCEL_BUTTON:
Id:CANCEL_BUTTON Id:CANCEL_BUTTON
X:PARENT_RIGHT - 140 X:PARENT_RIGHT - 140
Y:PARENT_BOTTOM - 45 Y:PARENT_BOTTOM - 45
Width:120 Width:120
Height:25 Height:25
Text:Cancel Text:Cancel
Bold:True Bold:True
Background@DIRECTCONNECT_BG: Background@DIRECTCONNECT_BG:
Id:DIRECTCONNECT_BG Id:DIRECTCONNECT_BG
Delegate:ServerBrowserDelegate Delegate:ServerBrowserDelegate
X:(WINDOW_RIGHT - WIDTH)/2 X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2 Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:400 Width:400
Height:155 Height:155
Visible:false Visible:true
Children: Children:
Label@DIRECTCONNECT_LABEL_TITLE: Label@DIRECTCONNECT_LABEL_TITLE:
Id:DIRECTCONNECT_LABEL_TITLE Id:DIRECTCONNECT_LABEL_TITLE
X:0 X:0
Y:20 Y:20
Width:400 Width:400
Height:25 Height:25
Text:Direct Connect Text:Direct Connect
Align:Center Align:Center
Bold:True Bold:True
Label@ADDRESS_LABEL: Label@ADDRESS_LABEL:
Id:ADDRESS_LABEL Id:ADDRESS_LABEL
X:50 X:50
Y:59 Y:59
Width:95 Width:95
Height:25 Height:25
Align:Right Align:Right
Text:Server Address: Text:Server Address:
TextField@SERVER_ADDRESS: TextField@SERVER_ADDRESS:
Id:SERVER_ADDRESS Id:SERVER_ADDRESS
X:150 X:150
Y:60 Y:60
Width:200 Width:200
MaxLength:50 MaxLength:50
Height:25 Height:25
Button@JOIN_BUTTON: Button@JOIN_BUTTON:
Id:JOIN_BUTTON Id:JOIN_BUTTON
X:130 X:130
Y:PARENT_BOTTOM - 45 Y:PARENT_BOTTOM - 45
Width:120 Width:120
Height:25 Height:25
Text:Join Text:Join
Bold:True Bold:True
Button@CANCEL_BUTTON: Button@CANCEL_BUTTON:
Id:CANCEL_BUTTON Id:CANCEL_BUTTON
X:260 X:260
Y:PARENT_BOTTOM - 45 Y:PARENT_BOTTOM - 45
Width:120 Width:120
Height:25 Height:25
Text:Cancel Text:Cancel
Bold:True Bold:True
Background@CONNECTION_FAILED_BG: Background@CONNECTION_FAILED_BG:
Id:CONNECTION_FAILED_BG Id:CONNECTION_FAILED_BG
Delegate:ConnectionDialogsDelegate Delegate:ConnectionFailedDelegate
X:(WINDOW_RIGHT - WIDTH)/2 X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2 Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:450 Width:450
Height:150 Height:150
Visible:false Visible:true
Children: Children:
Label@CONNECTION_FAILED_TITLE: Label@CONNECTION_FAILED_TITLE:
Id:CONNECTION_FAILED_TITLE Id:CONNECTION_FAILED_TITLE
X:0 X:0
Y:20 Y:20
Width:450 Width:450
Height:25 Height:25
Text:Connection Failed Text:Connection Failed
Align:Center Align:Center
Bold:True Bold:True
Label@CONNECTION_FAILED_DESC: Label@CONNECTION_FAILED_DESC:
Id:CONNECTION_FAILED_DESC Id:CONNECTION_FAILED_DESC
X:0 X:0
Y:60 Y:60
Width:PARENT_RIGHT Width:PARENT_RIGHT
Height:25 Height:25
Text:Could not connect to AAA.BBB.CCC.DDD:EEEE Text:Could not connect to AAA.BBB.CCC.DDD:EEEE
Align:Center Align:Center
Button@CONNECTION_BUTTON_RETRY: Button@CONNECTION_BUTTON_RETRY:
Id:CONNECTION_BUTTON_RETRY Id:CONNECTION_BUTTON_RETRY
X:PARENT_RIGHT - 360 X:PARENT_RIGHT - 360
Y:PARENT_BOTTOM - 45 Y:PARENT_BOTTOM - 45
Width:160 Width:160
Height:25 Height:25
Text:Retry Text:Retry
Bold:True Bold:True
Button@CONNECTION_BUTTON_CANCEL: Button@CONNECTION_BUTTON_CANCEL:
Id:CONNECTION_BUTTON_CANCEL Id:CONNECTION_BUTTON_CANCEL
X:PARENT_RIGHT - 180 X:PARENT_RIGHT - 180
Y:PARENT_BOTTOM - 45 Y:PARENT_BOTTOM - 45
Width:160 Width:160
Height:25 Height:25
Text:Cancel Text:Cancel
Bold:True Bold:True
Background@CONNECTING_BG: Background@CONNECTING_BG:
Id:CONNECTING_BG Id:CONNECTING_BG
Delegate:ConnectionDialogsDelegate Delegate:ConnectionDialogsDelegate
X:(WINDOW_RIGHT - WIDTH)/2 X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2 Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:450 Width:450
Height:150 Height:150
Visible:false Visible:true
Children: Children:
Label@CONNECTING_TITLE: Label@CONNECTING_TITLE:
Id:CONNECTING_TITLE Id:CONNECTING_TITLE
X:0 X:0
Y:20 Y:20
Width:450 Width:450
Height:25 Height:25
Text:Connecting Text:Connecting
Align:Center Align:Center
Bold:True Bold:True
Label@CONNECTING_DESC: Label@CONNECTING_DESC:
Id:CONNECTING_DESC Id:CONNECTING_DESC
X:0 X:0
Y:60 Y:60
Width:PARENT_RIGHT Width:PARENT_RIGHT
Height:25 Height:25
Text:Connecting to AAA.BBB.CCC.DDD:EEEE... Text:Connecting to AAA.BBB.CCC.DDD:EEEE...
Align:Center Align:Center
Button@CONNECTION_BUTTON_ABORT: Button@CONNECTION_BUTTON_ABORT:
Id:CONNECTION_BUTTON_ABORT Id:CONNECTION_BUTTON_ABORT
X:PARENT_RIGHT - 180 X:PARENT_RIGHT - 180
Y:PARENT_BOTTOM - 45 Y:PARENT_BOTTOM - 45
Width:160 Width:160
Height:25 Height:25
Text:Abort Text:Abort
Bold:True Bold:True

View File

@@ -1,207 +1,207 @@
Background@SETTINGS_MENU: Background@SETTINGS_MENU:
Id:SETTINGS_MENU Id:SETTINGS_MENU
Delegate:SettingsMenuDelegate Delegate:SettingsMenuDelegate
X:(WINDOW_RIGHT - WIDTH)/2 X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM- HEIGHT)/2 Y:(WINDOW_BOTTOM- HEIGHT)/2
Width: 450 Width: 450
Height: 350 Height: 350
Visible: false Visible: true
Children: Children:
Label@SETTINGS_LABEL_TITLE: Label@SETTINGS_LABEL_TITLE:
Id:SETTINGS_LABEL_TITLE Id:SETTINGS_LABEL_TITLE
X:0 X:0
Y:20 Y:20
Width:450 Width:450
Height:25 Height:25
Text:Settings Text:Settings
Align:Center Align:Center
Bold:True Bold:True
Button@BUTTON_CLOSE: Button@BUTTON_CLOSE:
Id:BUTTON_CLOSE Id:BUTTON_CLOSE
X:PARENT_RIGHT - 180 X:PARENT_RIGHT - 180
Y:PARENT_BOTTOM - 45 Y:PARENT_BOTTOM - 45
Width:160 Width:160
Height:25 Height:25
Text:Close Text:Close
Bold:True Bold:True
Container@TAB_CONTAINER: Container@TAB_CONTAINER:
Id:TAB_CONTAINER Id:TAB_CONTAINER
X:0 X:0
Y:50 Y:50
Width:PARENT_RIGHT Width:PARENT_RIGHT
Height:25 Height:25
Children: Children:
Button@GENERAL: Button@GENERAL:
Id:GENERAL Id:GENERAL
X:45 X:45
Y:0 Y:0
Width:90 Width:90
Height:25 Height:25
Text:General Text:General
Bold:True Bold:True
Button@AUDIO: Button@AUDIO:
Id:AUDIO Id:AUDIO
X:135 X:135
Y:0 Y:0
Width:90 Width:90
Height:25 Height:25
Text:Audio Text:Audio
Bold:True Bold:True
Button@DISPLAY: Button@DISPLAY:
Id:DISPLAY Id:DISPLAY
X:225 X:225
Y:0 Y:0
Width:90 Width:90
Height:25 Height:25
Text:Display Text:Display
Bold:True Bold:True
Button@DEBUG: Button@DEBUG:
Id:DEBUG Id:DEBUG
X:315 X:315
Y:0 Y:0
Width:90 Width:90
Height:25 Height:25
Text:Debug Text:Debug
Bold:True Bold:True
Container@GENERAL_PANE: Container@GENERAL_PANE:
Id:GENERAL_PANE Id:GENERAL_PANE
X:37 X:37
Y:100 Y:100
Width:PARENT_RIGHT - 37 Width:PARENT_RIGHT - 37
Height:PARENT_BOTTOM - 100 Height:PARENT_BOTTOM - 100
Visible: true Visible: true
Children: Children:
Label@SETTINGS_PLAYER_NAME: Label@SETTINGS_PLAYER_NAME:
Id:SETTINGS_PLAYER_NAME Id:SETTINGS_PLAYER_NAME
X:0 X:0
Y:10 Y:10
Text: Player Name: Text: Player Name:
TextField@NAME: TextField@NAME:
Id:NAME Id:NAME
Text:Name Text:Name
Width:139 Width:139
Height:25 Height:25
X:90 X:90
Y:0 Y:0
MaxLength:16 MaxLength:16
Checkbox@EDGE_SCROLL: Checkbox@EDGE_SCROLL:
Id:EDGE_SCROLL Id:EDGE_SCROLL
X:0 X:0
Y:30 Y:30
Width:200 Width:200
Height:20 Height:20
Text: Enable Edge Scrolling Text: Enable Edge Scrolling
Checkbox@INVERSE_SCROLL: Checkbox@INVERSE_SCROLL:
Id:INVERSE_SCROLL Id:INVERSE_SCROLL
X:0 X:0
Y:60 Y:60
Width:200 Width:200
Height:20 Height:20
Text: Invert Mouse Drag Scrolling Text: Invert Mouse Drag Scrolling
Container@AUDIO_PANE: Container@AUDIO_PANE:
Id:AUDIO_PANE Id:AUDIO_PANE
X:37 X:37
Y:100 Y:100
Width:PARENT_RIGHT - 37 Width:PARENT_RIGHT - 37
Height:PARENT_BOTTOM - 100 Height:PARENT_BOTTOM - 100
Visible: false Visible: false
Children: Children:
Label@SOUND_VOLUME_LABEL: Label@SOUND_VOLUME_LABEL:
Id:SOUND_VOLUME_LABEL Id:SOUND_VOLUME_LABEL
X:0 X:0
Y:10 Y:10
Text: Sound Volume Text: Sound Volume
Slider@SOUND_VOLUME: Slider@SOUND_VOLUME:
Id:SOUND_VOLUME Id:SOUND_VOLUME
X:100 X:100
Y:0 Y:0
Width:250 Width:250
Height:20 Height:20
Ticks:5 Ticks:5
Label@MUSIC_VOLUME_LABEL: Label@MUSIC_VOLUME_LABEL:
Id:MUSIC_VOLUME_LABEL Id:MUSIC_VOLUME_LABEL
X:0 X:0
Y:40 Y:40
Text: Music Volume Text: Music Volume
Slider@MUSIC_VOLUME: Slider@MUSIC_VOLUME:
Id:MUSIC_VOLUME Id:MUSIC_VOLUME
X:100 X:100
Y:30 Y:30
Width:250 Width:250
Height:20 Height:20
Ticks:5 Ticks:5
Container@DISPLAY_PANE: Container@DISPLAY_PANE:
Id:DISPLAY_PANE Id:DISPLAY_PANE
X:37 X:37
Y:100 Y:100
Width:PARENT_RIGHT - 37 Width:PARENT_RIGHT - 37
Height:PARENT_BOTTOM - 100 Height:PARENT_BOTTOM - 100
Visible: false Visible: false
Children: Children:
Checkbox@FULLSCREEN_CHECKBOX: Checkbox@FULLSCREEN_CHECKBOX:
Id:FULLSCREEN_CHECKBOX Id:FULLSCREEN_CHECKBOX
X:0 X:0
Y:0 Y:0
Width:300 Width:300
Height:20 Height:20
Text:Fullscreen Text:Fullscreen
Label@RESOLUTION_LABEL: Label@RESOLUTION_LABEL:
Id:RESOLUTION_LABEL Id:RESOLUTION_LABEL
X:0 X:0
Y:50 Y:50
Text: Window Resolution: Text: Window Resolution:
TextField@SCREEN_WIDTH: TextField@SCREEN_WIDTH:
Id:SCREEN_WIDTH Id:SCREEN_WIDTH
Text:Width Text:Width
Width:50 Width:50
Height:25 Height:25
X:130 X:130
Y:40 Y:40
MaxLength:5 MaxLength:5
Label@X: Label@X:
Id:X Id:X
Text:x Text:x
X:185 X:185
Y:50 Y:50
TextField@SCREEN_HEIGHT: TextField@SCREEN_HEIGHT:
Id:SCREEN_HEIGHT Id:SCREEN_HEIGHT
Text:Height Text:Height
Width:50 Width:50
Height:25 Height:25
X:195 X:195
Y:40 Y:40
MaxLength:5 MaxLength:5
Label@RESTART: Label@RESTART:
Id:RESTART Id:RESTART
Text: Restart Game To Apply Changes Text: Restart Game To Apply Changes
X:0 X:0
Y:PARENT_BOTTOM - 30 Y:PARENT_BOTTOM - 30
Container@DEBUG_PANE: Container@DEBUG_PANE:
Id:DEBUG_PANE Id:DEBUG_PANE
X:37 X:37
Y:100 Y:100
Width:PARENT_RIGHT - 37 Width:PARENT_RIGHT - 37
Height:PARENT_BOTTOM - 100 Height:PARENT_BOTTOM - 100
Visible: false Visible: false
Children: Children:
Checkbox@PERFDEBUG_CHECKBOX: Checkbox@PERFDEBUG_CHECKBOX:
Id:PERFDEBUG_CHECKBOX Id:PERFDEBUG_CHECKBOX
X:0 X:0
Y:0 Y:0
Width:300 Width:300
Height:20 Height:20
Text:Show Performance Information Text:Show Performance Information
Checkbox@SYNCREPORTS_CHECKBOX: Checkbox@SYNCREPORTS_CHECKBOX:
Id:SYNCREPORTS_CHECKBOX Id:SYNCREPORTS_CHECKBOX
X:0 X:0
Y:30 Y:30
Width:300 Width:300
Height:20 Height:20
Text:Collect Sync Reports Text:Collect Sync Reports
Checkbox@GAMETIME_CHECKBOX: Checkbox@GAMETIME_CHECKBOX:
Id:GAMETIME_CHECKBOX Id:GAMETIME_CHECKBOX
X:0 X:0
Y:60 Y:60
Width:300 Width:300
Height:20 Height:20
Text:Show Game Time Counter Text:Show Game Time Counter