42 #if defined(WITH_FREETYPE) || defined(_WIN32) 71 #if defined(WITH_FREETYPE) || defined(_WIN32) 72 #define HAS_TRUETYPE_FONT 75 #include "table/strings.h" 76 #include "table/settings.h" 86 typedef std::list<ErrorMessageData>
ErrorList;
90 typedef void SettingDescProc(
IniFile *ini,
const SettingDesc *desc,
const char *grpname,
void *
object);
91 typedef void SettingDescProcList(
IniFile *ini,
const char *grpname,
StringList &list);
93 static bool IsSignedVarMemType(VarType vt);
102 "server_bind_addresses",
118 if (onelen == 0) onelen = strlen(one);
121 if (*one >=
'0' && *one <=
'9')
return strtoul(one,
nullptr, 0);
127 while (*s !=
'|' && *s != 0) s++;
128 if ((
size_t)(s - many) == onelen && !memcmp(one, many, onelen))
return idx;
129 if (*s == 0)
return (
size_t)-1;
150 while (*str ==
' ' || *str ==
'\t' || *str ==
'|') str++;
151 if (*str == 0)
break;
154 while (*s != 0 && *s !=
' ' && *s !=
'\t' && *s !=
'|') s++;
157 if (r == (
size_t)-1)
return r;
183 if (!comma)
return -1;
192 if (n == maxitems)
return -1;
194 long v = strtol(p, &end, 0);
195 if (p == end)
return -1;
196 if (
sizeof(
int) <
sizeof(
long)) v =
ClampToI32(v);
207 if (n != 0 && !comma)
return -1;
220 static bool LoadIntList(
const char *str,
void *array,
int nelems, VarType type)
225 if (str ==
nullptr) {
226 memset(items, 0,
sizeof(items));
230 if (nitems != nelems)
return false;
237 for (i = 0; i != nitems; i++) ((byte*)array)[i] = items[i];
242 for (i = 0; i != nitems; i++) ((uint16*)array)[i] = items[i];
247 for (i = 0; i != nitems; i++) ((uint32*)array)[i] = items[i];
250 default: NOT_REACHED();
265 static void MakeIntList(
char *buf,
const char *last,
const void *array,
int nelems, VarType type)
268 const byte *p = (
const byte *)array;
270 for (i = 0; i != nelems; i++) {
273 case SLE_VAR_I8: v = *(
const int8 *)p; p += 1;
break;
274 case SLE_VAR_U8: v = *(
const uint8 *)p; p += 1;
break;
275 case SLE_VAR_I16: v = *(
const int16 *)p; p += 2;
break;
276 case SLE_VAR_U16: v = *(
const uint16 *)p; p += 2;
break;
277 case SLE_VAR_I32: v = *(
const int32 *)p; p += 4;
break;
278 case SLE_VAR_U32: v = *(
const uint32 *)p; p += 4;
break;
279 default: NOT_REACHED();
281 buf +=
seprintf(buf, last, (i == 0) ?
"%d" :
",%d", v);
292 static void MakeOneOfMany(
char *buf,
const char *last,
const char *many,
int id)
298 for (; *many !=
'|'; many++) {
308 while (*many !=
'\0' && *many !=
'|' && buf < last) *buf++ = *many++;
320 static void MakeManyOfMany(
char *buf,
const char *last,
const char *many, uint32 x)
326 for (; x != 0; x >>= 1, i++) {
328 while (*many != 0 && *many !=
'|') many++;
331 if (!init) buf +=
seprintf(buf, last,
"|");
334 buf +=
seprintf(buf, last,
"%d", i);
336 memcpy(buf, start, many - start);
341 if (*many ==
'|') many++;
355 const char *str = orig_str ==
nullptr ?
"" : orig_str;
360 size_t val = strtoul(str, &end, 0);
369 ErrorMessageData msg(STR_CONFIG_ERROR, STR_CONFIG_ERROR_TRAILING_CHARACTERS);
381 if (r != (
size_t)-1)
return (
void*)r;
392 if (r != (
size_t)-1)
return (
void*)r;
401 if (strcmp(str,
"true") == 0 || strcmp(str,
"on") == 0 || strcmp(str,
"1") == 0)
return (
void*)
true;
402 if (strcmp(str,
"false") == 0 || strcmp(str,
"off") == 0 || strcmp(str,
"0") == 0)
return (
void*)
false;
459 }
else if (val < sdb->
min || val > (int32)sdb->
max) {
461 val = (int32)(
size_t)sdb->
def;
468 uint32 uval = (uint32)val;
473 }
else if (uval < (uint)sdb->
min || uval > sdb->
max) {
475 uval = (uint32)(
size_t)sdb->
def;
483 default: NOT_REACHED();
507 for (; sd->
save.
cmd != SL_END; sd++) {
514 s = strchr(sdb->
name,
'.');
523 item = group->
GetItem(s,
false);
524 if (item ==
nullptr && group != group_def) {
527 item = group_def->
GetItem(s,
false);
529 if (item ==
nullptr) {
532 const char *sc = strchr(s,
'.');
533 if (sc !=
nullptr) item = ini->
GetGroup(s, sc - s)->
GetItem(sc + 1,
false);
551 if (p !=
nullptr)
strecpy((
char*)ptr, (
const char*)p, (
char*)ptr + sld->
length - 1);
557 *(
char**)ptr = p ==
nullptr ?
nullptr :
stredup((
const char*)p);
560 case SLE_VAR_CHAR:
if (p !=
nullptr) *(
char *)ptr = *(
const char *)p;
break;
562 default: NOT_REACHED();
579 default: NOT_REACHED();
598 IniGroup *group_def =
nullptr, *group;
604 for (; sd->
save.
cmd != SL_END; sd++) {
614 s = strchr(sdb->
name,
'.');
619 if (group_def ==
nullptr) group_def = ini->
GetGroup(grpname);
624 item = group->GetItem(s,
true);
627 if (item->
value !=
nullptr) {
640 if (*(
bool*)ptr == (p !=
nullptr))
continue;
645 if (*(byte*)ptr == (byte)(
size_t)p)
continue;
650 if (*(uint16*)ptr == (uint16)(
size_t)p)
continue;
655 if (*(uint32*)ptr == (uint32)(
size_t)p)
continue;
658 default: NOT_REACHED();
679 default: NOT_REACHED();
691 if (*(
char**)ptr ==
nullptr) {
698 case SLE_VAR_CHAR: buf[0] = *(
char*)ptr; buf[1] =
'\0';
break;
699 default: NOT_REACHED();
707 default: NOT_REACHED();
729 if (group ==
nullptr)
return;
733 for (
const IniItem *item = group->
item; item !=
nullptr; item = item->
next) {
734 if (item->name !=
nullptr) list.emplace_back(item->name);
751 if (group ==
nullptr)
return;
754 for (
const auto &iter : list) {
755 group->
GetItem(iter.c_str(),
true)->SetValue(
"");
792 (_game_mode == GM_NORMAL ||
793 (_game_mode == GM_EDITOR && !(this->desc.flags &
SGF_SCENEDIT_TOO))))
return false;
819 if (_game_mode != GM_MENU) {
827 static bool PopulationInLabelActive(int32 p1)
833 static bool RedrawScreen(int32 p1)
852 static bool InvalidateDetailsWindow(int32 p1)
858 static bool StationSpreadChanged(int32 p1)
865 static bool InvalidateBuildIndustryWindow(int32 p1)
871 static bool CloseSignalGUI(int32 p1)
879 static bool InvalidateTownViewWindow(int32 p1)
885 static bool DeleteSelectStationWindow(int32 p1)
891 static bool UpdateConsists(int32 p1)
903 static bool CheckInterval(int32 p1)
905 bool update_vehicles;
909 update_vehicles =
false;
912 update_vehicles =
true;
927 if (update_vehicles) {
933 v->SetServiceIntervalIsPercent(p1 != 0);
938 InvalidateDetailsWindow(0);
943 static bool UpdateInterval(
VehicleType type, int32 p1)
945 bool update_vehicles;
949 update_vehicles =
false;
952 update_vehicles =
true;
957 if (interval != p1)
return false;
959 if (update_vehicles) {
963 v->SetServiceInterval(p1);
968 InvalidateDetailsWindow(0);
973 static bool UpdateIntervalTrains(int32 p1)
978 static bool UpdateIntervalRoadVeh(int32 p1)
980 return UpdateInterval(
VEH_ROAD, p1);
983 static bool UpdateIntervalShips(int32 p1)
985 return UpdateInterval(
VEH_SHIP, p1);
988 static bool UpdateIntervalAircraft(int32 p1)
993 static bool TrainAccelerationModelChanged(int32 p1)
1035 FOR_ALL_ROADVEHICLES(rv) {
1058 FOR_ALL_ROADVEHICLES(rv) {
1065 static bool DragSignalsDensityChanged(int32)
1072 static bool TownFoundingChanged(int32 p1)
1082 static bool InvalidateVehTimetableWindow(int32 p1)
1088 static bool ZoomMinMaxChanged(int32 p1)
1090 extern void ConstrainAllViewportsZoom();
1091 ConstrainAllViewportsZoom();
1117 static bool InvalidateCompanyLiveryWindow(int32 p1)
1120 return RedrawScreen(p1);
1123 static bool InvalidateIndustryViewWindow(int32 p1)
1129 static bool InvalidateAISettingsWindow(int32 p1)
1178 static bool DifficultyNoiseChange(int32 i)
1180 if (_game_mode == GM_NORMAL) {
1190 static bool MaxNoAIsChange(int32 i)
1226 static bool CheckFreeformEdges(int32 p1)
1228 if (_game_mode == GM_MENU)
return true;
1239 FOR_ALL_BASE_STATIONS(st) {
1249 for (uint i = 0; i <
MapMaxX(); i++) {
1255 for (uint i = 1; i <
MapMaxX(); i++) {
1261 for (uint i = 0; i <
MapMaxY(); i++) {
1267 for (uint i = 1; i <
MapMaxY(); i++) {
1274 for (uint i = 0; i <
MapMaxX(); i++) {
1278 for (uint i = 0; i <
MapMaxY(); i++) {
1293 if (_game_mode == GM_MENU)
return true;
1303 static bool ChangeMaxHeightLevel(int32 p1)
1305 if (_game_mode == GM_NORMAL)
return false;
1306 if (_game_mode != GM_EDITOR)
return true;
1324 static bool StationCatchmentChanged(int32 p1)
1331 static bool MaxVehiclesChanged(int32 p1)
1338 static bool InvalidateShipPathCache(int32 p1)
1347 static bool UpdateClientName(int32 p1)
1353 static bool UpdateServerPassword(int32 p1)
1362 static bool UpdateRconPassword(int32 p1)
1371 static bool UpdateClientConfigValues(int32 p1)
1385 memset(_old_diff_custom, 0,
sizeof(_old_diff_custom));
1400 bool old_diff_custom_used =
false;
1401 for (uint i = 0; i < options_to_load && !old_diff_custom_used; i++) {
1402 old_diff_custom_used = (_old_diff_custom[i] != 0);
1405 if (!old_diff_custom_used)
return;
1408 for (uint i = 0; i < options_to_load; i++) {
1417 static void AILoadConfig(
IniFile *ini,
const char *grpname)
1428 if (group ==
nullptr)
return;
1431 for (item = group->
item; c < MAX_COMPANIES && item != nullptr; c++, item = item->next) {
1436 if (strcmp(item->
name,
"none") != 0) {
1437 DEBUG(script, 0,
"The AI by the name '%s' was no longer found, and removed from the list.", item->
name);
1445 static void GameLoadConfig(
IniFile *ini,
const char *grpname)
1454 if (group ==
nullptr)
return;
1457 if (item ==
nullptr)
return;
1463 if (strcmp(item->
name,
"none") != 0) {
1464 DEBUG(script, 0,
"The GameScript by the name '%s' was no longer found, and removed from the list.", item->
name);
1478 if (c >=
'0' && c <=
'9')
return c -
'0';
1479 if (c >=
'A' && c <=
'F')
return c + 10 -
'A';
1480 if (c >=
'a' && c <=
'f')
return c + 10 -
'a';
1494 while (dest_size > 0) {
1497 if (lo < 0)
return false;
1498 *dest++ = (hi << 4) | lo;
1518 if (group ==
nullptr)
return nullptr;
1520 for (item = group->
item; item !=
nullptr; item = item->
next) {
1523 uint8 grfid_buf[4], md5sum[16];
1524 char *filename = item->
name;
1525 bool has_grfid =
false;
1526 bool has_md5sum =
false;
1531 filename += 1 + 2 *
lengthof(grfid_buf);
1533 if (has_md5sum) filename += 1 + 2 *
lengthof(md5sum);
1535 uint32 grfid = grfid_buf[0] | (grfid_buf[1] << 8) | (grfid_buf[2] << 16) | (grfid_buf[3] << 24);
1538 if (s !=
nullptr) c =
new GRFConfig(*s);
1542 if (s !=
nullptr) c =
new GRFConfig(*s);
1545 if (c ==
nullptr) c =
new GRFConfig(filename);
1561 SetDParam(1, STR_CONFIG_ERROR_INVALID_GRF_NOT_FOUND);
1563 SetDParam(1, STR_CONFIG_ERROR_INVALID_GRF_UNSAFE);
1565 SetDParam(1, STR_CONFIG_ERROR_INVALID_GRF_SYSTEM);
1567 SetDParam(1, STR_CONFIG_ERROR_INVALID_GRF_INCOMPATIBLE);
1569 SetDParam(1, STR_CONFIG_ERROR_INVALID_GRF_UNKNOWN);
1579 bool duplicate =
false;
1580 for (
const GRFConfig *gc = first; gc !=
nullptr; gc = gc->
next) {
1605 static void AISaveConfig(
IniFile *ini,
const char *grpname)
1609 if (group ==
nullptr)
return;
1629 static void GameSaveConfig(
IniFile *ini,
const char *grpname)
1633 if (group ==
nullptr)
return;
1660 seprintf(version,
lastof(version),
"%08X", _openttd_newgrf_version);
1662 const char *
const versions[][2] = {
1663 {
"version_string", _openttd_revision },
1664 {
"version_number", version }
1667 for (uint i = 0; i <
lengthof(versions); i++) {
1673 static void GRFSaveConfig(
IniFile *ini,
const char *grpname,
const GRFConfig *list)
1679 for (c = list; c !=
nullptr; c = c->
next) {
1681 char key[4 * 2 + 1 + 16 * 2 + 1 + MAX_PATH];
1693 static void HandleSettingDescs(
IniFile *ini, SettingDescProc *proc, SettingDescProcList *proc_list,
bool basic_settings =
true,
bool other_settings =
true)
1695 if (basic_settings) {
1696 proc(ini, (
const SettingDesc*)_misc_settings,
"misc",
nullptr);
1697 #if defined(_WIN32) && !defined(DEDICATED) 1698 proc(ini, (
const SettingDesc*)_win32_settings,
"win32",
nullptr);
1702 if (other_settings) {
1703 proc(ini, _settings,
"patches", &_settings_newgame);
1704 proc(ini, _currency_settings,
"currency", &_custom_currency);
1705 proc(ini, _company_settings,
"company", &_settings_client.
company);
1713 static IniFile *IniLoadConfig()
1726 IniFile *ini = IniLoadConfig();
1735 AILoadConfig(ini,
"ai_players");
1736 GameLoadConfig(ini,
"game_scripts");
1739 IniLoadSettings(ini, _gameopt_settings,
"gameopt", &_settings_newgame);
1756 IniFile *ini = IniLoadConfig();
1766 AISaveConfig(ini,
"ai_players");
1767 GameSaveConfig(ini,
"game_scripts");
1781 std::unique_ptr<IniFile> ini(IniLoadConfig());
1782 for (
IniGroup *group = ini->group; group !=
nullptr; group = group->
next) {
1783 if (strncmp(group->name,
"preset-", 7) == 0) {
1784 list.emplace_back(group->name + 7);
1799 size_t len = strlen(config_name) + 8;
1800 char *section = (
char*)alloca(len);
1801 seprintf(section, section + len - 1,
"preset-%s", config_name);
1803 IniFile *ini = IniLoadConfig();
1818 size_t len = strlen(config_name) + 8;
1819 char *section = (
char*)alloca(len);
1820 seprintf(section, section + len - 1,
"preset-%s", config_name);
1822 IniFile *ini = IniLoadConfig();
1823 GRFSaveConfig(ini, section, config);
1834 size_t len = strlen(config_name) + 8;
1835 char *section = (
char*)alloca(len);
1836 seprintf(section, section + len - 1,
"preset-%s", config_name);
1838 IniFile *ini = IniLoadConfig();
1844 const SettingDesc *GetSettingDescription(uint index)
1846 if (index >=
lengthof(_settings))
return nullptr;
1847 return &_settings[index];
1863 const SettingDesc *sd = GetSettingDescription(p1);
1874 int32 newval = (int32)p2;
1917 int32 newval = (int32)p2;
1953 if (_game_mode != GM_MENU) {
1964 if (force_newgame) {
1985 const SettingDesc *sd = &_company_settings[index];
2002 for (sd = _company_settings; sd->
save.
cmd != SL_END; sd++) {
2015 for (sd = _company_settings; sd->
save.
cmd != SL_END; sd++, i++) {
2052 *var = strcmp(value,
"(null)") == 0 ? nullptr :
stredup(value);
2074 for (*i = 0, sd = _settings; sd->
save.
cmd != SL_END; sd++, (*i)++) {
2076 if (strcmp(sd->
desc.
name, name) == 0)
return sd;
2080 for (*i = 0, sd = _settings; sd->
save.
cmd != SL_END; sd++, (*i)++) {
2082 const char *short_name = strchr(sd->
desc.
name,
'.');
2083 if (short_name !=
nullptr) {
2085 if (strcmp(short_name, name) == 0)
return sd;
2089 if (strncmp(name,
"company.", 8) == 0) name += 8;
2091 for (*i = 0, sd = _company_settings; sd->
save.
cmd != SL_END; sd++, (*i)++) {
2093 if (strcmp(sd->
desc.
name, name) == 0)
return sd;
2101 void IConsoleSetSetting(
const char *name,
const char *value,
bool force_newgame)
2106 if (sd ==
nullptr) {
2128 IConsoleError(
"This command/variable is not available during network games.");
2130 IConsoleError(
"This command/variable is only available to a network server.");
2135 void IConsoleSetSetting(
const char *name,
int value)
2139 assert(sd !=
nullptr);
2155 if (sd ==
nullptr) {
2160 ptr =
GetVariableAddress((_game_mode == GM_MENU || force_newgame) ? &_settings_newgame : &_settings_game, &sd->
save);
2166 seprintf(value,
lastof(value), (*(
const bool*)ptr != 0) ?
"on" :
"off");
2187 if (prefilter !=
nullptr && strstr(sd->desc.name, prefilter) ==
nullptr)
continue;
2192 seprintf(value,
lastof(value), (*(
const bool *)ptr != 0) ?
"on" :
"off");
2212 for (; osd->
save.
cmd != SL_END; osd++) {
2216 if (!SlObjectMember(ptr, sld))
continue;
2233 for (i = sd; i->
save.
cmd != SL_END; i++) {
2234 length += SlCalcObjMemberLength(
object, &i->
save);
2238 for (i = sd; i->
save.
cmd != SL_END; i++) {
2240 SlObjectMember(ptr, &i->
save);
2244 static void Load_OPTS()
2254 static void Load_PATS()
2262 static void Check_PATS()
2267 static void Save_PATS()
2272 extern const ChunkHandler _setting_chunk_handlers[] = {
2273 {
'OPTS',
nullptr, Load_OPTS,
nullptr,
nullptr, CH_RIFF},
2274 {
'PATS', Save_PATS, Load_PATS,
nullptr, Check_PATS, CH_RIFF |
CH_LAST},
2277 static bool IsSignedVarMemType(VarType vt)
Functions related to OTTD's strings.
Owner
Enum for all companies/owners.
VehicleSettings vehicle
options for vehicles
static void ValidateSettings()
Checks if any settings are set to incorrect values, and sets them to correct values in that case...
int CompanyServiceInterval(const Company *c, VehicleType type)
Get the service interval for the given company and vehicle type.
static uint MapSizeX()
Get the size of the map along the X.
A group within an ini file.
GameSettings _settings_game
Game settings of a running game or the scenario editor.
void IConsoleGetSetting(const char *name, bool force_newgame)
Output value of a specific setting to the console.
bool _networking
are we in networking mode?
const void * def
default value given when none is present
Base of all video drivers.
Default settings for vehicles.
uint GetCompanySettingIndex(const char *name)
Get the index in the _company_settings array of a setting.
static const ScriptInfoList * GetInfoList()
Wrapper function for AIScanner::GetAIInfoList.
Select station (when joining stations); Window numbers:
void NetworkSendCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallback *callback, const char *text, CompanyID company)
Prepare a DoCommand to be send over the network.
static uint MapSizeY()
Get the size of the map along the Y.
static bool IsSavegameVersionBefore(SaveLoadVersion major, byte minor=0)
Checks whether the savegame is below major.
static void MakeVoid(TileIndex t)
Make a nice void tile ;)
SaveLoadVersion version_from
save/load the variable starting from this savegame version
void ResetCurrencies(bool preserve_custom)
Will fill _currency_specs array with default values from origin_currency_specs Called only from newgr...
void SetDParamStr(uint n, const char *str)
Set a rawstring parameter.
ShipPathCache path
Cached path.
static bool DecodeHexText(char *pos, uint8 *dest, size_t dest_size)
Parse a sequence of characters (supposedly hex digits) into a sequence of bytes.
void BuildOwnerLegend()
Completes the array for the owned property legend.
byte land_generator
the landscape generator
uint16 GetServiceIntervalClamped(uint interval, bool ispercent)
Clamp the service interval to the correct min/max.
Saveload window; Window numbers:
GameConfig stores the configuration settings of every Game.
static GRFConfig * GRFLoadConfig(IniFile *ini, const char *grpname, bool is_static)
Load a GRF configuration.
EconomySettings economy
settings to change the economy
void SaveGRFPresetToConfig(const char *config_name, GRFConfig *config)
Save a NewGRF configuration with a preset name.
GRFConfig * _grfconfig_newgame
First item in list of default GRF set up.
static void HandleOldDiffCustom(bool savegame)
Reading of the old diff_custom array and transforming it to the new format.
bitmasked number where only ONE bit may be set
All settings together for the game.
static Titem * Get(size_t index)
Returns Titem with given index.
string (with pre-allocated buffer)
Functions to handle different currencies.
int CDECL seprintf(char *str, const char *last, const char *format,...)
Safer implementation of snprintf; same as snprintf except:
Base for the train class.
Other order modifications.
static T SetBit(T &x, const uint8 y)
Set a bit in a variable.
General types related to pathfinders.
bitmasked number where MULTIPLE bits may be set
Window * FindWindowById(WindowClass cls, WindowNumber number)
Find a window by its class and window number.
this setting only applies to network games
int PositionMainToolbar(Window *w)
(Re)position main toolbar window at the screen.
static const CommandCost CMD_ERROR
Define a default return value for a failed command.
SettingGuiFlag flags
handles how a setting would show up in the GUI (text/currency, etc.)
do not synchronize over network (but it is saved if SLF_NOT_IN_SAVE is not set)
Functions to be called to log possibly unsafe game events.
static bool InvalidateCompanyWindow(int32 p1)
Invalidate the company details window after the shares setting changed.
static void PrepareOldDiffCustom()
Prepare for reading and old diff_custom by zero-ing the memory.
static const uint CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY
Value for custom sea level in difficulty settings.
fluid_settings_t * settings
FluidSynth settings handle.
VehicleType
Available vehicle types.
bool IsInUse() const
Check whether the base station currently is in use; in use means that it is not scheduled for deletio...
void GamelogStartAction(GamelogActionType at)
Stores information about new action, but doesn't allocate it Action is allocated only when there is a...
static void MakeManyOfMany(char *buf, const char *last, const char *many, uint32 x)
Convert a MANYofMANY structure to a string representation.
IniItem * item
the first item in the group
GRFConfig * LoadGRFPresetFromConfig(const char *config_name)
Load a NewGRF configuration by preset-name.
static bool ChangeDynamicEngines(int32 p1)
Changing the setting "allow multiple NewGRF sets" is not allowed if there are vehicles.
GRFStatus status
NOSAVE: GRFStatus, enum.
static bool RedrawTownAuthority(int32 p1)
Update the town authority window after a town authority setting change.
char * md5sumToString(char *buf, const char *last, const uint8 md5sum[16])
Convert the md5sum to a hexadecimal string representation.
static bool InvalidateCompanyInfrastructureWindow(int32 p1)
Invalidate the company infrastructure details window after a infrastructure maintenance setting chang...
void IConsoleListSettings(const char *prefilter)
List all settings and their value to the console.
Base for all sound drivers.
static uint TileX(TileIndex tile)
Get the X component of a tile.
Build vehicle; Window numbers:
TownFounding found_town
town founding.
void UpdateAllTownVirtCoords()
Update the virtual coords needed to draw the town sign for all towns.
GRF file is used statically (can be used in any MP game)
static void IniLoadSettingList(IniFile *ini, const char *grpname, StringList &list)
Loads all items from a 'grpname' section into a list The list parameter can be a nullptr pointer...
void Change(const char *name, int version=-1, bool force_exact_match=false, bool is_random=false)
Set another Script to be loaded in this slot.
int64 ReadValue(const void *ptr, VarType conv)
Return a signed-long version of the value of a setting.
the value represents a limited number of string-options (internally integer)
DifficultySettings difficulty
settings related to the difficulty
void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel wl, int x=0, int y=0, const GRFFile *textref_stack_grffile=nullptr, uint textref_stack_size=0, const uint32 *textref_stack=nullptr)
Display an error message in a window.
void RemoveGroup(const char *name)
Remove the group with the given name.
Properties of config file settings.
do not save to config file
#define lastof(x)
Get the last element of an fixed size array.
static const TextColour CC_DEFAULT
Default colour of the console.
IniGroup * GetGroup(const char *name, size_t len=0, bool create_new=true)
Get the group with the given name.
GRF file was not found in the local cache.
Functions related to world/map generation.
Stuff related to the text buffer GUI.
Functions to make screenshots.
static GameConfig * GetConfig(ScriptSettingSource source=SSS_DEFAULT)
Get the config of a company.
const GRFConfig * FindGRFConfig(uint32 grfid, FindGRFConfigMode mode, const uint8 *md5sum, uint32 desired_version)
Find a NewGRF in the scanned list.
list of integers separated by a comma ','
void CargoChanged()
Recalculates the cached weight of a vehicle and its parts.
Common return value for all commands.
GRFIdentifier ident
grfid and md5sum to uniquely identify newgrfs
void SaveToConfig()
Save the values to the configuration file.
static const void * StringToVal(const SettingDescBase *desc, const char *orig_str)
Convert a string representation (external) of a setting to the internal rep.
IniItem * next
The next item in this group.
CommandCost CmdChangeSetting(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
Network-safe changing of settings (server-only).
static void Write_ValidateSetting(void *ptr, const SettingDesc *sd, int32 val)
Set the value of a setting and if needed clamp the value to the preset minimum and maximum...
const char * name
name of the setting. Used in configuration file and for console
OnChange * proc
callback procedure for when the value is changed
CompanySettings settings
settings specific for each company
this setting can be different for each company (saved in company struct)
struct GRFConfig * next
NOSAVE: Next item in the linked list.
this setting does not apply to network games; it may not be changed during the game ...
A single "line" in an ini file.
const char * GetName() const
Get the name of the Script.
GRFConfig * _grfconfig_static
First item in list of static GRF set up.
static uint ClampU(const uint a, const uint min, const uint max)
Clamp an unsigned integer between an interval.
uint16 servint_ships
service interval for ships
static bool RedrawSmallmap(int32 p1)
Redraw the smallmap after a colour scheme change.
static bool LoadIntList(const char *str, void *array, int nelems, VarType type)
Load parsed string-values into an integer-array (intlist)
static void SetTileHeight(TileIndex tile, uint height)
Sets the height of a tile.
bool FillGRFDetails(GRFConfig *config, bool is_static, Subdirectory subdir)
Find the GRFID of a given grf, and calculate its md5sum.
uint16 length
(conditional) length of the variable (eg. arrays) (max array size is 65536 elements) ...
Functions to read fonts from files and cache them.
void InvalidateWindowClassesData(WindowClass cls, int data, bool gui_scope)
Mark window data of all windows of a given class as invalid (in need of re-computing) Note that by de...
Buses, trucks and trams belong to this class.
int PositionStatusbar(Window *w)
(Re)position statusbar window at the screen.
Critical errors, the MessageBox is shown in all cases.
char * _config_file
Configuration file of OpenTTD.
void UpdateAirportsNoise()
Recalculate the noise generated by the airports of each town.
SaveLoad save
Internal structure (going to savegame, parts to config)
void SetDParamStr(uint n, const char *str)
This function is used to "bind" a C string to a OpenTTD dparam slot.
LoadCheckData _load_check_data
Data loaded from save during SL_LOAD_CHECK.
NetworkSettings network
settings related to the network
void GamelogSetting(const char *name, int32 oldval, int32 newval)
Logs change in game settings.
void SetDefaultCompanySettings(CompanyID cid)
Set the company settings for a new company to their default values.
Engine preview window; Window numbers:
uint8 num_params
Number of used parameters.
virtual bool IsPrimaryVehicle() const
Whether this is the primary vehicle in the chain.
static bool IsTileType(TileIndex tile, TileType type)
Checks if a tile is a given tiletype.
VarType conv
type of the variable to be saved, int
static void SaveVersionInConfig(IniFile *ini)
Save the version of OpenTTD to the ini file.
Functions related to errors.
static void IniSaveSettings(IniFile *ini, const SettingDesc *sd, const char *grpname, void *object)
Save the values of settings to the inifile.
Error message; Window numbers:
GRF file is an openttd-internal system grf.
int PositionNewsMessage(Window *w)
(Re)position news message window at the screen.
CompanySettings company
default values for per-company settings
Information about GRF, used in the game and (part of it) in savegames.
do not save with savegame, basically client-based
void ConsistChanged(ConsistChangeFlags allowed_changes)
Recalculates the cached stuff of a train.
void IniLoadWindowSettings(IniFile *ini, const char *grpname, void *desc)
Load a WindowDesc from config.
VehicleDefaultSettings vehicle
default settings for vehicles
OnConvert * proc_cnvt
callback procedure when loading value mechanism fails
bool HasScript() const
Is this config attached to an Script? In other words, is there a Script that is assigned to this slot...
Small map; Window numbers:
bool SaveToDisk(const char *filename)
Save the Ini file's data to the disk.
void SyncCompanySettings()
Sync all company settings in a multiplayer game.
DoCommandFlag
List of flags for a command.
Functions related to setting/changing the settings.
char * GRFBuildParamList(char *dst, const GRFConfig *c, const char *last)
Build a string containing space separated parameter values, and terminate.
void SetValue(const char *value)
Replace the current value with another value.
ClientSettings _settings_client
The current settings for this game.
static const char *const _list_group_names[]
Groups in openttd.cfg that are actually lists.
void CDECL IConsolePrintF(TextColour colour_code, const char *format,...)
Handle the printing of text entered into the console or redirected there by any other means...
void LoadFromDisk(const char *filename, Subdirectory subdir)
Load the Ini file's data from the disk.
A path without any base directory.
Base for all music playback.
Definition of base types and functions in a cross-platform compatible way.
void LoadStringWidthTable(bool monospace)
Initialize _stringwidth_table cache.
static size_t LookupManyOfMany(const char *many, const char *str)
Find the set-integer value MANYofMANY type in a string.
A number of safeguards to prevent using unsafe methods.
void NetworkUpdateClientName()
Send the server our name.
GameSettings _settings_newgame
Game settings for new games (updated from the intro screen).
int PositionNetworkChatWindow(Window *w)
(Re)position network chat window at the screen.
const SettingDesc * GetSettingFromName(const char *name, uint *i)
Given a name of setting, return a setting description of it.
static AIConfig * GetConfig(CompanyID company, ScriptSettingSource source=SSS_DEFAULT)
Get the config of a company.
uint8 flags
NOSAVE: GCF_Flags, bitset.
char * stredup(const char *s, const char *last)
Create a duplicate of the given string.
void LoadFromConfig(bool minimal)
Load the values from the configuration files.
Console functions used outside of the console code.
GRF is unusable with this version of OpenTTD.
void ScheduleErrorMessage(const ErrorMessageData &data)
Schedule an error.
Company colour selection; Window numbers:
char * value
The value of this item.
bool IsFrontEngine() const
Check if the vehicle is a front engine.
TileIndex tile
Current tile index.
Find newest Grf, ignoring Grfs with GCF_INVALID set.
static ErrorList _settings_error_list
Errors while loading minimal settings.
static bool RoadVehSlopeSteepnessChanged(int32 p1)
This function updates the road vehicle acceleration cache after a steepness change.
Vehicle timetable; Window numbers:
Found a town; Window numbers:
Basic functions/variables used all over the place.
Build station; Window numbers:
Owner owner
Which company owns the vehicle?
bool DoCommandP(const CommandContainer *container, bool my_cmd)
Shortcut for the long DoCommandP when having a container with the data.
Industry view; Window numbers:
#define lengthof(x)
Return the length of an fixed size array.
bool RoadVehiclesAreBuilt()
Verify whether a road vehicle is available.
void GfxClearSpriteCache()
Remove all encoded sprites from the sprite cache without discarding sprite location information...
static T min(const T a, const T b)
Returns the minimum of two values.
char rcon_password[NETWORK_PASSWORD_LENGTH]
password for rconsole (server side)
Types related to reading/writing '*.ini' files.
void Clear()
Clear all items in the group.
static int ParseIntList(const char *p, int *items, int maxitems)
Parse an integerlist string and set each found value.
bool FioCheckFileExists(const char *filename, Subdirectory subdir)
Check whether the given file exists.
Functions related to sound.
static size_t ConvertLandscape(const char *value)
Conversion callback for _gameopt_settings_game.landscape It converts (or try) between old values and ...
static VarType GetVarMemType(VarType type)
Get the NumberType of a setting.
static void LoadSettings(const SettingDesc *osd, void *object)
Save and load handler for settings.
void DeleteWindowByClass(WindowClass cls)
Delete all windows of a given class.
static bool IsNumericType(VarType conv)
Check if the given saveload type is a numeric type.
static void RecomputeCatchmentForAll()
Recomputes catchment of all stations.
All ships have this type.
Handlers and description of chunk.
void SetCompanySetting(uint index, int32 value)
Top function to save the new value of an element of the Settings struct.
Subdirectory for all NewGRFs.
#define FOR_ALL_SHIPS(var)
Iterate over all ships.
static T Clamp(const T a, const T min, const T max)
Clamp a value between an interval.
void GamelogStopAction()
Stops logging of any changes.
Build industry; Window numbers:
Build toolbar; Window numbers:
void DeleteGRFPresetFromConfig(const char *config_name)
Delete a NewGRF configuration by preset name.
#define DEBUG(name, level,...)
Output a line of debugging information.
'Train' is either a loco or a wagon.
Build signal toolbar; Window numbers:
string enclosed in quotes (with pre-allocated buffer)
static bool CheckRoadSide(int p1)
Check whether the road side may be changed.
StringList _network_host_list
The servers we know.
static bool v_PositionStatusbar(int32 p1)
Reposition the statusbar as the setting changed.
void DeleteWindowById(WindowClass cls, WindowNumber number, bool force)
Delete a window by its class and window number (if it is open).
bool IsEditable(bool do_command=false) const
Check whether the setting is editable in the current gamemode.
static int DecodeHexNibble(char c)
Convert a character to a hex nibble value, or -1 otherwise.
void BuildLandLegend()
(Re)build the colour tables for the legends.
byte quantity_sea_lakes
the amount of seas/lakes
static void IniLoadSettings(IniFile *ini, const SettingDesc *sd, const char *grpname, void *object)
Load values from a group of an IniFile structure into the internal representation.
static void IniSaveSettingList(IniFile *ini, const char *grpname, StringList &list)
Saves all items from a list into the 'grpname' section The list parameter can be a nullptr pointer...
execute the given command
Company infrastructure overview; Window numbers:
this setting can be changed in the scenario editor (only makes sense when SGF_NEWGAME_ONLY is set) ...
static void * GetVariableAddress(const void *object, const SaveLoad *sld)
Get the address of the variable.
static int32 ClampToI32(const int64 a)
Reduce a signed 64-bit int to a signed 32-bit one.
Functions related to companies.
static uint MapSize()
Get the size of the map.
static void MakeIntList(char *buf, const char *last, const void *array, int nelems, VarType type)
Convert an integer-array (intlist) to a string representation.
void ReInitAllWindows()
Re-initialize all windows.
The data of the error message.
Ini file that supports both loading and saving.
static bool RoadVehAccelerationModelChanged(int32 p1)
This function updates realistic acceleration caches when the setting "Road vehicle acceleration model...
void NetworkServerSendConfigUpdate()
Send Config Update.
Town authority; Window numbers:
GUISettings gui
settings related to the GUI
static bool ResetToCurrentNewGRFConfig()
Tries to reset the engine mapping to match the current NewGRF configuration.
bool station_noise_level
build new airports when the town noise level is still within accepted limits
int cached_max_curve_speed
max consist speed limited by curves
static bool StrEmpty(const char *s)
Check if a string buffer is empty.
void UpdateCursorSize()
Update cursor dimension.
Declarations for savegames operations.
SaveLoadVersion version_to
save/load the variable until this savegame version
uint32 TileIndex
The index/ID of a Tile.
static bool SlIsObjectCurrentlyValid(SaveLoadVersion version_from, SaveLoadVersion version_to)
Checks if some version from/to combination falls within the range of the active savegame version...
uint16 servint_trains
service interval for trains
a value of zero means the feature is disabled
char * name
The name of this item.
static void MakeOneOfMany(char *buf, const char *last, const char *many, int id)
Convert a ONEofMANY structure to a string representation.
Map accessors for void tiles.
First company, same as owner.
useful to write zeros in savegame.
string pointer enclosed in quotes
static GameSettings & GetGameSettings()
Get the settings-object applicable for the current situation: the newgame settings when we're in the ...
GRF file is unsafe for static usage.
this setting cannot be changed in a game
static uint TileY(TileIndex tile)
Get the Y component of a tile.
bool servint_ispercent
service intervals are in percents
std::vector< std::string > StringList
Type for a list of strings.
bool SetSettingValue(uint index, int32 value, bool force_newgame)
Top function to save the new value of an element of the Settings struct.
TileIndex xy
Base tile of the station.
static const uint CUSTOM_SEA_LEVEL_MIN_PERCENTAGE
Minimum percentage a user can specify for custom sea level.
void IConsoleError(const char *string)
It is possible to print error information to the console.
IniItem * GetItem(const char *name, bool create)
Get the item with the given name, and if it doesn't exist and create is true it creates a new item...
SaveLoadType cmd
the action to take with the saved/loaded type, All types need different action
Functions and types used internally for the settings configurations.
Get the newgame Script config.
char * strecpy(char *dst, const char *src, const char *last)
Copies characters from one buffer to another.
VehicleType type
Type of vehicle.
static void SetTileType(TileIndex tile, TileType type)
Set the type of a tile.
Town view; Window numbers:
char * filename
Filename - either with or without full path.
VehicleDefaultSettings _old_vds
Used for loading default vehicles settings from old savegames.
string with a pre-allocated buffer
Maximum number of companies.
static uint MapMaxY()
Gets the maximum Y coordinate within the map, including MP_VOID.
StringList _network_ban_list
The banned clients.
int GetCurveSpeedLimit() const
Computes train speed limit caused by curves.
ZoomLevel _gui_zoom
GUI Zoom level.
uint16 servint_aircraft
service interval for aircraft
SettingType GetType() const
Return the type of the setting.
SettingDescType cmd
various flags for the variable
const char * many
ONE/MANY_OF_MANY: string of possible values for this type.
Vehicle details; Window numbers:
Base functions for all Games.
Functions related to commands.
Network functions used by other parts of OpenTTD.
bool _network_server
network-server is active
CompanyID _current_company
Company currently doing an action.
static bool IsValidID(size_t index)
Tests whether given index can be used to get valid (non-nullptr) Titem.
static uint TileHeight(TileIndex tile)
Returns the height of a tile.
header file for electrified rail specific functions
static const TextColour CC_ERROR
Colour for error lines.
The original landscape generator.
static const StringID INVALID_STRING_ID
Constant representing an invalid string (16bit in case it is used in savegames)
AI settings; Window numbers:
uint32 grfid
GRF ID (defined by Action 0x08)
static void free(const void *ptr)
Version of the standard free that accepts const pointers.
bool IsFreeWagon() const
Check if the vehicle is a free wagon (got no engine in front of it).
IniGroup * next
the next group within this file
uint8 roadveh_acceleration_model
realistic acceleration for road vehicles
declaration of OTTD revision dependent variables
uint32 param[0x80]
GRF parameters.
static bool HasBit(const T x, const uint8 y)
Checks if a bit in a value is set.
Base functions for all AIs.
#define FOR_ALL_VEHICLES(var)
Iterate over all vehicles.
void SlSetLength(size_t length)
Sets the length of either a RIFF object or the number of items in an array.
static bool TrainSlopeSteepnessChanged(int32 p1)
This function updates the train acceleration cache after a steepness change.
GameCreationSettings game_creation
settings used during the creation of a game (map)
uint16 servint_roadveh
service interval for road vehicles
static size_t LookupOneOfMany(const char *many, const char *one, size_t onelen=0)
Find the index value of a ONEofMANY type in a string separated by |.
static uint MapMaxX()
Gets the maximum X coordinate within the map, including MP_VOID.
StringList _network_bind_list
The addresses to bind on.
AIConfig stores the configuration settings of every AI.
static uint32 BSWAP32(uint32 x)
Perform a 32 bits endianness bitswap on x.
Window functions not directly related to making/drawing windows.
SettingType
Type of settings for filtering.
uint8 md5sum[16]
MD5 checksum of file to distinguish files with the same GRF ID (eg. newer version of GRF) ...
Only find Grfs matching md5sum.
void StringToSettings(const char *value)
Convert a string which is stored in the config file or savegames to custom settings of this Script...
CommandCost CmdChangeCompanySetting(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
Change one of the per-company settings.
char server_password[NETWORK_PASSWORD_LENGTH]
password for joining this server
void SettingsToString(char *string, const char *last) const
Convert the custom settings to a string that can be stored in the config file or savegames.
ZoomLevel zoom_min
minimum zoom out level
void IniSaveWindowSettings(IniFile *ini, const char *grpname, void *desc)
Save a WindowDesc to config.
void SetWindowClassesDirty(WindowClass cls)
Mark all windows of a particular class as dirty (in need of repainting)
Functions related to news.
Base classes/functions for stations.
Errors (eg. saving/loading failed)
std::list< ErrorMessageData > ErrorList
Define a queue with errors.
Company view; Window numbers:
static const TextColour CC_WARNING
Colour for warning lines.
CompanyID _local_company
Company controlled by the human player at this client. Can also be COMPANY_SPECTATOR.
void WriteValue(void *ptr, VarType conv, int64 val)
Write the value of a setting.
SettingDescBase desc
Settings structure (going to configuration file)
Valid changes while vehicle is driving, and possibly changing tracks.
static bool v_PositionMainToolbar(int32 p1)
Reposition the main toolbar as the setting changed.
static bool InvalidateNewGRFChangeWindows(int32 p1)
Update any possible saveload window and delete any newgrf dialogue as its widget parts might change...
Base class for all station-ish types.
Factory to 'query' all available blitters.
Game options window; Window numbers:
bool GetArgumentInteger(uint32 *value, const char *arg)
Change a string into its number representation.
All settings that are only important for the local client.
static TileIndex TileXY(uint x, uint y)
Returns the TileIndex of a coordinate.
void InvalidateWindowData(WindowClass cls, WindowNumber number, int data, bool gui_scope)
Mark window data of the window of a given class and specific window number as invalid (in need of re-...
void UpdateAcceleration()
Update acceleration of the train from the cached power and weight.
Last chunk in this array.
4.0 1 4.1 122 0.3.3, 0.3.4 4.2 1222 0.3.5 4.3 1417 4.4 1426
void MarkWholeScreenDirty()
This function mark the whole screen as dirty.
static void SaveSettings(const SettingDesc *sd, void *object)
Save and load handler for settings.
StringList GetGRFPresetList()
Get the list of known NewGrf presets.
static void SetDParam(uint n, uint64 v)
Set a string parameter v at index n in the global string parameter array.
void ShowFirstError()
Show the first error of the queue.