From 20936e93023c18f54d217c66b0e08fa80f4f7d50 Mon Sep 17 00:00:00 2001 From: XaviDCR92 Date: Tue, 10 Jul 2018 23:17:34 +0200 Subject: Camera is now an independent instance, and HumanPlayer only holds a reference to it. --- Sprite.cpp | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'Sprite.cpp') diff --git a/Sprite.cpp b/Sprite.cpp index d948652..131a4f1 100644 --- a/Sprite.cpp +++ b/Sprite.cpp @@ -17,6 +17,8 @@ * Global variables definition * ******************************************************************/ +const Camera* _cam; + /* ******************************************************************* * Local variables definition * ******************************************************************/ @@ -36,6 +38,9 @@ * \param pu8SprData * Pointer to raw sprite data. * + * \param _followCam + * Sprite is moved by camera. Default value is true. + * * \param u8Colour * Sprite colour. Default value is BLACK. * @@ -43,8 +48,9 @@ * Sprite rotation. Default value is NOROT. * *********************************************************************/ -Sprite::Sprite(const uint8_t& pu8SprData, const uint8_t u8Colour, const uint8_t rotation) : +Sprite::Sprite(const uint8_t* pu8SprData, const bool followCam, const uint8_t u8Colour, const uint8_t rotation) : _pu8SprData(pu8SprData), +_followCam(followCam), _colour(u8Colour), _rotation(rotation), _x(0), @@ -73,6 +79,17 @@ void Sprite::setPos(const uint8_t x, const uint8_t y) void Sprite::draw(void) { - gb.display.setColor(_colour); - gb.display.drawBitmap(_x, _y, (const uint8_t*)&_pu8SprData); + gb.display.setColor(_colour, WHITE); + + if (_cam != NULL) + { + const uint8_t x = _followCam ? _cam->getX(_x) : _x; + const uint8_t y = _followCam ? _cam->getY(_y) : _y; + + gb.display.drawBitmap(x, y, _pu8SprData); + } + else + { + /* Error: uninitialized camera. */ + } } -- cgit v1.2.3