#pragma once

#include <SDL2/SDL.h>
#include "common/animatedsprite.h"
#include "common/asset.h"
#include "common/utils.h"
#include <string>

#ifndef ENEMY_H
#define ENEMY_H

// Estructura para pasar los datos de un enemigo
struct enemy_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 enemigo
	std::string animation;	// Fichero con las animaciones del enemigo
	int w;					// Anchura del enemigo
	int h;					// Altura del enemigo
	float x;				// Posición inicial en el eje X
	float y;				// Posición inicial en el eje Y
	float vx;				// Velocidad en el eje X
	float vy;				// Velocidad en el eje Y
};

// Clase Enemy
class Enemy
{
protected:
	SDL_Renderer *renderer; // El renderizador de la ventana
	Asset *asset;			// Objeto con la ruta a todos los ficheros de recursos
	LTexture *texture;		// Textura con los graficos del enemigo
	AnimatedSprite *sprite; // Sprite del enemigo
	SDL_Rect collider;		// Caja de colisión

public:
	// Constructor
	Enemy();
	Enemy(enemy_t enemy);

	// Destructor
	virtual ~Enemy();

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

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

	// Devuelve el rectangulo que contiene al enemigo
	SDL_Rect getRect();

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

#endif
