#ifndef SINGLE_BLOCK_DECORATION_HPP_
#define SINGLE_BLOCK_DECORATION_HPP_

#include <Decoration/Decoration.hpp>

/**
 * @brief Represents a single-block decoration.
 */
class SingleBlockDecoration : public Decoration
{
public:
    typedef std::function<double(const TerrainGenerator::Cell&, GeneratorNode)> Weighter;

private:
    Weighter getCount;
    std::string blockName;
    uint8_t meta;

public:
    /**
     * @brief Construct a single block decoration with the specified block and meta.
     */
    SingleBlockDecoration(Weighter getCount, std::string blockName, uint8_t meta = 0);

    virtual void build(ISculptor &sculptor, GeneratorNode node, glm::ivec3 pos) override;
    virtual double getAverageDensity(const TerrainGenerator::Cell &cell, GeneratorNode node) override;
};

#endif