From 454c5f7db785065a28e0a29ee1c6b760d7eb7ac1 Mon Sep 17 00:00:00 2001 From: Jorim Tielemans Date: Wed, 31 Jul 2019 17:54:23 +0200 Subject: [PATCH] Not sure if all this is needed --- .../libgba-sprite-engine/sprites/sprite.h | 6 +++--- .../sprites/sprite_builder.h | 21 ++++++++++++++----- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/engine/include/libgba-sprite-engine/sprites/sprite.h b/engine/include/libgba-sprite-engine/sprites/sprite.h index ca2be27..5a80c28 100644 --- a/engine/include/libgba-sprite-engine/sprites/sprite.h +++ b/engine/include/libgba-sprite-engine/sprites/sprite.h @@ -107,12 +107,12 @@ public: GBAVector getPosAsVector() { return GBAVector(getPos()); } VECTOR getCenter() { return { x + w / 2, y + h / 2 }; } VECTOR getVelocity() { return { dx, dy}; } + u32 getX() { return x; } + u32 getY() { return y; } u32 getDx() { return dx; } u32 getDy() { return dy; } - u32 getX() { return x; } - u32 getHeight() { return h; } u32 getWidth() { return w; } - u32 getY() { return y; } + u32 getHeight() { return h; } u32 getCurrentFrame() { return currentFrame; } bool isAnimating() { return animating; }; bool isOffScreen(); diff --git a/engine/include/libgba-sprite-engine/sprites/sprite_builder.h b/engine/include/libgba-sprite-engine/sprites/sprite_builder.h index 5712514..303f414 100644 --- a/engine/include/libgba-sprite-engine/sprites/sprite_builder.h +++ b/engine/include/libgba-sprite-engine/sprites/sprite_builder.h @@ -13,12 +13,12 @@ private: bool stayWithinBounds = false; const void *imageData; u32 x, y, dx, dy; - u32 numberOfFrames, animationDelay; + u32 beginFrame, numberOfFrames, animationDelay; SpriteSize size; void setProperties(T* sprite); void reset() { - imageSize = x = y = dx = dy = numberOfFrames = animationDelay = 0; + imageSize = x = y = dx = dy = beginFrame = numberOfFrames = animationDelay = 0; imageData = nullptr; stayWithinBounds = false; size = SIZE_16_16; @@ -51,9 +51,16 @@ public: this->size = size; return *this; } - SpriteBuilder& withAnimated(int numberOfFrames, int delay) { + SpriteBuilder& withAnimated(int numberOfFrames, int animationDelay) { + this->beginFrame = 0; this->numberOfFrames = numberOfFrames; - this->animationDelay = delay; + this->animationDelay = animationDelay; + return *this; + } + SpriteBuilder& withAnimated(int beginFrame, int numberOfFrames, int animationDelay) { + this->beginFrame = beginFrame; + this->numberOfFrames = numberOfFrames; + this->animationDelay = animationDelay; return *this; } T build(); @@ -73,7 +80,11 @@ template std::unique_ptr SpriteBuilder::buildWithDataOf(const template void SpriteBuilder::setProperties(T* s) { s->setVelocity(this->dx, this->dy); if(this->numberOfFrames > 0) { - s->makeAnimated(this->numberOfFrames, this->animationDelay); + if(this->beginFrame > 0) { + s->makeAnimated(this->beginFrame, this->numberOfFrames, this->animationDelay); + } else { + s->makeAnimated(this->numberOfFrames, this->animationDelay); + } } s->setStayWithinBounds(stayWithinBounds);