#pragma once
#include "ifdefs.h"
#include "ltexture.h"

#ifndef SPRITE_H
#define SPRITE_H

//Clase sprite
class Sprite
{
public:
	//Constructor
	Sprite();

    //Destructor
    ~Sprite();

	//Inicializador
	void init(int x, int y, int w, int h, LTexture *texture, SDL_Renderer *renderer);

    //Muestra el sprite por pantalla
    void render();
    
    //Obten el valor de la variable
    int getPosX();
    
    //Obten el valor de la variable
    int getPosY();
    
    //Obten el valor de la variable
    int getWidth();
    
    //Obten el valor de la variable
    int getHeight();
    
    //Establece el valor de la variable
    void setPosX(int x);
    
    //Establece el valor de la variable
    void setPosY(int y);
    
    //Establece el valor de la variable
    void setWidth(int w);
    
    //Establece el valor de la variable
    void setHeight(int h);
    
    //Obten el valor de la variable
    SDL_Rect getSpriteClip();

    //Establece el valor de la variable
    void setSpriteClip(SDL_Rect rect);

    //Establece el valor de la variable
    void setSpriteClip(int x, int y, int w, int h);

    //Obten el valor de la variable
    LTexture* getTexture();

    //Establece el valor de la variable
    void setTexture(LTexture *texture);

   //Establece el valor de la variable
    void setRenderer(SDL_Renderer *renderer);


protected:
    //Posición X,Y donde dibujar el sprite
    int mPosX;
    int mPosY;
    
    //Alto y ancho del sprite
    Uint16 mWidth;
    Uint16 mHeight;

    //Puntero al renderizador de la ventana
	SDL_Renderer *mRenderer;

    //Textura donde estan todos los dibujos del sprite
    LTexture *mTexture;

    //Rectangulo de la textura que se dibujará en pantalla
    SDL_Rect mSpriteClip;
};

#endif
