#pragma once

#include "note.h"
#include "precisionevaluator.h"
#include "classicinputtype.h"

class ClassicNote : public Note
{
public:

    enum class GRADE
    {
        PERFECT,
           GOOD,
            BAD
    };

    explicit ClassicNote(const std::vector<microsec>& intervals, microsec perfect_offset, Action action);
    virtual ~ClassicNote() = default;
    virtual bool isActive(microsec music_offset) const override;

    GRADE input(ClassicInputType&& input_data);

private:
    PrecisionEvaluator<GRADE> _evaluator;
    Action _action;
};