/// <summary> /// Creates a new Ship instance. /// </summary> /// <param name="player"> /// The player who owns the ship. /// </param> /// <param name="spriteSheet"> /// The Ship's rotational sprite sheet. /// </param> /// <param name="startingScreenPosition"> /// The Ship's starting screen position. /// </param> /// <param name="bulletSurface"> /// The surface for bullets fired by this ship. /// </param> /// <param name="infoBarShipSurface"> /// The surface that is displayed as the identifying icon in the /// InfoBar. /// </param> public Ship(Player player, SpriteSheet spriteSheet, Point startingScreenPosition, Surface bulletSurface, Surface infoBarShipSurface) : base(spriteSheet.AnimatedSprite) { this.player = player; this.spriteSheet = spriteSheet; // This is for the ship picture in the InfoBar. this.shipPhotoSurface = infoBarShipSurface; this.topSpeed = Configuration.Ships.TopSpeed; this.shields = Configuration.Ships.Shields.Power; this.X = startingScreenPosition.X; this.Y = startingScreenPosition.Y; this.Velocity = new Vector(); this.Life = -1; // Infinite life span. // Our next scheduled respawn time (i.e. never). this.respawnTime = DateTime.MinValue; this.speedLimiter = new SpeedLimit(this.topSpeed); this.forwardThruster = new Thruster(this, false, Configuration.Ships.Thrusters.Forward.SoundFilename, Configuration.Ships.Thrusters.Forward.Power, spriteSheet.ForwardThrusterEngineLength, Configuration.Ships.Thrusters.Forward.ExhaustConeDeg, Configuration.Ships.Thrusters.Forward.ParticleMinColor, Configuration.Ships.Thrusters.Forward.ParticleMaxColor); this.reverseThruster = new Thruster(this, true, Configuration.Ships.Thrusters.Reverse.SoundFilename, Configuration.Ships.Thrusters.Reverse.Power, spriteSheet.ReverseThrusterEngineLength, Configuration.Ships.Thrusters.Reverse.ExhaustConeDeg, Configuration.Ships.Thrusters.Reverse.ParticleMinColor, Configuration.Ships.Thrusters.Reverse.ParticleMaxColor); this.cannon = new Cannon(this, spriteSheet.CannonBarrelLength, bulletSurface, Configuration.Ships.Cannon.Power, Configuration.Ships.Cannon.Cooldown, Configuration.Ships.Cannon.MuzzleSpeed, Configuration.Bullets.Life); this.spawnTime = DateTime.Now; }
protected virtual void Dispose(bool disposing) { if (!this.disposed) { // We haven't been disposed yet. if (disposing) { /* The method has been called directly or indirectly by a * user's code. Dispose of managed resources here. */ if (this.cannon != null) { this.cannon.Dispose(); this.cannon = null; } if (this.forwardThruster != null) { this.forwardThruster.Dispose(); this.forwardThruster = null; } if (this.reverseThruster != null) { this.reverseThruster.Dispose(); this.reverseThruster = null; } } // Dispose of unmanaged resources _only_ out here. this.disposed = true; } }