From fce37403bbc29521b2b5bd983291b3730f8ad7b4 Mon Sep 17 00:00:00 2001 From: Star Rauchenberger Date: Sat, 13 Mar 2021 12:24:05 -0500 Subject: Added submenus #7 --- src/menu_system.h | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'src/menu_system.h') diff --git a/src/menu_system.h b/src/menu_system.h index 736d555..c921d0b 100644 --- a/src/menu_system.h +++ b/src/menu_system.h @@ -1,6 +1,7 @@ #ifndef MENU_SYSTEM_H_205861EC #define MENU_SYSTEM_H_205861EC +#include #include #include "interpolation.h" #include "menu.h" @@ -34,16 +35,24 @@ public: double getPauseAnimationProgress() const { return pauseAnimation_.getProgress(); } - bool isMenuOpen() const { return openState_ == OpenState::Open; } + bool isMenuOpen() const { return openState_ == OpenState::Open && !isMenuChanging_; } - const std::vector& getMenu() const { return menu_; } + // Only call this if a menu is open. + Menu& getMenu() { return menus_.back(); } - int getCursorPosition() const { return cursor_; } + // Only call this if a submenu is open. + Menu& getParentMenu() { return menus_[menus_.size()-2]; } int getCursorBob() const { return cursorBob_; } + double getMenuChangeAnimationProgress() const { return menuChangeAnimation_.getProgress(); } + + bool isMenuChanging() const { return isMenuChanging_; } + private: + void openSubmenu(Menu submenu); + enum class OpenState { Closed, Animating, @@ -51,13 +60,18 @@ private: }; Game& game_; + Interpolation pauseAnimation_; OpenState openState_ = OpenState::Closed; - std::vector menu_; - int cursor_ = 0; + + std::deque menus_; + int cursorBob_ = 0; bool cursorBobDown_ = true; Timer cursorBobTimer_ { 125 }; + + Interpolation menuChangeAnimation_; + bool isMenuChanging_ = false; }; #endif /* end of include guard: MENU_SYSTEM_H_205861EC */ -- cgit 1.4.1