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
LevelCollection.cpp
- Committer:
- RichardE
- Date:
- 2013-06-09
- Revision:
- 10:bfa1c307c99d
- Parent:
- 0:5fa232ee5fdf
- Child:
- 11:2ddaf46e95cb
File content as of revision 10:bfa1c307c99d:
/* * SOURCE FILE : LevelCollection.cpp * * Definition of class LevelCollection. * */ #include <stdio.h> #include "LevelCollection.h" #include "Level0.h" #include "LevelNormal.h" #include "LevelDescriptor.h" /***************/ /* CONSTRUCTOR */ /***************/ LevelCollection::LevelCollection() { } /**************/ /* DESTRUCTOR */ /**************/ LevelCollection::~LevelCollection() { } #define LEVELCOUNT 3 /************************/ /* GET NUMBER OF LEVELS */ /************************/ UInt8 LevelCollection::GetLevelCount( void ) const { return LEVELCOUNT; } // Level 0 which is NOT dynamically allocated. // Not a real level. This is attract mode. static Level0 level0; // Level descriptors. static const UInt8 ld0[] = { ENDDESCRIPTOR }; static const UInt8 ld1[] = { Grunt, 5, Crusher, 5, ENDDESCRIPTOR }; static const UInt8 ld2[] = { Grunt, 10, Brain, 2, ENDDESCRIPTOR }; // Array pointing to level data for each level. static const UInt8* const levelDescriptors[ LEVELCOUNT ] = { ld0, ld1, ld2, }; /***************/ /* GET A LEVEL */ /***************/ // Pass level number in levelNumber. // Returns pointer to level or NULL if no such level. Level *LevelCollection::GetLevel( UInt8 levelNumber ) { if( levelNumber >= LEVELCOUNT ) { // Level number out of range. return (Level*)NULL; } else if( levelNumber == 0 ) { // Level zero is the attract mode and is not dynamically allocated. return &level0; } else { // Fetch level descriptor for this level and create a Level from it. Level *level = new LevelNormal( levelDescriptors[ levelNumber ] ); // Tag it with the correct level number before returning it. level->LevelNumber = levelNumber; return level; } } /*******************************/ /* FREE MEMORY USED BY A LEVEL */ /*******************************/ // Pass pointer to a level. // Frees memory used by level. void LevelCollection::FreeLevel( Level *level ) { if( ( level != (Level*)NULL ) && level->IsDynamicallyAllocated ) { delete level; } }