merge cnc and ra lobby, fixes #1267, #1224, #106, others

This commit is contained in:
Chris Forbes
2011-11-06 11:50:58 +13:00
parent 4576eaadd6
commit 772734d032
44 changed files with 759 additions and 1432 deletions

View File

@@ -8,7 +8,7 @@
*/
#endregion
using System.Linq;
using System;
using OpenRA.Widgets;
namespace OpenRA.Mods.RA.Widgets.Logic
@@ -16,34 +16,28 @@ namespace OpenRA.Mods.RA.Widgets.Logic
public class DirectConnectLogic
{
[ObjectCreator.UseCtor]
public DirectConnectLogic(Widget widget)
public DirectConnectLogic(Widget widget, Action onExit, Action openLobby)
{
var dc = widget.GetWidget("DIRECTCONNECT_BG");
var panel = widget;
var ipField = panel.GetWidget<TextFieldWidget>("IP");
var portField = panel.GetWidget<TextFieldWidget>("PORT");
dc.GetWidget<TextFieldWidget>("SERVER_ADDRESS").Text = Game.Settings.Player.LastServer;
var last = Game.Settings.Player.LastServer.Split(':');
ipField.Text = last.Length > 1 ? last[0] : "localhost";
portField.Text = last.Length > 2 ? last[1] : "1234";
dc.GetWidget<ButtonWidget>("JOIN_BUTTON").OnClick = () =>
panel.GetWidget<ButtonWidget>("JOIN_BUTTON").OnClick = () =>
{
var address = dc.GetWidget<TextFieldWidget>("SERVER_ADDRESS").Text;
var addressParts = address.Split(':');
if (addressParts.Length < 1 || addressParts.Length > 2)
return;
var port = Exts.WithDefault(1234, () => int.Parse(portField.Text));
var port = Exts.WithDefault(1234, () => int.Parse(addressParts[1]));
Game.Settings.Player.LastServer = address;
Game.Settings.Player.LastServer = "{0}:{1}".F(ipField.Text, port);
Game.Settings.Save();
Widget.CloseWindow();
Game.JoinServer(addressParts[0], port);
ConnectionLogic.Connect(ipField.Text, port, openLobby, onExit);
};
dc.GetWidget<ButtonWidget>("CANCEL_BUTTON").OnClick = () =>
{
Widget.CloseWindow();
Widget.OpenWindow("MAINMENU_BG");
};
panel.GetWidget<ButtonWidget>("BACK_BUTTON").OnClick = () => { Widget.CloseWindow(); onExit(); };
}
}
}