diff options
Diffstat (limited to 'BaseUnit.cpp')
| -rw-r--r-- | BaseUnit.cpp | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/BaseUnit.cpp b/BaseUnit.cpp index c06a6b4..8fde6b4 100644 --- a/BaseUnit.cpp +++ b/BaseUnit.cpp @@ -3,8 +3,10 @@ * ******************************************************************/ #include "BaseUnit.h" +#include "System.h" #include <stdbool.h> #include <stdint.h> +#include <Gamebuino.h> /* ******************************************************************* * Defines @@ -69,6 +71,35 @@ void BaseUnit::handler(void) /*****************************************************************//** * + * \brief Periodical draw handler for BaseUnit class. + * + *********************************************************************/ +void BaseUnit::drawHandler(const uint8_t* const pu8SprData) +{ + if (isSelected()) + { + enum + { + WIDTH_DATA_INDEX, + HEIGHT_DATA_INDEX + }; + + /* Retrieve unit width from sprite data. */ + const uint8_t w = pgm_read_byte(&pu8SprData[WIDTH_DATA_INDEX]); + + /* Retrieve unit height from sprite data. */ + const uint8_t h = pgm_read_byte(&pu8SprData[HEIGHT_DATA_INDEX]); + + gb.display.drawRect(_x, _y, w, h); + } + else + { + /* BaseUnit object is not selected. Exit. */ + } +} + +/*****************************************************************//** + * * \brief Returns Unit alive flag. * * \return Returns true if Unit object is alive, false otherwise. @@ -93,6 +124,21 @@ bool BaseUnit::isSelected(void) /*****************************************************************//** * + * \brief This function selects/deselects a \ref BaseUnit object + * according to requested state. + * + * \param bSelect + * If true, unit must be selected. Otherwise, unit + * must be deselected. + * + *********************************************************************/ +void BaseUnit::setSelected(const bool bSelect) +{ + _selected = bSelect; +} + +/*****************************************************************//** + * * \brief Returns Unit X coordinates. * * \return Returns Unit X coordinates. @@ -102,3 +148,15 @@ uint16_t BaseUnit::getX(void) { return _x; } + +/*****************************************************************//** + * + * \brief Returns Unit Y coordinates. + * + * \return Returns Unit Y coordinates. + * + *********************************************************************/ +uint16_t BaseUnit::getY(void) +{ + return _y; +} |
