#ifndef MENU_SYSTEM_H_205861EC #define MENU_SYSTEM_H_205861EC #include #include "interpolation.h" #include "menu.h" #include "system.h" #include "timer.h" class Game; class MenuSystem : public System { public: static constexpr SystemKey Key = SystemKey::Menu; explicit MenuSystem(Game& game) : game_(game) {} void tick(double dt) override; // Commands void openPauseMenu(); void closePauseMenu(bool playSfx = true); void pressedUp(); void pressedDown(); void activateOption(); // Info double getPauseAnimationProgress() const { return pauseAnimation_.getProgress(); } bool isMenuOpen() const { return openState_ == OpenState::Open; } const std::vector& getMenu() const { return menu_; } int getCursorPosition() const { return cursor_; } int getCursorBob() const { return cursorBob_; } private: enum class OpenState { Closed, Animating, Open }; Game& game_; Interpolation pauseAnimation_; OpenState openState_ = OpenState::Closed; std::vector menu_; int cursor_ = 0; int cursorBob_ = 0; bool cursorBobDown_ = true; Timer cursorBobTimer_ { 125 }; }; #endif /* end of include guard: MENU_SYSTEM_H_205861EC */