#include "classicnote.h" #include "classicsprite.h" #include #include ClassicNote::ClassicNote(const std::vector& intervals, microsec perfect_offset, Type type, const Coordinates& coord, const std::unique_ptr &manager) : Note(perfect_offset), _coordinates(coord), _evaluator(intervals, _perfect_offset), _graphics_manager(manager), _is_expired(true), _type(type) {} bool ClassicNote::isActive(const microsec &music_offset) const { return _evaluator.isActive(music_offset); } void ClassicNote::putToGame(const microsec &music_offset) { _is_expired = false; _graphics_manager->initSprite(this); (void) music_offset; //_appearance_time = music_offset; // To animation manager //_trail_path_percent = ((_perfect_offset - _appearance_time) * 0.01); } bool ClassicNote::isExpired() const { return _is_expired; } void ClassicNote::update(const microsec& music_offset) { bool is_not_active_anymore = (!_is_expired && !isActive(music_offset)); if (is_not_active_anymore) { _graphics_manager->resetSprite(this); _is_expired = true; } } void ClassicNote::input(PlayerInput&& inputdata) { auto grade = ClassicNote::Grade::BAD; if (std::find(_keys.begin(), _keys.end(), inputdata.event.key.code) != _keys.end()) grade = _evaluator.calculatePrecision(inputdata.timestamp); std::cout << "User input: " << static_cast(grade) << "\n"; } std::shared_ptr ClassicNote::sprite() const noexcept { return _sprite; } void ClassicNote::setSprite(const std::shared_ptr& sprite) noexcept { _sprite = sprite; } const Coordinates& ClassicNote::getCoordinates() const noexcept { return _coordinates; } Type ClassicNote::type() const noexcept { return _type; } void ClassicNote::draw() const { _graphics_manager->draw(this); }