#pragma once #include "core/time.h" #include "core/gameevent.h" #include #include class ClassicArrowNote; class SelectionManager; class ArrowElement; // class ClassicSliderNote; class ClassicGraphicsManager : public std::enable_shared_from_this { public: virtual ~ClassicGraphicsManager() = default; explicit ClassicGraphicsManager(const kku::microsec& visibility_offset) : _visibility_offset(visibility_offset) {} virtual void input(kku::GameEvent&& input) = 0; virtual void display() const = 0; virtual void update(const kku::microsec& offset) = 0; virtual void switchSelection(ArrowElement* element) = 0; virtual void update(const kku::microsec& offset, ClassicArrowNote* note) = 0; // virtual void update(const kku::microsec& offset, ClassicSliderNote* note) = 0; virtual void draw(const ClassicArrowNote * const note) const = 0; // virtual void draw(ClassicSliderNote* note) const = 0; virtual void draw(const std::shared_ptr& selection_manager) const = 0; protected: kku::microsec _visibility_offset; };