[Super-tux-commit] supertux/src menu.cpp,1.39,1.40 menu.h,1.38,1.39
Brought to you by:
wkendrick
From: Ingo R. <gr...@us...> - 2004-04-19 21:54:43
|
Update of /cvsroot/super-tux/supertux/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21341 Modified Files: menu.cpp menu.h Log Message: - cleaned up my last_menu patch a bit more Index: menu.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/menu.cpp,v retrieving revision 1.39 retrieving revision 1.40 diff -u -d -r1.39 -r1.40 --- menu.cpp 19 Apr 2004 21:21:00 -0000 1.39 +++ menu.cpp 19 Apr 2004 21:54:34 -0000 1.40 @@ -59,15 +59,33 @@ Menu* Menu::current_ = 0; void -Menu::set_current(Menu* menu) +Menu::push_current(Menu* pmenu) { - if (menu) - { - if (last_menus.empty() || menu != last_menus.top()) - last_menus.push(current_); + if (current_) + last_menus.push(current_); + + set_current(pmenu); +} - menu->effect.start(500); +void +Menu::pop_current() +{ + if (!last_menus.empty()) + { + set_current(last_menus.top()); + last_menus.pop(); } + else + { + set_current(0); + } +} + +void +Menu::set_current(Menu* menu) +{ + if (menu) + menu->effect.start(500); current_ = menu; } @@ -234,7 +252,7 @@ { case MN_GOTO: if (item[active_item].target_menu != NULL) - Menu::set_current(item[active_item].target_menu); + Menu::push_current(item[active_item].target_menu); else puts("NULLL"); break; @@ -251,11 +269,7 @@ break; case MN_BACK: - if (!last_menus.empty()) - { - Menu::set_current(last_menus.top()); - last_menus.pop(); - } + Menu::pop_current(); break; default: break; @@ -591,16 +605,8 @@ delete_character++; break; case SDLK_ESCAPE: - if(Menu::current()) - { - if (has_backitem == true && !last_menus.empty()) - { - Menu::set_current(last_menus.top()); - last_menus.pop(); - } - else - Menu::set_current(0); - } + Menu::pop_current(); + break; default: if( (key >= SDLK_0 && key <= SDLK_9) || (key >= SDLK_a && key <= SDLK_z) || (key >= SDLK_SPACE && key <= SDLK_SLASH)) { Index: menu.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/menu.h,v retrieving revision 1.38 retrieving revision 1.39 diff -u -d -r1.38 -r1.39 --- menu.h 19 Apr 2004 21:21:00 -0000 1.38 +++ menu.h 19 Apr 2004 21:54:34 -0000 1.39 @@ -66,6 +66,9 @@ private: static std::stack<Menu*> last_menus; static Menu* current_; + + static void push_current(Menu* pmenu); + static void pop_current(); public: /** Set the current menu, if pmenu is NULL, hide the current menu */ static void set_current(Menu* pmenu); |