From 38b1780d1e5ff66ada4500b1f01295b987ff97bc Mon Sep 17 00:00:00 2001 From: Pk11 Date: Thu, 14 Jan 2021 13:12:10 -0600 Subject: [PATCH] Fix Sprite::operator= --- include/sprite.hpp | 3 ++- source/sprite.cpp | 27 ++++++++++++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/include/sprite.hpp b/include/sprite.hpp index 553ddbc..a5378ce 100644 --- a/include/sprite.hpp +++ b/include/sprite.hpp @@ -44,9 +44,10 @@ public: Sprite(bool top, SpriteSize size, SpriteColorFormat format, int x = 0, int y = 0, int priority = 0, int id = -1, int paletteAlpha = 15, int rotationIndex = -1, bool doubleSize = false, bool visible = true, bool vFlip = false, bool hFlip = false, bool mosaic = false); Sprite(const Sprite &sprite); - ~Sprite(void); + Sprite &operator=(const Sprite &sprite); + u16* gfx(void) const { return _gfx; } SpriteSize size(void) const { return _size; } SpriteColorFormat format(void) const { return _format; } diff --git a/source/sprite.cpp b/source/sprite.cpp index fbce45c..9d5db78 100644 --- a/source/sprite.cpp +++ b/source/sprite.cpp @@ -101,10 +101,35 @@ Sprite::Sprite(bool top, SpriteSize size, SpriteColorFormat format, int x, int y Sprite::Sprite(const Sprite &sprite) : _top(sprite._top), _oam(sprite._oam), _size(sprite._size), _format(sprite._format), _x(sprite._x), _y(sprite._y), _priority(sprite._priority), _id(sprite._id), _rotationIndex(sprite._rotationIndex), - _paletteAlpha(sprite._paletteAlpha), _visibility(sprite._visibility) { + _paletteAlpha(sprite._paletteAlpha), _width(sprite._width), _height(sprite._height), _rotation(sprite._rotation), + _scaleX(sprite._scaleX), _scaleY(sprite._scaleY), _visibility(sprite._visibility), _gfx(sprite._gfx) { _assigned[_top][_id]++; } +Sprite &Sprite::operator=(const Sprite &sprite) { + _top = sprite._top; + _oam = sprite._oam; + _size = sprite._size; + _format = sprite._format; + _x = sprite._x; + _y = sprite._y; + _priority = sprite._priority; + _id = sprite._id; + _rotationIndex = sprite._rotationIndex; + _paletteAlpha = sprite._paletteAlpha; + _width = sprite._width; + _height = sprite._height; + _rotation = sprite._rotation; + _scaleX = sprite._scaleX; + _scaleY = sprite._scaleY; + _visibility = sprite._visibility; + _gfx = sprite._gfx; + + _assigned[_top][_id]++; + + return *this; +} + Sprite::~Sprite(void) { _assigned[_top][_id]--; if(!_assigned[_top][_id]) {