#include "EntityType.h"
#include "Entity.h"
#include "Registries.h"


EntityType::EntityType( int id )
    : id( id )
{
    STATIC_REGISTRY( EntityType ).registerT( this, id );
}

void EntityType::loadSuperEntity( Entity* zEntity, Framework::StreamReader* zReader ) const
{
    zEntity->loadInventory( zReader );
    zReader->lese( (char*)&zEntity->id, 4 );
    zReader->lese( (char*)&zEntity->maxHP, 4 );
    zReader->lese( (char*)&zEntity->currentHP, 4 );
    zReader->lese( (char*)&zEntity->stamina, 4 );
    zReader->lese( (char*)&zEntity->maxStamina, 4 );
    zReader->lese( (char*)&zEntity->hunger, 4 );
    zReader->lese( (char*)&zEntity->maxHunger, 4 );
    zReader->lese( (char*)&zEntity->thirst, 4 );
    zReader->lese( (char*)&zEntity->maxThirst, 4 );
    zReader->lese( (char*)&zEntity->speed.x, 4 );
    zReader->lese( (char*)&zEntity->speed.y, 4 );
    zReader->lese( (char*)&zEntity->speed.z, 4 );
    zReader->lese( (char*)&zEntity->faceDir.x, 4 );
    zReader->lese( (char*)&zEntity->faceDir.y, 4 );
    zReader->lese( (char*)&zEntity->currentDimensionId, 4 );
    zReader->lese( (char*)&zEntity->location.x, 4 );
    zReader->lese( (char*)&zEntity->location.y, 4 );
    zReader->lese( (char*)&zEntity->location.z, 4 );
}

void EntityType::createSuperEntity( Entity* zEntity ) const
{}

Entity* EntityType::loadEntity( Framework::StreamReader* zReader ) const
{
    Entity* entity = createEntity();
    createSuperEntity( entity );
    loadSuperEntity( entity, zReader );
    return entity;
}

int EntityType::getId() const
{
    return id;
}