X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fsupertux%2Fmenu%2Fmenu_storage.cpp;h=67b76daa7ecfa6e71eed03d421c0eced6250b169;hb=5033c64a9b71986cd64f0963e690ac985dd0fd1a;hp=0623f236122fbff69b9893a882d6699bcaf28462;hpb=7ba504d57d046948d4f5155fb45b780b242cf97b;p=supertux.git diff --git a/src/supertux/menu/menu_storage.cpp b/src/supertux/menu/menu_storage.cpp index 0623f2361..67b76daa7 100644 --- a/src/supertux/menu/menu_storage.cpp +++ b/src/supertux/menu/menu_storage.cpp @@ -1,5 +1,5 @@ // SuperTux -// Copyright (C) 2009 Ingo Ruhnke +// Copyright (C) 2009 Ingo Ruhnke // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -16,11 +16,19 @@ #include "supertux/menu/menu_storage.hpp" -#include "supertux/menu/options_menu.hpp" -#include "supertux/menu/profile_menu.hpp" +#include "supertux/globals.hpp" +#include "supertux/menu/addon_menu.hpp" +#include "supertux/menu/cheat_menu.hpp" +#include "supertux/menu/contrib_menu.hpp" +#include "supertux/menu/game_menu.hpp" #include "supertux/menu/joystick_menu.hpp" #include "supertux/menu/keyboard_menu.hpp" -#include "supertux/globals.hpp" +#include "supertux/menu/language_menu.hpp" +#include "supertux/menu/main_menu.hpp" +#include "supertux/menu/options_menu.hpp" +#include "supertux/menu/profile_menu.hpp" +#include "supertux/menu/worldmap_menu.hpp" +#include "supertux/menu/worldmap_cheat_menu.hpp" MenuStorage* MenuStorage::s_instance = 0; @@ -42,48 +50,60 @@ MenuStorage::~MenuStorage() s_instance = nullptr; } -OptionsMenu* -MenuStorage::get_options_menu() +std::unique_ptr +MenuStorage::create(MenuId menu_id) { - if (!m_options_menu) + switch(menu_id) { - m_options_menu.reset(new OptionsMenu); - } + case MAIN_MENU: + return std::unique_ptr(new MainMenu); - return m_options_menu.get(); -} + case LANGUAGE_MENU: + return std::unique_ptr(new LanguageMenu); -ProfileMenu* -MenuStorage::get_profile_menu() -{ - if (!m_profile_menu) - { - m_profile_menu.reset(new ProfileMenu); - } + case OPTIONS_MENU: + return std::unique_ptr(new OptionsMenu(true)); - return m_profile_menu.get(); -} + case INGAME_OPTIONS_MENU: + return std::unique_ptr(new OptionsMenu(false)); -KeyboardMenu* -MenuStorage::get_key_options_menu() -{ - if (!m_key_options_menu) - { - m_key_options_menu.reset(new KeyboardMenu(g_input_manager)); - } + case PROFILE_MENU: + return std::unique_ptr(new ProfileMenu); - return m_key_options_menu.get(); -} + case KEYBOARD_MENU: + return std::unique_ptr(new KeyboardMenu(*InputManager::current())); -JoystickMenu* -MenuStorage::get_joystick_options_menu() -{ - if (!m_joystick_options_menu) - { - m_joystick_options_menu.reset(new JoystickMenu(g_input_manager)); - } + case JOYSTICK_MENU: + return std::unique_ptr(new JoystickMenu(*InputManager::current())); + + case WORLDMAP_MENU: + return std::unique_ptr(new WorldmapMenu); + + case WORLDMAP_CHEAT_MENU: + return std::unique_ptr(new WorldmapCheatMenu); - return m_joystick_options_menu.get(); + case GAME_MENU: + return std::unique_ptr(new GameMenu); + + case CHEAT_MENU: + return std::unique_ptr(new CheatMenu); + + case CONTRIB_MENU: + return std::unique_ptr(new ContribMenu); + + case CONTRIB_WORLD_MENU: + return 0; //return new ContribWorldMenu(); + + case ADDON_MENU: + return std::unique_ptr(new AddonMenu); + + case NO_MENU: + return std::unique_ptr(); + + default: + assert(!"unknown MenuId provided"); + return std::unique_ptr(); + } } /* EOF */