diff options
Diffstat (limited to 'Sprite.cpp')
| -rw-r--r-- | Sprite.cpp | 34 |
1 files changed, 31 insertions, 3 deletions
@@ -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 |
