144 lines
2.9 KiB
C++
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;
|
|
} |