Files

144 lines
2.9 KiB
C++

#include "core/rendering/sprite.h"
#include "core/rendering/texture.h" // for Texture
// Constructor
Sprite::Sprite(int x, int y, int w, int h, Texture *texture, SDL_Renderer *renderer)
: x_(x),
y_(y),
w_(w),
h_(h),
renderer_(renderer),
texture_(texture),
sprite_clip_{0, 0, w, h},
enabled_(true) {
}
Sprite::Sprite(SDL_Rect rect, Texture *texture, SDL_Renderer *renderer)
: x_(rect.x),
y_(rect.y),
w_(rect.w),
h_(rect.h),
renderer_(renderer),
texture_(texture),
sprite_clip_{0, 0, rect.w, rect.h},
enabled_(true) {
}
// Destructor
Sprite::~Sprite() {
texture_ = nullptr;
renderer_ = nullptr;
}
// Muestra el sprite por pantalla
void Sprite::render() {
if (enabled_) {
texture_->render(renderer_, x_, y_, &sprite_clip_);
}
}
// Obten el valor de la variable
auto Sprite::getPosX() const -> int {
return x_;
}
// Obten el valor de la variable
auto Sprite::getPosY() const -> int {
return y_;
}
// Obten el valor de la variable
auto Sprite::getWidth() const -> int {
return w_;
}
// Obten el valor de la variable
auto Sprite::getHeight() const -> int {
return h_;
}
// Establece la posición del objeto
void Sprite::setPos(SDL_Rect rect) {
this->x_ = rect.x;
this->y_ = rect.y;
}
// Establece el valor de la variable
void Sprite::setPosX(int x) {
this->x_ = x;
}
// Establece el valor de la variable
void Sprite::setPosY(int y) {
this->y_ = y;
}
// Establece el valor de la variable
void Sprite::setWidth(int w) {
this->w_ = w;
}
// Establece el valor de la variable
void Sprite::setHeight(int h) {
this->h_ = h;
}
// Obten el valor de la variable
auto Sprite::getSpriteClip() -> SDL_Rect {
return sprite_clip_;
}
// Establece el valor de la variable
void Sprite::setSpriteClip(SDL_Rect rect) {
sprite_clip_ = rect;
}
// Establece el valor de la variable
void Sprite::setSpriteClip(int x, int y, int w, int h) {
sprite_clip_ = {.x = x, .y = y, .w = w, .h = h};
}
// Obten el valor de la variable
auto Sprite::getTexture() -> Texture * {
return texture_;
}
// Establece el valor de la variable
void Sprite::setTexture(Texture *texture) {
this->texture_ = texture;
}
// Obten el valor de la variable
auto Sprite::getRenderer() -> SDL_Renderer * {
return renderer_;
}
// Establece el valor de la variable
void Sprite::setRenderer(SDL_Renderer *renderer) {
this->renderer_ = renderer;
}
// Establece el valor de la variable
void Sprite::setEnabled(bool value) {
enabled_ = value;
}
// Comprueba si el objeto está habilitado
auto Sprite::isEnabled() -> bool {
return enabled_;
}
// Devuelve el rectangulo donde está el sprite
auto Sprite::getRect() -> SDL_Rect {
SDL_Rect rect = {x_, y_, w_, h_};
return rect;
}
// Establece los valores de posición y tamaño del sprite
void Sprite::setRect(SDL_Rect rect) {
x_ = rect.x;
y_ = rect.y;
w_ = rect.w;
h_ = rect.h;
}