/// <summary>
        ///     Spawns a player based on input username, subject to change.
        /// </summary>
        /// <param name="username">Username of desired user to spawn</param>
        /// <param name="xPos">Desired x position</param>
        /// <param name="yPos">Desired y position</param>
        private void SpawnPlayer(PlayerSpawnObject playerSpawn)
        {
            var username = playerSpawn.Username;

            if (string.IsNullOrEmpty(username))
            {
                return;
            }
            if (!_us.UserExistsByUsername(username))
            {
                throw new UserDoesNotExistException();
            }

            var playerPosition = playerSpawn.InitialPosition;

            var pm = new Body();

            pm.CreateCircle(playerSpawn.Radius, playerSpawn.InitialDensity, playerPosition);

            //Can do all the cool physics stuff
            pm.BodyType = BodyType.Dynamic;
            //Bounciness?
            pm.SetRestitution(playerSpawn.InitialRestitution);
            //Friction for touching other bodies
            pm.SetFriction(playerSpawn.InitialFriction);
            //Just your standard mass
            pm.Mass = playerSpawn.InitialMass;
            //Friction for moving around in space
            pm.LinearDamping = playerSpawn.LinearDamping;



            _world.Add(pm);

            var playerModel = new PlayerModel(pm);

            playerModel.Username    = username;
            playerModel.PlayerClass = playerSpawn.PlayerClass;
            playerModel.Health      = playerSpawn.InitialHealth;
            playerModel.Damage      = playerSpawn.Damage;
            playerModel.FireRate    = playerSpawn.FireRate;
            playerModel.MaxHealth   = playerSpawn.InitialHealth;
            pm.Tag = playerModel;

            //PlayerDictionary.Add(username, pm);
            PlayerDictionary[username] = playerModel;
        }
        public void HandleRespawnPlayer(string username, string playerClass, float xPos = 0f, float yPos = 0f)
        {
            if (string.IsNullOrEmpty(username))
            {
                throw new Exception("Username is null");
            }
            //TODO: Get rid of this useless method
            var playerSpawn = new PlayerSpawnObject();

            playerSpawn.Username        = username;
            playerSpawn.PlayerClass     = playerClass;
            playerSpawn.InitialPosition = new Vector2(xPos, yPos);
            playerSpawn.LinearDamping   = 4f;
            playerSpawn.Speed           = 20f;
            playerSpawn.Radius          = .4f;
            spawnQueue.Enqueue(playerSpawn);
        }
        /// <summary>
        ///     Add a new player to the spawn queue
        /// </summary>
        /// <param name="username">Username to spawn. Must exist in the user database</param>
        /// <param name="playerClass">The class chosen by the player.</param>
        /// <param name="xPos">X Position to spawn at. Default is 0</param>
        /// <param name="yPos">Y Position to spawn at. Default is 0</param>
        public void HandleSpawnPlayer(string username, string playerClass, float xPos = 0f, float yPos = 0f)
        {
            if (string.IsNullOrEmpty(username))
            {
                throw new Exception("Username is null");
            }
            if (!deathCounterDictionary.ContainsKey(username))
            {
                deathCounterDictionary.TryAdd(username, 0);
            }
            deathCounterDictionary.TryGetValue(username, out var deathCount);
            if (deathCount > 0)
            {
                //throw new Exception("");
                return;
            }
            else
            {
                //TODO: Get rid of this useless method
                var playerSpawn = new PlayerSpawnObject();
                playerSpawn.Username        = username;
                playerSpawn.PlayerClass     = playerClass;
                playerSpawn.InitialPosition = new Vector2(xPos, yPos);
                playerSpawn.LinearDamping   = 4f;
                playerSpawn.Radius          = .4f;


                if (playerClass == "heavy")
                {
                    playerSpawn.FireRate      = 120f;
                    playerSpawn.Speed         = 15f;
                    playerSpawn.InitialHealth = 150f;
                    playerSpawn.Damage        = 5f;
                }
                else
                {
                    playerSpawn.FireRate      = 200f;
                    playerSpawn.Speed         = 20f;
                    playerSpawn.InitialHealth = 100f;
                    playerSpawn.Damage        = 10f;
                }

                playerSpawn.PlayerClass = playerClass;
                spawnQueue.Enqueue(playerSpawn);
            }
        }