///////////////////////////////////////////

        public GameNetworkClient(bool entitySystemServiceEnabled)
        {
            if (instance != null)
                Log.Fatal("GameNetworkClient.GameNetworkClient: instance != null.");
            instance = this;

            //register network services

            //register user management service
            userManagementService = new UserManagementClientNetworkService();
            RegisterService(userManagementService);

            //register custom messages service
            customMessagesService = new CustomMessagesClientNetworkService();
            RegisterService(customMessagesService);

            //register chat service
            chatService = new ChatClientNetworkService(userManagementService);
            RegisterService(chatService);

            //register entity system service
            if (entitySystemServiceEnabled)
            {
                entitySystemService = new EntitySystemClientNetworkService(userManagementService);
                RegisterService(entitySystemService);
            }
        }
예제 #2
0
        public void TryConnectToServer( string host, int port, string userName, string password )
        {
            GameNetworkClient client = new GameNetworkClient( true );

            client.ConnectionStatusChanged += Client_ConnectionStatusChanged;
            client.ChatService.ReceiveText += Client_ChatService_ReceiveText;
            client.CustomMessagesService.ReceiveMessage += Client_CustomMessagesService_ReceiveMessage;

            //add handlers for entity system service events
            client.EntitySystemService.WorldCreateBegin += Client_EntitySystemService_WorldCreateBegin;
            client.EntitySystemService.WorldCreateEnd += Client_EntitySystemService_WorldCreateEnd;
            client.EntitySystemService.WorldDestroy += Client_EntitySystemService_WorldDestroy;

            if( !client_SubscribedToMapLoadingEvents )
            {
                Map.Client_MapLoadingBegin += Map_Client_MapLoadingBegin;
                Map.Client_MapLoadingEnd += Map_Client_MapLoadingEnd;
                client_SubscribedToMapLoadingEvents = true;
            }

            string error;
            if( !client.BeginConnect( host, port, EngineVersionInformation.Version, userName, password,
                out error ) )
            {
                Log.Error( error );
                Client_DisconnectFromServer();
                return;
            }
        }
예제 #3
0
        private void Connect()
        {
            if (GameNetworkClient.Instance != null)
            {
                Log("Error: Client already connected");
                return;
            }

            string loginName = textBoxUserName.Text.Trim();
            if (string.IsNullOrEmpty(loginName))
            {
                Log("Error: Empty login name");
                return;
            }

            GameNetworkClient client = new GameNetworkClient(false);
            client.ConnectionStatusChanged += Client_ConnectionStatusChanged;
            client.UserManagementService.AddUserEvent += UserManagementService_AddUserEvent;
            client.UserManagementService.RemoveUserEvent += UserManagementService_RemoveUserEvent;
            client.ChatService.ReceiveText += ChatService_ReceiveText;

            string password = "";

            int port = 56565;

            string error;
            if (!client.BeginConnect(textBoxAddress.Text, port, EngineVersionInformation.Version,
                loginName, password, out error))
            {
                Log("Error: " + error);
                Disconnect();
                return;
            }

            buttonConnect.Enabled = false;
            buttonDisconnect.Enabled = true;
            textBoxUserName.ReadOnly = true;
            textBoxAddress.ReadOnly = true;
            textBoxEnterText.ReadOnly = true;
            buttonSend.Enabled = true;

            Log("Trying to connect...");
        }
        public override void Dispose()
        {
            base.Dispose();

            instance = null;
        }
        public override void Dispose()
        {
            base.Dispose();

            instance = null;
        }
예제 #6
0
        void Connect_Click( Button sender )
        {
            if( string.IsNullOrEmpty( userName ) )
            {
                SetInfo( "Invalid user name.", true );
                return;
            }

            SetInfo( "Connecting to the server...", false );

            GameNetworkClient client = new GameNetworkClient( true );
            client.ConnectionStatusChanged += Client_ConnectionStatusChanged;

            int port = 56565;
            string password = "";

            string error;
            if( !client.BeginConnect( connectToAddress, port, EngineVersionInformation.Version,
                userName, password, out error ) )
            {
                Log.Error( error );
                DisposeClient();
                return;
            }

            editBoxUserName.Enable = false;
            editBoxConnectTo.Enable = false;
            buttonCreateServer.Enable = false;
            buttonConnect.Enable = false;
        }
        protected override void OnAttach()
        {
            window = ControlDeclarationManager.Instance.CreateControl("Gui\\MPAKlobbyWindow.gui");
            Controls.Add(window);

            //positionY = maxout;

            listBox = (ListBox)window.Controls["Servers"];

            ((Button)window.Controls["Quit"]).Click += delegate(Button sender)
            {
                SetShouldDetach();// Back(true);
            };

            //positionY = maxout;

            ((Button)window.Controls["TechLab"]).Click += delegate(Button sender)
            {
                this.OnDetach();
                Controls.Add(new TechLabUnitBuyWindow());
            };

            ((Button)window.Controls["Refresh"]).Click += delegate(Button sender)
            {
                refreshlistbox();
            };

            ((Button)window.Controls["Customize"]).Click += delegate(Button sender)
            {
                this.OnDetach();
                Controls.Add(new TechLabUnitCustomizeWindow());
            };

            //Run button event handler
            ((Button)window.Controls["Run"]).Click += delegate(Button sender)
            {
                if (listBox.SelectedIndex != -1)
                    RunMap(AKSERVERS[listBox.SelectedIndex]);
            };

            createServerPort = window.Controls["Serverport"] as EditBox;
            if (createServerPort != null)
            {
                createServerPort.TextChange += delegate(Control sender)
                {
                    createServerPort.TextChange += createServerPort_TextChange;
                };
                createserverport = int.Parse(createServerPort.Text.Trim());
            }

            PassBox = window.Controls["passwordBox"] as PasswordBox;
            if (PassBox != null)
            {
                PassBox.TextChange += delegate(Control sender)
                {
                    PassBox.TextChange += PassBox_TextChange;
                    if (PassBox.Text.Length > 0)
                    {
                        clientpassword = PassBox.Text.Trim();
                        serverpassword = clientpassword;
                    }
                    else
                    {
                        clientpassword = serverpassword = "";
                    }
                };
            }

            CheckPrivate = window.Controls["chkserverPrivate"] as CheckBox;
            if (CheckPrivate != null)
            {
                CheckPrivate.CheckedChange += delegate(CheckBox sender)
                {
                    if (CheckPrivate.Checked == true)
                    {
                        privateserver = true;
                        SetInfo("Server set to private", false);
                    }
                    else
                    {
                        privateserver = false;
                    }
                };
            }

            EditBox IPtext = window.Controls["DirectConnectionTextBox"] as EditBox;

            ((Button)window.Controls["DirectIPCon"]).Click += delegate(Button sender)
            {
                GameNetworkClient client = new GameNetworkClient(true);
                client.ConnectionStatusChanged += Client_ConnectionStatusChanged;
                string error;
                if (!client.BeginConnect(IPtext.Text.ToString(), int.Parse(createserverport.ToString()), EngineVersionInformation.Version,
                    Program.username, clientpassword, out error))
                {
                    Log.Error(error);
                    DisposeClient();
                    return;
                }
            };

            ((Button)window.Controls["singlePlayer"]).Click += delegate(Button sender)
            {
                GameEngineApp.Instance.SetNeedMapLoad("Maps\\MainDemo\\Map.map");
            };

            //TextBox ComWelN = window.Controls["ComWelNote"] as TextBox;
            //if (ComWelN != null)
            //{
            //    ComWelN.Text = "Welcome Commander " + MySqlGetUserName();
            //}

            buttonCreateServer = (Button)window.Controls["CreateServer"];
            buttonCreateServer.Click += CreateServer_Click;

            //refreshlistbox();

            base.OnAttach();
        }
 private void RunMap(object SelectedItem)
 {
     AKservers selectedserver = SelectedItem as AKservers;
     if (SelectedItem != null)
     {
         GameNetworkClient client = new GameNetworkClient(true);
         client.ConnectionStatusChanged += Client_ConnectionStatusChanged;
         string error;
         if (!client.BeginConnect(selectedserver.IP, selectedserver.Port, EngineVersionInformation.Version,
             Program.username, serverpassword, out error))
         {
             Log.Error("Running Map Error: " + error);
             DisposeClient();
             return;
         }
     }
 }