summaryrefslogtreecommitdiff
path: root/Sprite.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Sprite.cpp')
-rw-r--r--Sprite.cpp34
1 files changed, 31 insertions, 3 deletions
diff --git a/Sprite.cpp b/Sprite.cpp
index 49ee2bd..3b93a0d 100644
--- a/Sprite.cpp
+++ b/Sprite.cpp
@@ -72,12 +72,12 @@ void Sprite::draw(void)
if (_cam != NULL)
{
- const uint8_t x = _followCam ? _cam->getX(_x) : _x;
- const uint8_t y = _followCam ? _cam->getY(_y) : _y;
+ const int16_t x = _followCam ? _cam->getX(_x) : (int16_t)_x;
+ const int16_t y = _followCam ? _cam->getY(_y) : (int16_t)_y;
if (_pu8SprData != NULL)
{
- gb.display.drawBitmap(x, y, _pu8SprData);
+ gb.display.drawBitmap((int8_t)x, (int8_t)y, _pu8SprData);
}
else
{
@@ -90,6 +90,34 @@ void Sprite::draw(void)
}
}
+uint8_t Sprite::getWidth(const uint8_t* const pu8SprData)
+{
+ enum
+ {
+ WIDTH_DATA_INDEX = 0
+ };
+
+ /* Retrieve unit width from sprite data. */
+ const uint8_t w = pgm_read_byte(&pu8SprData[WIDTH_DATA_INDEX]);
+
+ /* Return retrieved width. */
+ return w;
+}
+
+uint8_t Sprite::getHeight(const uint8_t* const pu8SprData)
+{
+ enum
+ {
+ HEIGHT_DATA_INDEX = 1
+ };
+
+ /* Retrieve unit height from sprite data. */
+ const uint8_t h = pgm_read_byte(&pu8SprData[HEIGHT_DATA_INDEX]);
+
+ /* Return retrieved height. */
+ return h;
+}
+
/*****************************************************************//**
*
* \brief Reportedly, this function updates X/Y coordinates for