#pragma once #include #include #include #include "../../include/application/state.h" // HOW? WHY DOESN'T "application/state.h" LINK ON BY ITSELF #include "core/corefactory.h" class ClassicFactory; class Application { public: virtual ~Application() = default; virtual bool init(); virtual void display() = 0; virtual void run() = 0; void input(const kku::SystemEvent& input); void update(const kku::microsec& dt); protected: std::shared_ptr _core_factory; std::shared_ptr _game_factory; std::array, GUIState::Tag::AMOUNT> _states; std::vector> _state_stack; void pushState(GUIState::Tag new_state); void popState(); };