summaryrefslogtreecommitdiff
path: root/BaseUnit.cpp
diff options
context:
space:
mode:
authorXaviDCR92 <xavi.dcr@gmail.com>2018-08-05 17:58:03 +0200
committerXaviDCR92 <xavi.dcr@gmail.com>2018-08-05 17:58:03 +0200
commit4efe5ad6f9c8abb53df1e06921ce010ced24868e (patch)
tree24bae4ac1f561fec6af339ab0a2ce7de0ad28718 /BaseUnit.cpp
parentc501d0e4e732e09a4a75d873e976b2c801ef7920 (diff)
* Sprite data width and height is now extracted from Sprite class.
Diffstat (limited to 'BaseUnit.cpp')
-rw-r--r--BaseUnit.cpp33
1 files changed, 24 insertions, 9 deletions
diff --git a/BaseUnit.cpp b/BaseUnit.cpp
index 8fde6b4..f374ab1 100644
--- a/BaseUnit.cpp
+++ b/BaseUnit.cpp
@@ -3,7 +3,9 @@
* ******************************************************************/
#include "BaseUnit.h"
+#include "Camera.h"
#include "System.h"
+#include "Sprite.h"
#include <stdbool.h>
#include <stdint.h>
#include <Gamebuino.h>
@@ -24,6 +26,8 @@
* Local variables definition
* ******************************************************************/
+static const Camera* cam;
+
/* *******************************************************************
* Local prototypes declaration
* ******************************************************************/
@@ -71,6 +75,17 @@ void BaseUnit::handler(void)
/*****************************************************************//**
*
+ * \brief This function sets global camera for all BaseUnit
+ * instances.
+ *
+ *********************************************************************/
+void BaseUnit::setCamera(const Camera* const c)
+{
+ cam = c;
+}
+
+/*****************************************************************//**
+ *
* \brief Periodical draw handler for BaseUnit class.
*
*********************************************************************/
@@ -78,19 +93,19 @@ 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]);
+ const uint8_t w = Sprite::getWidth(pu8SprData);
/* Retrieve unit height from sprite data. */
- const uint8_t h = pgm_read_byte(&pu8SprData[HEIGHT_DATA_INDEX]);
+ const uint8_t h = Sprite::getHeight(pu8SprData);
+
+ if (cam != NULL)
+ {
+ const uint8_t x = cam->getX(_x - w);
+ const uint8_t y = cam->getY(_y - h);
- gb.display.drawRect(_x, _y, w, h);
+ gb.display.drawRoundRect(x, y, w << 1, h << 1, 2);
+ }
}
else
{