#include "enemy.h"
#include <fstream>
#include <sstream>

// Constructor
Enemy::Enemy()
{
}

// Constructor
Enemy::Enemy(enemy_t enemy)
{
    // Obten punteros a objetos
    asset = enemy.asset;
    renderer = enemy.renderer;

    // Crea objetos
    texture = new LTexture(renderer, asset->get(enemy.tileset));
    sprite = new AnimatedSprite(texture, renderer, asset->get(enemy.animation));

    // Obten el resto de valores
    sprite->setPosX(enemy.x);
    sprite->setPosY(enemy.y);
    sprite->setWidth(enemy.w);
    sprite->setHeight(enemy.h);

    sprite->setVelX(enemy.vx);
    sprite->setVelY(enemy.vy);
    sprite->setFlip(enemy.vx > 0 ? SDL_FLIP_NONE : SDL_FLIP_HORIZONTAL);

    collider = getRect();
}

// Destructor
Enemy::~Enemy()
{
    texture->unload();
    delete texture;
    texture = nullptr;

    delete sprite;
    sprite = nullptr;
}

// Pinta el enemigo en pantalla
void Enemy::render()
{
    sprite->render();
}

// Actualiza las variables del objeto
void Enemy::update()
{
    sprite->update();
    sprite->animate();
    collider = getRect();
}

// Devuelve el rectangulo que contiene al enemigo
SDL_Rect Enemy::getRect()
{
    return sprite->getRect();
}

// Obtiene el rectangulo de colision del enemigo
SDL_Rect &Enemy::getCollider()
{
    return collider;
}