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