#ifndef ACCUMULATOR_HPP_
#define ACCUMULATOR_HPP_

#include <Block/SpriteBlock/SpriteBlock.hpp>
#include <Machine/MAccumulator/MAccumulator.hpp>
#include <Block/MachineBlockMixin.hpp>

class Accumulator :
    public SpriteBlock,
    public MachineBlockMixin<MAccumulator>
{
private:
    static std::vector<Sprite> makeSprites();

public:
    Accumulator(std::string name);

    virtual bool canManuallyDig() override;
    virtual void onInteract(LocalWorld &world, Player &player, glm::ivec3 pos, Side side, const RGBABytes &collisionKey) override;
    virtual void getHarvestedStacks(LocalWorld &world, glm::ivec3 pos, std::vector<ItemStack> &stacks) override;
    virtual bool canPlace(LocalWorld &world, IWorldActor &actor, glm::ivec3 pos, Side side, uint8_t &meta) override;
};

#endif