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

// Constructor
Actor::Actor()
{
}

// Constructor
Actor::Actor(actor_t actor)
{
    // Obten punteros a objetos
    asset = actor.asset;
    renderer = actor.renderer;

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

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

    sprite->setVelX(actor.vx);
    sprite->setVelY(actor.vy);

    sprite->setFlip(actor.vx > 0 ? SDL_FLIP_NONE : SDL_FLIP_HORIZONTAL);
    this->name = actor.name;
}

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

    delete sprite;
    sprite = nullptr;
}

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

// Actualiza las variables del objeto
void Actor::update()
{
    sprite->update();
    sprite->animate();
}

// Obtiene el rectangulo de colision del enemigo
SDL_Rect &Actor::getCollider()
{
    collider = sprite->getRect();
    return collider;
}

// Obtiene el nombre del actor
actor_name_e Actor::getName()
{
    return name;
}

// Obtiene el valor de la variable
int Actor::getIncX()
{
    return sprite->getIncX();
}