#include "addon/manager.hpp"
#include "build_info.hpp"
#include "commandline_argv.hpp"
#include "commandline_options.hpp"
#include "config.hpp"
#include "cursor.hpp"
#include "editor/editor_main.hpp"
#include "filesystem.hpp"
#include "floating_label.hpp"
#include "font/error.hpp"
#include "font/font_config.hpp"
#include "formula/formula.hpp"
#include "game_config.hpp"
#include "game_config_manager.hpp"
#include "game_end_exceptions.hpp"
#include "game_launcher.hpp"
#include "gettext.hpp"
#include "gui/core/event/handler.hpp"
#include "gui/dialogs/end_credits.hpp"
#include "gui/dialogs/loading_screen.hpp"
#include "gui/dialogs/message.hpp"
#include "gui/dialogs/migrate_version_selection.hpp"
#include "gui/dialogs/title_screen.hpp"
#include "gui/gui.hpp"
#include "picture.hpp"
#include "log.hpp"
#include "preferences/general.hpp"
#include "scripting/application_lua_kernel.hpp"
#include "scripting/plugins/context.hpp"
#include "scripting/plugins/manager.hpp"
#include "sdl/exception.hpp"
#include "sdl/rect.hpp"
#include "serialization/binary_or_text.hpp"
#include "serialization/parser.hpp"
#include "serialization/preprocessor.hpp"
#include "serialization/unicode_cast.hpp"
#include "serialization/schema_validator.hpp"
#include "sound.hpp"
#include "formula/string_utils.hpp"
#include <functional>
#include "game_version.hpp"
#include "video.hpp"
#include "wesconfig.h"
#include "widgets/button.hpp"
#include "wml_exception.hpp"
#include <fenv.h>
#include <SDL2/SDL.h>
#include <boost/iostreams/categories.hpp>
#include <boost/iostreams/copy.hpp>
#include <boost/iostreams/filter/bzip2.hpp>
#include <boost/iostreams/filter/gzip.hpp>
#include <boost/iostreams/filtering_stream.hpp>
#include <boost/program_options/errors.hpp>
#include <optional>
#include <algorithm>
#include <cerrno>
#include <clocale>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <exception>
#include <vector>
#include <iostream>
Go to the source code of this file.
Namespaces | |
game | |
Macros | |
#define | LOG_CONFIG LOG_STREAM(info, log_config) |
#define | LOG_GENERAL LOG_STREAM(info, lg::general()) |
#define | LOG_PREPROC LOG_STREAM(info, log_preprocessor) |
#define | error_exit(res) return res |
Functions | |
static void | safe_exit (int res) |
template<typename filter > | |
static void | encode (const std::string &input_file, const std::string &output_file) |
template<typename filter > | |
static void | decode (const std::string &input_file, const std::string &output_file) |
static void | gzip_encode (const std::string &input_file, const std::string &output_file) |
static void | gzip_decode (const std::string &input_file, const std::string &output_file) |
static void | bzip2_encode (const std::string &input_file, const std::string &output_file) |
static void | bzip2_decode (const std::string &input_file, const std::string &output_file) |
static void | handle_preprocess_command (const commandline_options &cmdline_opts) |
static int | handle_validate_command (const std::string &file, abstract_validator &validator, const std::vector< std::string > &defines) |
static int | process_command_args (const commandline_options &cmdline_opts) |
Process commandline-arguments. More... | |
static void | init_locale () |
I would prefer to setup locale first so that early error messages can get localized, but we need the game_launcher initialized to have filesystem::get_intl_dir() to work. More... | |
static void | warn_early_init_failure () |
Print an alert and instructions to stderr about early initialization errors. More... | |
static void | handle_lua_script_args (game_launcher *game, commandline_options &) |
Handles the lua script command line arguments if present. More... | |
static void | check_fpu () |
static int | do_gameloop (const std::vector< std::string > &args) |
Setups the game environment and enters the titlescreen or game loops. More... | |
static std::string | autodetect_game_data_dir (std::string exe_dir) |
Try to autodetect the location of the game data dir. More... | |
int | main (int argc, char **argv) |
Variables | |
static lg::log_domain | log_config ("config") |
static lg::log_domain | log_preprocessor ("preprocessor") |
#define error_exit | ( | res | ) | return res |
Definition at line 1034 of file wesnoth.cpp.
#define LOG_CONFIG LOG_STREAM(info, log_config) |
Definition at line 135 of file wesnoth.cpp.
#define LOG_GENERAL LOG_STREAM(info, lg::general()) |
Definition at line 137 of file wesnoth.cpp.
#define LOG_PREPROC LOG_STREAM(info, log_preprocessor) |
Definition at line 140 of file wesnoth.cpp.
|
static |
Try to autodetect the location of the game data dir.
Note that the root of the source tree currently doubles as the data dir.
Definition at line 993 of file wesnoth.cpp.
References filesystem::file_exists(), filesystem::get_cwd(), and filesystem::normalize_path().
Referenced by main().
|
static |
Definition at line 215 of file wesnoth.cpp.
Referenced by process_command_args().
|
static |
Definition at line 210 of file wesnoth.cpp.
Referenced by process_command_args().
|
static |
|
static |
Definition at line 181 of file wesnoth.cpp.
References e, in, PLAIN_LOG, gui2::dialogs::tip::remove(), and safe_exit().
|
static |
Setups the game environment and enters the titlescreen or game loops.
Definition at line 748 of file wesnoth.cpp.
References _(), check_fpu(), game_config::check_migration, config::child_range(), game_launcher::CONNECT, filesystem::directory_name(), gui2::dialogs::loading_screen::display(), sound::empty_playlist(), gui2::dialogs::migrate_version_selection::execute(), game_config_manager::game_config(), filesystem::get_logs_dir(), gui2::dialogs::modal_dialog::get_retval(), handle_lua_script_args(), game_launcher::HOST, i, gui2::init(), init_fonts, game_config_manager::init_game_config(), init_locale(), gui2::dialogs::title_screen::LAUNCH_GAME, load_config, font::load_font_config(), game_launcher::LOCAL, LOG_CONFIG, lg::log_dir_writable(), LOG_GENERAL, gui2::dialogs::title_screen::MAP_EDITOR, gui2::dialogs::title_screen::MP_CONNECT, game_config::mp_debug, gui2::dialogs::title_screen::MP_HOST, gui2::dialogs::title_screen::MP_LOCAL, wfl::msg(), game_config::no_addons, game_config_manager::NO_FORCE_RELOAD, commandline_options::noaddons, cursor::NORMAL, gui2::dialogs::message::ok_button, game_config_view::optional_child(), PLAIN_LOG, game_launcher::play_multiplayer(), sound::play_music_config(), plugins_context::play_slice(), process_command_args(), gui2::dialogs::loading_screen::progress(), gui2::dialogs::title_screen::QUIT_GAME, gui2::dialogs::title_screen::REDRAW_BACKGROUND, refresh_addon_version_info_cache(), refresh_addons, game_config_manager::reload_changed_game_config(), game_launcher::RELOAD_DATA, gui2::dialogs::title_screen::RELOAD_GAME_DATA, safe_exit(), cursor::set(), plugins_context::set_callback(), game_config::set_debug(), gui2::dialogs::modal_dialog::show(), gui2::dialogs::title_screen::SHOW_ABOUT, gui2::show_message(), sound::stop_music(), game_config::title_music, commandline_options::to_config(), commandline_options::unit_test, lg::using_own_console(), VGETTEXT, cursor::WAIT, warn_early_init_failure(), and game_config::wesnoth_program_dir.
Referenced by main().
|
static |
Definition at line 153 of file wesnoth.cpp.
References e, in, PLAIN_LOG, gui2::dialogs::tip::remove(), and safe_exit().
|
static |
Definition at line 205 of file wesnoth.cpp.
Referenced by process_command_args().
|
static |
Definition at line 200 of file wesnoth.cpp.
Referenced by process_command_args().
|
static |
Handles the lua script command line arguments if present.
This function will only run once.
Definition at line 656 of file wesnoth.cpp.
Referenced by do_gameloop().
|
static |
Definition at line 220 of file wesnoth.cpp.
References config::all_children_range(), e, filesystem::file_exists(), filesystem::istream_file(), LOG_PREPROC, filesystem::ostream_file(), game_config::path, PLAIN_LOG, commandline_options::preprocess_defines, commandline_options::preprocess_input_macros, commandline_options::preprocess_output_macros, commandline_options::preprocess_path, preprocess_resource(), commandline_options::preprocess_target, read(), preproc_define::read_pair(), and game_config::wesnoth_version.
Referenced by process_command_args().
|
static |
Definition at line 339 of file wesnoth.cpp.
References lg::broke_strict(), LOG_PREPROC, abstract_validator::name_, PLAIN_LOG, preprocess_file(), read(), lg::set_strict_severity(), and game_config::wesnoth_version.
Referenced by process_command_args().
|
static |
I would prefer to setup locale first so that early error messages can get localized, but we need the game_launcher initialized to have filesystem::get_intl_dir() to work.
Note: setlocale() does not take GUI language setting into account.
Definition at line 619 of file wesnoth.cpp.
References translation::bind_textdomain(), filesystem::get_intl_dir(), PACKAGE, and translation::set_default_textdomain().
Referenced by do_gameloop().
int main | ( | int | argc, |
char ** | argv | ||
) |
Definition at line 1041 of file wesnoth.cpp.
References autodetect_game_data_dir(), game_config::build_arch(), lg::do_console_redirect(), do_gameloop(), e, error_exit, filesystem::get_exe_dir(), utils::get_unknown_exception_type(), game_config::path, PLAIN_LOG, read_argv(), game_config::revision, safe_exit(), lg::set_log_to_file(), sw, and t.
|
static |
Process commandline-arguments.
Definition at line 367 of file wesnoth.cpp.
References commandline_options::allow_insecure, game_config::allow_insecure, config::apply_diff(), commandline_options::bunzip2, commandline_options::bzip2, bzip2_decode(), bzip2_encode(), commandline_options::data_dir, commandline_options::data_path, commandline_options::debug_lua, game_config::debug_lua, commandline_options::diff_left, commandline_options::diff_right, commandline_options::do_diff, commandline_options::do_patch, filesystem::file_exists(), game_config::full_build_report(), filesystem::get_cache_dir(), filesystem::get_cwd(), config::get_diff(), filesystem::get_user_config_dir(), filesystem::get_user_data_dir(), filesystem::get_wml_location(), commandline_options::gunzip, commandline_options::gzip, gzip_decode(), gzip_encode(), handle_preprocess_command(), handle_validate_command(), commandline_options::help, filesystem::is_bzip2_file(), filesystem::is_directory(), filesystem::is_gzip_file(), game_config::library_versions_report(), lg::list_logdomains(), commandline_options::log, commandline_options::log_precise_timestamps, commandline_options::logdomains, commandline_options::nobanner, compression::none, filesystem::normalize_path(), game_config::optional_features_report(), commandline_options::output_file, game_config::path, PLAIN_LOG, lg::precise_timestamps(), commandline_options::preprocess, commandline_options::preprocess_defines, commandline_options::preprocess_input_macros, commandline_options::preprocess_path, read(), commandline_options::render_image, commandline_options::report, commandline_options::rng_seed, commandline_options::screenshot, filesystem::set_cache_dir(), schema_validation::schema_validator::set_create_exceptions(), lg::set_log_domain_severity(), filesystem::set_user_config_dir(), filesystem::set_user_data_dir(), commandline_options::simple_version, version_info::str(), commandline_options::strict_lua, game_config::strict_lua, commandline_options::strict_validation, strict_validation_enabled, commandline_options::usercache_dir, commandline_options::usercache_path, commandline_options::userconfig_dir, commandline_options::userconfig_path, commandline_options::userdata_dir, commandline_options::userdata_path, commandline_options::validate_schema, commandline_options::validate_with, commandline_options::validate_wml, commandline_options::version, game_config::wesnoth_version, and config_writer::write().
Referenced by do_gameloop().
|
static |
Definition at line 145 of file wesnoth.cpp.
References LOG_GENERAL.
Referenced by decode(), do_gameloop(), encode(), and main().
|
static |
Print an alert and instructions to stderr about early initialization errors.
This is provided as an aid for users dealing with potential data dir configuration issues. The first code to read core WML has the responsibility to call this function in the event of a problem, to inform the user of the most likely possible cause and suggest a course of action to solve the issue.
Definition at line 643 of file wesnoth.cpp.
References PLAIN_LOG.
Referenced by do_gameloop().
|
static |
|
static |