diff options
| author | XaviDCR92 <xavi.dcr@gmail.com> | 2018-08-05 17:58:03 +0200 |
|---|---|---|
| committer | XaviDCR92 <xavi.dcr@gmail.com> | 2018-08-05 17:58:03 +0200 |
| commit | 4efe5ad6f9c8abb53df1e06921ce010ced24868e (patch) | |
| tree | 24bae4ac1f561fec6af339ab0a2ce7de0ad28718 /BaseUnit.cpp | |
| parent | c501d0e4e732e09a4a75d873e976b2c801ef7920 (diff) | |
* Sprite data width and height is now extracted from Sprite class.
Diffstat (limited to 'BaseUnit.cpp')
| -rw-r--r-- | BaseUnit.cpp | 33 |
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 { |
