The Battle for Wesnoth  1.19.0-dev
Macros | Functions | Variables
wesnoth.cpp File Reference
#include "addon/manager.hpp"
#include "build_info.hpp"
#include "commandline_argv.hpp"
#include "commandline_options.hpp"
#include "config.hpp"
#include "cursor.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 "log.hpp"
#include "scripting/application_lua_kernel.hpp"
#include "scripting/plugins/context.hpp"
#include "scripting/plugins/manager.hpp"
#include "sdl/exception.hpp"
#include "serialization/binary_or_text.hpp"
#include "serialization/parser.hpp"
#include "serialization/preprocessor.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/program_options/errors.hpp>
#include <boost/algorithm/string/predicate.hpp>
#include <optional>
#include <algorithm>
#include <cerrno>
#include <clocale>
#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <exception>
#include <vector>
#include <iostream>
Include dependency graph for wesnoth.cpp:

Go to the source code of this file.

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)
 
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")
 

Macro Definition Documentation

◆ error_exit

#define error_exit (   res)    return res

Definition at line 905 of file wesnoth.cpp.

◆ LOG_CONFIG

#define LOG_CONFIG   LOG_STREAM(info, log_config)

Definition at line 108 of file wesnoth.cpp.

◆ LOG_GENERAL

#define LOG_GENERAL   LOG_STREAM(info, lg::general())

Definition at line 110 of file wesnoth.cpp.

◆ LOG_PREPROC

#define LOG_PREPROC   LOG_STREAM(info, log_preprocessor)

Definition at line 113 of file wesnoth.cpp.

Function Documentation

◆ autodetect_game_data_dir()

static std::string autodetect_game_data_dir ( std::string  exe_dir)
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 864 of file wesnoth.cpp.

References filesystem::file_exists(), filesystem::get_cwd(), and filesystem::normalize_path().

Referenced by main().

◆ check_fpu()

static void check_fpu ( )
static

Definition at line 591 of file wesnoth.cpp.

References STREAMING_LOG.

Referenced by do_gameloop().

◆ do_gameloop()

static int do_gameloop ( const std::vector< std::string > &  args)
static

Setups the game environment and enters the titlescreen or game loops.

Definition at line 620 of file wesnoth.cpp.

References _(), check_fpu(), game_config::check_migration, config::child_range(), game_launcher::CONNECT, 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, and warn_early_init_failure().

Referenced by main().

◆ handle_lua_script_args()

static void handle_lua_script_args ( game_launcher game,
commandline_options  
)
static

Handles the lua script command line arguments if present.

This function will only run once.

Definition at line 528 of file wesnoth.cpp.

Referenced by do_gameloop().

◆ handle_preprocess_command()

static void handle_preprocess_command ( const commandline_options cmdline_opts)
static

◆ handle_validate_command()

static int handle_validate_command ( const std::string &  file,
abstract_validator validator,
const std::vector< std::string > &  defines 
)
static

◆ init_locale()

static void init_locale ( )
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 491 of file wesnoth.cpp.

References translation::bind_textdomain(), filesystem::get_intl_dir(), PACKAGE, and translation::set_default_textdomain().

Referenced by do_gameloop().

◆ main()

int main ( int  argc,
char **  argv 
)

◆ process_command_args()

static int process_command_args ( const commandline_options cmdline_opts)
static

Process commandline-arguments.

Definition at line 271 of file wesnoth.cpp.

References commandline_options::allow_insecure, game_config::allow_insecure, config::apply_diff(), 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(), handle_preprocess_command(), handle_validate_command(), commandline_options::help, filesystem::is_directory(), game_config::library_versions_report(), lg::list_log_domains(), 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, 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().

◆ safe_exit()

static void safe_exit ( int  res)
static

Definition at line 118 of file wesnoth.cpp.

References LOG_GENERAL.

Referenced by do_gameloop(), and main().

◆ warn_early_init_failure()

static void warn_early_init_failure ( )
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 515 of file wesnoth.cpp.

References PLAIN_LOG.

Referenced by do_gameloop().

Variable Documentation

◆ log_config

lg::log_domain log_config("config") ( "config"  )
static

◆ log_preprocessor

lg::log_domain log_preprocessor("preprocessor") ( "preprocessor"  )
static