MenuManager Class Reference

#include <menu_manager.hpp>

List of all members.

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 Menucurrent ()
 Return the current active menu or NULL if none is active.

Static Public Attributes

static std::vector< Menu * > last_menus
static Menuprevious
static Menucurrent_
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 &)
MenuManageroperator= (const MenuManager &)


Detailed Description

Definition at line 25 of file menu_manager.hpp.


Constructor & Destructor Documentation

MenuManager::MenuManager ( const MenuManager  )  [private]


Member Function Documentation

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]


Member Data Documentation

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().


The documentation for this class was generated from the following files:
Generated on Mon Jun 9 03:38:32 2014 for SuperTux by  doxygen 1.5.1