summaryrefslogtreecommitdiff
path: root/BaseUnit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'BaseUnit.cpp')
-rw-r--r--BaseUnit.cpp58
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;
+}