Restore separated server creation dialog.

This also adds details about advertising and configuration.
This commit is contained in:
Paul Chote
2017-12-22 13:59:18 +00:00
committed by abcdefg30
parent 5256fb7bbd
commit 959804b167
7 changed files with 633 additions and 272 deletions

View File

@@ -26,9 +26,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{
static readonly Action DoNothing = () => { };
enum PanelType { Browser, CreateServer }
PanelType panel = PanelType.Browser;
readonly Color incompatibleVersionColor;
readonly Color incompatibleProtectedGameColor;
readonly Color protectedGameColor;
@@ -85,19 +82,14 @@ namespace OpenRA.Mods.Common.Widgets.Logic
incompatibleGameStartedColor = ChromeMetrics.Get<Color>("IncompatibleGameStartedColor");
LoadBrowserPanel(widget);
LoadCreateServerPanel(widget);
// Filter and refresh buttons act on the browser panel,
// but remain visible (disabled) on the other panels
var refreshButton = widget.Get<ButtonWidget>("REFRESH_BUTTON");
refreshButton.IsDisabled = () => searchStatus == SearchStatus.Fetching || panel != PanelType.Browser;
refreshButton.IsDisabled = () => searchStatus == SearchStatus.Fetching;
var filtersButton = widget.Get<DropDownButtonWidget>("FILTERS_DROPDOWNBUTTON");
filtersButton.IsDisabled = () => searchStatus == SearchStatus.Fetching || panel != PanelType.Browser;
var browserTab = widget.Get<ButtonWidget>("BROWSER_TAB");
browserTab.IsHighlighted = () => panel == PanelType.Browser;
browserTab.OnClick = () => panel = PanelType.Browser;
filtersButton.IsDisabled = () => searchStatus == SearchStatus.Fetching;
var directConnectButton = widget.Get<ButtonWidget>("DIRECTCONNECT_BUTTON");
directConnectButton.OnClick = () =>
@@ -111,9 +103,15 @@ namespace OpenRA.Mods.Common.Widgets.Logic
});
};
var createServerTab = widget.Get<ButtonWidget>("CREATE_TAB");
createServerTab.IsHighlighted = () => panel == PanelType.CreateServer;
createServerTab.OnClick = () => panel = PanelType.CreateServer;
var createServerButton = widget.Get<ButtonWidget>("CREATE_BUTTON");
createServerButton.OnClick = () =>
{
Ui.OpenWindow("MULTIPLAYER_CREATESERVER_PANEL", new WidgetArgs
{
{ "openLobby", OpenLobby },
{ "onExit", DoNothing }
});
};
widget.Get<ButtonWidget>("BACK_BUTTON").OnClick = () => { Ui.CloseWindow(); onExit(); };
@@ -154,7 +152,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic
void LoadBrowserPanel(Widget widget)
{
var browserPanel = Game.LoadWidget(null, "MULTIPLAYER_BROWSER_PANEL", widget.Get("TOP_PANELS_ROOT"), new WidgetArgs());
browserPanel.IsVisible = () => panel == PanelType.Browser;
serverList = browserPanel.Get<ScrollPanelWidget>("SERVER_LIST");
headerTemplate = serverList.Get<ScrollItemWidget>("HEADER_TEMPLATE");
@@ -275,18 +272,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic
}
}
void LoadCreateServerPanel(Widget widget)
{
var createServerPanel = Game.LoadWidget(null, "MULTIPLAYER_CREATESERVER_PANEL",
widget.Get("TOP_PANELS_ROOT"), new WidgetArgs
{
{ "openLobby", OpenLobby },
{ "onExit", DoNothing }
});
createServerPanel.IsVisible = () => panel == PanelType.CreateServer;
}
string PlayersLabel(GameServer game)
{
return "{0}{1}{2}".F(
@@ -553,15 +538,6 @@ namespace OpenRA.Mods.Common.Widgets.Logic
});
}
void OpenCreateServerPanel()
{
Ui.OpenWindow("CREATESERVER_PANEL", new WidgetArgs
{
{ "openLobby", OpenLobby },
{ "onExit", DoNothing }
});
}
void Join(GameServer server)
{
if (server == null || !server.IsJoinable)

View File

@@ -10,16 +10,20 @@
#endregion
using System;
using System.Drawing;
using System.Linq;
using System.Net;
using OpenRA.Network;
using OpenRA.Widgets;
namespace OpenRA.Mods.Common.Widgets.Logic
{
public class ServerCreationLogic : ChromeLogic
{
Widget panel;
Action onCreate;
Action onExit;
readonly Widget panel;
readonly LabelWidget noticesLabelA, noticesLabelB, noticesLabelC;
readonly Action onCreate;
readonly Action onExit;
MapPreview preview = MapCache.UnknownMap;
bool advertiseOnline;
@@ -33,6 +37,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var settings = Game.Settings;
preview = modData.MapCache[modData.MapCache.ChooseInitialMap(Game.Settings.Server.Map, Game.CosmeticRandom)];
panel.Get<ButtonWidget>("BACK_BUTTON").OnClick = () => { Ui.CloseWindow(); onExit(); };
panel.Get<ButtonWidget>("CREATE_BUTTON").OnClick = CreateAndJoin;
var mapButton = panel.GetOrNull<ButtonWidget>("MAP_BUTTON");
@@ -53,12 +58,29 @@ namespace OpenRA.Mods.Common.Widgets.Logic
panel.Get<MapPreviewWidget>("MAP_PREVIEW").Preview = () => preview;
var mapTitle = panel.Get<LabelWidget>("MAP_NAME");
if (mapTitle != null)
var titleLabel = panel.GetOrNull<LabelWithTooltipWidget>("MAP_TITLE");
if (titleLabel != null)
{
var font = Game.Renderer.Fonts[mapTitle.Font];
var title = new CachedTransform<MapPreview, string>(m => WidgetUtils.TruncateText(m.Title, mapTitle.Bounds.Width, font));
mapTitle.GetText = () => title.Update(preview);
var font = Game.Renderer.Fonts[titleLabel.Font];
var title = new CachedTransform<MapPreview, string>(m => WidgetUtils.TruncateText(m.Title, titleLabel.Bounds.Width, font));
titleLabel.GetText = () => title.Update(preview);
titleLabel.GetTooltipText = () => preview.Title;
}
var typeLabel = panel.GetOrNull<LabelWidget>("MAP_TYPE");
if (typeLabel != null)
{
var type = new CachedTransform<MapPreview, string>(m => m.Categories.FirstOrDefault() ?? "");
typeLabel.GetText = () => type.Update(preview);
}
var authorLabel = panel.GetOrNull<LabelWidget>("MAP_AUTHOR");
if (authorLabel != null)
{
var font = Game.Renderer.Fonts[authorLabel.Font];
var author = new CachedTransform<MapPreview, string>(
m => WidgetUtils.TruncateText("Created by {0}".F(m.Author), authorLabel.Bounds.Width, font));
authorLabel.GetText = () => author.Update(preview);
}
}
@@ -81,11 +103,80 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var advertiseCheckbox = panel.Get<CheckboxWidget>("ADVERTISE_CHECKBOX");
advertiseCheckbox.IsChecked = () => advertiseOnline;
advertiseCheckbox.OnClick = () => advertiseOnline ^= true;
advertiseCheckbox.OnClick = () =>
{
advertiseOnline ^= true;
BuildNotices();
};
var passwordField = panel.GetOrNull<PasswordFieldWidget>("PASSWORD");
if (passwordField != null)
passwordField.Text = Game.Settings.Server.Password;
noticesLabelA = panel.GetOrNull<LabelWidget>("NOTICES_HEADER_A");
noticesLabelB = panel.GetOrNull<LabelWidget>("NOTICES_HEADER_B");
noticesLabelC = panel.GetOrNull<LabelWidget>("NOTICES_HEADER_C");
var noticesNoUPnP = panel.GetOrNull("NOTICES_NO_UPNP");
if (noticesNoUPnP != null)
{
noticesNoUPnP.IsVisible = () => advertiseOnline &&
(UPnP.Status == UPnPStatus.NotSupported || UPnP.Status == UPnPStatus.Disabled);
var settingsA = noticesNoUPnP.GetOrNull("SETTINGS_A");
if (settingsA != null)
settingsA.IsVisible = () => UPnP.Status == UPnPStatus.Disabled;
var settingsB = noticesNoUPnP.GetOrNull("SETTINGS_B");
if (settingsB != null)
settingsB.IsVisible = () => UPnP.Status == UPnPStatus.Disabled;
}
var noticesUPnP = panel.GetOrNull("NOTICES_UPNP");
if (noticesUPnP != null)
noticesUPnP.IsVisible = () => advertiseOnline && UPnP.Status == UPnPStatus.Enabled;
var noticesLAN = panel.GetOrNull("NOTICES_LAN");
if (noticesLAN != null)
noticesLAN.IsVisible = () => !advertiseOnline;
BuildNotices();
}
void BuildNotices()
{
if (noticesLabelA == null || noticesLabelB == null || noticesLabelC == null)
return;
if (advertiseOnline)
{
noticesLabelA.Text = "Internet Server (UPnP ";
var aWidth = Game.Renderer.Fonts[noticesLabelA.Font].Measure(noticesLabelA.Text).X;
noticesLabelA.Bounds.Width = aWidth;
var status = UPnP.Status;
noticesLabelB.Text = status == UPnPStatus.Enabled ? "Enabled" :
status == UPnPStatus.NotSupported ? "Not Supported" : "Disabled";
noticesLabelB.TextColor = status == UPnPStatus.Enabled ? ChromeMetrics.Get<Color>("UPnPEnabledColor") :
status == UPnPStatus.NotSupported ? ChromeMetrics.Get<Color>("UPnPNotSupportedColor") :
ChromeMetrics.Get<Color>("UPnPDisabledColor");
var bWidth = Game.Renderer.Fonts[noticesLabelB.Font].Measure(noticesLabelB.Text).X;
noticesLabelB.Bounds.X = noticesLabelA.Bounds.Right;
noticesLabelB.Bounds.Width = bWidth;
noticesLabelB.Visible = true;
noticesLabelC.Text = "):";
noticesLabelC.Bounds.X = noticesLabelB.Bounds.Right;
noticesLabelC.Visible = true;
}
else
{
noticesLabelA.Text = "Local Server:";
noticesLabelB.Visible = false;
noticesLabelC.Visible = false;
}
}
void CreateAndJoin()
@@ -131,6 +222,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
return;
}
Ui.CloseWindow();
ConnectionLogic.Connect(IPAddress.Loopback.ToString(), Game.Settings.Server.ListenPort, password, onCreate, onExit);
}
}

View File

@@ -1,98 +1,226 @@
Container@MULTIPLAYER_CREATESERVER_PANEL:
Logic: ServerCreationLogic
Width: PARENT_RIGHT
Height: PARENT_BOTTOM
X: (WINDOW_RIGHT - WIDTH) / 2
Y: (WINDOW_BOTTOM - HEIGHT - 15) / 2
Width: 530
Height: 314
Children:
Label@TITLE:
Y: 5
Width: 582
Height: 25
Text: Create Server
Width: PARENT_RIGHT
Y: 0-25
Font: BigBold
Contrast: true
Align: Center
Font: Bold
ScrollPanel:
Y: 30
Width: 582
Height: 249
Text: Create Server
Background@bg:
Width: PARENT_RIGHT
Height: PARENT_BOTTOM - 35
Background: panel-black
Children:
Container:
X: 185
Y: 25
Children:
Label@SERVER_NAME_LABEL:
Y: 14
Width: 95
Height: 25
Align: Right
Text: Server Name:
TextField@SERVER_NAME:
X: 100
Y: 15
Width: 215
MaxLength: 50
Height: 25
Text: My OpenRA Server
Label@PASSWORD_LABEL:
Y: 49
Width: 95
Height: 25
Align: Right
Text: Password:
PasswordField@PASSWORD:
X: 100
Y: 50
Width: 145
MaxLength: 20
Height: 25
Label@AFTER_PASSWORD_LABEL:
X: 255
Y: 49
Width: 95
Height: 25
Align: Left
Text: (optional)
Label@LISTEN_PORT_LABEL:
Y: 84
Width: 95
Height: 25
Align: Right
Text: Port:
TextField@LISTEN_PORT:
X: 100
Y: 85
Width: 50
Height: 25
MaxLength: 5
Text: 1234
Label@EXTERNAL_PORT_LABEL:
X: 170
Y: 84
Width: 90
Height: 25
Align: Right
Text: External Port:
TextField@EXTERNAL_PORT:
X: 265
Y: 85
Width: 50
MaxLength: 5
Height: 25
Text: 1234
Checkbox@ADVERTISE_CHECKBOX:
X: 100
Y: 135
Width: 150
Height: 20
Font: Regular
Text: Advertise Online
Container@SIDEBAR:
X: PARENT_RIGHT - WIDTH
Y: 30
Width: 174
Height: 280
Children:
Background@MAP_BG:
Label@SERVER_NAME_LABEL:
Y: 14
Width: 105
Height: 25
Align: Right
Text: Server Name:
TextField@SERVER_NAME:
X: 110
Y: 15
Width: 215
MaxLength: 50
Height: 25
Text: My OpenRA Server
Label@PASSWORD_LABEL:
Y: 49
Width: 105
Height: 25
Align: Right
Text: Password:
PasswordField@PASSWORD:
X: 110
Y: 50
Width: 145
MaxLength: 20
Height: 25
Label@AFTER_PASSWORD_LABEL:
X: 265
Y: 49
Width: 105
Height: 25
Align: Left
Text: (optional)
Label@LISTEN_PORT_LABEL:
Y: 84
Width: 105
Height: 25
Align: Right
Text: Port:
TextField@LISTEN_PORT:
X: 110
Y: 85
Width: 50
Height: 25
MaxLength: 5
Text: 1234
Checkbox@ADVERTISE_CHECKBOX:
X: 15
Y: 121
Width: 150
Height: 20
Font: Regular
Text: Advertise Online
Label@EXTERNAL_PORT_LABEL:
X: 180
Y: 119
Width: 90
Height: 25
Align: Right
Text: External Port:
TextField@EXTERNAL_PORT:
X: 275
Y: 120
Width: 50
MaxLength: 5
Height: 25
Text: 1234
Label@NOTICES_HEADER_A:
X: 15
Y: 165
Height: 25
Align: Left
Font: Bold
Label@NOTICES_HEADER_B:
X: 15
Y: 165
Height: 25
Align: Left
Font: Bold
Label@NOTICES_HEADER_C:
X: 15
Y: 165
Height: 25
Align: Left
Font: Bold
Container@NOTICES_LAN:
X: 20
Y: 185
Width: PARENT_RIGHT
Height: PARENT_BOTTOM
Children:
Label@ADVERTISING:
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - Game will be advertised to the Local Area Network only.
Label@FIREWALL:
Y: 12
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - You must manually configure your firewall to allow connections.
Label@PORTFORWARD_A:
Y: 24
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - Players can connect using Direct IP from the Internet if you
Label@PORTFORWARD_B:
X: 7
Y: 36
Width: 295
Height: 25
Font: Tiny
Align: Left
Text: manually configure port forwarding on your router.
Container@NOTICES_NO_UPNP:
X: 20
Y: 185
Width: PARENT_RIGHT
Height: PARENT_BOTTOM
Children:
Label@ADVERTISING:
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - Game will be advertised to the Local Area Network and Internet.
Label@FIREWALL:
Y: 12
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - You must manually configure your firewall to allow connections.
Label@PORTFORWARD_A:
Y: 24
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - You must manually configure your router to allow and forward
Label@PORTFORWARD_B:
X: 7
Y: 36
Width: 295
Height: 25
Font: Tiny
Align: Left
Text: connections from the External Port to your local IP and Port.
Label@SETTINGS_A:
Y: 48
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - You can enable UPnP (if supported by your router) in the
Label@SETTINGS_B:
X: 7
Y: 60
Width: 295
Height: 25
Font: Tiny
Align: Left
Text: Advanced tab of the OpenRA settings menu.
Container@NOTICES_UPNP:
X: 20
Y: 185
Width: PARENT_RIGHT
Height: PARENT_BOTTOM
Children:
Label@ADVERTISING:
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - Game will be advertised to the Local Area Network and Internet.
Label@FIREWALL:
Y: 12
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - You must manually configure your firewall to allow connections.
Label@PORTFORWARD_A:
Y: 24
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - OpenRA will use UPnP to automaticaly configure port forwarding.
Label@SETTINGS_A:
Y: 36
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - You can disable UPnP in the OpenRA settings menu.
Background@MAP_BG:
X: PARENT_RIGHT - 189
Y: 15
Width: 174
Height: 174
Background: panel-gray
Children:
@@ -101,22 +229,47 @@ Container@MULTIPLAYER_CREATESERVER_PANEL:
Y: 1
Width: PARENT_RIGHT - 2
Height: PARENT_RIGHT - 2
Label@MAP_NAME:
Y: 172
Width: PARENT_RIGHT
LabelWithTooltip@MAP_TITLE:
X: PARENT_RIGHT - 189
Y: 187
Width: 174
Height: 25
Font: Bold
Align: Center
Button@MAP_BUTTON:
X: PARENT_RIGHT - WIDTH
Y: 284 - 30
Width: 174
Height: 25
Text: Choose Map
TooltipContainer: TOOLTIP_CONTAINER
TooltipTemplate: SIMPLE_TOOLTIP
Label@MAP_TYPE:
X: PARENT_RIGHT - 189
Y: 202
Width: 174
Height: 25
Font: TinyBold
Align: Center
IgnoreMouseOver: true
Label@MAP_AUTHOR:
X: PARENT_RIGHT - 189
Y: 215
Width: 174
Height: 25
Font: Tiny
Align: Center
Button@MAP_BUTTON:
X: PARENT_RIGHT - 189
Y: PARENT_BOTTOM - 40
Width: 174
Height: 25
Text: Change Map
Button@BACK_BUTTON:
Key: return
Y: PARENT_BOTTOM - 36
Width: 140
Height: 35
Text: Back
Button@CREATE_BUTTON:
Key: return
X: PARENT_RIGHT - WIDTH
Y: 284
Width: 174
Height: 25
Y: PARENT_BOTTOM - 36
Width: 140
Height: 35
Text: Create
TooltipContainer@TOOLTIP_CONTAINER:

View File

@@ -30,22 +30,16 @@ Container@MULTIPLAYER_PANEL:
Height: 25
Text: Refresh
Button@DIRECTCONNECT_BUTTON:
X: 277
X: 387
Y: 284
Width: 100
Height: 25
Text: Direct IP
Button@BROWSER_TAB:
X: 382
Y: 278
Width: 105
Height: 31
Text: Browse
Button@CREATE_TAB:
Button@CREATE_BUTTON:
X: 492
Y: 278
Y: 284
Width: 105
Height: 31
Height: 25
Text: Create
Container@TOP_PANELS_ROOT:
X: 15

View File

@@ -1,124 +1,274 @@
Container@MULTIPLAYER_CREATESERVER_PANEL:
Background@MULTIPLAYER_CREATESERVER_PANEL:
Logic: ServerCreationLogic
Width: PARENT_RIGHT
Height: PARENT_BOTTOM
X: (WINDOW_RIGHT - WIDTH)/2
Y: (WINDOW_BOTTOM - HEIGHT)/2
Width: 530
Height: 345
Children:
Label@TITLE:
Y: 5
Width: 582
Y: 15
Width: PARENT_RIGHT
Height: 25
Text: Create Server
Align: Center
Font: Bold
ScrollPanel:
Y: 30
Width: 583
Height: PARENT_BOTTOM - 30
Label@SERVER_NAME_LABEL:
Y: 44
Width: 105
Height: 25
Align: Right
Text: Server Name:
TextField@SERVER_NAME:
X: 110
Y: 45
Width: 215
MaxLength: 50
Height: 25
Text: My OpenRA Server
Label@PASSWORD_LABEL:
Y: 79
Width: 105
Height: 25
Align: Right
Text: Password:
PasswordField@PASSWORD:
X: 110
Y: 80
Width: 145
MaxLength: 20
Height: 25
Label@AFTER_PASSWORD_LABEL:
X: 265
Y: 79
Width: 95
Height: 25
Align: Left
Text: (optional)
Label@LISTEN_PORT_LABEL:
Y: 114
Width: 105
Height: 25
Align: Right
Text: Port:
TextField@LISTEN_PORT:
X: 110
Y: 115
Width: 50
Height: 25
MaxLength: 5
Text: 1234
Checkbox@ADVERTISE_CHECKBOX:
X: 20
Y: 151
Width: 150
Height: 20
Font: Regular
Text: Advertise Online
Label@EXTERNAL_PORT_LABEL:
X: 180
Y: 149
Width: 90
Height: 25
Align: Right
Text: External Port:
TextField@EXTERNAL_PORT:
X: 275
Y: 150
Width: 50
MaxLength: 5
Height: 25
Text: 1234
Label@NOTICES_HEADER_A:
X: 20
Y: 185
Height: 25
Align: Left
Font: Bold
Label@NOTICES_HEADER_B:
X: 20
Y: 185
Height: 25
Align: Left
Font: Bold
Label@NOTICES_HEADER_C:
X: 20
Y: 185
Height: 25
Align: Left
Font: Bold
Container@NOTICES_LAN:
X: 25
Y: 205
Width: PARENT_RIGHT
Height: PARENT_BOTTOM
Children:
Container:
X: 185
Y: 30
Children:
Label@SERVER_NAME_LABEL:
Y: 14
Width: 95
Height: 25
Align: Right
Text: Server Name:
TextField@SERVER_NAME:
X: 100
Y: 15
Width: 215
MaxLength: 50
Height: 25
Text: My OpenRA Server
Label@PASSWORD_LABEL:
Y: 49
Width: 95
Height: 25
Align: Right
Text: Password:
PasswordField@PASSWORD:
X: 100
Y: 50
Width: 145
MaxLength: 20
Height: 25
Label@AFTER_PASSWORD_LABEL:
X: 255
Y: 49
Width: 95
Height: 25
Align: Left
Text: (optional)
Label@LISTEN_PORT_LABEL:
Y: 84
Width: 95
Height: 25
Align: Right
Text: Port:
TextField@LISTEN_PORT:
X: 100
Y: 85
Width: 50
Height: 25
MaxLength: 5
Text: 1234
Label@EXTERNAL_PORT_LABEL:
X: 170
Y: 84
Width: 90
Height: 25
Align: Right
Text: External Port:
TextField@EXTERNAL_PORT:
X: 265
Y: 85
Width: 50
MaxLength: 5
Height: 25
Text: 1234
Checkbox@ADVERTISE_CHECKBOX:
X: 100
Y: 135
Width: 150
Height: 20
Font: Regular
Text: Advertise Online
Container@SIDEBAR:
X: PARENT_RIGHT - WIDTH
Y: 30
Width: 174
Height: 280
Children:
Background@MAP_BG:
Width: PARENT_RIGHT
Height: 174
Background: dialog3
Children:
MapPreview@MAP_PREVIEW:
X: 1
Y: 1
Width: PARENT_RIGHT - 2
Height: PARENT_RIGHT - 2
Label@MAP_NAME:
Y: 172
Width: PARENT_RIGHT
Label@ADVERTISING:
Width: 305
Height: 25
Font: Bold
Align: Center
Button@MAP_BUTTON:
X: PARENT_RIGHT - WIDTH
Y: 240
Font: Tiny
Align: Left
Text: - Game will be advertised to the Local Area Network only.
Label@FIREWALL:
Y: 12
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - You must manually configure your firewall to allow connections.
Label@PORTFORWARD_A:
Y: 24
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - Players can connect using Direct IP from the Internet if you
Label@PORTFORWARD_B:
X: 7
Y: 36
Width: 295
Height: 25
Font: Tiny
Align: Left
Text: manually configure port forwarding on your router.
Container@NOTICES_NO_UPNP:
X: 25
Y: 205
Width: PARENT_RIGHT
Height: PARENT_BOTTOM
Children:
Label@ADVERTISING:
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - Game will be advertised to the Local Area Network and Internet.
Label@FIREWALL:
Y: 12
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - You must manually configure your firewall to allow connections.
Label@PORTFORWARD_A:
Y: 24
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - You must manually configure your router to allow and forward
Label@PORTFORWARD_B:
X: 7
Y: 36
Width: 295
Height: 25
Font: Tiny
Align: Left
Text: connections from the External Port to your local IP and Port.
Label@SETTINGS_A:
Y: 48
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - You can enable UPnP (if supported by your router) in the
Label@SETTINGS_B:
X: 7
Y: 60
Width: 295
Height: 25
Font: Tiny
Align: Left
Text: Advanced tab of the OpenRA settings menu.
Container@NOTICES_UPNP:
X: 25
Y: 205
Width: PARENT_RIGHT
Height: PARENT_BOTTOM
Children:
Label@ADVERTISING:
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - Game will be advertised to the Local Area Network and Internet.
Label@FIREWALL:
Y: 12
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - You must manually configure your firewall to allow connections.
Label@PORTFORWARD_A:
Y: 24
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - OpenRA will use UPnP to automaticaly configure port forwarding.
Label@SETTINGS_A:
Y: 36
Width: 305
Height: 25
Font: Tiny
Align: Left
Text: - You can disable UPnP in the OpenRA settings menu.
Background@MAP_BG:
X: PARENT_RIGHT - 194
Y: 45
Width: 174
Height: 174
Background: dialog3
Children:
MapPreview@MAP_PREVIEW:
X: 1
Y: 1
Width: PARENT_RIGHT - 2
Height: PARENT_RIGHT - 2
LabelWithTooltip@MAP_TITLE:
X: PARENT_RIGHT - 194
Y: 217
Width: 174
Height: 25
Text: Choose Map
Font: Bold
Align: Center
TooltipContainer: TOOLTIP_CONTAINER
TooltipTemplate: SIMPLE_TOOLTIP
Label@MAP_TYPE:
X: PARENT_RIGHT - 194
Y: 232
Width: 174
Height: 25
Font: TinyBold
Align: Center
IgnoreMouseOver: true
Label@MAP_AUTHOR:
X: PARENT_RIGHT - 194
Y: 245
Width: 174
Height: 25
Font: Tiny
Align: Center
Button@MAP_BUTTON:
X: PARENT_RIGHT - 194
Y: 268
Width: 174
Height: 25
Text: Change Map
Font: Bold
Button@BACK_BUTTON:
X: PARENT_RIGHT - 194
Y: PARENT_BOTTOM - 45
Width: 174
Height: 25
Text: Back
Font: Bold
Key: escape
Button@CREATE_BUTTON:
Key: return
X: PARENT_RIGHT - WIDTH
Y: PARENT_BOTTOM - 25
X: 20
Y: PARENT_BOTTOM - 45
Width: 174
Height: 25
Text: Create
Font: Bold
TooltipContainer@TOOLTIP_CONTAINER:

View File

@@ -27,24 +27,17 @@ Background@MULTIPLAYER_PANEL:
Text: Refresh
Font: Bold
Button@DIRECTCONNECT_BUTTON:
X: 288
X: 398
Y: PARENT_BOTTOM - HEIGHT - 20
Width: 100
Height: 25
Text: Direct IP
Font: Bold
Button@BROWSER_TAB:
X: 393
Button@CREATE_BUTTON:
X: 503
Y: PARENT_BOTTOM - HEIGHT - 20
Width: 105
Height: 31
Text: Browse
Font: Bold
Button@CREATE_TAB:
X: 498
Y: PARENT_BOTTOM - HEIGHT - 20
Width: 105
Height: 31
Width: 100
Height: 25
Text: Create
Font: Bold
Container@TOP_PANELS_ROOT:

View File

@@ -38,3 +38,6 @@ Metrics:
TextfieldColorInvalid: FFC0C0
TextfieldFont: Regular
WaitingGameColor: 00FF00
UPnPDisabledColor: FFFFFF
UPnPEnabledColor: 00FF00
UPnPNotSupportedColor: FF0000