#include "sprite.h"

//Constructor
Sprite::Sprite()
{
	init(0, 0, 0, 0, nullptr, nullptr);
}

//Destructor
Sprite::~Sprite()
{
	mTexture = nullptr;
	mRenderer = nullptr;
}

//Inicializador
void Sprite::init(int x, int y, int w, int h, LTexture *texture, SDL_Renderer *renderer)
{
	//Establece el alto y el ancho del sprite
	setWidth(w);
	setHeight(h);

	//Establece la posición X,Y del sprite
	setPosX(x);
	setPosY(y);

	//Establece el puntero al renderizador de la ventana
	setRenderer(renderer);

	//Establece la textura donde están los gráficos para el sprite
	setTexture(texture);

	//Establece el rectangulo de donde coger la imagen
	setSpriteClip(0, 0, w, h);
}

//Inicializador
void Sprite::init(SDL_Rect rect, LTexture *texture, SDL_Renderer *renderer)
{
	//Establece el alto y el ancho del sprite
	mWidth = rect.w;
	mHeight = rect.h;

	//Establece la posición X,Y del sprite
	mPosX = rect.x;
	mPosY = rect.y;

	//Establece el puntero al renderizador de la ventana
	setRenderer(renderer);

	//Establece la textura donde están los gráficos para el sprite
	setTexture(texture);

	//Establece el rectangulo de donde coger la imagen
	setSpriteClip(rect);
}

//Muestra el sprite por pantalla
void Sprite::render()
{
	mTexture->render(mRenderer, mPosX, mPosY, &mSpriteClip);
}

//Obten el valor de la variable
int Sprite::getPosX()
{
	return mPosX;
}

//Obten el valor de la variable
int Sprite::getPosY()
{
	return mPosY;
}

//Obten el valor de la variable
int Sprite::getWidth()
{
	return mWidth;
}

//Obten el valor de la variable
int Sprite::getHeight()
{
	return mHeight;
}

//Establece el valor de la variable
void Sprite::setPosX(int x)
{
	mPosX = x;
}

//Establece el valor de la variable
void Sprite::setPosY(int y)
{
	mPosY = y;
}

//Establece el valor de la variable
void Sprite::setWidth(int w)
{
	mWidth = w;
}

//Establece el valor de la variable
void Sprite::setHeight(int h)
{
	mHeight = h;
}

//Obten el valor de la variable
SDL_Rect Sprite::getSpriteClip()
{
	return mSpriteClip;
}

//Establece el valor de la variable
void Sprite::setSpriteClip(SDL_Rect rect)
{
	mSpriteClip = rect;
}

//Establece el valor de la variable
void Sprite::setSpriteClip(int x, int y, int w, int h)
{
	mSpriteClip.x = x;
	mSpriteClip.y = y;
	mSpriteClip.w = w;
	mSpriteClip.h = h;
}

//Obten el valor de la variable
LTexture *Sprite::getTexture()
{
	return mTexture;
}

//Establece el valor de la variable
void Sprite::setTexture(LTexture *texture)
{
	mTexture = texture;
}

//Establece el valor de la variable
void Sprite::setRenderer(SDL_Renderer *renderer)
{
	mRenderer = renderer;
}