1 /* 2 * Copyright (C) 2002-2020 by the Widelands Development Team 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public License 6 * as published by the Free Software Foundation; either version 2 7 * of the License, or (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 17 * 18 */ 19 20 #ifndef WL_UI_FSMENU_BASE_H 21 #define WL_UI_FSMENU_BASE_H 22 23 #include "ui_basic/fullscreen_window.h" 24 #include "ui_basic/panel.h" 25 26 /** 27 * This class is the base class for a fullscreen menu. 28 * A fullscreen menu is a menu which takes the full screen 29 * and it is a modal UI Element 30 */ 31 class FullscreenMenuBase : public UI::FullscreenWindow { 32 public: 33 enum class MenuTarget { 34 kBack = static_cast<int>(UI::Panel::Returncodes::kBack), 35 kOk = static_cast<int>(UI::Panel::Returncodes::kOk), 36 37 // Options 38 kApplyOptions, 39 40 // Main menu 41 kTutorial, 42 kSinglePlayer, 43 kMultiplayer, 44 kReplay, 45 kEditor, 46 kOptions, 47 kAbout, 48 kExit, 49 50 // Single player 51 kNewGame, 52 kCampaign, 53 kLoadGame, 54 55 // Multiplayer 56 kMetaserver, 57 kLan, 58 59 // Launch game 60 kNormalGame, 61 kScenarioGame, 62 kMultiPlayerSavegame, 63 kHostgame, 64 kJoingame 65 }; 66 67 /// A full screen main menu outside of the game/editor itself. 68 FullscreenMenuBase(); 69 ~FullscreenMenuBase() override; 70 71 /// Handle keypresses 72 bool handle_key(bool down, SDL_Keysym code) override; 73 74 protected: 75 virtual void clicked_back(); 76 virtual void clicked_ok(); 77 }; 78 79 #endif // end of include guard: WL_UI_FSMENU_BASE_H 80