#pragma once

#include "classicmode/classicnote.h"

#include "mockelement.h"
#include "classicmode/arrownoteinitializer.h"
#include "selectionmanager.h"

class ClassicMockNote : public ClassicNote
{
public:
    explicit ClassicMockNote(ArrowNoteInitializer&& init, const std::shared_ptr<SelectionManager<ClassicMockNote>>& selection_manager);
    virtual ~ClassicMockNote() = default;

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

    std::vector<MockElement>& getElements();
    void deselect();

private:
    const std::shared_ptr<SelectionManager<ClassicMockNote>> _selection_manager;
    std::vector<MockElement> _elements;
};

using MockElements = std::vector<MockElement>;
