#pragma once
#include <SDL2/SDL.h>
#include "utils.h"
#include "asset.h"
#include "sprite.h"
#include <string>

#ifndef ITEM_H
#define ITEM_H

/*
Un item deberia tener la siguiente informacion:
POSICION INICIAL
PNG ASOCIADO
*/

struct item_t
{
	SDL_Renderer *renderer; // El renderizador de la ventana
	Asset *asset;			// Objeto con la ruta a todos los ficheros de recursos
	std::string tileset;	// Fichero con los graficos del item
	int x;					// Posicion del item en pantalla
	int y;					// Posicion del item en pantalla
	int tile;				// Numero de tile dentro de la textura
	int counter;			// Contador inicial. Es el que lo hace cambiar de color
};

// Clase Item
class Item
{
private:
	LTexture *texture;			// Textura con los graficos del objeto
	Sprite *sprite;				// Sprite del objeto
	SDL_Renderer *renderer;		// El renderizador de la ventana
	Asset *asset;				// Objeto con la ruta a todos los ficheros de recursos
	std::vector<color_t> color; // Vector con los colores del objeto
	int counter;				// Contador interno
	SDL_Rect collider;			// Rectangulo de colisión
	int colorChangeSpeed;		// Cuanto mas alto, mas tarda en cambiar de color

public:
	// Constructor
	Item(item_t item);

	// Destructor
	~Item();

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

	// Actualiza las variables del objeto
	void update();

	// Coge el item
	void pick();

	// Obtiene el rectangulo de colision del objeto
	SDL_Rect &getCollider();

	// Obtiene su ubicación
	SDL_Point getPos();

	// Recarga la textura
	void reLoadTexture();
};

#endif
