diff options
Diffstat (limited to 'Unit.cpp')
| -rw-r--r-- | Unit.cpp | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/Unit.cpp b/Unit.cpp new file mode 100644 index 0000000..38535e7 --- /dev/null +++ b/Unit.cpp @@ -0,0 +1,102 @@ +/* ******************************************************************* + * Includes + * ******************************************************************/ + +#include "BaseUnit.h" +#include "Unit.h" +#include "Sprite.h" +#include <stdbool.h> +#include <stdint.h> +#include <stddef.h> + +/* ******************************************************************* + * Defines + * ******************************************************************/ + +/* ******************************************************************* + * Types definition + * ******************************************************************/ + +/* ******************************************************************* + * Global variables definition + * ******************************************************************/ + +/* ******************************************************************* + * Local variables definition + * ******************************************************************/ + +/* ******************************************************************* + * Local prototypes declaration + * ******************************************************************/ + +/* ******************************************************************* + * Functions definition + * ******************************************************************/ + +/*****************************************************************//** + * + * \brief Constructor for Unit class. + * + *********************************************************************/ +Unit::Unit(const enum Unit::tUnitID eUnitID) : +BaseUnit(), +_eUnitID(eUnitID) +{ +} + +void Unit::create(const enum Unit::tUnitID eUnitID) +{ + _eUnitID = eUnitID; +} + +/*****************************************************************//** + * + * \brief Periodical handler for Unit class. + * + *********************************************************************/ +void Unit::handler(void) +{ + /* Execute base class handler. */ + BaseUnit::handler(); + + drawHandler(); +} + +void Unit::drawHandler(void) +{ + if (_eUnitID < MAX_UNIT_ID) + { + static const uint8_t au8PeasantSprData[] = + { + 8, + 8, + 0x00, + 0x3C, + 0x42, + 0x99, + 0xA5, + 0x66, + 0x18, + 0x00 + }; + + static const uint8_t* const apu8UnitSpriteDataTable[MAX_UNIT_ID] = + { + [UNIT_ID_NONE] = NULL, + [UNIT_ID_PEASANT] = au8PeasantSprData, + [UNIT_ID_SWORDMAN] = NULL + }; + + const uint8_t* const pu8UnitSpriteData = apu8UnitSpriteDataTable[_eUnitID]; + + Sprite spr(*pu8UnitSpriteData); + + spr.setPos(16, 16); + + spr.draw(); + } + else + { + /* Unit has an invalid ID. Exit. */ + } +} |
