Esempio n. 1
0
        public static void DisconnectConnection(NetConnection sender, Scene scene)
        {
            NetServer server = ServerNetworkSceneComponent.GetNetServer();

            LoginManagerServer login = MapContainer.GetLoginByID(sender.RemoteUniqueIdentifier);

            if (login != null)
            {
                CharacterPlayer characterPlayer = login.GetCharacter();

                //Saves data to SQL database
                string characterString = Newtonsoft.Json.JsonConvert.SerializeObject(characterPlayer, new StringEnumConverter());
                SQLManager.UpdateToSQL(login.username, characterString);

                //removes login manager
                MapContainer.RemoveLoginByID(login.GetUniqueID());

                if (characterPlayer != null)
                {
                    //removes entity
                    CharacterManager.RemoveCharacterFromScene(scene, characterPlayer._name);
                }
            }

            //removes the connection
            sender.Disconnect("Closed");
            Console.WriteLine("Disconnected! Connected: " + ServerNetworkSceneComponent.GetNetServer().ConnectionsCount);
            MainScene.ConnectedCount.SetText("Current connections: " + server.ConnectionsCount);
        }
Esempio n. 2
0
 private void CheckIfConnected()
 {
     if (ServerNetworkSceneComponent.GetNetServer().Connections.Find(c => c.RemoteUniqueIdentifier.Equals(loginManager.GetUniqueID())) == null)
     {
         //HashSet<LoginManagerServer> characterlist = CharacterManager.GetLoginManagerServerList();
         //characterlist.Remove(loginManager);
         //CharacterManager.RemoveLoginManagerServerFromList(loginManager);
         //Entity.Destroy();
     }
 }
Esempio n. 3
0
 private void ConnectionChange(NetIncomingMessage message)
 {
     if (message.SenderConnection.Status == NetConnectionStatus.Connected || message.SenderConnection.Status == NetConnectionStatus.RespondedConnect)
     {
         Debug.WriteLine("New connection!");
     }
     if (message.SenderConnection.Status == NetConnectionStatus.Disconnected)
     {
         OnDisconnected(message.SenderConnection);
     }
     MainScene.ConnectedCount.SetText("Current connections: " + ServerNetworkSceneComponent.GetNetServer().ConnectionsCount);
 }
Esempio n. 4
0
        public void CheckForMessageAvailable()
        {
            NetIncomingMessage message;
            NetServer          server = ServerNetworkSceneComponent.GetNetServer();

            if ((message = server.ReadMessage()) != null)
            {
                if (message.MessageType == NetIncomingMessageType.ConnectionApproval)
                {
                    message.SenderConnection.Approve();
                }
                CheckForMessage(message);
            }
        }
Esempio n. 5
0
        public static void SendStringToUniqueID(Scene scene, string message, long UniqueID, MessageType type)
        {
            MessageTemplate temp = new MessageTemplate(message, type);

            NetOutgoingMessage mvmntMessage = ServerNetworkSceneComponent.GetNetServer().CreateMessage(Newtonsoft.Json.JsonConvert.SerializeObject(temp));
            var connections = ServerNetworkSceneComponent.GetNetServer().Connections;

            NetConnection reciever = connections.Find(c => c.RemoteUniqueIdentifier.Equals(UniqueID));

            if (reciever != null)
            {
                NetSendResult result = reciever.SendMessage(mvmntMessage, NetDeliveryMethod.ReliableUnordered, 1);
                int           size;
                int           free;
                reciever.GetSendQueueInfo(NetDeliveryMethod.ReliableUnordered, 1, out size, out free);
                if (free < -size)
                {
                    DisconnectConnection(reciever, scene);
                }
            }
        }
Esempio n. 6
0
        private void LoginAttempt(NetIncomingMessage message, MessageTemplate template)
        {
            LoginManagerServer LoginManagerServerUser = Newtonsoft.Json.JsonConvert.DeserializeObject <LoginManagerServer>(template.JsonMessage, new StringEnumConverter());

            LoginManagerServerUser.SetUniqueID(message.SenderConnection.RemoteUniqueIdentifier);
            Console.WriteLine("Login attempt by: " + LoginManagerServerUser.username);
            NetConnection sender = message.SenderConnection;

            if (SQLManager.CheckIfExistInSQL(LoginManagerServerUser.username))
            {
                //true if logged in
                bool   success = LoginManagerServerUser.SetupLogin();
                Entity e       = Scene.FindEntity(LoginManagerServerUser.GetCharacter()._name);
                if (success && e == null)
                {
                    Console.WriteLine("Logged in with \"" + LoginManagerServerUser.username + "\" to Database");
                    string          characterString     = Newtonsoft.Json.JsonConvert.SerializeObject(LoginManagerServerUser.GetCharacter(), new StringEnumConverter());
                    MessageTemplate TempMessageTemplate = new MessageTemplate(characterString, MessageType.LoginSuccess);

                    //Returns the character to the player
                    NetOutgoingMessage mvmntMessage = ServerNetworkSceneComponent.GetNetServer().CreateMessage(Newtonsoft.Json.JsonConvert.SerializeObject(TempMessageTemplate, new StringEnumConverter()));
                    sender.SendMessage(mvmntMessage, NetDeliveryMethod.ReliableOrdered, 0);
                    MapContainer.AssignLogin(Scene, LoginManagerServerUser);
                }
                else
                {
                    MessageTemplate    temp         = new MessageTemplate("Failure.", MessageType.LoginFailure);
                    NetOutgoingMessage mvmntMessage = ServerNetworkSceneComponent.GetNetServer().CreateMessage(Newtonsoft.Json.JsonConvert.SerializeObject(temp, new StringEnumConverter()));
                    sender.SendMessage(mvmntMessage, NetDeliveryMethod.ReliableOrdered, 0);
                }
            }
            else
            {
                MessageTemplate    temp         = new MessageTemplate("Failure.", MessageType.LoginFailure);
                NetOutgoingMessage mvmntMessage = ServerNetworkSceneComponent.GetNetServer().CreateMessage(Newtonsoft.Json.JsonConvert.SerializeObject(temp, new StringEnumConverter()));
                sender.SendMessage(mvmntMessage, NetDeliveryMethod.ReliableOrdered, 0);
            }
        }