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:
12:81926431fea7
Improved response to button 1 when entering high scores (HighScoreEntry.cpp).

Who changed what in which revision?

UserRevisionLine numberNew contents of line
RichardE 0:5fa232ee5fdf 1 /*
RichardE 0:5fa232ee5fdf 2 * SOURCE FILE : LevelNormal.h
RichardE 0:5fa232ee5fdf 3 *
RichardE 0:5fa232ee5fdf 4 * Definition of class LevelNormal.
RichardE 0:5fa232ee5fdf 5 * Base class for all "normal" levels.
RichardE 0:5fa232ee5fdf 6 * i.e. Levels that are not special attract modes
RichardE 0:5fa232ee5fdf 7 * but have enemies who are trying to kill you
RichardE 0:5fa232ee5fdf 8 * and so on.
RichardE 0:5fa232ee5fdf 9 *
RichardE 0:5fa232ee5fdf 10 */
RichardE 0:5fa232ee5fdf 11
RichardE 0:5fa232ee5fdf 12 #ifndef LevelNormalDefined
RichardE 0:5fa232ee5fdf 13
RichardE 0:5fa232ee5fdf 14 #define LevelNormalDefined
RichardE 0:5fa232ee5fdf 15
RichardE 0:5fa232ee5fdf 16 #include "Level.h"
RichardE 5:0b0651ac7832 17 #include "LevelData.h"
RichardE 10:bfa1c307c99d 18 #include "LevelDescriptor.h"
RichardE 0:5fa232ee5fdf 19 #include "ExplosionManager.h"
RichardE 0:5fa232ee5fdf 20
RichardE 0:5fa232ee5fdf 21 class LevelNormal : public Level {
RichardE 0:5fa232ee5fdf 22
RichardE 0:5fa232ee5fdf 23 public :
RichardE 0:5fa232ee5fdf 24
RichardE 0:5fa232ee5fdf 25 /***************/
RichardE 0:5fa232ee5fdf 26 /* CONSTRUCTOR */
RichardE 0:5fa232ee5fdf 27 /***************/
RichardE 10:bfa1c307c99d 28 // Pass pointer to level descriptor data in data parameter.
RichardE 12:81926431fea7 29 LevelNormal( const LevelDescriptor *data );
RichardE 0:5fa232ee5fdf 30
RichardE 0:5fa232ee5fdf 31 /**************/
RichardE 0:5fa232ee5fdf 32 /* DESTRUCTOR */
RichardE 0:5fa232ee5fdf 33 /**************/
RichardE 0:5fa232ee5fdf 34 virtual ~LevelNormal();
RichardE 0:5fa232ee5fdf 35
RichardE 10:bfa1c307c99d 36 /**************/
RichardE 10:bfa1c307c99d 37 /* PLAY LEVEL */
RichardE 10:bfa1c307c99d 38 /**************/
RichardE 10:bfa1c307c99d 39 // Returns code indicating how level ended.
RichardE 10:bfa1c307c99d 40 virtual LevelExitCode Play( void );
RichardE 10:bfa1c307c99d 41
RichardE 0:5fa232ee5fdf 42 protected :
RichardE 0:5fa232ee5fdf 43
RichardE 0:5fa232ee5fdf 44 /*************/
RichardE 0:5fa232ee5fdf 45 /* PLAY LOOP */
RichardE 0:5fa232ee5fdf 46 /*************/
RichardE 0:5fa232ee5fdf 47 // Returns code indicating how level ended.
RichardE 0:5fa232ee5fdf 48 // This method should be called from the Play method after the
RichardE 0:5fa232ee5fdf 49 // level data has been initialised and the return value returned
RichardE 0:5fa232ee5fdf 50 // by the Play method.
RichardE 0:5fa232ee5fdf 51 virtual LevelExitCode PlayLoop( void );
RichardE 0:5fa232ee5fdf 52
RichardE 0:5fa232ee5fdf 53 private :
RichardE 0:5fa232ee5fdf 54
RichardE 10:bfa1c307c99d 55 // Data defining the level.
RichardE 10:bfa1c307c99d 56 LevelData dataForLevel;
RichardE 10:bfa1c307c99d 57
RichardE 10:bfa1c307c99d 58 // Descriptor array of bytes.
RichardE 12:81926431fea7 59 const LevelDescriptor *descriptorData;
RichardE 10:bfa1c307c99d 60
RichardE 0:5fa232ee5fdf 61 // Current instance being processed.
RichardE 0:5fa232ee5fdf 62 static LevelNormal *currentInstance;
RichardE 0:5fa232ee5fdf 63
RichardE 0:5fa232ee5fdf 64 /********************/
RichardE 0:5fa232ee5fdf 65 /* INITIALISE LEVEL */
RichardE 0:5fa232ee5fdf 66 /********************/
RichardE 5:0b0651ac7832 67 // Pass pointer to Gameduino to draw on in gd.
RichardE 5:0b0651ac7832 68 void InitialiseLevel( Gameduino *gd );
RichardE 0:5fa232ee5fdf 69
RichardE 0:5fa232ee5fdf 70 /**********************************/
RichardE 0:5fa232ee5fdf 71 /* DRAW SCORE AND NUMBER OF LIVES */
RichardE 0:5fa232ee5fdf 72 /**********************************/
RichardE 0:5fa232ee5fdf 73 void DrawScoreAndLives( void );
RichardE 0:5fa232ee5fdf 74
RichardE 0:5fa232ee5fdf 75 /******************/
RichardE 0:5fa232ee5fdf 76 /* DRAW THE LEVEL */
RichardE 0:5fa232ee5fdf 77 /******************/
RichardE 0:5fa232ee5fdf 78 void DrawLevel( void );
RichardE 0:5fa232ee5fdf 79
RichardE 0:5fa232ee5fdf 80 /************************************************/
RichardE 0:5fa232ee5fdf 81 /* HANDLE COLLISIONS BETWEEN HUMANS AND ENEMIES */
RichardE 0:5fa232ee5fdf 82 /************************************************/
RichardE 0:5fa232ee5fdf 83 // Pass index of human in level's humans array in humanIndex.
RichardE 0:5fa232ee5fdf 84 // Pass sprite number of sprite that it hit in spriteNumber.
RichardE 0:5fa232ee5fdf 85 static void HandleHumanCollision( UInt8 humanIndex, UInt8 spriteNumber );
RichardE 0:5fa232ee5fdf 86
RichardE 0:5fa232ee5fdf 87 /********************************************************/
RichardE 0:5fa232ee5fdf 88 /* HANDLE COLLISIONS BETWEEN PLAYER BULLETS AND ENEMIES */
RichardE 0:5fa232ee5fdf 89 /********************************************************/
RichardE 0:5fa232ee5fdf 90 // Pass index of bullet in player's bullet array in bulletIndex.
RichardE 0:5fa232ee5fdf 91 // Pass sprite number of sprite that it hit in spriteNumber.
RichardE 0:5fa232ee5fdf 92 static void HandleBulletCollision( UInt8 bulletIndex, UInt8 spriteNumber );
RichardE 0:5fa232ee5fdf 93
RichardE 0:5fa232ee5fdf 94 /*********************************************************/
RichardE 0:5fa232ee5fdf 95 /* CHECK FOR COLLISIONS BETWEEN PLAYER AND OTHER OBJECTS */
RichardE 0:5fa232ee5fdf 96 /*********************************************************/
RichardE 0:5fa232ee5fdf 97 // Pass pointer to a flag that will be set true if player is dead in isDead parameter.
RichardE 0:5fa232ee5fdf 98 void CheckPlayerCollisions( bool *isDead );
RichardE 0:5fa232ee5fdf 99
RichardE 0:5fa232ee5fdf 100 /***********************************************************************************/
RichardE 0:5fa232ee5fdf 101 /* WAIT UNTIL SLOT FREE FOR A NEW SOUND, PLAY IT AND WAIT FOR ALL SOUNDS TO FINISH */
RichardE 0:5fa232ee5fdf 102 /***********************************************************************************/
RichardE 0:5fa232ee5fdf 103 // Pass sound to play in soundToPlay parameter.
RichardE 9:fa7e7b37b632 104 void PlaySoundAndWait( const UInt8 *soundToPlay );
RichardE 0:5fa232ee5fdf 105
RichardE 0:5fa232ee5fdf 106 };
RichardE 0:5fa232ee5fdf 107
RichardE 0:5fa232ee5fdf 108 #endif
RichardE 0:5fa232ee5fdf 109
RichardE 0:5fa232ee5fdf 110 /* END of LevelNormal.h */
RichardE 0:5fa232ee5fdf 111