Version of Robotron arcade game using LPC1768, a Gameduino shield, a serial EEPROM (for high scores), two microswitch joysticks and two buttons plus a box to put it in. 20 levels of mayhem.

Dependencies:   25LCxxx_SPI CommonTypes Gameduino mbed

Committer:
RichardE
Date:
Mon Jun 17 15:10:43 2013 +0000
Revision:
18:70190f956a24
Parent:
8:82d88f9381f3
Improved response to button 1 when entering high scores (HighScoreEntry.cpp).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RichardE 8:82d88f9381f3 1 /*
RichardE 8:82d88f9381f3 2 * SOURCE FILE : ExplosionManager.cpp
RichardE 8:82d88f9381f3 3 *
RichardE 8:82d88f9381f3 4 * Responsible for managing a collection of explosions.
RichardE 8:82d88f9381f3 5 *
RichardE 8:82d88f9381f3 6 */
RichardE 8:82d88f9381f3 7
RichardE 8:82d88f9381f3 8 #include "ExplosionManager.h"
RichardE 8:82d88f9381f3 9 #include "SpriteNumber.h"
RichardE 8:82d88f9381f3 10
RichardE 8:82d88f9381f3 11 // An instance of this class.
RichardE 8:82d88f9381f3 12 ExplosionManager ExplosionManager::Instance( FirstExplosionSprite );
RichardE 8:82d88f9381f3 13
RichardE 8:82d88f9381f3 14 /***************/
RichardE 8:82d88f9381f3 15 /* CONSTRUCTOR */
RichardE 8:82d88f9381f3 16 /***************/
RichardE 8:82d88f9381f3 17 // Pass index of first sprite used for explosions in fsn.
RichardE 8:82d88f9381f3 18 ExplosionManager::ExplosionManager( UInt8 fsn ) :
RichardE 8:82d88f9381f3 19 firstSpriteNumber( fsn )
RichardE 8:82d88f9381f3 20 {
RichardE 8:82d88f9381f3 21 KillAllExplosions();
RichardE 8:82d88f9381f3 22 }
RichardE 8:82d88f9381f3 23
RichardE 8:82d88f9381f3 24 /**************/
RichardE 8:82d88f9381f3 25 /* DESTRUCTOR */
RichardE 8:82d88f9381f3 26 /**************/
RichardE 8:82d88f9381f3 27 ExplosionManager::~ExplosionManager() {
RichardE 8:82d88f9381f3 28 }
RichardE 8:82d88f9381f3 29
RichardE 8:82d88f9381f3 30 /**************************/
RichardE 8:82d88f9381f3 31 /* START AN EXPLOSION OFF */
RichardE 8:82d88f9381f3 32 /**************************/
RichardE 8:82d88f9381f3 33 // Pass start coordinates in x and y (NOT pixel coordinates).
RichardE 8:82d88f9381f3 34 // Returns pointer to an ExplosionObject if it was started successfully or NULL if
RichardE 8:82d88f9381f3 35 // no more explosions are available at the moment.
RichardE 8:82d88f9381f3 36 ExplosionObject *ExplosionManager::StartExplosion( Int16 x, Int16 y ) {
RichardE 8:82d88f9381f3 37 // Find a free explosion slot.
RichardE 8:82d88f9381f3 38 UInt8 i = 0;
RichardE 8:82d88f9381f3 39 ExplosionObject *explosion = (ExplosionObject*)NULL;
RichardE 8:82d88f9381f3 40 while( ( i < MaxExplosions ) && ( explosion == (ExplosionObject*)NULL ) ) {
RichardE 8:82d88f9381f3 41 if( explosionPointers[ i ] == (GameObject*)NULL ) {
RichardE 8:82d88f9381f3 42 explosion = explosions + i;
RichardE 8:82d88f9381f3 43 explosionPointers[ i ] = explosion;
RichardE 8:82d88f9381f3 44 explosion->SpriteNumber = firstSpriteNumber + i;
RichardE 8:82d88f9381f3 45 explosion->Xco = x;
RichardE 8:82d88f9381f3 46 explosion->Yco = y;
RichardE 8:82d88f9381f3 47 explosion->Restart();
RichardE 8:82d88f9381f3 48 }
RichardE 8:82d88f9381f3 49 i++;
RichardE 8:82d88f9381f3 50 }
RichardE 8:82d88f9381f3 51 return explosion;
RichardE 8:82d88f9381f3 52 }
RichardE 8:82d88f9381f3 53
RichardE 8:82d88f9381f3 54 /***********************/
RichardE 8:82d88f9381f3 55 /* KILL ALL EXPLOSIONS */
RichardE 8:82d88f9381f3 56 /***********************/
RichardE 8:82d88f9381f3 57 void ExplosionManager::KillAllExplosions( void ) {
RichardE 8:82d88f9381f3 58 for( UInt8 i = 0; i < MaxExplosions; ++i ) {
RichardE 8:82d88f9381f3 59 explosionPointers[ i ] = (GameObject*)NULL;
RichardE 8:82d88f9381f3 60 }
RichardE 8:82d88f9381f3 61 }
RichardE 8:82d88f9381f3 62