OpenTTD Source 20241224-master-gf74b0cf984
survey.cpp File Reference

Functions to survey the current game / system, for crashlog and network-survey. More...

#include "stdafx.h"
#include "survey.h"
#include "settings_table.h"
#include "network/network.h"
#include "rev.h"
#include "settings_type.h"
#include "timer/timer_game_tick.h"
#include "timer/timer_game_calendar.h"
#include "timer/timer_game_economy.h"
#include "currency.h"
#include "fontcache.h"
#include "language.h"
#include "ai/ai_info.hpp"
#include "game/game.hpp"
#include "game/game_info.hpp"
#include "music/music_driver.hpp"
#include "sound/sound_driver.hpp"
#include "video/video_driver.hpp"
#include "base_media_base.h"
#include "blitter/factory.hpp"
#include "social_integration.h"
#include <fontconfig/fontconfig.h>
#include <png.h>
#include <ft2build.h>
#include <FT_FREETYPE_H>
#include <hb.h>
#include <unicode/uversion.h>
#include <lzma.h>
#include <lzo/lzo1x.h>
#include <SDL.h>
#include <zlib.h>
#include "safeguards.h"

Go to the source code of this file.

Functions

 NLOHMANN_JSON_SERIALIZE_ENUM (GRFStatus, { {GRFStatus::GCS_UNKNOWN, "unknown"}, {GRFStatus::GCS_DISABLED, "disabled"}, {GRFStatus::GCS_NOT_FOUND, "not found"}, {GRFStatus::GCS_INITIALISED, "initialised"}, {GRFStatus::GCS_ACTIVATED, "activated"}, }) NLOHMANN_JSON_SERIALIZE_ENUM(SocialIntegrationPlugin
 
static auto & GenericSettingTables ()
 List of all the generic setting tables.
 
static void SurveySettingsTable (nlohmann::json &survey, const SettingTable &table, void *object, bool skip_if_default)
 Convert a settings table to JSON.
 
void SurveySettings (nlohmann::json &survey, bool skip_if_default)
 Convert settings to JSON.
 
void SurveyCompiler (nlohmann::json &survey)
 Convert compiler information to JSON.
 
void SurveyOpenTTD (nlohmann::json &survey)
 Convert generic OpenTTD information to JSON.
 
void SurveyGameSession (nlohmann::json &survey)
 Convert game session information to JSON.
 
void SurveyConfiguration (nlohmann::json &survey)
 Convert generic game information to JSON.
 
void SurveyFont (nlohmann::json &survey)
 Convert font information to JSON.
 
void SurveyCompanies (nlohmann::json &survey)
 Convert company information to JSON.
 
void SurveyTimers (nlohmann::json &survey)
 Convert timer information to JSON.
 
void SurveyGrfs (nlohmann::json &survey)
 Convert GRF information to JSON.
 
void SurveyGameScript (nlohmann::json &survey)
 Convert game-script information to JSON.
 
void SurveyLibraries (nlohmann::json &survey)
 Convert compiled libraries information to JSON.
 
void SurveyPlugins (nlohmann::json &survey)
 Convert plugin information to JSON.
 
std::string SurveyMemoryToText (uint64_t memory)
 Change the bytes of memory into a textual version rounded up to the biggest unit.
 

Variables

static const std::string _vehicle_type_to_string []
 Lookup table to convert a VehicleType to a string.
 

Detailed Description

Functions to survey the current game / system, for crashlog and network-survey.

Definition in file survey.cpp.

Function Documentation

◆ GenericSettingTables()

static auto & GenericSettingTables ( )
static

List of all the generic setting tables.

There are a few tables that are special and not processed like the rest:

  • _currency_settings
  • _misc_settings
  • _company_settings
  • _win32_settings As such, they are not part of this list.

Definition at line 115 of file survey.cpp.

Referenced by SurveySettings().

◆ NLOHMANN_JSON_SERIALIZE_ENUM()

NLOHMANN_JSON_SERIALIZE_ENUM ( GRFStatus  ,
{ {GRFStatus::GCS_UNKNOWN, "unknown"}, {GRFStatus::GCS_DISABLED, "disabled"}, {GRFStatus::GCS_NOT_FOUND, "not found"}, {GRFStatus::GCS_INITIALISED, "initialised"}, {GRFStatus::GCS_ACTIVATED, "activated"}, }   
)

Definition at line 78 of file survey.cpp.

◆ SurveyCompanies()

void SurveyCompanies ( nlohmann::json &  survey)

Convert company information to JSON.

Parameters
surveyThe JSON object.

Definition at line 308 of file survey.cpp.

References _vehicle_type_to_string, Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::Iterate(), and VEH_COMPANY_END.

Referenced by CrashLog::FillCrashLog().

◆ SurveyCompiler()

void SurveyCompiler ( nlohmann::json &  survey)

Convert compiler information to JSON.

Parameters
surveyThe JSON object.

Definition at line 178 of file survey.cpp.

Referenced by CrashLog::FillCrashLog().

◆ SurveyConfiguration()

◆ SurveyFont()

void SurveyFont ( nlohmann::json &  survey)

Convert font information to JSON.

Parameters
surveyThe JSON object.

Definition at line 295 of file survey.cpp.

References FS_LARGE, FS_MONO, FS_NORMAL, FS_SMALL, FontCache::Get(), and FontCache::GetFontName().

Referenced by CrashLog::FillCrashLog().

◆ SurveyGameScript()

void SurveyGameScript ( nlohmann::json &  survey)

Convert game-script information to JSON.

Parameters
surveyThe JSON object.

Definition at line 382 of file survey.cpp.

References Game::GetInfo().

Referenced by CrashLog::FillCrashLog().

◆ SurveyGameSession()

void SurveyGameSession ( nlohmann::json &  survey)

Convert game session information to JSON.

Parameters
surveyThe JSON object.

Definition at line 238 of file survey.cpp.

References _game_session_stats, GameSessionStats::savegame_id, GameSessionStats::savegame_size, and GameSessionStats::start_time.

Referenced by CrashLog::FillCrashLog().

◆ SurveyGrfs()

void SurveyGrfs ( nlohmann::json &  survey)

Convert GRF information to JSON.

Parameters
surveyThe JSON object.

Definition at line 355 of file survey.cpp.

References _grfconfig, BSWAP32(), FormatArrayAsHex(), GCF_STATIC, GRFP_BLT_32BPP, GRFP_BLT_MASK, GRFP_BLT_UNSET, GRFP_GRF_ANY, GRFP_GRF_DOS, GRFP_GRF_MASK, GRFP_GRF_UNSET, GRFP_GRF_WINDOWS, HasBit(), and GRFConfig::next.

Referenced by CrashLog::FillCrashLog().

◆ SurveyLibraries()

void SurveyLibraries ( nlohmann::json &  survey)

Convert compiled libraries information to JSON.

Parameters
surveyThe JSON object.

Definition at line 394 of file survey.cpp.

Referenced by CrashLog::FillCrashLog().

◆ SurveyMemoryToText()

std::string SurveyMemoryToText ( uint64_t  memory)

Change the bytes of memory into a textual version rounded up to the biggest unit.

For example, 16751108096 would become 16 GiB.

Parameters
memoryThe bytes of memory.
Returns
std::string A textual representation.

Definition at line 487 of file survey.cpp.

References Ceil(), and CeilDiv().

◆ SurveyOpenTTD()

void SurveyOpenTTD ( nlohmann::json &  survey)

Convert generic OpenTTD information to JSON.

Parameters
surveyThe JSON object.

Definition at line 206 of file survey.cpp.

Referenced by CrashLog::FillCrashLog().

◆ SurveyPlugins()

void SurveyPlugins ( nlohmann::json &  survey)

Convert plugin information to JSON.

Parameters
surveyThe JSON object.

Definition at line 464 of file survey.cpp.

References _plugins, and SocialIntegration::GetPlugins().

Referenced by CrashLog::FillCrashLog().

◆ SurveySettings()

void SurveySettings ( nlohmann::json &  survey,
bool  skip_if_default 
)

Convert settings to JSON.

Parameters
surveyThe JSON object.

Definition at line 160 of file survey.cpp.

References _settings_client, _settings_game, ClientSettings::company, GenericSettingTables(), GetCustomCurrency(), and SurveySettingsTable().

Referenced by CrashLog::FillCrashLog().

◆ SurveySettingsTable()

static void SurveySettingsTable ( nlohmann::json &  survey,
const SettingTable &  table,
void *  object,
bool  skip_if_default 
)
static

Convert a settings table to JSON.

Parameters
surveyThe JSON object.
tableThe settings table to convert.
objectThe object to get the settings from.
skip_if_defaultIf true, skip any settings that are on their default value.

Definition at line 142 of file survey.cpp.

References SettingDesc::FormatValue(), SettingDesc::GetName(), GetSettingDesc(), SettingDesc::IsDefaultValue(), SettingDesc::save, SlIsObjectCurrentlyValid(), SaveLoad::version_from, and SaveLoad::version_to.

Referenced by SurveySettings().

◆ SurveyTimers()

void SurveyTimers ( nlohmann::json &  survey)

Variable Documentation

◆ _vehicle_type_to_string

const std::string _vehicle_type_to_string[]
static
Initial value:
= {
"train",
"roadveh",
"ship",
"aircraft",
}

Lookup table to convert a VehicleType to a string.

Definition at line 98 of file survey.cpp.

Referenced by SurveyCompanies().