Exemplo 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);
        }
Exemplo n.º 2
0
 public static void SaveAllToSQL()
 {
     foreach (NetConnection Connection in ServerNetworkSceneComponent.GetNetServer().Connections)
     {
         LoginManagerServer user = MapContainer.GetLoginByID(Connection.RemoteUniqueIdentifier);
         if (user != null && user.GetCharacter() != null)
         {
             UpdateToSQL(user.username, user.GetCharacter().CreateJsonFromCharacter());
         }
     }
 }
Exemplo n.º 3
0
        public static bool CalculateMovement(CharacterPlayer character, Keys[] keys, long ID)
        {
            if (character == null)
            {
                return(false);
            }
            float speed = 350;

            try
            {
                IsShiftDown = false;
                var dir = Vector2.Zero;
                foreach (var key in keys)
                {
                    //add proper movement with deltaTime later
                    switch (key)
                    {
                    case Keys.W:
                        //character._pos.Y -= 3f;
                        dir.Y = -1f;
                        break;

                    case Keys.A:
                        //character._pos.X -= 3f;
                        dir.X = -1f;
                        break;

                    case Keys.S:
                        //character._pos.Y += 3f;
                        dir.Y = 1f;
                        break;

                    case Keys.D:
                        //character._pos.X += 3f;
                        dir.X = 1f;
                        break;

                    case Keys.T:
                        character.AddItemToInventory(ItemManager.GenerateItem());
                        LoginManagerServer login = MapContainer.GetLoginByID(ID);
                        MapContainer.MoveLoginToMap(login, MapContainer.GetMapByName("MapTwo"));
                        break;

                    case Keys.LeftShift:
                        IsShiftDown = true;
                        break;

                    default:
                        break;
                    }
                }
                if (dir != Vector2.Zero)
                {
                    Entity e = Core.Scene.FindEntity(character._name);
                    e.RemoveComponent <ChannelingComponent>();

                    var movement = dir * speed * Time.DeltaTime;

                    FSRigidBody body  = e.GetComponent <FSRigidBody>();
                    Mover       mover = e.GetComponent <Mover>();

                    if (mover.Move(movement, out CollisionResult collisionResult))
                    {
                        //Debug.DrawLine(e.Position, e.Position + collisionResult.Normal * 100, Color.Black, 1f);
                    }
                    return(true);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            return(false);
        }