#pragma once
#include "ifdefs.h"
#include "animatedsprite.h"
#include "struct.h"

#ifndef ITEM_H
#define ITEM_H

//Clase AnimatedSprite
class Item
{
public:
    //Constructor
    Item();

    //Destructor
    ~Item();

    //Iniciador
    void init(Uint8 value, float x, float y, LTexture* texture, SDL_Renderer *renderer);

    //Centra el objeto en la posición X
    void allignTo(int x);

    //Pinta el objeto en la pantalla
    void render();

    //Actualiza la posición y estados del objeto
    void move();

    //Pone a cero todos los valores del objeto
    void erase();

    //Actualiza al objeto a su posicion, animación y controla los contadores
    void update();

    //Actualiza el contador
    void updateTimeToLive();

    //Comprueba si el objeto sigue vivo
    void checkTimeToLive();

    //Obtiene del valor de la variable
    float getPosX();

    //Obtiene del valor de la variable
    float getPosY();

    //Obtiene del valor de la variable
    int getWidth();

    //Obtiene del valor de la variable
    int getHeight();

    //Obtiene del valor de la variable
    int getClass();

    //Obtiene el valor de la variable
    bool isEnabled();

    //Establece el valor de la variable
    void setEnabled(bool value);

    //Obtiene el circulo de colisión
    Circle &getCollider();

        //Temporizador con el tiempo que el objeto está presente
    Uint16 mTimeToLive;

private:
    //Posición X,Y del objeto
    float mPosX;
    float mPosY;

    //Alto y ancho del objeto
    Uint8 mWidth;
    Uint8 mHeight;

    //Variables para controlar la velocidad del objeto
    float mVelX;
    float mVelY;

    //Aceleración
    float mAccelX;
    float mAccelY;

    //Sprite con los graficos del objeto
    AnimatedSprite *mSprite;

    //Especifica el tipo de objeto que es
    Uint8 mClass;

    //Especifica si está habilitado el objeto
    bool mEnabled;



	//Circulo de colisión del objeto
	Circle mCollider;

   //Alinea el circulo de colisión con la posición del objeto 
    void shiftColliders();
};

#endif
