/* ******************************************************************* * Includes * ******************************************************************/ #include "BaseUnit.h" #include "System.h" #include #include #include /* ******************************************************************* * Defines * ******************************************************************/ /* ******************************************************************* * Types definition * ******************************************************************/ /* ******************************************************************* * Global variables definition * ******************************************************************/ /* ******************************************************************* * Local variables definition * ******************************************************************/ /* ******************************************************************* * Local prototypes declaration * ******************************************************************/ /* ******************************************************************* * Functions definition * ******************************************************************/ /*****************************************************************//** * * \brief Constructor for BaseUnit class. * *********************************************************************/ BaseUnit::BaseUnit(void) : _hp(0), _alive(false), _selected(false), _x(0), _y(0) { } /*****************************************************************//** * * \brief This function is executed when user wants to create * a new object derived from BaseUnit, and this function * sets default parameters for a BaseUnit abstract object. * *********************************************************************/ void BaseUnit::create(const uint16_t x, const uint16_t y) { _alive = true; _x = x; _y = y; } /*****************************************************************//** * * \brief Periodical handler for BaseUnit class. * *********************************************************************/ 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. * *********************************************************************/ bool BaseUnit::isAlive(void) { return _alive; } /*****************************************************************//** * * \brief Returns Unit selected flag. * * \return Returns true if Unit object is selected, false otherwise. * *********************************************************************/ bool BaseUnit::isSelected(void) { return _selected; } /*****************************************************************//** * * \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. * *********************************************************************/ uint16_t BaseUnit::getX(void) { return _x; } /*****************************************************************//** * * \brief Returns Unit Y coordinates. * * \return Returns Unit Y coordinates. * *********************************************************************/ uint16_t BaseUnit::getY(void) { return _y; }