/// <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); } }