103 lines
2.7 KiB
C++
103 lines
2.7 KiB
C++
/* *******************************************************************
|
|
* 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. */
|
|
}
|
|
}
|