#pragma once

#include "classicmode/classicactions.h"

#include "core/gameevent.h"
#include "core/point.h" 

#include <memory>
#include <vector>
#include <array>

class ClassicNoteGraphics;
class ClassicAnimationScenario;

struct ArrowElement
{
    std::shared_ptr<ClassicNoteGraphics> sprite;
    std::array<std::shared_ptr<ClassicAnimationScenario>, 5> animations;

    kku::SystemEvent::Key::Code pressed_as = kku::SystemEvent::Key::Code::Unknown;

    kku::Point position;
    std::vector<kku::Point> falling_curve_interpolation;
    std::array<kku::SystemEvent::Key::Code, 2> keys;
    Type type = Type::NONE;
    bool pressed = false;

    // Each note may consist of several buttons.
    // For example, ↑ → or ↓ → ←
    // Note Element represents this idea.
};
