#ifndef DECORATION_GENERATOR_HPP_
#define DECORATION_GENERATOR_HPP_

#include <Chunk/Chunk.hpp>
#include <GeneratorNode/GeneratorNode.hpp>
#include <Decoration/Decoration.hpp>
#include <DecorationRegistry/DecorationRegistry.hpp>

class SurvivalWorldGenerator;

/**
 * @brief Handles generating terrain decorations.
 */
class DecorationGenerator
{
private:
    SurvivalWorldGenerator &worldgen;
    GeneratorNode decorationNode;
    DecorationRegistry decorationRegistry;

    void generateSpawnedFromChunk(Decoration::Builder &builder, int chunkX, int chunkY);

public:
    /**
     * @brief Construct the decoration generator.
     */
    DecorationGenerator(SurvivalWorldGenerator &worldgen);

    /**
     * @brief Generate decorations on the specified chunk.
     */
    void generate(Chunk &chunk);
};

#endif