#ifndef CHEAT_CAPSULE_HPP_
#define CHEAT_CAPSULE_HPP_

#include <Item/IEquipment.hpp>
#include <Item/StatelessItem/BasicItem/BasicItem.hpp>
#include <Item/IFluidContainingItem.hpp>
#include <FluidRegistry/FluidRegistry.hpp>
#include <Material/Material.hpp>
#include <string>

/**
 * @brief The cheat capsule which contains infinite amounts of any fluid.
 */
class CheatCapsule :
    public BasicItem,
    public IFluidContainingItem,
    public IEquipment
{
private:
    std::string fluidName;

public:
    CheatCapsule(std::string name, std::string fluidName, Material &mat);

    virtual int pullFluid(ItemStack &stack, std::string fluidName, int maxToPull) override;
    virtual int pushFluid(ItemStack &stack, std::string fluidName, int amount) override;
    virtual int getFluidAmount(const ItemStack &stack) override;
    virtual std::string getFluidName(const ItemStack &stack) override;
    virtual int pullFluidForEquipment(ItemStack &stack, std::string fluidName, int maxAmount) override;
};

#endif