diff options
Diffstat (limited to 'Unit.cpp')
| -rw-r--r-- | Unit.cpp | 72 |
1 files changed, 54 insertions, 18 deletions
@@ -25,6 +25,25 @@ * Local variables definition * ******************************************************************/ +/*****************************************************************//** + * + * \brief Bitmap data for idle UNIT_ID_PEASANT. + * + *********************************************************************/ +static const PROGMEM uint8_t au8PeasantSprData[] = +{ + 8, + 8, + 0x00, + 0x3C, + 0x42, + 0x99, + 0xA5, + 0x66, + 0x18, + 0x00 +}; + /* ******************************************************************* * Local prototypes declaration * ******************************************************************/ @@ -44,9 +63,31 @@ _eUnitID(eUnitID) { } -void Unit::create(const enum Unit::tUnitID eUnitID) +/*****************************************************************//** + * + * \brief Creates a Unit instance by setting default parameters + * and X/Y coordinates. + * + *********************************************************************/ +void Unit::create(const enum Unit::tUnitID eUnitID, const uint16_t x, const uint16_t y) { + /* Execute base class function first. */ + BaseUnit::create(x, y); + + /* Assign new ID to selected Unit. */ _eUnitID = eUnitID; + + /* This table relates all available + * unit IDs against a bitmap data table. */ + const uint8_t au8HpData[MAX_UNIT_ID] PROGMEM = + { + [UNIT_ID_NONE] = 0, + [UNIT_ID_PEASANT] = 25, + [UNIT_ID_SWORDMAN] = 35 + }; + + /* Assign health according to unit ID. */ + _hp = au8HpData[eUnitID]; } /*****************************************************************//** @@ -62,36 +103,31 @@ void Unit::handler(void) drawHandler(); } +/*****************************************************************//** + * + * \brief This function checks whether unit is inside screen + * boundaries and draws its associated bitmap. + * + *********************************************************************/ 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] = + /* This table relates all available + * unit IDs against a bitmap data table. */ + const uint8_t* const apu8UnitSpriteDataTable[MAX_UNIT_ID] PROGMEM = { [UNIT_ID_NONE] = NULL, [UNIT_ID_PEASANT] = au8PeasantSprData, [UNIT_ID_SWORDMAN] = NULL }; + /* Point to appropiate bitmap data given unit ID. */ const uint8_t* const pu8UnitSpriteData = apu8UnitSpriteDataTable[_eUnitID]; - Sprite spr(*pu8UnitSpriteData); + Sprite spr(pu8UnitSpriteData); - spr.setPos(16, 16); + spr.setPos(_x, _y); spr.draw(); } |
