2 // Copyright (C) 2014 Ingo Ruhnke <grumbel@gmail.com>
4 // This program is free software: you can redistribute it and/or modify
5 // it under the terms of the GNU General Public License as published by
6 // the Free Software Foundation, either version 3 of the License, or
7 // (at your option) any later version.
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.
14 // You should have received a copy of the GNU General Public License
15 // along with this program. If not, see <http://www.gnu.org/licenses/>.
17 #ifndef HEADER_SUPERTUX_SUPERTUX_OPTIONS_HPP
18 #define HEADER_SUPERTUX_SUPERTUX_OPTIONS_HPP
20 #include <boost/optional.hpp>
22 #include "math/size.hpp"
23 #include "util/log.hpp"
24 #include "video/video_systems.hpp"
28 /** Command line argument parsing */
29 class CommandLineArguments
45 boost::optional<Size> fullscreen_size;
46 boost::optional<int> fullscreen_refresh_rate;
47 boost::optional<Size> window_size;
48 boost::optional<Size> aspect_size;
50 // boost::optional<float> magnification;
52 boost::optional<bool> use_fullscreen;
53 boost::optional<VideoSystem::Enum> video;
54 // boost::optional<bool> try_vsync;
55 boost::optional<bool> show_fps;
56 boost::optional<bool> sound_enabled;
57 boost::optional<bool> music_enabled;
58 boost::optional<bool> console_enabled;
60 // boost::optional<int> random_seed;
62 boost::optional<std::string> start_level;
63 boost::optional<bool> enable_script_debugger;
64 boost::optional<std::string> start_demo;
65 boost::optional<std::string> record_demo;
67 // boost::optional<std::string> locale;
70 CommandLineArguments();
71 ~CommandLineArguments();
73 Action get_action() const { return m_action; }
74 LogLevel get_log_level() const { return m_log_level; }
76 void parse_args(int argc, char** argv);
78 void print_help(const char* argv0);
82 void merge_into(Config& config);
85 CommandLineArguments(const CommandLineArguments&) = delete;
86 CommandLineArguments& operator=(const CommandLineArguments&) = delete;