Example #1
0
        void CreateAndJoin()
        {
            var name = panel.Get <TextFieldWidget>("SERVER_NAME").Text;
            int listenPort, externalPort;

            if (!int.TryParse(panel.Get <TextFieldWidget>("LISTEN_PORT").Text, out listenPort))
            {
                listenPort = 1234;
            }

            if (!int.TryParse(panel.Get <TextFieldWidget>("EXTERNAL_PORT").Text, out externalPort))
            {
                externalPort = 1234;
            }

            // Save new settings
            Game.Settings.Server.Name             = name;
            Game.Settings.Server.ListenPort       = listenPort;
            Game.Settings.Server.ExternalPort     = externalPort;
            Game.Settings.Server.AdvertiseOnline  = advertiseOnline;
            Game.Settings.Server.AllowPortForward = allowPortForward;
            Game.Settings.Server.Map = map.Uid;
            Game.Settings.Save();

            // Take a copy so that subsequent changes don't affect the server
            var settings = new ServerSettings(Game.Settings.Server);

            // Create and join the server
            Game.CreateServer(settings);
            Ui.CloseWindow();
            ConnectionLogic.Connect(IPAddress.Loopback.ToString(), Game.Settings.Server.ListenPort, onCreate, onExit);
        }
Example #2
0
        // Listen for connection failures
        void ConnectionStateChanged(OrderManager om)
        {
            if (om.Connection.ConnectionState == ConnectionState.NotConnected)
            {
                // Show connection failed dialog
                CloseWindow();

                Action onConnect = () =>
                {
                    Game.OpenWindow("SERVER_LOBBY", new WidgetArgs()
                    {
                        { "onExit", onExit },
                        { "onStart", OnGameStart },
                        { "addBots", false }
                    });
                };

                Action <string> onRetry = password =>
                {
                    ConnectionLogic.Connect(om.Host, om.Port, password, onConnect, onExit);
                };

                Ui.OpenWindow("CONNECTIONFAILED_PANEL", new WidgetArgs()
                {
                    { "orderManager", om },
                    { "onAbort", onExit },
                    { "onRetry", onRetry }
                });
            }
        }
Example #3
0
        void Join(GameServer server)
        {
            if (server == null || !server.CanJoin())
            {
                return;
            }

            var host = server.Address.Split(':')[0];
            var port = Exts.ParseIntegerInvariant(server.Address.Split(':')[1]);

            ConnectionLogic.Connect(host, port, "", OpenLobby, DoNothing);
        }
Example #4
0
        void Join(GameServer server)
        {
            if (server == null || !server.CanJoin())
            {
                return;
            }

            var host = server.Address.Split(':')[0];
            var port = int.Parse(server.Address.Split(':')[1]);

            Ui.CloseWindow();
            ConnectionLogic.Connect(host, port, OpenLobby, OnExit);
        }
Example #5
0
        void StartSkirmishGame()
        {
            var map = WidgetUtils.ChooseInitialMap(Game.Settings.Server.Map);

            Game.Settings.Server.Map = map;
            Game.Settings.Save();

            ConnectionLogic.Connect(IPAddress.Loopback.ToString(),
                                    Game.CreateLocalServer(map),
                                    "",
                                    OpenSkirmishLobbyPanel,
                                    () => { Game.CloseServer(); menuType = MenuType.Main; });
        }
Example #6
0
        public ServerBrowserLogic(Widget widget, Action openLobby, Action onExit)
        {
            var panel = widget;
            var sl    = panel.GetWidget <ScrollPanelWidget>("SERVER_LIST");

            // Menu buttons
            var refreshButton = panel.GetWidget <ButtonWidget>("REFRESH_BUTTON");

            refreshButton.IsDisabled = () => searchStatus == SearchStatus.Fetching;
            refreshButton.OnClick    = () =>
            {
                searchStatus = SearchStatus.Fetching;
                sl.RemoveChildren();
                currentServer = null;
                ServerList.Query(games => RefreshServerList(panel, games));
            };

            var join = panel.GetWidget <ButtonWidget>("JOIN_BUTTON");

            join.IsDisabled = () => currentServer == null || !currentServer.CanJoin();
            join.OnClick    = () =>
            {
                if (currentServer == null)
                {
                    return;
                }

                var host = currentServer.Address.Split(':')[0];
                var port = int.Parse(currentServer.Address.Split(':')[1]);

                Ui.CloseWindow();
                ConnectionLogic.Connect(host, port, openLobby, onExit);
            };

            panel.GetWidget <ButtonWidget>("BACK_BUTTON").OnClick = () => { Ui.CloseWindow(); onExit(); };

            // Server list
            serverTemplate = sl.GetWidget <ScrollItemWidget>("SERVER_TEMPLATE");

            // Display the progress label over the server list
            // The text is only visible when the list is empty
            var progressText = panel.GetWidget <LabelWidget>("PROGRESS_LABEL");

            progressText.IsVisible = () => searchStatus != SearchStatus.Hidden;
            progressText.GetText   = ProgressLabelText;

            ServerList.Query(games => RefreshServerList(panel, games));
        }
Example #7
0
        public DirectConnectLogic(Widget widget, Action onExit, Action openLobby)
        {
            var panel     = widget;
            var ipField   = panel.Get <TextFieldWidget>("IP");
            var portField = panel.Get <TextFieldWidget>("PORT");

            var last = Game.Settings.Player.LastServer.Split(':');

            ipField.Text   = last.Length > 1 ? last[0] : "localhost";
            portField.Text = last.Length == 2 ? last[1] : "1234";

            panel.Get <ButtonWidget>("JOIN_BUTTON").OnClick = () =>
            {
                var port = Exts.WithDefault(1234, () => int.Parse(portField.Text));

                Game.Settings.Player.LastServer = "{0}:{1}".F(ipField.Text, port);
                Game.Settings.Save();

                Ui.CloseWindow();
                ConnectionLogic.Connect(ipField.Text, port, "", openLobby, onExit);
            };

            panel.Get <ButtonWidget>("BACK_BUTTON").OnClick = () => { Ui.CloseWindow(); onExit(); };
        }