#include <menu_manager.hpp>
Static Public Member Functions | |
static void | set_current (Menu *pmenu) |
Set the current menu, if pmenu is NULL, hide the current menu. | |
static void | push_current (Menu *pmenu) |
static void | pop_current () |
static void | recalc_pos () |
static Menu * | current () |
Return the current active menu or NULL if none is active. | |
Static Public Attributes | |
static std::vector< Menu * > | last_menus |
static Menu * | previous |
static Menu * | current_ |
static std::list< Menu * > | all_menus |
Pointers to all currently available menus, used to handle repositioning on window resize. | |
Private Member Functions | |
MenuManager (const MenuManager &) | |
MenuManager & | operator= (const MenuManager &) |
Definition at line 25 of file menu_manager.hpp.
MenuManager::MenuManager | ( | const MenuManager & | ) | [private] |
void MenuManager::set_current | ( | Menu * | pmenu | ) | [static] |
Set the current menu, if pmenu is NULL, hide the current menu.
Definition at line 58 of file menu_manager.cpp.
References Menu::close, current_, Menu::effect_progress, Menu::effect_start_time, g_jk_controller, last_menus, previous, real_time, and JoystickKeyboardController::reset().
Referenced by MainMenu::check_menu(), TitleScreen::leave(), ProfileMenu::menu_action(), worldmap::WorldMap::on_escape_press(), pop_current(), GameSession::process_menu(), worldmap::WorldMap::setup(), TitleScreen::setup(), TitleScreen::start_game(), GameSession::toggle_pause(), worldmap::WorldMap::update(), and TitleScreen::update().
00059 { 00060 if (current_ && current_->close == true) 00061 return; 00062 00063 previous = current_; 00064 00065 if (menu) { 00066 menu->effect_start_time = real_time; 00067 menu->effect_progress = 0.0f; 00068 current_ = menu; 00069 } 00070 else if (current_) { 00071 last_menus.clear(); //NULL new menu pointer => close all menus 00072 current_->effect_start_time = real_time; 00073 current_->effect_progress = 0.0f; 00074 current_->close = true; 00075 } 00076 00077 // just to be sure... 00078 g_jk_controller->reset(); 00079 }
void MenuManager::push_current | ( | Menu * | pmenu | ) | [static] |
Definition at line 30 of file menu_manager.cpp.
References current_, Menu::effect_start_time, last_menus, previous, and real_time.
Referenced by MainMenu::check_menu(), ContribMenu::check_menu(), and Menu::update().
00031 { 00032 previous = current_; 00033 00034 if (current_) 00035 last_menus.push_back(current_); 00036 00037 current_ = pmenu; 00038 current_->effect_start_time = real_time; 00039 current_->effect_progress = 0.0f; 00040 }
void MenuManager::pop_current | ( | ) | [static] |
Definition at line 43 of file menu_manager.cpp.
References current_, Menu::effect_progress, Menu::effect_start_time, last_menus, previous, real_time, and set_current().
Referenced by LanguageMenu::menu_action(), and Menu::update().
00044 { 00045 previous = current_; 00046 00047 if (last_menus.size() >= 1) { 00048 current_ = last_menus.back(); 00049 current_->effect_start_time = real_time; 00050 current_->effect_progress = 0.0f; 00051 last_menus.pop_back(); 00052 } else { 00053 set_current(NULL); 00054 } 00055 }
void MenuManager::recalc_pos | ( | ) | [static] |
Definition at line 82 of file menu_manager.cpp.
References all_menus, current_, SCREEN_HEIGHT, SCREEN_WIDTH, and Menu::set_pos().
Referenced by OptionsMenu::menu_action(), and ScreenManager::process_events().
00083 { 00084 if (current_) 00085 current_->set_pos(SCREEN_WIDTH/2, SCREEN_HEIGHT/2); 00086 00087 for(std::list<Menu*>::iterator i = all_menus.begin(); i != all_menus.end(); ++i) 00088 { 00089 // FIXME: This is of course not quite right, since it ignores any previous set_pos() calls 00090 (*i)->set_pos(SCREEN_WIDTH/2, SCREEN_HEIGHT/2); 00091 } 00092 }
static Menu* MenuManager::current | ( | ) | [inline, static] |
Return the current active menu or NULL if none is active.
Definition at line 46 of file menu_manager.hpp.
References current_.
Referenced by ScreenManager::draw(), worldmap::WorldMap::on_escape_press(), ScreenManager::process_events(), JoystickKeyboardController::process_key_event(), GameSession::process_menu(), worldmap::WorldMap::update(), TitleScreen::update(), GameSession::update(), and ScreenManager::update_gamelogic().
00047 { 00048 return current_; 00049 }
MenuManager& MenuManager::operator= | ( | const MenuManager & | ) | [private] |
std::vector< Menu * > MenuManager::last_menus [static] |
Definition at line 28 of file menu_manager.hpp.
Referenced by Menu::get_parent(), pop_current(), push_current(), and set_current().
Menu * MenuManager::previous [static] |
Definition at line 29 of file menu_manager.hpp.
Referenced by Menu::draw(), pop_current(), push_current(), set_current(), and Menu::~Menu().
Menu * MenuManager::current_ [static] |
Definition at line 30 of file menu_manager.hpp.
Referenced by current(), Menu::draw(), pop_current(), push_current(), recalc_pos(), set_current(), Menu::update(), and Menu::~Menu().
std::list< Menu * > MenuManager::all_menus [static] |
Pointers to all currently available menus, used to handle repositioning on window resize.
Definition at line 34 of file menu_manager.hpp.
Referenced by Menu::Menu(), recalc_pos(), and Menu::~Menu().