#pragma once

#include <Reader.h>
#include <ReferenceCounter.h>
#include <Vec3.h>

#include "ModelInfo.h"
#include "StaticRegistry.h"

class Block;

class BlockType : public virtual Framework::ReferenceCounter
{
private:
    const int id;
    bool needsInstance;
    int initialMaxHP;
    ModelInfo model;

public:
    BlockType(int id, bool needsInstance, ModelInfo model, int initialMaxHP);
    ~BlockType();
    Block* createBlock(Framework::Vec3<int> position);
    bool doesNeedInstance() const;

    int getId() const;
};