summaryrefslogtreecommitdiff
path: root/Unit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Unit.cpp')
-rw-r--r--Unit.cpp72
1 files changed, 54 insertions, 18 deletions
diff --git a/Unit.cpp b/Unit.cpp
index 38535e7..a8a5988 100644
--- a/Unit.cpp
+++ b/Unit.cpp
@@ -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();
}