diff --git a/Makefile.src.in b/Makefile.src.in index f9f6d2a51b..f2d18cccfe 100644 --- a/Makefile.src.in +++ b/Makefile.src.in @@ -92,6 +92,7 @@ MODIFIED := $(shell echo "$(VERSIONS)" | cut -f 3 -d' ') # Use autodetected revisions VERSION := $(shell echo "$(VERSIONS)" | cut -f 1 -d' ') ISODATE := $(shell echo "$(VERSIONS)" | cut -f 2 -d' ') +GITHASH := $(shell echo "$(VERSIONS)" | cut -f 3 -d' ') # Make sure we have something in VERSION and ISODATE ifeq ($(VERSION),) @@ -278,11 +279,11 @@ endif # Revision files -$(SRC_DIR)/rev.cpp: $(CONFIG_CACHE_VERSION) $(CONFIG_CACHE_INVOCATION) $(SRC_DIR)/rev.cpp.in - $(Q)cat $(SRC_DIR)/rev.cpp.in | sed "s@\!\!ISODATE\!\!@$(ISODATE)@g;s@!!VERSION!!@$(VERSION)@g;s@!!MODIFIED!!@$(MODIFIED)@g;s@!!DATE!!@`date +%d.%m.%y`@g;s@\!\!CONFIGURE_INVOCATION\!\!@$(CONFIGURE_INVOCATION)@g;" > $(SRC_DIR)/rev.cpp +$(SRC_DIR)/rev.cpp: $(CONFIG_CACHE_VERSION) $(SRC_DIR)/rev.cpp.in + $(Q)cat $(SRC_DIR)/rev.cpp.in | sed "s@\!\!ISODATE\!\!@$(ISODATE)@g;s@!!VERSION!!@$(VERSION)@g;s@!!MODIFIED!!@$(MODIFIED)@g;s@!!DATE!!@`date +%d.%m.%y`@g;s@!!GITHASH!!@$(GITHASH)@g;s@\!\!CONFIGURE_INVOCATION\!\!@$(CONFIGURE_INVOCATION)@g;" > $(SRC_DIR)/rev.cpp $(SRC_DIR)/os/windows/ottdres.rc: $(CONFIG_CACHE_VERSION) $(SRC_DIR)/os/windows/ottdres.rc.in - $(Q)cat $(SRC_DIR)/os/windows/ottdres.rc.in | sed "s@\!\!ISODATE\!\!@$(ISODATE)@g;s@!!VERSION!!@$(VERSION)@g;s@!!DATE!!@`date +%d.%m.%y`@g" > $(SRC_DIR)/os/windows/ottdres.rc + $(Q)cat $(SRC_DIR)/os/windows/ottdres.rc.in | sed "s@\!\!ISODATE\!\!@$(ISODATE)@g;s@!!VERSION!!@$(VERSION)@g;s@!!DATE!!@`date +%d.%m.%y`@g;s@!!GITHASH!!@$(GITHASH)@g" > $(SRC_DIR)/os/windows/ottdres.rc FORCE: diff --git a/findversion.sh b/findversion.sh index a6e3817b60..2e063cc566 100755 --- a/findversion.sh +++ b/findversion.sh @@ -67,15 +67,23 @@ if [ -d "$ROOT_DIR/.git" ]; then MODIFIED="2" fi HASH=`LC_ALL=C git rev-parse --verify HEAD 2>/dev/null` - SHORTHASH=`echo ${HASH} | cut -c1-8` + SHORTHASH=`echo ${HASH} | cut -c1-10` ISODATE=`LC_ALL=C git show -s --pretty='format:%ci' HEAD | "$AWK" '{ gsub("-", "", $1); print $1 }'` BRANCH="`git symbolic-ref -q HEAD 2>/dev/null | sed 's@.*/@@'`" TAG="`git describe --tags 2>/dev/null`" + if [ "$MODIFIED" -eq "0" ]; then + hashprefix="-g" + elif [ "$MODIFIED" -eq "2" ]; then + hashprefix="-m" + else + hashprefix="-u" + fi + if [ -n "$TAG" ]; then VERSION="${TAG}" else - VERSION="${ISODATE}-${BRANCH}-g${SHORTHASH}" + VERSION="${ISODATE}-${BRANCH}${hashprefix}${SHORTHASH}" fi elif [ -f "$ROOT_DIR/.ottdrev-vc" ]; then VERSION_DATA="`cat "$ROOT_DIR/.ottdrev-vc" | sed -n -e '1 p;'`" diff --git a/projects/determineversion.vbs b/projects/determineversion.vbs index 8bfd4e9217..e5417bb60b 100755 --- a/projects/determineversion.vbs +++ b/projects/determineversion.vbs @@ -21,32 +21,35 @@ Sub FindReplaceInFile(filename, to_find, replacement) file.Close End Sub -Sub UpdateFile(modified, isodate, version, cur_date, filename) +Sub UpdateFile(modified, isodate, version, cur_date, githash, filename) FSO.CopyFile filename & ".in", filename FindReplaceInFile filename, "!!MODIFIED!!", modified FindReplaceInFile filename, "!!ISODATE!!", isodate FindReplaceInFile filename, "!!VERSION!!", version FindReplaceInFile filename, "!!DATE!!", cur_date + FindReplaceInFile filename, "!!GITHASH!!", githash FindReplaceInFile filename, "!!CONFIGURE_INVOCATION!!", "" End Sub Sub UpdateFiles(version) - Dim modified, isodate, cur_date + Dim modified, isodate, cur_date, githash cur_date = DatePart("D", Date) & "." & DatePart("M", Date) & "." & DatePart("YYYY", Date) If InStr(version, Chr(9)) Then isodate = Mid(version, InStr(version, Chr(9)) + 1) modified = Mid(isodate, InStr(isodate, Chr(9)) + 1) + githash = Mid(modified, InStr(modified, Chr(9)) + 1) isodate = Mid(isodate, 1, InStr(isodate, Chr(9)) - 1) modified = Mid(modified, 1, InStr(modified, Chr(9)) - 1) version = Mid(version, 1, InStr(version, Chr(9)) - 1) Else isodate = 0 modified = 1 + githash = "" End If - UpdateFile modified, isodate, version, cur_date, "../src/rev.cpp" - UpdateFile modified, isodate, version, cur_date, "../src/os/windows/ottdres.rc" + UpdateFile modified, isodate, version, cur_date, githash, "../src/rev.cpp" + UpdateFile modified, isodate, version, cur_date, githash, "../src/os/windows/ottdres.rc" End Sub Function DetermineVersion() @@ -54,7 +57,7 @@ Function DetermineVersion() Set WshShell = CreateObject("WScript.Shell") On Error Resume Next - modified = 1 + modified = 0 hash = "" shorthash = "" branch = "" @@ -72,7 +75,7 @@ Function DetermineVersion() If oExec.ExitCode = 0 Then hash = oExec.StdOut.ReadLine() - shorthash = Mid(hash, 1, 8) + shorthash = Mid(hash, 1, 10) ' Make sure index is in sync with disk Set oExec = WshShell.Exec("git update-index --refresh") If Err.Number = 0 Then @@ -133,18 +136,21 @@ Function DetermineVersion() rev_file.Close() ElseIf hash = "" Then DetermineVersion = "norev000" + modified = 1 Else - Dim version - If tag <> "" Then - version = tag - ElseIf branch = "master" Then - version = isodate & "-g" & shorthash + Dim version, hashprefix + If modified = 0 Then + hashprefix = "-g" + ElseIf modified = 2 Then + hashprefix = "-m" Else - version = isodate & "-" & branch & "-g" & shorthash + hashprefix = "-u" End If - If modified = 2 Then - version = version & "M" + If tag <> "" Then + version = tag + Else + version = isodate & "-" & branch & hashprefix & shorthash End If DetermineVersion = version & Chr(9) & isodate & Chr(9) & modified & Chr(9) & hash diff --git a/src/ai/ai.hpp b/src/ai/ai.hpp index 065367d03b..1b5b6c07da 100644 --- a/src/ai/ai.hpp +++ b/src/ai/ai.hpp @@ -32,7 +32,7 @@ public: START_NEXT_EASY = DAYS_IN_YEAR * 2, START_NEXT_MEDIUM = DAYS_IN_YEAR, START_NEXT_HARD = DAYS_IN_YEAR / 2, - START_NEXT_MIN = 1, + START_NEXT_MIN = 0, START_NEXT_MAX = 3600, START_NEXT_DEVIATION = 60, }; diff --git a/src/ai/ai_config.cpp b/src/ai/ai_config.cpp index f920d31014..20e913c2e9 100644 --- a/src/ai/ai_config.cpp +++ b/src/ai/ai_config.cpp @@ -118,3 +118,14 @@ void AIConfig::SetSetting(const char *name, int value) ScriptConfig::SetSetting(name, value); } + +void AIConfig::AddRandomDeviation() +{ + int start_date = this->GetSetting("start_date"); + + ScriptConfig::AddRandomDeviation(); + + /* start_date = 0 is a special case, where random deviation does not occur. + * If start_date was not already 0, then a minimum value of 1 must apply. */ + this->SetSetting("start_date", start_date != 0 ? max(1, this->GetSetting("start_date")) : 0); +} diff --git a/src/ai/ai_config.hpp b/src/ai/ai_config.hpp index b02935902c..600ae1af93 100644 --- a/src/ai/ai_config.hpp +++ b/src/ai/ai_config.hpp @@ -34,6 +34,7 @@ public: /* virtual */ int GetSetting(const char *name) const; /* virtual */ void SetSetting(const char *name, int value); + /* virtual */ void AddRandomDeviation(); /** * When ever the AI Scanner is reloaded, all infos become invalid. This diff --git a/src/company_cmd.cpp b/src/company_cmd.cpp index 132ac7bf0f..986ad7d5fe 100644 --- a/src/company_cmd.cpp +++ b/src/company_cmd.cpp @@ -603,10 +603,10 @@ void StartupCompanies() } /** Start a new competitor company if possible. */ -static void MaybeStartNewCompany() +static bool MaybeStartNewCompany() { #ifdef ENABLE_NETWORK - if (_networking && Company::GetNumItems() >= _settings_client.network.max_companies) return; + if (_networking && Company::GetNumItems() >= _settings_client.network.max_companies) return false; #endif /* ENABLE_NETWORK */ Company *c; @@ -620,8 +620,10 @@ static void MaybeStartNewCompany() if (n < (uint)_settings_game.difficulty.max_no_competitors) { /* Send a command to all clients to start up a new AI. * Works fine for Multiplayer and Singleplayer */ - DoCommandP(0, 1 | INVALID_COMPANY << 16, 0, CMD_COMPANY_CTRL); + return DoCommandP(0, 1 | INVALID_COMPANY << 16, 0, CMD_COMPANY_CTRL); } + + return false; } /** Initialize the pool of companies. */ @@ -722,11 +724,15 @@ void OnTick_Companies() } if (_next_competitor_start == 0) { - _next_competitor_start = AI::GetStartNextTime() * DAY_TICKS; + /* AI::GetStartNextTime() can return 0. */ + _next_competitor_start = max(1, AI::GetStartNextTime() * DAY_TICKS); } - if (AI::CanStartNew() && _game_mode != GM_MENU && --_next_competitor_start == 0) { - MaybeStartNewCompany(); + if (_game_mode != GM_MENU && AI::CanStartNew() && --_next_competitor_start == 0) { + /* Allow multiple AIs to possibly start in the same tick. */ + do { + if (!MaybeStartNewCompany()) break; + } while (AI::GetStartNextTime() == 0); } _cur_company_tick_index = (_cur_company_tick_index + 1) % MAX_COMPANIES; diff --git a/src/company_gui.cpp b/src/company_gui.cpp index 10fe22de12..608632379d 100644 --- a/src/company_gui.cpp +++ b/src/company_gui.cpp @@ -704,9 +704,6 @@ public: this->CreateNestedTree(); this->vscroll = this->GetScrollbar(WID_SCL_MATRIX_SCROLLBAR); - this->square = GetSpriteSize(SPR_SQUARE); - this->line_height = max(this->square.height, (uint)FONT_HEIGHT_NORMAL) + 4; - if (group == INVALID_GROUP) { this->livery_class = LC_OTHER; this->sel = 1; @@ -774,6 +771,9 @@ public: case WID_SCL_MATRIX: { /* 11 items in the default rail class */ + this->square = GetSpriteSize(SPR_SQUARE); + this->line_height = max(this->square.height, (uint)FONT_HEIGHT_NORMAL) + 4; + size->height = 11 * this->line_height; resize->width = 1; resize->height = this->line_height; @@ -788,6 +788,7 @@ public: FALLTHROUGH; case WID_SCL_PRI_COL_DROPDOWN: { + this->square = GetSpriteSize(SPR_SQUARE); int padding = this->square.width + NWidgetScrollbar::GetVerticalDimension().width + 10; for (const StringID *id = _colour_dropdown; id != endof(_colour_dropdown); id++) { size->width = max(size->width, GetStringBoundingBox(*id).width + padding); diff --git a/src/gamelog.cpp b/src/gamelog.cpp index 094460226c..074159138c 100644 --- a/src/gamelog.cpp +++ b/src/gamelog.cpp @@ -23,13 +23,13 @@ #include "safeguards.h" -extern const uint16 SAVEGAME_VERSION; ///< current savegame version +extern const SaveLoadVersion SAVEGAME_VERSION; ///< current savegame version extern SavegameType _savegame_type; ///< type of savegame we are loading -extern uint32 _ttdp_version; ///< version of TTDP savegame (if applicable) -extern uint16 _sl_version; ///< the major savegame version identifier -extern byte _sl_minor_version; ///< the minor savegame version, DO NOT USE! +extern uint32 _ttdp_version; ///< version of TTDP savegame (if applicable) +extern SaveLoadVersion _sl_version; ///< the major savegame version identifier +extern byte _sl_minor_version; ///< the minor savegame version, DO NOT USE! static GamelogActionType _gamelog_action_type = GLAT_NONE; ///< action to record if anything changes diff --git a/src/gamelog_internal.h b/src/gamelog_internal.h index daa5436968..75b65bdb6e 100644 --- a/src/gamelog_internal.h +++ b/src/gamelog_internal.h @@ -12,7 +12,6 @@ #ifndef GAMELOG_INTERNAL_H #define GAMELOG_INTERNAL_H -#include "network/core/config.h" #include "gamelog.h" /** Type of logged change */ @@ -33,6 +32,8 @@ enum GamelogChangeType { }; +static const uint GAMELOG_REVISION_LENGTH = 15; + /** Contains information about one logged change */ struct LoggedChange { GamelogChangeType ct; ///< Type of change logged in this struct diff --git a/src/group_cmd.cpp b/src/group_cmd.cpp index 2c28a3d0ab..484a948184 100644 --- a/src/group_cmd.cpp +++ b/src/group_cmd.cpp @@ -718,6 +718,8 @@ CommandCost CmdSetGroupLivery(TileIndex tile, DoCommandFlag flags, uint32 p1, ui if (g == NULL || g->owner != _current_company) return CMD_ERROR; + if (colour >= COLOUR_END && colour != INVALID_COLOUR) return CMD_ERROR; + if (flags & DC_EXEC) { if (primary) { SB(g->livery.in_use, 0, 1, colour != INVALID_COLOUR); diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index 93b82295c6..e3b7a5608f 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -286,6 +286,7 @@ STR_COLOUR_BROWN :Smeđa STR_COLOUR_GREY :Siva STR_COLOUR_WHITE :Bijela STR_COLOUR_RANDOM :Nasumično +STR_COLOUR_DEFAULT :Osnovna postavka # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph @@ -2872,6 +2873,8 @@ STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nema dos STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_FILTER_TITLE :{BLACK}Filtriraj niz: +STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Presnimi datoteku +STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Jeste li sigurano da želite presnimiti postojeću datoteku? STR_SAVELOAD_OSKTITLE :{BLACK}Upiši ime za spremanje igre @@ -3516,6 +3519,7 @@ STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupe - STR_GROUP_CREATE_TOOLTIP :{BLACK}Klikni za kreiranje grupe STR_GROUP_DELETE_TOOLTIP :{BLACK}Obriši odabranu grupu STR_GROUP_RENAME_TOOLTIP :{BLACK}Preimenuj odabranu grupu +STR_GROUP_LIVERY_TOOLTIP :{BLACK}Promijeni livreju odabrane grupe STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klikni kako bi zaštitio ovu grupu od globalne automatske zamjene STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Izbriši grupu diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index 0a7c8e96e7..597e0c0702 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -241,7 +241,7 @@ STR_BUTTON_RENAME :{BLACK}Hernoeme STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Sluit venster STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Vensternaam - sleep om venster te verplaatsen STR_TOOLTIP_SHADE :{BLACK}Venster inklappen - alleen titelbalk weergeven -STR_TOOLTIP_DEBUG :{BLACK}Toon NewGRF-debuginformatie +STR_TOOLTIP_DEBUG :{BLACK}Probleemgegevens voor NewGRF weergeven STR_TOOLTIP_DEFSIZE :{BLACK}wijzig venster naar standaardgrootte. Ctrl+Klik om de huidige grootte als standaard op te slaan STR_TOOLTIP_STICKY :{BLACK}Markeer dit venster als niet-sluitbaar door de 'Sluit alle vensters'-knop. Ctrl+Klik om status als default op te slaan STR_TOOLTIP_RESIZE :{BLACK}Klik en sleep om de grootte van dit venster te veranderen @@ -264,7 +264,7 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Door het # Query window STR_BUTTON_DEFAULT :{BLACK}Standaard STR_BUTTON_CANCEL :{BLACK}Annuleren -STR_BUTTON_OK :{BLACK}Oké +STR_BUTTON_OK :{BLACK}OK # On screen keyboard window STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ . @@ -329,7 +329,7 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Verhaal STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Geef doellijst weer STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Grafieken weergeven STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Bedrijfsscoretabel weergeven -STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Financier de bouw van nieuwe industrie of toon lijst van alle industrieën +STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Financier de bouw van nieuwe industrie of geef lijst van alle industrieën weer STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Lijst met treinen van het bedrijf weergeven. Ctrl+klik schakelt tussen lijst van groepen/voertuigen. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Lijst met wegvoertuigen van het bedrijf weergeven. Ctrl+klik schakelt tussen lijst van groepen/voertuigen. STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Lijst met schepen van het bedrijf weergeven. Ctrl+klik schakelt tussen lijst van groepen/voertuigen. @@ -342,7 +342,7 @@ STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Bouw hav STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Bouw vliegvelden STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Open de landschapsbalk om land te verhogen/verlagen, bomen te planten, etc. STR_TOOLBAR_TOOLTIP_SHOW_SOUND_MUSIC_WINDOW :{BLACK}Geluid-/muziekvenster weergeven -STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Toon laatst (nieuws)bericht, toon berichtinstellingen +STR_TOOLBAR_TOOLTIP_SHOW_LAST_MESSAGE_NEWS :{BLACK}Laatste (nieuws-)bericht weergeven, berichtinstellingen weergeven STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Landinformatie, console, scriptdebug, screenshots, over OpenTTD STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Verwissel knoppenbalk @@ -380,9 +380,9 @@ STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRF-instelli STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Doorzichtigheidsopties STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Plaatsnamen weergeven STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :Stationsnamen weergeven -STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Seinhuisnamen weergeven +STR_SETTINGS_MENU_WAYPOINTS_DISPLAYED :Namen van routepunten weergeven STR_SETTINGS_MENU_SIGNS_DISPLAYED :Bordjes weergeven -STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Toon borden en namen van tegenstanders +STR_SETTINGS_MENU_SHOW_COMPETITOR_SIGNS :Bordjes en namen van tegenstanders weergeven STR_SETTINGS_MENU_FULL_ANIMATION :Alle animaties STR_SETTINGS_MENU_FULL_DETAIL :Alle details STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Transparante gebouwen @@ -585,7 +585,7 @@ STR_GRAPH_CARGO_ENABLE_ALL :{TINY_FONT}{BLA STR_GRAPH_CARGO_DISABLE_ALL :{TINY_FONT}{BLACK}Alles uit STR_GRAPH_CARGO_TOOLTIP_ENABLE_ALL :{BLACK}Alle vrachtsoorten weergeven op de grafiek van vrachtprijzen STR_GRAPH_CARGO_TOOLTIP_DISABLE_ALL :{BLACK}Geen vrachtsoorten weergeven op de grafiek van vrachtprijzen -STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Schakel grafiek voor vrachttype aan/uit +STR_GRAPH_CARGO_PAYMENT_TOGGLE_CARGO :{BLACK}Grafiek voor vrachttype aan-uit STR_GRAPH_CARGO_PAYMENT_CARGO :{TINY_FONT}{BLACK}{STRING} STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP :{BLACK}Gedetailleerde prestatiescores weergeven @@ -670,7 +670,7 @@ STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Selectee STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Kies 'Ezy Street stylemuziek'-programma STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Selecteer 'Aangepast1'-programma STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selecteer 'Aangepast2'-programma -STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Programmashuffle aan/uit +STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Willekeurige volgorde aan-uit STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Venster voor muzieknummers weergeven # Playlist window @@ -716,7 +716,7 @@ STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Voertuig STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Industrieën op de kaart weergeven STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Vrachtstroom op de kaart weergeven STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Transportroutes op de kaart weergeven -STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Toon begroeiing op de kaart +STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Begroeiing op de kaart weergeven STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Landeigenaren op de kaart weergeven STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klik op een industriesoort om deze weer te geven. Ctrl+klik verbergt alle andere industriesoorten behalve de geselecteerde. Nogmaals Ctrl+klik geeft opnieuw alle industriesoorten weer. STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klik op een bedrijf om de bedrijfseigendommen weer te geven. Ctrl+klik verbergt alle andere bedrijven behalve de geselecteerde. Nogmaals Ctrl+klik geeft opnieuw alle bedrijven weer. @@ -751,7 +751,7 @@ STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLA STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Woestijn STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Sneeuw -STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Plaatsnamen op de kaart aan/uit +STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Plaatsnamen op de kaart weergeven-verbergen. STR_SMALLMAP_CENTER :{BLACK}Centreer de kaart op huidige positie STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM}) STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING} @@ -762,14 +762,14 @@ STR_SMALLMAP_ENABLE_ALL :{BLACK}Alles in STR_SMALLMAP_SHOW_HEIGHT :{BLACK}Hoogte weergeven STR_SMALLMAP_TOOLTIP_DISABLE_ALL_INDUSTRIES :{BLACK}Geen industrieën op de kaart weergeven STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Alle industrieën op de kaart weergeven -STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Schakel tonen van hoogte aan/uit +STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Hoogtekaart weergeven-verbergen STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Verberg bedrijfseigendommen op de kaart STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Alle bedrijfseigendommen op de kaart weergeven STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Geen vrachtsoorten op de kaart weergeven STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Alle vrachtsoorten op de kaart weergeven # Status bar messages -STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Toon laatst (nieuws)bericht +STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Laatste (nieuws-)bericht weergeven STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - - STR_STATUSBAR_PAUSED :{YELLOW}* * GEPAUZEERD * * STR_STATUSBAR_AUTOSAVE :{RED}AUTOMATISCH OPSLAAN @@ -783,13 +783,13 @@ STR_MESSAGE_NEWS_FORMAT :{STRING} - {S STR_NEWS_MESSAGE_CAPTION :{WHITE}Bericht STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING} -STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Inwoners feesten . . .{}Eerste trein arriveert in {STATION}! -STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Inwoners feesten . . .{}Eerste bus arriveert in {STATION}! -STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Inwoners feesten . . .{}Eerste vrachtwagen arriveert in {STATION}! -STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Inwoners feesten . . .{}Eerste passagierstram arriveert in {STATION}! -STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Inwoners feesten . . .{}Eerste vrachttram arriveert in {STATION}! -STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Inwoners feesten . . .{}Eerste schip arriveert in {STATION}! -STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Inwoners feesten . . .{}Eerste vliegtuig arriveert in {STATION}! +STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Inwoners vieren feest. . .{}Eerste trein arriveert bij {STATION}! +STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Inwoners vieren feest. . .{}Eerste bus arriveert bij {STATION}! +STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Inwoners vieren feest. . .{}Eerste vrachtwagen arriveert bij {STATION}! +STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Inwoners vieren feest. . .{}Eerste passagierstram arriveert bij {STATION}! +STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Inwoners vieren feest. . .{}Eerste vrachttram arriveert bij {STATION}! +STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Inwoners vieren feest. . .{}Eerste schip arriveert in {STATION}! +STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Inwoners vieren feest . . .{}Eerste vliegtuig arriveert op {STATION}! STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Treinongeluk!{}{COMMA} komen om in explosie na de botsing STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Wegvoertuig verongelukt!{}Bestuurder komt om in explosie na botsing met trein @@ -799,10 +799,10 @@ STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLAC STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}Zeppelinongeluk bij {STATION}! STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}Wegvoertuig vernietigd in botsing met 'UFO' -STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Olieraffinaderij in de buurt van {TOWN} is geëxplodeerd! +STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}Olieraffinaderij bij {TOWN} is ontploft! STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}Fabriek in de buurt van {TOWN} is vernietigd onder verdachte omstandigheden! STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}'UFO' landt in de buurt van {TOWN}! -STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Instorting van kolenmijn laat spoor van vernietiging achter in de buurt van {TOWN}! +STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLACK}Instorting van kolenmijn laat spoor van vernieling achter bij {TOWN}! STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Overstromingen!{}Minstens {COMMA} zijn vermist of dood na overstromingen! STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Transportbedrijf in de problemen! @@ -817,7 +817,7 @@ STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLAC STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Directeur) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} betaalt bouw van nieuwe stad {TOWN}! -STR_NEWS_NEW_TOWN_UNSPONSORED :{BLACK}{BIG_FONT}Er is een nieuwe stad gemaakt met de naam {TOWN}! +STR_NEWS_NEW_TOWN_UNSPONSORED :{BLACK}{BIG_FONT}Er is een nieuwe stad gebouwd met de naam {TOWN}! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Nieuwe {STRING} in aanbouw bij {TOWN}! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Nieuw {STRING} in aanplant bij {TOWN}! @@ -839,7 +839,7 @@ STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_GENERAL :{BIG_FONT}{BLAC STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_FARM :{BIG_FONT}{BLACK}Insectenplaag zorgt voor ravage bij {INDUSTRY}!{}Productie gezakt met 50% STR_NEWS_INDUSTRY_PRODUCTION_DECREASE_SMOOTH :{BIG_FONT}{BLACK}{STRING} productie van {INDUSTRY} daalt met {COMMA}%! -STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} wacht in treindepot +STR_NEWS_TRAIN_IS_WAITING :{WHITE}{VEHICLE} wacht in remise STR_NEWS_ROAD_VEHICLE_IS_WAITING :{WHITE}{VEHICLE} wacht in garage STR_NEWS_SHIP_IS_WAITING :{WHITE}{VEHICLE} wacht in dok STR_NEWS_AIRCRAFT_IS_WAITING :{WHITE}{VEHICLE} wacht in hangar @@ -874,14 +874,14 @@ STR_NEWS_STATION_NOW_ACCEPTS_CARGO_AND_CARGO :{WHITE}{STATION STR_NEWS_OFFER_OF_SUBSIDY_EXPIRED :{BIG_FONT}{BLACK}Subsidieaanbod is verlopen:{}{}{STRING} van {STRING} naar {STRING} wordt nu niet meer gesubsidieerd STR_NEWS_SUBSIDY_WITHDRAWN_SERVICE :{BIG_FONT}{BLACK}Subsidie ingetrokken:{}{}{STRING}route van {STRING} naar {STRING} wordt nu niet meer gesubsidieerd STR_NEWS_SERVICE_SUBSIDY_OFFERED :{BIG_FONT}{BLACK}Subsidie aangeboden:{}{}Eerste {STRING}route van {STRING} naar {STRING} krijgt een jaar lang subsidie van de gemeente! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subsidie uitgereikt aan {STRING}!{}{}{STRING}route van {STRING} naar {STRING} krijgt volgend jaar 50% extra betaald! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subsidie uitgereikt aan {STRING}!{}{}{STRING}route van {STRING} naar {STRING} krijgt volgend jaar dubbel betaald! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subsidie uitgereikt aan {STRING}!{}{}{STRING}route van {STRING} naar {STRING} krijgt volgend jaar driedubbel betaald! -STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subsidie uitgereikt aan {STRING}!{}{}{STRING}route van {STRING} naar {STRING} krijgt volgend jaar vierdubbel betaald! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_HALF :{BIG_FONT}{BLACK}Subsidie toegekend aan {STRING}!{}{}{STRING}route van {STRING} naar {STRING} krijgt volgend jaar 50% extra betaald! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_DOUBLE :{BIG_FONT}{BLACK}Subsidie toegekend aan {STRING}!{}{}{STRING}route van {STRING} naar {STRING} krijgt volgend jaar dubbel betaald! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_TRIPLE :{BIG_FONT}{BLACK}Subsidie toegekend aan {STRING}!{}{}{STRING}route van {STRING} naar {STRING} krijgt volgend jaar driedubbel betaald! +STR_NEWS_SERVICE_SUBSIDY_AWARDED_QUADRUPLE :{BIG_FONT}{BLACK}Subsidie toegekend aan {STRING}!{}{}{STRING}route van {STRING} naar {STRING} krijgt volgend jaar vierdubbel betaald! STR_NEWS_ROAD_REBUILDING :{BIG_FONT}{BLACK}Verkeerschaos in {TOWN}!{}{}Wegherstelling betaald door {STRING} zorgt voor 6 maanden van miserie bij weggebruikers! STR_NEWS_EXCLUSIVE_RIGHTS_TITLE :{BIG_FONT}{BLACK}Transportmonopolie! -STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Lokale overheid van {TOWN} tekent contract met {STRING} voor een jaar exclusieve transportrechten! +STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLACK}Gemeentebestuur van {TOWN} tekent contract met {STRING} voor een jaar exclusieve transportrechten! # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Kijkvenster {COMMA} @@ -967,7 +967,7 @@ STR_GAME_OPTIONS_TOWN_NAME_CATALAN :Catalaans ############ end of townname region STR_GAME_OPTIONS_AUTOSAVE_FRAME :{BLACK}Automatisch opslaan -STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Kies interval tussen automatisch opgeslagen spellen +STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Kies tijdsduur tussen automatisch opgeslagen spellen ############ start of autosave dropdown STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Uit @@ -1166,24 +1166,24 @@ STR_CONFIG_SETTING_TRAIN_REVERSING :Niet toestaan d STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Indien ingeschakeld zullen treinen niet omkeren in niet-eind stations, zelfs als er een kortere weg naar hun volgende bestemming is bij omkeren STR_CONFIG_SETTING_DISASTERS :Rampen: {STRING} STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Schakel rampen die af en toe voertuigen of infrastructuur kunnen blokkeren of vernietigen in/uit -STR_CONFIG_SETTING_CITY_APPROVAL :De houding van de gemeenteraad ten opzichte van herstructurering gebied: {STRING} +STR_CONFIG_SETTING_CITY_APPROVAL :Houding van gemeentebestuur ten opzichte van herstructurering omgeving: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Kies hoeveel lawaai en schade aan het milieu door bedrijven de stadswaardering en hun acties beïnvloeden in hun bouwgebied -STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maximum kaarthoogte: {STRING} +STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maximale kaarthoogte: {STRING} STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Stel de maximum toegestane hoogte voor bergen op de kaart in -STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Je kunt de maximum kaarthoogte niet in deze waarde wijzigen. Minstens één berg op de kaart is hoger +STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Je kunt de maximale kaarthoogte niet in deze waarde wijzigen. Minstens één berg op de kaart is hoger. STR_CONFIG_SETTING_AUTOSLOPE :Omgeving aanpassen onder gebouwen, spoorwegen, enz. toestaan: {STRING} STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Staat het aanpassen van funderingen onder gebouwen en sporen toe zonder deze te verwijderen STR_CONFIG_SETTING_CATCHMENT :Gebruik meer realistische handelsgebieden: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Heb verschillende grootte verzorgingsgebied voor verschillende typen stations en luchthavens STR_CONFIG_SETTING_EXTRADYNAMITE :Sta verwijderen van meer stedelijke wegen, bruggen en tunnels toe: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Maakt het gemakkelijker om door de stad beheerde infrastructuur en gebouwen te verwijderen. -STR_CONFIG_SETTING_TRAIN_LENGTH :Maximum lengte van treinen: {STRING} -STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Stel de maximum lengte van treinen in +STR_CONFIG_SETTING_TRAIN_LENGTH :Maximale lengte van treinen: {STRING} +STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Stel de maximale lengte van treinen in STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} tegel{P 0 "" s} STR_CONFIG_SETTING_SMOKE_AMOUNT :Hoeveelheid rook/vonken: {STRING} STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Bepaal hoeveel rook of hoeveel vonken door de voertuigen worden uitgestoten. -STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Trein acceleratie model: {STRING} +STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Treinacceleratiemodel: {STRING} STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Selecteer de physics model voor de trein acceleratie. Het "originele" model straft hellingen gelijk voor alle voertuigen. Het "realistische" model bestraft hellingen en bochten, afhankelijk van de verschillende eigenschappen van de inhoud, zoals lengte en trekkracht STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Wegvoertuig acceleratie model: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Selecteer de physics model voor wegvoertuigacceleratie. Het "originele" model straft hellingen gelijk voor alle voertuigen. Het "realistische" model bestraft hellingen, afhankelijk van verschillende eigenschappen van het voertuig, bijvoorbeeld 'trekkracht' @@ -1192,18 +1192,18 @@ STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Steilheid van e STR_CONFIG_SETTING_PERCENTAGE :{COMMA}% STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Hellingsterkte voor wegvoertuigen: {STRING} STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Steilheid van een schuine tegel voor een wegvoertuig. Hogere waarden maken het moeilijker om een heuvel te beklimmen -STR_CONFIG_SETTING_FORBID_90_DEG :Verbied treinen en schepen om 90° te draaien: {STRING} +STR_CONFIG_SETTING_FORBID_90_DEG :Treinen en schepen mogen niet 90° draaien: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Draaiingen met 90° treden op wanneer een horizontale baan direct gevolgd wordt door een verticaal baanstuk op de aangrenzende tegel, waardoor de trein daarna 90 graden draait wanneer de tegelrand wordt overgestoken in plaats van de gebruikelijke 45 graden voor andere spoorcombinaties. Dit geldt ook voor de draaicirkel van schepen STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Sta het samenvoegen van indirect aansluitende stations toe: {STRING} STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Sta toe dat er aanvullende onderdelen aan een station worden geplaatst zonder dat reeds bestaande onderdelen beïnvloed worden. Ctrl+klik is vereist tijdens het plaatsen van nieuwe onderdelen. STR_CONFIG_SETTING_INFLATION :Inflatie: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Schakel inflatie in de economie in, waardoor de kosten iets sneller stijgen dan de betalingen STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maximum bruglengte: {STRING} -STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maximum lengte voor te bouwen bruggen -STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maximum brughoogte: {STRING} +STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maximale lengte voor te bouwen bruggen +STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maximale brughoogte: {STRING} STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Maximum hoogte om bruggen te bouwen STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maximum tunnellengte: {STRING} -STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maximum lengte voor te bouwen tunnels +STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maximale lengte voor te bouwen tunnels STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Handmatige bouwmethode voor primaire industrieën: {STRING} STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Wijze van financiering van een primaire industrie. 'geen' betekent dat het niet mogelijk is om te financieren, 'prospectie' betekent dat financiering mogelijk is, maar de bouw vindt plaats in een willekeurige plek op de kaart en kan mislukken ook, "als andere bedrijfstakken": ruwe industrieën kan worden geconstrueerd door bedrijven als verwerkende industrie in elke positie zij willen STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Geen @@ -1233,13 +1233,13 @@ STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Uitgeschakeld STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Hoofdkijkvenster, alleen volledig scherm STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Hoofdkijkvenster STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Elk kijkvenster -STR_CONFIG_SETTING_BRIBE :Omkopen van de gemeente toestaan: {STRING} +STR_CONFIG_SETTING_BRIBE :Omkopen van gemeentebestuur toestaan: {STRING} STR_CONFIG_SETTING_BRIBE_HELPTEXT :Toestaan dat bedrijven mogen proberen de plaatselijke autoriteiten om te kopen. Als de omkoping wordt opgemerkt door een inspecteur, zal de onderneming niet in staat zijn om in de stad actie te ondernemen voor zes maanden STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Kopen van exclusieve transportrechten toestaan: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Wanneer een bedrijf de exclusieve transportrechten van een stad koopt, ontvangen de stations (zowel passagiers als vracht) van de tegenstanders geen vracht voor één heel jaar. STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Financiering van gebouwen toestaan: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Deze optie staat bedrijven toe meer geld te geven aan steden voor de financiering van nieuwe huizen. -STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Financieren van lokale wegherbouwing toestaan: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Financieren van lokale wegreconstructie toestaan: {STRING} STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Deze optie staat bedrijven toe geld te geven aan steden voor het herbouwen van wegen, zodat op wegbedrijven gesaboteerd worden. STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Geld geven aan andere bedrijven toestaan: {STRING} STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Sta toe dat bedrijven geld naar elkaar overmaken in een multiplayerspel. @@ -1253,7 +1253,7 @@ STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Kies de kans op STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Geen STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Verminderd STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normaal -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Sta toe dat doorrijwegstops worden geplaatst op door stad beheerde wegen: {STRING} +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Haltes plaatsen op door stad beheerde wegen toestaan: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Laat het bouwen van doorrijhaltes toe op stedelijke wegen STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Sta doorrijhaltes op wegen van tegenstanders toe: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Laat het bouwen van doorrijhaltes toe op wegen van andere bedrijven @@ -1280,7 +1280,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Voertuigen verl STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES_HELPTEXT :Wanneer ingeschakeld, alle voertuig modellen blijven voor altijd beschikbaar na hun introductie STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Vernieuw voertuig automatisch wanneer deze oud wordt: {STRING} STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Wanneer ingeschakeld, wordt een voertuig die het einde van zijn levensduur nadert automatisch vervangen als aan de vernieuw voorwaarden worden voldaan -STR_CONFIG_SETTING_AUTORENEW_MONTHS :Vernieuw voertuigen automatisch na {STRING} maximum leeftijd +STR_CONFIG_SETTING_AUTORENEW_MONTHS :Vernieuw voertuigen automatisch na {STRING} maximumleeftijd STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Relatieve leeftijd van een voertuig wanneer deze in aanmerking komt voor automatisch vervangen STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} maand{P 0 "" en} voor STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} maand{P 0 "" en} na @@ -1308,7 +1308,7 @@ STR_CONFIG_SETTING_TERRAIN_TYPE :Terrein type: { STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Alleen TerraGenesis) Heuvelachtigheid van het landschap STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industriedichtheid: {STRING} STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Stel in hoeveel industrieën moeten worden gegenereerd en welk niveau tijdens het spel moet worden gehandhaafd -STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximum afstand van de rand voor Olierafinaderijen: {STRING} +STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximumafstand van de rand voor Olierafinaderijen: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Olieraffinaderijen worden alleen gebouwd nabij de kaart grens, dat is aan de kust van eiland kaarten STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Sneeuwhoogte: {STRING} STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Instellen op welke hoogte de sneeuw begint in sub-arctische landschap. Sneeuw heeft ook invloed op de industrie generatie en stadsgroei eisen @@ -1337,9 +1337,9 @@ STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Eén of STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Eén of meer vakjes aan de rand zijn geen water STR_CONFIG_SETTING_STATION_SPREAD :Maximale stationsgrootte: {STRING} -STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Maximum gebied waar onderdelen van één station op verspreid mogen zijn. Grotere gebieden vertragen het spel! +STR_CONFIG_SETTING_STATION_SPREAD_HELPTEXT :Maximaal oppervlak waarover onderdelen van één station verspreid mogen zijn. Grotere oppervlakken vertragen het spel! STR_CONFIG_SETTING_SERVICEATHELIPAD :Helikopters automatisch repareren op helipads: {STRING} -STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Pleeg onderhoud aan elke helikopter na een landing, ook wanneer er geen depot aanwezig is op de luchthaven. +STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :Helikopteronderhoud na landing, ook als er geen hangar is op de luchthaven. STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Verbind de knoppenbalk voor terreinvorming met die voor spoor/weg/water/vliegveld: {STRING} STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :Bij het openen van een werkbalk voor constructie van transport ook een werkbalk openen voor landschapsvorming. STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Gebruiker land kleur op de kleine kaart: {STRING} @@ -1388,7 +1388,7 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Sluit window me STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Sluit een venster door met de rechtermuisknop erin te klikken. Schakelt de tooltip uit met de rechtermuisknop! STR_CONFIG_SETTING_AUTOSAVE :Automatisch opslaan: {STRING} -STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Kies interval tussen automatische spelopslag +STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Kies tijdsduur voor automatische spelopslag STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Gebruik {STRING} datumformaat voor naamgeving van opgeslagen spellen STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Formaat van de datum in savegamebestandsnamen @@ -1406,7 +1406,7 @@ STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Alles behalve l STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Alle mogelijkheden STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Gebruik groepen voor voertuigenlijst: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Schakel het gebruik van de geavanceerde voertuigenlijsten in voor het groeperen van voertuigen -STR_CONFIG_SETTING_LOADING_INDICATORS :Gebruik laadindicatoren: {STRING} +STR_CONFIG_SETTING_LOADING_INDICATORS :Laadpercentages gebruiken: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Geef aan of laadindicatoren worden weergegeven boven ladende of lossende voertuigen STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Dienstregeling in tikken weergeven i.p.v. in dagen: {STRING} STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Reistijden in tijdtabellen in speltikken weergeven in plaats van dagen @@ -1427,11 +1427,11 @@ STR_CONFIG_SETTING_EXPENSES_LAYOUT :Groepeer uitgav STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definieer de lay-out voor het bedrijfsuitgavenvenster STR_CONFIG_SETTING_SOUND_TICKER :Nieuwsticker: {STRING} -STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Speel geluidseffect voor samenvatting nieuwsberichten +STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Geluidseffect afspelen bij korte nieuwsberichten STR_CONFIG_SETTING_SOUND_NEWS :Krant: {STRING} STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Geluidseffect weergeven bij nieuwsbericht STR_CONFIG_SETTING_SOUND_NEW_YEAR :Einde jaar: {STRING} -STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Speel geluidseffecten bij de samenvatting van resultaten gedurende het jaar ten opzichte van het jaar ervoor aan het einde van het jaar +STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Geluidseffect afspelen bij jaaroverzicht van bedrijf t.o.v. vorig jaar STR_CONFIG_SETTING_SOUND_CONFIRM :Bouw: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Speel geluidseffecten bij succesvolle constructies of andere acties STR_CONFIG_SETTING_SOUND_CLICK :Knop kliks: {STRING} @@ -1445,14 +1445,14 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Speel omgevings STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Bouwen van infrastructuur uitschakelen wanneer geen geschikt voertuig beschikbaar is: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Wanneer je dit inschakelt, is de infrastructuur alleen beschikbaar als er ook voertuigen beschikbaar zijn. Dit voorkomt verspilling van tijd en geld aan onbruikbare infrastructuur -STR_CONFIG_SETTING_MAX_TRAINS :Maximum aantal treinen per bedrijf: {STRING} -STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maximum aantal treinen dat een bedrijf kan hebben -STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maximum aantal wegvoertuigen per bedrijf: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS :Maximumaantal treinen per bedrijf: {STRING} +STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Maximumaantal treinen dat een bedrijf kan hebben +STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Maximumaantal wegvoertuigen per bedrijf: {STRING} STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Maximum aantal wegvoertuigen dat een bedrijf kan hebben -STR_CONFIG_SETTING_MAX_AIRCRAFT :Maximum aantal vliegtuigen per bedrijf: {STRING} -STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maximum aantal vliegtuigen dat een bedrijf kan hebben -STR_CONFIG_SETTING_MAX_SHIPS :Maximum aantal schepen per bedrijf: {STRING} -STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maximum aantal schepen dat een bedrijf kan hebben +STR_CONFIG_SETTING_MAX_AIRCRAFT :Maximumaantal vliegtuigen per bedrijf: {STRING} +STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :Maximumaantal vliegtuigen dat een bedrijf kan hebben +STR_CONFIG_SETTING_MAX_SHIPS :Maximumaantal schepen per bedrijf: {STRING} +STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Maximumaantal schepen dat een bedrijf kan hebben STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Treinen voor de computer uitschakelen: {STRING} STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Het inschakelen van deze instelling maakt het bouwen van treinen onmogelijk voor een computerspeler @@ -1472,22 +1472,22 @@ STR_CONFIG_SETTING_AI_PROFILE_HARD :Moeilijk STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Laat computerspelers toe in netwerkspel: {STRING} STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Sta door computer gegenereerde speler toe deel te nemen in multiplayerspellen STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes voordat scripts worden gestopt: {STRING} -STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maximum aantal berekeningsstappen die een script kan maken in een beurt +STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maximumaantal berekeningsstappen die een script kan maken in een beurt -STR_CONFIG_SETTING_SERVINT_ISPERCENT :Interval tussen onderhoud is een percentage: {STRING} +STR_CONFIG_SETTING_SERVINT_ISPERCENT :Onderhoudstermijnen in procenten: {STRING} STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Kies of onderhoud van de voertuigen wordt geactiveerd door verstreken tijd sinds het laatste onderhoud of door het zakken van de betrouwbaarheid met een bepaald percentage van de maximale betrouwbaarheid -STR_CONFIG_SETTING_SERVINT_TRAINS :Standaard onderhoudsinterval voor treinen: {STRING} -STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Stel de standaard service-interval voor nieuwe railvoertuigen, als er geen expliciete service-interval is ingesteld voor het voertuig +STR_CONFIG_SETTING_SERVINT_TRAINS :Standaardonderhoudstermijn voor treinen: {STRING} +STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Standaardonderhoudstermijn instellen voor nieuwe treinen als er geen expliciete onderhoudstermijn is ingesteld voor het voertuig STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}dag{P 0 "" en}/% STR_CONFIG_SETTING_SERVINT_DISABLED :Uitgeschakeld -STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Standaard onderhoudsinterval voor wegvoertuigen: {STRING} -STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Stel de standaard service-interval voor nieuwe wegvoertuigen, als er geen expliciete service-interval is ingesteld voor het voertuig -STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standaard onderhoudsinterval voor vliegtuigen: {STRING} -STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Stel de standaard service-interval voor nieuwe vliegtuigen, als er geen expliciete service-interval is ingesteld voor het voertuig -STR_CONFIG_SETTING_SERVINT_SHIPS :Standaard onderhoudsinterval voor schepen: {STRING} -STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Stel de standaard service-interval voor nieuwe schepen, als er geen expliciete service-interval is ingesteld voor het voertuig -STR_CONFIG_SETTING_NOSERVICE :Schakel onderhoud uit wanneer defecten uit staan: {STRING} -STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Als deze optie is ingeschakeld zullen voertuigen niet onderhouden worden als niet kapot kunnen gaan. +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Standaardonderhoudstermijn voor wegvoertuigen: {STRING} +STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Standaardonderhoudstermijn voor nieuwe wegvoertuigen als er geen expliciete onderhoudstermijn is ingesteld voor het voertuig +STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Standaardonderhoudstermijn voor vliegtuigen: {STRING} +STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Standaardonderhoudsterrmijn voor nieuwe vliegtuigen als er geen expliciete onderhoudstermijn is ingesteld voor het voertuig +STR_CONFIG_SETTING_SERVINT_SHIPS :Standaardonderhoudstermijn voor schepen: {STRING} +STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Standaardonderhoudstermijn voor nieuwe schepen als er geen expliciete onderhoudstermijn is ingesteld voor het voertuig +STR_CONFIG_SETTING_NOSERVICE :Onderhoud uitschakelen wanneer defecten uit staan: {STRING} +STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Als deze optie is ingeschakeld worden voertuigen niet onderhouden als ze niet kapot kunnen gaan. STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Schakel snelheidslimieten voor wagons aan: {STRING} STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Wanneer ingeschakeld, ook gebruik maken van snelheidsbeperkingen van wagons voor het bepalen van de maximale snelheid van een trein STR_CONFIG_SETTING_DISABLE_ELRAILS :Schakel elektrische sporen uit: {STRING} @@ -1545,7 +1545,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Selecteer het g STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Plaats automatisch armseinen voor: {STRING} STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Stel het jaar waarin elektrische seinen zal worden gebruikt voor sporen. Voor dit jaar zal niet-elektrische seinen worden gebruikt (die exact dezelfde functie hebben, maar verschillend uiterlijk) STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Activeer de seininterface: {STRING} -STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Toon een venster waar je de soorten seinen kunt kiezen om te bouwen in plaats van alleen vensterloze seintyperotatie met Ctrl+klikken op gebouwde seinen +STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Een venster weergeven waar je de soorten seinen kunt kiezen om te bouwen in plaats van alleen bladeren door seintypes met Ctrl+klikken op gebouwde seinen STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Seintype dat standaard moet worden gebouwd: {STRING} STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Standaard te gebruiken sein. STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :Normale seinen @@ -1565,7 +1565,7 @@ STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :2x2 raster STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :3x3 raster STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Willekeurig STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Steden mogen wegen bouwen: {STRING} -STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Sta steden toe om wegen te bouwen ten behoeve van groei. Schakel deze optie uit om gemeentebesturen ervan te weerhouden zelf wegen te bouwen. +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Steden toestaan om wegen te bouwen ten behoeve van groei. Schakel deze optie uit als je niet wilt dat gemeenten zelf wegen bouwen. STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Steden mogen gelijkvloerse kruisingen bouwen: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Door deze optie in te schakelen, kunnen steden gelijkvloerse kruisingen bouwen. STR_CONFIG_SETTING_NOISE_LEVEL :Geluidsniveaucontrole door steden voor vliegvelden toestaan: {STRING} @@ -1590,7 +1590,7 @@ STR_CONFIG_SETTING_SNAP_RADIUS :Windowssnap rad STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Afstand tussen vensters voordat het venster wordt verplaatst wordt automatisch uitgelijnd naar de nabijgelegen vensters STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel{P 0 "" s} STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Uitgeschakeld -STR_CONFIG_SETTING_SOFT_LIMIT :Maximum aantal (niet-sticky) vensters: {STRING} +STR_CONFIG_SETTING_SOFT_LIMIT :Maximumaantal (niet-blijvende) vensters: {STRING} STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Aantal niet-klevende open vensters voor oude vensters automatisch worden gesloten om ruimte voor nieuwe vensters te maken STR_CONFIG_SETTING_SOFT_LIMIT_VALUE :{COMMA} STR_CONFIG_SETTING_SOFT_LIMIT_DISABLED :uitgeschakeld @@ -1611,7 +1611,7 @@ STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Langzaam STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normaal STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Snel STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Heel snel -STR_CONFIG_SETTING_LARGER_TOWNS :Verhouding van gemeenten die steden zullen worden: {STRING} +STR_CONFIG_SETTING_LARGER_TOWNS :Verhouding van gemeenten die uitgroeien tot steden: {STRING} STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Aantal steden die een stad worden, dus een stad die groter begint en sneller groeit STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 op {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Geen @@ -1643,25 +1643,25 @@ STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Verzadiging van STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Vaak zijn er meerdere routes mogelijk tussen twee stations. Cargodist zal de kortste route eerst verzadigen, gebruik dan de tweede kortste route tot die verzadigd is en ga zo maar door. Verzadiging wordt bepaald door een schatting van de capaciteit en het geplande gebruik. Zodra alle routes verzadigd zijn, maar er is meer vraag, zal alle wegen overbelast worden, die met hoge capaciteit eerst. In veel gevallen zat het algoritme niet nauwkeurig de capaciteit inschatten, helaas. Met deze instelling kunt u aangeven tot welk percentage een korter pad moet worden verzadigd eer de eerst volgende langere route wordt gekozen. Zet deze op minder dan 100% om overvolle stations in geval van overschat capaciteit te voorkomen. STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Snelheidseenheden: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Wanneer een snelheid wordt weergegeven in de gebruikersinterface, dan moet het worden getoond in de geselecteerde eenheden +STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Wanneer een snelheid wordt weergegeven in het gebruikersscherm, gebruik dan de geselecteerde eenheden STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperiaal (mph) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrisch (km/h) STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Voertuigkrachteenheden: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Als het verbruik van een voertuig wordt weergegeven in de gebruikersinterface, dan moet het worden getoond in de geselecteerde eenheden +STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Als het verbruik van een voertuig wordt weergegeven in het gebruikersscherm, gebruik dan de geselecteerde eenheden STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperiaal (hp) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrisch (hp) STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Gewichtseenheden: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Wanneer er gewichten worden weergegeven in de gebruikersinterface, dan moeten ze worden getoond in de geselecteerde eenheden +STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Wanneer gewichten worden weergegeven in het gebruikersscherm, gebruik dan de geselecteerde eenheden STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Imperiaal (short t/ton) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrisch (t/ton) STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Volume-eenheden: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Wanneer volumes worden getoond in de gebruikersinterface, dan moeten ze worden getoond in de geselecteerde eenheden +STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Wanneer volumes worden weergeven in het gebruikersscherm, gebruik dan de geselecteerde eenheden STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Imperiaal (gal) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrisch (l) STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³) @@ -1673,7 +1673,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrisch (kgf) STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Hoogte-eenheden: {STRING} -STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Wanneer hoogtes worden weergegeven in de gebruikersinterface, moet het worden getoond in de geselecteerde eenheden +STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Wanneer hoogtes worden weergegeven in het gebruikersscherm, gebruik dan de geselecteerde eenheden STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Imperiaal (ft) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrisch (m) STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m) @@ -1713,7 +1713,7 @@ STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Routezoeker voo STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Routezoeker voor schepen: {STRING} STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Routezoeker voor schepen STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Automatisch omdraaien bij seinen: {STRING} -STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Staat toe dat treinen omdraaien bij een sein als ze hier lang hebben staan wachten. +STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Treinen mogen keren bij een sein als ze hier lang staan wachten STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Verander waarde @@ -1752,7 +1752,7 @@ STR_INTRO_HIGHSCORE :{BLACK}Scoretab STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Instellingen STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRF-instellingen STR_INTRO_ONLINE_CONTENT :{BLACK}Online inhoud zoeken -STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI/Spel script Instellingen +STR_INTRO_SCRIPT_SETTINGS :{BLACK}AI-/spelscriptinstellingen STR_INTRO_QUIT :{BLACK}Afsluiten STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Start een nieuw spel. Ctrl+klik slaat de kaartconfiguratie over @@ -1768,7 +1768,7 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Kies sub STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Kies speelgoedlandschap STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}Spelopties weergeven -STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Toon scoretabel +STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Scoretabel weergeven STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Scherminstellingen STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}NewGRF-instellingen weergeven STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Zoeken naar nieuwe en aangepaste inhoud om te downloaden @@ -1810,8 +1810,8 @@ STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spelen STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magische bulldozer (industrieën en andere onverplaatsbare objecten verwijderen): {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunnels mogen elkaar kruisen: {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Straalvliegtuigen storten niet (vaak) neer op kleine vliegvelden: {ORANGE} {STRING} -STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Wijzig de maximum kaarthoogte: {ORANGE}{NUM} -STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Wijzig de maximum hoogte van bergen op de kaart +STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Wijzig de maximale kaarthoogte: {ORANGE}{NUM} +STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Wijzig de maximale hoogte van bergen op de kaart STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Gematigd landschap STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Subarctisch landschap STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Subtropisch landschap @@ -1830,7 +1830,7 @@ STR_LIVERY_SHIP_TOOLTIP :{BLACK}Kleurens STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}Kleurenschema's voor vliegtuigen weergeven STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}Kies de hoofdkleur voor het geselecteerde schema. Ctrl+klik zal deze kleur instellen voor elk schema STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Kies de tweede kleur voor het geselecteerde schema. Ctrl+klik om deze kleur in alle schema's te gebruiken -STR_LIVERY_PANEL_TOOLTIP :{BLACK}Kies een kleurenschema om te wijzigen, of meerdere schema's met Ctrl+klik. Vink de keuzevakjes aan/uit om het gebruik van het schema aan/uit te zetten +STR_LIVERY_PANEL_TOOLTIP :{BLACK}Kies een kleurenschema om te wijzigen of meerdere schema's met Ctrl+klik. Vink de keuzevakjes aan-uit om het schema aan-uit te zetten STR_LIVERY_DEFAULT :Standaard kleurenschema STR_LIVERY_STEAM :Stoomlocomotief @@ -1981,13 +1981,13 @@ STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Bescherm STR_NETWORK_START_SERVER_UNADVERTISED :Nee STR_NETWORK_START_SERVER_ADVERTISED :Ja STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} speler{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximum aantal spelers: +STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximumaantal spelers: STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Kies het maximaal aantal toegestane spelers. Niet alle posities hoeven gebruikt te worden STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} bedr{P ijf ijven} -STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maximum aantal bedrijven: +STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Maximumaantal bedrijven: STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Beperk de server tot een bepaald aantal bedrijven STR_NETWORK_START_SERVER_SPECTATORS_SELECT :{BLACK}{NUM} toeschouwer{P "" s} -STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maximum aantal toeschouwers: +STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS :{BLACK}Maximumaantal toeschouwers: STR_NETWORK_START_SERVER_NUMBER_OF_SPECTATORS_TOOLTIP :{BLACK}Beperk de server tot een bepaald aantal toeschouwers STR_NETWORK_START_SERVER_LANGUAGE_SPOKEN :{BLACK}Gesproken taal: STR_NETWORK_START_SERVER_LANGUAGE_TOOLTIP :{BLACK}Andere spelers zullen weten welke taal er wordt gesproken op de server @@ -2279,15 +2279,15 @@ STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Nee, Ope # Transparency settings window STR_TRANSPARENCY_CAPTION :{WHITE}Doorzichtigheidsopties -STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Schakel transparantie voor stationsnamen aan/uit. Ctrl+klik om vast te zetten -STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Schakel transparantie voor bomen aan/uit. Ctrl+klik om vast te zetten -STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Schakel transparantie voor huizen aan/uit. Ctrl+klik om vast te zetten -STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Schakel transparantie voor industrieën aan/uit. Ctrl+klik om vast te zetten -STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Schakel transparantie voor gebouwen zoals stations, depots en controleposten aan/uit. Ctrl+klik om vast te zetten -STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Schakel transparantie voor bruggen aan/uit. Ctrl+klik om vast te zetten -STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Schakel transparantie voor gebouwen zoals vuurtorens en antennes aan/uit. Ctrl+klik om vast te zetten -STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Schakel transparantie voor bovenleiding aan/uit. Ctrl+klik voor onthouden -STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Schakel transparantie voor laadindicatoren aan/uit. Ctrl+klik om vast te zetten +STR_TRANSPARENT_SIGNS_TOOLTIP :{BLACK}Transparantie voor stationsnamen aan-uit. Ctrl+klik om vast te zetten. +STR_TRANSPARENT_TREES_TOOLTIP :{BLACK}Transparantie voor bomen aan-uit. Ctrl+klik om vast te zetten. +STR_TRANSPARENT_HOUSES_TOOLTIP :{BLACK}Transparantie voor huizen aan-uit. Ctrl+klik om vast te zetten. +STR_TRANSPARENT_INDUSTRIES_TOOLTIP :{BLACK}Transparantie voor industrieën aan-uit. Ctrl+klik om vast te zetten. +STR_TRANSPARENT_BUILDINGS_TOOLTIP :{BLACK}Transparantie aan-uit voor gebouwen zoals stations, remises en routepunten. Ctrl+klik om vast te zetten. +STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Transparantie voor bruggen aan-uit. Ctrl+klik om vast te zetten. +STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Transparantie voor gebouwen zoals vuurtorens en zendmasten aan-uit. Ctrl+klik om vast te zetten. +STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Transparantie voor bovenleiding aan-uit. Ctrl+klik om vast te zetten. +STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Transparantie voor laadpercentages aan-uit. Ctrl+klik om vast te zetten. STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Maak objecten onzichtbaar in plaats van transparant # Linkgraph legend window @@ -2315,8 +2315,8 @@ STR_STATION_BUILD_SUPPLIES_CARGO :{BLACK}Biedt aa STR_JOIN_STATION_CAPTION :{WHITE}Station samenvoegen STR_JOIN_STATION_CREATE_SPLITTED_STATION :{YELLOW}Bouw een losstaand station -STR_JOIN_WAYPOINT_CAPTION :{WHITE}Controlepost samenvoegen -STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Bouw een losstaande controlepost +STR_JOIN_WAYPOINT_CAPTION :{WHITE}Routepunt samenvoegen +STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Los routepunt bouwen # Rail construction toolbar STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Bouw spoorwegen @@ -2326,13 +2326,13 @@ STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :Bouw magneetzwe STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Plaats spoor. Ctrl schakelt tussen bouwen/verwijderen van het spoor. Shift schakelt tussen bouwen/inschatting van de kosten STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}Bouw spoor met de Autorail-methode. Ctrl schakelt tussen bouwen/verwijderen van het spoor. Shift schakelt tussen bouwen/inschatting van de kosten -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Bouw treindepot (om treinen te kopen en te onderhouden). Shift schakelt tussen bouwen/inschatting van de kosten -STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Bouw spoor om naar controlepost. Houd Ctrl ingedrukt om samen te voegen met andere controlepost. Shift schakelt tussen bouwen/inschatting van de kosten +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Remise bouwen (om treinen te kopen en te onderhouden). Shift schakelt tussen bouwen/kosten weergeven. +STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}Spoor ombouwen naar routepunt. Ctrl om samen te voegen met ander routepunt. Shift schakelt tussen bouwen/kosten weergeven. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}Bouw treinstation. Houd Ctrl ingedrukt om samen te voegen met ander station. Shift schakelt tussen bouwen/inschatting van de kosten -STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Plaats seinen. Ctrl wisselt tussen armseinen/lichtseinen{}Slepen plaatst seinen langs een recht stuk spoor. Ctrl bouwt seinen tot de volgende wissel{}Ctrl+klik schakelt het openen van het keuzescherm voor seinen aan/uit. Shift schakelt tussen bouwen/inschatting van de kosten +STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}Seinen bouwen. Ctrl wisselt tussen armseinen/lichtseinen{}Slepen plaatst seinen langs een recht stuk spoor. Ctrl bouwt seinen tot de volgende wissel{}Ctrl+klik schakelt het openen van seinkeuzelijst aan-uit. Shift schakelt tussen bouwen/kosten weergeven. STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}Bouw spoorbrug. Shift schakelt tussen bouwen/inschatting van de kosten STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TUNNEL :{BLACK}Graaf spoortunnel. Shift schakelt tussen bouwen/inschatting van de kosten -STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Kies tussen bouwen en verwijderen van sporen, seinen, controleposten en stations. Houd Ctrl ingedrukt om ook het spoor van controleposten en stations te verwijderen +STR_RAIL_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Schakelt tussen bouwen en verwijderen van sporen, seinen, routepunten en stations. Ctrl verwijdert ook het spoor van routepunten en stations. STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL :{BLACK}Verander spoortype. Shift schakelt tussen bouwen/inschatting van de kosten STR_RAIL_NAME_RAILROAD :Spoorweg @@ -2345,8 +2345,8 @@ STR_BUILD_DEPOT_TRAIN_ORIENTATION_CAPTION :{WHITE}Richting STR_BUILD_DEPOT_TRAIN_ORIENTATION_TOOLTIP :{BLACK}Selecteer richting van remise # Rail waypoint construction window -STR_WAYPOINT_CAPTION :{WHITE}Controlepost -STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Selecteer type controlepost +STR_WAYPOINT_CAPTION :{WHITE}Routepunt +STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Type routepunt selecteren # Rail station construction window STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Stationskeuze @@ -2363,7 +2363,7 @@ STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Selectee STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Selecteer het type station om te bouwen STR_STATION_CLASS_DFLT :Standaardstation -STR_STATION_CLASS_WAYP :Controleposten +STR_STATION_CLASS_WAYP :Routepunten # Signal window STR_BUILD_SIGNAL_CAPTION :{WHITE}Seinselectie @@ -2372,14 +2372,14 @@ STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TOOLTIP :{BLACK}Ingangss STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TOOLTIP :{BLACK}Uitgangssein (armsein){}Gedraagt zich hetzelfde als een standaardsein, maar is nodig om ingangs- en combinatie-voorseinen aan te sturen STR_BUILD_SIGNAL_SEMAPHORE_COMBO_TOOLTIP :{BLACK}Combinatiesein (armsein){}Het combinatiesein gedraagt zich als zowel ingangs- als uitgangssein. Zo kun je grote netwerken van voorseinen maken STR_BUILD_SIGNAL_SEMAPHORE_PBS_TOOLTIP :{BLACK}Routesein (armsein){}Een routesein laat meer dan één trein tegelijk in een seinblok toe als de trein een route kan reserveren naar een veilige stopplaats. Routeseinen kunnen van achteren worden gepasseerd -STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Eenrichtingsrouteseinen (armsein){}Een routesein laat meer dan één trein tegelijk in een seinblok toe als de trein een route kan reserveren naar een veilige stopplaats. Eenrichtingsrouteseinen kunnen niet van achteren worden gepasseerd +STR_BUILD_SIGNAL_SEMAPHORE_PBS_OWAY_TOOLTIP :{BLACK}Eénrichtingsroutesein (armsein){}Een routesein laat meer dan één trein tegelijk in een seinblok toe als de trein een route kan reserveren naar een veilige stopplaats. Eénrichtingsrouteseinen kunnen niet van achteren worden gepasseerd. STR_BUILD_SIGNAL_ELECTRIC_NORM_TOOLTIP :{BLACK}Standaardsein (elektrisch){}Seinen zijn nodig om te voorkomen dat treinen botsen bij netwerken met meer dan één trein STR_BUILD_SIGNAL_ELECTRIC_ENTRY_TOOLTIP :{BLACK}Ingangssein (elektrisch){}Groen als er meer dan één groen uitgangssein is in de volgende sectie. Anders is deze rood STR_BUILD_SIGNAL_ELECTRIC_EXIT_TOOLTIP :{BLACK}Uitgangssein (elektrisch){}Gedraagt zich hetzelfde als een standaardsein, maar is nodig om ingangs- & combinatie-seinen aan te sturen STR_BUILD_SIGNAL_ELECTRIC_COMBO_TOOLTIP :{BLACK}Combinatiesein (elektrisch){}Het combinatiesein gedraagt zich als zowel ingangs- als uitgangssein. Zo kun je grote netwerken van beginseinen maken STR_BUILD_SIGNAL_ELECTRIC_PBS_TOOLTIP :{BLACK}Routeseinen (elektrisch){}Een routesein laat meer dan één trein tegelijk op een seinblok toe als de trein een route kan reserveren naar een veilige stopplaats. Routeseinen kunnen van achteren worden gepasseerd -STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Eenrichtingsrouteseinen (elektrisch){}Een routesein laat meer dan één trein tegelijk op een seinblok toe als de trein een route kan reserveren naar een veilige stopplaats. Eenrichtingsrouteseinen kunnen niet van achteren worden gepasseerd -STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Sein ombouwen{}Als dit geselecteerd is, dan zal door te klikken op een bestaand sein deze worden omgebouwd naar het geselecteerde seintype en variant, Ctrl+klik verandert de bestaande variant (armsein/elektrisch). Shift+klik toont de geschatte ombouwkosten +STR_BUILD_SIGNAL_ELECTRIC_PBS_OWAY_TOOLTIP :{BLACK}Eénrichtingsroutesein (elektrisch){}Een routesein laat meer dan één trein tegelijk op een seinblok toe als de trein een route kan reserveren naar een veilige stopplaats. Eénrichtingsrouteseinen kunnen niet van achteren worden gepasseerd. +STR_BUILD_SIGNAL_CONVERT_TOOLTIP :{BLACK}Sein ombouwen{}Als dit geselecteerd is, dan kun je door klikken een bestaand sein ombouwen naar het geselecteerde seintype en variant, Ctrl+klik verandert de bestaande variant (armsein/elektrisch). Shift+klik geeft de geschatte ombouwkosten. STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_TOOLTIP :{BLACK}Dichtheid van seinen bij slepen STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_DECREASE_TOOLTIP :{BLACK}Dichtheid van seinen bij slepen verkleinen STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Dichtheid van seinen bij slepen vergroten @@ -2390,10 +2390,10 @@ STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Kies typ STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Brugkeuze - klik op de gewenste brug om die te bouwen STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} -STR_BRIDGE_NAME_SUSPENSION_STEEL :Hangend, Staal +STR_BRIDGE_NAME_SUSPENSION_STEEL :Hangend, staal STR_BRIDGE_NAME_GIRDER_STEEL :Ligger, staal -STR_BRIDGE_NAME_CANTILEVER_STEEL :Vrijdragend, Staal -STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Hangend, Beton +STR_BRIDGE_NAME_CANTILEVER_STEEL :Vrijdragend, staal +STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Hangend, beton STR_BRIDGE_NAME_WOODEN :Hout STR_BRIDGE_NAME_CONCRETE :Beton STR_BRIDGE_NAME_TUBULAR_STEEL :Buis, staal @@ -2487,12 +2487,12 @@ STR_STATION_BUILD_NOISE :{BLACK}Geluidso STR_LANDSCAPING_TOOLBAR :{WHITE}Terreinvorming STR_LANDSCAPING_TOOLTIP_LOWER_A_CORNER_OF_LAND :{BLACK}Verlaag een hoek van het land. Slepen verlaagt de eerste geselecteerde hoek en brengt het geselecteerde gebied naar de hoogte van die hoek. Ctrl selecteert het gebied diagonaal. Shift maakt een inschatting van de kosten STR_LANDSCAPING_TOOLTIP_RAISE_A_CORNER_OF_LAND :{BLACK}Verhoog een hoek van het land. Slepen verhoogt de eerste geselecteerde hoek en brengt het geselecteerde gebied naar de hoogte van die hoek. Ctrl selecteert het gebied diagonaal. Shift maakt een inschatting van de kosten -STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Egaliseer land naar de hoogte van de eerst geselecteerde hoek. Ctrl selecteert een diagonaal gebied. Shift+klik wisselt tussen bouwen/tonen verwachte kosten -STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Koop land voor toekomstig gebruik. Shift+klik wisselt tussen bouwen/tonen verwachte kosten +STR_LANDSCAPING_LEVEL_LAND_TOOLTIP :{BLACK}Land egaliseren op hoogte van eerst geselecteerde hoek. Ctrl selecteert een diagonaal gebied. Shift+klik wisselt tussen bouwen/verwachte kosten weergeven. +STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Land kopen voor toekomstig gebruik. Shift+klik wisselt tussen bouwen/verwachte kosten weergeven. # Object construction window STR_OBJECT_BUILD_CAPTION :{WHITE}Keuze van object -STR_OBJECT_BUILD_TOOLTIP :{BLACK}Kies het te bouwen object. Shift+Klik wisselt tussen bouwen/tonen verwachte kosten +STR_OBJECT_BUILD_TOOLTIP :{BLACK}Object selecteren voor bouwen. Shift+Klik wisselt tussen bouwen/verwachte kosten weergeven. STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Kies klasse van het te bouwen object STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Bekijk het object STR_OBJECT_BUILD_SIZE :{BLACK}Grootte: {GOLD}{NUM} x {NUM} tegels @@ -2577,9 +2577,9 @@ STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Industri STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Link naar de kleine kaart STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Weergegeven industrieën ook op de kleine kaart selecteren STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Kies vracht -STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Kies de vracht om te tonen +STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Vracht selecteren voor weergeven STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Kies bedrijf -STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Kies het bedrijf om te tonen +STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Bedrijf selecteren voor weergeven # Land area window STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Landinformatie @@ -2661,7 +2661,7 @@ STR_LAI_STATION_DESCRIPTION_TRUCK_LOADING_AREA :Vrachtwagenlaad STR_LAI_STATION_DESCRIPTION_BUS_STATION :Bushalte STR_LAI_STATION_DESCRIPTION_SHIP_DOCK :Haven STR_LAI_STATION_DESCRIPTION_BUOY :Boei -STR_LAI_STATION_DESCRIPTION_WAYPOINT :Controlepost +STR_LAI_STATION_DESCRIPTION_WAYPOINT :Routepunt STR_LAI_WATER_DESCRIPTION_WATER :Water STR_LAI_WATER_DESCRIPTION_CANAL :Kanaal @@ -2695,7 +2695,7 @@ STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Aquaduct STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Radiomast STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Vuurtoren -STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Bedrijfshoofdkwartier +STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Hoofdkantoor STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terrein in bedrijfseigendom # About OpenTTD window @@ -2708,7 +2708,7 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD STR_FRAMERATE_CAPTION :{WHITE}Frame rate STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x) STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Simulatiesnelheid: {STRING} -STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Aantal gesimuleerde gameticks per seconde. +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Aantal gesimuleerde speltikken per seconde. STR_FRAMERATE_RATE_BLITTER :{BLACK}Grafische framesnelheid: {STRING} STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Aantal videoframes die weergegeven worden per seconde. STR_FRAMERATE_SPEED_FACTOR :{BLACK}Huidige spelsnelheidsfactor: {DECIMAL}x @@ -2727,11 +2727,11 @@ STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COM ############ Leave those lines in this order!! STR_FRAMERATE_GAMELOOP :{BLACK}Spellustotaal: STR_FRAMERATE_GL_ECONOMY :{BLACK} Vrachtafhandeling: -STR_FRAMERATE_GL_TRAINS :{BLACK} Treinticks: -STR_FRAMERATE_GL_ROADVEHS :{BLACK} Wegvoertuigticks: -STR_FRAMERATE_GL_SHIPS :{BLACK} Schipticks: -STR_FRAMERATE_GL_AIRCRAFT :{BLACK} Vliegtuigticks: -STR_FRAMERATE_GL_LANDSCAPE :{BLACK} Wereldticks: +STR_FRAMERATE_GL_TRAINS :{BLACK} Treintikken: +STR_FRAMERATE_GL_ROADVEHS :{BLACK} Wegvoertuigtikken: +STR_FRAMERATE_GL_SHIPS :{BLACK} Scheepstikken: +STR_FRAMERATE_GL_AIRCRAFT :{BLACK} Vliegtuigtikken: +STR_FRAMERATE_GL_LANDSCAPE :{BLACK} Wereldtikken: STR_FRAMERATE_GL_LINKGRAPH :{BLACK} Vertraging koppelinggrafiek: STR_FRAMERATE_DRAWING :{WHITE}Grafische weergave: STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Wereldkijkvensters: @@ -2741,11 +2741,11 @@ STR_FRAMERATE_SOUND :{BLACK}Geluid m ############ Leave those lines in this order!! STR_FRAMETIME_CAPTION_GAMELOOP :Gameloop STR_FRAMETIME_CAPTION_GL_ECONOMY :Cargoafhandeling -STR_FRAMETIME_CAPTION_GL_TRAINS :Treinticks -STR_FRAMETIME_CAPTION_GL_ROADVEHS :Wegvoertuigticks -STR_FRAMETIME_CAPTION_GL_SHIPS :Schipticks -STR_FRAMETIME_CAPTION_GL_AIRCRAFT :Vliegtuigticks -STR_FRAMETIME_CAPTION_GL_LANDSCAPE :Wereldticks +STR_FRAMETIME_CAPTION_GL_TRAINS :Treintikken +STR_FRAMETIME_CAPTION_GL_ROADVEHS :Wegvoertuigtikken +STR_FRAMETIME_CAPTION_GL_SHIPS :Scheepstikken +STR_FRAMETIME_CAPTION_GL_AIRCRAFT :Vliegtuigtikken +STR_FRAMETIME_CAPTION_GL_LANDSCAPE :Wereldtikken STR_FRAMETIME_CAPTION_GL_LINKGRAPH :Link grafiekvertraging STR_FRAMETIME_CAPTION_DRAWING :Graphics weergeven STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Wereldkijkvenster weergeven @@ -2777,6 +2777,8 @@ STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Geen inf STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_FILTER_TITLE :{BLACK}Filtertekenreeks: +STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Bestand overschrijven +STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Weet je zeker dat je het bestaande bestand wilt overschrijven? STR_SAVELOAD_OSKTITLE :{BLACK}Voer een naam in voor het spel dat moet worden opgeslagen @@ -2788,9 +2790,9 @@ STR_MAPGEN_BY :{BLACK}* STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Aantal steden: STR_MAPGEN_DATE :{BLACK}Datum: STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Aantal industrieën: -STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maximum kaarthoogte -STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Verhoog de maximum hoogte van bergen op de kaart met één -STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Verklein de maximum hoogte van bergen op de kaart met één +STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maximale kaarthoogte +STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Verhoog de maximale hoogte van bergen op de kaart met één +STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Verklein de maximale hoogte van bergen op de kaart met één STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Hoogte van sneeuwgrens: STR_MAPGEN_SNOW_LINE_UP :{BLACK}Verhoog de sneeuwgrens met één STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Verlaag de sneeuwgrens met één @@ -2820,7 +2822,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Naam van STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Grootte: STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM} -STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Wijzig maximum kaarthoogte +STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Maximale kaarthoogte wijzigen STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Verander hoogte van sneeuwgrens STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Verander startjaar @@ -3046,7 +3048,7 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Geef een STR_TOWN_DIRECTORY_CAPTION :{WHITE}Steden STR_TOWN_DIRECTORY_NONE :{ORANGE} Geen STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA}) -STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Groeistad){BLACK} ({COMMA}) +STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (groeistad){BLACK} ({COMMA}) STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Plaatsnamen - klik op naam om het scherm te centreren op de stad. Ctrl+klik opent een nieuw kijkvenster op de locatie van de stad STR_TOWN_POPULATION :{BLACK}Wereldbevolking: {COMMA} @@ -3082,7 +3084,7 @@ STR_LOCAL_AUTHORITY_CAPTION :{WHITE} Gemeent STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Reputatie van transportbedrijven: STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING} STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Mogelijkheden: -STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Lijst met dingen die mogelijk zijn in deze gemeente - klik op een item voor meer details +STR_LOCAL_AUTHORITY_ACTIONS_TOOLTIP :{BLACK}Lijst met dingen die mogelijk zijn in deze gemeente - klik op een onderdeel voor meer details STR_LOCAL_AUTHORITY_DO_IT_BUTTON :{BLACK}Doe het STR_LOCAL_AUTHORITY_DO_IT_TOOLTIP :{BLACK}Voer de actie uit die in de bovenstaande lijst is geselecteerd @@ -3093,7 +3095,7 @@ STR_LOCAL_AUTHORITY_ACTION_ROAD_RECONSTRUCTION :Betaal wegrepar STR_LOCAL_AUTHORITY_ACTION_STATUE_OF_COMPANY :Bouw standbeeld van directeur STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Financier nieuwe gebouwen STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Koop exclusieve transportrechten -STR_LOCAL_AUTHORITY_ACTION_BRIBE :Koop de gemeenteraad om +STR_LOCAL_AUTHORITY_ACTION_BRIBE :Gemeentebestuur omkopen STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Begin een kleine reclamecampagne, om meer passagiers en vracht naar jouw transportdiensten te trekken.{}Kosten: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Begin een middelgrote advertentiecampagne, om meer passagiers en vracht naar jouw transportdiensten te trekken.{}Kosten: {CURRENCY_LONG} @@ -3101,7 +3103,7 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Begin e STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Financier een herstelling van het wegennetwerk. Veroorzaakt tot 6 maanden lang een aanzienlijke verstoring van het wegverkeer.{}Kosten: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Bouw een standbeeld ter ere van jouw bedrijf.{}Kosten: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Financier de bouw van nieuwe commerciële gebouwen in de stad.{}Kosten: {CURRENCY_LONG} -STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Koop 1 jaar exclusieve transportrechten in deze plaats. De gemeenteraad staat passagiers en vracht alleen toe om jouw stations te gebruiken.{}Kosten: {CURRENCY_LONG} +STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}1 jaar exclusieve transportrechten kopen in deze plaats. Het gemeentebestuur staat alleen passagiers en vracht toe bij jouw stations.{}Kosten: {CURRENCY_LONG} STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Koop het plaatselijk gezag om om je reputatie te verhogen met het risico op een strenge sanctie wanneer je gepakt wordt.{}Kosten: {CURRENCY_LONG} # Goal window @@ -3114,7 +3116,7 @@ STR_GOALS_SPECTATOR_NONE :{ORANGE}- Niet STR_GOALS_PROGRESS :{ORANGE}{STRING} STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING} STR_GOALS_COMPANY_TITLE :{BLACK}Bedrijfsdoelen: -STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik op doel om venster te centreren op industrie/stad/tegel. Ctrl+Klik opent een nieuw venster op industrie/stad/tegel locatie +STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik op doel centreert venster op industrie/stad/tegel. Ctrl+Klik opent een nieuw venster op de locatie van de industrie/stad/tegel. # Goal question window STR_GOAL_QUESTION_CAPTION_QUESTION :Vraag @@ -3153,8 +3155,8 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik op de dienst om het dorp/industrie te centreren. Ctrl+klik opent een nieuw venster op de locatie van het dorp/industrie # Story book window -STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Verhaallijn -STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Algemene verhaallijn +STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} - verhaal +STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Algemeen verhaal STR_STORY_BOOK_TITLE :{YELLOW}{STRING} STR_STORY_BOOK_GENERIC_PAGE_ITEM :Pagina {NUM} STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Spring naar een bepaalde pagina door deze te selecteren in deze keuzelijst. @@ -3166,7 +3168,7 @@ STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Ongeldige # Station list window STR_STATION_LIST_TOOLTIP :{BLACK}Stationsnamen - klik op naam om het scherm te centreren op het station. Ctrl+klik opent een nieuw venster op de locatie van het station -STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Houd Ctrl ingedrukt om meer items te kiezen +STR_STATION_LIST_USE_CTRL_TO_SELECT_MORE :{BLACK}Houd Ctrl ingedrukt om meer onderdelen te kiezen STR_STATION_LIST_CAPTION :{WHITE}{COMPANY} - {COMMA} Station{P "" s} STR_STATION_LIST_STATION :{YELLOW}{STATION} {STATION_FEATURES} STR_STATION_LIST_WAYPOINT :{YELLOW}{WAYPOINT} @@ -3242,12 +3244,12 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Voorkom # Waypoint/buoy view window STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT} -STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Centreer scherm op de locatie van de controlepost. Ctrl+klik opent een nieuw venster op de locatie van de controlepost -STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Verander naam controlepost +STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Scherm centreren op routepunt. Ctrl+klik opent nieuw venster op locatie van routepunt. +STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Naam routepunt aanpassen STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Hoofdscherm centreren op locatie van boei. Ctrl+klik opent een nieuw venster op de locatie van de boei. STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Naam van boei aanpassen -STR_EDIT_WAYPOINT_NAME :{WHITE}Naam controlepost aanpassen +STR_EDIT_WAYPOINT_NAME :{WHITE}Naam routepunt aanpassen # Finances window STR_FINANCES_CAPTION :{WHITE}{COMPANY} Financiën {BLACK}{COMPANY_NUM} @@ -3271,7 +3273,7 @@ STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURREN STR_FINANCES_TOTAL_CAPTION :{WHITE}Totaal: STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Banksaldo STR_FINANCES_LOAN_TITLE :{WHITE}Lening -STR_FINANCES_MAX_LOAN :{WHITE}Maximum lening: {BLACK}{CURRENCY_LONG} +STR_FINANCES_MAX_LOAN :{WHITE}Maximale lening: {BLACK}{CURRENCY_LONG} STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG} STR_FINANCES_BORROW_BUTTON :{BLACK}Leen {CURRENCY_LONG} STR_FINANCES_BORROW_TOOLTIP :{BLACK}Vergroot lening. Ctrl+klik om zoveel als mogelijk te lenen @@ -3301,12 +3303,12 @@ STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} vliegveld{P "" en} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Geen -STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Bouw bedrijfshoofdkwartier -STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Bouw bedrijfshoofdkwartier -STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Bekijk bedrijfshoofdkwartier +STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Hoofdkantoor bouwen +STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Hoofdkantoor bouwen +STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Hoofdkantoor bekijken STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Hoofdkantoor weergeven -STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Verplaats bedrijfshoofdkwartier -STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Herbouw bedrijfshoofdkwartier ergens anders voor 1% van de bedrijfswaarde. Shift+klik toont verwachte kosten zonder hoofdkwartier te verplaatsen +STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Hoofdkantoor verplaatsen +STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Hoofdkantoor verplaatsen voor 1% van de bedrijfswaarde. Shift+klik geeft de verwachte kosten zonder hoofdkantoor te verplaatsen. STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Details STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Bekijken gedetailleerde aantallen infrastructuur STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Geef geld @@ -3385,7 +3387,7 @@ STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}Vliegtui STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}Winst dit jaar: {CURRENCY_LONG} (vorig jaar: {CURRENCY_LONG}) -STR_VEHICLE_LIST_AVAILABLE_TRAINS :Beschikbare railvoertuigen +STR_VEHICLE_LIST_AVAILABLE_TRAINS :Beschikbare spoorvoertuigen STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :Beschikbare wegvoertuigen STR_VEHICLE_LIST_AVAILABLE_SHIPS :Beschikbare schepen STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :Beschikbare vliegtuigen @@ -3471,24 +3473,24 @@ STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. tre STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Bereik: {GOLD}{COMMA} tegels STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Vliegtuig type: {GOLD}{STRING} -STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Spoorvoertuigkeuzelijst. Klik op een spoorvoertuig voor informatie. Ctrl+klik voor het aan/uitzetten van het verbergen van het voertuigtype -STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Wegvoertuigkeuzelijst. Klik op een wegvoertuig voor informatie. Ctrl+klik om het verbergen van het voertuigtype aan/uit te zetten. -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Schipskeuzelijst. Klik op een schip voor informatie. Ctrl+klik voor het aan/uitzetten voor het verbergen van het schipstype -STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Vliegtuigkeuzelijst. Klik op een vliegtuig voor informatie. Ctrl+klik voor om het verbergen van het vliegtuigtype aan te zetten +STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Spoorvoertuigkeuzelijst. Klik op een spoorvoertuig voor informatie. Ctrl+klik voor spoorvoertuigtype weergeven-verbergen. +STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Wegvoertuigkeuzelijst. Klik op wegvoertuig voor informatie. Ctrl+klik voor voertuigtype weergeven-verbergen. +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Scheepskeuzelijst. Klik op een schip voor informatie. Ctrl+klik voor scheepstype weergeven-verbergen. +STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Vliegtuigkeuzelijst. Klik op vliegtuig voor informatie. Ctrl+klik voor vliegtuigtype weergeven-verbergen. -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Koop spoorvoertuig +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Spoorvoertuig kopen STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Wegvoertuig kopen -STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Koop schip +STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Schip kopen STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Vliegtuig kopen -STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Koop het geselecteerde spoorvoertuig. Shift+klik toont verwachte kosten zonder te kopen +STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Geselecteerd spoorvoertuig bouwen. Shift+klik geeft de verwachte kosten zonder te kopen. STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Koop het geselecteerde wegvoertuig. Shift+klik geeft de verwachte kosten zonder te kopen. STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Koop het geselecteerde schip. Shift+klik geeft de verwachte kosten zonder te kopen STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Koop het geselecteerde vliegtuig. Shift+klik geeft de verwachte kosten zonder te kopen. -STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Hernoem +STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Hernoemen STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Hernoemen -STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Hernoem +STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}Hernoemen STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}Hernoemen STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}Hernoem type spoorvoertuig @@ -3498,7 +3500,7 @@ STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}Hernoem STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}Verberg STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}Verbergen -STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Verberg +STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}Verbergen STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}Verbergen STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}Weergeven @@ -3506,12 +3508,12 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}Weergeve STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}Weergeven STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}Weergeven -STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Wijzigt het verbergen/tonen van het treintype -STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Wijzigt het verbergen/tonen van het wegvoertuigtype -STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Wijzigt het verbergen/tonen van het schipstype -STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Wijzigt het verbergen/tonen van het vliegtuigtype +STR_BUY_VEHICLE_TRAIN_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Type spoorvoertuig weergeven-verbergen +STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Wegvoertuigtype weergeven-verbergen +STR_BUY_VEHICLE_SHIP_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Scheepstype weergeven-verbergen +STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK}Vliegtuigtype weergeven-verbergen -STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Hernoem type van railvoertuig +STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}Hernoem type spoorvoertuig STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}Hernoem type van wegvoertuig STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}Hernoem type van schip STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Hernoem type van vliegtuig @@ -3520,7 +3522,7 @@ STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}Hernoem STR_DEPOT_CAPTION :{WHITE}{DEPOT} STR_DEPOT_RENAME_TOOLTIP :{BLACK}Hernoem depot -STR_DEPOT_RENAME_DEPOT_CAPTION :Hernoem depot +STR_DEPOT_RENAME_DEPOT_CAPTION :Depot hernoemen STR_DEPOT_NO_ENGINE :{BLACK}- STR_DEPOT_VEHICLE_TOOLTIP :{BLACK}{ENGINE}{STRING} @@ -3532,7 +3534,7 @@ STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Wegvoert STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}Schepen - rechts-klik op schip voor informatie STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Vliegtuig - rechts-klik op vliegtuig voor informatie -STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Sleep railvoertuig hier om het te verkopen +STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}Sleep trein hierheen om te verkopen STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}Sleep wegvoertuig hier om het te verkopen STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}Sleep schip hier om het te verkopen STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}Sleep vliegtuig hier om het te verkopen @@ -3549,12 +3551,12 @@ STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Vervang STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Vervang automatisch alle schepen in het dok STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Vervang automatisch alle vliegtuigen in de hangar -STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Nieuwe railvoertuigen +STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Nieuwe treinen STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Nieuwe wegvoertuigen STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Nieuwe schepen STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Nieuwe vliegtuigen -STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Koop nieuw railvoertuig +STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Koop nieuwe trein STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Koop nieuw wegvoertuig STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Koop nieuw schip STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Koop nieuw vliegtuig @@ -3569,10 +3571,10 @@ STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Hiermee STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Hiermee koop je een kopie van een schip. Klik op deze knop en dan op een schip binnen of buiten het dok. Ctrl+klik deelt de orders. Shift+klik geeft de verwachte kosten zonder te kopen. STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Hiermee koop je een kopie van een vliegtuig. Klik op deze knop en dan op een vliegtuig binnen of buiten de hangar. Ctrl+klik deelt de orders. Shift+klik geeft de verwachte kosten zonder te kopen. -STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centreer het scherm op de locatie van het treindepot. Ctrl+klik opent een nieuw scherm op de locatie van het treindepot +STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Scherm centreren op remise. Ctrl+klik opent een nieuw scherm op locatie van remise. STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centreer het scherm op de locatie van de garage. Ctrl+klik opent een nieuw scherm op de locatie van de garage STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centreer hoofdscherm op de locatie van het dok. Ctrl+klik opent een nieuw scherm op de locatie van het dok -STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centreer het scherm op de locatie van de hangar. Ctrl+klik opent een nieuw venster op de hangar locatie +STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Scherm centreren op hangar. Ctrl+klik opent een nieuw venster op de hangarlocatie. STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Geef een lijst van alle treinen met dit depot in hun orders STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Geef een lijst van alle wegvoertuigen met deze garage in hun orders @@ -3637,7 +3639,7 @@ STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Klik op STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Wissel tussen locomotief- en wagonvervangvensters STR_REPLACE_ENGINES :Motoren STR_REPLACE_WAGONS :Wagons -STR_REPLACE_ALL_RAILTYPE :Alle spoorvoertuigen +STR_REPLACE_ALL_RAILTYPE :Alle treinen STR_REPLACE_HELP_RAILTYPE :{BLACK}Selecteer een spoortype waar je locomotieven voor wilt vervangen STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Dit geeft weer waarmee de links geselecteerde locomotief vervangen wordt @@ -3677,14 +3679,14 @@ STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}Bouw vli STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}Keer trein om STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}Dwing het wegvoertuig te keren. -STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Toon orders van de trein. Ctrl+klik toont het tijdschema van de trein +STR_VEHICLE_VIEW_TRAIN_ORDERS_TOOLTIP :{BLACK}Orders van trein weergeven. Ctrl+klik geeft dienstregeling van trein. STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}Orders van wegvoertuig weergeven. Ctrl+klik geeft de dienstregeling van het voertuig. -STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Toon orders van het schip. Ctrl+klik toont tijdschema van het schip +STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}Orders van schip weergeven. Ctrl+klik geeft dienstregeling van schip. STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}Orders van vliegtuig weergeven. Ctrl+klik geeft de dienstregeling van het vliegtuig. -STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Toon details van trein -STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Toon details van wegvoertuig -STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Toon details van schip +STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}Details van trein weergeven +STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Details van wegvoertuig weergeven +STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Details van schip weergeven STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Details van vliegtuig weergeven STR_VEHICLE_VIEW_TRAIN_STATE_START_STOP_TOOLTIP :{BLACK}Huidige actie van trein - klik hier om de trein te starten/stoppen. Ctrl+klik om naar bestemming te scrollen @@ -3746,10 +3748,10 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Capacite STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Geldoverdracht: {LTBLUE}{CURRENCY_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Onderhoudsinterval: {LTBLUE}{COMMA}{NBSP}dagen{BLACK} Laatste onderhoud: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Onderhoudsinterval: {LTBLUE}{COMMA}%{BLACK} Laatste onderhoud: {LTBLUE}{DATE_LONG} -STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Vergroot onderhoudsinterval met 10. Ctrl+klik verhoogt interval met 5 -STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Verklein onderhoudsinterval met 10. Ctrl+klik verlaagt interval met 5 +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Onderhoudstermijn: {LTBLUE}{COMMA}{NBSP}dagen{BLACK} Laatste onderhoud: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Onderhoudstermijn: {LTBLUE}{COMMA}%{BLACK} Laatste onderhoud: {LTBLUE}{DATE_LONG} +STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Onderhoudstermijn met 10 verlengen. Ctrl+klik verlengt termijn met 5. +STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Onderhoudstermijn met 10 verkorten. Ctrl+klik verkort termijn met 5 STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Wijzig onderhoudsintervaltype STR_VEHICLE_DETAILS_DEFAULT :Standaard @@ -3907,7 +3909,7 @@ STR_ORDER_SERVICE_NON_STOP_AT :Onderhoud non-s STR_ORDER_NEAREST_DEPOT :het dichtstbijzijnde STR_ORDER_NEAREST_HANGAR :de dichtstbijzijnde hangar -STR_ORDER_TRAIN_DEPOT :Treindepot +STR_ORDER_TRAIN_DEPOT :Remise STR_ORDER_ROAD_VEHICLE_DEPOT :Garage STR_ORDER_SHIP_DEPOT :Dok STR_ORDER_GO_TO_NEAREST_DEPOT_FORMAT :{STRING} {STRING} {STRING} @@ -3974,20 +3976,20 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Dienstre STR_TIMETABLE_NO_TRAVEL :Niet rijden STR_TIMETABLE_NOT_TIMETABLEABLE :Rijd (automatisch; volgens dienstregeling bij volgende handmatige bestemming) STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :Reis (geen dienstregeling) -STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Reis met maximaal {2:VELOCITY} (geen tijdschema) +STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :Reis met maximaal {2:VELOCITY} (geen dienstregeling) STR_TIMETABLE_TRAVEL_FOR :Reis naar {STRING} STR_TIMETABLE_TRAVEL_FOR_SPEED :Reis {STRING} met maximaal {VELOCITY} -STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Reis (gedurende {STRING}, geen tijdschema) -STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Reis (gedurende {STRING}, geen tijdschema) maximaal {VELOCITY} -STR_TIMETABLE_STAY_FOR_ESTIMATED :(wacht gedurende {STRING}, geen tijdschema) -STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(reis gedurende {STRING}, geen tijdschema) +STR_TIMETABLE_TRAVEL_FOR_ESTIMATED :Reis (gedurende {STRING}, geen dienstregeling) +STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :Reis (gedurende {STRING}, geen dienstregeling) maximaal {VELOCITY} +STR_TIMETABLE_STAY_FOR_ESTIMATED :(wacht gedurende {STRING}, geen dienstregeling) +STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(reis gedurende {STRING}, geen dienstregeling) STR_TIMETABLE_STAY_FOR :en blijf voor {STRING} STR_TIMETABLE_AND_TRAVEL_FOR :en rijd naar {STRING} STR_TIMETABLE_DAYS :{COMMA}{NBSP}dag{P "" en} STR_TIMETABLE_TICKS :{COMMA}{NBSP}tik{P "" ken} -STR_TIMETABLE_TOTAL_TIME :{BLACK}Dit tijdschema duurt {STRING} om te volbrengen -STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Dit tijdschema duurt minstens {STRING} om te volbrengen (niet alles geselecteerd) +STR_TIMETABLE_TOTAL_TIME :{BLACK}Deze dienstregeling duurt {STRING} +STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Deze dienstregeling duurt minstens {STRING} (niet alles ingeroosterd) STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Dit voertuig is op tijd STR_TIMETABLE_STATUS_LATE :{BLACK}Dit voertuig heeft {STRING} vertraging @@ -3996,7 +3998,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Deze die STR_TIMETABLE_STATUS_START_AT :{BLACK}Deze dienstregeling begint bij {STRING} STR_TIMETABLE_STARTING_DATE :{BLACK}Startdatum -STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Selecteer een datum als uitgangspunt van dit tijdschema. Ctrl + klik geeft het startpunt van dit tijdschema en distribueert alle voertuigen die deze orders delen gelijkmatig op basis van hun relatieve volgorde, indien de order volledig is ingeroosterd +STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Selecteer een datum als startpunt voor deze dienstregeling. Ctrl + klik geeft het startpunt van deze dienstregeling en verdeelt alle voertuigen die deze orders delen gelijkmatig op basis van hun relatieve volgorde, als de order volledig is ingeroosterd. STR_TIMETABLE_CHANGE_TIME :{BLACK}Verander de tijd STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Verander de tijdsduur die de geselecteerde order mag duren @@ -4005,7 +4007,7 @@ STR_TIMETABLE_CLEAR_TIME :{BLACK}Verwijde STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Verwijder de tijdsduur die de geselecteerde order mag duren STR_TIMETABLE_CHANGE_SPEED :{BLACK}Wijzig Maximumsnelheid -STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Wijzig de maximum snelheid voor de gekozen order +STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}Wijzig de maximumsnelheid voor de gekozen order STR_TIMETABLE_CLEAR_SPEED :{BLACK}Verwijder Snelheidslimiet STR_TIMETABLE_CLEAR_SPEED_TOOLTIP :{BLACK}Verwijder de maximumsnelheid van de gekozen order @@ -4034,28 +4036,28 @@ STR_DATE_YEAR_TOOLTIP :{BLACK}Selectee # AI debug window -STR_AI_DEBUG :{WHITE}AI/Spelscriptdebug +STR_AI_DEBUG :{WHITE}Probleemoplossing AI/spelscript STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM}) STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Naam van het script STR_AI_DEBUG_SETTINGS :{BLACK}Instellingen STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Instellingen van script wijzigen STR_AI_DEBUG_RELOAD :{BLACK}Computerspeler opnieuw laden STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Computerspeler verwijderen, script opnieuw laden en computerspeler opnieuw starten -STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Afbreken in/uitschakelen als een AI-logbericht overeenstemt met de afbreektekst +STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Afbreken in-uitschakelen als een AI-logbericht overeenstemt met de afbreektekst STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Afbreken op: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Afbreken aan STR_AI_DEBUG_BREAK_STR_TOOLTIP :{BLACK}Als een AI-logbericht overeenstemt met deze string, dan wordt het spel gepauzeerd STR_AI_DEBUG_MATCH_CASE :{BLACK}Hoofdlettergevoelig -STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Hoofdlettergevoeligheid aan/uizetten bij het vergelijken van AI-logberichten t.o.v. de afbreekstring +STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Hoofdlettergevoeligheid aan-uitzetten bij het vergelijken van AI-logberichten t.o.v. de afbreektekst STR_AI_DEBUG_CONTINUE :{BLACK}Doorgaan STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Het spel vervolgen en de AI voortzetten -STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Toon debuggegevens van deze AI +STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}Probleemgegevens van deze AI weergeven STR_AI_GAME_SCRIPT :{BLACK}Spelscript -STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Controleer de log van het spelscript +STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Controleer het logboek van het spelscript STR_ERROR_AI_NO_AI_FOUND :Geen geschikte AI gevonden.{} Deze AI is een 'dummy' en voert niets uit.{}Verschillende AI's kunnen worden gedownload via het 'Online Content' systeem -STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Eén van de actieve scripts is vastgelopen. Meld dit a.u.b. bij de auteur van dit script met een schermprint van het AI/Spel script Debugscherm -STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI/Spel script debugvenster is alleen beschikbaar voor de server +STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Eén van de actieve scripts is vastgelopen. Meld dit a.u.b. bij de auteur van dit script met een schermafdruk van het AI-/spelscript-probleemvenster. +STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}AI-/spelscript-probleemvenster is alleen beschikbaar voor de server # AI configuration window STR_AI_CONFIG_CAPTION :{WHITE}AI/Spelscriptconfiguratie @@ -4182,7 +4184,7 @@ STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Grote sc STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}De schermafdruk heeft een resolutie van {COMMA} x {COMMA} pixels. De schermafdruk maken kan even duren. Verder gaan? STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Schermafbeelding succesvol opgeslagen als '{STRING}' -STR_ERROR_SCREENSHOT_FAILED :{WHITE}Schermprint mislukt! +STR_ERROR_SCREENSHOT_FAILED :{WHITE}Schermfoto mislukt! # Error message titles STR_ERROR_MESSAGE_CAPTION :{YELLOW}Bericht @@ -4209,9 +4211,9 @@ STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRIN STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}Niet toegestaan wanneer gepauzeerd # Local authority errors -STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}De gemeenteraad van {TOWN} staat dit niet toe -STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}De gemeenteraad van {TOWN} staat bouwen van nog een vliegveld niet toe -STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}{TOWN} lokale autoriteiten weigeren toestemming te geven voor vliegveld wegens zorgen om geluidsoverlast +STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}Gemeentebestuur van {TOWN} staat dit niet toe +STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}Gemeentebestuur van {TOWN} staat bouwen van nog een vliegveld niet toe +STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}Gemeentebestuur van {TOWN} weigert toestemming voor vliegveld wegens zorgen om geluidsoverlast STR_ERROR_BRIBE_FAILED :{WHITE}Je omkopingspoging is ontdekt door een regionale controleur # Levelling errors @@ -4301,13 +4303,13 @@ STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... door STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... weg is eenrichtingsverkeer of geblokkeerd # Station destruction related errors -STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Kan deel van station niet weghalen... +STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Kan deel van station niet verwijderen... STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Treinstation moet eerst verwijderd worden STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}Kan busstation niet verwijderen... STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Kan vrachtwagenlaadstation niet verwijderen... STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Kan passagierstramstation niet verwijderen... STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Kan vrachttramhalte niet verwijderen... -STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Moet wegstop eerst weghalen +STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}Moet halte eerst verwijderen STR_ERROR_THERE_IS_NO_STATION :{WHITE}...er is hier geen station STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Verwijder eerst treinstation @@ -4319,20 +4321,20 @@ STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Verwijde STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Verwijder eerst vliegveld # Waypoint related errors -STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Voegt meer dan één bestaande controlepost samen -STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Te dicht bij een andere controlepost +STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Ligt naast meer dan één bestaand routepunt +STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Te dicht bij een ander routepunt -STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Kan hier geen treincontrolepost bouwen... +STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Kan hier geen routepunt bouwen... STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Kan boei hier niet plaatsen... -STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Kan naam controlepost niet aanpassen... +STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Kan naam routepunt niet aanpassen... -STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Kan hier treincontrolepost niet weghalen... -STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Controlepost moet eerst verwijderd worden +STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Kan hier geen routepunt verwijderen... +STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Routepunt moet eerst verwijderd worden STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... boei in de weg STR_ERROR_BUOY_IS_IN_USE :{WHITE}... boei is in gebruik door een ander bedrijf! # Depot related errors -STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Kan hier geen treindepot bouwen... +STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Kan hier geen remise bouwen... STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}Kan hier geen garage bouwen... STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}Kan hier geen tramdepot bouwen... STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}Kan dok hier niet bouwen... @@ -4352,7 +4354,7 @@ STR_ERROR_INCOMPATIBLE_RAIL_TYPES :spoortypes niet STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}Kan voertuig niet verplaatsen... STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}De achterste locomotief zal altijd het voorste deel volgen -STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Kan geen route naar lokale depot vinden +STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Kan geen route naar lokaal depot vinden STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Kan geen lokaal depot vinden STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Verkeerd depot-type @@ -4366,13 +4368,13 @@ STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(onvoldoende ge STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Onmogelijke spoorcombinatie STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Sein moet eerst worden verwijderd STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Geen bruikbaar spoor -STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Bestaand spoor moet eerst weggehaald worden +STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Moet spoor eerst verwijderen STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Weg is eenrichtingsverkeer of geblokkeerd STR_ERROR_CROSSING_DISALLOWED :{WHITE}Gelijkvloerse kruisingen zijn niet toegestaan voor dit type spoor STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Kan hier geen seinen plaatsen... STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Kan hier geen spoor leggen... -STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Kan hier geen spoor weghalen... -STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Kan hier geen seinen weghalen... +STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Kan hier geen spoor verwijderen... +STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Kan hier geen sein verwijderen... STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Kan sein hier niet ombouwen... STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}...er is hier geen spoorlijn STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}...er zijn geen seinen @@ -4380,11 +4382,11 @@ STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}...er zi STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Kan spoortype hier niet veranderen... # Road construction errors -STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Moet weg eerst weghalen +STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Moet weg eerst verwijderen STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... eenrichtingswegen kunnen geen kruisingen hebben STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Kan hier geen weg bouwen... STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Kan hier geen tramrails bouwen... -STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kan hier geen weg weghalen... +STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kan hier geen weg verwijderen... STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Kan de tramrails hier niet verwijderen... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}...er is geen weg STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}...er is geen tramlijn @@ -4431,7 +4433,7 @@ STR_ERROR_TUNNEL_TOO_LONG :{WHITE}... tunn STR_ERROR_TOO_MANY_OBJECTS :{WHITE}... te veel objecten STR_ERROR_CAN_T_BUILD_OBJECT :{WHITE}Kan object niet bouwen... STR_ERROR_OBJECT_IN_THE_WAY :{WHITE}Object in de weg -STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... bedrijfshoofdkwartier in de weg +STR_ERROR_COMPANY_HEADQUARTERS_IN :{WHITE}... hoofdkantoor in de weg STR_ERROR_CAN_T_PURCHASE_THIS_LAND :{WHITE}Kan dit stuk land niet kopen... STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... het is al van jou! @@ -4470,28 +4472,28 @@ STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Kan wegv STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Kan schip niet naar dok sturen... STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Kan vliegtuig niet naar hangar sturen... -STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Kan railvoertuig niet kopen... +STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}Kan trein niet kopen... STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}Kan wegvoertuig niet kopen... STR_ERROR_CAN_T_BUY_SHIP :{WHITE}Kan schip niet kopen... STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}Kan vliegtuig niet kopen... -STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Kan type van railvoertuig niet hernoemen... +STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}Kan treintype niet hernoemen... STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Kan type van wegvoertuig niet hernoemen... STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}Kan type van schip niet hernoemen... STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}Kan type van vliegtuig niet hernoemen... -STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Kan railvoertuig niet verkopen... +STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}Kan spoorvoertuig niet verkopen... STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Kan wegvoertuig niet verkopen... STR_ERROR_CAN_T_SELL_SHIP :{WHITE}Kan schip niet verkopen... STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}Kan vliegtuig niet verkopen... -STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Railvoertuig is niet beschikbaar +STR_ERROR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Spoorvoertuig is niet beschikbaar STR_ERROR_ROAD_VEHICLE_NOT_AVAILABLE :{WHITE}Wegvoertuig is niet beschikbaar STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Schip is niet beschikbaar STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Vliegtuig is niet beschikbaar STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Te veel voertuigen in het spel -STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Kan onderhoudsinterval niet aanpassen... +STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Kan onderhoudstermijn niet aanpassen... STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... voertuig is vernietigd @@ -4936,21 +4938,21 @@ STR_FORMAT_DATE_SHORT :{STRING} {NUM} STR_FORMAT_DATE_LONG :{STRING} {STRING} {NUM} STR_FORMAT_DATE_ISO :{2:NUM}-{1:STRING}-{0:STRING} -STR_FORMAT_BUOY_NAME :{TOWN} Boei -STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Boei #{COMMA} +STR_FORMAT_BUOY_NAME :Boei {TOWN} +STR_FORMAT_BUOY_NAME_SERIAL :Boei {TOWN} {COMMA} STR_FORMAT_COMPANY_NUM :(Bedrijf {COMMA}) STR_FORMAT_GROUP_NAME :Groep {COMMA} -STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING} -STR_FORMAT_WAYPOINT_NAME :{TOWN} Controlepost -STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} Controlepost #{COMMA} +STR_FORMAT_INDUSTRY_NAME :{1:STRING} {0:TOWN} +STR_FORMAT_WAYPOINT_NAME :Routepunt {TOWN} +STR_FORMAT_WAYPOINT_NAME_SERIAL :Routepunt {TOWN} {COMMA} -STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Treindepot -STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Treindepot #{COMMA} -STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :{TOWN} Garage -STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :{TOWN} Garage #{COMMA} -STR_FORMAT_DEPOT_NAME_SHIP :{TOWN} Dok -STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :{TOWN} Dok #{COMMA} -STR_FORMAT_DEPOT_NAME_AIRCRAFT :{STATION} Hangar +STR_FORMAT_DEPOT_NAME_TRAIN :Remise {TOWN} +STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :Remise {TOWN} {COMMA} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE :Garage {TOWN} +STR_FORMAT_DEPOT_NAME_ROAD_VEHICLE_SERIAL :Garage {TOWN} {COMMA} +STR_FORMAT_DEPOT_NAME_SHIP :Dok {TOWN} +STR_FORMAT_DEPOT_NAME_SHIP_SERIAL :Dok {TOWN} {COMMA} +STR_FORMAT_DEPOT_NAME_AIRCRAFT :Hangar {STATION} STR_UNKNOWN_STATION :onbekend station STR_DEFAULT_SIGN_NAME :Bord diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index a4282f42fd..4afdb943fc 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -1861,7 +1861,7 @@ STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Muuda jo STR_CHEAT_SETUP_PROD :{LTBLUE}Tootmisväärtuste muutmine: {ORANGE}{STRING} # Livery window -STR_LIVERY_CAPTION :{WHITE}Uus värvivalik +STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Värvivalik STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Näita üldiseid värvistikke STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Näita rongide värvistikke diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index 8ef6e0d896..58ff3f69cd 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -132,7 +132,7 @@ STR_QUANTITY_N_A :- STR_ABBREV_NOTHING : STR_ABBREV_PASSENGERS :{TINY_FONT}MA STR_ABBREV_COAL :{TINY_FONT}HL -STR_ABBREV_MAIL :{TINY_FONT}SP +STR_ABBREV_MAIL :{TINY_FONT}PO STR_ABBREV_OIL :{TINY_FONT}ÖL STR_ABBREV_LIVESTOCK :{TINY_FONT}KA STR_ABBREV_GOODS :{TINY_FONT}TA @@ -1816,7 +1816,7 @@ STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Muuta ny STR_CHEAT_SETUP_PROD :{LTBLUE}Salli tuotantomäärien muuttaminen: {ORANGE}{STRING} # Livery window -STR_LIVERY_CAPTION :{WHITE}Uusi väriteema +STR_LIVERY_CAPTION :{WHITE}{COMPANY}: Väriteema STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Näytä yleiset väriteemat STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Näytä junan väriteemat @@ -3832,7 +3832,7 @@ STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Miten ku STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :on yhtä kuin STR_ORDER_CONDITIONAL_COMPARATOR_NOT_EQUALS :ei ole yhtä kuin STR_ORDER_CONDITIONAL_COMPARATOR_LESS_THAN :on pienempi kuin -STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :on suurempi kuin +STR_ORDER_CONDITIONAL_COMPARATOR_LESS_EQUALS :on pienempi tai yhtä kuin STR_ORDER_CONDITIONAL_COMPARATOR_MORE_THAN :on enemmän kuin STR_ORDER_CONDITIONAL_COMPARATOR_MORE_EQUALS :on enemmän tai yhtä kuin STR_ORDER_CONDITIONAL_COMPARATOR_IS_TRUE :on tosi diff --git a/src/lang/german.txt b/src/lang/german.txt index 402f194acf..d4de28ba08 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -190,6 +190,7 @@ STR_COLOUR_ORANGE :Orange STR_COLOUR_BROWN :Braun STR_COLOUR_GREY :Grau STR_COLOUR_WHITE :Weiß +STR_COLOUR_RANDOM :Zufällig STR_COLOUR_DEFAULT :Standard # Units used in OpenTTD @@ -483,6 +484,7 @@ STR_ABOUT_MENU_SCREENSHOT :Screenshot (Sta STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Screenshot in Nahaufnahme STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Screenshot mit normalem Zoom STR_ABOUT_MENU_GIANT_SCREENSHOT :Riesiger Screenshot (Standard: Strg+G) +STR_ABOUT_MENU_SHOW_FRAMERATE :Bildwiederholrate anzeigen STR_ABOUT_MENU_ABOUT_OPENTTD :Über OpenTTD STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite-Ausrichtung STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Hüllquader anzeigen/ausblenden @@ -679,10 +681,12 @@ STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Zufälli STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Zeige Musiktitelauswahl # Playlist window +STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}Musikprogramm - '{STRING}' STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}" STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Track Inhalt STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programm - '{STRING}' STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Bereinigen +STR_PLAYLIST_CHANGE_SET :{BLACK}Set ändern STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Lösche laufendes Programm (nur für Benutzerdefiniert 1 und 2) STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Ein anderes Musik-Set auswählen) STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klicke auf einen Musiktitel, um ihn in das laufende Programm zu übernehmen (nur für Benutzerdefiniert 1 und 2) @@ -822,6 +826,7 @@ STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLAC STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Manager) STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} finanziert die Gründung der Stadt {TOWN}! +STR_NEWS_NEW_TOWN_UNSPONSORED :{BLACK}{BIG_FONT}Eine neue Stadt mit dem Namen {TOWN} wurde errichtet! STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Neue{G r "" s ""} {STRING} {G 0 wird wird wird werden} nahe {TOWN} gebaut! STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}Neue{G r "" s ""} {STRING} {G 0 wird wird wird werden} nahe {TOWN} angepflanzt! @@ -889,9 +894,9 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLAC # Extra view window STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Ansicht {COMMA} -STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}In Zusatzansicht kopieren +STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Zusatzansicht ändern STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Aktuelle Position der Hauptansicht in diese Zusatzansicht kopieren -STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Aus Zusatzansicht einfügen +STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Hauptansicht ändern STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Hauptansicht zur Position dieser Zusatzansicht scrollen # Game options window @@ -921,7 +926,7 @@ STR_GAME_OPTIONS_CURRENCY_NLG :Niederländisch STR_GAME_OPTIONS_CURRENCY_NOK :Norwegische Kronen (NOK) STR_GAME_OPTIONS_CURRENCY_PLN :Polnische Zloty (PLN) STR_GAME_OPTIONS_CURRENCY_RON :Rumänische Lei (RON) -STR_GAME_OPTIONS_CURRENCY_RUR :Russische Rubel (RUR) +STR_GAME_OPTIONS_CURRENCY_RUR :Alte Russische Rubel (RUR) STR_GAME_OPTIONS_CURRENCY_SIT :Slovenische Taler (SIT) STR_GAME_OPTIONS_CURRENCY_SEK :Schwedische Kronen (SEK) STR_GAME_OPTIONS_CURRENCY_TRY :Türkische Lire (TRY) @@ -934,6 +939,8 @@ STR_GAME_OPTIONS_CURRENCY_ZAR :Südafrikanisch STR_GAME_OPTIONS_CURRENCY_CUSTOM :Eigene... STR_GAME_OPTIONS_CURRENCY_GEL :Georgischer Lari (GEL) STR_GAME_OPTIONS_CURRENCY_IRR :Iranischer Rial (IRR) +STR_GAME_OPTIONS_CURRENCY_RUB :Russische Rubel (RUB) +STR_GAME_OPTIONS_CURRENCY_MXN :Mexikanischer Peso (MXN) ############ end of currency region STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Fahrzeuge @@ -1233,7 +1240,7 @@ STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :in der Mitte STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :am Ende STR_CONFIG_SETTING_IMPROVED_BREAKDOWNS :aktiviere verbesserte Pannen: {STRING} STR_CONFIG_SETTING_AUTOSCROLL :Spielfeld scrollen, wenn die Maus am Bildrand anstößt: {STRING} -STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Falls aktiv wird der Kartenausschnit scrollen, wenn die Maus nahe dem Fensterrand ist +STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Falls aktiv, wird der Kartenausschnitt scrollen, wenn die Maus nahe dem Fensterrand ist STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Ausgeschaltet STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Hauptfenster, nur bei Vollbildschirm STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Hauptfenster @@ -1274,6 +1281,7 @@ STR_CONFIG_SETTING_CHUNNEL_HELPTEXT :Wenn aktiviert, STR_CONFIG_SETTING_NO_TRAIN_CRASH_OTHER_COMPANY :Züge verschiedener Firmen stoßen nicht mehr zusammen: {STRING} STR_CONFIG_SETTING_NO_TRAIN_CRASH_OTHER_COMPANY_HELPTEXT :Diese Einstellung ist in erster Linie dafür da um zu verhindern, dass Spielern denen man nicht vertraut bewusst Zusammenstöße mit Zügen anderer Firmen in Multiplayer-Spielen mit Infrastructure Sharing provozieren. +STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR :Firmenfarbe zu Spielbeginn: {STRING} STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Wähle die Firmenfarbe zu Spielbeginn STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Flughäfen veralten nie: {STRING} @@ -1371,6 +1379,12 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Farbe von Landf STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Grün STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Dunkelgrün STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Lila +STR_CONFIG_SETTING_SCROLLMODE :Verhalten beim Verschieben der Zusatzansicht: {STRING} +STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Verhalten beim Verschieben der Karte +STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Bewege Zusatzansicht mit rechter Maustaste, Mausposition fixiert +STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Bewege die Karte mit rechter Maustaste, Mausposition fixiert +STR_CONFIG_SETTING_SCROLLMODE_RMB :Bewege die Karte mit rechter Maustaste +STR_CONFIG_SETTING_SCROLLMODE_LMB :Bewege die Karte mit linker Maustaste STR_CONFIG_SETTING_SMOOTH_SCROLLING :Weicher Bildlauf beim Springen zu einer Position: {STRING} STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Lege fest, auf welche Weise die Hauptansicht an eine bestimmte Position wechselt (z.B. wenn ein Punkt auf der Weltkarte angeklickt wird oder der Standort eines Bahnhofs angezeigt werden soll). Ist diese Option eingeschaltet, schwenkt die Ansicht über die Karte, bis sie am gewünschten Punkt angekommen ist. Ist sie ausgeschaltet, springt die Ansicht sofort an die gewünschte Position STR_CONFIG_SETTING_MEASURE_TOOLTIP :Beim Bauen Tooltip mit Abmessungen anzeigen: {STRING} @@ -1972,7 +1986,7 @@ STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Ändert STR_CHEAT_SETUP_PROD :{LTBLUE}Erlaube manuelles Ändern der Produktionsleistungen: {ORANGE}{STRING} # Livery window -STR_LIVERY_CAPTION :{WHITE}Neues Farbschema +STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Farbschema STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Allgemeines Farbschema anzeigen STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Zugfarbschema anzeigen @@ -3143,20 +3157,51 @@ STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD # Framerate display window STR_FRAMERATE_CAPTION :{WHITE}Bildwiederholrate +STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x) +STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Simulationsrate: {STRING} +STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Anzahl an simulierten Ticks pro Sekunde. +STR_FRAMERATE_RATE_BLITTER :{BLACK}Bildwiederholrate: {STRING} +STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Anzahl an Einzelbildern, die pro Sekunde gerendert werden. +STR_FRAMERATE_SPEED_FACTOR :{BLACK}Aktueller Geschwindigkeitsfaktor des Spiels: {DECIMAL}x +STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Wie schnell das Spiel aktuell läuft, verglichen mit der erwarteten Geschwindigkeit bei normaler Simulationsrate. +STR_FRAMERATE_CURRENT :{WHITE}Momentan +STR_FRAMERATE_AVERAGE :{WHITE}Durchschnitt +STR_FRAMERATE_DATA_POINTS :{BLACK}Daten basierend auf {COMMA} Messungen STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL} ms +STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL} ms +STR_FRAMERATE_MS_BAD :{RED}{DECIMAL} ms STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL} Bilder/s +STR_FRAMERATE_FPS_WARN :{YELLOW}{DECIMAL} Bilder/s STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL} Bilder/s +STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COMMA} ms STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} s ############ Leave those lines in this order!! -STR_FRAMERATE_GL_SHIPS :{BLACK} Ticks (Schiffe): -STR_FRAMERATE_GL_AIRCRAFT :{BLACK} Ticks (Luftfahrzeuge) +STR_FRAMERATE_GAMELOOP :{BLACK}Spielschleifen insgesamt: +STR_FRAMERATE_GL_ECONOMY :{BLACK}Warenumschlag: +STR_FRAMERATE_GL_TRAINS :{BLACK}Ticks (Züge): +STR_FRAMERATE_GL_ROADVEHS :{BLACK}Ticks (Straßenfahrzeuge): +STR_FRAMERATE_GL_SHIPS :{BLACK}Ticks (Schiffe): +STR_FRAMERATE_GL_AIRCRAFT :{BLACK}Ticks (Luftfahrzeuge) +STR_FRAMERATE_GL_LANDSCAPE :{BLACK}Welt-Ticks: +STR_FRAMERATE_GL_LINKGRAPH :{BLACK}Intervall für Neuberechnung des Verteilungsgraphen: STR_FRAMERATE_DRAWING :{BLACK}Grafik-Rendering: +STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK}Kartenansichten: +STR_FRAMERATE_VIDEO :{BLACK}Videoausgabe: +STR_FRAMERATE_SOUND :{BLACK}Sound-Abmischung: ############ End of leave-in-this-order ############ Leave those lines in this order!! -STR_FRAMETIME_CAPTION_GAMELOOP :Spiel-Schleife +STR_FRAMETIME_CAPTION_GAMELOOP :Spielschleife +STR_FRAMETIME_CAPTION_GL_ECONOMY :Warenumschlag STR_FRAMETIME_CAPTION_GL_TRAINS :Ticks (Züge) +STR_FRAMETIME_CAPTION_GL_ROADVEHS :Ticks (Straßenfahrzeuge) +STR_FRAMETIME_CAPTION_GL_SHIPS :Ticks (Schiffe) +STR_FRAMETIME_CAPTION_GL_AIRCRAFT :Ticks (Luftfahrzeuge) +STR_FRAMETIME_CAPTION_GL_LANDSCAPE :Welt-Ticks +STR_FRAMETIME_CAPTION_GL_LINKGRAPH :Intervall für Neuberechnung des Verteilungsgraphen STR_FRAMETIME_CAPTION_DRAWING :Grafik-Rendering -STR_FRAMETIME_CAPTION_SOUND :Sound mixing +STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Karten-Rendering +STR_FRAMETIME_CAPTION_VIDEO :Videoausgabe +STR_FRAMETIME_CAPTION_SOUND :Sound-Abmischung ############ End of leave-in-this-order @@ -3182,6 +3227,9 @@ STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Spielsta STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Keine Informationen verfügbar STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} +STR_SAVELOAD_FILTER_TITLE :{BLACK}Suchtext: +STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Datei überschreiben +STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Existierende Datei wirklich überschreiben? STR_SAVELOAD_OSKTITLE :{BLACK}Namen für den Spielstand eingeben @@ -3300,8 +3348,12 @@ STR_NEWGRF_SETTINGS_VERSION :{BLACK}Version: STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Min. kompatible Version: {SILVER}{NUM} STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}MD5-Summe: {SILVER}{STRING} STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Farbpalette: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_PALETTE_DEFAULT :Standard (D) +STR_NEWGRF_SETTINGS_PALETTE_DEFAULT_32BPP :Standard (D) / 32 bpp STR_NEWGRF_SETTINGS_PALETTE_LEGACY :veraltet (W) +STR_NEWGRF_SETTINGS_PALETTE_LEGACY_32BPP :veraltet (W) / 32 bpp STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parameter: {SILVER}{STRING} +STR_NEWGRF_SETTINGS_PARAMETER_NONE :Keine STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Keine Informationen verfügbar STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}Zugehörige Datei nicht gefunden @@ -3374,7 +3426,7 @@ STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :der NewGRF-Date STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :Zu viele NewGRFs geladen STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :Das Laden von {1:STRING} als statisches NewGRF mit {STRING} könnte Synchronisationsfehler hervorrufen STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :Unerwartetes Sprite (Sprite {3:NUM}) -STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Unbekannte Action 0 - Property {4:HEX} (Sprite {3:NUM}) +STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :Unbekannte Action 0 - Eigenschaft {4:HEX} (Sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_ID :Zugriff auf eine ungültige ID (Sprite {3:NUM}) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} enthält fehlerhafte Grafiken. Diese werden als Fragezeichen (?) dargestellt STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Enthält mehrere Action 8 - Einträge (Sprite {3:NUM}) @@ -3382,6 +3434,8 @@ STR_NEWGRF_ERROR_READ_BOUNDS :Lesezugriff üb STR_NEWGRF_ERROR_GRM_FAILED :Die angeforderte GRF-Ressource ist nicht verfügbar (Sprite {3:NUM}) STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} wurde von {STRING} deaktiviert STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ungültiges oder unbekanntes Format für Spritelayout (Sprite {3:NUM}) +STR_NEWGRF_ERROR_LIST_PROPERTY_TOO_LONG :Zu viele Elemente in Eigenschaftswert-Liste (Sprite {3:NUM}, Eigenschaft {4:HEX}) +STR_NEWGRF_ERROR_INDPROD_CALLBACK :Ungültige Produktions-Rückruffunktion (Sprite {3:NUM}, "{1:STRING}") # NewGRF related 'general' warnings STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Achtung! @@ -3411,7 +3465,7 @@ STR_BROKEN_VEHICLE_LENGTH :{WHITE}Zug '{VE STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' liefert falsche Informationen STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Fracht / Ersetzungs - Informationen für '{1:ENGINE}' weichen von der Einkaufsliste nach dem Kauf ab. Das kann dazu führen, dass das Umrüsten beim autmatisches Ersetzen oder Erneuern nicht korrekt funktioniert -STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' verursachte eine Endlosschleife im 'Production callback' +STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' verursachte eine Endlosschleife in Produktions-Rückruffunktion STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Callback {1:HEX} lieferte des unbekannte und ungülte Resultat {2:HEX} STR_NEWGRF_TOO_MANY_STRINGS :{WHITE}Nicht genügend String-IDs für alle NewGRFs vorhanden. @@ -3420,7 +3474,7 @@ STR_NEWGRF_TOO_MANY_STRINGS_DETAIL :{WHITE}Einige N # 'User removed essential NewGRFs'-placeholders for stuff without specs STR_NEWGRF_INVALID_CARGO : STR_NEWGRF_INVALID_CARGO_ABBREV :?? -STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of +STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} Einheiten STR_NEWGRF_INVALID_ENGINE : STR_NEWGRF_INVALID_INDUSTRYTYPE : @@ -3457,6 +3511,7 @@ STR_TOWN_POPULATION :{BLACK}Weltbev STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN} STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Großstadt) STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Einwohner: {ORANGE}{COMMA}{BLACK} Häuser: {ORANGE}{COMMA} +STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} im letzten Monat: {ORANGE}{COMMA}{BLACK} Max.: {ORANGE}{COMMA} STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Für Stadtwachstum benötigte Fracht: STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} benötigt STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} im Winter benötigt @@ -3863,6 +3918,7 @@ STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Diese I STR_INDUSTRY_VIEW_REQUIRES_N_CARGO :{BLACK}Benötigt: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_N_CARGO :{BLACK}Produziert: {YELLOW}{STRING}{STRING} +STR_INDUSTRY_VIEW_CARGO_LIST_EXTENSION :, {STRING}{STRING} STR_INDUSTRY_VIEW_TRANSPORTED_TOOLTIP :{BLACK}{STRING}{STRING} STR_INDUSTRY_VIEW_TRANSPORTED_TOOLTIP_EXTENSION :{}{BLACK}{CARGO_LONG} ({COMMA}%) @@ -3935,6 +3991,7 @@ STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Gruppen STR_GROUP_CREATE_TOOLTIP :{BLACK}Neue Gruppe erstellen STR_GROUP_DELETE_TOOLTIP :{BLACK}Ausgewählte Gruppe löschen STR_GROUP_RENAME_TOOLTIP :{BLACK}Ausgewählte Gruppe umbenennen +STR_GROUP_LIVERY_TOOLTIP :{BLACK}Farbschema der ausgewählten Gruppe ändern STR_GROUP_COLLAPSE :{BLACK}Einklappen STR_GROUP_EXPAND :{BLACK}Ausklappen STR_GROUP_EXPAND_ALL :{BLACK}Alles ausklappen @@ -3984,6 +4041,7 @@ STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Kapazit STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Angetriebene Waggons: {GOLD}+{POWER}{BLACK} Gewicht: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Umrüstbar auf: {GOLD}{STRING} STR_PURCHASE_INFO_ALL_TYPES :Alle Frachtarten +STR_PURCHASE_INFO_NONE :Keine STR_PURCHASE_INFO_ALL_BUT :Alles außer {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. Zugkraft: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Reichweite: {GOLD}{COMMA} Felder @@ -4418,6 +4476,7 @@ STR_ORDER_CONDITIONAL_AGE :Fahrzeugalter ( STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Wartung erforderlich STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Immer STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Verbleibende Laufzeit (Jahre) +STR_ORDER_CONDITIONAL_MAX_RELIABILITY :Maximale Zuverlässigkeit STR_ORDER_CONDITIONAL_CARGO_WAITING :Wartende Fracht STR_ORDER_CONDITIONAL_ACCEPTANCE_DROPDOWN :Akzeptierte Fracht STR_ORDER_CONDITIONAL_FREE_PLATFORMS :Freie Bahnsteige @@ -4954,6 +5013,7 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... dies STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... Straße verläuft in die falsche Richtung STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... Bus- und Lkw-Haltestellen können nicht um die Kurve gehen STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... Bus- und Lkw-Haltestellen können keine Abzweigung haben +STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}...Einbahnstraße oder blockierter Weg # Station destruction related errors STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Dieser Teil der Station kann nicht entfernt werden... diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 0402710be4..4bca49d9d9 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -190,6 +190,7 @@ STR_COLOUR_BROWN :갈색 STR_COLOUR_GREY :회색 STR_COLOUR_WHITE :흰색 STR_COLOUR_RANDOM :무작위 +STR_COLOUR_DEFAULT :기본 # Units used in OpenTTD STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph @@ -3297,6 +3298,8 @@ STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}사용 STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_FILTER_TITLE :{BLACK}검색할 문자열: +STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}파일 덮어쓰기 +STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}정말로 이미 존재하는 파일에 덮어씌우시겠습니까? STR_SAVELOAD_OSKTITLE :{BLACK}게임을 저장할 파일명을 입력하세요 @@ -4087,6 +4090,7 @@ STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}그룹 - STR_GROUP_CREATE_TOOLTIP :{BLACK}그룹 만들기 STR_GROUP_DELETE_TOOLTIP :{BLACK}선택한 그룹 삭제 STR_GROUP_RENAME_TOOLTIP :{BLACK}선택한 그룹 이름 바꾸기 +STR_GROUP_LIVERY_TOOLTIP :{BLACK}선택한 그룹의 차량 색상을 변경합니다. STR_GROUP_COLLAPSE :{BLACK}접기 STR_GROUP_EXPAND :{BLACK}펼치기 STR_GROUP_EXPAND_ALL :{BLACK}모두 펼치기 diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index 500d22fa46..6bfb42ae4b 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -140,7 +140,7 @@ STR_ABBREV_GOODS :{TINY_FONT}BN STR_ABBREV_GRAIN :{TINY_FONT}CR STR_ABBREV_WOOD :{TINY_FONT}MD STR_ABBREV_IRON_ORE :{TINY_FONT}FR -STR_ABBREV_STEEL :{TINY_FONT}AÇ +STR_ABBREV_STEEL :{TINY_FONT}AC STR_ABBREV_VALUABLES :{TINY_FONT}VL STR_ABBREV_COPPER_ORE :{TINY_FONT}CO STR_ABBREV_MAIZE :{TINY_FONT}ML @@ -263,7 +263,7 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Ao activ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Ao activar este botão, os aviões ocultos também serão exibidos # Query window -STR_BUTTON_DEFAULT :{BLACK}Por Omissão +STR_BUTTON_DEFAULT :{BLACK}Padrão STR_BUTTON_CANCEL :{BLACK}Cancelar STR_BUTTON_OK :{BLACK}Confirmar @@ -479,7 +479,7 @@ STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Captura com res STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Captura com resolução normal STR_ABOUT_MENU_GIANT_SCREENSHOT :Captura de mapa STR_ABOUT_MENU_SHOW_FRAMERATE :Mostrar taxa de fotograma -STR_ABOUT_MENU_ABOUT_OPENTTD :Sobre o OpenTTD... +STR_ABOUT_MENU_ABOUT_OPENTTD :Sobre o 'OpenTTD' STR_ABOUT_MENU_SPRITE_ALIGNER :Alinhador de gráficos STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Alternar as caixas envolventes STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Ligar/Desligar coloração de blocos sujos @@ -606,7 +606,7 @@ STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Director STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Chefe Executivo STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Director Executivo STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Presidente -STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Magnate +STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Magnata # Performance detail window STR_PERFORMANCE_DETAIL :{WHITE}Detalhes de rendimentos @@ -1173,11 +1173,11 @@ STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Escolha quanto STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Altura máxima do mapa: {STRING} STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Define altura máxima permitida para montanhas no mapa STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Pode aumentar a altura máxima do mapa para este valor. Pelo menos uma montanha no mapa é mais alta -STR_CONFIG_SETTING_AUTOSLOPE :Permitir formação de terra sob os edifícios, vias, etc. (auto-declive): {STRING} -STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permitir formação de terras debaixo de edifícios e linhas sem os remover +STR_CONFIG_SETTING_AUTOSLOPE :Permite alteração de terra sob edifícios, vias, etc. (auto-declive): {STRING} +STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permite alteração de terra sob edifícios e vias sem os remover STR_CONFIG_SETTING_CATCHMENT :Dimensionamento mais realista de áreas de abrangência: {STRING} STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Haver diferentes áreas de cobertura para diferentes tipos de estações e aeroportos -STR_CONFIG_SETTING_EXTRADYNAMITE :Permitir remover mais mais estradas, pontes e túneis detidos pela cidade: {STRING} +STR_CONFIG_SETTING_EXTRADYNAMITE :Permite remover mais estradas, pontes e túneis detidos pela cidade: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Facilitar a remoçar de edifícios e infraestruturas detidas pela cidade STR_CONFIG_SETTING_TRAIN_LENGTH :Tamanho máximo de comboios: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Assignar o tamanho máximo dos comboios @@ -1196,7 +1196,7 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Declive de um q STR_CONFIG_SETTING_FORBID_90_DEG :Proibir comboios e barcos fazer curvas de 90º: {STRING} STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Curvas de 90 graus ocorrem quando uma pista horizontal é directamente seguida por outra vertical num quadrado adjacente, fazendo com que o combóio vire 90 graus quando atravessa a fronteira dos quadrados, ao invés dos habituais 45 graus para outras combinações de pistas. Também se aplica ao raio de curvatura dos navios STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Permitir juntar estações não adjacentes: {STRING} -STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Permitir adicionar novas partes a uma estação sem tocar nas partes já existentes. Requer pressionar CTRL+click para adicionar as novas partes +STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Permite adicionar novas partes a uma estação sem tocar nas partes já existentes. Requer pressionar CTRL+click para adicionar as novas partes STR_CONFIG_SETTING_INFLATION :Inflação: {STRING} STR_CONFIG_SETTING_INFLATION_HELPTEXT :Ativar inflação na economia, para que os preços subam ligeiramente mais rápido do que os pagamentos STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Tamanho máximo de ponte: {STRING} @@ -1234,16 +1234,16 @@ STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Desligado STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Visualizador principal, só ecrã cheio STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Visualizador principal STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Todos os visualizadores -STR_CONFIG_SETTING_BRIBE :Permitir o suborno da autoridade local: {STRING} -STR_CONFIG_SETTING_BRIBE_HELPTEXT :Permitir que as companhias subornem as autoridades locais. Se o suborno for descoberto por um inspector, a companhia não poderá construir nessa localidade durante seis meses -STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Permitir comprar exclusivo dos direitos de transportes: {STRING} +STR_CONFIG_SETTING_BRIBE :Permite o suborno da autoridade local: {STRING} +STR_CONFIG_SETTING_BRIBE_HELPTEXT :Permite que as companhias tentem subornar a autoridade local. Se o suborno for descoberto por um inspector, a companhia não poderá construir nessa localidade durante seis meses +STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Permite comprar direitos de transporte em exclusividade: {STRING} STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Se uma empresa compra direitos exclusivos de transporte para uma cidade, as estações dos concorrentes (passageiros e carga) não receberão cargo durante um ano -STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Permitir investir em edificios: {STRING} -STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Permitir que empresas doem dinheiro às cidades para financiar creação de novas casas -STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Permitir o financiamento de reconstrução de estradas locais:{STRING} -STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Permitir que as companhias financiem reparações de estradas para sabotar serviços rodoviários dos oponentes. -STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Permitir enviar dinheiro para outras empresas: {STRING} -STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Permitir transferencias de dinheiro entre empresas em modo multi-jogador +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Permite investir em edifícios: {STRING} +STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Permite que empresas doem dinheiro às cidades para financiar novas casas +STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Permite financiar a reconstrução de estradas locais:{STRING} +STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Permite que as companhias financiem reparações de estrada para sabotar serviços rodoviários dos oponentes. +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Permite enviar dinheiro para outras empresas: {STRING} +STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Permite transferências de dinheiro entre empresas em modo multi-jogador STR_CONFIG_SETTING_FREIGHT_TRAINS :Multiplicador de peso para simular comboios pesados: {STRING} STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Define o impacto de carregar mercadoria nos combóios. Um valor superior torna o carregamento de meradoria mais exigente para os combóios, especialmente em terreno inclinado STR_CONFIG_SETTING_PLANE_SPEED :Fator de velocidade de avião: {STRING} @@ -1254,9 +1254,9 @@ STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :Indicar a hipó STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Nenhum STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Reduzido STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normal -STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permitir estações de passagem em estradas das cidades: {STRING} +STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Permite estações de passagem em estradas das cidades: {STRING} STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Permite construção de paragens drive-through em ruas que são prorpiedade das povoações -STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Permitir estações de passagem em estradas do adversário: {STRING} +STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Permite estações de passagem em estradas do adversário: {STRING} STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Permite construção de paragens drive-through em ruas que são prorpiedade de outras companhias STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Não é possível mudar quando já existem veículos. STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Manutenção de infraestruturas: {STRING} @@ -1283,8 +1283,8 @@ STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Auto-renovaçã STR_CONFIG_SETTING_AUTORENEW_VEHICLE_HELPTEXT :Quando activo, um veículo a chegar ao fim de vida é automaticamente substituído quando as condições de renovação estão reunidas STR_CONFIG_SETTING_AUTORENEW_MONTHS :Renovar automaticamente quando um veículo chega a {STRING} de idade STR_CONFIG_SETTING_AUTORENEW_MONTHS_HELPTEXT :Idade relativa a partir da qual um veículo deva ser indicado para auto-renovação -STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} mês{P 0 "" es} antes -STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} mês{P 0 "" es} após +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_BEFORE :{COMMA} {P "mês" "meses"} antes +STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} {P "mês" "meses"} após STR_CONFIG_SETTING_AUTORENEW_MONEY :Dinheiro mínimo para fazer auto-renovação: {STRING} STR_CONFIG_SETTING_AUTORENEW_MONEY_HELPTEXT :Quantidade mínima de dinheiro que tem que estar no banco para auto-renovação de veículos ser considerada STR_CONFIG_SETTING_ERRMSG_DURATION :Duração da mensagem de erro: {STRING} @@ -1465,13 +1465,13 @@ STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Desactivar barc STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Activar esta preferência impossibilita a construção de navios por um jogador controlado pelo computador STR_CONFIG_SETTING_AI_PROFILE :Perfil de preferências por omissão: {STRING} -STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Escolher o perfil de preferências a usar para AIs aleatórias ou para valores iniciais ao adicionar uma nova AI ou Game Script +STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Escolher o perfil de preferências a usar para AIs aleatórias ou para valores iniciais ao adicionar uma nova AI ou Script de Jogo STR_CONFIG_SETTING_AI_PROFILE_EASY :Fácil STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Média STR_CONFIG_SETTING_AI_PROFILE_HARD :Difícil -STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Permitir IAs em multi-jogador: {STRING} -STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Permitir a jogadores controlados pelo computador a participação em jogos multijogador +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Permite IAs em multi-jogador: {STRING} +STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Permite a jogadores controlados pelo computador a participação em jogos multi-jogador STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes antes de os scripts serem suspensos: {STRING} STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Número máximo de passos computacionais que um script pode executar num turno @@ -1566,7 +1566,7 @@ STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :grelha 2x2 STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :grelha 3x3 STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Aleatório STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :As cidades têm permissão para construir estradas: {STRING} -STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Permitir às cidades a construção de estradas para crescimento. Desactivar para não permitir às autoridades a construção de estradas +STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Permite às cidades a construção de estradas para crescimento. Desactivar para não permitir às autoridades a construção de estradas STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS :Cidades podem construir passagens de nível: {STRING} STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Activar esta preferência permite às cidades construir cruzamentos nivelados STR_CONFIG_SETTING_NOISE_LEVEL :Permitir que a cidade controle o nível de ruído dos aeroportos: {STRING} @@ -1701,7 +1701,7 @@ STR_CONFIG_SETTING_ENVIRONMENT_TOWNS :{ORANGE}Cidades STR_CONFIG_SETTING_ENVIRONMENT_INDUSTRIES :{ORANGE}Industrias STR_CONFIG_SETTING_ENVIRONMENT_CARGODIST :{ORANGE}Distribuição de Carga STR_CONFIG_SETTING_AI :{ORANGE}Oponentes -STR_CONFIG_SETTING_AI_NPC :{ORANGE}Jogadores computador +STR_CONFIG_SETTING_AI_NPC :{ORANGE}Jogadores Computador STR_CONFIG_SETTING_PATHFINDER_OPF :Original STR_CONFIG_SETTING_PATHFINDER_NPF :NPF @@ -1805,7 +1805,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Tem a c # Cheat window STR_CHEATS :{WHITE}Truques STR_CHEATS_TOOLTIP :{BLACK}As caixas de verificação indicam se já usou este truque antes -STR_CHEATS_WARNING :{BLACK} Atenção! Está prestes a trair seus concorrentes. Tenha em mente que a desonra vai ser lembrada para a eternidade +STR_CHEATS_WARNING :{BLACK} Atenção! Está prestes a trair seus concorrentes. Tenha em mente que a desonra será lembrada para a eternidade STR_CHEAT_MONEY :{LTBLUE}Aumentar dinheiro em {CURRENCY_LONG} STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Jogando como empresa: {ORANGE}{COMMA} STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Bulldozer mágico (destrói indústrias, objectos amovíveis etc.): {ORANGE}{STRING} @@ -2392,10 +2392,10 @@ STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Selecç STR_SELECT_BRIDGE_INFO :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG} STR_SELECT_BRIDGE_SCENEDIT_INFO :{GOLD}{STRING},{} {VELOCITY} STR_BRIDGE_NAME_SUSPENSION_STEEL :Suspensa, Aço -STR_BRIDGE_NAME_GIRDER_STEEL :Vigas, Aço -STR_BRIDGE_NAME_CANTILEVER_STEEL :Cantilever, Aço +STR_BRIDGE_NAME_GIRDER_STEEL :Viga, Aço +STR_BRIDGE_NAME_CANTILEVER_STEEL :Consola, Aço STR_BRIDGE_NAME_SUSPENSION_CONCRETE :Suspensa, Betão -STR_BRIDGE_NAME_WOODEN :De madeira +STR_BRIDGE_NAME_WOODEN :Madeira STR_BRIDGE_NAME_CONCRETE :Betão STR_BRIDGE_NAME_TUBULAR_STEEL :Tubular, Aço STR_BRIDGE_TUBULAR_SILICON :Tubular, Silício @@ -2474,8 +2474,8 @@ STR_AIRPORT_INTERNATIONAL :Internacional STR_AIRPORT_COMMUTER :Transbordo STR_AIRPORT_INTERCONTINENTAL :Intercontinental STR_AIRPORT_HELIPORT :Heliporto -STR_AIRPORT_HELIDEPOT :Heli-depósito -STR_AIRPORT_HELISTATION :Heli-estação +STR_AIRPORT_HELIDEPOT :Heli Hangar +STR_AIRPORT_HELISTATION :Heliponto STR_AIRPORT_CLASS_SMALL :Aeroportos pequenos STR_AIRPORT_CLASS_LARGE :Aeroportos grandes @@ -2677,17 +2677,17 @@ STR_LAI_TUNNEL_DESCRIPTION_RAILROAD :Túnel ferrovi STR_LAI_TUNNEL_DESCRIPTION_ROAD :Túnel rodoviário STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_STEEL :Ponte ferroviária suspensa em aço -STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Ponte ferroviária com vigas em aço -STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Ponte ferroviária cantilever em aço -STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Ponte ferroviária suspensa de betão reforçado +STR_LAI_BRIDGE_DESCRIPTION_RAIL_GIRDER_STEEL :Ponte ferroviária em vigas de aço +STR_LAI_BRIDGE_DESCRIPTION_RAIL_CANTILEVER_STEEL :Ponte ferroviária em consolas de aço +STR_LAI_BRIDGE_DESCRIPTION_RAIL_SUSPENSION_CONCRETE :Ponte ferroviária suspensa de betão armado STR_LAI_BRIDGE_DESCRIPTION_RAIL_WOODEN :Ponte ferroviária de madeira STR_LAI_BRIDGE_DESCRIPTION_RAIL_CONCRETE :Ponte ferroviária de betão STR_LAI_BRIDGE_DESCRIPTION_RAIL_TUBULAR_STEEL :Ponte rodoviária tubular STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_STEEL :Ponte rodoviária suspensa em aço STR_LAI_BRIDGE_DESCRIPTION_ROAD_GIRDER_STEEL :Ponte rodoviária com vigas em aço -STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Ponte rodoviária cantilever em aço -STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Ponte rodoviária suspensa de betão reforçado +STR_LAI_BRIDGE_DESCRIPTION_ROAD_CANTILEVER_STEEL :Ponte rodoviária em consolas de aço +STR_LAI_BRIDGE_DESCRIPTION_ROAD_SUSPENSION_CONCRETE :Ponte rodoviária suspensa de betão armado STR_LAI_BRIDGE_DESCRIPTION_ROAD_WOODEN :Ponte rodoviária de madeira STR_LAI_BRIDGE_DESCRIPTION_ROAD_CONCRETE :Ponte rodoviária de betão STR_LAI_BRIDGE_DESCRIPTION_ROAD_TUBULAR_STEEL :Ponte rodoviária tubular @@ -2700,7 +2700,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Sede de empresa STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreno propriedade de uma empresa # About OpenTTD window -STR_ABOUT_OPENTTD :{WHITE}Sobre o OpenTTD... +STR_ABOUT_OPENTTD :{WHITE}Sobre o OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Direitos de autor originais {COPYRIGHT} 1995 Chris Sawyer, Todos os direitos reservados STR_ABOUT_VERSION :{BLACK}OpenTTD versão {REV} STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2019 A equipa do OpenTTD @@ -2778,6 +2778,8 @@ STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nenhuma STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_FILTER_TITLE :{BLACK}Filtro de sequência: +STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Substituir Ficheiro +STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Tem a certeza que deseja substituir o ficheiro existente? STR_SAVELOAD_OSKTITLE :{BLACK}Introduza um nome para o jogo gravado @@ -3295,10 +3297,10 @@ STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}Nenhum STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}Valor da empresa: {WHITE}{CURRENCY_LONG} STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}({COMMA}% propriedade de {COMPANY}) STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}Infraestrutura: -STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} peça{P "" s} de caminho-de-ferro -STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} peça{P "" s} de estrada -STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} quadrado{P "" s} de água -STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} quadrado{P "" s} de estação +STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} {P "secção" "secções" } de caminho-de-ferro +STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} {P "secção" "secções"} de estrada +STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} bloco{P "" s} de água +STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} bloco{P "" s} de estação STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} aeroporto{P "" s} STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}Nenhum @@ -3334,15 +3336,15 @@ STR_BUY_COMPANY_MESSAGE :{WHITE}Estamos # Company infrastructure window STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infraestrutura de {COMPANY} -STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Peças de caminho-de-ferro: +STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Secções de caminho-de-ferro: STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Sinais -STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Peças de estrada: +STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Secções de estrada: STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Estrada STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Via para elétricos -STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Quadrados de água: +STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Blocos de água: STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Canais STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Estações: -STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Quadrados de estações +STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}Blocos de estações STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}Aeroportos STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENCY_LONG}/ano @@ -3440,11 +3442,11 @@ STR_GROUP_OCCUPANCY_VALUE :{NUM}% # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Novos Veículos Ferroviários -STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Novos comboios para carris electrificados +STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Novos Veículos Ferroviários Elétricos STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Novos Veículos Monocarril STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Novos Veículos Maglev -STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Novos Veículos Sobre Carris +STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Novos Veículos Ferroviários STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Novos Veículos Rodoviários STR_BUY_VEHICLE_SHIP_CAPTION :Novos Barcos STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Nova Aeronave @@ -3474,7 +3476,7 @@ STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Tipo de STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Lista de veículos ferroviários - clique num veículo para informações STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Lista de veículos rodoviários - clique num veículo para informações -STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Lista de selecção de navios. Clique num navio para informações. Ctrl+Clique para alternar/ocultar o tipo de navio +STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}Lista de selecção de barcos. Clique num navio para informações. Ctrl+Clique para alternar/ocultar o tipo de barco STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}Lista de aeronaves - clique na aeronave para informações STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_BUTTON :{BLACK}Comprar Veículo @@ -4041,7 +4043,7 @@ STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Nome do STR_AI_DEBUG_SETTINGS :{BLACK}Definições STR_AI_DEBUG_SETTINGS_TOOLTIP :{BLACK}Alterar as definições do script STR_AI_DEBUG_RELOAD :{BLACK}Recarregar IA -STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Terminar a IA, recarrega o script e reinicia a IA +STR_AI_DEBUG_RELOAD_TOOLTIP :{BLACK}Termina a IA, recarrega o script e reinicia a IA STR_AI_DEBUG_BREAK_STR_ON_OFF_TOOLTIP :{BLACK}Activar/desactivar paragem quando o registo da IA for igual à string de paragem STR_AI_DEBUG_BREAK_ON_LABEL :{BLACK}Parar em: STR_AI_DEBUG_BREAK_STR_OSKTITLE :{BLACK}Parar em diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 4d958d9d37..38edb4a384 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -2963,6 +2963,8 @@ STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Нет STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_FILTER_TITLE :{BLACK}Фильтр: +STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Перезапись файла +STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Перезаписать файл? STR_SAVELOAD_OSKTITLE :{BLACK}Введите название сохраняемой игры diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index 3b6b3fa4f5..ed2491cbd6 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -2778,6 +2778,8 @@ STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}No hay i STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING} STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING} STR_SAVELOAD_FILTER_TITLE :{BLACK}Filtrar palabras: +STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Sobrescribir archivo +STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}¿Estás seguro de sobrescribir el archivo? STR_SAVELOAD_OSKTITLE :{BLACK}Indicar un nombre para la partida a guardar diff --git a/src/network/core/config.h b/src/network/core/config.h index b6f63f8dca..a641b021db 100644 --- a/src/network/core/config.h +++ b/src/network/core/config.h @@ -43,7 +43,7 @@ static const uint NETWORK_NAME_LENGTH = 80; ///< The maxim static const uint NETWORK_COMPANY_NAME_LENGTH = 128; ///< The maximum length of the company name, in bytes including '\0' static const uint NETWORK_HOSTNAME_LENGTH = 80; ///< The maximum length of the host name, in bytes including '\0' static const uint NETWORK_SERVER_ID_LENGTH = 33; ///< The maximum length of the network id of the servers, in bytes including '\0' -static const uint NETWORK_REVISION_LENGTH = 15; ///< The maximum length of the revision, in bytes including '\0' +static const uint NETWORK_REVISION_LENGTH = 33; ///< The maximum length of the revision, in bytes including '\0' static const uint NETWORK_LONG_REVISION_LENGTH = 64; ///< The maximum length of the revision, in bytes including '\0' static const uint NETWORK_PASSWORD_LENGTH = 33; ///< The maximum length of the password, in bytes including '\0' (must be >= NETWORK_SERVER_ID_LENGTH) static const uint NETWORK_CLIENTS_LENGTH = 200; ///< The maximum length for the list of clients that controls a company, in bytes including '\0' diff --git a/src/openttd.cpp b/src/openttd.cpp index d079694243..40f7dd1aa4 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -261,7 +261,7 @@ static void ShowHelp() static void WriteSavegameInfo(const char *name) { - extern uint16 _sl_version; + extern SaveLoadVersion _sl_version; uint32 last_ottd_rev = 0; byte ever_modified = 0; bool removed_newgrfs = false; diff --git a/src/rev.cpp.in b/src/rev.cpp.in index 89c95e2b49..b9267c7905 100644 --- a/src/rev.cpp.in +++ b/src/rev.cpp.in @@ -53,6 +53,11 @@ const char _openttd_build_date[] = __DATE__ " " __TIME__; */ const char _openttd_build_configure[] = "!!CONFIGURE_INVOCATION!!"; +/** + * The git revision hash of this version. + */ +const char _openttd_revision_hash[] = "!!GITHASH!!"; + /** * Let us know if current build was modified. This detection * works even in the case when revision string is overridden by diff --git a/src/rev.h b/src/rev.h index 68e19a3632..e523f9a642 100644 --- a/src/rev.h +++ b/src/rev.h @@ -14,6 +14,7 @@ extern const char _openttd_revision[]; extern const char _openttd_build_date[]; +extern const char _openttd_revision_hash[]; extern const char _openttd_build_configure[]; extern const byte _openttd_revision_modified; extern const uint32 _openttd_newgrf_version; diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index bb134266b7..887e3de2c1 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -601,14 +601,14 @@ bool AfterLoadGame() /* The LFSR used in RunTileLoop iteration cannot have a zeroed state, make it non-zeroed. */ if (_cur_tileloop_tile == 0) _cur_tileloop_tile = 1; - if (IsSavegameVersionBefore(98)) GamelogOldver(); + if (IsSavegameVersionBefore(SLV_98)) GamelogOldver(); GamelogTestRevision(); GamelogTestMode(); - if (IsSavegameVersionBefore(98)) GamelogGRFAddList(_grfconfig); + if (IsSavegameVersionBefore(SLV_98)) GamelogGRFAddList(_grfconfig); - if (IsSavegameVersionBefore(119)) { + if (IsSavegameVersionBefore(SLV_119)) { _pause_mode = (_pause_mode == 2) ? PM_PAUSED_NORMAL : PM_UNPAUSED; } else if (_network_dedicated && (_pause_mode & PM_PAUSED_ERROR) != 0) { DEBUG(net, 0, "The loading savegame was paused due to an error state."); @@ -633,7 +633,7 @@ bool AfterLoadGame() * Because the data stored by TTDPatch are unusable for rail stations > 7x7, * recompute the width and height. Doing this unconditionally for all old * savegames simplifies the code. */ - if (IsSavegameVersionBefore(2)) { + if (IsSavegameVersionBefore(SLV_2)) { Station *st; FOR_ALL_STATIONS(st) { st->train_station.w = st->train_station.h = 0; @@ -651,7 +651,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(194) && SlXvIsFeatureMissing(XSLFI_HEIGHT_8_BIT)) { + if (IsSavegameVersionBefore(SLV_194) && SlXvIsFeatureMissing(XSLFI_HEIGHT_8_BIT)) { _settings_game.construction.max_heightlevel = 15; /* In old savegame versions, the heightlevel was coded in bits 0..3 of the type field */ @@ -680,19 +680,19 @@ bool AfterLoadGame() } /* in version 2.1 of the savegame, town owner was unified. */ - if (IsSavegameVersionBefore(2, 1)) ConvertTownOwner(); + if (IsSavegameVersionBefore(SLV_2, 1)) ConvertTownOwner(); /* from version 4.1 of the savegame, exclusive rights are stored at towns */ - if (IsSavegameVersionBefore(4, 1)) UpdateExclusiveRights(); + if (IsSavegameVersionBefore(SLV_4, 1)) UpdateExclusiveRights(); /* from version 4.2 of the savegame, currencies are in a different order */ - if (IsSavegameVersionBefore(4, 2)) UpdateCurrencies(); + if (IsSavegameVersionBefore(SLV_4, 2)) UpdateCurrencies(); /* In old version there seems to be a problem that water is owned by * OWNER_NONE, not OWNER_WATER.. I can't replicate it for the current * (4.3) version, so I just check when versions are older, and then * walk through the whole map.. */ - if (IsSavegameVersionBefore(4, 3)) { + if (IsSavegameVersionBefore(SLV_4, 3)) { for (TileIndex t = 0; t < map_size; t++) { if (IsTileType(t, MP_WATER) && GetTileOwner(t) >= MAX_COMPANIES) { SetTileOwner(t, OWNER_WATER); @@ -700,7 +700,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(84)) { + if (IsSavegameVersionBefore(SLV_84)) { Company *c; FOR_ALL_COMPANIES(c) { c->name = CopyFromOldName(c->name_1); @@ -726,7 +726,7 @@ bool AfterLoadGame() /* From this point the old names array is cleared. */ ResetOldNames(); - if (IsSavegameVersionBefore(106)) { + if (IsSavegameVersionBefore(SLV_106)) { /* no station is determined by 'tile == INVALID_TILE' now (instead of '0') */ Station *st; FOR_ALL_STATIONS(st) { @@ -738,7 +738,7 @@ bool AfterLoadGame() /* the same applies to Company::location_of_HQ */ Company *c; FOR_ALL_COMPANIES(c) { - if (c->location_of_HQ == 0 || (IsSavegameVersionBefore(4) && c->location_of_HQ == 0xFFFF)) { + if (c->location_of_HQ == 0 || (IsSavegameVersionBefore(SLV_4) && c->location_of_HQ == 0xFFFF)) { c->location_of_HQ = INVALID_TILE; } } @@ -765,7 +765,7 @@ bool AfterLoadGame() } /* The value of _date_fract got divided, so make sure that old games are converted correctly. */ - if (IsSavegameVersionBefore(11, 1) || (IsSavegameVersionBefore(147) && _date_fract > DAY_TICKS)) _date_fract /= 885; + if (IsSavegameVersionBefore(SLV_11, 1) || (IsSavegameVersionBefore(SLV_147) && _date_fract > DAY_TICKS)) _date_fract /= 885; if (SlXvIsFeaturePresent(XSLFI_SPRINGPP)) { assert(_settings_game.economy.day_length_factor >= 1); @@ -797,29 +797,29 @@ bool AfterLoadGame() * right value has been chosen in the settings. Otherwise we will be converting * it incorrectly in half of the times without a means to correct that. */ - if (IsSavegameVersionBefore(4, 2)) _settings_game.station.modified_catchment = false; - if (IsSavegameVersionBefore(6, 1)) _settings_game.pf.forbid_90_deg = false; - if (IsSavegameVersionBefore(21)) _settings_game.vehicle.train_acceleration_model = 0; - if (IsSavegameVersionBefore(90)) _settings_game.vehicle.plane_speed = 4; - if (IsSavegameVersionBefore(95)) _settings_game.vehicle.dynamic_engines = 0; - if (IsSavegameVersionBefore(96)) _settings_game.economy.station_noise_level = false; - if (IsSavegameVersionBefore(133)) { + if (IsSavegameVersionBefore(SLV_4, 2)) _settings_game.station.modified_catchment = false; + if (IsSavegameVersionBefore(SLV_6, 1)) _settings_game.pf.forbid_90_deg = false; + if (IsSavegameVersionBefore(SLV_21)) _settings_game.vehicle.train_acceleration_model = 0; + if (IsSavegameVersionBefore(SLV_90)) _settings_game.vehicle.plane_speed = 4; + if (IsSavegameVersionBefore(SLV_95)) _settings_game.vehicle.dynamic_engines = 0; + if (IsSavegameVersionBefore(SLV_96)) _settings_game.economy.station_noise_level = false; + if (IsSavegameVersionBefore(SLV_133)) { _settings_game.vehicle.train_slope_steepness = 3; } - if (IsSavegameVersionBefore(134)) _settings_game.economy.feeder_payment_share = 75; - if (IsSavegameVersionBefore(138)) _settings_game.vehicle.plane_crashes = 2; - if (IsSavegameVersionBefore(139)) { + if (IsSavegameVersionBefore(SLV_134)) _settings_game.economy.feeder_payment_share = 75; + if (IsSavegameVersionBefore(SLV_138)) _settings_game.vehicle.plane_crashes = 2; + if (IsSavegameVersionBefore(SLV_139)) { _settings_game.vehicle.roadveh_acceleration_model = 0; _settings_game.vehicle.roadveh_slope_steepness = 7; } - if (IsSavegameVersionBefore(143)) _settings_game.economy.allow_town_level_crossings = true; - if (IsSavegameVersionBefore(159)) { + if (IsSavegameVersionBefore(SLV_143)) _settings_game.economy.allow_town_level_crossings = true; + if (IsSavegameVersionBefore(SLV_159)) { _settings_game.vehicle.max_train_length = 50; _settings_game.construction.max_bridge_length = 64; _settings_game.construction.max_tunnel_length = 64; } - if (IsSavegameVersionBefore(166)) _settings_game.economy.infrastructure_maintenance = false; - if (IsSavegameVersionBefore(183)) { + if (IsSavegameVersionBefore(SLV_166)) _settings_game.economy.infrastructure_maintenance = false; + if (IsSavegameVersionBefore(SLV_183)) { _settings_game.linkgraph.distribution_pax = DT_MANUAL; _settings_game.linkgraph.distribution_mail = DT_MANUAL; _settings_game.linkgraph.distribution_armoured = DT_MANUAL; @@ -835,7 +835,7 @@ bool AfterLoadGame() /* Connect front and rear engines of multiheaded trains and converts * subtype to the new format */ - if (IsSavegameVersionBefore(17, 1)) ConvertOldMultiheadToNew(); + if (IsSavegameVersionBefore(SLV_17, 1)) ConvertOldMultiheadToNew(); /* Connect front and rear engines of multiheaded trains */ ConnectMultiheadedTrains(); @@ -851,7 +851,7 @@ bool AfterLoadGame() /* Oilrig was moved from id 15 to 9. We have to do this conversion * here as AfterLoadVehicles can check it indirectly via the newgrf * code. */ - if (IsSavegameVersionBefore(139)) { + if (IsSavegameVersionBefore(SLV_139)) { Station *st; FOR_ALL_STATIONS(st) { if (st->airport.tile != INVALID_TILE && st->airport.type == 15) { @@ -935,7 +935,7 @@ bool AfterLoadGame() * This problem appears in savegame version 21 too, see r3455. But after loading the * savegame and saving again, the buggy map array could be converted to new savegame * version. It didn't show up before r12070. */ - if (IsSavegameVersionBefore(87)) UpdateVoidTiles(); + if (IsSavegameVersionBefore(SLV_87)) UpdateVoidTiles(); /* If Load Scenario / New (Scenario) Game is used, * a company does not exist yet. So create one here. @@ -954,7 +954,7 @@ bool AfterLoadGame() cp->current_station = cp->front->last_station_visited; } - if (IsSavegameVersionBefore(72)) { + if (IsSavegameVersionBefore(SLV_72)) { /* Locks in very old savegames had OWNER_WATER as owner */ for (TileIndex t = 0; t < MapSize(); t++) { switch (GetTileType(t)) { @@ -1045,7 +1045,7 @@ bool AfterLoadGame() switch (GetStationType(t)) { case STATION_TRUCK: case STATION_BUS: - if (IsSavegameVersionBefore(6)) { + if (IsSavegameVersionBefore(SLV_6)) { /* Before version 5 you could not have more than 250 stations. * Version 6 adds large maps, so you could only place 253*253 * road stops on a map (no freeform edges) = 64009. So, yes @@ -1095,12 +1095,12 @@ bool AfterLoadGame() /* In version 2.2 of the savegame, we have new airports, so status of all aircraft is reset. * This has to be called after the oilrig airport_type update above ^^^ ! */ - if (IsSavegameVersionBefore(2, 2)) UpdateOldAircraft(); + if (IsSavegameVersionBefore(SLV_2, 2)) UpdateOldAircraft(); /* In version 6.1 we put the town index in the map-array. To do this, we need * to use m2 (16bit big), so we need to clean m2, and that is where this is * all about ;) */ - if (IsSavegameVersionBefore(6, 1)) { + if (IsSavegameVersionBefore(SLV_6, 1)) { for (TileIndex t = 0; t < map_size; t++) { switch (GetTileType(t)) { case MP_HOUSE: @@ -1123,20 +1123,20 @@ bool AfterLoadGame() } /* Force the freeform edges to false for old savegames. */ - if (IsSavegameVersionBefore(111)) { + if (IsSavegameVersionBefore(SLV_111)) { _settings_game.construction.freeform_edges = false; } /* From version 9.0, we update the max passengers of a town (was sometimes negative * before that. */ - if (IsSavegameVersionBefore(9)) { + if (IsSavegameVersionBefore(SLV_9)) { Town *t; FOR_ALL_TOWNS(t) UpdateTownMaxPass(t); } /* From version 16.0, we included autorenew on engines, which are now saved, but * of course, we do need to initialize them for older savegames. */ - if (IsSavegameVersionBefore(16)) { + if (IsSavegameVersionBefore(SLV_16)) { Company *c; FOR_ALL_COMPANIES(c) { c->engine_renew_list = NULL; @@ -1157,7 +1157,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(48)) { + if (IsSavegameVersionBefore(SLV_48)) { for (TileIndex t = 0; t < map_size; t++) { switch (GetTileType(t)) { case MP_RAILWAY: @@ -1185,9 +1185,9 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(61)) { + if (IsSavegameVersionBefore(SLV_61)) { /* Added the RoadType */ - bool old_bridge = IsSavegameVersionBefore(42); + bool old_bridge = IsSavegameVersionBefore(SLV_42); for (TileIndex t = 0; t < map_size; t++) { switch (GetTileType(t)) { case MP_ROAD: @@ -1224,9 +1224,9 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(114)) { - bool fix_roadtypes = !IsSavegameVersionBefore(61); - bool old_bridge = IsSavegameVersionBefore(42); + if (IsSavegameVersionBefore(SLV_114)) { + bool fix_roadtypes = !IsSavegameVersionBefore(SLV_61); + bool old_bridge = IsSavegameVersionBefore(SLV_42); for (TileIndex t = 0; t < map_size; t++) { switch (GetTileType(t)) { @@ -1291,7 +1291,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(42)) { + if (IsSavegameVersionBefore(SLV_42)) { Vehicle *v; for (TileIndex t = 0; t < map_size; t++) { @@ -1372,8 +1372,8 @@ bool AfterLoadGame() } } - /* Railtype moved from m3 to m8 in version 200. */ - if (IsSavegameVersionBefore(200)) { + /* Railtype moved from m3 to m8 in version SLV_EXTEND_RAILTYPES. */ + if (IsSavegameVersionBefore(SLV_EXTEND_RAILTYPES)) { const bool has_extra_bit = SlXvIsFeaturePresent(XSLFI_MORE_RAIL_TYPES, 1, 1); auto update_railtype = [&](TileIndex t) { uint rt = GB(_m[t].m3, 0, 4); @@ -1443,7 +1443,7 @@ bool AfterLoadGame() } /* Elrails got added in rev 24 */ - if (IsSavegameVersionBefore(24)) { + if (IsSavegameVersionBefore(SLV_24)) { RailType min_rail = RAILTYPE_ELECTRIC; Train *v; @@ -1493,12 +1493,12 @@ bool AfterLoadGame() /* In version 16.1 of the savegame a company can decide if trains, which get * replaced, shall keep their old length. In all prior versions, just default * to false */ - if (IsSavegameVersionBefore(16, 1)) { + if (IsSavegameVersionBefore(SLV_16, 1)) { Company *c; FOR_ALL_COMPANIES(c) c->settings.renew_keep_length = false; } - if (IsSavegameVersionBefore(123)) { + if (IsSavegameVersionBefore(SLV_123)) { /* Waypoints became subclasses of stations ... */ MoveWaypointsToBaseStations(); /* ... and buoys were moved to waypoints. */ @@ -1507,7 +1507,7 @@ bool AfterLoadGame() /* From version 15, we moved a semaphore bit from bit 2 to bit 3 in m4, making * room for PBS. Now in version 21 move it back :P. */ - if (IsSavegameVersionBefore(21) && !IsSavegameVersionBefore(15)) { + if (IsSavegameVersionBefore(SLV_21) && !IsSavegameVersionBefore(SLV_15)) { for (TileIndex t = 0; t < map_size; t++) { switch (GetTileType(t)) { case MP_RAILWAY: @@ -1541,14 +1541,14 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(25)) { + if (IsSavegameVersionBefore(SLV_25)) { RoadVehicle *rv; FOR_ALL_ROADVEHICLES(rv) { rv->vehstatus &= ~0x40; } } - if (IsSavegameVersionBefore(26)) { + if (IsSavegameVersionBefore(SLV_26)) { Station *st; FOR_ALL_STATIONS(st) { for (CargoID c = 0; c < NUM_CARGO; c++) { @@ -1559,7 +1559,7 @@ bool AfterLoadGame() YapfNotifyTrackLayoutChange(INVALID_TILE, INVALID_TRACK); - if (IsSavegameVersionBefore(34)) { + if (IsSavegameVersionBefore(SLV_34)) { Company *c; FOR_ALL_COMPANIES(c) ResetCompanyLivery(c); } @@ -1570,11 +1570,11 @@ bool AfterLoadGame() c->avail_roadtypes = GetCompanyRoadtypes(c->index); } - if (!IsSavegameVersionBefore(27)) AfterLoadStations(); + if (!IsSavegameVersionBefore(SLV_27)) AfterLoadStations(); /* Time starts at 0 instead of 1920. * Account for this in older games by adding an offset */ - if (IsSavegameVersionBefore(31)) { + if (IsSavegameVersionBefore(SLV_31)) { Station *st; Waypoint *wp; Engine *e; @@ -1599,7 +1599,7 @@ bool AfterLoadGame() /* From 32 on we save the industry who made the farmland. * To give this prettiness to old savegames, we remove all farmfields and * plant new ones. */ - if (IsSavegameVersionBefore(32)) { + if (IsSavegameVersionBefore(SLV_32)) { Industry *i; for (TileIndex t = 0; t < map_size; t++) { @@ -1619,7 +1619,7 @@ bool AfterLoadGame() } /* Setting no refit flags to all orders in savegames from before refit in orders were added */ - if (IsSavegameVersionBefore(36)) { + if (IsSavegameVersionBefore(SLV_36)) { Order *order; Vehicle *v; @@ -1634,14 +1634,14 @@ bool AfterLoadGame() /* from version 38 we have optional elrails, since we cannot know the * preference of a user, let elrails enabled; it can be disabled manually */ - if (IsSavegameVersionBefore(38)) _settings_game.vehicle.disable_elrails = false; + if (IsSavegameVersionBefore(SLV_38)) _settings_game.vehicle.disable_elrails = false; /* do the same as when elrails were enabled/disabled manually just now */ SettingsDisableElrail(_settings_game.vehicle.disable_elrails); InitializeRailGUI(); /* From version 53, the map array was changed for house tiles to allow * space for newhouses grf features. A new byte, m7, was also added. */ - if (IsSavegameVersionBefore(53)) { + if (IsSavegameVersionBefore(SLV_53)) { for (TileIndex t = 0; t < map_size; t++) { if (IsTileType(t, MP_HOUSE)) { if (GB(_m[t].m3, 6, 2) != TOWN_HOUSE_COMPLETED) { @@ -1678,7 +1678,7 @@ bool AfterLoadGame() /* Check and update house and town values */ UpdateHousesAndTowns(); - if (IsSavegameVersionBefore(43)) { + if (IsSavegameVersionBefore(SLV_43)) { for (TileIndex t = 0; t < map_size; t++) { if (IsTileType(t, MP_INDUSTRY)) { switch (GetIndustryGfx(t)) { @@ -1705,7 +1705,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(45)) { + if (IsSavegameVersionBefore(SLV_45)) { Vehicle *v; /* Originally just the fact that some cargo had been paid for was * stored to stop people cheating and cashing in several times. This @@ -1719,14 +1719,14 @@ bool AfterLoadGame() /* Buoys do now store the owner of the previous water tile, which can never * be OWNER_NONE. So replace OWNER_NONE with OWNER_WATER. */ - if (IsSavegameVersionBefore(46)) { + if (IsSavegameVersionBefore(SLV_46)) { Waypoint *wp; FOR_ALL_WAYPOINTS(wp) { if ((wp->facilities & FACIL_DOCK) != 0 && IsTileOwner(wp->xy, OWNER_NONE) && TileHeight(wp->xy) == 0) SetTileOwner(wp->xy, OWNER_WATER); } } - if (IsSavegameVersionBefore(50)) { + if (IsSavegameVersionBefore(SLV_50)) { Aircraft *v; /* Aircraft units changed from 8 mph to 1 km-ish/h */ FOR_ALL_AIRCRAFT(v) { @@ -1739,9 +1739,9 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(49)) FOR_ALL_COMPANIES(c) c->face = ConvertFromOldCompanyManagerFace(c->face); + if (IsSavegameVersionBefore(SLV_49)) FOR_ALL_COMPANIES(c) c->face = ConvertFromOldCompanyManagerFace(c->face); - if (IsSavegameVersionBefore(52)) { + if (IsSavegameVersionBefore(SLV_52)) { for (TileIndex t = 0; t < map_size; t++) { if (IsTileType(t, MP_OBJECT) && _m[t].m5 == OBJECT_STATUE) { _m[t].m2 = CalcClosestTownFromTile(t)->index; @@ -1752,7 +1752,7 @@ bool AfterLoadGame() /* A setting containing the proportion of towns that grow twice as * fast was added in version 54. From version 56 this is now saved in the * town as cities can be built specifically in the scenario editor. */ - if (IsSavegameVersionBefore(56)) { + if (IsSavegameVersionBefore(SLV_56)) { Town *t; FOR_ALL_TOWNS(t) { @@ -1762,7 +1762,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(57)) { + if (IsSavegameVersionBefore(SLV_57)) { Vehicle *v; /* Added a FIFO queue of vehicles loading at stations */ FOR_ALL_VEHICLES(v) { @@ -1776,7 +1776,7 @@ bool AfterLoadGame() ClrBit(v->vehicle_flags, VF_LOADING_FINISHED); } } - } else if (IsSavegameVersionBefore(59)) { + } else if (IsSavegameVersionBefore(SLV_59)) { /* For some reason non-loading vehicles could be in the station's loading vehicle list */ Station *st; @@ -1788,7 +1788,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(58)) { + if (IsSavegameVersionBefore(SLV_58)) { /* Setting difficulty industry_density other than zero get bumped to +1 * since a new option (very low at position 1) has been added */ if (_settings_game.difficulty.industry_density > 0) { @@ -1799,7 +1799,7 @@ bool AfterLoadGame() _settings_game.difficulty.number_towns++; } - if (IsSavegameVersionBefore(64)) { + if (IsSavegameVersionBefore(SLV_64)) { /* Since now we allow different signal types and variants on a single tile. * Move signal states to m4 to make room and clone the signal type/variant. */ for (TileIndex t = 0; t < map_size; t++) { @@ -1813,7 +1813,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(69)) { + if (IsSavegameVersionBefore(SLV_69)) { /* In some old savegames a bit was cleared when it should not be cleared */ RoadVehicle *rv; FOR_ALL_ROADVEHICLES(rv) { @@ -1823,7 +1823,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(70)) { + if (IsSavegameVersionBefore(SLV_70)) { /* Added variables to support newindustries */ Industry *i; FOR_ALL_INDUSTRIES(i) i->founder = OWNER_NONE; @@ -1831,7 +1831,7 @@ bool AfterLoadGame() /* From version 82, old style canals (above sealevel (0), WATER owner) are no longer supported. Replace the owner for those by OWNER_NONE. */ - if (IsSavegameVersionBefore(82)) { + if (IsSavegameVersionBefore(SLV_82)) { for (TileIndex t = 0; t < map_size; t++) { if (IsTileType(t, MP_WATER) && GetWaterTileType(t) == WATER_TILE_CLEAR && @@ -1848,7 +1848,7 @@ bool AfterLoadGame() * someone can remove canals owned by somebody else and it prevents * making floods using the removal of ship depots. */ - if (IsSavegameVersionBefore(83)) { + if (IsSavegameVersionBefore(SLV_83)) { for (TileIndex t = 0; t < map_size; t++) { if (IsShipDepotTile(t)) { _m[t].m4 = (TileHeight(t) == 0) ? OWNER_WATER : OWNER_NONE; @@ -1856,7 +1856,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(74)) { + if (IsSavegameVersionBefore(SLV_74)) { Station *st; FOR_ALL_STATIONS(st) { for (CargoID c = 0; c < NUM_CARGO; c++) { @@ -1866,7 +1866,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(78)) { + if (IsSavegameVersionBefore(SLV_78)) { Industry *i; uint j; FOR_ALL_INDUSTRIES(i) { @@ -1884,7 +1884,7 @@ bool AfterLoadGame() * grassy trees were always drawn fully grassy. Furthermore, trees on rough * land used to have zero density, now they have full density. Therefore, * make all grassy/rough land trees have a density of 3. */ - if (IsSavegameVersionBefore(81)) { + if (IsSavegameVersionBefore(SLV_81)) { for (TileIndex t = 0; t < map_size; t++) { if (GetTileType(t) == MP_TREES) { TreeGround groundType = (TreeGround)GB(_m[t].m2, 4, 2); @@ -1894,7 +1894,7 @@ bool AfterLoadGame() } - if (IsSavegameVersionBefore(93)) { + if (IsSavegameVersionBefore(SLV_93)) { /* Rework of orders. */ Order *order; FOR_ALL_ORDERS(order) order->ConvertFromOldSavegame(); @@ -1911,7 +1911,7 @@ bool AfterLoadGame() FOR_VEHICLE_ORDERS(v, order) order->SetNonStopType(ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS); } } - } else if (IsSavegameVersionBefore(94)) { + } else if (IsSavegameVersionBefore(SLV_94)) { /* Unload and transfer are now mutual exclusive. */ Order *order; FOR_ALL_ORDERS(order) { @@ -1930,7 +1930,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(84)) { + if (IsSavegameVersionBefore(SLV_84)) { /* Set all share owners to INVALID_COMPANY for * 1) all inactive companies * (when inactive companies were stored in the savegame - TTD, TTDP and some @@ -1947,7 +1947,7 @@ bool AfterLoadGame() } /* The water class was moved/unified. */ - if (IsSavegameVersionBefore(146)) { + if (IsSavegameVersionBefore(SLV_146)) { for (TileIndex t = 0; t < map_size; t++) { switch (GetTileType(t)) { case MP_STATION: @@ -1981,7 +1981,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(86)) { + if (IsSavegameVersionBefore(SLV_86)) { for (TileIndex t = 0; t < map_size; t++) { /* Move river flag and update canals to use water class */ if (IsTileType(t, MP_WATER)) { @@ -2012,7 +2012,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(87)) { + if (IsSavegameVersionBefore(SLV_87)) { for (TileIndex t = 0; t < map_size; t++) { /* skip oil rigs at borders! */ if ((IsTileType(t, MP_WATER) || IsBuoyTile(t)) && @@ -2050,13 +2050,13 @@ bool AfterLoadGame() } /* Convert old PF settings to new */ - if (_settings_game.pf.yapf.rail_use_yapf || IsSavegameVersionBefore(28)) { + if (_settings_game.pf.yapf.rail_use_yapf || IsSavegameVersionBefore(SLV_28)) { _settings_game.pf.pathfinder_for_trains = VPF_YAPF; } else { _settings_game.pf.pathfinder_for_trains = VPF_NPF; } - if (_settings_game.pf.yapf.road_use_yapf || IsSavegameVersionBefore(28)) { + if (_settings_game.pf.yapf.road_use_yapf || IsSavegameVersionBefore(SLV_28)) { _settings_game.pf.pathfinder_for_roadvehs = VPF_YAPF; } else { _settings_game.pf.pathfinder_for_roadvehs = VPF_NPF; @@ -2069,7 +2069,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(88)) { + if (IsSavegameVersionBefore(SLV_88)) { /* Profits are now with 8 bit fract */ Vehicle *v; FOR_ALL_VEHICLES(v) { @@ -2079,7 +2079,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(91)) { + if (IsSavegameVersionBefore(SLV_91)) { /* Increase HouseAnimationFrame from 5 to 7 bits */ for (TileIndex t = 0; t < map_size; t++) { if (IsTileType(t, MP_HOUSE) && GetHouseType(t) >= NEW_HOUSE_OFFSET) { @@ -2089,7 +2089,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(62)) { + if (IsSavegameVersionBefore(SLV_62)) { /* Remove all trams from savegames without tram support. * There would be trams without tram track under causing crashes sooner or later. */ RoadVehicle *v; @@ -2101,7 +2101,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(99)) { + if (IsSavegameVersionBefore(SLV_99)) { for (TileIndex t = 0; t < map_size; t++) { /* Set newly introduced WaterClass of industry tiles */ if (IsTileType(t, MP_STATION) && IsOilRig(t)) { @@ -2150,7 +2150,7 @@ bool AfterLoadGame() /* Move the signal variant back up one bit for PBS. We don't convert the old PBS * format here, as an old layout wouldn't work properly anyway. To be safe, we * clear any possible PBS reservations as well. */ - if (IsSavegameVersionBefore(100)) { + if (IsSavegameVersionBefore(SLV_100)) { for (TileIndex t = 0; t < map_size; t++) { switch (GetTileType(t)) { case MP_RAILWAY: @@ -2188,21 +2188,21 @@ bool AfterLoadGame() } /* Reserve all tracks trains are currently on. */ - if (IsSavegameVersionBefore(101)) { + if (IsSavegameVersionBefore(SLV_101)) { const Train *t; FOR_ALL_TRAINS(t) { if (t->First() == t) t->ReserveTrackUnderConsist(); } } - if (IsSavegameVersionBefore(102)) { + if (IsSavegameVersionBefore(SLV_102)) { for (TileIndex t = 0; t < map_size; t++) { /* Now all crossings should be in correct state */ if (IsLevelCrossingTile(t)) UpdateLevelCrossing(t, false); } } - if (IsSavegameVersionBefore(103)) { + if (IsSavegameVersionBefore(SLV_103)) { /* Non-town-owned roads now store the closest town */ UpdateNearestTownForRoadTiles(false); @@ -2220,7 +2220,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(104)) { + if (IsSavegameVersionBefore(SLV_104)) { Aircraft *a; FOR_ALL_AIRCRAFT(a) { /* Set engine_type of shadow and rotor */ @@ -2247,7 +2247,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(112)) { + if (IsSavegameVersionBefore(SLV_112)) { for (TileIndex t = 0; t < map_size; t++) { /* Check for HQ bit being set, instead of using map accessor, * since we've already changed it code-wise */ @@ -2259,7 +2259,7 @@ bool AfterLoadGame() } } } - if (IsSavegameVersionBefore(144)) { + if (IsSavegameVersionBefore(SLV_144)) { for (TileIndex t = 0; t < map_size; t++) { if (!IsTileType(t, MP_OBJECT)) continue; @@ -2274,7 +2274,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(147) && Object::GetNumItems() == 0) { + if (IsSavegameVersionBefore(SLV_147) && Object::GetNumItems() == 0) { /* Make real objects for object tiles. */ for (TileIndex t = 0; t < map_size; t++) { if (!IsTileType(t, MP_OBJECT)) continue; @@ -2318,7 +2318,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(113)) { + if (IsSavegameVersionBefore(SLV_113)) { /* allow_town_roads is added, set it if town_layout wasn't TL_NO_ROADS */ if (_settings_game.economy.town_layout == 0) { // was TL_NO_ROADS _settings_game.economy.allow_town_roads = false; @@ -2348,7 +2348,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(114)) { + if (IsSavegameVersionBefore(SLV_114)) { /* There could be (deleted) stations with invalid owner, set owner to OWNER NONE. * The conversion affects oil rigs and buoys too, but it doesn't matter as * they have st->owner == OWNER_NONE already. */ @@ -2359,14 +2359,14 @@ bool AfterLoadGame() } /* Trains could now stop in a specific location. */ - if (IsSavegameVersionBefore(117)) { + if (IsSavegameVersionBefore(SLV_117)) { Order *o; FOR_ALL_ORDERS(o) { if (o->IsType(OT_GOTO_STATION)) o->SetStopLocation(OSL_PLATFORM_FAR_END); } } - if (IsSavegameVersionBefore(120)) { + if (IsSavegameVersionBefore(SLV_120)) { extern VehicleDefaultSettings _old_vds; Company *c; FOR_ALL_COMPANIES(c) { @@ -2374,7 +2374,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(121)) { + if (IsSavegameVersionBefore(SLV_121)) { /* Delete small ufos heading for non-existing vehicles */ Vehicle *v; FOR_ALL_DISASTERVEHICLES(v) { @@ -2404,7 +2404,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(122)) { + if (IsSavegameVersionBefore(SLV_122)) { /* Animated tiles would sometimes not be actually animated or * in case of old savegames duplicate. */ @@ -2427,7 +2427,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(124) && !IsSavegameVersionBefore(1)) { + if (IsSavegameVersionBefore(SLV_124) && !IsSavegameVersionBefore(SLV_1)) { /* The train station tile area was added, but for really old (TTDPatch) it's already valid. */ Waypoint *wp; FOR_ALL_WAYPOINTS(wp) { @@ -2443,7 +2443,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(125)) { + if (IsSavegameVersionBefore(SLV_125)) { /* Convert old subsidies */ Subsidy *s; FOR_ALL_SUBSIDIES(s) { @@ -2503,7 +2503,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(126)) { + if (IsSavegameVersionBefore(SLV_126)) { /* Recompute inflation based on old unround loan limit * Note: Max loan is 500000. With an inflation of 4% across 170 years * that results in a max loan of about 0.7 * 2^31. @@ -2521,7 +2521,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(128)) { + if (IsSavegameVersionBefore(SLV_128)) { const Depot *d; FOR_ALL_DEPOTS(d) { _m[d->xy].m2 = d->index; @@ -2531,7 +2531,7 @@ bool AfterLoadGame() /* The behaviour of force_proceed has been changed. Now * it counts signals instead of some random time out. */ - if (IsSavegameVersionBefore(131)) { + if (IsSavegameVersionBefore(SLV_131)) { Train *t; FOR_ALL_TRAINS(t) { if (t->force_proceed != TFP_NONE) { @@ -2542,7 +2542,7 @@ bool AfterLoadGame() /* The bits for the tree ground and tree density have * been swapped (m2 bits 7..6 and 5..4. */ - if (IsSavegameVersionBefore(135)) { + if (IsSavegameVersionBefore(SLV_135)) { for (TileIndex t = 0; t < map_size; t++) { if (IsTileType(t, MP_CLEAR)) { if (GetRawClearGround(t) == CLEAR_SNOW) { @@ -2562,7 +2562,7 @@ bool AfterLoadGame() } /* Wait counter and load/unload ticks got split. */ - if (IsSavegameVersionBefore(136)) { + if (IsSavegameVersionBefore(SLV_136)) { Aircraft *a; FOR_ALL_AIRCRAFT(a) { a->turn_counter = a->current_order.IsType(OT_LOADING) ? 0 : a->load_unload_ticks; @@ -2575,7 +2575,7 @@ bool AfterLoadGame() } /* Airport tile animation uses animation frame instead of other graphics id */ - if (IsSavegameVersionBefore(137)) { + if (IsSavegameVersionBefore(SLV_137)) { struct AirportTileConversion { byte old_start; byte num_frames; @@ -2611,7 +2611,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(140)) { + if (IsSavegameVersionBefore(SLV_140)) { Station *st; FOR_ALL_STATIONS(st) { if (st->airport.tile != INVALID_TILE) { @@ -2621,7 +2621,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(141)) { + if (IsSavegameVersionBefore(SLV_141)) { for (TileIndex t = 0; t < map_size; t++) { /* Reset tropic zone for VOID tiles, they shall not have any. */ if (IsTileType(t, MP_VOID)) SetTropicZone(t, TROPICZONE_NORMAL); @@ -2636,7 +2636,7 @@ bool AfterLoadGame() FOR_ALL_DEPOTS(d) MakeDefaultName(d); } - if (IsSavegameVersionBefore(142)) { + if (IsSavegameVersionBefore(SLV_142)) { Depot *d; FOR_ALL_DEPOTS(d) d->build_date = _date; } @@ -2660,7 +2660,7 @@ bool AfterLoadGame() * another airport in the same station so we don't allow that anymore. * For old savegames with such aircraft we just throw them in the air and * treat the aircraft like they were flying already. */ - if (IsSavegameVersionBefore(146)) { + if (IsSavegameVersionBefore(SLV_146)) { Aircraft *v; FOR_ALL_AIRCRAFT(v) { if (!v->IsNormalAircraft()) continue; @@ -2679,7 +2679,7 @@ bool AfterLoadGame() } /* Move the animation frame to the same location (m7) for all objects. */ - if (IsSavegameVersionBefore(147)) { + if (IsSavegameVersionBefore(SLV_147)) { for (TileIndex t = 0; t < map_size; t++) { switch (GetTileType(t)) { case MP_HOUSE: @@ -2711,7 +2711,7 @@ bool AfterLoadGame() } /* Add (random) colour to all objects. */ - if (IsSavegameVersionBefore(148)) { + if (IsSavegameVersionBefore(SLV_148)) { Object *o; FOR_ALL_OBJECTS(o) { Owner owner = GetTileOwner(o->location.tile); @@ -2719,7 +2719,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(149)) { + if (IsSavegameVersionBefore(SLV_149)) { for (TileIndex t = 0; t < map_size; t++) { if (!IsTileType(t, MP_STATION)) continue; if (!IsBuoy(t) && !IsOilRig(t) && !(IsDock(t) && IsTileFlat(t))) { @@ -2741,7 +2741,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(152)) { + if (IsSavegameVersionBefore(SLV_152)) { _industry_builder.Reset(); // Initialize industry build data. /* The moment vehicles go from hidden to visible changed. This means @@ -2810,7 +2810,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(153)) { + if (IsSavegameVersionBefore(SLV_153)) { RoadVehicle *rv; FOR_ALL_ROADVEHICLES(rv) { if (rv->state == RVSB_IN_DEPOT || rv->state == RVSB_WORMHOLE) continue; @@ -2825,7 +2825,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(156)) { + if (IsSavegameVersionBefore(SLV_156)) { /* The train's pathfinder lost flag got moved. */ Train *t; FOR_ALL_TRAINS(t) { @@ -2843,7 +2843,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(158)) { + if (IsSavegameVersionBefore(SLV_158)) { Vehicle *v; FOR_ALL_VEHICLES(v) { switch (v->type) { @@ -2940,14 +2940,14 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(159)) { + if (IsSavegameVersionBefore(SLV_159)) { /* If the savegame is old (before version 100), then the value of 255 * for these settings did not mean "disabled". As such everything * before then did reverse. * To simplify stuff we disable all turning around or we do not * disable anything at all. So, if some reversing was disabled we * will keep reversing disabled, otherwise it'll be turned on. */ - _settings_game.pf.reverse_at_signals = IsSavegameVersionBefore(100) || (_settings_game.pf.wait_oneway_signal != 255 && _settings_game.pf.wait_twoway_signal != 255 && _settings_game.pf.wait_for_pbs_path != 255); + _settings_game.pf.reverse_at_signals = IsSavegameVersionBefore(SLV_100) || (_settings_game.pf.wait_oneway_signal != 255 && _settings_game.pf.wait_twoway_signal != 255 && _settings_game.pf.wait_for_pbs_path != 255); Train *t; FOR_ALL_TRAINS(t) { @@ -2955,7 +2955,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(160)) { + if (IsSavegameVersionBefore(SLV_160)) { /* Setting difficulty industry_density other than zero get bumped to +1 * since a new option (minimal at position 1) has been added */ if (_settings_game.difficulty.industry_density > 0) { @@ -2963,10 +2963,10 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(161)) { + if (IsSavegameVersionBefore(SLV_161)) { /* Before savegame version 161, persistent storages were not stored in a pool. */ - if (!IsSavegameVersionBefore(76)) { + if (!IsSavegameVersionBefore(SLV_76)) { Industry *ind; FOR_ALL_INDUSTRIES(ind) { assert(ind->psa != NULL); @@ -2989,7 +2989,7 @@ bool AfterLoadGame() } } - if (!IsSavegameVersionBefore(145)) { + if (!IsSavegameVersionBefore(SLV_145)) { Station *st; FOR_ALL_STATIONS(st) { if (!(st->facilities & FACIL_AIRPORT)) continue; @@ -3016,11 +3016,11 @@ bool AfterLoadGame() } /* This triggers only when old snow_lines were copied into the snow_line_height. */ - if (IsSavegameVersionBefore(164) && _settings_game.game_creation.snow_line_height >= MIN_SNOWLINE_HEIGHT * TILE_HEIGHT) { + if (IsSavegameVersionBefore(SLV_164) && _settings_game.game_creation.snow_line_height >= MIN_SNOWLINE_HEIGHT * TILE_HEIGHT) { _settings_game.game_creation.snow_line_height /= TILE_HEIGHT; } - if (IsSavegameVersionBefore(164) && !IsSavegameVersionBefore(32)) { + if (IsSavegameVersionBefore(SLV_164) && !IsSavegameVersionBefore(SLV_32)) { /* We store 4 fences in the field tiles instead of only SE and SW. */ for (TileIndex t = 0; t < map_size; t++) { if (!IsTileType(t, MP_CLEAR) && !IsTileType(t, MP_TREES)) continue; @@ -3039,9 +3039,9 @@ bool AfterLoadGame() } /* The center of train vehicles was changed, fix up spacing. */ - if (IsSavegameVersionBefore(164)) FixupTrainLengths(); + if (IsSavegameVersionBefore(SLV_164)) FixupTrainLengths(); - if (IsSavegameVersionBefore(165)) { + if (IsSavegameVersionBefore(SLV_165)) { Town *t; FOR_ALL_TOWNS(t) { @@ -3059,7 +3059,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(165)) { + if (IsSavegameVersionBefore(SLV_165)) { /* Adjust zoom level to account for new levels */ _saved_scrollpos_zoom = _saved_scrollpos_zoom + ZOOM_LVL_SHIFT; _saved_scrollpos_x *= ZOOM_LVL_BASE; @@ -3071,7 +3071,7 @@ bool AfterLoadGame() * which is done by StartupEngines(). */ if (gcf_res != GLC_ALL_GOOD) StartupEngines(); - if (IsSavegameVersionBefore(166)) { + if (IsSavegameVersionBefore(SLV_166)) { /* Update cargo acceptance map of towns. */ for (TileIndex t = 0; t < map_size; t++) { if (!IsTileType(t, MP_HOUSE)) continue; @@ -3147,7 +3147,7 @@ bool AfterLoadGame() } /* The road owner of standard road stops was not properly accounted for. */ - if (IsSavegameVersionBefore(172)) { + if (IsSavegameVersionBefore(SLV_172)) { for (TileIndex t = 0; t < map_size; t++) { if (!IsStandardRoadStopTile(t)) continue; Owner o = GetTileOwner(t); @@ -3156,13 +3156,13 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(175)) { + if (IsSavegameVersionBefore(SLV_175)) { /* Introduced tree planting limit. */ Company *c; FOR_ALL_COMPANIES(c) c->tree_limit = _settings_game.construction.tree_frame_burst << 16; } - if (IsSavegameVersionBefore(177)) { + if (IsSavegameVersionBefore(SLV_177)) { /* Fix too high inflation rates */ if (_economy.inflation_prices > MAX_INFLATION) _economy.inflation_prices = MAX_INFLATION; if (_economy.inflation_payment > MAX_INFLATION) _economy.inflation_payment = MAX_INFLATION; @@ -3173,13 +3173,13 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(178)) { + if (IsSavegameVersionBefore(SLV_178)) { extern uint8 _old_diff_level; /* Initialise script settings profile */ _settings_game.script.settings_profile = IsInsideMM(_old_diff_level, SP_BEGIN, SP_END) ? _old_diff_level : (uint)SP_MEDIUM; } - if (IsSavegameVersionBefore(182)) { + if (IsSavegameVersionBefore(SLV_182)) { Aircraft *v; /* Aircraft acceleration variable was bonkers */ FOR_ALL_AIRCRAFT(v) { @@ -3198,7 +3198,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(184)) { + if (IsSavegameVersionBefore(SLV_184)) { /* The global units configuration is split up in multiple configurations. */ extern uint8 _old_units; _settings_game.locale.units_velocity = Clamp(_old_units, 0, 2); @@ -3209,7 +3209,7 @@ bool AfterLoadGame() _settings_game.locale.units_height = Clamp(_old_units, 0, 2); } - if (IsSavegameVersionBefore(186)) { + if (IsSavegameVersionBefore(SLV_186)) { /* Move ObjectType from map to pool */ for (TileIndex t = 0; t < map_size; t++) { if (IsTileType(t, MP_OBJECT)) { @@ -3229,7 +3229,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(188)) { + if (IsSavegameVersionBefore(SLV_188)) { /* Fix articulated road vehicles. * Some curves were shorter than other curves. * Now they have the same length, but that means that trailing articulated parts will @@ -3299,9 +3299,9 @@ bool AfterLoadGame() * Only keep order-backups for network clients (and when replaying). * If we are a network server or not networking, then we just loaded a previously * saved-by-server savegame. There are no clients with a backup, so clear it. - * Furthermore before savegame version 192 the actual content was always corrupt. + * Furthermore before savegame version SLV_192 the actual content was always corrupt. */ - if (!_networking || _network_server || IsSavegameVersionBefore(192)) { + if (!_networking || _network_server || IsSavegameVersionBefore(SLV_192)) { #ifndef DEBUG_DUMP_COMMANDS /* Note: We cannot use CleanPool since that skips part of the destructor * and then leaks un-reachable Orders in the order pool. */ @@ -3312,7 +3312,7 @@ bool AfterLoadGame() #endif } - if (IsSavegameVersionBefore(198)) { + if (IsSavegameVersionBefore(SLV_198)) { /* Convert towns growth_rate and grow_counter to ticks */ Town *t; FOR_ALL_TOWNS(t) { @@ -3326,7 +3326,7 @@ bool AfterLoadGame() } } - if (IsSavegameVersionBefore(202)) { + if (IsSavegameVersionBefore(SLV_EXTEND_INDUSTRY_CARGO_SLOTS)) { /* Make sure added industry cargo slots are cleared */ Industry *i; FOR_ALL_INDUSTRIES(i) { @@ -3495,7 +3495,7 @@ bool AfterLoadGame() } /* Station acceptance is some kind of cache */ - if (IsSavegameVersionBefore(127)) { + if (IsSavegameVersionBefore(SLV_127)) { Station *st; FOR_ALL_STATIONS(st) UpdateStationAcceptance(st, false); } diff --git a/src/saveload/ai_sl.cpp b/src/saveload/ai_sl.cpp index e8b5339c0d..2492bb666a 100644 --- a/src/saveload/ai_sl.cpp +++ b/src/saveload/ai_sl.cpp @@ -30,8 +30,8 @@ static bool _ai_saveload_is_random; static const SaveLoad _ai_company[] = { SLEG_STR(_ai_saveload_name, SLE_STRB), SLEG_STR(_ai_saveload_settings, SLE_STRB), - SLEG_CONDVAR(_ai_saveload_version, SLE_UINT32, 108, SL_MAX_VERSION), - SLEG_CONDVAR(_ai_saveload_is_random, SLE_BOOL, 136, SL_MAX_VERSION), + SLEG_CONDVAR(_ai_saveload_version, SLE_UINT32, SLV_108, SL_MAX_VERSION), + SLEG_CONDVAR(_ai_saveload_is_random, SLE_BOOL, SLV_136, SL_MAX_VERSION), SLE_END() }; diff --git a/src/saveload/animated_tile_sl.cpp b/src/saveload/animated_tile_sl.cpp index 2152c42e34..c54c4724ab 100644 --- a/src/saveload/animated_tile_sl.cpp +++ b/src/saveload/animated_tile_sl.cpp @@ -35,10 +35,10 @@ static void Save_ANIT() static void Load_ANIT() { /* Before version 80 we did NOT have a variable length animated tile table */ - if (IsSavegameVersionBefore(80)) { + if (IsSavegameVersionBefore(SLV_80)) { /* In pre version 6, we has 16bit per tile, now we have 32bit per tile, convert it ;) */ TileIndex anim_list[256]; - SlArray(anim_list, 256, IsSavegameVersionBefore(6) ? (SLE_FILE_U16 | SLE_VAR_U32) : SLE_UINT32); + SlArray(anim_list, 256, IsSavegameVersionBefore(SLV_6) ? (SLE_FILE_U16 | SLE_VAR_U32) : SLE_UINT32); for (int i = 0; i < 256; i++) { if (anim_list[i] == 0) break; diff --git a/src/saveload/autoreplace_sl.cpp b/src/saveload/autoreplace_sl.cpp index 99e945503d..1798df1ada 100644 --- a/src/saveload/autoreplace_sl.cpp +++ b/src/saveload/autoreplace_sl.cpp @@ -21,8 +21,8 @@ static const SaveLoad _engine_renew_desc[] = { SLE_VAR(EngineRenew, to, SLE_UINT16), SLE_REF(EngineRenew, next, REF_ENGINE_RENEWS), - SLE_CONDVAR(EngineRenew, group_id, SLE_UINT16, 60, SL_MAX_VERSION), - SLE_CONDVAR(EngineRenew, replace_when_old, SLE_BOOL, 175, SL_MAX_VERSION), + SLE_CONDVAR(EngineRenew, group_id, SLE_UINT16, SLV_60, SL_MAX_VERSION), + SLE_CONDVAR(EngineRenew, replace_when_old, SLE_BOOL, SLV_175, SL_MAX_VERSION), SLE_END() }; @@ -45,9 +45,9 @@ static void Load_ERNW() SlObject(er, _engine_renew_desc); /* Advanced vehicle lists, ungrouped vehicles got added */ - if (IsSavegameVersionBefore(60)) { + if (IsSavegameVersionBefore(SLV_60)) { er->group_id = ALL_GROUP; - } else if (IsSavegameVersionBefore(71)) { + } else if (IsSavegameVersionBefore(SLV_71)) { if (er->group_id == DEFAULT_GROUP) er->group_id = ALL_GROUP; } } diff --git a/src/saveload/cargopacket_sl.cpp b/src/saveload/cargopacket_sl.cpp index 9f5ba6d260..40d5478e7d 100644 --- a/src/saveload/cargopacket_sl.cpp +++ b/src/saveload/cargopacket_sl.cpp @@ -25,7 +25,7 @@ extern btree::btree_map _cargo_packet_deferred_payments; */ /* static */ void CargoPacket::AfterLoad() { - if (IsSavegameVersionBefore(44)) { + if (IsSavegameVersionBefore(SLV_44)) { Vehicle *v; /* If we remove a station while cargo from it is still en route, payment calculation will assume * 0, 0 to be the source of the cargo, resulting in very high payments usually. v->source_xy @@ -62,7 +62,7 @@ extern btree::btree_map _cargo_packet_deferred_payments; } } - if (IsSavegameVersionBefore(120)) { + if (IsSavegameVersionBefore(SLV_120)) { /* CargoPacket's source should be either INVALID_STATION or a valid station */ CargoPacket *cp; FOR_ALL_CARGOPACKETS(cp) { @@ -70,7 +70,7 @@ extern btree::btree_map _cargo_packet_deferred_payments; } } - if (!IsSavegameVersionBefore(68)) { + if (!IsSavegameVersionBefore(SLV_68)) { /* Only since version 68 we have cargo packets. Savegames from before used * 'new CargoPacket' + cargolist.Append so their caches are already * correct and do not need rebuilding. */ @@ -83,7 +83,7 @@ extern btree::btree_map _cargo_packet_deferred_payments; } } - if (IsSavegameVersionBefore(181)) { + if (IsSavegameVersionBefore(SLV_181)) { Vehicle *v; FOR_ALL_VEHICLES(v) v->cargo.KeepAll(); } @@ -103,11 +103,11 @@ const SaveLoad *GetCargoPacketDesc() SLE_VAR(CargoPacket, count, SLE_UINT16), SLE_VAR(CargoPacket, days_in_transit, SLE_UINT8), SLE_VAR(CargoPacket, feeder_share, SLE_INT64), - SLE_CONDVAR(CargoPacket, source_type, SLE_UINT8, 125, SL_MAX_VERSION), - SLE_CONDVAR(CargoPacket, source_id, SLE_UINT16, 125, SL_MAX_VERSION), + SLE_CONDVAR(CargoPacket, source_type, SLE_UINT8, SLV_125, SL_MAX_VERSION), + SLE_CONDVAR(CargoPacket, source_id, SLE_UINT16, SLV_125, SL_MAX_VERSION), /* Used to be paid_for, but that got changed. */ - SLE_CONDNULL(1, 0, 120), + SLE_CONDNULL(1, SL_MIN_VERSION, SLV_121), SLE_END() }; diff --git a/src/saveload/company_sl.cpp b/src/saveload/company_sl.cpp index 3ac55065ab..32398ac169 100644 --- a/src/saveload/company_sl.cpp +++ b/src/saveload/company_sl.cpp @@ -241,120 +241,120 @@ void AfterLoadCompanyStats() static const SaveLoad _company_desc[] = { SLE_VAR(CompanyProperties, name_2, SLE_UINT32), SLE_VAR(CompanyProperties, name_1, SLE_STRINGID), - SLE_CONDSTR(CompanyProperties, name, SLE_STR | SLF_ALLOW_CONTROL, 0, 84, SL_MAX_VERSION), + SLE_CONDSTR(CompanyProperties, name, SLE_STR | SLF_ALLOW_CONTROL, 0, SLV_84, SL_MAX_VERSION), SLE_VAR(CompanyProperties, president_name_1, SLE_STRINGID), SLE_VAR(CompanyProperties, president_name_2, SLE_UINT32), - SLE_CONDSTR(CompanyProperties, president_name, SLE_STR | SLF_ALLOW_CONTROL, 0, 84, SL_MAX_VERSION), + SLE_CONDSTR(CompanyProperties, president_name, SLE_STR | SLF_ALLOW_CONTROL, 0, SLV_84, SL_MAX_VERSION), SLE_VAR(CompanyProperties, face, SLE_UINT32), /* money was changed to a 64 bit field in savegame version 1. */ - SLE_CONDVAR(CompanyProperties, money, SLE_VAR_I64 | SLE_FILE_I32, 0, 0), - SLE_CONDVAR(CompanyProperties, money, SLE_INT64, 1, SL_MAX_VERSION), + SLE_CONDVAR(CompanyProperties, money, SLE_VAR_I64 | SLE_FILE_I32, SL_MIN_VERSION, SLV_1), + SLE_CONDVAR(CompanyProperties, money, SLE_INT64, SLV_1, SL_MAX_VERSION), - SLE_CONDVAR(CompanyProperties, current_loan, SLE_VAR_I64 | SLE_FILE_I32, 0, 64), - SLE_CONDVAR(CompanyProperties, current_loan, SLE_INT64, 65, SL_MAX_VERSION), + SLE_CONDVAR(CompanyProperties, current_loan, SLE_VAR_I64 | SLE_FILE_I32, SL_MIN_VERSION, SLV_65), + SLE_CONDVAR(CompanyProperties, current_loan, SLE_INT64, SLV_65, SL_MAX_VERSION), SLE_VAR(CompanyProperties, colour, SLE_UINT8), SLE_VAR(CompanyProperties, money_fraction, SLE_UINT8), - SLE_CONDNULL(1, 0, 57), ///< avail_railtypes + SLE_CONDNULL(1, SL_MIN_VERSION, SLV_58), ///< avail_railtypes SLE_VAR(CompanyProperties, block_preview, SLE_UINT8), - SLE_CONDNULL(2, 0, 93), ///< cargo_types - SLE_CONDNULL(4, 94, 169), ///< cargo_types - SLE_CONDVAR(CompanyProperties, location_of_HQ, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), - SLE_CONDVAR(CompanyProperties, location_of_HQ, SLE_UINT32, 6, SL_MAX_VERSION), - SLE_CONDVAR(CompanyProperties, last_build_coordinate, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), - SLE_CONDVAR(CompanyProperties, last_build_coordinate, SLE_UINT32, 6, SL_MAX_VERSION), - SLE_CONDVAR(CompanyProperties, inaugurated_year, SLE_FILE_U8 | SLE_VAR_I32, 0, 30), - SLE_CONDVAR(CompanyProperties, inaugurated_year, SLE_INT32, 31, SL_MAX_VERSION), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_94), ///< cargo_types + SLE_CONDNULL(4, SLV_94, SLV_170), ///< cargo_types + SLE_CONDVAR(CompanyProperties, location_of_HQ, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(CompanyProperties, location_of_HQ, SLE_UINT32, SLV_6, SL_MAX_VERSION), + SLE_CONDVAR(CompanyProperties, last_build_coordinate, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(CompanyProperties, last_build_coordinate, SLE_UINT32, SLV_6, SL_MAX_VERSION), + SLE_CONDVAR(CompanyProperties, inaugurated_year, SLE_FILE_U8 | SLE_VAR_I32, SL_MIN_VERSION, SLV_31), + SLE_CONDVAR(CompanyProperties, inaugurated_year, SLE_INT32, SLV_31, SL_MAX_VERSION), SLE_ARR(CompanyProperties, share_owners, SLE_UINT8, 4), SLE_VAR(CompanyProperties, num_valid_stat_ent, SLE_UINT8), SLE_VAR(CompanyProperties, months_of_bankruptcy, SLE_UINT8), - SLE_CONDVAR(CompanyProperties, bankrupt_asked, SLE_FILE_U8 | SLE_VAR_U16, 0, 103), - SLE_CONDVAR(CompanyProperties, bankrupt_asked, SLE_UINT16, 104, SL_MAX_VERSION), + SLE_CONDVAR(CompanyProperties, bankrupt_asked, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_104), + SLE_CONDVAR(CompanyProperties, bankrupt_asked, SLE_UINT16, SLV_104, SL_MAX_VERSION), SLE_VAR(CompanyProperties, bankrupt_timeout, SLE_INT16), - SLE_CONDVAR(CompanyProperties, bankrupt_value, SLE_VAR_I64 | SLE_FILE_I32, 0, 64), - SLE_CONDVAR(CompanyProperties, bankrupt_value, SLE_INT64, 65, SL_MAX_VERSION), + SLE_CONDVAR(CompanyProperties, bankrupt_value, SLE_VAR_I64 | SLE_FILE_I32, SL_MIN_VERSION, SLV_65), + SLE_CONDVAR(CompanyProperties, bankrupt_value, SLE_INT64, SLV_65, SL_MAX_VERSION), /* yearly expenses was changed to 64-bit in savegame version 2. */ - SLE_CONDARR(CompanyProperties, yearly_expenses, SLE_FILE_I32 | SLE_VAR_I64, 3 * 13, 0, 1), - SLE_CONDARR_X(CompanyProperties, yearly_expenses, SLE_INT64, 3 * 13, 2, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_INFRA_SHARING, 0, 0)), - SLE_CONDARR_X(CompanyProperties, yearly_expenses, SLE_INT64, 3 * 15, 2, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_INFRA_SHARING)), + SLE_CONDARR(CompanyProperties, yearly_expenses, SLE_FILE_I32 | SLE_VAR_I64, 3 * 13, SL_MIN_VERSION, SLV_2), + SLE_CONDARR_X(CompanyProperties, yearly_expenses, SLE_INT64, 3 * 13, SLV_2, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_INFRA_SHARING, 0, 0)), + SLE_CONDARR_X(CompanyProperties, yearly_expenses, SLE_INT64, 3 * 15, SLV_2, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_INFRA_SHARING)), - SLE_CONDVAR(CompanyProperties, is_ai, SLE_BOOL, 2, SL_MAX_VERSION), - SLE_CONDNULL(1, 107, 111), ///< is_noai - SLE_CONDNULL(1, 4, 99), + SLE_CONDVAR(CompanyProperties, is_ai, SLE_BOOL, SLV_2, SL_MAX_VERSION), + SLE_CONDNULL(1, SLV_107, SLV_112), ///< is_noai + SLE_CONDNULL(1, SLV_4, SLV_100), - SLE_CONDVAR(CompanyProperties, terraform_limit, SLE_UINT32, 156, SL_MAX_VERSION), - SLE_CONDVAR(CompanyProperties, clear_limit, SLE_UINT32, 156, SL_MAX_VERSION), - SLE_CONDVAR(CompanyProperties, tree_limit, SLE_UINT32, 175, SL_MAX_VERSION), - SLE_CONDVAR_X(CompanyProperties, purchase_land_limit, SLE_UINT32, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_BUY_LAND_RATE_LIMIT)), + SLE_CONDVAR(CompanyProperties, terraform_limit, SLE_UINT32, SLV_156, SL_MAX_VERSION), + SLE_CONDVAR(CompanyProperties, clear_limit, SLE_UINT32, SLV_156, SL_MAX_VERSION), + SLE_CONDVAR(CompanyProperties, tree_limit, SLE_UINT32, SLV_175, SL_MAX_VERSION), + SLE_CONDVAR_X(CompanyProperties, purchase_land_limit, SLE_UINT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_BUY_LAND_RATE_LIMIT)), SLE_END() }; static const SaveLoad _company_settings_desc[] = { /* Engine renewal settings */ - SLE_CONDNULL(512, 16, 18), - SLE_CONDREF(Company, engine_renew_list, REF_ENGINE_RENEWS, 19, SL_MAX_VERSION), - SLE_CONDVAR(Company, settings.engine_renew, SLE_BOOL, 16, SL_MAX_VERSION), - SLE_CONDVAR(Company, settings.engine_renew_months, SLE_INT16, 16, SL_MAX_VERSION), - SLE_CONDVAR(Company, settings.engine_renew_money, SLE_UINT32, 16, SL_MAX_VERSION), - SLE_CONDVAR(Company, settings.renew_keep_length, SLE_BOOL, 2, SL_MAX_VERSION), + SLE_CONDNULL(512, SLV_16, SLV_19), + SLE_CONDREF(Company, engine_renew_list, REF_ENGINE_RENEWS, SLV_19, SL_MAX_VERSION), + SLE_CONDVAR(Company, settings.engine_renew, SLE_BOOL, SLV_16, SL_MAX_VERSION), + SLE_CONDVAR(Company, settings.engine_renew_months, SLE_INT16, SLV_16, SL_MAX_VERSION), + SLE_CONDVAR(Company, settings.engine_renew_money, SLE_UINT32, SLV_16, SL_MAX_VERSION), + SLE_CONDVAR(Company, settings.renew_keep_length, SLE_BOOL, SLV_2, SL_MAX_VERSION), /* Default vehicle settings */ - SLE_CONDVAR(Company, settings.vehicle.servint_ispercent, SLE_BOOL, 120, SL_MAX_VERSION), - SLE_CONDVAR(Company, settings.vehicle.servint_trains, SLE_UINT16, 120, SL_MAX_VERSION), - SLE_CONDVAR(Company, settings.vehicle.servint_roadveh, SLE_UINT16, 120, SL_MAX_VERSION), - SLE_CONDVAR(Company, settings.vehicle.servint_aircraft, SLE_UINT16, 120, SL_MAX_VERSION), - SLE_CONDVAR(Company, settings.vehicle.servint_ships, SLE_UINT16, 120, SL_MAX_VERSION), - SLE_CONDVAR_X(Company, settings.vehicle.auto_timetable_by_default, SLE_BOOL, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_AUTO_TIMETABLE, 2, 2)), + SLE_CONDVAR(Company, settings.vehicle.servint_ispercent, SLE_BOOL, SLV_120, SL_MAX_VERSION), + SLE_CONDVAR(Company, settings.vehicle.servint_trains, SLE_UINT16, SLV_120, SL_MAX_VERSION), + SLE_CONDVAR(Company, settings.vehicle.servint_roadveh, SLE_UINT16, SLV_120, SL_MAX_VERSION), + SLE_CONDVAR(Company, settings.vehicle.servint_aircraft, SLE_UINT16, SLV_120, SL_MAX_VERSION), + SLE_CONDVAR(Company, settings.vehicle.servint_ships, SLE_UINT16, SLV_120, SL_MAX_VERSION), + SLE_CONDVAR_X(Company, settings.vehicle.auto_timetable_by_default, SLE_BOOL, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_AUTO_TIMETABLE, 2, 2)), - SLE_CONDNULL(63, 2, 143), // old reserved space + SLE_CONDNULL(63, SLV_2, SLV_144), // old reserved space SLE_END() }; static const SaveLoad _company_settings_skip_desc[] = { /* Engine renewal settings */ - SLE_CONDNULL(512, 16, 18), - SLE_CONDNULL(2, 19, 68), // engine_renew_list - SLE_CONDNULL(4, 69, SL_MAX_VERSION), // engine_renew_list - SLE_CONDNULL(1, 16, SL_MAX_VERSION), // settings.engine_renew - SLE_CONDNULL(2, 16, SL_MAX_VERSION), // settings.engine_renew_months - SLE_CONDNULL(4, 16, SL_MAX_VERSION), // settings.engine_renew_money - SLE_CONDNULL(1, 2, SL_MAX_VERSION), // settings.renew_keep_length + SLE_CONDNULL(512, SLV_16, SLV_19), + SLE_CONDNULL(2, SLV_19, SLV_69), // engine_renew_list + SLE_CONDNULL(4, SLV_69, SL_MAX_VERSION), // engine_renew_list + SLE_CONDNULL(1, SLV_16, SL_MAX_VERSION), // settings.engine_renew + SLE_CONDNULL(2, SLV_16, SL_MAX_VERSION), // settings.engine_renew_months + SLE_CONDNULL(4, SLV_16, SL_MAX_VERSION), // settings.engine_renew_money + SLE_CONDNULL(1, SLV_2, SL_MAX_VERSION), // settings.renew_keep_length /* Default vehicle settings */ - SLE_CONDNULL(1, 120, SL_MAX_VERSION), // settings.vehicle.servint_ispercent - SLE_CONDNULL(2, 120, SL_MAX_VERSION), // settings.vehicle.servint_trains - SLE_CONDNULL(2, 120, SL_MAX_VERSION), // settings.vehicle.servint_roadveh - SLE_CONDNULL(2, 120, SL_MAX_VERSION), // settings.vehicle.servint_aircraft - SLE_CONDNULL(2, 120, SL_MAX_VERSION), // settings.vehicle.servint_ships - SLE_CONDNULL_X(1, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_AUTO_TIMETABLE, 2, 2)), // settings.vehicle.auto_timetable_by_default + SLE_CONDNULL(1, SLV_120, SL_MAX_VERSION), // settings.vehicle.servint_ispercent + SLE_CONDNULL(2, SLV_120, SL_MAX_VERSION), // settings.vehicle.servint_trains + SLE_CONDNULL(2, SLV_120, SL_MAX_VERSION), // settings.vehicle.servint_roadveh + SLE_CONDNULL(2, SLV_120, SL_MAX_VERSION), // settings.vehicle.servint_aircraft + SLE_CONDNULL(2, SLV_120, SL_MAX_VERSION), // settings.vehicle.servint_ships + SLE_CONDNULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_AUTO_TIMETABLE, 2, 2)), // settings.vehicle.auto_timetable_by_default - SLE_CONDNULL(63, 2, 143), // old reserved space + SLE_CONDNULL(63, SLV_2, SLV_144), // old reserved space SLE_END() }; static const SaveLoad _company_economy_desc[] = { /* these were changed to 64-bit in savegame format 2 */ - SLE_CONDVAR(CompanyEconomyEntry, income, SLE_FILE_I32 | SLE_VAR_I64, 0, 1), - SLE_CONDVAR(CompanyEconomyEntry, income, SLE_INT64, 2, SL_MAX_VERSION), - SLE_CONDVAR(CompanyEconomyEntry, expenses, SLE_FILE_I32 | SLE_VAR_I64, 0, 1), - SLE_CONDVAR(CompanyEconomyEntry, expenses, SLE_INT64, 2, SL_MAX_VERSION), - SLE_CONDVAR(CompanyEconomyEntry, company_value, SLE_FILE_I32 | SLE_VAR_I64, 0, 1), - SLE_CONDVAR(CompanyEconomyEntry, company_value, SLE_INT64, 2, SL_MAX_VERSION), + SLE_CONDVAR(CompanyEconomyEntry, income, SLE_FILE_I32 | SLE_VAR_I64, SL_MIN_VERSION, SLV_2), + SLE_CONDVAR(CompanyEconomyEntry, income, SLE_INT64, SLV_2, SL_MAX_VERSION), + SLE_CONDVAR(CompanyEconomyEntry, expenses, SLE_FILE_I32 | SLE_VAR_I64, SL_MIN_VERSION, SLV_2), + SLE_CONDVAR(CompanyEconomyEntry, expenses, SLE_INT64, SLV_2, SL_MAX_VERSION), + SLE_CONDVAR(CompanyEconomyEntry, company_value, SLE_FILE_I32 | SLE_VAR_I64, SL_MIN_VERSION, SLV_2), + SLE_CONDVAR(CompanyEconomyEntry, company_value, SLE_INT64, SLV_2, SL_MAX_VERSION), - SLE_CONDVAR(CompanyEconomyEntry, delivered_cargo[NUM_CARGO - 1], SLE_INT32, 0, 169), - SLE_CONDARR(CompanyEconomyEntry, delivered_cargo, SLE_UINT32, 32, 170, 198), - SLE_CONDARR(CompanyEconomyEntry, delivered_cargo, SLE_UINT32, NUM_CARGO, 199, SL_MAX_VERSION), + SLE_CONDVAR(CompanyEconomyEntry, delivered_cargo[NUM_CARGO - 1], SLE_INT32, SL_MIN_VERSION, SLV_170), + SLE_CONDARR(CompanyEconomyEntry, delivered_cargo, SLE_UINT32, 32, SLV_170, SLV_EXTEND_CARGOTYPES), + SLE_CONDARR(CompanyEconomyEntry, delivered_cargo, SLE_UINT32, NUM_CARGO, SLV_EXTEND_CARGOTYPES, SL_MAX_VERSION), SLE_VAR(CompanyEconomyEntry, performance_history, SLE_INT32), SLE_END() @@ -366,49 +366,49 @@ struct CompanyOldAI { }; static const SaveLoad _company_ai_desc[] = { - SLE_CONDNULL(2, 0, 106), - SLE_CONDNULL(2, 0, 12), - SLE_CONDNULL(4, 13, 106), - SLE_CONDNULL(8, 0, 106), - SLE_CONDVAR(CompanyOldAI, num_build_rec, SLE_UINT8, 0, 106), - SLE_CONDNULL(3, 0, 106), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_107), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_13), + SLE_CONDNULL(4, SLV_13, SLV_107), + SLE_CONDNULL(8, SL_MIN_VERSION, SLV_107), + SLE_CONDVAR(CompanyOldAI, num_build_rec, SLE_UINT8, SL_MIN_VERSION, SLV_107), + SLE_CONDNULL(3, SL_MIN_VERSION, SLV_107), - SLE_CONDNULL(2, 0, 5), - SLE_CONDNULL(4, 6, 106), - SLE_CONDNULL(2, 0, 5), - SLE_CONDNULL(4, 6, 106), - SLE_CONDNULL(2, 0, 106), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_6), + SLE_CONDNULL(4, SLV_6, SLV_107), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_6), + SLE_CONDNULL(4, SLV_6, SLV_107), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_107), - SLE_CONDNULL(2, 0, 5), - SLE_CONDNULL(4, 6, 106), - SLE_CONDNULL(2, 0, 5), - SLE_CONDNULL(4, 6, 106), - SLE_CONDNULL(2, 0, 106), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_6), + SLE_CONDNULL(4, SLV_6, SLV_107), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_6), + SLE_CONDNULL(4, SLV_6, SLV_107), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_107), - SLE_CONDNULL(2, 0, 68), - SLE_CONDNULL(4, 69, 106), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_69), + SLE_CONDNULL(4, SLV_69, SLV_107), - SLE_CONDNULL(18, 0, 106), - SLE_CONDNULL(20, 0, 106), - SLE_CONDNULL(32, 0, 106), + SLE_CONDNULL(18, SL_MIN_VERSION, SLV_107), + SLE_CONDNULL(20, SL_MIN_VERSION, SLV_107), + SLE_CONDNULL(32, SL_MIN_VERSION, SLV_107), - SLE_CONDNULL(64, 2, 106), + SLE_CONDNULL(64, SLV_2, SLV_107), SLE_END() }; static const SaveLoad _company_ai_build_rec_desc[] = { - SLE_CONDNULL(2, 0, 5), - SLE_CONDNULL(4, 6, 106), - SLE_CONDNULL(2, 0, 5), - SLE_CONDNULL(4, 6, 106), - SLE_CONDNULL(8, 0, 106), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_6), + SLE_CONDNULL(4, SLV_6, SLV_107), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_6), + SLE_CONDNULL(4, SLV_6, SLV_107), + SLE_CONDNULL(8, SL_MIN_VERSION, SLV_107), SLE_END() }; static const SaveLoad _company_livery_desc[] = { - SLE_CONDVAR(Livery, in_use, SLE_UINT8, 34, SL_MAX_VERSION), - SLE_CONDVAR(Livery, colour1, SLE_UINT8, 34, SL_MAX_VERSION), - SLE_CONDVAR(Livery, colour2, SLE_UINT8, 34, SL_MAX_VERSION), + SLE_CONDVAR(Livery, in_use, SLE_UINT8, SLV_34, SL_MAX_VERSION), + SLE_CONDVAR(Livery, colour1, SLE_UINT8, SLV_34, SL_MAX_VERSION), + SLE_CONDVAR(Livery, colour2, SLE_UINT8, SLV_34, SL_MAX_VERSION), SLE_END() }; @@ -425,7 +425,7 @@ static void SaveLoad_PLYR_common(Company *c, CompanyProperties *cprops) } /* Keep backwards compatible for savegames, so load the old AI block */ - if (IsSavegameVersionBefore(107) && cprops->is_ai) { + if (IsSavegameVersionBefore(SLV_107) && cprops->is_ai) { CompanyOldAI old_ai; char nothing; @@ -445,8 +445,8 @@ static void SaveLoad_PLYR_common(Company *c, CompanyProperties *cprops) } /* Write each livery entry. */ - int num_liveries = IsSavegameVersionBefore(63) ? LS_END - 4 : (IsSavegameVersionBefore(85) ? LS_END - 2: LS_END); - bool update_in_use = IsSavegameVersionBefore(205); + int num_liveries = IsSavegameVersionBefore(SLV_63) ? LS_END - 4 : (IsSavegameVersionBefore(SLV_85) ? LS_END - 2: LS_END); + bool update_in_use = IsSavegameVersionBefore(SLV_GROUP_LIVERIES); if (c != NULL) { for (i = 0; i < num_liveries; i++) { SlObject(&c->livery[i], _company_livery_desc); @@ -522,7 +522,7 @@ static void Check_PLYR() SaveLoad_PLYR_common(NULL, cprops); /* We do not load old custom names */ - if (IsSavegameVersionBefore(84)) { + if (IsSavegameVersionBefore(SLV_84)) { if (GetStringTab(cprops->name_1) == TEXT_TAB_OLD_CUSTOM) { cprops->name_1 = STR_GAME_SAVELOAD_NOT_AVAILABLE; } diff --git a/src/saveload/depot_sl.cpp b/src/saveload/depot_sl.cpp index 3c6be86cd3..01584b0441 100644 --- a/src/saveload/depot_sl.cpp +++ b/src/saveload/depot_sl.cpp @@ -20,14 +20,14 @@ static TownID _town_index; static const SaveLoad _depot_desc[] = { - SLE_CONDVAR(Depot, xy, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), - SLE_CONDVAR(Depot, xy, SLE_UINT32, 6, SL_MAX_VERSION), - SLEG_CONDVAR(_town_index, SLE_UINT16, 0, 140), - SLE_CONDREF(Depot, town, REF_TOWN, 141, SL_MAX_VERSION), - SLE_CONDVAR(Depot, town_cn, SLE_UINT16, 141, SL_MAX_VERSION), - SLE_CONDSTR(Depot, name, SLE_STR, 0, 141, SL_MAX_VERSION), - SLE_CONDVAR(Depot, build_date, SLE_INT32, 142, SL_MAX_VERSION), - SLE_CONDNULL_X(4, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 5)), + SLE_CONDVAR(Depot, xy, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(Depot, xy, SLE_UINT32, SLV_6, SL_MAX_VERSION), + SLEG_CONDVAR(_town_index, SLE_UINT16, SL_MIN_VERSION, SLV_141), + SLE_CONDREF(Depot, town, REF_TOWN, SLV_141, SL_MAX_VERSION), + SLE_CONDVAR(Depot, town_cn, SLE_UINT16, SLV_141, SL_MAX_VERSION), + SLE_CONDSTR(Depot, name, SLE_STR, 0, SLV_141, SL_MAX_VERSION), + SLE_CONDVAR(Depot, build_date, SLE_INT32, SLV_142, SL_MAX_VERSION), + SLE_CONDNULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 5)), SLE_END() }; @@ -50,7 +50,7 @@ static void Load_DEPT() SlObject(depot, _depot_desc); /* Set the town 'pointer' so we can restore it later. */ - if (IsSavegameVersionBefore(141)) depot->town = (Town *)(size_t)_town_index; + if (IsSavegameVersionBefore(SLV_141)) depot->town = (Town *)(size_t)_town_index; } } @@ -60,7 +60,7 @@ static void Ptrs_DEPT() FOR_ALL_DEPOTS(depot) { SlObject(depot, _depot_desc); - if (IsSavegameVersionBefore(141)) depot->town = Town::Get((size_t)depot->town); + if (IsSavegameVersionBefore(SLV_141)) depot->town = Town::Get((size_t)depot->town); } } diff --git a/src/saveload/economy_sl.cpp b/src/saveload/economy_sl.cpp index d1235f0d36..7401709147 100644 --- a/src/saveload/economy_sl.cpp +++ b/src/saveload/economy_sl.cpp @@ -21,7 +21,7 @@ static void Load_PRIC() { /* Old games store 49 base prices, very old games store them as int32 */ - int vt = IsSavegameVersionBefore(65) ? SLE_FILE_I32 : SLE_FILE_I64; + int vt = IsSavegameVersionBefore(SLV_65) ? SLE_FILE_I32 : SLE_FILE_I64; SlArray(NULL, 49, vt | SLE_VAR_NULL); SlArray(NULL, 49, SLE_FILE_U16 | SLE_VAR_NULL); } @@ -29,25 +29,25 @@ static void Load_PRIC() /** Cargo payment rates in pre 126 savegames */ static void Load_CAPR() { - uint num_cargo = IsSavegameVersionBefore(55) ? 12 : IsSavegameVersionBefore(199) ? 32 : NUM_CARGO; - int vt = IsSavegameVersionBefore(65) ? SLE_FILE_I32 : SLE_FILE_I64; + uint num_cargo = IsSavegameVersionBefore(SLV_55) ? 12 : IsSavegameVersionBefore(SLV_EXTEND_CARGOTYPES) ? 32 : NUM_CARGO; + int vt = IsSavegameVersionBefore(SLV_65) ? SLE_FILE_I32 : SLE_FILE_I64; SlArray(NULL, num_cargo, vt | SLE_VAR_NULL); SlArray(NULL, num_cargo, SLE_FILE_U16 | SLE_VAR_NULL); } static const SaveLoad _economy_desc[] = { - SLE_CONDNULL(4, 0, 64), // max_loan - SLE_CONDNULL(8, 65, 143), // max_loan - SLE_CONDVAR(Economy, old_max_loan_unround, SLE_FILE_I32 | SLE_VAR_I64, 0, 64), - SLE_CONDVAR(Economy, old_max_loan_unround, SLE_INT64, 65, 125), - SLE_CONDVAR(Economy, old_max_loan_unround_fract, SLE_UINT16, 70, 125), - SLE_CONDVAR(Economy, inflation_prices, SLE_UINT64, 126, SL_MAX_VERSION), - SLE_CONDVAR(Economy, inflation_payment, SLE_UINT64, 126, SL_MAX_VERSION), + SLE_CONDNULL(4, SL_MIN_VERSION, SLV_65), // max_loan + SLE_CONDNULL(8, SLV_65, SLV_144), // max_loan + SLE_CONDVAR(Economy, old_max_loan_unround, SLE_FILE_I32 | SLE_VAR_I64, SL_MIN_VERSION, SLV_65), + SLE_CONDVAR(Economy, old_max_loan_unround, SLE_INT64, SLV_65, SLV_126), + SLE_CONDVAR(Economy, old_max_loan_unround_fract, SLE_UINT16, SLV_70, SLV_126), + SLE_CONDVAR(Economy, inflation_prices, SLE_UINT64, SLV_126, SL_MAX_VERSION), + SLE_CONDVAR(Economy, inflation_payment, SLE_UINT64, SLV_126, SL_MAX_VERSION), SLE_VAR(Economy, fluct, SLE_INT16), SLE_VAR(Economy, interest_rate, SLE_UINT8), SLE_VAR(Economy, infl_amount, SLE_UINT8), SLE_VAR(Economy, infl_amount_pr, SLE_UINT8), - SLE_CONDVAR(Economy, industry_daily_change_counter, SLE_UINT32, 102, SL_MAX_VERSION), + SLE_CONDVAR(Economy, industry_daily_change_counter, SLE_UINT32, SLV_102, SL_MAX_VERSION), SLE_END() }; @@ -61,14 +61,14 @@ static void Save_ECMY() static void Load_ECMY() { SlObject(&_economy, _economy_desc); - StartupIndustryDailyChanges(IsSavegameVersionBefore(102)); // old savegames will need to be initialized + StartupIndustryDailyChanges(IsSavegameVersionBefore(SLV_102)); // old savegames will need to be initialized } static const SaveLoad _cargopayment_desc[] = { SLE_REF(CargoPayment, front, REF_VEHICLE), SLE_VAR(CargoPayment, route_profit, SLE_INT64), SLE_VAR(CargoPayment, visual_profit, SLE_INT64), - SLE_CONDVAR(CargoPayment, visual_transfer, SLE_INT64, 181, SL_MAX_VERSION), + SLE_CONDVAR(CargoPayment, visual_transfer, SLE_INT64, SLV_181, SL_MAX_VERSION), SLE_END() }; diff --git a/src/saveload/engine_sl.cpp b/src/saveload/engine_sl.cpp index a568fead7b..5221d1bbdc 100644 --- a/src/saveload/engine_sl.cpp +++ b/src/saveload/engine_sl.cpp @@ -18,10 +18,10 @@ #include "../safeguards.h" static const SaveLoad _engine_desc[] = { - SLE_CONDVAR(Engine, intro_date, SLE_FILE_U16 | SLE_VAR_I32, 0, 30), - SLE_CONDVAR(Engine, intro_date, SLE_INT32, 31, SL_MAX_VERSION), - SLE_CONDVAR(Engine, age, SLE_FILE_U16 | SLE_VAR_I32, 0, 30), - SLE_CONDVAR(Engine, age, SLE_INT32, 31, SL_MAX_VERSION), + SLE_CONDVAR(Engine, intro_date, SLE_FILE_U16 | SLE_VAR_I32, SL_MIN_VERSION, SLV_31), + SLE_CONDVAR(Engine, intro_date, SLE_INT32, SLV_31, SL_MAX_VERSION), + SLE_CONDVAR(Engine, age, SLE_FILE_U16 | SLE_VAR_I32, SL_MIN_VERSION, SLV_31), + SLE_CONDVAR(Engine, age, SLE_INT32, SLV_31, SL_MAX_VERSION), SLE_VAR(Engine, reliability, SLE_UINT16), SLE_VAR(Engine, reliability_spd_dec, SLE_UINT16), SLE_VAR(Engine, reliability_start, SLE_UINT16), @@ -31,19 +31,19 @@ static const SaveLoad _engine_desc[] = { SLE_VAR(Engine, duration_phase_2, SLE_UINT16), SLE_VAR(Engine, duration_phase_3, SLE_UINT16), - SLE_CONDNULL(1, 0, 120), + SLE_CONDNULL(1, SL_MIN_VERSION, SLV_121), SLE_VAR(Engine, flags, SLE_UINT8), - SLE_CONDNULL(1, 0, 178), // old preview_company_rank - SLE_CONDVAR(Engine, preview_asked, SLE_UINT16, 179, SL_MAX_VERSION), - SLE_CONDVAR(Engine, preview_company, SLE_UINT8, 179, SL_MAX_VERSION), + SLE_CONDNULL(1, SL_MIN_VERSION, SLV_179), // old preview_company_rank + SLE_CONDVAR(Engine, preview_asked, SLE_UINT16, SLV_179, SL_MAX_VERSION), + SLE_CONDVAR(Engine, preview_company, SLE_UINT8, SLV_179, SL_MAX_VERSION), SLE_VAR(Engine, preview_wait, SLE_UINT8), - SLE_CONDNULL(1, 0, 44), - SLE_CONDVAR(Engine, company_avail, SLE_FILE_U8 | SLE_VAR_U16, 0, 103), - SLE_CONDVAR(Engine, company_avail, SLE_UINT16, 104, SL_MAX_VERSION), - SLE_CONDVAR(Engine, company_hidden, SLE_UINT16, 193, SL_MAX_VERSION), - SLE_CONDSTR(Engine, name, SLE_STR, 0, 84, SL_MAX_VERSION), + SLE_CONDNULL(1, SL_MIN_VERSION, SLV_45), + SLE_CONDVAR(Engine, company_avail, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_104), + SLE_CONDVAR(Engine, company_avail, SLE_UINT16, SLV_104, SL_MAX_VERSION), + SLE_CONDVAR(Engine, company_hidden, SLE_UINT16, SLV_193, SL_MAX_VERSION), + SLE_CONDSTR(Engine, name, SLE_STR, 0, SLV_84, SL_MAX_VERSION), - SLE_CONDNULL(16, 2, 143), // old reserved space + SLE_CONDNULL(16, SLV_2, SLV_144), // old reserved space SLE_END() }; @@ -105,7 +105,7 @@ static void Load_ENGN() Engine *e = GetTempDataEngine(index); SlObject(e, _engine_desc); - if (IsSavegameVersionBefore(179)) { + if (IsSavegameVersionBefore(SLV_179)) { /* preview_company_rank was replaced with preview_company and preview_asked. * Just cancel any previews. */ e->flags &= ~4; // ENGINE_OFFER_WINDOW_OPEN diff --git a/src/saveload/extended_ver_sl.cpp b/src/saveload/extended_ver_sl.cpp index 41c8d5fed6..922e3b7301 100644 --- a/src/saveload/extended_ver_sl.cpp +++ b/src/saveload/extended_ver_sl.cpp @@ -114,9 +114,9 @@ const SlxiSubChunkInfo _sl_xv_sub_chunk_infos[] = { * and return the combination of the two tests using the operator defined in the constructor. * Otherwise just returns the result of the savegame version test */ -bool SlXvFeatureTest::IsFeaturePresent(uint16 savegame_version, uint16 savegame_version_from, uint16 savegame_version_to) const +bool SlXvFeatureTest::IsFeaturePresent(SaveLoadVersion savegame_version, SaveLoadVersion savegame_version_from, SaveLoadVersion savegame_version_to) const { - bool savegame_version_ok = savegame_version >= savegame_version_from && savegame_version <= savegame_version_to; + bool savegame_version_ok = savegame_version >= savegame_version_from && savegame_version < savegame_version_to; if (this->functor) return (*this->functor)(savegame_version, savegame_version_ok); diff --git a/src/saveload/extended_ver_sl.h b/src/saveload/extended_ver_sl.h index 6ed72facd6..749337c5c1 100644 --- a/src/saveload/extended_ver_sl.h +++ b/src/saveload/extended_ver_sl.h @@ -16,6 +16,8 @@ #include +enum SaveLoadVersion : uint16; + /** * List of extended features, each feature has its own (16 bit) version */ @@ -112,7 +114,7 @@ struct SlXvFeatureTest { SlXvFeatureTest(TestFunctorPtr functor_) : min_version(0), max_version(0), feature(XSLFI_NULL), op(XSLFTO_OR), functor(functor_) { } - bool IsFeaturePresent(uint16 savegame_version, uint16 savegame_version_from, uint16 savegame_version_to) const; + bool IsFeaturePresent(SaveLoadVersion savegame_version, SaveLoadVersion savegame_version_from, SaveLoadVersion savegame_version_to) const; }; bool SlXvIsFeaturePresent(SlXvFeatureIndex feature, uint16 min_version = 1, uint16 max_version = 0xFFFF); diff --git a/src/saveload/gamelog_sl.cpp b/src/saveload/gamelog_sl.cpp index 1810c39fa2..249395fe20 100644 --- a/src/saveload/gamelog_sl.cpp +++ b/src/saveload/gamelog_sl.cpp @@ -28,11 +28,11 @@ static const SaveLoad _glog_mode_desc[] = { SLE_END() }; -static char old_revision_text[NETWORK_REVISION_LENGTH]; +static char old_revision_text[GAMELOG_REVISION_LENGTH]; static const SaveLoad _glog_revision_desc[] = { - SLEG_CONDARR_X(old_revision_text, SLE_UINT8, NETWORK_REVISION_LENGTH, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_EXTENDED_GAMELOG, 0, 0)), - SLE_CONDSTR_X(LoggedChange, revision.text, SLE_STR, 0, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_EXTENDED_GAMELOG)), + SLEG_CONDARR_X(old_revision_text, SLE_UINT8, GAMELOG_REVISION_LENGTH, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_EXTENDED_GAMELOG, 0, 0)), + SLE_CONDSTR_X(LoggedChange, revision.text, SLE_STR, 0, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_EXTENDED_GAMELOG)), SLE_VAR(LoggedChange, revision.newgrf, SLE_UINT32), SLE_VAR(LoggedChange, revision.slver, SLE_UINT16), SLE_VAR(LoggedChange, revision.modified, SLE_UINT8), diff --git a/src/saveload/goal_sl.cpp b/src/saveload/goal_sl.cpp index 4d1441787d..a8cdc2305d 100644 --- a/src/saveload/goal_sl.cpp +++ b/src/saveload/goal_sl.cpp @@ -21,8 +21,8 @@ static const SaveLoad _goals_desc[] = { SLE_VAR(Goal, type, SLE_FILE_U16 | SLE_VAR_U8), SLE_VAR(Goal, dst, SLE_UINT32), SLE_STR(Goal, text, SLE_STR | SLF_ALLOW_CONTROL, 0), - SLE_CONDSTR(Goal, progress, SLE_STR | SLF_ALLOW_CONTROL, 0, 182, SL_MAX_VERSION), - SLE_CONDVAR(Goal, completed, SLE_BOOL, 182, SL_MAX_VERSION), + SLE_CONDSTR(Goal, progress, SLE_STR | SLF_ALLOW_CONTROL, 0, SLV_182, SL_MAX_VERSION), + SLE_CONDVAR(Goal, completed, SLE_BOOL, SLV_182, SL_MAX_VERSION), SLE_END() }; diff --git a/src/saveload/group_sl.cpp b/src/saveload/group_sl.cpp index 27112a5431..025c8ee3a7 100644 --- a/src/saveload/group_sl.cpp +++ b/src/saveload/group_sl.cpp @@ -18,16 +18,16 @@ #include "../safeguards.h" static const SaveLoad _group_desc[] = { - SLE_CONDVAR(Group, name, SLE_NAME, 0, 83), - SLE_CONDSTR(Group, name, SLE_STR | SLF_ALLOW_CONTROL, 0, 84, SL_MAX_VERSION), - SLE_CONDNULL(2, 0, 163), // num_vehicle + SLE_CONDVAR(Group, name, SLE_NAME, SL_MIN_VERSION, SLV_84), + SLE_CONDSTR(Group, name, SLE_STR | SLF_ALLOW_CONTROL, 0, SLV_84, SL_MAX_VERSION), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_164), // num_vehicle SLE_VAR(Group, owner, SLE_UINT8), SLE_VAR(Group, vehicle_type, SLE_UINT8), SLE_VAR(Group, replace_protection, SLE_BOOL), - SLE_CONDVAR(Group, livery.in_use, SLE_UINT8, 205, SL_MAX_VERSION), - SLE_CONDVAR(Group, livery.colour1, SLE_UINT8, 205, SL_MAX_VERSION), - SLE_CONDVAR(Group, livery.colour2, SLE_UINT8, 205, SL_MAX_VERSION), - SLE_CONDVAR(Group, parent, SLE_UINT16, 189, SL_MAX_VERSION), + SLE_CONDVAR(Group, livery.in_use, SLE_UINT8, SLV_GROUP_LIVERIES, SL_MAX_VERSION), + SLE_CONDVAR(Group, livery.colour1, SLE_UINT8, SLV_GROUP_LIVERIES, SL_MAX_VERSION), + SLE_CONDVAR(Group, livery.colour2, SLE_UINT8, SLV_GROUP_LIVERIES, SL_MAX_VERSION), + SLE_CONDVAR(Group, parent, SLE_UINT16, SLV_189, SL_MAX_VERSION), SLE_END() }; @@ -50,9 +50,9 @@ static void Load_GRPS() Group *g = new (index) Group(); SlObject(g, _group_desc); - if (IsSavegameVersionBefore(189)) g->parent = INVALID_GROUP; + if (IsSavegameVersionBefore(SLV_189)) g->parent = INVALID_GROUP; - if (IsSavegameVersionBefore(205)) { + if (IsSavegameVersionBefore(SLV_GROUP_LIVERIES)) { const Company *c = Company::Get(g->owner); g->livery.colour1 = c->livery[LS_DEFAULT].colour1; g->livery.colour2 = c->livery[LS_DEFAULT].colour2; diff --git a/src/saveload/industry_sl.cpp b/src/saveload/industry_sl.cpp index a9c84e62ab..9e81861c4e 100644 --- a/src/saveload/industry_sl.cpp +++ b/src/saveload/industry_sl.cpp @@ -20,58 +20,58 @@ static OldPersistentStorage _old_ind_persistent_storage; static const SaveLoad _industry_desc[] = { - SLE_CONDVAR(Industry, location.tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), - SLE_CONDVAR(Industry, location.tile, SLE_UINT32, 6, SL_MAX_VERSION), + SLE_CONDVAR(Industry, location.tile, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(Industry, location.tile, SLE_UINT32, SLV_6, SL_MAX_VERSION), SLE_VAR(Industry, location.w, SLE_FILE_U8 | SLE_VAR_U16), SLE_VAR(Industry, location.h, SLE_FILE_U8 | SLE_VAR_U16), SLE_REF(Industry, town, REF_TOWN), - SLE_CONDNULL( 2, 0, 60), ///< used to be industry's produced_cargo - SLE_CONDARR(Industry, produced_cargo, SLE_UINT8, 2, 78, 201), - SLE_CONDARR(Industry, produced_cargo, SLE_UINT8, 16, 202, SL_MAX_VERSION), - SLE_CONDARR(Industry, incoming_cargo_waiting, SLE_UINT16, 3, 70, 201), - SLE_CONDARR(Industry, incoming_cargo_waiting, SLE_UINT16, 16, 202, SL_MAX_VERSION), - SLE_CONDARR(Industry, produced_cargo_waiting, SLE_UINT16, 2, 0, 201), - SLE_CONDARR(Industry, produced_cargo_waiting, SLE_UINT16, 16, 202, SL_MAX_VERSION), - SLE_CONDARR(Industry, production_rate, SLE_UINT8, 2, 0, 201), - SLE_CONDARR(Industry, production_rate, SLE_UINT8, 16, 202, SL_MAX_VERSION), - SLE_CONDNULL( 3, 0, 60), ///< used to be industry's accepts_cargo - SLE_CONDARR(Industry, accepts_cargo, SLE_UINT8, 3, 78, 201), - SLE_CONDARR(Industry, accepts_cargo, SLE_UINT8, 16, 202, SL_MAX_VERSION), + SLE_CONDNULL( 2, SL_MIN_VERSION, SLV_61), ///< used to be industry's produced_cargo + SLE_CONDARR(Industry, produced_cargo, SLE_UINT8, 2, SLV_78, SLV_EXTEND_INDUSTRY_CARGO_SLOTS), + SLE_CONDARR(Industry, produced_cargo, SLE_UINT8, 16, SLV_EXTEND_INDUSTRY_CARGO_SLOTS, SL_MAX_VERSION), + SLE_CONDARR(Industry, incoming_cargo_waiting, SLE_UINT16, 3, SLV_70, SLV_EXTEND_INDUSTRY_CARGO_SLOTS), + SLE_CONDARR(Industry, incoming_cargo_waiting, SLE_UINT16, 16, SLV_EXTEND_INDUSTRY_CARGO_SLOTS, SL_MAX_VERSION), + SLE_CONDARR(Industry, produced_cargo_waiting, SLE_UINT16, 2, SL_MIN_VERSION, SLV_EXTEND_INDUSTRY_CARGO_SLOTS), + SLE_CONDARR(Industry, produced_cargo_waiting, SLE_UINT16, 16, SLV_EXTEND_INDUSTRY_CARGO_SLOTS, SL_MAX_VERSION), + SLE_CONDARR(Industry, production_rate, SLE_UINT8, 2, SL_MIN_VERSION, SLV_EXTEND_INDUSTRY_CARGO_SLOTS), + SLE_CONDARR(Industry, production_rate, SLE_UINT8, 16, SLV_EXTEND_INDUSTRY_CARGO_SLOTS, SL_MAX_VERSION), + SLE_CONDNULL( 3, SL_MIN_VERSION, SLV_61), ///< used to be industry's accepts_cargo + SLE_CONDARR(Industry, accepts_cargo, SLE_UINT8, 3, SLV_78, SLV_EXTEND_INDUSTRY_CARGO_SLOTS), + SLE_CONDARR(Industry, accepts_cargo, SLE_UINT8, 16, SLV_EXTEND_INDUSTRY_CARGO_SLOTS, SL_MAX_VERSION), SLE_VAR(Industry, prod_level, SLE_UINT8), - SLE_CONDARR(Industry, this_month_production, SLE_UINT16, 2, 0, 201), - SLE_CONDARR(Industry, this_month_production, SLE_UINT16, 16, 202, SL_MAX_VERSION), - SLE_CONDARR(Industry, this_month_transported, SLE_UINT16, 2, 0, 201), - SLE_CONDARR(Industry, this_month_transported, SLE_UINT16, 16, 202, SL_MAX_VERSION), - SLE_CONDARR(Industry, last_month_pct_transported, SLE_UINT8, 2, 0, 201), - SLE_CONDARR(Industry, last_month_pct_transported, SLE_UINT8, 16, 202, SL_MAX_VERSION), - SLE_CONDARR(Industry, last_month_production, SLE_UINT16, 2, 0, 201), - SLE_CONDARR(Industry, last_month_production, SLE_UINT16, 16, 202, SL_MAX_VERSION), - SLE_CONDARR(Industry, last_month_transported, SLE_UINT16, 2, 0, 201), - SLE_CONDARR(Industry, last_month_transported, SLE_UINT16, 16, 202, SL_MAX_VERSION), + SLE_CONDARR(Industry, this_month_production, SLE_UINT16, 2, SL_MIN_VERSION, SLV_EXTEND_INDUSTRY_CARGO_SLOTS), + SLE_CONDARR(Industry, this_month_production, SLE_UINT16, 16, SLV_EXTEND_INDUSTRY_CARGO_SLOTS, SL_MAX_VERSION), + SLE_CONDARR(Industry, this_month_transported, SLE_UINT16, 2, SL_MIN_VERSION, SLV_EXTEND_INDUSTRY_CARGO_SLOTS), + SLE_CONDARR(Industry, this_month_transported, SLE_UINT16, 16, SLV_EXTEND_INDUSTRY_CARGO_SLOTS, SL_MAX_VERSION), + SLE_CONDARR(Industry, last_month_pct_transported, SLE_UINT8, 2, SL_MIN_VERSION, SLV_EXTEND_INDUSTRY_CARGO_SLOTS), + SLE_CONDARR(Industry, last_month_pct_transported, SLE_UINT8, 16, SLV_EXTEND_INDUSTRY_CARGO_SLOTS, SL_MAX_VERSION), + SLE_CONDARR(Industry, last_month_production, SLE_UINT16, 2, SL_MIN_VERSION, SLV_EXTEND_INDUSTRY_CARGO_SLOTS), + SLE_CONDARR(Industry, last_month_production, SLE_UINT16, 16, SLV_EXTEND_INDUSTRY_CARGO_SLOTS, SL_MAX_VERSION), + SLE_CONDARR(Industry, last_month_transported, SLE_UINT16, 2, SL_MIN_VERSION, SLV_EXTEND_INDUSTRY_CARGO_SLOTS), + SLE_CONDARR(Industry, last_month_transported, SLE_UINT16, 16, SLV_EXTEND_INDUSTRY_CARGO_SLOTS, SL_MAX_VERSION), SLE_VAR(Industry, counter, SLE_UINT16), SLE_VAR(Industry, type, SLE_UINT8), SLE_VAR(Industry, owner, SLE_UINT8), SLE_VAR(Industry, random_colour, SLE_UINT8), - SLE_CONDVAR(Industry, last_prod_year, SLE_FILE_U8 | SLE_VAR_I32, 0, 30), - SLE_CONDVAR(Industry, last_prod_year, SLE_INT32, 31, SL_MAX_VERSION), + SLE_CONDVAR(Industry, last_prod_year, SLE_FILE_U8 | SLE_VAR_I32, SL_MIN_VERSION, SLV_31), + SLE_CONDVAR(Industry, last_prod_year, SLE_INT32, SLV_31, SL_MAX_VERSION), SLE_VAR(Industry, was_cargo_delivered, SLE_UINT8), - SLE_CONDVAR(Industry, founder, SLE_UINT8, 70, SL_MAX_VERSION), - SLE_CONDVAR(Industry, construction_date, SLE_INT32, 70, SL_MAX_VERSION), - SLE_CONDVAR(Industry, construction_type, SLE_UINT8, 70, SL_MAX_VERSION), - SLE_CONDVAR(Industry, last_cargo_accepted_at[0], SLE_INT32, 70, 201), - SLE_CONDARR(Industry, last_cargo_accepted_at, SLE_INT32, 16, 202, SL_MAX_VERSION), - SLE_CONDVAR(Industry, selected_layout, SLE_UINT8, 73, SL_MAX_VERSION), + SLE_CONDVAR(Industry, founder, SLE_UINT8, SLV_70, SL_MAX_VERSION), + SLE_CONDVAR(Industry, construction_date, SLE_INT32, SLV_70, SL_MAX_VERSION), + SLE_CONDVAR(Industry, construction_type, SLE_UINT8, SLV_70, SL_MAX_VERSION), + SLE_CONDVAR(Industry, last_cargo_accepted_at[0], SLE_INT32, SLV_70, SLV_EXTEND_INDUSTRY_CARGO_SLOTS), + SLE_CONDARR(Industry, last_cargo_accepted_at, SLE_INT32, 16, SLV_EXTEND_INDUSTRY_CARGO_SLOTS, SL_MAX_VERSION), + SLE_CONDVAR(Industry, selected_layout, SLE_UINT8, SLV_73, SL_MAX_VERSION), - SLEG_CONDARR(_old_ind_persistent_storage.storage, SLE_UINT32, 16, 76, 160), - SLE_CONDREF(Industry, psa, REF_STORAGE, 161, SL_MAX_VERSION), + SLEG_CONDARR(_old_ind_persistent_storage.storage, SLE_UINT32, 16, SLV_76, SLV_161), + SLE_CONDREF(Industry, psa, REF_STORAGE, SLV_161, SL_MAX_VERSION), - SLE_CONDNULL(1, 82, 196), // random_triggers - SLE_CONDVAR(Industry, random, SLE_UINT16, 82, SL_MAX_VERSION), + SLE_CONDNULL(1, SLV_82, SLV_197), // random_triggers + SLE_CONDVAR(Industry, random, SLE_UINT16, SLV_82, SL_MAX_VERSION), - SLE_CONDNULL(32, 2, 143), // old reserved space + SLE_CONDNULL(32, SLV_2, SLV_144), // old reserved space SLE_END() }; @@ -108,7 +108,7 @@ static void Load_INDY() SlObject(i, _industry_desc); /* Before savegame version 161, persistent storages were not stored in a pool. */ - if (IsSavegameVersionBefore(161) && !IsSavegameVersionBefore(76)) { + if (IsSavegameVersionBefore(SLV_161) && !IsSavegameVersionBefore(SLV_76)) { /* Store the old persistent storage. The GRFID will be added later. */ assert(PersistentStorage::CanAllocateItem()); i->psa = new PersistentStorage(0, 0, 0); diff --git a/src/saveload/linkgraph_sl.cpp b/src/saveload/linkgraph_sl.cpp index 869d2926bc..02c417c05c 100644 --- a/src/saveload/linkgraph_sl.cpp +++ b/src/saveload/linkgraph_sl.cpp @@ -83,7 +83,7 @@ const SaveLoad *GetLinkGraphJobDesc() const SaveLoad job_desc[] = { SLE_VAR(LinkGraphJob, join_date_ticks, SLE_INT32), - SLE_CONDVAR_X(LinkGraphJob, start_date_ticks, SLE_INT32, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_LINKGRAPH_DAY_SCALE)), + SLE_CONDVAR_X(LinkGraphJob, start_date_ticks, SLE_INT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_LINKGRAPH_DAY_SCALE)), SLE_VAR(LinkGraphJob, link_graph.index, SLE_UINT16), SLE_END() }; @@ -117,7 +117,7 @@ const SaveLoad *GetLinkGraphScheduleDesc() * SaveLoad desc for a link graph node. */ static const SaveLoad _node_desc[] = { - SLE_CONDVAR(Node, xy, SLE_UINT32, 191, SL_MAX_VERSION), + SLE_CONDVAR(Node, xy, SLE_UINT32, SLV_191, SL_MAX_VERSION), SLE_VAR(Node, supply, SLE_UINT32), SLE_VAR(Node, demand, SLE_UINT32), SLE_VAR(Node, station, SLE_UINT16), @@ -129,11 +129,11 @@ static const SaveLoad _node_desc[] = { * SaveLoad desc for a link graph edge. */ static const SaveLoad _edge_desc[] = { - SLE_CONDNULL(4, 0, 190), // distance + SLE_CONDNULL(4, SL_MIN_VERSION, SLV_191), // distance SLE_VAR(Edge, capacity, SLE_UINT32), SLE_VAR(Edge, usage, SLE_UINT32), SLE_VAR(Edge, last_unrestricted_update, SLE_INT32), - SLE_CONDVAR(Edge, last_restricted_update, SLE_INT32, 187, SL_MAX_VERSION), + SLE_CONDVAR(Edge, last_restricted_update, SLE_INT32, SLV_187, SL_MAX_VERSION), SLE_VAR(Edge, next_edge, SLE_UINT16), SLE_END() }; @@ -148,7 +148,7 @@ void SaveLoad_LinkGraph(LinkGraph &lg) for (NodeID from = 0; from < size; ++from) { Node *node = &lg.nodes[from]; SlObject(node, _node_desc); - if (IsSavegameVersionBefore(191)) { + if (IsSavegameVersionBefore(SLV_191)) { /* We used to save the full matrix ... */ for (NodeID to = 0; to < size; ++to) { SlObject(&lg.edges[from][to], _edge_desc); @@ -240,7 +240,7 @@ static void Load_LGRS() */ void AfterLoadLinkGraphs() { - if (IsSavegameVersionBefore(191)) { + if (IsSavegameVersionBefore(SLV_191)) { LinkGraph *lg; FOR_ALL_LINK_GRAPHS(lg) { for (NodeID node_id = 0; node_id < lg->Size(); ++node_id) { diff --git a/src/saveload/map_sl.cpp b/src/saveload/map_sl.cpp index 9b21d0c57d..ea22abe9af 100644 --- a/src/saveload/map_sl.cpp +++ b/src/saveload/map_sl.cpp @@ -25,8 +25,8 @@ static uint32 _map_dim_x; static uint32 _map_dim_y; static const SaveLoadGlobVarList _map_dimensions[] = { - SLEG_CONDVAR(_map_dim_x, SLE_UINT32, 6, SL_MAX_VERSION), - SLEG_CONDVAR(_map_dim_y, SLE_UINT32, 6, SL_MAX_VERSION), + SLEG_CONDVAR(_map_dim_x, SLE_UINT32, SLV_6, SL_MAX_VERSION), + SLEG_CONDVAR(_map_dim_y, SLE_UINT32, SLV_6, SL_MAX_VERSION), SLEG_END() }; @@ -96,7 +96,7 @@ static void Load_MAP2() for (TileIndex i = 0; i != size;) { SlArray(buf, MAP_SL_BUF_SIZE, /* In those versions the m2 was 8 bits */ - IsSavegameVersionBefore(5) ? SLE_FILE_U8 | SLE_VAR_U16 : SLE_UINT16 + IsSavegameVersionBefore(SLV_5) ? SLE_FILE_U8 | SLE_VAR_U16 : SLE_UINT16 ); for (uint j = 0; j != MAP_SL_BUF_SIZE; j++) _m[i++].m2 = buf[j]; } @@ -140,7 +140,7 @@ static void Load_MAP6() SmallStackSafeStackAlloc buf; TileIndex size = MapSize(); - if (IsSavegameVersionBefore(42)) { + if (IsSavegameVersionBefore(SLV_42)) { for (TileIndex i = 0; i != size;) { /* 1024, otherwise we overflow on 64x64 maps! */ SlArray(buf, 1024, SLE_UINT8); diff --git a/src/saveload/misc_sl.cpp b/src/saveload/misc_sl.cpp index 23a935e513..63dbcee3bf 100644 --- a/src/saveload/misc_sl.cpp +++ b/src/saveload/misc_sl.cpp @@ -71,54 +71,54 @@ void ResetViewportAfterLoadGame() byte _age_cargo_skip_counter; ///< Skip aging of cargo? Used before savegame version 162. static const SaveLoadGlobVarList _date_desc[] = { - SLEG_CONDVAR(_date, SLE_FILE_U16 | SLE_VAR_I32, 0, 30), - SLEG_CONDVAR(_date, SLE_INT32, 31, SL_MAX_VERSION), + SLEG_CONDVAR(_date, SLE_FILE_U16 | SLE_VAR_I32, SL_MIN_VERSION, SLV_31), + SLEG_CONDVAR(_date, SLE_INT32, SLV_31, SL_MAX_VERSION), SLEG_VAR(_date_fract, SLE_UINT16), SLEG_VAR(_tick_counter, SLE_UINT16), - SLEG_CONDVAR_X(_tick_skip_counter, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_VARIABLE_DAY_LENGTH)), - SLE_CONDNULL(2, 0, 156), // _vehicle_id_ctr_day - SLEG_CONDVAR(_age_cargo_skip_counter, SLE_UINT8, 0, 161), - SLE_CONDNULL(1, 0, 45), - SLEG_CONDVAR(_cur_tileloop_tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), - SLEG_CONDVAR(_cur_tileloop_tile, SLE_UINT32, 6, SL_MAX_VERSION), + SLEG_CONDVAR_X(_tick_skip_counter, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_VARIABLE_DAY_LENGTH)), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_157), // _vehicle_id_ctr_day + SLEG_CONDVAR(_age_cargo_skip_counter, SLE_UINT8, SL_MIN_VERSION, SLV_162), + SLE_CONDNULL(1, SL_MIN_VERSION, SLV_46), + SLEG_CONDVAR(_cur_tileloop_tile, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_6), + SLEG_CONDVAR(_cur_tileloop_tile, SLE_UINT32, SLV_6, SL_MAX_VERSION), SLEG_VAR(_disaster_delay, SLE_UINT16), - SLE_CONDNULL(2, 0, 119), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_120), SLEG_VAR(_random.state[0], SLE_UINT32), SLEG_VAR(_random.state[1], SLE_UINT32), - SLE_CONDNULL(1, 0, 9), - SLE_CONDNULL(4, 10, 119), + SLE_CONDNULL(1, SL_MIN_VERSION, SLV_10), + SLE_CONDNULL(4, SLV_10, SLV_120), SLEG_VAR(_cur_company_tick_index, SLE_FILE_U8 | SLE_VAR_U32), - SLEG_CONDVAR(_next_competitor_start, SLE_FILE_U16 | SLE_VAR_U32, 0, 108), - SLEG_CONDVAR(_next_competitor_start, SLE_UINT32, 109, SL_MAX_VERSION), + SLEG_CONDVAR(_next_competitor_start, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_109), + SLEG_CONDVAR(_next_competitor_start, SLE_UINT32, SLV_109, SL_MAX_VERSION), SLEG_VAR(_trees_tick_ctr, SLE_UINT8), - SLEG_CONDVAR(_pause_mode, SLE_UINT8, 4, SL_MAX_VERSION), - SLE_CONDNULL(4, 11, 119), + SLEG_CONDVAR(_pause_mode, SLE_UINT8, SLV_4, SL_MAX_VERSION), + SLE_CONDNULL(4, SLV_11, SLV_120), SLEG_END() }; static const SaveLoadGlobVarList _date_check_desc[] = { - SLEG_CONDVAR(_load_check_data.current_date, SLE_FILE_U16 | SLE_VAR_I32, 0, 30), - SLEG_CONDVAR(_load_check_data.current_date, SLE_INT32, 31, SL_MAX_VERSION), + SLEG_CONDVAR(_load_check_data.current_date, SLE_FILE_U16 | SLE_VAR_I32, SL_MIN_VERSION, SLV_31), + SLEG_CONDVAR(_load_check_data.current_date, SLE_INT32, SLV_31, SL_MAX_VERSION), SLE_NULL(2), // _date_fract SLE_NULL(2), // _tick_counter - SLE_CONDNULL_X(1, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_VARIABLE_DAY_LENGTH)), // _tick_skip_counter - SLE_CONDNULL(2, 0, 156), // _vehicle_id_ctr_day - SLE_CONDNULL(1, 0, 161), // _age_cargo_skip_counter - SLE_CONDNULL(1, 0, 45), - SLE_CONDNULL(2, 0, 5), // _cur_tileloop_tile - SLE_CONDNULL(4, 6, SL_MAX_VERSION), // _cur_tileloop_tile + SLE_CONDNULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_VARIABLE_DAY_LENGTH)), // _tick_skip_counter + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_157), // _vehicle_id_ctr_day + SLE_CONDNULL(1, SL_MIN_VERSION, SLV_162), // _age_cargo_skip_counter + SLE_CONDNULL(1, SL_MIN_VERSION, SLV_46), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_6), // _cur_tileloop_tile + SLE_CONDNULL(4, SLV_6, SL_MAX_VERSION), // _cur_tileloop_tile SLE_NULL(2), // _disaster_delay - SLE_CONDNULL(2, 0, 119), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_120), SLE_NULL(4), // _random.state[0] SLE_NULL(4), // _random.state[1] - SLE_CONDNULL(1, 0, 9), - SLE_CONDNULL(4, 10, 119), + SLE_CONDNULL(1, SL_MIN_VERSION, SLV_10), + SLE_CONDNULL(4, SLV_10, SLV_120), SLE_NULL(1), // _cur_company_tick_index - SLE_CONDNULL(2, 0, 108), // _next_competitor_start - SLE_CONDNULL(4, 109, SL_MAX_VERSION), // _next_competitor_start + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_109), // _next_competitor_start + SLE_CONDNULL(4, SLV_109, SL_MAX_VERSION), // _next_competitor_start SLE_NULL(1), // _trees_tick_ctr - SLE_CONDNULL(1, 4, SL_MAX_VERSION), // _pause_mode - SLE_CONDNULL(4, 11, 119), + SLE_CONDNULL(1, SLV_4, SL_MAX_VERSION), // _pause_mode + SLE_CONDNULL(4, SLV_11, SLV_120), SLEG_END() }; @@ -133,17 +133,17 @@ static void SaveLoad_DATE() static void Check_DATE() { SlGlobList(_date_check_desc); - if (IsSavegameVersionBefore(31)) { + if (IsSavegameVersionBefore(SLV_31)) { _load_check_data.current_date += DAYS_TILL_ORIGINAL_BASE_YEAR; } } static const SaveLoadGlobVarList _view_desc[] = { - SLEG_CONDVAR(_saved_scrollpos_x, SLE_FILE_I16 | SLE_VAR_I32, 0, 5), - SLEG_CONDVAR(_saved_scrollpos_x, SLE_INT32, 6, SL_MAX_VERSION), - SLEG_CONDVAR(_saved_scrollpos_y, SLE_FILE_I16 | SLE_VAR_I32, 0, 5), - SLEG_CONDVAR(_saved_scrollpos_y, SLE_INT32, 6, SL_MAX_VERSION), + SLEG_CONDVAR(_saved_scrollpos_x, SLE_FILE_I16 | SLE_VAR_I32, SL_MIN_VERSION, SLV_6), + SLEG_CONDVAR(_saved_scrollpos_x, SLE_INT32, SLV_6, SL_MAX_VERSION), + SLEG_CONDVAR(_saved_scrollpos_y, SLE_FILE_I16 | SLE_VAR_I32, SL_MIN_VERSION, SLV_6), + SLEG_CONDVAR(_saved_scrollpos_y, SLE_INT32, SLV_6, SL_MAX_VERSION), SLEG_VAR(_saved_scrollpos_zoom, SLE_UINT8), SLEG_END() }; diff --git a/src/saveload/newgrf_sl.cpp b/src/saveload/newgrf_sl.cpp index de261f02aa..e40b45926c 100644 --- a/src/saveload/newgrf_sl.cpp +++ b/src/saveload/newgrf_sl.cpp @@ -61,10 +61,10 @@ static const SaveLoad _grfconfig_desc[] = { SLE_STR(GRFConfig, filename, SLE_STR, 0x40), SLE_VAR(GRFConfig, ident.grfid, SLE_UINT32), SLE_ARR(GRFConfig, ident.md5sum, SLE_UINT8, 16), - SLE_CONDVAR(GRFConfig, version, SLE_UINT32, 151, SL_MAX_VERSION), + SLE_CONDVAR(GRFConfig, version, SLE_UINT32, SLV_151, SL_MAX_VERSION), SLE_ARR(GRFConfig, param, SLE_UINT32, 0x80), SLE_VAR(GRFConfig, num_params, SLE_UINT8), - SLE_CONDVAR(GRFConfig, palette, SLE_UINT8, 101, SL_MAX_VERSION), + SLE_CONDVAR(GRFConfig, palette, SLE_UINT8, SLV_101, SL_MAX_VERSION), SLE_END() }; @@ -87,7 +87,7 @@ static void Load_NGRF_common(GRFConfig *&grfconfig) while (SlIterateArray() != -1) { GRFConfig *c = new GRFConfig(); SlObject(c, _grfconfig_desc); - if (IsSavegameVersionBefore(101)) c->SetSuitablePalette(); + if (IsSavegameVersionBefore(SLV_101)) c->SetSuitablePalette(); AppendToGRFConfigList(&grfconfig, c); } } diff --git a/src/saveload/object_sl.cpp b/src/saveload/object_sl.cpp index dfb1d2cbf5..6b0b99e479 100644 --- a/src/saveload/object_sl.cpp +++ b/src/saveload/object_sl.cpp @@ -24,9 +24,9 @@ static const SaveLoad _object_desc[] = { SLE_VAR(Object, location.h, SLE_FILE_U8 | SLE_VAR_U16), SLE_REF(Object, town, REF_TOWN), SLE_VAR(Object, build_date, SLE_UINT32), - SLE_CONDVAR(Object, colour, SLE_UINT8, 148, SL_MAX_VERSION), - SLE_CONDVAR(Object, view, SLE_UINT8, 155, SL_MAX_VERSION), - SLE_CONDVAR(Object, type, SLE_UINT16, 186, SL_MAX_VERSION), + SLE_CONDVAR(Object, colour, SLE_UINT8, SLV_148, SL_MAX_VERSION), + SLE_CONDVAR(Object, view, SLE_UINT8, SLV_155, SL_MAX_VERSION), + SLE_CONDVAR(Object, type, SLE_UINT16, SLV_186, SL_MAX_VERSION), SLE_END() }; @@ -56,7 +56,7 @@ static void Ptrs_OBJS() Object *o; FOR_ALL_OBJECTS(o) { SlObject(o, _object_desc); - if (IsSavegameVersionBefore(148) && !IsTileType(o->location.tile, MP_OBJECT)) { + if (IsSavegameVersionBefore(SLV_148) && !IsTileType(o->location.tile, MP_OBJECT)) { /* Due to a small bug stale objects could remain. */ delete o; } diff --git a/src/saveload/order_sl.cpp b/src/saveload/order_sl.cpp index 23493f6d22..88f153adca 100644 --- a/src/saveload/order_sl.cpp +++ b/src/saveload/order_sl.cpp @@ -28,7 +28,7 @@ void Order::ConvertFromOldSavegame() this->flags = 0; /* First handle non-stop - use value from savegame if possible, else use value from config file */ - if (_settings_client.gui.sg_new_nonstop || (IsSavegameVersionBefore(22) && _savegame_type != SGT_TTO && _savegame_type != SGT_TTD && _settings_client.gui.new_nonstop)) { + if (_settings_client.gui.sg_new_nonstop || (IsSavegameVersionBefore(SLV_22) && _savegame_type != SGT_TTO && _savegame_type != SGT_TTD && _settings_client.gui.new_nonstop)) { /* OFB_NON_STOP */ this->SetNonStopType((old_flags & 8) ? ONSF_NO_STOP_AT_ANY_STATION : ONSF_NO_STOP_AT_INTERMEDIATE_STATIONS); } else { @@ -49,7 +49,7 @@ void Order::ConvertFromOldSavegame() this->SetLoadType(OLF_LOAD_IF_POSSIBLE); } else { /* old OTTD versions stored full_load_any in config file - assume it was enabled when loading */ - this->SetLoadType(_settings_client.gui.sg_full_load_any || IsSavegameVersionBefore(22) ? OLF_FULL_LOAD_ANY : OLFB_FULL_LOAD); + this->SetLoadType(_settings_client.gui.sg_full_load_any || IsSavegameVersionBefore(SLV_22) ? OLF_FULL_LOAD_ANY : OLFB_FULL_LOAD); } if (this->IsType(OT_GOTO_STATION)) this->SetStopLocation(OSL_PLATFORM_FAR_END); @@ -106,22 +106,22 @@ const SaveLoad *GetOrderDescription() static const SaveLoad _order_desc[] = { SLE_VAR(Order, type, SLE_UINT8), SLE_VAR(Order, flags, SLE_UINT8), - SLE_CONDNULL_X(1, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), + SLE_CONDNULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), SLE_VAR(Order, dest, SLE_UINT16), SLE_REF(Order, next, REF_ORDER), - SLE_CONDVAR(Order, refit_cargo, SLE_UINT8, 36, SL_MAX_VERSION), - SLE_CONDNULL(1, 36, 181), // refit_subtype - SLE_CONDVAR_X(Order, occupancy, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_ORDER_OCCUPANCY)), - SLE_CONDVAR_X(Order, wait_time, SLE_FILE_U16 | SLE_VAR_U32, 67, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA, 0, 5)), - SLE_CONDVAR_X(Order, wait_time, SLE_UINT32, 67, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA, 6)), - SLE_CONDVAR_X(Order, travel_time, SLE_FILE_U16 | SLE_VAR_U32, 67, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA, 0, 5)), - SLE_CONDVAR_X(Order, travel_time, SLE_UINT32, 67, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA, 6)), - SLE_CONDVAR(Order, max_speed, SLE_UINT16, 172, SL_MAX_VERSION), - SLE_CONDVAR_X(Order, jump_counter, SLE_INT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_MORE_COND_ORDERS)), + SLE_CONDVAR(Order, refit_cargo, SLE_UINT8, SLV_36, SL_MAX_VERSION), + SLE_CONDNULL(1, SLV_36, SLV_182), // refit_subtype + SLE_CONDVAR_X(Order, occupancy, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_ORDER_OCCUPANCY)), + SLE_CONDVAR_X(Order, wait_time, SLE_FILE_U16 | SLE_VAR_U32, SLV_67, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA, 0, 5)), + SLE_CONDVAR_X(Order, wait_time, SLE_UINT32, SLV_67, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA, 6)), + SLE_CONDVAR_X(Order, travel_time, SLE_FILE_U16 | SLE_VAR_U32, SLV_67, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA, 0, 5)), + SLE_CONDVAR_X(Order, travel_time, SLE_UINT32, SLV_67, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA, 6)), + SLE_CONDVAR(Order, max_speed, SLE_UINT16, SLV_172, SL_MAX_VERSION), + SLE_CONDVAR_X(Order, jump_counter, SLE_INT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_MORE_COND_ORDERS)), /* Leftover from the minor savegame version stuff * We will never use those free bytes, but we have to keep this line to allow loading of old savegames */ - SLE_CONDNULL(10, 5, 35), + SLE_CONDNULL(10, SLV_5, SLV_36), SLE_END() }; @@ -140,12 +140,12 @@ static void Save_ORDR() static void Load_ORDR() { - if (IsSavegameVersionBefore(5, 2)) { + if (IsSavegameVersionBefore(SLV_5, 2)) { /* Version older than 5.2 did not have a ->next pointer. Convert them * (in the old days, the orderlist was 5000 items big) */ size_t len = SlGetFieldLength(); - if (IsSavegameVersionBefore(5)) { + if (IsSavegameVersionBefore(SLV_5)) { /* Pre-version 5 had another layout for orders * (uint16 instead of uint32) */ len /= sizeof(uint16); @@ -159,7 +159,7 @@ static void Load_ORDR() } free(orders); - } else if (IsSavegameVersionBefore(5, 2)) { + } else if (IsSavegameVersionBefore(SLV_5, 2)) { len /= sizeof(uint32); uint32 *orders = MallocT(len + 1); @@ -191,7 +191,7 @@ static void Load_ORDR() while ((index = SlIterateArray()) != -1) { Order *order = new (index) Order(); SlObject(order, GetOrderDescription()); - if (IsSavegameVersionBefore(190)) { + if (IsSavegameVersionBefore(SLV_190)) { order->SetTravelTimetabled(order->GetTravelTime() > 0); order->SetWaitTimetabled(order->GetWaitTime() > 0); } else if (order->IsType(OT_CONDITIONAL) && SlXvIsFeatureMissing(XSLFI_TIMETABLE_EXTRA)) { @@ -204,10 +204,10 @@ static void Load_ORDR() const SaveLoad *GetOrderExtraInfoDescription() { static const SaveLoad _order_extra_info_desc[] = { - SLE_CONDARR_X(OrderExtraInfo, cargo_type_flags, SLE_UINT8, 32, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CARGO_TYPE_ORDERS, 1, 2)), - SLE_CONDARR_X(OrderExtraInfo, cargo_type_flags, SLE_UINT8, NUM_CARGO, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CARGO_TYPE_ORDERS, 3)), - SLE_CONDVAR_X(OrderExtraInfo, xflags, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA)), - SLE_CONDVAR_X(OrderExtraInfo, xdata, SLE_UINT32, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_ORDER_EXTRA_DATA)), + SLE_CONDARR_X(OrderExtraInfo, cargo_type_flags, SLE_UINT8, 32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CARGO_TYPE_ORDERS, 1, 2)), + SLE_CONDARR_X(OrderExtraInfo, cargo_type_flags, SLE_UINT8, NUM_CARGO, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_CARGO_TYPE_ORDERS, 3)), + SLE_CONDVAR_X(OrderExtraInfo, xflags, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA)), + SLE_CONDVAR_X(OrderExtraInfo, xdata, SLE_UINT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_ORDER_EXTRA_DATA)), SLE_END() }; @@ -240,7 +240,7 @@ void Load_ORDX() static void Ptrs_ORDR() { /* Orders from old savegames have pointers corrected in Load_ORDR */ - if (IsSavegameVersionBefore(5, 2)) return; + if (IsSavegameVersionBefore(SLV_5, 2)) return; Order *o; @@ -253,12 +253,12 @@ const SaveLoad *GetOrderListDescription() { static const SaveLoad _orderlist_desc[] = { SLE_REF(OrderList, first, REF_ORDER), - SLE_CONDVARVEC_X(OrderList, scheduled_dispatch, SLE_UINT32, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SCHEDULED_DISPATCH)), - SLE_CONDVAR_X(OrderList, scheduled_dispatch_duration, SLE_UINT32, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SCHEDULED_DISPATCH)), - SLE_CONDVAR_X(OrderList, scheduled_dispatch_start_date, SLE_INT32, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SCHEDULED_DISPATCH)), - SLE_CONDVAR_X(OrderList, scheduled_dispatch_start_full_date_fract, SLE_UINT16, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SCHEDULED_DISPATCH)), - SLE_CONDVAR_X(OrderList, scheduled_dispatch_last_dispatch, SLE_INT32, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SCHEDULED_DISPATCH)), - SLE_CONDVAR_X(OrderList, scheduled_dispatch_max_delay, SLE_INT32, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SCHEDULED_DISPATCH)), + SLE_CONDVARVEC_X(OrderList, scheduled_dispatch, SLE_UINT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SCHEDULED_DISPATCH)), + SLE_CONDVAR_X(OrderList, scheduled_dispatch_duration, SLE_UINT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SCHEDULED_DISPATCH)), + SLE_CONDVAR_X(OrderList, scheduled_dispatch_start_date, SLE_INT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SCHEDULED_DISPATCH)), + SLE_CONDVAR_X(OrderList, scheduled_dispatch_start_full_date_fract, SLE_UINT16, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SCHEDULED_DISPATCH)), + SLE_CONDVAR_X(OrderList, scheduled_dispatch_last_dispatch, SLE_INT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SCHEDULED_DISPATCH)), + SLE_CONDVAR_X(OrderList, scheduled_dispatch_max_delay, SLE_INT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SCHEDULED_DISPATCH)), SLE_END() }; @@ -303,20 +303,20 @@ const SaveLoad *GetOrderBackupDescription() SLE_VAR(OrderBackup, user, SLE_UINT32), SLE_VAR(OrderBackup, tile, SLE_UINT32), SLE_VAR(OrderBackup, group, SLE_UINT16), - SLE_CONDVAR(OrderBackup, service_interval, SLE_FILE_U32 | SLE_VAR_U16, 0, 191), - SLE_CONDVAR(OrderBackup, service_interval, SLE_UINT16, 192, SL_MAX_VERSION), + SLE_CONDVAR(OrderBackup, service_interval, SLE_FILE_U32 | SLE_VAR_U16, SL_MIN_VERSION, SLV_192), + SLE_CONDVAR(OrderBackup, service_interval, SLE_UINT16, SLV_192, SL_MAX_VERSION), SLE_STR(OrderBackup, name, SLE_STR, 0), - SLE_CONDNULL(2, 0, 191), // clone (2 bytes of pointer, i.e. garbage) - SLE_CONDREF(OrderBackup, clone, REF_VEHICLE, 192, SL_MAX_VERSION), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_192), // clone (2 bytes of pointer, i.e. garbage) + SLE_CONDREF(OrderBackup, clone, REF_VEHICLE, SLV_192, SL_MAX_VERSION), SLE_VAR(OrderBackup, cur_real_order_index, SLE_UINT8), - SLE_CONDVAR(OrderBackup, cur_implicit_order_index, SLE_UINT8, 176, SL_MAX_VERSION), - SLE_CONDVAR_X(OrderBackup, cur_timetable_order_index, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA)), - SLE_CONDVAR(OrderBackup, current_order_time, SLE_UINT32, 176, SL_MAX_VERSION), - SLE_CONDVAR(OrderBackup, lateness_counter, SLE_INT32, 176, SL_MAX_VERSION), - SLE_CONDVAR(OrderBackup, timetable_start, SLE_INT32, 176, SL_MAX_VERSION), - SLE_CONDVAR_X(OrderBackup,timetable_start_subticks, SLE_UINT16, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLES_START_TICKS, 2)), - SLE_CONDVAR(OrderBackup, vehicle_flags, SLE_FILE_U8 | SLE_VAR_U16, 176, 179), - SLE_CONDVAR(OrderBackup, vehicle_flags, SLE_UINT16, 180, SL_MAX_VERSION), + SLE_CONDVAR(OrderBackup, cur_implicit_order_index, SLE_UINT8, SLV_176, SL_MAX_VERSION), + SLE_CONDVAR_X(OrderBackup, cur_timetable_order_index, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA)), + SLE_CONDVAR(OrderBackup, current_order_time, SLE_UINT32, SLV_176, SL_MAX_VERSION), + SLE_CONDVAR(OrderBackup, lateness_counter, SLE_INT32, SLV_176, SL_MAX_VERSION), + SLE_CONDVAR(OrderBackup, timetable_start, SLE_INT32, SLV_176, SL_MAX_VERSION), + SLE_CONDVAR_X(OrderBackup,timetable_start_subticks, SLE_UINT16, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLES_START_TICKS, 2)), + SLE_CONDVAR(OrderBackup, vehicle_flags, SLE_FILE_U8 | SLE_VAR_U16, SLV_176, SLV_180), + SLE_CONDVAR(OrderBackup, vehicle_flags, SLE_UINT16, SLV_180, SL_MAX_VERSION), SLE_REF(OrderBackup, orders, REF_ORDER), SLE_END() }; diff --git a/src/saveload/plans_sl.cpp b/src/saveload/plans_sl.cpp index 95b1716d43..4fbdf82568 100644 --- a/src/saveload/plans_sl.cpp +++ b/src/saveload/plans_sl.cpp @@ -21,7 +21,7 @@ static const SaveLoad _plan_desc[] = { SLE_VAR(Plan, visible, SLE_BOOL), SLE_VAR(Plan, visible_by_all, SLE_BOOL), SLE_VAR(Plan, creation_date, SLE_INT32), - SLE_CONDSTDSTR_X(Plan, name, 0, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_ENH_VIEWPORT_PLANS, 3)), + SLE_CONDSTDSTR_X(Plan, name, 0, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_ENH_VIEWPORT_PLANS, 3)), SLE_END() }; diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index 2e7b77f78d..251d354d4e 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -21,7 +21,6 @@ *
  • repeat this until everything is done, and flush any remaining output to file * */ -#include #include "../stdafx.h" #include "../debug.h" @@ -57,245 +56,23 @@ #include "saveload_buffer.h" #include "extended_ver_sl.h" -#include "../safeguards.h" - #include #include -/* - * Previous savegame versions, the trunk revision where they were - * introduced and the released version that had that particular - * savegame version. - * Up to savegame version 18 there is a minor version as well. - * - * 1.0 0.1.x, 0.2.x - * 2.0 0.3.0 - * 2.1 0.3.1, 0.3.2 - * 3.x lost - * 4.0 1 - * 4.1 122 0.3.3, 0.3.4 - * 4.2 1222 0.3.5 - * 4.3 1417 - * 4.4 1426 - * 5.0 1429 - * 5.1 1440 - * 5.2 1525 0.3.6 - * 6.0 1721 - * 6.1 1768 - * 7.0 1770 - * 8.0 1786 - * 9.0 1909 - * 10.0 2030 - * 11.0 2033 - * 11.1 2041 - * 12.1 2046 - * 13.1 2080 0.4.0, 0.4.0.1 - * 14.0 2441 - * 15.0 2499 - * 16.0 2817 - * 16.1 3155 - * 17.0 3212 - * 17.1 3218 - * 18 3227 - * 19 3396 - * 20 3403 - * 21 3472 0.4.x - * 22 3726 - * 23 3915 - * 24 4150 - * 25 4259 - * 26 4466 - * 27 4757 - * 28 4987 - * 29 5070 - * 30 5946 - * 31 5999 - * 32 6001 - * 33 6440 - * 34 6455 - * 35 6602 - * 36 6624 - * 37 7182 - * 38 7195 - * 39 7269 - * 40 7326 - * 41 7348 0.5.x - * 42 7573 - * 43 7642 - * 44 8144 - * 45 8501 - * 46 8705 - * 47 8735 - * 48 8935 - * 49 8969 - * 50 8973 - * 51 8978 - * 52 9066 - * 53 9316 - * 54 9613 - * 55 9638 - * 56 9667 - * 57 9691 - * 58 9762 - * 59 9779 - * 60 9874 - * 61 9892 - * 62 9905 - * 63 9956 - * 64 10006 - * 65 10210 - * 66 10211 - * 67 10236 - * 68 10266 - * 69 10319 - * 70 10541 - * 71 10567 - * 72 10601 - * 73 10903 - * 74 11030 - * 75 11107 - * 76 11139 - * 77 11172 - * 78 11176 - * 79 11188 - * 80 11228 - * 81 11244 - * 82 11410 - * 83 11589 - * 84 11822 - * 85 11874 - * 86 12042 - * 87 12129 - * 88 12134 - * 89 12160 - * 90 12293 - * 91 12347 - * 92 12381 0.6.x - * 93 12648 - * 94 12816 - * 95 12924 - * 96 13226 - * 97 13256 - * 98 13375 - * 99 13838 - * 100 13952 - * 101 14233 - * 102 14332 - * 103 14598 - * 104 14735 - * 105 14803 - * 106 14919 - * 107 15027 - * 108 15045 - * 109 15075 - * 110 15148 - * 111 15190 - * 112 15290 - * 113 15340 - * 114 15601 - * 115 15695 - * 116 15893 0.7.x - * 117 16037 - * 118 16129 - * 119 16242 - * 120 16439 - * 121 16694 - * 122 16855 - * 123 16909 - * 124 16993 - * 125 17113 - * 126 17433 - * 127 17439 - * 128 18281 - * 129 18292 - * 130 18404 - * 131 18481 - * 132 18522 - * 133 18674 - * 134 18703 - * 135 18719 - * 136 18764 - * 137 18912 - * 138 18942 1.0.x - * 139 19346 - * 140 19382 - * 141 19799 - * 142 20003 - * 143 20048 - * 144 20334 - * 145 20376 - * 146 20446 - * 147 20621 - * 148 20659 - * 149 20832 - * 150 20857 - * 151 20918 - * 152 21171 - * 153 21263 - * 154 21426 - * 155 21453 - * 156 21728 - * 157 21862 - * 158 21933 - * 159 21962 - * 160 21974 1.1.x - * 161 22567 - * 162 22713 - * 163 22767 - * 164 23290 - * 165 23304 - * 166 23415 - * 167 23504 - * 168 23637 - * 169 23816 - * 170 23826 - * 171 23835 - * 172 23947 - * 173 23967 1.2.0-RC1 - * 174 23973 1.2.x - * 175 24136 - * 176 24446 - * 177 24619 - * 178 24789 - * 179 24810 - * 180 24998 1.3.x - * 181 25012 - * 182 25296 - * 183 25363 - * 184 25508 - * 185 25620 - * 186 25833 - * 187 25899 - * 188 26169 1.4.x - * 189 26450 - * 190 26547 - * 191 26646 - * 192 26700 - * 193 26802 - * 194 26881 1.5.x, 1.6.0 - * 195 27572 1.6.x - * 196 27778 1.7.x - * 197 27978 1.8.x - * 198 - * 199 - * 200 #6805 Extend railtypes to 64, adding uint16 to map array. - * 201 #6885 Extend NewGRF persistant storages. - * 202 #6867 Increase industry cargo slots to 16 in, 16 out - * 203 #7072 Add path cache for ships - * 204 #7065 Add extra rotation stages for ships. - * 205 #7108 Livery storage change and group liveries. - */ -extern const uint16 SAVEGAME_VERSION = 205; ///< Current savegame version of OpenTTD. -const uint16 SAVEGAME_VERSION_EXT = 0x8000; ///< Savegame extension indicator mask +#include "../safeguards.h" + +extern const SaveLoadVersion SAVEGAME_VERSION = (SaveLoadVersion)(SL_MAX_VERSION - 1); ///< Current savegame version of OpenTTD. + +const SaveLoadVersion SAVEGAME_VERSION_EXT = (SaveLoadVersion)(0x8000); ///< Savegame extension indicator mask SavegameType _savegame_type; ///< type of savegame we are loading FileToSaveLoad _file_to_saveload; ///< File to save or load in the openttd loop. -uint32 _ttdp_version; ///< version of TTDP savegame (if applicable) -uint16 _sl_version; ///< the major savegame version identifier -byte _sl_minor_version; ///< the minor savegame version, DO NOT USE! -char _savegame_format[8]; ///< how to compress savegames -bool _do_autosave; ///< are we doing an autosave at the moment? +uint32 _ttdp_version; ///< version of TTDP savegame (if applicable) +SaveLoadVersion _sl_version; ///< the major savegame version identifier +byte _sl_minor_version; ///< the minor savegame version, DO NOT USE! +char _savegame_format[8]; ///< how to compress savegames +bool _do_autosave; ///< are we doing an autosave at the moment? extern bool _sl_is_ext_version; @@ -912,7 +689,7 @@ static inline byte SlCalcConvFileLen(VarType conv) /** Return the size in bytes of a reference (pointer) */ static inline size_t SlCalcRefLen() { - return IsSavegameVersionBefore(69) ? 2 : 4; + return IsSavegameVersionBefore(SLV_69) ? 2 : 4; } void SlSetArrayIndex(uint index) @@ -1272,7 +1049,7 @@ static void SlString(void *ptr, size_t length, VarType conv) StringValidationSettings settings = SVS_REPLACE_WITH_QUESTION_MARK; if ((conv & SLF_ALLOW_CONTROL) != 0) { settings = settings | SVS_ALLOW_CONTROL_CODE; - if (IsSavegameVersionBefore(169)) { + if (IsSavegameVersionBefore(SLV_169)) { str_fix_scc_encoded((char *)ptr, (char *)ptr + len); } } @@ -1435,7 +1212,7 @@ static void *IntToReference(size_t index, SLRefType rt) /* After version 4.3 REF_VEHICLE_OLD is saved as REF_VEHICLE, * and should be loaded like that */ - if (rt == REF_VEHICLE_OLD && !IsSavegameVersionBefore(4, 4)) { + if (rt == REF_VEHICLE_OLD && !IsSavegameVersionBefore(SLV_4, 4)) { rt = REF_VEHICLE; } @@ -1454,7 +1231,7 @@ static void *IntToReference(size_t index, SLRefType rt) case REF_ORDER: if (Order::IsValidID(index)) return Order::Get(index); /* in old versions, invalid order was used to mark end of order list */ - if (IsSavegameVersionBefore(5, 2)) return NULL; + if (IsSavegameVersionBefore(SLV_5, 2)) return NULL; SlErrorCorrupt("Referencing invalid Order"); case REF_VEHICLE_OLD: @@ -1515,7 +1292,7 @@ static inline size_t SlCalcListLen(const void *list) { const PtrList *l = (const PtrList *) list; - int type_size = IsSavegameVersionBefore(69) ? 2 : 4; + int type_size = IsSavegameVersionBefore(SLV_69) ? 2 : 4; /* Each entry is saved as type_size bytes, plus type_size bytes are used for the length * of the list */ return l->size() * type_size + type_size; @@ -1562,11 +1339,11 @@ static void SlList(void *list, SLRefType conv) } case SLA_LOAD_CHECK: case SLA_LOAD: { - size_t length = IsSavegameVersionBefore(69) ? SlReadUint16() : SlReadUint32(); + size_t length = IsSavegameVersionBefore(SLV_69) ? SlReadUint16() : SlReadUint32(); /* Load each reference and push to the end of the list */ for (size_t i = 0; i < length; i++) { - size_t data = IsSavegameVersionBefore(69) ? SlReadUint16() : SlReadUint32(); + size_t data = IsSavegameVersionBefore(SLV_69) ? SlReadUint16() : SlReadUint32(); l->push_back((void *)data); } break; @@ -1928,7 +1705,7 @@ bool SlObjectMember(void *ptr, const SaveLoad *sld) break; case SLA_LOAD_CHECK: case SLA_LOAD: - *(size_t *)ptr = IsSavegameVersionBefore(69) ? SlReadUint16() : SlReadUint32(); + *(size_t *)ptr = IsSavegameVersionBefore(SLV_69) ? SlReadUint16() : SlReadUint32(); break; case SLA_PTRS: *(void **)ptr = IntToReference(*(size_t *)ptr, (SLRefType)conv); @@ -2427,7 +2204,7 @@ struct LZOLoadFilter : LoadFilter { /* Check if size is bad */ ((uint32*)out)[0] = size = tmp[1]; - if (_sl_version != 0) { + if (_sl_version != SL_MIN_VERSION) { tmp[0] = TO_BE32(tmp[0]); size = TO_BE32(size); } @@ -3077,7 +2854,7 @@ static SaveOrLoadResult DoLoad(LoadFilter *reader, bool load_check) if (fmt == endof(_saveload_formats)) { DEBUG(sl, 0, "Unknown savegame type, trying to load it as the buggy format"); _sl.lf->Reset(); - _sl_version = 0; + _sl_version = SL_MIN_VERSION; _sl_minor_version = 0; SlXvResetState(); @@ -3096,14 +2873,14 @@ static SaveOrLoadResult DoLoad(LoadFilter *reader, bool load_check) if (fmt->tag == hdr[0]) { /* check version number */ - _sl_version = TO_BE32(hdr[1]) >> 16; + _sl_version = (SaveLoadVersion)(TO_BE32(hdr[1]) >> 16); /* Minor is not used anymore from version 18.0, but it is still needed * in versions before that (4 cases) which can't be removed easy. * Therefore it is loaded, but never saved (or, it saves a 0 in any scenario). */ _sl_minor_version = (TO_BE32(hdr[1]) >> 8) & 0xFF; if (_sl_version & SAVEGAME_VERSION_EXT) { - _sl_version &= ~SAVEGAME_VERSION_EXT; + _sl_version = (SaveLoadVersion)(_sl_version & ~SAVEGAME_VERSION_EXT); _sl_is_ext_version = true; } else { SlXvCheckSpecialSavegameVersions(); @@ -3138,7 +2915,7 @@ static SaveOrLoadResult DoLoad(LoadFilter *reader, bool load_check) GamelogReset(); - if (IsSavegameVersionBefore(4)) { + if (IsSavegameVersionBefore(SLV_4)) { /* * NewGRFs were introduced between 0.3,4 and 0.3.5, which both * shared savegame version 4. Anything before that 'obviously' @@ -3245,7 +3022,7 @@ SaveOrLoadResult SaveOrLoad(const char *filename, SaveLoadOperation fop, Detaile ClearGRFConfigList(&_grfconfig); GamelogReset(); if (!LoadOldSaveGame(filename)) return SL_REINIT; - _sl_version = 0; + _sl_version = SL_MIN_VERSION; _sl_minor_version = 0; SlXvResetState(); GamelogStartAction(GLAT_LOAD); diff --git a/src/saveload/saveload.h b/src/saveload/saveload.h index 7378386355..efc4acb59a 100644 --- a/src/saveload/saveload.h +++ b/src/saveload/saveload.h @@ -18,6 +18,284 @@ #include +/** SaveLoad versions + * Previous savegame versions, the trunk revision where they were + * introduced and the released version that had that particular + * savegame version. + * Up to savegame version 18 there is a minor version as well. + * + * Older entries keep their original numbering. + * + * Newer entries should use a descriptive labels, numeric version + * and PR can be added to comment. + * + * Note that this list must not be reordered. + */ +enum SaveLoadVersion : uint16 { + SL_MIN_VERSION, ///< First savegame version + + SLV_1, ///< 1.0 0.1.x, 0.2.x + SLV_2, /**< 2.0 0.3.0 + * 2.1 0.3.1, 0.3.2 */ + SLV_3, ///< 3.x lost + SLV_4, /**< 4.0 1 + * 4.1 122 0.3.3, 0.3.4 + * 4.2 1222 0.3.5 + * 4.3 1417 + * 4.4 1426 */ + + SLV_5, /**< 5.0 1429 + * 5.1 1440 + * 5.2 1525 0.3.6 */ + SLV_6, /**< 6.0 1721 + * 6.1 1768 */ + SLV_7, ///< 7.0 1770 + SLV_8, ///< 8.0 1786 + SLV_9, ///< 9.0 1909 + + SLV_10, ///< 10.0 2030 + SLV_11, /**< 11.0 2033 + * 11.1 2041 */ + SLV_12, ///< 12.1 2046 + SLV_13, ///< 13.1 2080 0.4.0, 0.4.0.1 + SLV_14, ///< 14.0 2441 + + SLV_15, ///< 15.0 2499 + SLV_16, /**< 16.0 2817 + * 16.1 3155 */ + SLV_17, /**< 17.0 3212 + * 17.1 3218 */ + SLV_18, ///< 18 3227 + SLV_19, ///< 19 3396 + + SLV_20, ///< 20 3403 + SLV_21, ///< 21 3472 0.4.x + SLV_22, ///< 22 3726 + SLV_23, ///< 23 3915 + SLV_24, ///< 24 4150 + + SLV_25, ///< 25 4259 + SLV_26, ///< 26 4466 + SLV_27, ///< 27 4757 + SLV_28, ///< 28 4987 + SLV_29, ///< 29 5070 + + SLV_30, ///< 30 5946 + SLV_31, ///< 31 5999 + SLV_32, ///< 32 6001 + SLV_33, ///< 33 6440 + SLV_34, ///< 34 6455 + + SLV_35, ///< 35 6602 + SLV_36, ///< 36 6624 + SLV_37, ///< 37 7182 + SLV_38, ///< 38 7195 + SLV_39, ///< 39 7269 + + SLV_40, ///< 40 7326 + SLV_41, ///< 41 7348 0.5.x + SLV_42, ///< 42 7573 + SLV_43, ///< 43 7642 + SLV_44, ///< 44 8144 + + SLV_45, ///< 45 8501 + SLV_46, ///< 46 8705 + SLV_47, ///< 47 8735 + SLV_48, ///< 48 8935 + SLV_49, ///< 49 8969 + + SLV_50, ///< 50 8973 + SLV_51, ///< 51 8978 + SLV_52, ///< 52 9066 + SLV_53, ///< 53 9316 + SLV_54, ///< 54 9613 + + SLV_55, ///< 55 9638 + SLV_56, ///< 56 9667 + SLV_57, ///< 57 9691 + SLV_58, ///< 58 9762 + SLV_59, ///< 59 9779 + + SLV_60, ///< 60 9874 + SLV_61, ///< 61 9892 + SLV_62, ///< 62 9905 + SLV_63, ///< 63 9956 + SLV_64, ///< 64 10006 + + SLV_65, ///< 65 10210 + SLV_66, ///< 66 10211 + SLV_67, ///< 67 10236 + SLV_68, ///< 68 10266 + SLV_69, ///< 69 10319 + + SLV_70, ///< 70 10541 + SLV_71, ///< 71 10567 + SLV_72, ///< 72 10601 + SLV_73, ///< 73 10903 + SLV_74, ///< 74 11030 + + SLV_75, ///< 75 11107 + SLV_76, ///< 76 11139 + SLV_77, ///< 77 11172 + SLV_78, ///< 78 11176 + SLV_79, ///< 79 11188 + + SLV_80, ///< 80 11228 + SLV_81, ///< 81 11244 + SLV_82, ///< 82 11410 + SLV_83, ///< 83 11589 + SLV_84, ///< 84 11822 + + SLV_85, ///< 85 11874 + SLV_86, ///< 86 12042 + SLV_87, ///< 87 12129 + SLV_88, ///< 88 12134 + SLV_89, ///< 89 12160 + + SLV_90, ///< 90 12293 + SLV_91, ///< 91 12347 + SLV_92, ///< 92 12381 0.6.x + SLV_93, ///< 93 12648 + SLV_94, ///< 94 12816 + + SLV_95, ///< 95 12924 + SLV_96, ///< 96 13226 + SLV_97, ///< 97 13256 + SLV_98, ///< 98 13375 + SLV_99, ///< 99 13838 + + SLV_100, ///< 100 13952 + SLV_101, ///< 101 14233 + SLV_102, ///< 102 14332 + SLV_103, ///< 103 14598 + SLV_104, ///< 104 14735 + + SLV_105, ///< 105 14803 + SLV_106, ///< 106 14919 + SLV_107, ///< 107 15027 + SLV_108, ///< 108 15045 + SLV_109, ///< 109 15075 + + SLV_110, ///< 110 15148 + SLV_111, ///< 111 15190 + SLV_112, ///< 112 15290 + SLV_113, ///< 113 15340 + SLV_114, ///< 114 15601 + + SLV_115, ///< 115 15695 + SLV_116, ///< 116 15893 0.7.x + SLV_117, ///< 117 16037 + SLV_118, ///< 118 16129 + SLV_119, ///< 119 16242 + + SLV_120, ///< 120 16439 + SLV_121, ///< 121 16694 + SLV_122, ///< 122 16855 + SLV_123, ///< 123 16909 + SLV_124, ///< 124 16993 + + SLV_125, ///< 125 17113 + SLV_126, ///< 126 17433 + SLV_127, ///< 127 17439 + SLV_128, ///< 128 18281 + SLV_129, ///< 129 18292 + + SLV_130, ///< 130 18404 + SLV_131, ///< 131 18481 + SLV_132, ///< 132 18522 + SLV_133, ///< 133 18674 + SLV_134, ///< 134 18703 + + SLV_135, ///< 135 18719 + SLV_136, ///< 136 18764 + SLV_137, ///< 137 18912 + SLV_138, ///< 138 18942 1.0.x + SLV_139, ///< 139 19346 + + SLV_140, ///< 140 19382 + SLV_141, ///< 141 19799 + SLV_142, ///< 142 20003 + SLV_143, ///< 143 20048 + SLV_144, ///< 144 20334 + + SLV_145, ///< 145 20376 + SLV_146, ///< 146 20446 + SLV_147, ///< 147 20621 + SLV_148, ///< 148 20659 + SLV_149, ///< 149 20832 + + SLV_150, ///< 150 20857 + SLV_151, ///< 151 20918 + SLV_152, ///< 152 21171 + SLV_153, ///< 153 21263 + SLV_154, ///< 154 21426 + + SLV_155, ///< 155 21453 + SLV_156, ///< 156 21728 + SLV_157, ///< 157 21862 + SLV_158, ///< 158 21933 + SLV_159, ///< 159 21962 + + SLV_160, ///< 160 21974 1.1.x + SLV_161, ///< 161 22567 + SLV_162, ///< 162 22713 + SLV_163, ///< 163 22767 + SLV_164, ///< 164 23290 + + SLV_165, ///< 165 23304 + SLV_166, ///< 166 23415 + SLV_167, ///< 167 23504 + SLV_168, ///< 168 23637 + SLV_169, ///< 169 23816 + + SLV_170, ///< 170 23826 + SLV_171, ///< 171 23835 + SLV_172, ///< 172 23947 + SLV_173, ///< 173 23967 1.2.0-RC1 + SLV_174, ///< 174 23973 1.2.x + + SLV_175, ///< 175 24136 + SLV_176, ///< 176 24446 + SLV_177, ///< 177 24619 + SLV_178, ///< 178 24789 + SLV_179, ///< 179 24810 + + SLV_180, ///< 180 24998 1.3.x + SLV_181, ///< 181 25012 + SLV_182, ///< 182 25115 FS#5492, r25259, r25296 Goal status + SLV_183, ///< 183 25363 Cargodist + SLV_184, ///< 184 25508 Unit localisation split + + SLV_185, ///< 185 25620 Storybooks + SLV_186, ///< 186 25833 Objects storage + SLV_187, ///< 187 25899 Linkgraph - restricted flows + SLV_188, ///< 188 26169 FS#5831 Unify RV travel time + SLV_189, ///< 189 26450 Heirarchical vehicle subgroups + + SLV_190, ///< 190 26547 Separate order travel and wait times + SLV_191, ///< 191 26636 FS#6026 Fix disaster vehicle storage (No bump) + ///< 191 26646 FS#6041 Linkgraph - store locations + SLV_192, ///< 192 26700 FS#6066 Fix saving of order backups + SLV_193, ///< 193 26802 + SLV_194, ///< 194 26881 v1.5 + + SLV_195, ///< 195 27572 v1.6.1 + SLV_196, ///< 196 27778 v1.7 + SLV_197, ///< 197 27978 v1.8 + SLV_198, ///< 198 PR#6763 Switch town growth rate and counter to actual game ticks + SLV_EXTEND_CARGOTYPES, ///< 199 PR#6802 Extend cargotypes to 64 + + SLV_EXTEND_RAILTYPES, ///< 200 PR#6805 Extend railtypes to 64, adding uint16 to map array. + SLV_EXTEND_PERSISTENT_STORAGE, ///< 201 PR#6885 Extend NewGRF persistant storages. + SLV_EXTEND_INDUSTRY_CARGO_SLOTS, ///< 202 PR#6867 Increase industry cargo slots to 16 in, 16 out + SLV_SHIP_PATH_CACHE, ///< 203 PR#7072 Add path cache for ships + SLV_SHIP_ROTATION, ///< 204 PR#7065 Add extra rotation stages for ships. + + SLV_GROUP_LIVERIES, ///< 205 PR#7108 Livery storage change and group liveries. + + SL_MAX_VERSION, ///< Highest possible saveload version +}; + /** Save or load result codes. */ enum SaveOrLoadResult { SL_OK = 0, ///< completed successfully @@ -97,9 +375,6 @@ enum SLRefType { REF_DOCKS = 13, ///< Load/save a reference to a dock. }; -/** Highest possible savegame version. */ -#define SL_MAX_VERSION UINT16_MAX - /** Flags of a chunk. */ enum ChunkType { CH_RIFF = 0, @@ -228,8 +503,8 @@ struct SaveLoad { SaveLoadType cmd; ///< the action to take with the saved/loaded type, All types need different action VarType conv; ///< type of the variable to be saved, int uint16 length; ///< (conditional) length of the variable (eg. arrays) (max array size is 65536 elements) - uint16 version_from; ///< save/load the variable starting from this savegame version - uint16 version_to; ///< save/load the variable until this savegame version + SaveLoadVersion version_from; ///< save/load the variable starting from this savegame version + SaveLoadVersion version_to; ///< save/load the variable until this savegame version /* NOTE: This element either denotes the address of the variable for a global * variable, or the offset within a struct which is then bound to a variable * during runtime. Decision on which one to use is controlled by the function @@ -384,7 +659,7 @@ typedef SaveLoad SaveLoadGlobVarList; * @param variable Name of the variable in the class or struct referenced by \a base. * @param type Storage of the data in memory and in the savegame. */ -#define SLE_VAR(base, variable, type) SLE_CONDVAR(base, variable, type, 0, SL_MAX_VERSION) +#define SLE_VAR(base, variable, type) SLE_CONDVAR(base, variable, type, SL_MIN_VERSION, SL_MAX_VERSION) /** * Storage of a reference in every version of a savegame. @@ -392,7 +667,7 @@ typedef SaveLoad SaveLoadGlobVarList; * @param variable Name of the variable in the class or struct referenced by \a base. * @param type Type of the reference, a value from #SLRefType. */ -#define SLE_REF(base, variable, type) SLE_CONDREF(base, variable, type, 0, SL_MAX_VERSION) +#define SLE_REF(base, variable, type) SLE_CONDREF(base, variable, type, SL_MIN_VERSION, SL_MAX_VERSION) /** * Storage of an array in every version of a savegame. @@ -401,7 +676,7 @@ typedef SaveLoad SaveLoadGlobVarList; * @param type Storage of the data in memory and in the savegame. * @param length Number of elements in the array. */ -#define SLE_ARR(base, variable, type, length) SLE_CONDARR(base, variable, type, length, 0, SL_MAX_VERSION) +#define SLE_ARR(base, variable, type, length) SLE_CONDARR(base, variable, type, length, SL_MIN_VERSION, SL_MAX_VERSION) /** * Storage of a string in every savegame version. @@ -410,7 +685,7 @@ typedef SaveLoad SaveLoadGlobVarList; * @param type Storage of the data in memory and in the savegame. * @param length Number of elements in the string (only used for fixed size buffers). */ -#define SLE_STR(base, variable, type, length) SLE_CONDSTR(base, variable, type, length, 0, SL_MAX_VERSION) +#define SLE_STR(base, variable, type, length) SLE_CONDSTR(base, variable, type, length, SL_MIN_VERSION, SL_MAX_VERSION) /** * Storage of a std::string in every savegame version. @@ -418,7 +693,7 @@ typedef SaveLoad SaveLoadGlobVarList; * @param variable Name of the variable in the class or struct referenced by \a base. * @param type Storage of the data in memory and in the savegame. */ -#define SLE_STDSTR(base, variable, type) SLE_CONDSTDSTR(base, variable, type, 0, SL_MAX_VERSION) +#define SLE_STDSTR(base, variable, type) SLE_CONDSTDSTR(base, variable, type, SL_MIN_VERSION, SL_MAX_VERSION) /** * Storage of a list in every savegame version. @@ -426,7 +701,7 @@ typedef SaveLoad SaveLoadGlobVarList; * @param variable Name of the variable in the class or struct referenced by \a base. * @param type Storage of the data in memory and in the savegame. */ -#define SLE_LST(base, variable, type) SLE_CONDLST(base, variable, type, 0, SL_MAX_VERSION) +#define SLE_LST(base, variable, type) SLE_CONDLST(base, variable, type, SL_MIN_VERSION, SL_MAX_VERSION) /** * Storage of a deque in every savegame version. @@ -434,7 +709,7 @@ typedef SaveLoad SaveLoadGlobVarList; * @param variable Name of the variable in the class or struct referenced by \a base. * @param type Storage of the data in memory and in the savegame. */ -#define SLE_PTRDEQ(base, variable, type) SLE_CONDPTRDEQ(base, variable, type, 0, SL_MAX_VERSION) +#define SLE_PTRDEQ(base, variable, type) SLE_CONDPTRDEQ(base, variable, type, SL_MIN_VERSION, SL_MAX_VERSION) /** * Storage of a vector in every savegame version. @@ -442,13 +717,13 @@ typedef SaveLoad SaveLoadGlobVarList; * @param variable Name of the variable in the class or struct referenced by \a base. * @param type Storage of the data in memory and in the savegame. */ -#define SLE_VEC(base, variable, type) SLE_CONDVEC(base, variable, type, 0, SL_MAX_VERSION) +#define SLE_VEC(base, variable, type) SLE_CONDVEC(base, variable, type, SL_MIN_VERSION, SL_MAX_VERSION) /** * Empty space in every savegame version. * @param length Length of the empty space. */ -#define SLE_NULL(length) SLE_CONDNULL(length, 0, SL_MAX_VERSION) +#define SLE_NULL(length) SLE_CONDNULL(length, SL_MIN_VERSION, SL_MAX_VERSION) /** * Empty space in some savegame versions. @@ -461,13 +736,13 @@ typedef SaveLoad SaveLoadGlobVarList; #define SLE_CONDNULL(length, from, to) SLE_CONDNULL_X(length, from, to, SlXvFeatureTest()) /** Translate values ingame to different values in the savegame and vv. */ -#define SLE_WRITEBYTE(base, variable) SLE_GENERAL(SL_WRITEBYTE, base, variable, 0, 0, 0, 0) +#define SLE_WRITEBYTE(base, variable) SLE_GENERAL(SL_WRITEBYTE, base, variable, 0, 0, SL_MIN_VERSION, SL_MAX_VERSION) -#define SLE_VEH_INCLUDE() {false, SL_VEH_INCLUDE, 0, 0, 0, SL_MAX_VERSION, NULL, 0, SlXvFeatureTest()} -#define SLE_ST_INCLUDE() {false, SL_ST_INCLUDE, 0, 0, 0, SL_MAX_VERSION, NULL, 0, SlXvFeatureTest()} +#define SLE_VEH_INCLUDE() {false, SL_VEH_INCLUDE, 0, 0, SL_MIN_VERSION, SL_MAX_VERSION, NULL, 0, SlXvFeatureTest()} +#define SLE_ST_INCLUDE() {false, SL_ST_INCLUDE, 0, 0, SL_MIN_VERSION, SL_MAX_VERSION, NULL, 0, SlXvFeatureTest()} /** End marker of a struct/class save or load. */ -#define SLE_END() {false, SL_END, 0, 0, 0, 0, NULL, 0, SlXvFeatureTest()} +#define SLE_END() {false, SL_END, 0, 0, SL_MIN_VERSION, SL_MIN_VERSION, NULL, 0, SlXvFeatureTest()} /** * Storage of global simple variables, references (pointers), and arrays. @@ -566,49 +841,49 @@ typedef SaveLoad SaveLoadGlobVarList; * @param variable Name of the global variable. * @param type Storage of the data in memory and in the savegame. */ -#define SLEG_VAR(variable, type) SLEG_CONDVAR(variable, type, 0, SL_MAX_VERSION) +#define SLEG_VAR(variable, type) SLEG_CONDVAR(variable, type, SL_MIN_VERSION, SL_MAX_VERSION) /** * Storage of a global reference in every savegame version. * @param variable Name of the global variable. * @param type Storage of the data in memory and in the savegame. */ -#define SLEG_REF(variable, type) SLEG_CONDREF(variable, type, 0, SL_MAX_VERSION) +#define SLEG_REF(variable, type) SLEG_CONDREF(variable, type, SL_MIN_VERSION, SL_MAX_VERSION) /** * Storage of a global array in every savegame version. * @param variable Name of the global variable. * @param type Storage of the data in memory and in the savegame. */ -#define SLEG_ARR(variable, type) SLEG_CONDARR(variable, type, lengthof(variable), 0, SL_MAX_VERSION) +#define SLEG_ARR(variable, type) SLEG_CONDARR(variable, type, lengthof(variable), SL_MIN_VERSION, SL_MAX_VERSION) /** * Storage of a global string in every savegame version. * @param variable Name of the global variable. * @param type Storage of the data in memory and in the savegame. */ -#define SLEG_STR(variable, type) SLEG_CONDSTR(variable, type, sizeof(variable), 0, SL_MAX_VERSION) +#define SLEG_STR(variable, type) SLEG_CONDSTR(variable, type, sizeof(variable), SL_MIN_VERSION, SL_MAX_VERSION) /** * Storage of a global list in every savegame version. * @param variable Name of the global variable. * @param type Storage of the data in memory and in the savegame. */ -#define SLEG_LST(variable, type) SLEG_CONDLST(variable, type, 0, SL_MAX_VERSION) +#define SLEG_LST(variable, type) SLEG_CONDLST(variable, type, SL_MIN_VERSION, SL_MAX_VERSION) /** * Storage of a global deque in every savegame version. * @param variable Name of the global variable. * @param type Storage of the data in memory and in the savegame. */ -#define SLEG_PTRDEQ(variable, type) SLEG_CONDPTRDEQ(variable, type, 0, SL_MAX_VERSION) +#define SLEG_PTRDEQ(variable, type) SLEG_CONDPTRDEQ(variable, type, SL_MIN_VERSION, SL_MAX_VERSION) /** * Storage of a global vector in every savegame version. * @param variable Name of the global variable. * @param type Storage of the data in memory and in the savegame. */ -#define SLEG_VEC(variable, type) SLEG_CONDVEC(variable, type, 0, SL_MAX_VERSION) +#define SLEG_VEC(variable, type) SLEG_CONDVEC(variable, type, SL_MIN_VERSION, SL_MAX_VERSION) /** * Empty global space in some savegame versions. @@ -620,7 +895,7 @@ typedef SaveLoad SaveLoadGlobVarList; #define SLEG_CONDNULL(length, from, to) {true, SL_ARR, SLE_FILE_U8 | SLE_VAR_NULL | SLF_NOT_IN_CONFIG, length, from, to, (void*)NULL, SlXvFeatureTest()} /** End marker of global variables save or load. */ -#define SLEG_END() {true, SL_END, 0, 0, 0, 0, NULL, 0, SlXvFeatureTest()} +#define SLEG_END() {true, SL_END, 0, 0, SL_MIN_VERSION, SL_MIN_VERSION, NULL, 0, SlXvFeatureTest()} /** * Checks whether the savegame is below \a major.\a minor. @@ -628,23 +903,23 @@ typedef SaveLoad SaveLoadGlobVarList; * @param minor Minor number of the version to check against. If \a minor is 0 or not specified, only the major number is checked. * @return Savegame version is earlier than the specified version. */ -static inline bool IsSavegameVersionBefore(uint16 major, byte minor = 0) +static inline bool IsSavegameVersionBefore(SaveLoadVersion major, byte minor = 0) { - extern uint16 _sl_version; - extern byte _sl_minor_version; + extern SaveLoadVersion _sl_version; + extern byte _sl_minor_version; return _sl_version < major || (minor > 0 && _sl_version == major && _sl_minor_version < minor); } /** * Checks if some version from/to combination falls within the range of the * active savegame version. - * @param version_from Lowest version number that falls within the range. - * @param version_to Highest version number that falls within the range. + * @param version_from Inclusive savegame version lower bound. + * @param version_to Exclusive savegame version upper bound. SL_MAX_VERSION if no upper bound. * @return Active savegame version falls within the given range. */ -static inline bool SlIsObjectCurrentlyValid(uint16 version_from, uint16 version_to, SlXvFeatureTest ext_feature_test) +static inline bool SlIsObjectCurrentlyValid(SaveLoadVersion version_from, SaveLoadVersion version_to, SlXvFeatureTest ext_feature_test) { - extern const uint16 SAVEGAME_VERSION; + extern const SaveLoadVersion SAVEGAME_VERSION; if (!ext_feature_test.IsFeaturePresent(SAVEGAME_VERSION, version_from, version_to)) return false; return true; diff --git a/src/saveload/signs_sl.cpp b/src/saveload/signs_sl.cpp index 132ac181e4..545c628b36 100644 --- a/src/saveload/signs_sl.cpp +++ b/src/saveload/signs_sl.cpp @@ -19,15 +19,15 @@ /** Description of a sign within the savegame. */ static const SaveLoad _sign_desc[] = { - SLE_CONDVAR(Sign, name, SLE_NAME, 0, 83), - SLE_CONDSTR(Sign, name, SLE_STR | SLF_ALLOW_CONTROL, 0, 84, SL_MAX_VERSION), - SLE_CONDVAR(Sign, x, SLE_FILE_I16 | SLE_VAR_I32, 0, 4), - SLE_CONDVAR(Sign, y, SLE_FILE_I16 | SLE_VAR_I32, 0, 4), - SLE_CONDVAR(Sign, x, SLE_INT32, 5, SL_MAX_VERSION), - SLE_CONDVAR(Sign, y, SLE_INT32, 5, SL_MAX_VERSION), - SLE_CONDVAR(Sign, owner, SLE_UINT8, 6, SL_MAX_VERSION), - SLE_CONDVAR(Sign, z, SLE_FILE_U8 | SLE_VAR_I32, 0, 163), - SLE_CONDVAR(Sign, z, SLE_INT32, 164, SL_MAX_VERSION), + SLE_CONDVAR(Sign, name, SLE_NAME, SL_MIN_VERSION, SLV_84), + SLE_CONDSTR(Sign, name, SLE_STR | SLF_ALLOW_CONTROL, 0, SLV_84, SL_MAX_VERSION), + SLE_CONDVAR(Sign, x, SLE_FILE_I16 | SLE_VAR_I32, SL_MIN_VERSION, SLV_5), + SLE_CONDVAR(Sign, y, SLE_FILE_I16 | SLE_VAR_I32, SL_MIN_VERSION, SLV_5), + SLE_CONDVAR(Sign, x, SLE_INT32, SLV_5, SL_MAX_VERSION), + SLE_CONDVAR(Sign, y, SLE_INT32, SLV_5, SL_MAX_VERSION), + SLE_CONDVAR(Sign, owner, SLE_UINT8, SLV_6, SL_MAX_VERSION), + SLE_CONDVAR(Sign, z, SLE_FILE_U8 | SLE_VAR_I32, SL_MIN_VERSION, SLV_164), + SLE_CONDVAR(Sign, z, SLE_INT32, SLV_164, SL_MAX_VERSION), SLE_END() }; @@ -55,12 +55,12 @@ static void Load_SIGN() * - we can't use IsValidCompany() now, so this is fixed in AfterLoadGame() * All signs that were saved are valid (including those with just 'Sign' and INVALID_OWNER). * - so set owner to OWNER_NONE if needed (signs from pre-version 6.1 would be lost) */ - if (IsSavegameVersionBefore(6, 1) || (IsSavegameVersionBefore(83) && si->owner == INVALID_OWNER)) { + if (IsSavegameVersionBefore(SLV_6, 1) || (IsSavegameVersionBefore(SLV_83) && si->owner == INVALID_OWNER)) { si->owner = OWNER_NONE; } /* Signs placed in scenario editor shall now be OWNER_DEITY */ - if (IsSavegameVersionBefore(171) && si->owner == OWNER_NONE && _file_to_saveload.abstract_ftype == FT_SCENARIO) { + if (IsSavegameVersionBefore(SLV_171) && si->owner == OWNER_NONE && _file_to_saveload.abstract_ftype == FT_SCENARIO) { si->owner = OWNER_DEITY; } } diff --git a/src/saveload/station_sl.cpp b/src/saveload/station_sl.cpp index a74c630c65..cf93e7e299 100644 --- a/src/saveload/station_sl.cpp +++ b/src/saveload/station_sl.cpp @@ -159,18 +159,18 @@ void AfterLoadRoadStops() static const SaveLoad _roadstop_desc[] = { SLE_VAR(RoadStop, xy, SLE_UINT32), - SLE_CONDNULL(1, 0, 44), + SLE_CONDNULL(1, SL_MIN_VERSION, SLV_45), SLE_VAR(RoadStop, status, SLE_UINT8), /* Index was saved in some versions, but this is not needed */ - SLE_CONDNULL(4, 0, 8), - SLE_CONDNULL(2, 0, 44), - SLE_CONDNULL(1, 0, 25), + SLE_CONDNULL(4, SL_MIN_VERSION, SLV_9), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_45), + SLE_CONDNULL(1, SL_MIN_VERSION, SLV_26), SLE_REF(RoadStop, next, REF_ROADSTOPS), - SLE_CONDNULL(2, 0, 44), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_45), - SLE_CONDNULL(4, 0, 24), - SLE_CONDNULL(1, 25, 25), + SLE_CONDNULL(4, SL_MIN_VERSION, SLV_25), + SLE_CONDNULL(1, SLV_25, SLV_26), SLE_END() }; @@ -184,61 +184,61 @@ static const SaveLoad _dock_desc[] = { }; static const SaveLoad _old_station_desc[] = { - SLE_CONDVAR(Station, xy, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), - SLE_CONDVAR(Station, xy, SLE_UINT32, 6, SL_MAX_VERSION), - SLE_CONDNULL(4, 0, 5), ///< bus/lorry tile - SLE_CONDVAR(Station, train_station.tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), - SLE_CONDVAR(Station, train_station.tile, SLE_UINT32, 6, SL_MAX_VERSION), - SLE_CONDVAR(Station, airport.tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), - SLE_CONDVAR(Station, airport.tile, SLE_UINT32, 6, SL_MAX_VERSION), - SLE_CONDVAR(Station, dock_station.tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), - SLE_CONDVAR(Station, dock_station.tile, SLE_UINT32, 6, SL_MAX_VERSION), + SLE_CONDVAR(Station, xy, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(Station, xy, SLE_UINT32, SLV_6, SL_MAX_VERSION), + SLE_CONDNULL(4, SL_MIN_VERSION, SLV_6), ///< bus/lorry tile + SLE_CONDVAR(Station, train_station.tile, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(Station, train_station.tile, SLE_UINT32, SLV_6, SL_MAX_VERSION), + SLE_CONDVAR(Station, airport.tile, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(Station, airport.tile, SLE_UINT32, SLV_6, SL_MAX_VERSION), + SLE_CONDVAR(Station, dock_station.tile, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(Station, dock_station.tile, SLE_UINT32, SLV_6, SL_MAX_VERSION), SLE_REF(Station, town, REF_TOWN), SLE_VAR(Station, train_station.w, SLE_FILE_U8 | SLE_VAR_U16), - SLE_CONDVAR(Station, train_station.h, SLE_FILE_U8 | SLE_VAR_U16, 2, SL_MAX_VERSION), + SLE_CONDVAR(Station, train_station.h, SLE_FILE_U8 | SLE_VAR_U16, SLV_2, SL_MAX_VERSION), - SLE_CONDNULL(1, 0, 3), ///< alpha_order + SLE_CONDNULL(1, SL_MIN_VERSION, SLV_4), ///< alpha_order SLE_VAR(Station, string_id, SLE_STRINGID), - SLE_CONDSTR(Station, name, SLE_STR | SLF_ALLOW_CONTROL, 0, 84, SL_MAX_VERSION), - SLE_CONDVAR(Station, indtype, SLE_UINT8, 103, SL_MAX_VERSION), - SLE_CONDVAR(Station, had_vehicle_of_type, SLE_FILE_U16 | SLE_VAR_U8, 0, 121), - SLE_CONDVAR(Station, had_vehicle_of_type, SLE_UINT8, 122, SL_MAX_VERSION), + SLE_CONDSTR(Station, name, SLE_STR | SLF_ALLOW_CONTROL, 0, SLV_84, SL_MAX_VERSION), + SLE_CONDVAR(Station, indtype, SLE_UINT8, SLV_103, SL_MAX_VERSION), + SLE_CONDVAR(Station, had_vehicle_of_type, SLE_FILE_U16 | SLE_VAR_U8, SL_MIN_VERSION, SLV_122), + SLE_CONDVAR(Station, had_vehicle_of_type, SLE_UINT8, SLV_122, SL_MAX_VERSION), SLE_VAR(Station, time_since_load, SLE_UINT8), SLE_VAR(Station, time_since_unload, SLE_UINT8), - SLE_CONDVAR_X(Station, delete_ctr, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 0, 3)), - SLE_CONDVAR_X(Station, delete_ctr, SLE_FILE_U16 | SLE_VAR_U8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 4)), + SLE_CONDVAR_X(Station, delete_ctr, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 0, 3)), + SLE_CONDVAR_X(Station, delete_ctr, SLE_FILE_U16 | SLE_VAR_U8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 4)), SLE_VAR(Station, owner, SLE_UINT8), SLE_VAR(Station, facilities, SLE_UINT8), SLE_VAR(Station, airport.type, SLE_UINT8), - SLE_CONDNULL(2, 0, 5), ///< Truck/bus stop status - SLE_CONDNULL(1, 0, 4), ///< Blocked months + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_6), ///< Truck/bus stop status + SLE_CONDNULL(1, SL_MIN_VERSION, SLV_5), ///< Blocked months - SLE_CONDVAR(Station, airport.flags, SLE_VAR_U64 | SLE_FILE_U16, 0, 2), - SLE_CONDVAR(Station, airport.flags, SLE_VAR_U64 | SLE_FILE_U32, 3, 45), - SLE_CONDVAR(Station, airport.flags, SLE_UINT64, 46, SL_MAX_VERSION), + SLE_CONDVAR(Station, airport.flags, SLE_VAR_U64 | SLE_FILE_U16, SL_MIN_VERSION, SLV_3), + SLE_CONDVAR(Station, airport.flags, SLE_VAR_U64 | SLE_FILE_U32, SLV_3, SLV_46), + SLE_CONDVAR(Station, airport.flags, SLE_UINT64, SLV_46, SL_MAX_VERSION), - SLE_CONDNULL(2, 0, 25), ///< last-vehicle - SLEG_CONDVAR_X(_old_last_vehicle_type, SLE_UINT8, 26, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_ST_LAST_VEH_TYPE, 0, 0)), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_26), ///< last-vehicle + SLEG_CONDVAR_X(_old_last_vehicle_type, SLE_UINT8, SLV_26, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_ST_LAST_VEH_TYPE, 0, 0)), - SLE_CONDNULL(2, 3, 25), ///< custom station class and id - SLE_CONDVAR(Station, build_date, SLE_FILE_U16 | SLE_VAR_I32, 3, 30), - SLE_CONDVAR(Station, build_date, SLE_INT32, 31, SL_MAX_VERSION), + SLE_CONDNULL(2, SLV_3, SLV_26), ///< custom station class and id + SLE_CONDVAR(Station, build_date, SLE_FILE_U16 | SLE_VAR_I32, SLV_3, SLV_31), + SLE_CONDVAR(Station, build_date, SLE_INT32, SLV_31, SL_MAX_VERSION), - SLE_CONDREF(Station, bus_stops, REF_ROADSTOPS, 6, SL_MAX_VERSION), - SLE_CONDREF(Station, truck_stops, REF_ROADSTOPS, 6, SL_MAX_VERSION), + SLE_CONDREF(Station, bus_stops, REF_ROADSTOPS, SLV_6, SL_MAX_VERSION), + SLE_CONDREF(Station, truck_stops, REF_ROADSTOPS, SLV_6, SL_MAX_VERSION), /* Used by newstations for graphic variations */ - SLE_CONDVAR(Station, random_bits, SLE_UINT16, 27, SL_MAX_VERSION), - SLE_CONDVAR(Station, waiting_triggers, SLE_UINT8, 27, SL_MAX_VERSION), - SLE_CONDVAR(Station, num_specs, SLE_UINT8, 27, SL_MAX_VERSION), + SLE_CONDVAR(Station, random_bits, SLE_UINT16, SLV_27, SL_MAX_VERSION), + SLE_CONDVAR(Station, waiting_triggers, SLE_UINT8, SLV_27, SL_MAX_VERSION), + SLE_CONDVAR(Station, num_specs, SLE_UINT8, SLV_27, SL_MAX_VERSION), - SLE_CONDVEC(Station, loading_vehicles, REF_VEHICLE, 57, SL_MAX_VERSION), + SLE_CONDVEC(Station, loading_vehicles, REF_VEHICLE, SLV_57, SL_MAX_VERSION), /* reserve extra space in savegame here. (currently 32 bytes) */ - SLE_CONDNULL(32, 2, SL_MAX_VERSION), + SLE_CONDNULL(32, SLV_2, SL_MAX_VERSION), SLE_END() }; @@ -251,8 +251,8 @@ static uint8 _cargo_days; static Money _cargo_feeder_share; static const SaveLoad _station_speclist_desc[] = { - SLE_CONDVAR(StationSpecList, grfid, SLE_UINT32, 27, SL_MAX_VERSION), - SLE_CONDVAR(StationSpecList, localidx, SLE_UINT8, 27, SL_MAX_VERSION), + SLE_CONDVAR(StationSpecList, grfid, SLE_UINT32, SLV_27, SL_MAX_VERSION), + SLE_CONDVAR(StationSpecList, localidx, SLE_UINT8, SLV_27, SL_MAX_VERSION), SLE_END() }; @@ -273,7 +273,7 @@ static const SaveLoad _flow_desc[] = { SLE_VAR(FlowSaveLoad, source, SLE_UINT16), SLE_VAR(FlowSaveLoad, via, SLE_UINT16), SLE_VAR(FlowSaveLoad, share, SLE_UINT32), - SLE_CONDVAR(FlowSaveLoad, restricted, SLE_BOOL, 187, SL_MAX_VERSION), + SLE_CONDVAR(FlowSaveLoad, restricted, SLE_BOOL, SLV_187, SL_MAX_VERSION), SLE_END() }; #endif @@ -286,29 +286,29 @@ static const SaveLoad _flow_desc[] = { const SaveLoad *GetGoodsDesc() { static const SaveLoad goods_desc[] = { - SLEG_CONDVAR( _waiting_acceptance, SLE_UINT16, 0, 67), - SLE_CONDVAR(GoodsEntry, status, SLE_UINT8, 68, SL_MAX_VERSION), - SLE_CONDNULL(2, 51, 67), + SLEG_CONDVAR( _waiting_acceptance, SLE_UINT16, SL_MIN_VERSION, SLV_68), + SLE_CONDVAR(GoodsEntry, status, SLE_UINT8, SLV_68, SL_MAX_VERSION), + SLE_CONDNULL(2, SLV_51, SLV_68), SLE_VAR(GoodsEntry, time_since_pickup, SLE_UINT8), - SLE_CONDNULL_X(6, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 4)), + SLE_CONDNULL_X(6, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 4)), SLE_VAR(GoodsEntry, rating, SLE_UINT8), - SLEG_CONDVAR( _cargo_source, SLE_FILE_U8 | SLE_VAR_U16, 0, 6), - SLEG_CONDVAR( _cargo_source, SLE_UINT16, 7, 67), - SLEG_CONDVAR( _cargo_source_xy, SLE_UINT32, 44, 67), - SLEG_CONDVAR( _cargo_days, SLE_UINT8, 0, 67), + SLEG_CONDVAR( _cargo_source, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_7), + SLEG_CONDVAR( _cargo_source, SLE_UINT16, SLV_7, SLV_68), + SLEG_CONDVAR( _cargo_source_xy, SLE_UINT32, SLV_44, SLV_68), + SLEG_CONDVAR( _cargo_days, SLE_UINT8, SL_MIN_VERSION, SLV_68), SLE_VAR(GoodsEntry, last_speed, SLE_UINT8), SLE_VAR(GoodsEntry, last_age, SLE_UINT8), - SLEG_CONDVAR( _cargo_feeder_share, SLE_FILE_U32 | SLE_VAR_I64, 14, 64), - SLEG_CONDVAR( _cargo_feeder_share, SLE_INT64, 65, 67), - SLE_CONDVAR(GoodsEntry, amount_fract, SLE_UINT8, 150, SL_MAX_VERSION), - SLEG_CONDPTRDEQ( _packets, REF_CARGO_PACKET, 68, 182), - SLEG_CONDVAR( _num_dests, SLE_UINT32, 183, SL_MAX_VERSION), - SLE_CONDVAR(GoodsEntry, cargo.reserved_count, SLE_UINT, 181, SL_MAX_VERSION), - SLE_CONDVAR(GoodsEntry, link_graph, SLE_UINT16, 183, SL_MAX_VERSION), - SLE_CONDVAR(GoodsEntry, node, SLE_UINT16, 183, SL_MAX_VERSION), - SLEG_CONDVAR( _num_flows, SLE_UINT32, 183, SL_MAX_VERSION), - SLE_CONDVAR(GoodsEntry, max_waiting_cargo, SLE_UINT32, 183, SL_MAX_VERSION), - SLE_CONDVAR_X(GoodsEntry, last_vehicle_type, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_ST_LAST_VEH_TYPE, 1)), + SLEG_CONDVAR( _cargo_feeder_share, SLE_FILE_U32 | SLE_VAR_I64, SLV_14, SLV_65), + SLEG_CONDVAR( _cargo_feeder_share, SLE_INT64, SLV_65, SLV_68), + SLE_CONDVAR(GoodsEntry, amount_fract, SLE_UINT8, SLV_150, SL_MAX_VERSION), + SLEG_CONDPTRDEQ( _packets, REF_CARGO_PACKET, SLV_68, SLV_183), + SLEG_CONDVAR( _num_dests, SLE_UINT32, SLV_183, SL_MAX_VERSION), + SLE_CONDVAR(GoodsEntry, cargo.reserved_count, SLE_UINT, SLV_181, SL_MAX_VERSION), + SLE_CONDVAR(GoodsEntry, link_graph, SLE_UINT16, SLV_183, SL_MAX_VERSION), + SLE_CONDVAR(GoodsEntry, node, SLE_UINT16, SLV_183, SL_MAX_VERSION), + SLEG_CONDVAR( _num_flows, SLE_UINT32, SLV_183, SL_MAX_VERSION), + SLE_CONDVAR(GoodsEntry, max_waiting_cargo, SLE_UINT32, SLV_183, SL_MAX_VERSION), + SLE_CONDVAR_X(GoodsEntry, last_vehicle_type, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_ST_LAST_VEH_TYPE, 1)), SLE_END() }; @@ -351,7 +351,7 @@ static void Load_STNS() _cargo_days = 0; _cargo_feeder_share = 0; - uint num_cargo = IsSavegameVersionBefore(55) ? 12 : IsSavegameVersionBefore(199) ? 32 : NUM_CARGO; + uint num_cargo = IsSavegameVersionBefore(SLV_55) ? 12 : IsSavegameVersionBefore(SLV_EXTEND_CARGOTYPES) ? 32 : NUM_CARGO; int index; while ((index = SlIterateArray()) != -1) { Station *st = new (index) Station(); @@ -364,11 +364,11 @@ static void Load_STNS() GoodsEntry *ge = &st->goods[i]; SlObject(ge, GetGoodsDesc()); SwapPackets(ge); - if (IsSavegameVersionBefore(68)) { + if (IsSavegameVersionBefore(SLV_68)) { SB(ge->status, GoodsEntry::GES_ACCEPTANCE, 1, HasBit(_waiting_acceptance, 15)); if (GB(_waiting_acceptance, 0, 12) != 0) { /* In old versions, enroute_from used 0xFF as INVALID_STATION */ - StationID source = (IsSavegameVersionBefore(7) && _cargo_source == 0xFF) ? INVALID_STATION : _cargo_source; + StationID source = (IsSavegameVersionBefore(SLV_7) && _cargo_source == 0xFF) ? INVALID_STATION : _cargo_source; /* Make sure we can allocate the CargoPacket. This is safe * as there can only be ~64k stations and 32 cargoes in these @@ -398,12 +398,12 @@ static void Load_STNS() static void Ptrs_STNS() { /* Don't run when savegame version is higher than or equal to 123. */ - if (!IsSavegameVersionBefore(123)) return; + if (!IsSavegameVersionBefore(SLV_123)) return; - uint num_cargo = IsSavegameVersionBefore(199) ? 32 : NUM_CARGO; + uint num_cargo = IsSavegameVersionBefore(SLV_EXTEND_CARGOTYPES) ? 32 : NUM_CARGO; Station *st; FOR_ALL_STATIONS(st) { - if (!IsSavegameVersionBefore(68)) { + if (!IsSavegameVersionBefore(SLV_68)) { for (CargoID i = 0; i < num_cargo; i++) { GoodsEntry *ge = &st->goods[i]; SwapPackets(ge); @@ -421,8 +421,8 @@ static const SaveLoad _base_station_desc[] = { SLE_REF(BaseStation, town, REF_TOWN), SLE_VAR(BaseStation, string_id, SLE_STRINGID), SLE_STR(BaseStation, name, SLE_STR | SLF_ALLOW_CONTROL, 0), - SLE_CONDVAR_X(Station, delete_ctr, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 0, 3)), - SLE_CONDVAR_X(Station, delete_ctr, SLE_FILE_U16 | SLE_VAR_U8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 4)), + SLE_CONDVAR_X(Station, delete_ctr, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 0, 3)), + SLE_CONDVAR_X(Station, delete_ctr, SLE_FILE_U16 | SLE_VAR_U8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 4)), SLE_VAR(BaseStation, owner, SLE_UINT8), SLE_VAR(BaseStation, facilities, SLE_UINT8), SLE_VAR(BaseStation, build_date, SLE_INT32), @@ -447,29 +447,29 @@ static const SaveLoad _station_desc[] = { SLE_REF(Station, bus_stops, REF_ROADSTOPS), SLE_REF(Station, truck_stops, REF_ROADSTOPS), - SLE_CONDVAR_X(Station, dock_station.tile, SLE_UINT32, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_MULTIPLE_DOCKS, 0, 0)), - SLE_CONDREF_X(Station, docks, REF_DOCKS, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_MULTIPLE_DOCKS, 1)), + SLE_CONDVAR_X(Station, dock_station.tile, SLE_UINT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_MULTIPLE_DOCKS, 0, 0)), + SLE_CONDREF_X(Station, docks, REF_DOCKS, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_MULTIPLE_DOCKS, 1)), SLE_VAR(Station, airport.tile, SLE_UINT32), - SLE_CONDVAR(Station, airport.w, SLE_FILE_U8 | SLE_VAR_U16, 140, SL_MAX_VERSION), - SLE_CONDVAR(Station, airport.h, SLE_FILE_U8 | SLE_VAR_U16, 140, SL_MAX_VERSION), + SLE_CONDVAR(Station, airport.w, SLE_FILE_U8 | SLE_VAR_U16, SLV_140, SL_MAX_VERSION), + SLE_CONDVAR(Station, airport.h, SLE_FILE_U8 | SLE_VAR_U16, SLV_140, SL_MAX_VERSION), SLE_VAR(Station, airport.type, SLE_UINT8), - SLE_CONDVAR(Station, airport.layout, SLE_UINT8, 145, SL_MAX_VERSION), - SLE_CONDNULL_X(1, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 1, 6)), + SLE_CONDVAR(Station, airport.layout, SLE_UINT8, SLV_145, SL_MAX_VERSION), + SLE_CONDNULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 1, 6)), SLE_VAR(Station, airport.flags, SLE_UINT64), - SLE_CONDNULL_X(8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 1, 6)), - SLE_CONDVAR(Station, airport.rotation, SLE_UINT8, 145, SL_MAX_VERSION), - SLEG_CONDARR(_old_st_persistent_storage.storage, SLE_UINT32, 16, 145, 160), - SLE_CONDREF(Station, airport.psa, REF_STORAGE, 161, SL_MAX_VERSION), + SLE_CONDNULL_X(8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 1, 6)), + SLE_CONDVAR(Station, airport.rotation, SLE_UINT8, SLV_145, SL_MAX_VERSION), + SLEG_CONDARR(_old_st_persistent_storage.storage, SLE_UINT32, 16, SLV_145, SLV_161), + SLE_CONDREF(Station, airport.psa, REF_STORAGE, SLV_161, SL_MAX_VERSION), SLE_VAR(Station, indtype, SLE_UINT8), SLE_VAR(Station, time_since_load, SLE_UINT8), SLE_VAR(Station, time_since_unload, SLE_UINT8), - SLEG_CONDVAR_X(_old_last_vehicle_type, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_ST_LAST_VEH_TYPE, 0, 0)), + SLEG_CONDVAR_X(_old_last_vehicle_type, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_ST_LAST_VEH_TYPE, 0, 0)), SLE_VAR(Station, had_vehicle_of_type, SLE_UINT8), SLE_VEC(Station, loading_vehicles, REF_VEHICLE), - SLE_CONDVAR(Station, always_accepted, SLE_FILE_U32 | SLE_VAR_U64, 127, 198), - SLE_CONDVAR(Station, always_accepted, SLE_UINT64, 199, SL_MAX_VERSION), + SLE_CONDVAR(Station, always_accepted, SLE_FILE_U32 | SLE_VAR_U64, SLV_127, SLV_EXTEND_CARGOTYPES), + SLE_CONDVAR(Station, always_accepted, SLE_UINT64, SLV_EXTEND_CARGOTYPES, SL_MAX_VERSION), SLE_END() }; @@ -480,9 +480,9 @@ static const SaveLoad _waypoint_desc[] = { SLE_VAR(Waypoint, town_cn, SLE_UINT16), - SLE_CONDVAR(Waypoint, train_station.tile, SLE_UINT32, 124, SL_MAX_VERSION), - SLE_CONDVAR(Waypoint, train_station.w, SLE_FILE_U8 | SLE_VAR_U16, 124, SL_MAX_VERSION), - SLE_CONDVAR(Waypoint, train_station.h, SLE_FILE_U8 | SLE_VAR_U16, 124, SL_MAX_VERSION), + SLE_CONDVAR(Waypoint, train_station.tile, SLE_UINT32, SLV_124, SL_MAX_VERSION), + SLE_CONDVAR(Waypoint, train_station.w, SLE_FILE_U8 | SLE_VAR_U16, SLV_124, SL_MAX_VERSION), + SLE_CONDVAR(Waypoint, train_station.h, SLE_FILE_U8 | SLE_VAR_U16, SLV_124, SL_MAX_VERSION), SLE_END() }; @@ -557,7 +557,7 @@ static void Load_STNN() { _num_flows = 0; - const uint num_cargo = IsSavegameVersionBefore(199) ? 32 : NUM_CARGO; + const uint num_cargo = IsSavegameVersionBefore(SLV_EXTEND_CARGOTYPES) ? 32 : NUM_CARGO; ReadBuffer *buffer = ReadBuffer::GetCurrent(); int index; @@ -571,7 +571,7 @@ static void Load_STNN() Station *st = Station::From(bst); /* Before savegame version 161, persistent storages were not stored in a pool. */ - if (IsSavegameVersionBefore(161) && !IsSavegameVersionBefore(145) && st->facilities & FACIL_AIRPORT) { + if (IsSavegameVersionBefore(SLV_161) && !IsSavegameVersionBefore(SLV_145) && st->facilities & FACIL_AIRPORT) { /* Store the old persistent storage. The GRFID will be added later. */ assert(PersistentStorage::CanAllocateItem()); st->airport.psa = new PersistentStorage(0, 0, 0); @@ -589,7 +589,7 @@ static void Load_STNN() flow.source = buffer->RawReadUint16(); flow.via = buffer->RawReadUint16(); flow.share = buffer->RawReadUint32(); - if (!IsSavegameVersionBefore(187)) flow.restricted = (buffer->ReadByte() != 0); + if (!IsSavegameVersionBefore(SLV_187)) flow.restricted = (buffer->ReadByte() != 0); if (fs == NULL || prev_source != flow.source) { fs = &(st->goods[i].flows.insert(std::make_pair(flow.source, FlowStat(flow.via, flow.share, flow.restricted))).first->second); @@ -598,7 +598,7 @@ static void Load_STNN() } prev_source = flow.source; } - if (IsSavegameVersionBefore(183)) { + if (IsSavegameVersionBefore(SLV_183)) { SwapPackets(&st->goods[i]); } else { StationCargoPair pair; @@ -625,14 +625,14 @@ static void Load_STNN() static void Ptrs_STNN() { /* Don't run when savegame version lower than 123. */ - if (IsSavegameVersionBefore(123)) return; + if (IsSavegameVersionBefore(SLV_123)) return; - uint num_cargo = IsSavegameVersionBefore(199) ? 32 : NUM_CARGO; + uint num_cargo = IsSavegameVersionBefore(SLV_EXTEND_CARGOTYPES) ? 32 : NUM_CARGO; Station *st; FOR_ALL_STATIONS(st) { for (CargoID i = 0; i < num_cargo; i++) { GoodsEntry *ge = &st->goods[i]; - if (IsSavegameVersionBefore(183)) { + if (IsSavegameVersionBefore(SLV_183)) { SwapPackets(ge); SlObject(ge, GetGoodsDesc()); SwapPackets(ge); diff --git a/src/saveload/storage_sl.cpp b/src/saveload/storage_sl.cpp index 04980c7c37..1396d25aee 100644 --- a/src/saveload/storage_sl.cpp +++ b/src/saveload/storage_sl.cpp @@ -17,9 +17,9 @@ /** Description of the data to save and load in #PersistentStorage. */ static const SaveLoad _storage_desc[] = { - SLE_CONDVAR(PersistentStorage, grfid, SLE_UINT32, 6, SL_MAX_VERSION), - SLE_CONDARR(PersistentStorage, storage, SLE_UINT32, 16, 161, 200), - SLE_CONDARR(PersistentStorage, storage, SLE_UINT32, 256, 201, SL_MAX_VERSION), + SLE_CONDVAR(PersistentStorage, grfid, SLE_UINT32, SLV_6, SL_MAX_VERSION), + SLE_CONDARR(PersistentStorage, storage, SLE_UINT32, 16, SLV_161, SLV_EXTEND_PERSISTENT_STORAGE), + SLE_CONDARR(PersistentStorage, storage, SLE_UINT32, 256, SLV_EXTEND_PERSISTENT_STORAGE, SL_MAX_VERSION), SLE_END() }; diff --git a/src/saveload/story_sl.cpp b/src/saveload/story_sl.cpp index 87e3720a62..f9bbf34b9b 100644 --- a/src/saveload/story_sl.cpp +++ b/src/saveload/story_sl.cpp @@ -19,7 +19,7 @@ /** Called after load to trash broken pages. */ void AfterLoadStoryBook() { - if (IsSavegameVersionBefore(185)) { + if (IsSavegameVersionBefore(SLV_185)) { /* Trash all story pages and page elements because * they were saved with wrong data types. */ @@ -29,11 +29,11 @@ void AfterLoadStoryBook() } static const SaveLoad _story_page_elements_desc[] = { - SLE_CONDVAR(StoryPageElement, sort_value, SLE_FILE_U16 | SLE_VAR_U32, 0, 184), - SLE_CONDVAR(StoryPageElement, sort_value, SLE_UINT32, 185, SL_MAX_VERSION), + SLE_CONDVAR(StoryPageElement, sort_value, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_185), + SLE_CONDVAR(StoryPageElement, sort_value, SLE_UINT32, SLV_185, SL_MAX_VERSION), SLE_VAR(StoryPageElement, page, SLE_UINT16), - SLE_CONDVAR(StoryPageElement, type, SLE_FILE_U16 | SLE_VAR_U8, 0, 184), - SLE_CONDVAR(StoryPageElement, type, SLE_UINT8, 185, SL_MAX_VERSION), + SLE_CONDVAR(StoryPageElement, type, SLE_FILE_U16 | SLE_VAR_U8, SL_MIN_VERSION, SLV_185), + SLE_CONDVAR(StoryPageElement, type, SLE_UINT8, SLV_185, SL_MAX_VERSION), SLE_VAR(StoryPageElement, referenced_id, SLE_UINT32), SLE_STR(StoryPageElement, text, SLE_STR | SLF_ALLOW_CONTROL, 0), SLE_END() @@ -66,11 +66,11 @@ static void Load_STORY_PAGE_ELEMENT() } static const SaveLoad _story_pages_desc[] = { - SLE_CONDVAR(StoryPage, sort_value, SLE_FILE_U16 | SLE_VAR_U32, 0, 184), - SLE_CONDVAR(StoryPage, sort_value, SLE_UINT32, 185, SL_MAX_VERSION), + SLE_CONDVAR(StoryPage, sort_value, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_185), + SLE_CONDVAR(StoryPage, sort_value, SLE_UINT32, SLV_185, SL_MAX_VERSION), SLE_VAR(StoryPage, date, SLE_UINT32), - SLE_CONDVAR(StoryPage, company, SLE_FILE_U16 | SLE_VAR_U8, 0, 184), - SLE_CONDVAR(StoryPage, company, SLE_UINT8, 185, SL_MAX_VERSION), + SLE_CONDVAR(StoryPage, company, SLE_FILE_U16 | SLE_VAR_U8, SL_MIN_VERSION, SLV_185), + SLE_CONDVAR(StoryPage, company, SLE_UINT8, SLV_185, SL_MAX_VERSION), SLE_STR(StoryPage, title, SLE_STR | SLF_ALLOW_CONTROL, 0), SLE_END() }; diff --git a/src/saveload/strings_sl.cpp b/src/saveload/strings_sl.cpp index aa2fdd3e60..d8fe81d113 100644 --- a/src/saveload/strings_sl.cpp +++ b/src/saveload/strings_sl.cpp @@ -63,7 +63,7 @@ char *CopyFromOldName(StringID id) /* Is this name an (old) custom name? */ if (GetStringTab(id) != TEXT_TAB_OLD_CUSTOM) return NULL; - if (IsSavegameVersionBefore(37)) { + if (IsSavegameVersionBefore(SLV_37)) { /* Allow for expansion when converted to UTF-8. */ char tmp[LEN_OLD_STRINGS * MAX_CHAR_LENGTH]; uint offs = _savegame_type == SGT_TTO ? LEN_OLD_STRINGS_TTO * GB(id, 0, 8) : LEN_OLD_STRINGS * GB(id, 0, 9); diff --git a/src/saveload/subsidy_sl.cpp b/src/saveload/subsidy_sl.cpp index f6d650468c..6f10ec8d09 100644 --- a/src/saveload/subsidy_sl.cpp +++ b/src/saveload/subsidy_sl.cpp @@ -19,13 +19,13 @@ static const SaveLoad _subsidies_desc[] = { SLE_VAR(Subsidy, cargo_type, SLE_UINT8), SLE_VAR(Subsidy, remaining, SLE_UINT8), - SLE_CONDVAR(Subsidy, awarded, SLE_UINT8, 125, SL_MAX_VERSION), - SLE_CONDVAR(Subsidy, src_type, SLE_UINT8, 125, SL_MAX_VERSION), - SLE_CONDVAR(Subsidy, dst_type, SLE_UINT8, 125, SL_MAX_VERSION), - SLE_CONDVAR(Subsidy, src, SLE_FILE_U8 | SLE_VAR_U16, 0, 4), - SLE_CONDVAR(Subsidy, src, SLE_UINT16, 5, SL_MAX_VERSION), - SLE_CONDVAR(Subsidy, dst, SLE_FILE_U8 | SLE_VAR_U16, 0, 4), - SLE_CONDVAR(Subsidy, dst, SLE_UINT16, 5, SL_MAX_VERSION), + SLE_CONDVAR(Subsidy, awarded, SLE_UINT8, SLV_125, SL_MAX_VERSION), + SLE_CONDVAR(Subsidy, src_type, SLE_UINT8, SLV_125, SL_MAX_VERSION), + SLE_CONDVAR(Subsidy, dst_type, SLE_UINT8, SLV_125, SL_MAX_VERSION), + SLE_CONDVAR(Subsidy, src, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_5), + SLE_CONDVAR(Subsidy, src, SLE_UINT16, SLV_5, SL_MAX_VERSION), + SLE_CONDVAR(Subsidy, dst, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_5), + SLE_CONDVAR(Subsidy, dst, SLE_UINT16, SLV_5, SL_MAX_VERSION), SLE_END() }; diff --git a/src/saveload/tbtr_template_veh_sl.cpp b/src/saveload/tbtr_template_veh_sl.cpp index 07355660cc..2c3f9917e0 100644 --- a/src/saveload/tbtr_template_veh_sl.cpp +++ b/src/saveload/tbtr_template_veh_sl.cpp @@ -17,11 +17,11 @@ const SaveLoad* GTD() { SLE_VAR(TemplateVehicle, reuse_depot_vehicles, SLE_UINT8), SLE_VAR(TemplateVehicle, keep_remaining_vehicles, SLE_UINT8), SLE_VAR(TemplateVehicle, refit_as_template, SLE_UINT8), - SLE_CONDVAR_X(TemplateVehicle, replace_old_only, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TEMPLATE_REPLACEMENT, 5)), + SLE_CONDVAR_X(TemplateVehicle, replace_old_only, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TEMPLATE_REPLACEMENT, 5)), - SLE_CONDVAR_X(TemplateVehicle, owner, SLE_VAR_U8 | SLE_FILE_U32, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TEMPLATE_REPLACEMENT, 0, 3)), - SLE_CONDVAR_X(TemplateVehicle, owner, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TEMPLATE_REPLACEMENT, 4)), - SLE_CONDNULL_X(1, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TEMPLATE_REPLACEMENT, 0, 3)), + SLE_CONDVAR_X(TemplateVehicle, owner, SLE_VAR_U8 | SLE_FILE_U32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TEMPLATE_REPLACEMENT, 0, 3)), + SLE_CONDVAR_X(TemplateVehicle, owner, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TEMPLATE_REPLACEMENT, 4)), + SLE_CONDNULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TEMPLATE_REPLACEMENT, 0, 3)), SLE_VAR(TemplateVehicle, engine_type, SLE_UINT16), SLE_VAR(TemplateVehicle, cargo_type, SLE_UINT8), @@ -40,10 +40,10 @@ const SaveLoad* GTD() { SLE_VAR(TemplateVehicle, weight, SLE_UINT32), SLE_VAR(TemplateVehicle, max_te, SLE_UINT32), - SLE_CONDNULL_X(1, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TEMPLATE_REPLACEMENT, 0, 3)), - SLE_CONDNULL_X(4, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TEMPLATE_REPLACEMENT, 0, 1)), - SLE_CONDNULL_X(36, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TEMPLATE_REPLACEMENT, 2, 3)), - SLE_CONDNULL_X(4, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TEMPLATE_REPLACEMENT, 0, 3)), + SLE_CONDNULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TEMPLATE_REPLACEMENT, 0, 3)), + SLE_CONDNULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TEMPLATE_REPLACEMENT, 0, 1)), + SLE_CONDNULL_X(36, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TEMPLATE_REPLACEMENT, 2, 3)), + SLE_CONDNULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TEMPLATE_REPLACEMENT, 0, 3)), SLE_END() }; diff --git a/src/saveload/town_sl.cpp b/src/saveload/town_sl.cpp index a2c56d444f..63b3b44e55 100644 --- a/src/saveload/town_sl.cpp +++ b/src/saveload/town_sl.cpp @@ -116,115 +116,115 @@ void UpdateHousesAndTowns() /** Save and load of towns. */ static const SaveLoad _town_desc[] = { - SLE_CONDVAR(Town, xy, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), - SLE_CONDVAR(Town, xy, SLE_UINT32, 6, SL_MAX_VERSION), + SLE_CONDVAR(Town, xy, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(Town, xy, SLE_UINT32, SLV_6, SL_MAX_VERSION), - SLE_CONDNULL(2, 0, 2), ///< population, no longer in use - SLE_CONDNULL(4, 3, 84), ///< population, no longer in use - SLE_CONDNULL(2, 0, 91), ///< num_houses, no longer in use + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_3), ///< population, no longer in use + SLE_CONDNULL(4, SLV_3, SLV_85), ///< population, no longer in use + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_92), ///< num_houses, no longer in use - SLE_CONDVAR(Town, townnamegrfid, SLE_UINT32, 66, SL_MAX_VERSION), + SLE_CONDVAR(Town, townnamegrfid, SLE_UINT32, SLV_66, SL_MAX_VERSION), SLE_VAR(Town, townnametype, SLE_UINT16), SLE_VAR(Town, townnameparts, SLE_UINT32), - SLE_CONDSTR(Town, name, SLE_STR | SLF_ALLOW_CONTROL, 0, 84, SL_MAX_VERSION), + SLE_CONDSTR(Town, name, SLE_STR | SLF_ALLOW_CONTROL, 0, SLV_84, SL_MAX_VERSION), SLE_VAR(Town, flags, SLE_UINT8), - SLE_CONDVAR(Town, statues, SLE_FILE_U8 | SLE_VAR_U16, 0, 103), - SLE_CONDVAR(Town, statues, SLE_UINT16, 104, SL_MAX_VERSION), + SLE_CONDVAR(Town, statues, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_104), + SLE_CONDVAR(Town, statues, SLE_UINT16, SLV_104, SL_MAX_VERSION), - SLE_CONDNULL(1, 0, 1), ///< sort_index, no longer in use + SLE_CONDNULL(1, SL_MIN_VERSION, SLV_2), ///< sort_index, no longer in use - SLE_CONDVAR(Town, have_ratings, SLE_FILE_U8 | SLE_VAR_U16, 0, 103), - SLE_CONDVAR(Town, have_ratings, SLE_UINT16, 104, SL_MAX_VERSION), - SLE_CONDARR(Town, ratings, SLE_INT16, 8, 0, 103), - SLE_CONDARR(Town, ratings, SLE_INT16, MAX_COMPANIES, 104, SL_MAX_VERSION), - SLE_CONDNULL_X(MAX_COMPANIES, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), + SLE_CONDVAR(Town, have_ratings, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_104), + SLE_CONDVAR(Town, have_ratings, SLE_UINT16, SLV_104, SL_MAX_VERSION), + SLE_CONDARR(Town, ratings, SLE_INT16, 8, SL_MIN_VERSION, SLV_104), + SLE_CONDARR(Town, ratings, SLE_INT16, MAX_COMPANIES, SLV_104, SL_MAX_VERSION), + SLE_CONDNULL_X(MAX_COMPANIES, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), /* failed bribe attempts are stored since savegame format 4 */ - SLE_CONDARR(Town, unwanted, SLE_INT8, 8, 4, 103), - SLE_CONDARR(Town, unwanted, SLE_INT8, MAX_COMPANIES, 104, SL_MAX_VERSION), + SLE_CONDARR(Town, unwanted, SLE_INT8, 8, SLV_4, SLV_104), + SLE_CONDARR(Town, unwanted, SLE_INT8, MAX_COMPANIES, SLV_104, SL_MAX_VERSION), - SLE_CONDVAR(Town, supplied[CT_PASSENGERS].old_max, SLE_FILE_U16 | SLE_VAR_U32, 0, 8), - SLE_CONDVAR(Town, supplied[CT_MAIL].old_max, SLE_FILE_U16 | SLE_VAR_U32, 0, 8), - SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_max, SLE_FILE_U16 | SLE_VAR_U32, 0, 8), - SLE_CONDVAR(Town, supplied[CT_MAIL].new_max, SLE_FILE_U16 | SLE_VAR_U32, 0, 8), - SLE_CONDVAR(Town, supplied[CT_PASSENGERS].old_act, SLE_FILE_U16 | SLE_VAR_U32, 0, 8), - SLE_CONDVAR(Town, supplied[CT_MAIL].old_act, SLE_FILE_U16 | SLE_VAR_U32, 0, 8), - SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_act, SLE_FILE_U16 | SLE_VAR_U32, 0, 8), - SLE_CONDVAR(Town, supplied[CT_MAIL].new_act, SLE_FILE_U16 | SLE_VAR_U32, 0, 8), + SLE_CONDVAR(Town, supplied[CT_PASSENGERS].old_max, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), + SLE_CONDVAR(Town, supplied[CT_MAIL].old_max, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), + SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_max, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), + SLE_CONDVAR(Town, supplied[CT_MAIL].new_max, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), + SLE_CONDVAR(Town, supplied[CT_PASSENGERS].old_act, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), + SLE_CONDVAR(Town, supplied[CT_MAIL].old_act, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), + SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_act, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), + SLE_CONDVAR(Town, supplied[CT_MAIL].new_act, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_9), - SLE_CONDVAR(Town, supplied[CT_PASSENGERS].old_max, SLE_UINT32, 9, 164), - SLE_CONDVAR(Town, supplied[CT_MAIL].old_max, SLE_UINT32, 9, 164), - SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_max, SLE_UINT32, 9, 164), - SLE_CONDVAR(Town, supplied[CT_MAIL].new_max, SLE_UINT32, 9, 164), - SLE_CONDVAR(Town, supplied[CT_PASSENGERS].old_act, SLE_UINT32, 9, 164), - SLE_CONDVAR(Town, supplied[CT_MAIL].old_act, SLE_UINT32, 9, 164), - SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_act, SLE_UINT32, 9, 164), - SLE_CONDVAR(Town, supplied[CT_MAIL].new_act, SLE_UINT32, 9, 164), + SLE_CONDVAR(Town, supplied[CT_PASSENGERS].old_max, SLE_UINT32, SLV_9, SLV_165), + SLE_CONDVAR(Town, supplied[CT_MAIL].old_max, SLE_UINT32, SLV_9, SLV_165), + SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_max, SLE_UINT32, SLV_9, SLV_165), + SLE_CONDVAR(Town, supplied[CT_MAIL].new_max, SLE_UINT32, SLV_9, SLV_165), + SLE_CONDVAR(Town, supplied[CT_PASSENGERS].old_act, SLE_UINT32, SLV_9, SLV_165), + SLE_CONDVAR(Town, supplied[CT_MAIL].old_act, SLE_UINT32, SLV_9, SLV_165), + SLE_CONDVAR(Town, supplied[CT_PASSENGERS].new_act, SLE_UINT32, SLV_9, SLV_165), + SLE_CONDVAR(Town, supplied[CT_MAIL].new_act, SLE_UINT32, SLV_9, SLV_165), - SLE_CONDNULL(2, 0, 163), ///< pct_pass_transported / pct_mail_transported, now computed on the fly + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_164), ///< pct_pass_transported / pct_mail_transported, now computed on the fly - SLE_CONDVAR(Town, received[TE_FOOD].old_act, SLE_UINT16, 0, 164), - SLE_CONDVAR(Town, received[TE_WATER].old_act, SLE_UINT16, 0, 164), - SLE_CONDVAR(Town, received[TE_FOOD].new_act, SLE_UINT16, 0, 164), - SLE_CONDVAR(Town, received[TE_WATER].new_act, SLE_UINT16, 0, 164), + SLE_CONDVAR(Town, received[TE_FOOD].old_act, SLE_UINT16, SL_MIN_VERSION, SLV_165), + SLE_CONDVAR(Town, received[TE_WATER].old_act, SLE_UINT16, SL_MIN_VERSION, SLV_165), + SLE_CONDVAR(Town, received[TE_FOOD].new_act, SLE_UINT16, SL_MIN_VERSION, SLV_165), + SLE_CONDVAR(Town, received[TE_WATER].new_act, SLE_UINT16, SL_MIN_VERSION, SLV_165), - SLE_CONDARR(Town, goal, SLE_UINT32, NUM_TE, 165, SL_MAX_VERSION), + SLE_CONDARR(Town, goal, SLE_UINT32, NUM_TE, SLV_165, SL_MAX_VERSION), - SLE_CONDSTR(Town, text, SLE_STR | SLF_ALLOW_CONTROL, 0, 168, SL_MAX_VERSION), + SLE_CONDSTR(Town, text, SLE_STR | SLF_ALLOW_CONTROL, 0, SLV_168, SL_MAX_VERSION), - SLE_CONDVAR(Town, time_until_rebuild, SLE_FILE_U8 | SLE_VAR_U16, 0, 53), - SLE_CONDVAR(Town, grow_counter, SLE_FILE_U8 | SLE_VAR_U16, 0, 53), - SLE_CONDVAR(Town, growth_rate, SLE_FILE_U8 | SLE_VAR_I16, 0, 53), + SLE_CONDVAR(Town, time_until_rebuild, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_54), + SLE_CONDVAR(Town, grow_counter, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_54), + SLE_CONDVAR(Town, growth_rate, SLE_FILE_U8 | SLE_VAR_I16, SL_MIN_VERSION, SLV_54), - SLE_CONDVAR(Town, time_until_rebuild, SLE_UINT16, 54, SL_MAX_VERSION), - SLE_CONDVAR(Town, grow_counter, SLE_UINT16, 54, SL_MAX_VERSION), + SLE_CONDVAR(Town, time_until_rebuild, SLE_UINT16, SLV_54, SL_MAX_VERSION), + SLE_CONDVAR(Town, grow_counter, SLE_UINT16, SLV_54, SL_MAX_VERSION), - SLE_CONDVAR(Town, growth_rate, SLE_FILE_I16 | SLE_VAR_U16, 54, 164), - SLE_CONDVAR(Town, growth_rate, SLE_UINT16, 165, SL_MAX_VERSION), + SLE_CONDVAR(Town, growth_rate, SLE_FILE_I16 | SLE_VAR_U16, SLV_54, SLV_165), + SLE_CONDVAR(Town, growth_rate, SLE_UINT16, SLV_165, SL_MAX_VERSION), SLE_VAR(Town, fund_buildings_months, SLE_UINT8), SLE_VAR(Town, road_build_months, SLE_UINT8), - SLE_CONDVAR(Town, exclusivity, SLE_UINT8, 2, SL_MAX_VERSION), - SLE_CONDVAR(Town, exclusive_counter, SLE_UINT8, 2, SL_MAX_VERSION), + SLE_CONDVAR(Town, exclusivity, SLE_UINT8, SLV_2, SL_MAX_VERSION), + SLE_CONDVAR(Town, exclusive_counter, SLE_UINT8, SLV_2, SL_MAX_VERSION), - SLE_CONDVAR(Town, larger_town, SLE_BOOL, 56, SL_MAX_VERSION), - SLE_CONDVAR(Town, layout, SLE_UINT8, 113, SL_MAX_VERSION), + SLE_CONDVAR(Town, larger_town, SLE_BOOL, SLV_56, SL_MAX_VERSION), + SLE_CONDVAR(Town, layout, SLE_UINT8, SLV_113, SL_MAX_VERSION), - SLE_CONDLST(Town, psa_list, REF_STORAGE, 161, SL_MAX_VERSION), + SLE_CONDLST(Town, psa_list, REF_STORAGE, SLV_161, SL_MAX_VERSION), - SLE_CONDVAR(Town, cargo_produced, SLE_FILE_U32 | SLE_VAR_U64, 166, 198), - SLE_CONDVAR(Town, cargo_produced, SLE_UINT64, 199, SL_MAX_VERSION), + SLE_CONDVAR(Town, cargo_produced, SLE_FILE_U32 | SLE_VAR_U64, SLV_166, SLV_EXTEND_CARGOTYPES), + SLE_CONDVAR(Town, cargo_produced, SLE_UINT64, SLV_EXTEND_CARGOTYPES, SL_MAX_VERSION), /* reserve extra space in savegame here. (currently 30 bytes) */ - SLE_CONDNULL(30, 2, SL_MAX_VERSION), + SLE_CONDNULL(30, SLV_2, SL_MAX_VERSION), SLE_END() }; static const SaveLoad _town_supplied_desc[] = { - SLE_CONDVAR(TransportedCargoStat, old_max, SLE_UINT32, 165, SL_MAX_VERSION), - SLE_CONDVAR(TransportedCargoStat, new_max, SLE_UINT32, 165, SL_MAX_VERSION), - SLE_CONDVAR(TransportedCargoStat, old_act, SLE_UINT32, 165, SL_MAX_VERSION), - SLE_CONDVAR(TransportedCargoStat, new_act, SLE_UINT32, 165, SL_MAX_VERSION), + SLE_CONDVAR(TransportedCargoStat, old_max, SLE_UINT32, SLV_165, SL_MAX_VERSION), + SLE_CONDVAR(TransportedCargoStat, new_max, SLE_UINT32, SLV_165, SL_MAX_VERSION), + SLE_CONDVAR(TransportedCargoStat, old_act, SLE_UINT32, SLV_165, SL_MAX_VERSION), + SLE_CONDVAR(TransportedCargoStat, new_act, SLE_UINT32, SLV_165, SL_MAX_VERSION), SLE_END() }; static const SaveLoad _town_received_desc[] = { - SLE_CONDVAR(TransportedCargoStat, old_max, SLE_UINT16, 165, SL_MAX_VERSION), - SLE_CONDVAR(TransportedCargoStat, new_max, SLE_UINT16, 165, SL_MAX_VERSION), - SLE_CONDVAR(TransportedCargoStat, old_act, SLE_UINT16, 165, SL_MAX_VERSION), - SLE_CONDVAR(TransportedCargoStat, new_act, SLE_UINT16, 165, SL_MAX_VERSION), + SLE_CONDVAR(TransportedCargoStat, old_max, SLE_UINT16, SLV_165, SL_MAX_VERSION), + SLE_CONDVAR(TransportedCargoStat, new_max, SLE_UINT16, SLV_165, SL_MAX_VERSION), + SLE_CONDVAR(TransportedCargoStat, old_act, SLE_UINT16, SLV_165, SL_MAX_VERSION), + SLE_CONDVAR(TransportedCargoStat, new_act, SLE_UINT16, SLV_165, SL_MAX_VERSION), SLE_END() }; static const SaveLoad _town_received_desc_spp[] = { - SLE_CONDVAR(TransportedCargoStat, old_max, SLE_FILE_U32 | SLE_VAR_U16, 165, SL_MAX_VERSION), - SLE_CONDVAR(TransportedCargoStat, new_max, SLE_FILE_U32 | SLE_VAR_U16, 165, SL_MAX_VERSION), - SLE_CONDVAR(TransportedCargoStat, old_act, SLE_FILE_U32 | SLE_VAR_U16, 165, SL_MAX_VERSION), - SLE_CONDVAR(TransportedCargoStat, new_act, SLE_FILE_U32 | SLE_VAR_U16, 165, SL_MAX_VERSION), + SLE_CONDVAR(TransportedCargoStat, old_max, SLE_FILE_U32 | SLE_VAR_U16, SLV_165, SL_MAX_VERSION), + SLE_CONDVAR(TransportedCargoStat, new_max, SLE_FILE_U32 | SLE_VAR_U16, SLV_165, SL_MAX_VERSION), + SLE_CONDVAR(TransportedCargoStat, old_act, SLE_FILE_U32 | SLE_VAR_U16, SLV_165, SL_MAX_VERSION), + SLE_CONDVAR(TransportedCargoStat, new_act, SLE_FILE_U32 | SLE_VAR_U16, SLV_165, SL_MAX_VERSION), SLE_END() }; @@ -289,7 +289,7 @@ static void Save_TOWN() static void Load_TOWN() { int index; - uint num_cargo = IsSavegameVersionBefore(199) ? 32 : NUM_CARGO; + uint num_cargo = IsSavegameVersionBefore(SLV_EXTEND_CARGOTYPES) ? 32 : NUM_CARGO; while ((index = SlIterateArray()) != -1) { Town *t = new (index) Town(); @@ -312,7 +312,7 @@ static void Load_TOWN() SlErrorCorrupt("Invalid town name generator"); } - if (IsSavegameVersionBefore(166)) continue; + if (IsSavegameVersionBefore(SLV_166)) continue; SlObject(&t->cargo_accepted, GetTileMatrixDesc()); if (t->cargo_accepted.area.w != 0) { @@ -330,7 +330,7 @@ static void Load_TOWN() static void Ptrs_TOWN() { /* Don't run when savegame version lower than 161. */ - if (IsSavegameVersionBefore(161)) return; + if (IsSavegameVersionBefore(SLV_161)) return; Town *t; FOR_ALL_TOWNS(t) { diff --git a/src/saveload/tunnel_sl.cpp b/src/saveload/tunnel_sl.cpp index d50b4bcd83..d601fe8b1b 100644 --- a/src/saveload/tunnel_sl.cpp +++ b/src/saveload/tunnel_sl.cpp @@ -18,10 +18,10 @@ static const SaveLoad _tunnel_desc[] = { - SLE_CONDVAR(Tunnel, tile_n, SLE_UINT32, 0, SL_MAX_VERSION), - SLE_CONDVAR(Tunnel, tile_s, SLE_UINT32, 0, SL_MAX_VERSION), - SLE_CONDVAR(Tunnel, height, SLE_UINT8, 0, SL_MAX_VERSION), - SLE_CONDVAR(Tunnel, is_chunnel, SLE_BOOL, 0, SL_MAX_VERSION), + SLE_CONDVAR(Tunnel, tile_n, SLE_UINT32, SL_MIN_VERSION, SL_MAX_VERSION), + SLE_CONDVAR(Tunnel, tile_s, SLE_UINT32, SL_MIN_VERSION, SL_MAX_VERSION), + SLE_CONDVAR(Tunnel, height, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION), + SLE_CONDVAR(Tunnel, is_chunnel, SLE_BOOL, SL_MIN_VERSION, SL_MAX_VERSION), SLE_END() }; diff --git a/src/saveload/vehicle_sl.cpp b/src/saveload/vehicle_sl.cpp index 85bb578714..c45ea3c58f 100644 --- a/src/saveload/vehicle_sl.cpp +++ b/src/saveload/vehicle_sl.cpp @@ -275,7 +275,7 @@ void AfterLoadVehicles(bool part_of_load) FOR_ALL_VEHICLES(v) { if (v->orders.old != NULL) { - if (IsSavegameVersionBefore(105)) { // Pre-105 didn't save an OrderList + if (IsSavegameVersionBefore(SLV_105)) { // Pre-105 didn't save an OrderList if (mapping[v->orders.old] == NULL) { /* This adds the whole shared vehicle chain for case b */ @@ -287,7 +287,7 @@ void AfterLoadVehicles(bool part_of_load) } else { v->orders.list = mapping[v->orders.old]; /* For old games (case a) we must create the shared vehicle chain */ - if (IsSavegameVersionBefore(5, 2)) { + if (IsSavegameVersionBefore(SLV_5, 2)) { v->AddToShared(v->orders.list->GetFirstSharedVehicle()); } } @@ -310,7 +310,7 @@ void AfterLoadVehicles(bool part_of_load) } if (part_of_load) { - if (IsSavegameVersionBefore(105)) { + if (IsSavegameVersionBefore(SLV_105)) { /* Before 105 there was no order for shared orders, thus it messed up horribly */ FOR_ALL_VEHICLES(v) { if (v->First() != v || v->orders.list != NULL || v->previous_shared != NULL || v->next_shared == NULL) continue; @@ -324,7 +324,7 @@ void AfterLoadVehicles(bool part_of_load) } } - if (IsSavegameVersionBefore(157)) { + if (IsSavegameVersionBefore(SLV_157)) { /* The road vehicle subtype was converted to a flag. */ RoadVehicle *rv; FOR_ALL_ROADVEHICLES(rv) { @@ -342,7 +342,7 @@ void AfterLoadVehicles(bool part_of_load) } } - if (IsSavegameVersionBefore(160)) { + if (IsSavegameVersionBefore(SLV_160)) { /* In some old savegames there might be some "crap" stored. */ FOR_ALL_VEHICLES(v) { if (!v->IsPrimaryVehicle() && v->type != VEH_DISASTER) { @@ -352,14 +352,14 @@ void AfterLoadVehicles(bool part_of_load) } } - if (IsSavegameVersionBefore(162)) { + if (IsSavegameVersionBefore(SLV_162)) { /* Set the vehicle-local cargo age counter from the old global counter. */ FOR_ALL_VEHICLES(v) { v->cargo_age_counter = _age_cargo_skip_counter; } } - if (IsSavegameVersionBefore(180)) { + if (IsSavegameVersionBefore(SLV_180)) { /* Set service interval flags */ FOR_ALL_VEHICLES(v) { if (!v->IsPrimaryVehicle()) continue; @@ -372,12 +372,23 @@ void AfterLoadVehicles(bool part_of_load) } } - if (IsSavegameVersionBefore(204)) { + if (IsSavegameVersionBefore(SLV_SHIP_ROTATION)) { /* Ship rotation added */ Ship *s; FOR_ALL_SHIPS(s) { s->rotation = s->direction; } + } else { + Ship *s; + FOR_ALL_SHIPS(s) { + if (s->rotation == s->direction) continue; + /* In case we are rotating on gameload, set the rotation position to + * the current position, otherwise the applied workaround offset would + * be with respect to 0,0. + */ + s->rotation_x_pos = s->x_pos; + s->rotation_y_pos = s->y_pos; + } } } v = nullptr; @@ -420,7 +431,7 @@ void AfterLoadVehicles(bool part_of_load) } /* Stop non-front engines */ - if (part_of_load && IsSavegameVersionBefore(112)) { + if (part_of_load && IsSavegameVersionBefore(SLV_112)) { FOR_ALL_VEHICLES(v) { if (v->type == VEH_TRAIN) { Train *t = Train::From(v); @@ -433,7 +444,7 @@ void AfterLoadVehicles(bool part_of_load) } /* trains weren't stopping gradually in old OTTD versions (and TTO/TTD) * other vehicle types didn't have zero speed while stopped (even in 'recent' OTTD versions) */ - if ((v->vehstatus & VS_STOPPED) && (v->type != VEH_TRAIN || IsSavegameVersionBefore(2, 1))) { + if ((v->vehstatus & VS_STOPPED) && (v->type != VEH_TRAIN || IsSavegameVersionBefore(SLV_2, 1))) { v->cur_speed = 0; } } @@ -595,157 +606,157 @@ const SaveLoad *GetVehicleDescription(VehicleType vt) SLE_VAR(Vehicle, subtype, SLE_UINT8), SLE_REF(Vehicle, next, REF_VEHICLE_OLD), - SLE_CONDVAR(Vehicle, name, SLE_NAME, 0, 83), - SLE_CONDSTR(Vehicle, name, SLE_STR | SLF_ALLOW_CONTROL, 0, 84, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, unitnumber, SLE_FILE_U8 | SLE_VAR_U16, 0, 7), - SLE_CONDVAR(Vehicle, unitnumber, SLE_UINT16, 8, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, name, SLE_NAME, SL_MIN_VERSION, SLV_84), + SLE_CONDSTR(Vehicle, name, SLE_STR | SLF_ALLOW_CONTROL, 0, SLV_84, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, unitnumber, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_8), + SLE_CONDVAR(Vehicle, unitnumber, SLE_UINT16, SLV_8, SL_MAX_VERSION), SLE_VAR(Vehicle, owner, SLE_UINT8), - SLE_CONDVAR(Vehicle, tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), - SLE_CONDVAR(Vehicle, tile, SLE_UINT32, 6, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, dest_tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), - SLE_CONDVAR(Vehicle, dest_tile, SLE_UINT32, 6, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, tile, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(Vehicle, tile, SLE_UINT32, SLV_6, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, dest_tile, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(Vehicle, dest_tile, SLE_UINT32, SLV_6, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, x_pos, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), - SLE_CONDVAR(Vehicle, x_pos, SLE_UINT32, 6, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, y_pos, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), - SLE_CONDVAR(Vehicle, y_pos, SLE_UINT32, 6, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, z_pos, SLE_FILE_U8 | SLE_VAR_I32, 0, 163), - SLE_CONDVAR(Vehicle, z_pos, SLE_INT32, 164, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, x_pos, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(Vehicle, x_pos, SLE_UINT32, SLV_6, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, y_pos, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(Vehicle, y_pos, SLE_UINT32, SLV_6, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, z_pos, SLE_FILE_U8 | SLE_VAR_I32, SL_MIN_VERSION, SLV_164), + SLE_CONDVAR(Vehicle, z_pos, SLE_INT32, SLV_164, SL_MAX_VERSION), SLE_VAR(Vehicle, direction, SLE_UINT8), - SLE_CONDNULL(2, 0, 57), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_58), SLE_VAR(Vehicle, spritenum, SLE_UINT8), - SLE_CONDNULL(5, 0, 57), + SLE_CONDNULL(5, SL_MIN_VERSION, SLV_58), SLE_VAR(Vehicle, engine_type, SLE_UINT16), - SLE_CONDNULL(2, 0, 151), + SLE_CONDNULL(2, SL_MIN_VERSION, SLV_152), SLE_VAR(Vehicle, cur_speed, SLE_UINT16), SLE_VAR(Vehicle, subspeed, SLE_UINT8), SLE_VAR(Vehicle, acceleration, SLE_UINT8), SLE_VAR(Vehicle, progress, SLE_UINT8), SLE_VAR(Vehicle, vehstatus, SLE_UINT8), - SLE_CONDVAR(Vehicle, last_station_visited, SLE_FILE_U8 | SLE_VAR_U16, 0, 4), - SLE_CONDVAR(Vehicle, last_station_visited, SLE_UINT16, 5, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, last_loading_station, SLE_UINT16, 182, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, last_station_visited, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_5), + SLE_CONDVAR(Vehicle, last_station_visited, SLE_UINT16, SLV_5, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, last_loading_station, SLE_UINT16, SLV_182, SL_MAX_VERSION), SLE_VAR(Vehicle, cargo_type, SLE_UINT8), - SLE_CONDVAR(Vehicle, cargo_subtype, SLE_UINT8, 35, SL_MAX_VERSION), - SLEG_CONDVAR( _cargo_days, SLE_UINT8, 0, 67), - SLEG_CONDVAR( _cargo_source, SLE_FILE_U8 | SLE_VAR_U16, 0, 6), - SLEG_CONDVAR( _cargo_source, SLE_UINT16, 7, 67), - SLEG_CONDVAR( _cargo_source_xy, SLE_UINT32, 44, 67), + SLE_CONDVAR(Vehicle, cargo_subtype, SLE_UINT8, SLV_35, SL_MAX_VERSION), + SLEG_CONDVAR( _cargo_days, SLE_UINT8, SL_MIN_VERSION, SLV_68), + SLEG_CONDVAR( _cargo_source, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_7), + SLEG_CONDVAR( _cargo_source, SLE_UINT16, SLV_7, SLV_68), + SLEG_CONDVAR( _cargo_source_xy, SLE_UINT32, SLV_44, SLV_68), SLE_VAR(Vehicle, cargo_cap, SLE_UINT16), - SLE_CONDVAR(Vehicle, refit_cap, SLE_UINT16, 182, SL_MAX_VERSION), - SLEG_CONDVAR( _cargo_count, SLE_UINT16, 0, 67), - SLE_CONDPTRDEQ(Vehicle, cargo.packets, REF_CARGO_PACKET, 68, SL_MAX_VERSION), - SLE_CONDARR(Vehicle, cargo.action_counts, SLE_UINT, VehicleCargoList::NUM_MOVE_TO_ACTION, 181, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, cargo_age_counter, SLE_UINT16, 162, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, refit_cap, SLE_UINT16, SLV_182, SL_MAX_VERSION), + SLEG_CONDVAR( _cargo_count, SLE_UINT16, SL_MIN_VERSION, SLV_68), + SLE_CONDPTRDEQ(Vehicle, cargo.packets, REF_CARGO_PACKET, SLV_68, SL_MAX_VERSION), + SLE_CONDARR(Vehicle, cargo.action_counts, SLE_UINT, VehicleCargoList::NUM_MOVE_TO_ACTION, SLV_181, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, cargo_age_counter, SLE_UINT16, SLV_162, SL_MAX_VERSION), SLE_VAR(Vehicle, day_counter, SLE_UINT8), SLE_VAR(Vehicle, tick_counter, SLE_UINT8), - SLE_CONDVAR_X(Vehicle, running_ticks, SLE_FILE_U8 | SLE_VAR_U16, 88, SL_MAX_VERSION, SlXvFeatureTest([](uint16 version, bool version_in_range) -> bool { + SLE_CONDVAR_X(Vehicle, running_ticks, SLE_FILE_U8 | SLE_VAR_U16, SLV_88, SL_MAX_VERSION, SlXvFeatureTest([](uint16 version, bool version_in_range) -> bool { return version_in_range && !(SlXvIsFeaturePresent(XSLFI_SPRINGPP, 3) || SlXvIsFeaturePresent(XSLFI_VARIABLE_DAY_LENGTH, 2)); })), - SLE_CONDVAR_X(Vehicle, running_ticks, SLE_UINT16, 88, SL_MAX_VERSION, SlXvFeatureTest([](uint16 version, bool version_in_range) -> bool { + SLE_CONDVAR_X(Vehicle, running_ticks, SLE_UINT16, SLV_88, SL_MAX_VERSION, SlXvFeatureTest([](uint16 version, bool version_in_range) -> bool { return version_in_range && (SlXvIsFeaturePresent(XSLFI_SPRINGPP, 2) || SlXvIsFeaturePresent(XSLFI_VARIABLE_DAY_LENGTH, 2)); })), SLE_VAR(Vehicle, cur_implicit_order_index, SLE_UINT8), - SLE_CONDVAR(Vehicle, cur_real_order_index, SLE_UINT8, 158, SL_MAX_VERSION), - SLE_CONDVAR_X(Vehicle, cur_timetable_order_index, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA)), + SLE_CONDVAR(Vehicle, cur_real_order_index, SLE_UINT8, SLV_158, SL_MAX_VERSION), + SLE_CONDVAR_X(Vehicle, cur_timetable_order_index, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA)), /* num_orders is now part of OrderList and is not saved but counted */ - SLE_CONDNULL(1, 0, 104), + SLE_CONDNULL(1, SL_MIN_VERSION, SLV_105), /* This next line is for version 4 and prior compatibility.. it temporarily reads type and flags (which were both 4 bits) into type. Later on this is converted correctly */ - SLE_CONDVAR(Vehicle, current_order.type, SLE_UINT8, 0, 4), - SLE_CONDVAR(Vehicle, current_order.dest, SLE_FILE_U8 | SLE_VAR_U16, 0, 4), + SLE_CONDVAR(Vehicle, current_order.type, SLE_UINT8, SL_MIN_VERSION, SLV_5), + SLE_CONDVAR(Vehicle, current_order.dest, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_5), /* Orders for version 5 and on */ - SLE_CONDVAR(Vehicle, current_order.type, SLE_UINT8, 5, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, current_order.flags, SLE_UINT8, 5, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, current_order.dest, SLE_UINT16, 5, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, current_order.type, SLE_UINT8, SLV_5, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, current_order.flags, SLE_UINT8, SLV_5, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, current_order.dest, SLE_UINT16, SLV_5, SL_MAX_VERSION), /* Refit in current order */ - SLE_CONDVAR(Vehicle, current_order.refit_cargo, SLE_UINT8, 36, SL_MAX_VERSION), - SLE_CONDNULL(1, 36, 181), // refit_subtype + SLE_CONDVAR(Vehicle, current_order.refit_cargo, SLE_UINT8, SLV_36, SL_MAX_VERSION), + SLE_CONDNULL(1, SLV_36, SLV_182), // refit_subtype /* Timetable in current order */ - SLE_CONDVAR_X(Vehicle, current_order.wait_time, SLE_FILE_U16 | SLE_VAR_U32, 67, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA, 0, 5)), - SLE_CONDVAR_X(Vehicle, current_order.wait_time, SLE_UINT32, 67, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA, 6)), - SLE_CONDVAR_X(Vehicle, current_order.travel_time, SLE_FILE_U16 | SLE_VAR_U32, 67, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA, 0, 5)), - SLE_CONDVAR_X(Vehicle, current_order.travel_time, SLE_UINT32, 67, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA, 6)), - SLE_CONDVAR(Vehicle, current_order.max_speed, SLE_UINT16, 174, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, timetable_start, SLE_INT32, 129, SL_MAX_VERSION), - SLE_CONDVAR_X(Vehicle, timetable_start_subticks, SLE_UINT16, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLES_START_TICKS, 2)), + SLE_CONDVAR_X(Vehicle, current_order.wait_time, SLE_FILE_U16 | SLE_VAR_U32, SLV_67, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA, 0, 5)), + SLE_CONDVAR_X(Vehicle, current_order.wait_time, SLE_UINT32, SLV_67, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA, 6)), + SLE_CONDVAR_X(Vehicle, current_order.travel_time, SLE_FILE_U16 | SLE_VAR_U32, SLV_67, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA, 0, 5)), + SLE_CONDVAR_X(Vehicle, current_order.travel_time, SLE_UINT32, SLV_67, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLE_EXTRA, 6)), + SLE_CONDVAR(Vehicle, current_order.max_speed, SLE_UINT16, SLV_174, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, timetable_start, SLE_INT32, SLV_129, SL_MAX_VERSION), + SLE_CONDVAR_X(Vehicle, timetable_start_subticks, SLE_UINT16, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TIMETABLES_START_TICKS, 2)), - SLE_CONDREF(Vehicle, orders, REF_ORDER, 0, 104), - SLE_CONDREF(Vehicle, orders, REF_ORDERLIST, 105, SL_MAX_VERSION), + SLE_CONDREF(Vehicle, orders, REF_ORDER, SL_MIN_VERSION, SLV_105), + SLE_CONDREF(Vehicle, orders, REF_ORDERLIST, SLV_105, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, age, SLE_FILE_U16 | SLE_VAR_I32, 0, 30), - SLE_CONDVAR(Vehicle, age, SLE_INT32, 31, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, max_age, SLE_FILE_U16 | SLE_VAR_I32, 0, 30), - SLE_CONDVAR(Vehicle, max_age, SLE_INT32, 31, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, date_of_last_service, SLE_FILE_U16 | SLE_VAR_I32, 0, 30), - SLE_CONDVAR(Vehicle, date_of_last_service, SLE_INT32, 31, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, service_interval, SLE_UINT16, 0, 30), - SLE_CONDVAR(Vehicle, service_interval, SLE_FILE_U32 | SLE_VAR_U16, 31, 179), - SLE_CONDVAR(Vehicle, service_interval, SLE_UINT16, 180, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, age, SLE_FILE_U16 | SLE_VAR_I32, SL_MIN_VERSION, SLV_31), + SLE_CONDVAR(Vehicle, age, SLE_INT32, SLV_31, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, max_age, SLE_FILE_U16 | SLE_VAR_I32, SL_MIN_VERSION, SLV_31), + SLE_CONDVAR(Vehicle, max_age, SLE_INT32, SLV_31, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, date_of_last_service, SLE_FILE_U16 | SLE_VAR_I32, SL_MIN_VERSION, SLV_31), + SLE_CONDVAR(Vehicle, date_of_last_service, SLE_INT32, SLV_31, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, service_interval, SLE_UINT16, SL_MIN_VERSION, SLV_31), + SLE_CONDVAR(Vehicle, service_interval, SLE_FILE_U32 | SLE_VAR_U16, SLV_31, SLV_180), + SLE_CONDVAR(Vehicle, service_interval, SLE_UINT16, SLV_180, SL_MAX_VERSION), SLE_VAR(Vehicle, reliability, SLE_UINT16), SLE_VAR(Vehicle, reliability_spd_dec, SLE_UINT16), SLE_VAR(Vehicle, breakdown_ctr, SLE_UINT8), SLE_VAR(Vehicle, breakdown_delay, SLE_UINT8), SLE_VAR(Vehicle, breakdowns_since_last_service, SLE_UINT8), SLE_VAR(Vehicle, breakdown_chance, SLE_UINT8), - SLE_CONDVAR_X(Vehicle, breakdown_chance_factor, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_IMPROVED_BREAKDOWNS, 3)), - SLE_CONDVAR_X(Vehicle, breakdown_type, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_IMPROVED_BREAKDOWNS)), - SLE_CONDVAR_X(Vehicle, breakdown_severity, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_IMPROVED_BREAKDOWNS)), - SLE_CONDVAR(Vehicle, build_year, SLE_FILE_U8 | SLE_VAR_I32, 0, 30), - SLE_CONDVAR(Vehicle, build_year, SLE_INT32, 31, SL_MAX_VERSION), + SLE_CONDVAR_X(Vehicle, breakdown_chance_factor, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_IMPROVED_BREAKDOWNS, 3)), + SLE_CONDVAR_X(Vehicle, breakdown_type, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_IMPROVED_BREAKDOWNS)), + SLE_CONDVAR_X(Vehicle, breakdown_severity, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_IMPROVED_BREAKDOWNS)), + SLE_CONDVAR(Vehicle, build_year, SLE_FILE_U8 | SLE_VAR_I32, SL_MIN_VERSION, SLV_31), + SLE_CONDVAR(Vehicle, build_year, SLE_INT32, SLV_31, SL_MAX_VERSION), SLE_VAR(Vehicle, load_unload_ticks, SLE_UINT16), - SLEG_CONDVAR( _cargo_paid_for, SLE_UINT16, 45, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, vehicle_flags, SLE_FILE_U8 | SLE_VAR_U16, 40, 179), - SLE_CONDVAR(Vehicle, vehicle_flags, SLE_UINT16, 180, SL_MAX_VERSION), + SLEG_CONDVAR( _cargo_paid_for, SLE_UINT16, SLV_45, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, vehicle_flags, SLE_FILE_U8 | SLE_VAR_U16, SLV_40, SLV_180), + SLE_CONDVAR(Vehicle, vehicle_flags, SLE_UINT16, SLV_180, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, profit_this_year, SLE_FILE_I32 | SLE_VAR_I64, 0, 64), - SLE_CONDVAR(Vehicle, profit_this_year, SLE_INT64, 65, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, profit_last_year, SLE_FILE_I32 | SLE_VAR_I64, 0, 64), - SLE_CONDVAR(Vehicle, profit_last_year, SLE_INT64, 65, SL_MAX_VERSION), - SLE_CONDVAR_X(Vehicle,profit_lifetime, SLE_INT64, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_VEH_LIFETIME_PROFIT)), - SLEG_CONDVAR( _cargo_feeder_share, SLE_FILE_I32 | SLE_VAR_I64, 51, 64), - SLEG_CONDVAR( _cargo_feeder_share, SLE_INT64, 65, 67), - SLEG_CONDVAR( _cargo_loaded_at_xy, SLE_UINT32, 51, 67), - SLE_CONDVAR(Vehicle, value, SLE_FILE_I32 | SLE_VAR_I64, 0, 64), - SLE_CONDVAR(Vehicle, value, SLE_INT64, 65, SL_MAX_VERSION), - SLE_CONDNULL_X(8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_VEHICLE_REPAIR_COST, 1, 1)), + SLE_CONDVAR(Vehicle, profit_this_year, SLE_FILE_I32 | SLE_VAR_I64, SL_MIN_VERSION, SLV_65), + SLE_CONDVAR(Vehicle, profit_this_year, SLE_INT64, SLV_65, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, profit_last_year, SLE_FILE_I32 | SLE_VAR_I64, SL_MIN_VERSION, SLV_65), + SLE_CONDVAR(Vehicle, profit_last_year, SLE_INT64, SLV_65, SL_MAX_VERSION), + SLE_CONDVAR_X(Vehicle,profit_lifetime, SLE_INT64, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_VEH_LIFETIME_PROFIT)), + SLEG_CONDVAR( _cargo_feeder_share, SLE_FILE_I32 | SLE_VAR_I64, SLV_51, SLV_65), + SLEG_CONDVAR( _cargo_feeder_share, SLE_INT64, SLV_65, SLV_68), + SLEG_CONDVAR( _cargo_loaded_at_xy, SLE_UINT32, SLV_51, SLV_68), + SLE_CONDVAR(Vehicle, value, SLE_FILE_I32 | SLE_VAR_I64, SL_MIN_VERSION, SLV_65), + SLE_CONDVAR(Vehicle, value, SLE_INT64, SLV_65, SL_MAX_VERSION), + SLE_CONDNULL_X(8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_VEHICLE_REPAIR_COST, 1, 1)), - SLE_CONDVAR(Vehicle, random_bits, SLE_UINT8, 2, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, waiting_triggers, SLE_UINT8, 2, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, random_bits, SLE_UINT8, SLV_2, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, waiting_triggers, SLE_UINT8, SLV_2, SL_MAX_VERSION), - SLE_CONDREF_X(Vehicle, ahead_separation, REF_VEHICLE, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_AUTO_TIMETABLE)), - SLE_CONDREF_X(Vehicle, behind_separation, REF_VEHICLE, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_AUTO_TIMETABLE)), + SLE_CONDREF_X(Vehicle, ahead_separation, REF_VEHICLE, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_AUTO_TIMETABLE)), + SLE_CONDREF_X(Vehicle, behind_separation, REF_VEHICLE, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_AUTO_TIMETABLE)), - SLE_CONDREF(Vehicle, next_shared, REF_VEHICLE, 2, SL_MAX_VERSION), - SLE_CONDNULL(2, 2, 68), - SLE_CONDNULL(4, 69, 100), + SLE_CONDREF(Vehicle, next_shared, REF_VEHICLE, SLV_2, SL_MAX_VERSION), + SLE_CONDNULL(2, SLV_2, SLV_69), + SLE_CONDNULL(4, SLV_69, SLV_101), - SLE_CONDVAR(Vehicle, group_id, SLE_UINT16, 60, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, group_id, SLE_UINT16, SLV_60, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, current_order_time, SLE_UINT32, 67, SL_MAX_VERSION), - SLE_CONDVAR_X(Vehicle, current_loading_time, SLE_UINT32, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_AUTO_TIMETABLE)), - SLE_CONDNULL_X(4, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), - SLE_CONDVAR(Vehicle, lateness_counter, SLE_INT32, 67, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, current_order_time, SLE_UINT32, SLV_67, SL_MAX_VERSION), + SLE_CONDVAR_X(Vehicle, current_loading_time, SLE_UINT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_AUTO_TIMETABLE)), + SLE_CONDNULL_X(4, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), + SLE_CONDVAR(Vehicle, lateness_counter, SLE_INT32, SLV_67, SL_MAX_VERSION), - SLE_CONDNULL(10, 2, 143), // old reserved space + SLE_CONDNULL(10, SLV_2, SLV_144), // old reserved space - SLE_CONDNULL_X((8 + 8 + 2 + 2 + 4 + 4 + 1 + 1) * 30, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), - SLE_CONDNULL_X((8 + 8 + 2 + 2 + 4 + 4 + 1 + 1) * 70, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 4)), - SLE_CONDNULL_X(1, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), - SLE_CONDNULL_X(1, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), - SLE_CONDNULL_X(2, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), + SLE_CONDNULL_X((8 + 8 + 2 + 2 + 4 + 4 + 1 + 1) * 30, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), + SLE_CONDNULL_X((8 + 8 + 2 + 2 + 4 + 4 + 1 + 1) * 70, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 4)), + SLE_CONDNULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), + SLE_CONDNULL_X(1, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), + SLE_CONDNULL_X(2, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), SLE_END() }; @@ -759,19 +770,19 @@ const SaveLoad *GetVehicleDescription(VehicleType vt) SLE_VAR(Train, railtype, SLE_UINT8), SLE_VAR(Train, track, SLE_UINT8), - SLE_CONDVAR(Train, flags, SLE_FILE_U8 | SLE_VAR_U32, 2, 99), - SLE_CONDVAR_X(Train, flags, SLE_FILE_U16 | SLE_VAR_U32, 100, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TRAIN_FLAGS_EXTRA, 0, 0)), - SLE_CONDVAR_X(Train, flags, SLE_UINT32, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TRAIN_FLAGS_EXTRA, 1)), - SLE_CONDNULL(2, 2, 59), + SLE_CONDVAR(Train, flags, SLE_FILE_U8 | SLE_VAR_U32, SLV_2, SLV_100), + SLE_CONDVAR_X(Train, flags, SLE_FILE_U16 | SLE_VAR_U32, SLV_100, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TRAIN_FLAGS_EXTRA, 0, 0)), + SLE_CONDVAR_X(Train, flags, SLE_UINT32, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_TRAIN_FLAGS_EXTRA, 1)), + SLE_CONDNULL(2, SLV_2, SLV_60), - SLE_CONDVAR(Train, wait_counter, SLE_UINT16, 136, SL_MAX_VERSION), - SLE_CONDVAR_X(Train, tunnel_bridge_signal_num, SLE_UINT16, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SIG_TUNNEL_BRIDGE, 5)), + SLE_CONDVAR(Train, wait_counter, SLE_UINT16, SLV_136, SL_MAX_VERSION), + SLE_CONDVAR_X(Train, tunnel_bridge_signal_num, SLE_UINT16, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SIG_TUNNEL_BRIDGE, 5)), - SLE_CONDNULL(2, 2, 19), - SLE_CONDVAR(Train, gv_flags, SLE_UINT16, 139, SL_MAX_VERSION), - SLE_CONDNULL(11, 2, 143), // old reserved space - SLE_CONDVAR_X(Train, reverse_distance, SLE_UINT16, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_REVERSE_AT_WAYPOINT)), - SLE_CONDVAR_X(Train, critical_breakdown_count, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_IMPROVED_BREAKDOWNS, 2)), + SLE_CONDNULL(2, SLV_2, SLV_20), + SLE_CONDVAR(Train, gv_flags, SLE_UINT16, SLV_139, SL_MAX_VERSION), + SLE_CONDNULL(11, SLV_2, SLV_144), // old reserved space + SLE_CONDVAR_X(Train, reverse_distance, SLE_UINT16, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_REVERSE_AT_WAYPOINT)), + SLE_CONDVAR_X(Train, critical_breakdown_count, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_IMPROVED_BREAKDOWNS, 2)), SLE_END() }; @@ -787,12 +798,12 @@ const SaveLoad *GetVehicleDescription(VehicleType vt) SLE_VAR(RoadVehicle, crashed_ctr, SLE_UINT16), SLE_VAR(RoadVehicle, reverse_ctr, SLE_UINT8), - SLE_CONDNULL(2, 6, 68), - SLE_CONDVAR(RoadVehicle, gv_flags, SLE_UINT16, 139, SL_MAX_VERSION), - SLE_CONDNULL(4, 69, 130), - SLE_CONDNULL(2, 6, 130), - SLE_CONDNULL(16, 2, 143), // old reserved space - SLE_CONDVAR_X(RoadVehicle, critical_breakdown_count, SLE_UINT8, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_IMPROVED_BREAKDOWNS, 6)), + SLE_CONDNULL(2, SLV_6, SLV_69), + SLE_CONDVAR(RoadVehicle, gv_flags, SLE_UINT16, SLV_139, SL_MAX_VERSION), + SLE_CONDNULL(4, SLV_69, SLV_131), + SLE_CONDNULL(2, SLV_6, SLV_131), + SLE_CONDNULL(16, SLV_2, SLV_144), // old reserved space + SLE_CONDVAR_X(RoadVehicle, critical_breakdown_count, SLE_UINT8, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_IMPROVED_BREAKDOWNS, 6)), SLE_END() }; @@ -801,10 +812,10 @@ const SaveLoad *GetVehicleDescription(VehicleType vt) SLE_WRITEBYTE(Vehicle, type), SLE_VEH_INCLUDE(), SLE_VAR(Ship, state, SLE_UINT8), - SLE_CONDDEQUE(Ship, path, SLE_UINT8, 203, SL_MAX_VERSION), - SLE_CONDVAR(Ship, rotation, SLE_UINT8, 204, SL_MAX_VERSION), + SLE_CONDDEQUE(Ship, path, SLE_UINT8, SLV_SHIP_PATH_CACHE, SL_MAX_VERSION), + SLE_CONDVAR(Ship, rotation, SLE_UINT8, SLV_SHIP_ROTATION, SL_MAX_VERSION), - SLE_CONDNULL(16, 2, 143), // old reserved space + SLE_CONDNULL(16, SLV_2, SLV_144), // old reserved space SLE_END() }; @@ -815,20 +826,20 @@ const SaveLoad *GetVehicleDescription(VehicleType vt) SLE_VAR(Aircraft, crashed_counter, SLE_UINT16), SLE_VAR(Aircraft, pos, SLE_UINT8), - SLE_CONDVAR(Aircraft, targetairport, SLE_FILE_U8 | SLE_VAR_U16, 0, 4), - SLE_CONDVAR(Aircraft, targetairport, SLE_UINT16, 5, SL_MAX_VERSION), + SLE_CONDVAR(Aircraft, targetairport, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_5), + SLE_CONDVAR(Aircraft, targetairport, SLE_UINT16, SLV_5, SL_MAX_VERSION), SLE_VAR(Aircraft, state, SLE_UINT8), - SLE_CONDVAR(Aircraft, previous_pos, SLE_UINT8, 2, SL_MAX_VERSION), - SLE_CONDVAR(Aircraft, last_direction, SLE_UINT8, 2, SL_MAX_VERSION), - SLE_CONDVAR(Aircraft, number_consecutive_turns, SLE_UINT8, 2, SL_MAX_VERSION), - SLE_CONDNULL_X(2, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), + SLE_CONDVAR(Aircraft, previous_pos, SLE_UINT8, SLV_2, SL_MAX_VERSION), + SLE_CONDVAR(Aircraft, last_direction, SLE_UINT8, SLV_2, SL_MAX_VERSION), + SLE_CONDVAR(Aircraft, number_consecutive_turns, SLE_UINT8, SLV_2, SL_MAX_VERSION), + SLE_CONDNULL_X(2, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), - SLE_CONDVAR(Aircraft, turn_counter, SLE_UINT8, 136, SL_MAX_VERSION), - SLE_CONDVAR(Aircraft, flags, SLE_UINT8, 167, SL_MAX_VERSION), + SLE_CONDVAR(Aircraft, turn_counter, SLE_UINT8, SLV_136, SL_MAX_VERSION), + SLE_CONDVAR(Aircraft, flags, SLE_UINT8, SLV_167, SL_MAX_VERSION), - SLE_CONDNULL(13, 2, 143), // old reserved space + SLE_CONDNULL(13, SLV_2, SLV_144), // old reserved space SLE_END() }; @@ -838,29 +849,29 @@ const SaveLoad *GetVehicleDescription(VehicleType vt) SLE_VAR(Vehicle, subtype, SLE_UINT8), - SLE_CONDNULL_X(5, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), + SLE_CONDNULL_X(5, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), - SLE_CONDVAR(Vehicle, tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), - SLE_CONDVAR(Vehicle, tile, SLE_UINT32, 6, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, tile, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(Vehicle, tile, SLE_UINT32, SLV_6, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, x_pos, SLE_FILE_I16 | SLE_VAR_I32, 0, 5), - SLE_CONDVAR(Vehicle, x_pos, SLE_INT32, 6, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, y_pos, SLE_FILE_I16 | SLE_VAR_I32, 0, 5), - SLE_CONDVAR(Vehicle, y_pos, SLE_INT32, 6, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, z_pos, SLE_FILE_U8 | SLE_VAR_I32, 0, 163), - SLE_CONDVAR(Vehicle, z_pos, SLE_INT32, 164, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, x_pos, SLE_FILE_I16 | SLE_VAR_I32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(Vehicle, x_pos, SLE_INT32, SLV_6, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, y_pos, SLE_FILE_I16 | SLE_VAR_I32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(Vehicle, y_pos, SLE_INT32, SLV_6, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, z_pos, SLE_FILE_U8 | SLE_VAR_I32, SL_MIN_VERSION, SLV_164), + SLE_CONDVAR(Vehicle, z_pos, SLE_INT32, SLV_164, SL_MAX_VERSION), SLE_VAR(Vehicle, sprite_seq.seq[0].sprite, SLE_FILE_U16 | SLE_VAR_U32), - SLE_CONDNULL(5, 0, 57), + SLE_CONDNULL(5, SL_MIN_VERSION, SLV_59), SLE_VAR(Vehicle, progress, SLE_UINT8), SLE_VAR(Vehicle, vehstatus, SLE_UINT8), SLE_VAR(EffectVehicle, animation_state, SLE_UINT16), SLE_VAR(EffectVehicle, animation_substate, SLE_UINT8), - SLE_CONDVAR(Vehicle, spritenum, SLE_UINT8, 2, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, spritenum, SLE_UINT8, SLV_2, SL_MAX_VERSION), - SLE_CONDNULL(15, 2, 143), // old reserved space + SLE_CONDNULL(15, SLV_2, SLV_144), // old reserved space SLE_END() }; @@ -871,38 +882,38 @@ const SaveLoad *GetVehicleDescription(VehicleType vt) SLE_REF(Vehicle, next, REF_VEHICLE_OLD), SLE_VAR(Vehicle, subtype, SLE_UINT8), - SLE_CONDVAR(Vehicle, tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), - SLE_CONDVAR(Vehicle, tile, SLE_UINT32, 6, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, dest_tile, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), - SLE_CONDVAR(Vehicle, dest_tile, SLE_UINT32, 6, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, tile, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(Vehicle, tile, SLE_UINT32, SLV_6, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, dest_tile, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(Vehicle, dest_tile, SLE_UINT32, SLV_6, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, x_pos, SLE_FILE_I16 | SLE_VAR_I32, 0, 5), - SLE_CONDVAR(Vehicle, x_pos, SLE_INT32, 6, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, y_pos, SLE_FILE_I16 | SLE_VAR_I32, 0, 5), - SLE_CONDVAR(Vehicle, y_pos, SLE_INT32, 6, SL_MAX_VERSION), - SLE_CONDVAR(Vehicle, z_pos, SLE_FILE_U8 | SLE_VAR_I32, 0, 163), - SLE_CONDVAR(Vehicle, z_pos, SLE_INT32, 164, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, x_pos, SLE_FILE_I16 | SLE_VAR_I32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(Vehicle, x_pos, SLE_INT32, SLV_6, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, y_pos, SLE_FILE_I16 | SLE_VAR_I32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(Vehicle, y_pos, SLE_INT32, SLV_6, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, z_pos, SLE_FILE_U8 | SLE_VAR_I32, SL_MIN_VERSION, SLV_164), + SLE_CONDVAR(Vehicle, z_pos, SLE_INT32, SLV_164, SL_MAX_VERSION), SLE_VAR(Vehicle, direction, SLE_UINT8), - SLE_CONDNULL(5, 0, 57), + SLE_CONDNULL(5, SL_MIN_VERSION, SLV_58), SLE_VAR(Vehicle, owner, SLE_UINT8), SLE_VAR(Vehicle, vehstatus, SLE_UINT8), - SLE_CONDVAR(Vehicle, current_order.dest, SLE_FILE_U8 | SLE_VAR_U16, 0, 4), - SLE_CONDVAR(Vehicle, current_order.dest, SLE_UINT16, 5, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, current_order.dest, SLE_FILE_U8 | SLE_VAR_U16, SL_MIN_VERSION, SLV_5), + SLE_CONDVAR(Vehicle, current_order.dest, SLE_UINT16, SLV_5, SL_MAX_VERSION), SLE_VAR(Vehicle, sprite_seq.seq[0].sprite, SLE_FILE_U16 | SLE_VAR_U32), - SLE_CONDVAR(Vehicle, age, SLE_FILE_U16 | SLE_VAR_I32, 0, 30), - SLE_CONDVAR(Vehicle, age, SLE_INT32, 31, SL_MAX_VERSION), + SLE_CONDVAR(Vehicle, age, SLE_FILE_U16 | SLE_VAR_I32, SL_MIN_VERSION, SLV_31), + SLE_CONDVAR(Vehicle, age, SLE_INT32, SLV_31, SL_MAX_VERSION), SLE_VAR(Vehicle, tick_counter, SLE_UINT8), - SLE_CONDVAR(DisasterVehicle, image_override, SLE_FILE_U16 | SLE_VAR_U32, 0, 190), - SLE_CONDVAR(DisasterVehicle, image_override, SLE_UINT32, 191, SL_MAX_VERSION), - SLE_CONDVAR(DisasterVehicle, big_ufo_destroyer_target, SLE_FILE_U16 | SLE_VAR_U32, 0, 190), - SLE_CONDVAR(DisasterVehicle, big_ufo_destroyer_target, SLE_UINT32, 191, SL_MAX_VERSION), - SLE_CONDNULL_X(2, 0, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), - SLE_CONDVAR(DisasterVehicle, flags, SLE_UINT8, 194, SL_MAX_VERSION), + SLE_CONDVAR(DisasterVehicle, image_override, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_191), + SLE_CONDVAR(DisasterVehicle, image_override, SLE_UINT32, SLV_191, SL_MAX_VERSION), + SLE_CONDVAR(DisasterVehicle, big_ufo_destroyer_target, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_191), + SLE_CONDVAR(DisasterVehicle, big_ufo_destroyer_target, SLE_UINT32, SLV_191, SL_MAX_VERSION), + SLE_CONDNULL_X(2, SL_MIN_VERSION, SL_MAX_VERSION, SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP)), + SLE_CONDVAR(DisasterVehicle, flags, SLE_UINT8, SLV_194, SL_MAX_VERSION), - SLE_CONDNULL(16, 2, 143), // old reserved space + SLE_CONDNULL(16, SLV_2, SLV_144), // old reserved space SLE_END() }; @@ -963,13 +974,13 @@ void Load_VEHS() } /* Old savegames used 'last_station_visited = 0xFF' */ - if (IsSavegameVersionBefore(5) && v->last_station_visited == 0xFF) { + if (IsSavegameVersionBefore(SLV_5) && v->last_station_visited == 0xFF) { v->last_station_visited = INVALID_STATION; } - if (IsSavegameVersionBefore(182)) v->last_loading_station = INVALID_STATION; + if (IsSavegameVersionBefore(SLV_182)) v->last_loading_station = INVALID_STATION; - if (IsSavegameVersionBefore(5)) { + if (IsSavegameVersionBefore(SLV_5)) { /* Convert the current_order.type (which is a mix of type and flags, because * in those versions, they both were 4 bits big) to type and flags */ v->current_order.flags = GB(v->current_order.type, 4, 4); @@ -977,7 +988,7 @@ void Load_VEHS() } /* Advanced vehicle lists got added */ - if (IsSavegameVersionBefore(60)) v->group_id = DEFAULT_GROUP; + if (IsSavegameVersionBefore(SLV_60)) v->group_id = DEFAULT_GROUP; } } diff --git a/src/saveload/waypoint_sl.cpp b/src/saveload/waypoint_sl.cpp index 0f93969853..ae74d812b1 100644 --- a/src/saveload/waypoint_sl.cpp +++ b/src/saveload/waypoint_sl.cpp @@ -70,7 +70,7 @@ void MoveWaypointsToBaseStations() * waypoints to make way for storing the index in m2. The custom graphics * id which was stored in m4 is now saved as a grf/id reference in the * waypoint struct. */ - if (IsSavegameVersionBefore(17)) { + if (IsSavegameVersionBefore(SLV_17)) { for (OldWaypoint *wp = _old_waypoints.Begin(); wp != _old_waypoints.End(); wp++) { if (wp->delete_ctr != 0) continue; // The waypoint was deleted @@ -113,7 +113,7 @@ void MoveWaypointsToBaseStations() TileIndex t = wp->xy; if (IsTileType(t, MP_RAILWAY) && GetRailTileType(t) == 2 /* RAIL_TILE_WAYPOINT */ && _m[t].m2 == wp->index) { /* The tile might've been reserved! */ - bool reserved = !IsSavegameVersionBefore(100) && HasBit(_m[t].m5, 4); + bool reserved = !IsSavegameVersionBefore(SLV_100) && HasBit(_m[t].m5, 4); /* The tile really has our waypoint, so reassign the map array */ MakeRailWaypoint(t, GetTileOwner(t), new_wp->index, (Axis)GB(_m[t].m5, 0, 1), 0, GetRailType(t)); @@ -150,21 +150,21 @@ void MoveWaypointsToBaseStations() } static const SaveLoad _old_waypoint_desc[] = { - SLE_CONDVAR(OldWaypoint, xy, SLE_FILE_U16 | SLE_VAR_U32, 0, 5), - SLE_CONDVAR(OldWaypoint, xy, SLE_UINT32, 6, SL_MAX_VERSION), - SLE_CONDVAR(OldWaypoint, town_index, SLE_UINT16, 12, 121), - SLE_CONDREF(OldWaypoint, town, REF_TOWN, 122, SL_MAX_VERSION), - SLE_CONDVAR(OldWaypoint, town_cn, SLE_FILE_U8 | SLE_VAR_U16, 12, 88), - SLE_CONDVAR(OldWaypoint, town_cn, SLE_UINT16, 89, SL_MAX_VERSION), - SLE_CONDVAR(OldWaypoint, string_id, SLE_STRINGID, 0, 83), - SLE_CONDSTR(OldWaypoint, name, SLE_STR, 0, 84, SL_MAX_VERSION), + SLE_CONDVAR(OldWaypoint, xy, SLE_FILE_U16 | SLE_VAR_U32, SL_MIN_VERSION, SLV_6), + SLE_CONDVAR(OldWaypoint, xy, SLE_UINT32, SLV_6, SL_MAX_VERSION), + SLE_CONDVAR(OldWaypoint, town_index, SLE_UINT16, SLV_12, SLV_122), + SLE_CONDREF(OldWaypoint, town, REF_TOWN, SLV_122, SL_MAX_VERSION), + SLE_CONDVAR(OldWaypoint, town_cn, SLE_FILE_U8 | SLE_VAR_U16, SLV_12, SLV_89), + SLE_CONDVAR(OldWaypoint, town_cn, SLE_UINT16, SLV_89, SL_MAX_VERSION), + SLE_CONDVAR(OldWaypoint, string_id, SLE_STRINGID, SL_MIN_VERSION, SLV_84), + SLE_CONDSTR(OldWaypoint, name, SLE_STR, 0, SLV_84, SL_MAX_VERSION), SLE_VAR(OldWaypoint, delete_ctr, SLE_UINT8), - SLE_CONDVAR(OldWaypoint, build_date, SLE_FILE_U16 | SLE_VAR_I32, 3, 30), - SLE_CONDVAR(OldWaypoint, build_date, SLE_INT32, 31, SL_MAX_VERSION), - SLE_CONDVAR(OldWaypoint, localidx, SLE_UINT8, 3, SL_MAX_VERSION), - SLE_CONDVAR(OldWaypoint, grfid, SLE_UINT32, 17, SL_MAX_VERSION), - SLE_CONDVAR(OldWaypoint, owner, SLE_UINT8, 101, SL_MAX_VERSION), + SLE_CONDVAR(OldWaypoint, build_date, SLE_FILE_U16 | SLE_VAR_I32, SLV_3, SLV_31), + SLE_CONDVAR(OldWaypoint, build_date, SLE_INT32, SLV_31, SL_MAX_VERSION), + SLE_CONDVAR(OldWaypoint, localidx, SLE_UINT8, SLV_3, SL_MAX_VERSION), + SLE_CONDVAR(OldWaypoint, grfid, SLE_UINT32, SLV_17, SL_MAX_VERSION), + SLE_CONDVAR(OldWaypoint, owner, SLE_UINT8, SLV_101, SL_MAX_VERSION), SLE_END() }; @@ -190,10 +190,10 @@ static void Ptrs_WAYP() for (OldWaypoint *wp = _old_waypoints.Begin(); wp != _old_waypoints.End(); wp++) { SlObject(wp, _old_waypoint_desc); - if (IsSavegameVersionBefore(12)) { + if (IsSavegameVersionBefore(SLV_12)) { wp->town_cn = (wp->string_id & 0xC000) == 0xC000 ? (wp->string_id >> 8) & 0x3F : 0; wp->town = ClosestTownFromTile(wp->xy, UINT_MAX); - } else if (IsSavegameVersionBefore(122)) { + } else if (IsSavegameVersionBefore(SLV_122)) { /* Only for versions 12 .. 122 */ if (!Town::IsValidID(wp->town_index)) { /* Upon a corrupted waypoint we'll likely get here. The next step will be to @@ -206,7 +206,7 @@ static void Ptrs_WAYP() } wp->town = Town::Get(wp->town_index); } - if (IsSavegameVersionBefore(84)) { + if (IsSavegameVersionBefore(SLV_84)) { wp->name = CopyFromOldName(wp->string_id); } } diff --git a/src/script/script_config.hpp b/src/script/script_config.hpp index dfc675473c..3dfd6bb0b2 100644 --- a/src/script/script_config.hpp +++ b/src/script/script_config.hpp @@ -139,7 +139,7 @@ public: /** * Randomize all settings the Script requested to be randomized. */ - void AddRandomDeviation(); + virtual void AddRandomDeviation(); /** * Is this config attached to an Script? In other words, is there a Script diff --git a/src/settings.cpp b/src/settings.cpp index 78a8c39f3d..8e4ebb0462 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -1504,7 +1504,7 @@ static void PrepareOldDiffCustom() */ static void HandleOldDiffCustom(bool savegame) { - uint options_to_load = GAME_DIFFICULTY_NUM - ((savegame && IsSavegameVersionBefore(4)) ? 1 : 0); + uint options_to_load = GAME_DIFFICULTY_NUM - ((savegame && IsSavegameVersionBefore(SLV_4)) ? 1 : 0); if (!savegame) { /* If we did read to old_diff_custom, then at least one value must be non 0. */ @@ -2352,7 +2352,7 @@ static void LoadSettingsXref(const SettingDesc *osd, void *object) { */ static void LoadSettings(const SettingDesc *osd, void *object) { - extern uint16 _sl_version; + extern SaveLoadVersion _sl_version; for (; osd->save.cmd != SL_END; osd++) { if (osd->patx_name != NULL) continue; diff --git a/src/ship.h b/src/ship.h index cd815db0b8..012b84b291 100644 --- a/src/ship.h +++ b/src/ship.h @@ -31,6 +31,8 @@ struct Ship FINAL : public SpecializedVehicle { TrackBitsByte state; ///< The "track" the ship is following. ShipPathCache path; ///< Cached path. DirectionByte rotation; ///< Visible direction. + int16 rotation_x_pos; ///< NOSAVE: X Position before rotation. + int16 rotation_y_pos; ///< NOSAVE: Y Position before rotation. /** We don't want GCC to zero our struct! It already is zeroed and has an index! */ Ship() : SpecializedVehicleBase() {} diff --git a/src/ship_cmd.cpp b/src/ship_cmd.cpp index 031c8ca5b0..34da7d4a20 100644 --- a/src/ship_cmd.cpp +++ b/src/ship_cmd.cpp @@ -320,6 +320,15 @@ void Ship::UpdateDeltaXY() this->x_extent = bb[1]; this->y_extent = bb[0]; this->z_extent = 6; + + if (this->direction != this->rotation) { + /* If we are rotating, then it is possible the ship was moved to its next position. In that + * case, because we are still showing the old direction, the ship will appear to glitch sideways + * slightly. We can work around this by applying an additional offset to make the ship appear + * where it was before it moved. */ + this->x_offs -= this->x_pos - this->rotation_x_pos; + this->y_offs -= this->y_pos - this->rotation_y_pos; + } } /** @@ -829,6 +838,9 @@ static void ShipController(Ship *v) /* Stop for rotation */ v->cur_speed = 0; v->direction = new_direction; + /* Remember our current location to avoid movement glitch */ + v->rotation_x_pos = v->x_pos; + v->rotation_y_pos = v->y_pos; break; } } @@ -858,6 +870,9 @@ getout: reverse_direction: v->direction = ReverseDir(v->direction); + /* Remember our current location to avoid movement glitch */ + v->rotation_x_pos = v->x_pos; + v->rotation_y_pos = v->y_pos; v->cur_speed = 0; v->path.clear(); goto getout; diff --git a/src/table/company_settings.ini b/src/table/company_settings.ini index 48563dabdf..6bbe098cac 100644 --- a/src/table/company_settings.ini +++ b/src/table/company_settings.ini @@ -32,7 +32,7 @@ strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT strval = STR_NULL proc = NULL load = NULL -from = 0 +from = SL_MIN_VERSION to = SL_MAX_VERSION cat = SC_ADVANCED extver = SlXvFeatureTest() diff --git a/src/table/currency_settings.ini b/src/table/currency_settings.ini index 94e568f7b2..1af4d75676 100644 --- a/src/table/currency_settings.ini +++ b/src/table/currency_settings.ini @@ -25,7 +25,7 @@ strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT strval = STR_NULL proc = NULL load = NULL -from = 0 +from = SL_MIN_VERSION to = SL_MAX_VERSION cat = SC_ADVANCED extver = SlXvFeatureTest() diff --git a/src/table/gameopt_settings.ini b/src/table/gameopt_settings.ini index 4a258bc359..c16e66c074 100644 --- a/src/table/gameopt_settings.ini +++ b/src/table/gameopt_settings.ini @@ -60,7 +60,7 @@ strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT strval = STR_NULL proc = NULL load = NULL -from = 0 +from = SL_MIN_VERSION to = SL_MAX_VERSION cat = SC_ADVANCED extver = SlXvFeatureTest() @@ -80,7 +80,7 @@ def = 0 min = 0 max = 0 full = NULL -to = 3 +to = SLV_4 [SDTG_GENERAL] name = ""diff_custom"" @@ -94,7 +94,7 @@ def = 0 min = 0 max = 0 full = NULL -from = 4 +from = SLV_4 ## [SDTG_VAR] @@ -155,21 +155,21 @@ type = SLE_UINT8 def = DEF_SNOWLINE_HEIGHT * TILE_HEIGHT min = MIN_SNOWLINE_HEIGHT * TILE_HEIGHT max = MAX_SNOWLINE_HEIGHT * TILE_HEIGHT -to = 21 +to = SLV_22 [SDT_NULL] length = 1 -from = 22 -to = 164 +from = SLV_22 +to = SLV_165 [SDT_NULL] length = 1 -to = 22 +to = SLV_23 [SDTC_OMANY] var = gui.autosave type = SLE_UINT8 -from = 23 +from = SLV_23 flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC def = 1 max = 4 diff --git a/src/table/misc_settings.ini b/src/table/misc_settings.ini index 9d349b14ed..78a4cd25d4 100644 --- a/src/table/misc_settings.ini +++ b/src/table/misc_settings.ini @@ -32,7 +32,7 @@ strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT strval = STR_NULL proc = NULL load = NULL -from = 0 +from = SL_MIN_VERSION to = SL_MAX_VERSION cat = SC_ADVANCED extver = SlXvFeatureTest() diff --git a/src/table/settings.ini b/src/table/settings.ini index ec0ccd3594..f403fe9663 100644 --- a/src/table/settings.ini +++ b/src/table/settings.ini @@ -106,7 +106,7 @@ strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT strval = STR_NULL proc = NULL load = NULL -from = 0 +from = SL_MIN_VERSION to = SL_MAX_VERSION cat = SC_ADVANCED extver = SlXvFeatureTest() @@ -122,7 +122,7 @@ orderproc = NULL base = GameSettings var = difficulty.max_no_competitors type = SLE_UINT8 -from = 97 +from = SLV_97 def = 0 min = 0 max = MAX_COMPANIES - 1 @@ -132,14 +132,14 @@ cat = SC_BASIC [SDT_NULL] length = 1 -from = 97 -to = 109 +from = SLV_97 +to = SLV_110 [SDT_VAR] base = GameSettings var = difficulty.number_towns type = SLE_UINT8 -from = 97 +from = SLV_97 guiflags = SGF_NEWGAME_ONLY def = 2 min = 0 @@ -152,7 +152,7 @@ cat = SC_BASIC base = GameSettings var = difficulty.industry_density type = SLE_UINT8 -from = 97 +from = SLV_97 guiflags = SGF_MULTISTRING def = ID_END - 1 min = 0 @@ -167,7 +167,7 @@ cat = SC_BASIC base = GameSettings var = difficulty.max_loan type = SLE_UINT32 -from = 97 +from = SLV_97 guiflags = SGF_NEWGAME_ONLY | SGF_SCENEDIT_TOO | SGF_CURRENCY def = 300000 min = 100000 @@ -182,7 +182,7 @@ cat = SC_BASIC base = GameSettings var = difficulty.initial_interest type = SLE_UINT8 -from = 97 +from = SLV_97 guiflags = SGF_NEWGAME_ONLY | SGF_SCENEDIT_TOO def = 2 min = 2 @@ -196,7 +196,7 @@ strval = STR_CONFIG_SETTING_PERCENTAGE base = GameSettings var = difficulty.vehicle_costs type = SLE_UINT8 -from = 97 +from = SLV_97 guiflags = SGF_NEWGAME_ONLY | SGF_SCENEDIT_TOO | SGF_MULTISTRING def = 0 min = 0 @@ -211,7 +211,7 @@ cat = SC_BASIC base = GameSettings var = difficulty.competitor_speed type = SLE_UINT8 -from = 97 +from = SLV_97 guiflags = SGF_MULTISTRING def = 2 min = 0 @@ -224,14 +224,14 @@ cat = SC_BASIC [SDT_NULL] length = 1 -from = 97 -to = 109 +from = SLV_97 +to = SLV_110 [SDT_VAR] base = GameSettings var = difficulty.vehicle_breakdowns type = SLE_UINT8 -from = 97 +from = SLV_97 guiflags = SGF_MULTISTRING def = 1 min = 0 @@ -246,7 +246,7 @@ cat = SC_BASIC base = GameSettings var = difficulty.subsidy_multiplier type = SLE_UINT8 -from = 97 +from = SLV_97 guiflags = SGF_MULTISTRING def = 2 min = 0 @@ -260,7 +260,7 @@ strval = STR_SUBSIDY_X1_5 base = GameSettings var = difficulty.construction_cost type = SLE_UINT8 -from = 97 +from = SLV_97 guiflags = SGF_NEWGAME_ONLY | SGF_SCENEDIT_TOO | SGF_MULTISTRING def = 0 min = 0 @@ -275,7 +275,7 @@ cat = SC_BASIC base = GameSettings var = difficulty.terrain_type type = SLE_UINT8 -from = 97 +from = SLV_97 guiflags = SGF_MULTISTRING | SGF_NEWGAME_ONLY def = 1 min = 0 @@ -290,7 +290,7 @@ cat = SC_BASIC base = GameSettings var = difficulty.quantity_sea_lakes type = SLE_UINT8 -from = 97 +from = SLV_97 guiflags = SGF_NEWGAME_ONLY def = 0 min = 0 @@ -302,7 +302,7 @@ cat = SC_BASIC [SDT_BOOL] base = GameSettings var = difficulty.economy -from = 97 +from = SLV_97 def = false str = STR_CONFIG_SETTING_RECESSIONS strhelp = STR_CONFIG_SETTING_RECESSIONS_HELPTEXT @@ -310,7 +310,7 @@ strhelp = STR_CONFIG_SETTING_RECESSIONS_HELPTEXT [SDT_BOOL] base = GameSettings var = difficulty.line_reverse_mode -from = 97 +from = SLV_97 def = false str = STR_CONFIG_SETTING_TRAIN_REVERSING strhelp = STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT @@ -318,7 +318,7 @@ strhelp = STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT [SDT_BOOL] base = GameSettings var = difficulty.disasters -from = 97 +from = SLV_97 def = false str = STR_CONFIG_SETTING_DISASTERS strhelp = STR_CONFIG_SETTING_DISASTERS_HELPTEXT @@ -328,7 +328,7 @@ cat = SC_BASIC base = GameSettings var = difficulty.town_council_tolerance type = SLE_UINT8 -from = 97 +from = SLV_97 guiflags = SGF_MULTISTRING def = 0 min = 0 @@ -344,8 +344,8 @@ name = ""diff_level"" var = _old_diff_level type = SLE_UINT8 flags = SLF_NOT_IN_CONFIG -from = 97 -to = 177 +from = SLV_97 +to = SLV_178 def = 3 min = 0 max = 3 @@ -388,7 +388,7 @@ patxname = ""auto_timetables.order.timetable_separation_rate"" base = GameSettings var = game_creation.town_name type = SLE_UINT8 -from = 97 +from = SLV_97 guiflags = SGF_NO_NETWORK def = 0 max = 255 @@ -399,7 +399,7 @@ cat = SC_BASIC base = GameSettings var = game_creation.landscape type = SLE_UINT8 -from = 97 +from = SLV_97 guiflags = SGF_MULTISTRING | SGF_NEWGAME_ONLY def = 0 max = 3 @@ -413,14 +413,14 @@ cat = SC_BASIC ; Snow line (or snow_line_height * TILE_HEIGHT) [SDT_NULL] length = 1 -from = 97 -to = 163 +from = SLV_97 +to = SLV_164 [SDT_OMANY] base = GameSettings var = vehicle.road_side type = SLE_UINT8 -from = 97 +from = SLV_97 guiflags = SGF_MULTISTRING | SGF_NO_NETWORK def = 1 max = 1 @@ -436,7 +436,7 @@ proc = CheckRoadSide base = GameSettings var = construction.max_heightlevel type = SLE_UINT8 -from = 194 +from = SLV_194 guiflags = SGF_NEWGAME_ONLY | SGF_SCENEDIT_TOO def = DEF_MAX_HEIGHTLEVEL min = MIN_MAX_HEIGHTLEVEL @@ -460,7 +460,7 @@ cat = SC_EXPERT base = GameSettings var = construction.command_pause_level type = SLE_UINT8 -from = 154 +from = SLV_154 guiflags = SGF_MULTISTRING | SGF_NO_NETWORK def = 1 min = 0 @@ -492,7 +492,7 @@ patxname = ""enable_build_river.construction.enable_remove_water"" base = GameSettings var = construction.terraform_per_64k_frames type = SLE_UINT32 -from = 156 +from = SLV_156 def = 64 << 16 min = 0 max = 1 << 30 @@ -503,7 +503,7 @@ cat = SC_EXPERT base = GameSettings var = construction.terraform_frame_burst type = SLE_UINT16 -from = 156 +from = SLV_156 def = 4096 min = 0 max = 1 << 30 @@ -514,7 +514,7 @@ cat = SC_EXPERT base = GameSettings var = construction.clear_per_64k_frames type = SLE_UINT32 -from = 156 +from = SLV_156 def = 64 << 16 min = 0 max = 1 << 30 @@ -525,7 +525,7 @@ cat = SC_EXPERT base = GameSettings var = construction.clear_frame_burst type = SLE_UINT16 -from = 156 +from = SLV_156 def = 4096 min = 0 max = 1 << 30 @@ -536,7 +536,7 @@ cat = SC_EXPERT base = GameSettings var = construction.tree_per_64k_frames type = SLE_UINT32 -from = 175 +from = SLV_175 def = 64 << 16 min = 0 max = 1 << 30 @@ -547,7 +547,7 @@ cat = SC_EXPERT base = GameSettings var = construction.tree_frame_burst type = SLE_UINT16 -from = 175 +from = SLV_175 def = 4096 min = 0 max = 1 << 30 @@ -558,7 +558,6 @@ cat = SC_EXPERT base = GameSettings var = construction.purchase_land_per_64k_frames type = SLE_UINT32 -from = 0 def = 16 << 16 min = 0 max = 1 << 30 @@ -570,7 +569,6 @@ patxname = ""buy_land_rate_limit.construction.purchase_land_per_64k_frames"" base = GameSettings var = construction.purchase_land_frame_burst type = SLE_UINT16 -from = 0 def = 1024 min = 0 max = 1 << 30 @@ -581,7 +579,7 @@ patxname = ""buy_land_rate_limit.construction.purchase_land_frame_burst"" [SDT_BOOL] base = GameSettings var = construction.autoslope -from = 75 +from = SLV_75 def = true str = STR_CONFIG_SETTING_AUTOSLOPE strhelp = STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT @@ -598,7 +596,7 @@ strhelp = STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT base = GameSettings var = construction.max_bridge_length type = SLE_UINT16 -from = 159 +from = SLV_159 guiflags = SGF_NO_NETWORK def = 64 min = 1 @@ -616,7 +614,7 @@ xref = ""construction.simulated_wormhole_signals"" base = GameSettings var = construction.max_bridge_height type = SLE_UINT8 -from = 194 +from = SLV_194 guiflags = SGF_NO_NETWORK def = 12 min = 1 @@ -631,7 +629,7 @@ cat = SC_EXPERT base = GameSettings var = construction.max_tunnel_length type = SLE_UINT16 -from = 159 +from = SLV_159 guiflags = SGF_NO_NETWORK def = 64 min = 1 @@ -647,7 +645,6 @@ var = construction.chunnel def = false str = STR_CONFIG_SETTING_CHUNNEL strhelp = STR_CONFIG_SETTING_CHUNNEL_HELPTEXT -from = 0 cat = SC_BASIC patxname = ""chunnel.construction.chunnel"" @@ -662,7 +659,6 @@ max = 16 str = STR_CONFIG_SETTING_SIMULATE_SIGNALS strval = STR_CONFIG_SETTING_SIMULATE_SIGNALS_VALUE proc = SimulatedWormholeSignalsChanged -from = 0 cat = SC_BASIC patxname = ""signal_tunnel_bridge.construction.simulated_wormhole_signals"" @@ -673,7 +669,7 @@ extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP) ;; construction.longbridges [SDT_NULL] length = 1 -to = 158 +to = SLV_159 [SDT_VAR] base = GameSettings @@ -701,7 +697,7 @@ strhelp = STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT base = GameSettings var = economy.town_layout type = SLE_UINT8 -from = 59 +from = SLV_59 guiflags = SGF_MULTISTRING def = TL_ORIGINAL min = TL_BEGIN @@ -730,7 +726,7 @@ extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 7) [SDT_BOOL] base = GameSettings var = economy.allow_town_roads -from = 113 +from = SLV_113 guiflags = SGF_NO_NETWORK def = true str = STR_CONFIG_SETTING_ALLOW_TOWN_ROADS @@ -744,7 +740,7 @@ extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP) base = GameSettings var = economy.found_town type = SLE_UINT8 -from = 128 +from = SLV_128 guiflags = SGF_MULTISTRING def = TF_FORBIDDEN min = TF_BEGIN @@ -759,7 +755,7 @@ cat = SC_BASIC [SDT_BOOL] base = GameSettings var = economy.allow_town_level_crossings -from = 143 +from = SLV_143 guiflags = SGF_NO_NETWORK def = true str = STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS @@ -771,7 +767,7 @@ strhelp = STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT base = GameSettings var = linkgraph.recalc_interval type = SLE_UINT16 -from = 183 +from = SLV_183 def = 4 min = 2 max = 32 @@ -784,7 +780,7 @@ strhelp = STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT base = GameSettings var = linkgraph.recalc_time type = SLE_UINT16 -from = 183 +from = SLV_183 def = 16 min = 1 max = 4096 @@ -806,7 +802,7 @@ patxname = ""linkgraph_day_scale.linkgraph.recalc_not_scaled_by_daylength"" base = GameSettings var = linkgraph.distribution_pax type = SLE_UINT8 -from = 183 +from = SLV_183 guiflags = SGF_MULTISTRING def = DT_MANUAL min = DT_MIN @@ -820,7 +816,7 @@ strhelp = STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT base = GameSettings var = linkgraph.distribution_mail type = SLE_UINT8 -from = 183 +from = SLV_183 guiflags = SGF_MULTISTRING def = DT_MANUAL min = DT_MIN @@ -834,7 +830,7 @@ strhelp = STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT base = GameSettings var = linkgraph.distribution_armoured type = SLE_UINT8 -from = 183 +from = SLV_183 guiflags = SGF_MULTISTRING def = DT_MANUAL min = DT_MIN @@ -848,7 +844,7 @@ strhelp = STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT base = GameSettings var = linkgraph.distribution_default type = SLE_UINT8 -from = 183 +from = SLV_183 guiflags = SGF_MULTISTRING def = DT_MANUAL min = DT_BEGIN @@ -862,7 +858,7 @@ strhelp = STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT base = GameSettings var = linkgraph.accuracy type = SLE_UINT8 -from = 183 +from = SLV_183 def = 16 min = 2 max = 64 @@ -875,7 +871,7 @@ strhelp = STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT base = GameSettings var = linkgraph.demand_distance type = SLE_UINT8 -from = 183 +from = SLV_183 def = 100 min = 0 max = 255 @@ -888,7 +884,7 @@ strhelp = STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT base = GameSettings var = linkgraph.demand_size type = SLE_UINT8 -from = 183 +from = SLV_183 def = 100 min = 0 max = 100 @@ -901,7 +897,7 @@ strhelp = STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT base = GameSettings var = linkgraph.short_path_saturation type = SLE_UINT8 -from = 183 +from = SLV_183 def = 80 min = 0 max = 250 @@ -957,7 +953,7 @@ proc = TrainAccelerationModelChanged base = GameSettings var = vehicle.roadveh_acceleration_model type = SLE_UINT8 -from = 139 +from = SLV_139 guiflags = SGF_MULTISTRING def = 1 min = 0 @@ -972,7 +968,7 @@ proc = RoadVehAccelerationModelChanged base = GameSettings var = vehicle.train_slope_steepness type = SLE_UINT8 -from = 133 +from = SLV_133 def = 3 min = 0 max = 10 @@ -987,7 +983,7 @@ cat = SC_EXPERT base = GameSettings var = vehicle.roadveh_slope_steepness type = SLE_UINT8 -from = 139 +from = SLV_139 def = 7 min = 0 max = 10 @@ -1011,7 +1007,7 @@ cat = SC_EXPERT base = GameSettings var = vehicle.max_train_length type = SLE_UINT8 -from = 159 +from = SLV_159 def = 7 min = 1 max = 64 @@ -1024,13 +1020,13 @@ cat = SC_BASIC ; vehicle.mammoth_trains [SDT_NULL] length = 1 -to = 158 +to = SLV_159 [SDT_VAR] base = GameSettings var = vehicle.smoke_amount type = SLE_UINT8 -from = 145 +from = SLV_145 guiflags = SGF_MULTISTRING def = 1 min = 0 @@ -1042,7 +1038,7 @@ strval = STR_CONFIG_SETTING_NONE ; order.gotodepot [SDT_NULL] length = 1 -to = 158 +to = SLV_159 ; path finder @@ -1055,31 +1051,31 @@ cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = pf.new_pathfinding_all -to = 86 +to = SLV_87 def = false cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = pf.yapf.ship_use_yapf -from = 28 -to = 86 +from = SLV_28 +to = SLV_87 def = false cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = pf.yapf.road_use_yapf -from = 28 -to = 86 +from = SLV_28 +to = SLV_87 def = true cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = pf.yapf.rail_use_yapf -from = 28 -to = 86 +from = SLV_28 +to = SLV_87 def = true cat = SC_EXPERT @@ -1088,7 +1084,7 @@ cat = SC_EXPERT base = GameSettings var = pf.pathfinder_for_trains type = SLE_UINT8 -from = 87 +from = SLV_87 guiflags = SGF_MULTISTRING def = 2 min = 1 @@ -1103,7 +1099,7 @@ cat = SC_EXPERT base = GameSettings var = pf.pathfinder_for_roadvehs type = SLE_UINT8 -from = 87 +from = SLV_87 guiflags = SGF_MULTISTRING def = 2 min = 1 @@ -1118,7 +1114,7 @@ cat = SC_EXPERT base = GameSettings var = pf.pathfinder_for_ships type = SLE_UINT8 -from = 87 +from = SLV_87 guiflags = SGF_MULTISTRING def = 2 min = 0 @@ -1200,7 +1196,7 @@ name = NULL guiflags = SGF_NO_NETWORK var = _old_vds.servint_ispercent def = false -to = 119 +to = SLV_120 [SDTG_VAR] name = NULL @@ -1210,7 +1206,7 @@ var = _old_vds.servint_trains def = 150 min = 5 max = 800 -to = 119 +to = SLV_120 [SDTG_VAR] name = NULL @@ -1220,7 +1216,7 @@ var = _old_vds.servint_roadveh def = 150 min = 5 max = 800 -to = 119 +to = SLV_120 [SDTG_VAR] name = NULL @@ -1230,7 +1226,7 @@ var = _old_vds.servint_ships def = 360 min = 5 max = 800 -to = 119 +to = SLV_120 [SDTG_VAR] name = NULL @@ -1240,7 +1236,7 @@ var = _old_vds.servint_aircraft def = 150 min = 5 max = 800 -to = 119 +to = SLV_120 [SDT_BOOL] base = GameSettings @@ -1261,7 +1257,7 @@ proc = UpdateConsists [SDT_BOOL] base = GameSettings var = vehicle.disable_elrails -from = 38 +from = SLV_38 guiflags = SGF_NO_NETWORK def = false str = STR_CONFIG_SETTING_DISABLE_ELRAILS @@ -1273,7 +1269,7 @@ cat = SC_EXPERT base = GameSettings var = vehicle.freight_trains type = SLE_UINT8 -from = 39 +from = SLV_39 guiflags = SGF_NO_NETWORK def = 1 min = 1 @@ -1292,14 +1288,14 @@ extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP) ; order.timetabling [SDT_NULL] length = 1 -from = 67 -to = 158 +from = SLV_67 +to = SLV_159 [SDT_VAR] base = GameSettings var = vehicle.plane_speed type = SLE_UINT8 -from = 90 +from = SLV_90 guiflags = SGF_NO_NETWORK def = 4 min = 1 @@ -1311,7 +1307,7 @@ strval = STR_CONFIG_SETTING_PLANE_SPEED_VALUE [SDT_BOOL] base = GameSettings var = vehicle.dynamic_engines -from = 95 +from = SLV_95 guiflags = SGF_NO_NETWORK def = true proc = ChangeDynamicEngines @@ -1321,7 +1317,7 @@ cat = SC_EXPERT base = GameSettings var = vehicle.plane_crashes type = SLE_UINT8 -from = 138 +from = SLV_138 guiflags = SGF_MULTISTRING def = 2 min = 0 @@ -1375,12 +1371,12 @@ cat = SC_EXPERT ; station.join_stations [SDT_NULL] length = 1 -to = 158 +to = SLV_159 [SDTC_BOOL] var = gui.sg_full_load_any -from = 22 -to = 92 +from = SLV_22 +to = SLV_93 def = true [SDT_BOOL] @@ -1404,14 +1400,14 @@ extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP) [SDTC_BOOL] var = gui.sg_new_nonstop -from = 22 -to = 92 +from = SLV_22 +to = SLV_93 def = false ; station.nonuniform_stations [SDT_NULL] length = 1 -to = 158 +to = SLV_159 [SDT_VAR] base = GameSettings @@ -1468,7 +1464,7 @@ patxname = ""station_rating.station.cargo_class_rating_wait_time"" [SDT_BOOL] base = GameSettings var = order.gradual_loading -from = 40 +from = SLV_40 guiflags = SGF_NO_NETWORK def = true cat = SC_EXPERT @@ -1476,7 +1472,7 @@ cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = construction.road_stop_on_town_road -from = 47 +from = SLV_47 def = true str = STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD strhelp = STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT @@ -1485,7 +1481,7 @@ cat = SC_BASIC [SDT_BOOL] base = GameSettings var = construction.road_stop_on_competitor_road -from = 114 +from = SLV_114 def = true str = STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD strhelp = STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT @@ -1544,14 +1540,14 @@ patxname = ""purchase_land_permitted.construction.purchase_land_permitted"" [SDT_BOOL] base = GameSettings var = station.adjacent_stations -from = 62 +from = SLV_62 def = true cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = economy.station_noise_level -from = 96 +from = SLV_96 guiflags = SGF_NO_NETWORK def = false str = STR_CONFIG_SETTING_NOISE_LEVEL @@ -1561,7 +1557,7 @@ proc = InvalidateTownViewWindow [SDT_BOOL] base = GameSettings var = station.distant_join_stations -from = 106 +from = SLV_106 def = true str = STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS strhelp = STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT @@ -1619,7 +1615,7 @@ cat = SC_BASIC base = GameSettings var = construction.industry_platform type = SLE_UINT8 -from = 148 +from = SLV_148 def = 1 min = 0 max = 4 @@ -1642,7 +1638,7 @@ extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP, 4) [SDT_NULL] length = 1 -to = 140 +to = SLV_141 ;; economy.minimum_distance_town ;; economy.minimum_distance_industry @@ -1663,7 +1659,7 @@ cat = SC_BASIC [SDT_BOOL] base = GameSettings var = economy.exclusive_rights -from = 79 +from = SLV_79 def = true str = STR_CONFIG_SETTING_ALLOW_EXCLUSIVE strhelp = STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT @@ -1673,7 +1669,7 @@ cat = SC_BASIC [SDT_BOOL] base = GameSettings var = economy.fund_buildings -from = 165 +from = SLV_165 def = true str = STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS strhelp = STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT @@ -1683,7 +1679,7 @@ cat = SC_BASIC [SDT_BOOL] base = GameSettings var = economy.fund_roads -from = 160 +from = SLV_160 def = true str = STR_CONFIG_SETTING_ALLOW_FUND_ROAD strhelp = STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT @@ -1693,7 +1689,7 @@ cat = SC_BASIC [SDT_BOOL] base = GameSettings var = economy.give_money -from = 79 +from = SLV_79 def = true str = STR_CONFIG_SETTING_ALLOW_GIVE_MONEY strhelp = STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT @@ -1714,7 +1710,7 @@ cat = SC_BASIC [SDT_NULL] length = 4 -to = 143 +to = SLV_144 [SDT_VAR] base = GameSettings @@ -1730,7 +1726,7 @@ cat = SC_BASIC [SDT_NULL] length = 4 -to = 104 +to = SLV_105 [SDT_BOOL] base = GameSettings @@ -1753,7 +1749,7 @@ proc = InvalidateCompanyWindow base = GameSettings var = economy.feeder_payment_share type = SLE_UINT8 -from = 134 +from = SLV_134 def = 75 min = 0 max = 100 @@ -1828,7 +1824,7 @@ extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP) base = GameSettings var = economy.town_growth_rate type = SLE_INT8 -from = 54 +from = SLV_54 guiflags = SGF_MULTISTRING def = 2 min = -2 @@ -1856,7 +1852,7 @@ patxname = ""town_growth.economy.town_growth_cargo_transported"" base = GameSettings var = economy.larger_towns type = SLE_UINT8 -from = 54 +from = SLV_54 guiflags = SGF_0ISDISABLED def = 4 min = 0 @@ -1870,7 +1866,7 @@ strval = STR_CONFIG_SETTING_LARGER_TOWNS_VALUE base = GameSettings var = economy.initial_city_size type = SLE_UINT8 -from = 56 +from = SLV_56 def = 2 min = 1 max = 10 @@ -1882,7 +1878,7 @@ strval = STR_JUST_COMMA [SDT_BOOL] base = GameSettings var = economy.mod_road_rebuild -from = 77 +from = SLV_77 def = true cat = SC_EXPERT @@ -1899,7 +1895,6 @@ strhelp = STR_CONFIG_SETTING_TOWN_MIN_DISTANCE_HELPTEXT strval = STR_JUST_INT patxname = ""town_min_distance.economy.town_min_distance"" - [SDT_XREF] xref = ""economy.infrastructure_sharing[0]"" extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP) @@ -2054,13 +2049,13 @@ patxname = ""infra_sharing.economy.sharing_payment_in_debt"" ; previously ai-new setting. [SDT_NULL] length = 1 -to = 106 +to = SLV_106 [SDT_OMANY] base = GameSettings var = script.settings_profile type = SLE_UINT8 -from = 178 +from = SLV_178 guiflags = SGF_MULTISTRING def = SP_EASY min = SP_EASY @@ -2111,7 +2106,7 @@ strhelp = STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT base = GameSettings var = script.script_max_opcode_till_suspend type = SLE_UINT32 -from = 107 +from = SLV_107 guiflags = SGF_NEWGAME_ONLY def = 10000 min = 5000 @@ -2144,7 +2139,7 @@ cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = pf.reverse_at_signals -from = 159 +from = SLV_159 def = false str = STR_CONFIG_SETTING_REVERSE_AT_SIGNALS strhelp = STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT @@ -2171,7 +2166,7 @@ cat = SC_EXPERT base = GameSettings var = economy.town_noise_population[0] type = SLE_UINT16 -from = 96 +from = SLV_96 def = 800 min = 200 max = 65535 @@ -2181,7 +2176,7 @@ cat = SC_EXPERT base = GameSettings var = economy.town_noise_population[1] type = SLE_UINT16 -from = 96 +from = SLV_96 def = 2000 min = 400 max = 65535 @@ -2191,7 +2186,7 @@ cat = SC_EXPERT base = GameSettings var = economy.town_noise_population[2] type = SLE_UINT16 -from = 96 +from = SLV_96 def = 4000 min = 800 max = 65535 @@ -2200,7 +2195,7 @@ cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = economy.infrastructure_maintenance -from = 166 +from = SLV_166 def = false str = STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE strhelp = STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT @@ -2234,7 +2229,7 @@ patxname = ""economy.town_bridge_over_rail"" base = GameSettings var = pf.wait_for_pbs_path type = SLE_UINT8 -from = 100 +from = SLV_100 def = 30 min = 2 max = 255 @@ -2243,7 +2238,7 @@ cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = pf.reserve_paths -from = 100 +from = SLV_100 def = false cat = SC_EXPERT @@ -2251,7 +2246,7 @@ cat = SC_EXPERT base = GameSettings var = pf.path_backoff_interval type = SLE_UINT8 -from = 100 +from = SLV_100 def = 20 min = 1 max = 255 @@ -2353,7 +2348,7 @@ cat = SC_EXPERT base = GameSettings var = pf.npf.npf_rail_pbs_cross_penalty type = SLE_UINT -from = 100 +from = SLV_100 def = 3 * NPF_TILE_LENGTH min = 0 max = 100000 @@ -2363,7 +2358,7 @@ cat = SC_EXPERT base = GameSettings var = pf.npf.npf_rail_pbs_signal_back_penalty type = SLE_UINT -from = 100 +from = SLV_100 def = 15 * NPF_TILE_LENGTH min = 0 max = 100000 @@ -2409,7 +2404,7 @@ cat = SC_EXPERT base = GameSettings var = pf.npf.npf_road_drive_through_penalty type = SLE_UINT -from = 47 +from = SLV_47 def = 8 * NPF_TILE_LENGTH min = 0 max = 100000 @@ -2424,7 +2419,7 @@ extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP) base = GameSettings var = pf.npf.npf_road_dt_occupied_penalty type = SLE_UINT -from = 130 +from = SLV_130 def = 8 * NPF_TILE_LENGTH min = 0 max = 100000 @@ -2434,7 +2429,7 @@ cat = SC_EXPERT base = GameSettings var = pf.npf.npf_road_bay_occupied_penalty type = SLE_UINT -from = 130 +from = SLV_130 def = 15 * NPF_TILE_LENGTH min = 0 max = 100000 @@ -2444,7 +2439,7 @@ cat = SC_EXPERT base = GameSettings var = pf.npf.maximum_go_to_depot_penalty type = SLE_UINT -from = 131 +from = SLV_131 def = 20 * NPF_TILE_LENGTH min = 0 max = 1000000 @@ -2454,7 +2449,7 @@ cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = pf.yapf.disable_node_optimization -from = 28 +from = SLV_28 def = false cat = SC_EXPERT @@ -2462,7 +2457,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.max_search_nodes type = SLE_UINT -from = 28 +from = SLV_28 def = 10000 min = 500 max = 1000000 @@ -2471,7 +2466,7 @@ cat = SC_EXPERT [SDT_BOOL] base = GameSettings var = pf.yapf.rail_firstred_twoway_eol -from = 28 +from = SLV_28 def = false cat = SC_EXPERT @@ -2479,7 +2474,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_firstred_penalty type = SLE_UINT -from = 28 +from = SLV_28 def = 10 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2489,7 +2484,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_firstred_exit_penalty type = SLE_UINT -from = 28 +from = SLV_28 def = 100 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2499,7 +2494,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_lastred_penalty type = SLE_UINT -from = 28 +from = SLV_28 def = 10 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2509,7 +2504,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_lastred_exit_penalty type = SLE_UINT -from = 28 +from = SLV_28 def = 100 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2519,7 +2514,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_station_penalty type = SLE_UINT -from = 28 +from = SLV_28 def = 10 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2529,7 +2524,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_slope_penalty type = SLE_UINT -from = 28 +from = SLV_28 def = 2 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2539,7 +2534,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_curve45_penalty type = SLE_UINT -from = 28 +from = SLV_28 def = 1 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2549,7 +2544,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_curve90_penalty type = SLE_UINT -from = 28 +from = SLV_28 def = 6 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2559,7 +2554,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_depot_reverse_penalty type = SLE_UINT -from = 28 +from = SLV_28 def = 50 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2569,7 +2564,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_crossing_penalty type = SLE_UINT -from = 28 +from = SLV_28 def = 3 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2579,7 +2574,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_look_ahead_max_signals type = SLE_UINT -from = 28 +from = SLV_28 def = 10 min = 1 max = 100 @@ -2589,7 +2584,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_look_ahead_signal_p0 type = SLE_INT -from = 28 +from = SLV_28 def = 500 min = -1000000 max = 1000000 @@ -2599,7 +2594,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_look_ahead_signal_p1 type = SLE_INT -from = 28 +from = SLV_28 def = -100 min = -1000000 max = 1000000 @@ -2609,7 +2604,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_look_ahead_signal_p2 type = SLE_INT -from = 28 +from = SLV_28 def = 5 min = -1000000 max = 1000000 @@ -2619,7 +2614,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_pbs_cross_penalty type = SLE_UINT -from = 100 +from = SLV_100 def = 3 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2629,7 +2624,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_pbs_station_penalty type = SLE_UINT -from = 100 +from = SLV_100 def = 8 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2639,7 +2634,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_pbs_signal_back_penalty type = SLE_UINT -from = 100 +from = SLV_100 def = 15 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2649,7 +2644,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_doubleslip_penalty type = SLE_UINT -from = 100 +from = SLV_100 def = 1 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2659,7 +2654,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_longer_platform_penalty type = SLE_UINT -from = 33 +from = SLV_33 def = 8 * YAPF_TILE_LENGTH min = 0 max = 20000 @@ -2669,7 +2664,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_longer_platform_per_tile_penalty type = SLE_UINT -from = 33 +from = SLV_33 def = 0 * YAPF_TILE_LENGTH min = 0 max = 20000 @@ -2679,7 +2674,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_shorter_platform_penalty type = SLE_UINT -from = 33 +from = SLV_33 def = 40 * YAPF_TILE_LENGTH min = 0 max = 20000 @@ -2689,7 +2684,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.rail_shorter_platform_per_tile_penalty type = SLE_UINT -from = 33 +from = SLV_33 def = 0 * YAPF_TILE_LENGTH min = 0 max = 20000 @@ -2699,7 +2694,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.road_slope_penalty type = SLE_UINT -from = 33 +from = SLV_33 def = 2 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2709,7 +2704,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.road_curve_penalty type = SLE_UINT -from = 33 +from = SLV_33 def = 1 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2719,7 +2714,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.road_crossing_penalty type = SLE_UINT -from = 33 +from = SLV_33 def = 3 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2734,7 +2729,7 @@ extver = SlXvFeatureTest(XSLFTO_AND, XSLFI_SPRINGPP) base = GameSettings var = pf.yapf.road_stop_penalty type = SLE_UINT -from = 47 +from = SLV_47 def = 8 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2744,7 +2739,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.road_stop_occupied_penalty type = SLE_UINT -from = 130 +from = SLV_130 def = 8 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2754,7 +2749,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.road_stop_bay_occupied_penalty type = SLE_UINT -from = 130 +from = SLV_130 def = 15 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2764,7 +2759,7 @@ cat = SC_EXPERT base = GameSettings var = pf.yapf.maximum_go_to_depot_penalty type = SLE_UINT -from = 131 +from = SLV_131 def = 20 * YAPF_TILE_LENGTH min = 0 max = 1000000 @@ -2790,7 +2785,7 @@ patxname = ""order_occupancy.order.occupancy_smoothness"" base = GameSettings var = game_creation.land_generator type = SLE_UINT8 -from = 30 +from = SLV_30 guiflags = SGF_MULTISTRING | SGF_NEWGAME_ONLY def = 1 min = 0 @@ -2803,7 +2798,7 @@ strval = STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL base = GameSettings var = game_creation.oil_refinery_limit type = SLE_UINT8 -from = 30 +from = SLV_30 def = 32 min = 12 max = 48 @@ -2815,7 +2810,7 @@ strhelp = STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT base = GameSettings var = game_creation.tgen_smoothness type = SLE_UINT8 -from = 30 +from = SLV_30 guiflags = SGF_MULTISTRING | SGF_NEWGAME_ONLY def = 1 min = TGEN_SMOOTHNESS_BEGIN @@ -2829,7 +2824,7 @@ cat = SC_BASIC base = GameSettings var = game_creation.variety type = SLE_UINT8 -from = 197 +from = SLV_197 guiflags = SGF_MULTISTRING | SGF_NEWGAME_ONLY def = 0 min = 0 @@ -2842,7 +2837,7 @@ strval = STR_VARIETY_NONE base = GameSettings var = game_creation.generation_seed type = SLE_UINT32 -from = 30 +from = SLV_30 def = GENERATE_NEW_SEED min = 0 max = UINT32_MAX @@ -2852,7 +2847,6 @@ cat = SC_EXPERT base = GameSettings var = game_creation.generation_unique_id type = SLE_UINT32 -from = 0 def = 0 min = 0 max = UINT32_MAX @@ -2862,7 +2856,7 @@ patxname = ""savegame_unique_id.game_creation.generation_unique_id"" base = GameSettings var = game_creation.tree_placer type = SLE_UINT8 -from = 30 +from = SLV_30 guiflags = SGF_MULTISTRING | SGF_NEWGAME_ONLY | SGF_SCENEDIT_TOO def = 2 min = 0 @@ -2920,7 +2914,7 @@ cat = SC_BASIC [SDT_BOOL] base = GameSettings var = construction.freeform_edges -from = 111 +from = SLV_111 def = true proc = CheckFreeformEdges cat = SC_EXPERT @@ -2929,7 +2923,7 @@ cat = SC_EXPERT base = GameSettings var = game_creation.water_borders type = SLE_UINT8 -from = 111 +from = SLV_111 def = 15 min = 0 max = 16 @@ -2938,7 +2932,7 @@ max = 16 base = GameSettings var = game_creation.custom_town_number type = SLE_UINT16 -from = 115 +from = SLV_115 def = 1 min = 1 max = 5000 @@ -2948,7 +2942,7 @@ cat = SC_BASIC base = GameSettings var = construction.extra_tree_placement type = SLE_UINT8 -from = 132 +from = SLV_132 guiflags = SGF_MULTISTRING def = 2 min = 0 @@ -2998,7 +2992,7 @@ patxname = ""reduced_tree_growth.construction.tree_growth_rate"" base = GameSettings var = game_creation.custom_sea_level type = SLE_UINT8 -from = 149 +from = SLV_149 def = 1 min = 2 max = 90 @@ -3008,7 +3002,7 @@ cat = SC_BASIC base = GameSettings var = game_creation.min_river_length type = SLE_UINT8 -from = 163 +from = SLV_163 def = 16 min = 2 max = 255 @@ -3018,7 +3012,7 @@ cat = SC_EXPERT base = GameSettings var = game_creation.river_route_random type = SLE_UINT8 -from = 163 +from = SLV_163 def = 5 min = 1 max = 255 @@ -3028,7 +3022,7 @@ cat = SC_EXPERT base = GameSettings var = game_creation.amount_of_rivers type = SLE_UINT8 -from = 163 +from = SLV_163 guiflags = SGF_MULTISTRING | SGF_NEWGAME_ONLY def = 2 min = 0 @@ -3043,7 +3037,7 @@ strval = STR_RIVERS_NONE base = GameSettings var = locale.currency type = SLE_UINT8 -from = 97 +from = SLV_97 flags = SLF_NO_NETWORK_SYNC def = 0 max = CURRENCY_END - 1 @@ -3055,8 +3049,8 @@ cat = SC_BASIC name = ""units"" var = _old_units type = SLE_UINT8 -from = 97 -to = 183 +from = SLV_97 +to = SLV_184 flags = SLF_NOT_IN_CONFIG def = 1 max = 2 @@ -3068,7 +3062,7 @@ cat = SC_BASIC base = GameSettings var = locale.units_velocity type = SLE_UINT8 -from = 184 +from = SLV_184 flags = SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 1 @@ -3084,7 +3078,7 @@ strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL base = GameSettings var = locale.units_power type = SLE_UINT8 -from = 184 +from = SLV_184 flags = SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 1 @@ -3100,7 +3094,7 @@ strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL base = GameSettings var = locale.units_weight type = SLE_UINT8 -from = 184 +from = SLV_184 flags = SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 1 @@ -3116,7 +3110,7 @@ strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL base = GameSettings var = locale.units_volume type = SLE_UINT8 -from = 184 +from = SLV_184 flags = SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 1 @@ -3132,7 +3126,7 @@ strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL base = GameSettings var = locale.units_force type = SLE_UINT8 -from = 184 +from = SLV_184 flags = SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 2 @@ -3148,7 +3142,7 @@ strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL base = GameSettings var = locale.units_height type = SLE_UINT8 -from = 184 +from = SLV_184 flags = SLF_NO_NETWORK_SYNC guiflags = SGF_MULTISTRING def = 1 @@ -3164,7 +3158,7 @@ strval = STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL base = GameSettings var = locale.digit_group_separator type = SLE_STRQ -from = 118 +from = SLV_118 flags = SLF_NO_NETWORK_SYNC def = NULL proc = RedrawScreen @@ -3174,7 +3168,7 @@ cat = SC_BASIC base = GameSettings var = locale.digit_group_separator_currency type = SLE_STRQ -from = 118 +from = SLV_118 flags = SLF_NO_NETWORK_SYNC def = NULL proc = RedrawScreen @@ -3184,7 +3178,7 @@ cat = SC_BASIC base = GameSettings var = locale.digit_decimal_separator type = SLE_STRQ -from = 126 +from = SLV_126 flags = SLF_NO_NETWORK_SYNC def = NULL proc = RedrawScreen diff --git a/src/table/win32_settings.ini b/src/table/win32_settings.ini index a0710cc333..5b183f36c5 100644 --- a/src/table/win32_settings.ini +++ b/src/table/win32_settings.ini @@ -30,7 +30,7 @@ strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT strval = STR_NULL proc = NULL load = NULL -from = 0 +from = SL_MIN_VERSION to = SL_MAX_VERSION cat = SC_ADVANCED extver = SlXvFeatureTest() diff --git a/src/table/window_settings.ini b/src/table/window_settings.ini index f2e8f0111e..1ba7d1d82d 100644 --- a/src/table/window_settings.ini +++ b/src/table/window_settings.ini @@ -26,7 +26,7 @@ strhelp = STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT strval = STR_NULL proc = NULL load = NULL -from = 0 +from = SL_MIN_VERSION to = SL_MAX_VERSION cat = SC_ADVANCED extver = SlXvFeatureTest() diff --git a/src/vehicle.cpp b/src/vehicle.cpp index eedbcb9a4a..ce9c313adc 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -2456,11 +2456,12 @@ LiveryScheme GetEngineLiveryScheme(EngineID engine_type, EngineID parent_engine_ if (parent_engine_type == INVALID_ENGINE) { return LS_PASSENGER_WAGON_STEAM; } else { + bool is_mu = HasBit(EngInfo(parent_engine_type)->misc_flags, EF_RAIL_IS_MU); switch (RailVehInfo(parent_engine_type)->engclass) { default: NOT_REACHED(); case EC_STEAM: return LS_PASSENGER_WAGON_STEAM; - case EC_DIESEL: return LS_PASSENGER_WAGON_DIESEL; - case EC_ELECTRIC: return LS_PASSENGER_WAGON_ELECTRIC; + case EC_DIESEL: return is_mu ? LS_DMU : LS_PASSENGER_WAGON_DIESEL; + case EC_ELECTRIC: return is_mu ? LS_EMU : LS_PASSENGER_WAGON_ELECTRIC; case EC_MONORAIL: return LS_PASSENGER_WAGON_MONORAIL; case EC_MAGLEV: return LS_PASSENGER_WAGON_MAGLEV; } diff --git a/src/window.cpp b/src/window.cpp index 41c713e73f..ee7a9a7cad 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -3134,7 +3134,7 @@ void UpdateWindows() CallWindowRealtimeTickEvent(delta_ms); -#ifdef ENABLE_NETWORKING +#ifdef ENABLE_NETWORK static GUITimer network_message_timer = GUITimer(1); if (network_message_timer.Elapsed(delta_ms)) { network_message_timer.SetInterval(1000);