#pragma once

#include "core/note.h"

class ClassicNote : public kku::Note
{
public:

    enum State
    {
          NONE,

        FLYING,
         DYING,
          DEAD
    };

    explicit ClassicNote(const kku::microsec& perfect_offset);
    virtual ~ClassicNote() override = default;

    virtual bool isActive(const kku::microsec& offset) const override = 0;
    virtual void update(const kku::microsec &music_offset) override = 0;

    virtual void input(kku::GameEvent&& input) override = 0;

    void setState(State state) noexcept;
    State getState() const noexcept;

protected:
    State _state;
};
