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 10 20:02:28 2013 +0000
Revision:
12:81926431fea7
Parent:
10:bfa1c307c99d
Changed so you can specify how many humans you want on each level. Mainly messing around with LevelDescriptor and LevelCollection classes.

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