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
ExplosionManager.cpp@18:70190f956a24, 2013-06-17 (annotated)
- 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?
User | Revision | Line number | New 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 |