/// <summary> /// Place this ship in the world. /// </summary> /// <param name="findSpawnPoint"> /// If true, the actor's position is changed to a valid, non-colliding point. /// </param> public override void Spawn(bool findSpawnPoint) { // do not call the base Spawn, as the actor never is added or removed when // dying or respawning, because we always need to be processing input // respawn this actor if (dead == true) { // I LIVE dead = false; // find a new spawn point if requested if (findSpawnPoint) { position = world.FindSpawnPoint(this); } // reset the velocity velocity = Vector2.Zero; // reset the shield and life values life = 25f; shield = shieldMaximum; // reset the safety timers safeTimer = safeTimerMaximum; // create the default weapons weapon = new LaserWeapon(this); mineWeapon = new MineWeapon(this); // play the ship-spawn cue world.AudioManager.PlayCue("playerSpawn"); // add a particle effect at the ship's new location world.ParticleSystems.Add(new ParticleSystem(this.position, Vector2.Zero, 32, 32f, 64f, 2f, 0.1f, new Color[] { this.color })); // remind the player that we're spawning FireGamepadMotors(0.25f, 0f); } }
/// <summary> /// Assigns the new weapon to the ship. /// </summary> /// <param name="weapon">The new weapon.</param> public void SetWeapon(Weapon weapon) { if (weapon != null) { this.weapon = weapon; } }