#ifndef URANIUM_REFINERY_CONTROLLER_HPP_
#define URANIUM_REFINERY_CONTROLLER_HPP_

#include <memory>

#include <Controller/InventoryController/InventoryController.hpp>
#include <Machine/MUraniumRefinery/MUraniumRefinery.hpp>

/**
 * @brief The uranium refinery controller.
 */
class UraniumRefineryController : public InventoryController
{
private:
    std::shared_ptr<MUraniumRefinery> uraniumRefinery;
    int energy = 0;
    int refuAmount = 0;
    int progress = 0;

    Command<uint32_t, int, int, int> updateUraniumRefineryState;

public:
    UraniumRefineryController(ControllerChannel &channel);

    void onConnect(std::shared_ptr<Machine> uraniumRefineryMachine);

    virtual Widget* getRightPanel() override;
    virtual void update() override;
    virtual glm::vec4 getSlotHighlight(const std::string &id, int slot, ItemStack &stack) override;
};

#endif