NewGamePhysics.GraphicalElements.ShootingGallery Class Reference

Represents a collection of moving circular object in 2D space under gravity influence which can be release (shot down). More...

Inheritance diagram for NewGamePhysics.GraphicalElements.ShootingGallery:
NewGamePhysics.GraphicalElements.GraphicalElementBase

List of all members.

Public Member Functions

 ShootingGallery (ScreenManager screenManager, Vector2 simulationOrigin, double width, double height, Vector2 screenOrigin, double screenScale)
 Instantiate an empty shooting gallery.
void Reset (string[] targetTypes, double gravity, double atmosphereDensity)
 Reset the shooting gallery.
int ShootAtTargets (Vector2 shotCenter, double bulletSize)
 Shoot at targets.
void Update (GameTime gameTime)
 Update (animate) the shooting gallery. Tracks targets that become invisible because they were shot off the screen.
void Draw (GameTime gameTime)
 Draw the shooting gallery.

Properties

double TargetConveyerSpeed [get, set]
 Target conveyer animation: horizontal speed. Default: dX = 0.01.
int NumTargets [get]
 Gets the total number of game targets.
int NumActiveTargets [get]
 Gets the number of active (hittable) targets.

Detailed Description

Represents a collection of moving circular object in 2D space under gravity influence which can be release (shot down).

Definition at line 27 of file ShootingGallery.cs.


Constructor & Destructor Documentation

NewGamePhysics.GraphicalElements.ShootingGallery.ShootingGallery ( ScreenManager  screenManager,
Vector2  simulationOrigin,
double  width,
double  height,
Vector2  screenOrigin,
double  screenScale 
)

Instantiate an empty shooting gallery.

Parameters:
screenManager The screen manager to use.
simulationOrigin The origin for gallery in simulation space.
width The width of the gallery in simulation space.
height The height of the gallery in simulation space.
screenOrigin The origin for mapping simulation space to the screen.
screenScale The scale for mapping simulation space to the screen.

Definition at line 110 of file ShootingGallery.cs.

00117             : base(screenManager)
00118         {
00119             this.simulationOrigin = simulationOrigin;
00120             this.width = width;
00121             this.height = height;
00122             this.screenOrigin = screenOrigin;
00123             this.screenScale = screenScale;
00124         }


Member Function Documentation

void NewGamePhysics.GraphicalElements.ShootingGallery.Draw ( GameTime  gameTime  ) 

Draw the shooting gallery.

Parameters:
gameTime The game time for drawing.

Definition at line 249 of file ShootingGallery.cs.

00250         {
00251             foreach (ShootingGalleryTarget shootingGalleryTarget in this.shootingGalleryTargets)
00252             {
00253                 shootingGalleryTarget.Draw(gameTime);
00254             }
00255         }

void NewGamePhysics.GraphicalElements.ShootingGallery.Reset ( string[]  targetTypes,
double  gravity,
double  atmosphereDensity 
)

Reset the shooting gallery.

Parameters:
numTargets Number of new targets in gallery.
gravity Gravity environment for gallery.
atmosphereDensity Density of the atmosphere.

Definition at line 132 of file ShootingGallery.cs.

00133         {
00134             if (targetTypes == null || targetTypes.Length == 0)
00135             {
00136                 throw new ArgumentException(
00137                     "Can reset only to one or more targets",
00138                     "targetTypes");
00139             }
00140 
00141             this.numTargets = targetTypes.Length;
00142 
00143             if (gravity == 0.0)
00144             {
00145                 throw new ArgumentException(
00146                     "Gravity must be non-zero.",
00147                     "gravity");
00148             }
00149 
00150             // Separation of targets
00151             double stepX = this.width / this.numTargets;
00152             if (stepX <= this.height)
00153             {
00154                 throw new ArgumentException(
00155                     "Cannot fit that many targets into the width of the gallery without overlap.",
00156                     "numTargets");
00157             }
00158 
00159             this.numActiveTargets = this.numTargets;
00160             this.shootingGalleryTargets = new ShootingGalleryTarget[this.numTargets];
00161             for (int i = 0; i < this.numTargets; i++)
00162             {
00163                 this.shootingGalleryTargets[i] = new ShootingGalleryTarget(
00164                     this.ScreenManager, 
00165                     (ShootingGalleryTargetType)Enum.Parse(
00166                         typeof(ShootingGalleryTargetType), 
00167                         targetTypes[i]),
00168                     gravity,
00169                     atmosphereDensity,
00170                     this.height,
00171                     this.height,
00172                     this.screenOrigin,
00173                     this.screenScale);
00174                 this.shootingGalleryTargets[i].Position = 
00175                     new Vector2(
00176                         this.simulationOrigin.X + (float)(i * stepX), 
00177                         this.simulationOrigin.Y);
00178             }
00179         }

int NewGamePhysics.GraphicalElements.ShootingGallery.ShootAtTargets ( Vector2  shotCenter,
double  bulletSize 
)

Shoot at targets.

Parameters:
shotCenter Position of the shot in simulation space.
bulletSize Size of the bullet in simulation space.
Returns:
Number of targets that were hit.

Definition at line 187 of file ShootingGallery.cs.

00188         {
00189             int numberHits = 0;
00190 
00191             foreach (ShootingGalleryTarget shootingGalleryTarget in this.shootingGalleryTargets)
00192             {
00193                 if (shootingGalleryTarget.Visible && !shootingGalleryTarget.Animated)
00194                 {
00195                     if (shootingGalleryTarget.ShootAtTarget(shotCenter, bulletSize))
00196                     {
00197                         numberHits++;
00198                     }
00199                 }
00200             }
00201 
00202             return numberHits;
00203         }

void NewGamePhysics.GraphicalElements.ShootingGallery.Update ( GameTime  gameTime  ) 

Update (animate) the shooting gallery. Tracks targets that become invisible because they were shot off the screen.

Parameters:
gameTime The game time for updating.

Definition at line 210 of file ShootingGallery.cs.

00211         {
00212             foreach (ShootingGalleryTarget shootingGalleryTarget in this.shootingGalleryTargets)
00213             {
00214                 if (shootingGalleryTarget.Visible)
00215                 {
00216                     if (shootingGalleryTarget.Animated)
00217                     {
00218                         shootingGalleryTarget.Update();
00219                         if (!shootingGalleryTarget.Visible)
00220                         {
00221                             this.numActiveTargets--;
00222                         }
00223                     }
00224                     else
00225                     {
00226                         shootingGalleryTarget.Move(this.targetConveyerSpeed);
00227 
00228                         // Wrap horizontal position around
00229                         Vector2 position = shootingGalleryTarget.Position;
00230                         if ((position.X - this.simulationOrigin.X) < 0.0)
00231                         {
00232                             position.X = this.simulationOrigin.X + (float)this.width;
00233                             shootingGalleryTarget.Position = position;
00234                         }
00235                         else if ((position.X - this.simulationOrigin.X) > (float)this.width)
00236                         {
00237                             position.X = this.simulationOrigin.X;
00238                             shootingGalleryTarget.Position = position;
00239                         }
00240                     }
00241                 }
00242             }
00243         }


Property Documentation

int NewGamePhysics.GraphicalElements.ShootingGallery.NumActiveTargets [get]

Gets the number of active (hittable) targets.

Definition at line 97 of file ShootingGallery.cs.

int NewGamePhysics.GraphicalElements.ShootingGallery.NumTargets [get]

Gets the total number of game targets.

Definition at line 89 of file ShootingGallery.cs.

double NewGamePhysics.GraphicalElements.ShootingGallery.TargetConveyerSpeed [get, set]

Target conveyer animation: horizontal speed. Default: dX = 0.01.

Definition at line 80 of file ShootingGallery.cs.


The documentation for this class was generated from the following file:

Generated by  doxygen 1.6.2