#include "BlockType.h"

#include "Block.h"
#include "Registries.h"

using namespace Framework;

BlockType::BlockType(int id,
    bool needsInstance,
    ModelInfo model,
    int initialMaxHP,
    bool needModelSubscription, bool fluid)
    : ReferenceCounter(),
      id(id),
      needsInstance(needsInstance),
      model(model),
      initialMaxHP(initialMaxHP),
      needModelSubscription(needModelSubscription),
      fluid(fluid)
{}

BlockType::~BlockType() {}

Block* BlockType::createBlock(Framework::Vec3<int> position)
{
    return new Block(this,
        position,
        model.getModel(),
        model.getTexture(),
        initialMaxHP,
        model.isTransparent(),
        needModelSubscription);
}

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

bool BlockType::doesNeedInstance() const
{
    return needsInstance;
}

bool BlockType::doesNeedModelSubscription() const
{
    return needModelSubscription;
}

bool BlockType::isFluid() const
{
	return fluid;
}

const ModelInfo& BlockType::getModelInfo() const
{
    return model;
}