From 94e74a45c2d507035a85a73eed551231b04aca03 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Mon, 15 Jan 2024 18:16:04 +0000 Subject: [PATCH 01/17] Fix: Viewport virt coords not updated when sprite font toggled (#11784) --- src/settings_gui.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/settings_gui.cpp b/src/settings_gui.cpp index 3fededad82..944b3273ff 100644 --- a/src/settings_gui.cpp +++ b/src/settings_gui.cpp @@ -575,6 +575,7 @@ struct GameOptionsWindow : Window { InitFontCache(true); ClearFontCache(); SetupWidgetDimensions(); + UpdateAllVirtCoords(); ReInitAllWindows(true); break; From a1690d5b7b33a3ba60e55a261a128e1a17fca8c2 Mon Sep 17 00:00:00 2001 From: translators Date: Mon, 15 Jan 2024 18:39:20 +0000 Subject: [PATCH 02/17] Update: Translations from eints portuguese (brazilian): 1 change by pasantoro --- src/lang/afrikaans.txt | 1 + src/lang/arabic_egypt.txt | 1 + src/lang/basque.txt | 1 + src/lang/belarusian.txt | 1 + src/lang/brazilian_portuguese.txt | 3 ++- src/lang/bulgarian.txt | 1 + src/lang/catalan.txt | 1 + src/lang/chuvash.txt | 1 + src/lang/croatian.txt | 1 + src/lang/czech.txt | 1 + src/lang/danish.txt | 1 + src/lang/dutch.txt | 1 + src/lang/english_AU.txt | 1 + src/lang/english_US.txt | 1 + src/lang/esperanto.txt | 1 + src/lang/estonian.txt | 1 + src/lang/faroese.txt | 1 + src/lang/finnish.txt | 1 + src/lang/french.txt | 1 + src/lang/frisian.txt | 1 + src/lang/gaelic.txt | 1 + src/lang/galician.txt | 1 + src/lang/german.txt | 1 + src/lang/greek.txt | 1 + src/lang/hebrew.txt | 1 + src/lang/hindi.txt | 1 + src/lang/hungarian.txt | 1 + src/lang/icelandic.txt | 1 + src/lang/ido.txt | 1 + src/lang/indonesian.txt | 1 + src/lang/irish.txt | 1 + src/lang/italian.txt | 1 + src/lang/japanese.txt | 1 + src/lang/korean.txt | 1 + src/lang/latin.txt | 1 + src/lang/latvian.txt | 1 + src/lang/lithuanian.txt | 1 + src/lang/luxembourgish.txt | 1 + src/lang/macedonian.txt | 1 + src/lang/malay.txt | 1 + src/lang/maltese.txt | 1 + src/lang/marathi.txt | 1 + src/lang/norwegian_bokmal.txt | 1 + src/lang/norwegian_nynorsk.txt | 1 + src/lang/persian.txt | 1 + src/lang/polish.txt | 1 + src/lang/portuguese.txt | 1 + src/lang/romanian.txt | 1 + src/lang/russian.txt | 1 + src/lang/serbian.txt | 1 + src/lang/simplified_chinese.txt | 1 + src/lang/slovak.txt | 1 + src/lang/slovenian.txt | 1 + src/lang/spanish.txt | 1 + src/lang/spanish_MX.txt | 1 + src/lang/swedish.txt | 1 + src/lang/tamil.txt | 1 + src/lang/thai.txt | 1 + src/lang/traditional_chinese.txt | 1 + src/lang/turkish.txt | 1 + src/lang/ukrainian.txt | 1 + src/lang/urdu.txt | 1 + src/lang/vietnamese.txt | 1 + src/lang/welsh.txt | 1 + 64 files changed, 65 insertions(+), 1 deletion(-) diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index 5ba8541085..4ce522557d 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -957,6 +957,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :ander + STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basis-grafikastel STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Kies die basis-grafikastel stel om te gebruik STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Meer inligting oor die basis-grafikastel diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt index bb95b67a74..cad329a0bc 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -958,6 +958,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}اختر + STR_GAME_OPTIONS_GRAPHICS :{BLACK}الرسومات STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}معدل تحديث الشاشة diff --git a/src/lang/basque.txt b/src/lang/basque.txt index 347e42061e..21a98abb8c 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -928,6 +928,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :besteak + STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafiko basea markatu STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Aukeratu erabili beharreko grafiko paketea STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Markatutako grafiko basearen informazio gehiago diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt index 00615a8032..4ba5ddd541 100644 --- a/src/lang/belarusian.txt +++ b/src/lang/belarusian.txt @@ -1265,6 +1265,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :Iншае + STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}Чашчыня абнаўлення экрана STR_GAME_OPTIONS_BASE_GRF :{BLACK}Набор базавай ґрафікі diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index ece32ddb64..942f469e3f 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -1045,6 +1045,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Marque e STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Escalar chanfros STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Marque esta caixa para dimensionar os chanfros por tamanho de interface + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x @@ -3018,7 +3019,7 @@ STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Dono da STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Prefeitura: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Nenhum STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordenadas: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING}) -STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Construído: {LTBLUE}{DATE_LONG} +STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Construído/renovado: {LTBLUE}{DATE_LONG} STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Classe de Estação: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Tipo de Estação: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Classe do aeroporto: {LTBLUE}{STRING} diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt index ffde8fc17e..b1c035a59e 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -936,6 +936,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :друго + STR_GAME_OPTIONS_BASE_GRF :{BLACK}Базов графичен набор STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Изберете базов графичен набор STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Допълнителна информация за базовия графичен пакет diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index 135dcf7474..49b3b075de 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -1044,6 +1044,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Marqueu STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Escala els bisells STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Marqueu aquesta opció si voleu que s'escalin els bisells segons la mida de la interfície. + STR_GAME_OPTIONS_GUI_SCALE_1X :x1 STR_GAME_OPTIONS_GUI_SCALE_2X :x2 STR_GAME_OPTIONS_GUI_SCALE_3X :x3 diff --git a/src/lang/chuvash.txt b/src/lang/chuvash.txt index d0b0a36daa..fd680f834f 100644 --- a/src/lang/chuvash.txt +++ b/src/lang/chuvash.txt @@ -504,6 +504,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :расна + # Custom currency window diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index fb44607043..8c38f759cb 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -1059,6 +1059,7 @@ STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync + STR_GAME_OPTIONS_BASE_GRF :{BLACK}Osnovni set grafike STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Odaberi osnovni grafički set za igru STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Dodatne informacije o osnovnom grafičkom setu diff --git a/src/lang/czech.txt b/src/lang/czech.txt index 0e808b0c88..bc429c53cb 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -1101,6 +1101,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Zaškrtn STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Škálovat úkosy STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Zaškrtni toto políčko pro škálování úkosů dle velikosti uživatelského rozhraní + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/danish.txt b/src/lang/danish.txt index 3a76f963b6..487cc64845 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -1044,6 +1044,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Marker d STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skalere facetter STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Marker dette afkrydsningsfelt for at skalere facetter efter grænsefladestørrelse + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index cbeb1d4baa..2505e8f216 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -1044,6 +1044,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Vink dit STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Randen schalen STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Vink dit vakje aan om randen te schalen op grootte van gebruikersscherm + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index 32db2da2c0..356fd40e28 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -1044,6 +1044,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Check th STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Scale bevels STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Check this box to scale bevels by interface size + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt index d95cdb1a76..5a1dc437d5 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -1044,6 +1044,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Check th STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Scale bevels STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Check this box to scale bevels by interface size + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index b4b0dcb3b7..66750d936d 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -1088,6 +1088,7 @@ STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}Interfac STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Aŭtomate rekonu grandecon + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index 5cc64f621d..d906dbcae5 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -1054,6 +1054,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Märgi s STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skaleeri kaldeid STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Skaleeri kaldeid liidese suuruse järgi + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt index c5ed95da6d..0016999e76 100644 --- a/src/lang/faroese.txt +++ b/src/lang/faroese.txt @@ -908,6 +908,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :annað + STR_GAME_OPTIONS_BASE_GRF :{BLACK}Base grafikk sett STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Vel ta base grafikk setti tú vil brúka STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Meira kunning um base grafikk setti diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index a5065187e3..eba16aca40 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -1044,6 +1044,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Valitse STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skaalaa viisteet STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Valitse tämä ruutu reunusten skaalaamiseksi käyttöliittymän koon mukaan + STR_GAME_OPTIONS_GUI_SCALE_1X :1× STR_GAME_OPTIONS_GUI_SCALE_2X :2× STR_GAME_OPTIONS_GUI_SCALE_3X :3× diff --git a/src/lang/french.txt b/src/lang/french.txt index 30bca63088..f4f34aaee6 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -1045,6 +1045,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Cochez c STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Mettre à l’échelle les bordures STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Cochez cette case pour mettre les bordures à l'échelle avec la taille de l'interface + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/frisian.txt b/src/lang/frisian.txt index adddf4f7f1..0a84eb5941 100644 --- a/src/lang/frisian.txt +++ b/src/lang/frisian.txt @@ -953,6 +953,7 @@ STR_GAME_OPTIONS_RESOLUTION_ITEM :{NUM}x{NUM} + STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}Byldferfaskingssnelheid STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basisset for ôfbyldings diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt index 02aa8e4fe0..0a577702cc 100644 --- a/src/lang/gaelic.txt +++ b/src/lang/gaelic.txt @@ -1141,6 +1141,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :Gnàthaichte + STR_GAME_OPTIONS_BASE_GRF :{BLACK}Seata grafaigeachd bunasach STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Tagh an seata grafaigeachd bunasach a chleachdas tu STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Barrachd fiosrachaidh mun t-seata ghrafaigeachd bhunasach diff --git a/src/lang/galician.txt b/src/lang/galician.txt index ca48a8a607..2592df8b1e 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -1041,6 +1041,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Marca es STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Escalar biseles STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Marca esta caixa para escalar os biseles segundo o tamaño da interface + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/german.txt b/src/lang/german.txt index 18e619c091..074bf8548e 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -1040,6 +1040,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Dieses K STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Schrägen skalieren STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Dieses Kästchen ankreuzen, um Schrägen nach der Oberflächengröße zu skalieren + STR_GAME_OPTIONS_GUI_SCALE_1X :1× STR_GAME_OPTIONS_GUI_SCALE_2X :2× STR_GAME_OPTIONS_GUI_SCALE_3X :3× diff --git a/src/lang/greek.txt b/src/lang/greek.txt index e95db16036..81a004f608 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -1104,6 +1104,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Τσεκ STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Κλίση κλίμακας STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Τσεκάρετε αυτό το κουτί για να αλλάζει μέγεθος το περίγραμμα με βάση το μέγεθος της διεπαφής + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt index 9407747ae9..7f267a0187 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -958,6 +958,7 @@ STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync + STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x STR_GAME_OPTIONS_GUI_SCALE_4X :4x diff --git a/src/lang/hindi.txt b/src/lang/hindi.txt index 9201ecba92..0b51c6808e 100644 --- a/src/lang/hindi.txt +++ b/src/lang/hindi.txt @@ -307,6 +307,7 @@ STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}इं + # Custom currency window STR_CURRENCY_DECREASE_EXCHANGE_RATE_TOOLTIP :{BLACK}एक पाउंड (£) की तुलना में अपनी मुद्रा का अवमूल्यन करें diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index 4e6cba2269..37298468ce 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -1103,6 +1103,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Jelöld STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Élek méretezése STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Jelöld be ezt a négyzetet hogy az interfész méretéhez igazítsd az éleket + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt index 17bcc64c4b..9e1ae402de 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -907,6 +907,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :annað + STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grunngrafík STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Nota grunngrafíkina STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Frekari upplýsingar um grunngrafíkpakkann diff --git a/src/lang/ido.txt b/src/lang/ido.txt index 41d5e90b39..b9c4e11b17 100644 --- a/src/lang/ido.txt +++ b/src/lang/ido.txt @@ -488,6 +488,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :altra + # Custom currency window diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt index 30a6cefb92..29b5895848 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -1039,6 +1039,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Pilih ko STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skala bevel STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Pilih kotak ini untuk pengaturan perbandingan ukuran bevel dengan ukuran antarmuka + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/irish.txt b/src/lang/irish.txt index 0ba710af89..e8bfa0aa6d 100644 --- a/src/lang/irish.txt +++ b/src/lang/irish.txt @@ -982,6 +982,7 @@ STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Cuir tic + STR_GAME_OPTIONS_GRAPHICS :{BLACK}Grafaicí STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}Ráta athnuachana na taispeána diff --git a/src/lang/italian.txt b/src/lang/italian.txt index 77c21ae50f..2d7c2f9490 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -1045,6 +1045,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Selezion STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Scala smussature STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Seleziona questa casella per ridimensionare le smussature in base alle dimensioni dell'interfaccia + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt index 4c4c348597..81c4c79032 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -1017,6 +1017,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}ここ STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}ベベルのスケール STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}ここをチェックするとベベルはインタフェースのサイズに比例します + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 9ad076ad09..da2df29530 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -1045,6 +1045,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}인터 STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}크기 조절 STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}인터페이스 크기를 슬라이더로 조절하려면 이 박스에 체크하세요 + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/latin.txt b/src/lang/latin.txt index 3f79a9371b..da104fa634 100644 --- a/src/lang/latin.txt +++ b/src/lang/latin.txt @@ -1133,6 +1133,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :alia + STR_GAME_OPTIONS_BASE_GRF :{BLACK}Fundamentum graphicum STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Eligere fundamentum graphicum adhibendum STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Indicia additicia de hoc fundamento graphico diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt index 03f07d1687..9758f86843 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -1046,6 +1046,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Atzīmē STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Mēroga slīpumi STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Atzīmējiet šo izvēlni, lai mērogotu slīpumu pēc saskarnes lieluma + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt index 65fd8020a9..d76a034512 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -1196,6 +1196,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Pažymė STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skalės nuožulniai STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Pažymėkite šį langelį, jei norite keisti kampus pagal sąsajos dydį + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_4X :4x diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt index 49a280f507..9738d11b17 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -998,6 +998,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Klick d STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Bevels skaléiren STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Klick dës Optioun fir d'Bevels mat der Gréisst vum Interface ze skaléiren + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/macedonian.txt b/src/lang/macedonian.txt index 2cb57268a7..49ad8cc50f 100644 --- a/src/lang/macedonian.txt +++ b/src/lang/macedonian.txt @@ -803,6 +803,7 @@ STR_GAME_OPTIONS_CAPTION :{WHITE}Опци + # Custom currency window diff --git a/src/lang/malay.txt b/src/lang/malay.txt index adeb85c7c6..daed0255f3 100644 --- a/src/lang/malay.txt +++ b/src/lang/malay.txt @@ -911,6 +911,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :lain + STR_GAME_OPTIONS_BASE_GRF :{BLACK}Set grafik asas STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Pilih set grafik asas untuk digunakan STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Maklumat tambahan tentang set grafik asas ini diff --git a/src/lang/maltese.txt b/src/lang/maltese.txt index 4198f8b66b..b9da14b5d5 100644 --- a/src/lang/maltese.txt +++ b/src/lang/maltese.txt @@ -421,6 +421,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :oħrajn + # Custom currency window diff --git a/src/lang/marathi.txt b/src/lang/marathi.txt index 89183477ed..92dedc401e 100644 --- a/src/lang/marathi.txt +++ b/src/lang/marathi.txt @@ -738,6 +738,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :अन्य + # Custom currency window diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index b83c18439e..a506189a2b 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -984,6 +984,7 @@ STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Merk av + STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index 62f630362a..d4e66ba17a 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -938,6 +938,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :anna + STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grafikksett STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Vel grafikksett som skal nyttast STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Tilleggsinformasjon om grafikksettet diff --git a/src/lang/persian.txt b/src/lang/persian.txt index de7bda6a78..07ee6e47d2 100644 --- a/src/lang/persian.txt +++ b/src/lang/persian.txt @@ -928,6 +928,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :دیگر + STR_GAME_OPTIONS_BASE_GRF :{BLACK}بسته گرافیک پایه STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}بسته گرافیک پایه را انتخاب کنید STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK} اطلاعات اضافه در مورد بسته ی گرافیکی پایه diff --git a/src/lang/polish.txt b/src/lang/polish.txt index e118cc27ba..70e22af9b0 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -1424,6 +1424,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Zaznacz STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skaluj fazy krawędzi STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Zaznacz to pole, aby skalować fazy krawędzi zgodnie z rozmiarem interfejsu + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index fc91c0bbcc..aa1fee66c7 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -1045,6 +1045,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Marque e STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Escalar chanfros STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Marque esta caixa para dimensionar os chanfros por tamanho de interface + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index 8db5230f32..391feed7f3 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -1040,6 +1040,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Bifați STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Scalează marginile STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Bifați această casetă pentru a scala marginile în funcție de dimensiunea interfeței + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 51be414a6c..51e92e822e 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -1189,6 +1189,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Нажм STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Рельефные элементы STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Масштабировать рельефные элементы интерфейса + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt index 4b400335d2..bca61146e4 100644 --- a/src/lang/serbian.txt +++ b/src/lang/serbian.txt @@ -1203,6 +1203,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Označi STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Povećanje okvira STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Označi ovde da veličina okvira povećava sa veličinom prozora + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index 1b98880ebc..af66954ddc 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -1044,6 +1044,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}选中 STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}适应边框大小 STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}选中此框使边框大小随界面大小而缩放 + STR_GAME_OPTIONS_GUI_SCALE_1X :1倍 STR_GAME_OPTIONS_GUI_SCALE_2X :2倍 STR_GAME_OPTIONS_GUI_SCALE_3X :3倍 diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index 09274e2b86..e3cb79b90e 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -1100,6 +1100,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Začiark STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Mierkové úkosy STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Začiarknutím tohto políčka zmeníte úkosy podľa veľkosti rozhrania + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt index 0011773278..9f43d02c8c 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -1093,6 +1093,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :drugo + STR_GAME_OPTIONS_BASE_GRF :{BLACK}Osnovni komplet grafik STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Izberi osnovni komplet grafik za uporabo STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}Dodatne informacije o osnovnem kompletu grafik diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index 272a181f77..1b62c038cb 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -999,6 +999,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Marca es STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Escalar bordes STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Marca esta casilla para escalar los bordes según el tamaño de la interfaz + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index 3f88e8c4f1..969b93aaf5 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -999,6 +999,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Detectar STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Ajustar biseles STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Ajustar el tamaño de los biseles respecto a la interfaz + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index 5cf80d3194..959586d4e2 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -1035,6 +1035,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Kryssa i STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Skala bården STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Kryssa i den här rutan för att skala bården efter gränssnittets storlek + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index 922ac99c14..b609493937 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -949,6 +949,7 @@ STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK} தி + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x diff --git a/src/lang/thai.txt b/src/lang/thai.txt index 3d672b908a..0403d9db30 100644 --- a/src/lang/thai.txt +++ b/src/lang/thai.txt @@ -952,6 +952,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :อื่นๆ + STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}รีเฟรชเรทของหน้าจอ STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}หากตั้งรีเฟรชเรทไว้มากกว่า 60Hz ขึ้นไป อาจมีผลต่อประสิทธิภาพของเกมได้ diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index b8924b73bd..2fcf926003 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -1035,6 +1035,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}勾選 STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}縮放邊框 STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}勾選此方框以令邊框隨界面大小而縮放 + STR_GAME_OPTIONS_GUI_SCALE_1X :1倍 STR_GAME_OPTIONS_GUI_SCALE_2X :2倍 STR_GAME_OPTIONS_GUI_SCALE_3X :3倍 diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index 3251f0ac7d..2fb28e199c 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -1044,6 +1044,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Arayüz STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Eğimi ayarla STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Eğimi arayüz boyutuna göre ayarlamak için bu kutucuğu işaretleyin + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index 26dbdd262d..1c601dbf3c 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -1145,6 +1145,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Увім STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Межі шкали STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :BLACK}Увімкнутий прапорець дозволить змінити розмір інтерфейсу + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/urdu.txt b/src/lang/urdu.txt index 7c8e0f076d..16a8e9b9c2 100644 --- a/src/lang/urdu.txt +++ b/src/lang/urdu.txt @@ -903,6 +903,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :دیگر + STR_GAME_OPTIONS_BASE_GRF :{BLACK}بُنیادی گرافک سیٹ STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}بُنیادی گرافک سیٹ اختیار کریں STR_GAME_OPTIONS_BASE_GRF_DESCRIPTION_TOOLTIP :{BLACK}بُنیادی گرافک سیٹ کے بارے میں اضافی معلومات diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index c3845c29f2..b7f4eb0dbd 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -1043,6 +1043,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Đánh d STR_GAME_OPTIONS_GUI_SCALE_BEVELS :Tỷ lệ góc xiên STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Đánh dấu vào ô này để điều chỉnh tỷ lệ góc xiên theo kích thước giao diện + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt index 5a0456f8d8..0178e12cca 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -961,6 +961,7 @@ STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}Awto-gan STR_GAME_OPTIONS_GUI_SCALE_AUTO_TOOLTIP :{BLACK}Marciwch y blwch hwn i ganfod maint y rhyngwyneb yn awtomatig + STR_GAME_OPTIONS_GUI_SCALE_1X :1x STR_GAME_OPTIONS_GUI_SCALE_2X :2x STR_GAME_OPTIONS_GUI_SCALE_3X :3x From 4a194482eabf24fc2a61196df7b1da9a5c309e8c Mon Sep 17 00:00:00 2001 From: Tyler Trahan Date: Mon, 15 Jan 2024 15:24:26 -0500 Subject: [PATCH 03/17] Fix e1f5be6: Typo when selecting traditional sprite font (#11789) --- src/lang/english.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/lang/english.txt b/src/lang/english.txt index 17eafcb7cc..4a07f6cf00 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -1045,7 +1045,7 @@ STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}Scale be STR_GAME_OPTIONS_GUI_SCALE_BEVELS_TOOLTIP :{BLACK}Check this box to scale bevels by interface size STR_GAME_OPTIONS_GUI_FONT_SPRITE :{BLACK}Use traditional sprite font -STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Check this box if you prefer to use the tradition fixed-size sprite font. +STR_GAME_OPTIONS_GUI_FONT_SPRITE_TOOLTIP :{BLACK}Check this box if you prefer to use the traditional fixed-size sprite font. STR_GAME_OPTIONS_GUI_FONT_AA :{BLACK}Anti-alias fonts STR_GAME_OPTIONS_GUI_FONT_AA_TOOLTIP :{BLACK}Check this box to anti-alias resizable fonts. From 68814bd912e8688d4fadbb27993ce77beea2c5cb Mon Sep 17 00:00:00 2001 From: Tyler Trahan Date: Mon, 15 Jan 2024 15:27:48 -0500 Subject: [PATCH 04/17] Codechange: Rename SIGTYPE_NORMAL to SIGTYPE_BLOCK (#11788) --- src/pathfinder/yapf/yapf_costrail.hpp | 2 +- src/pathfinder/yapf/yapf_node_rail.hpp | 2 +- src/rail_cmd.cpp | 16 ++++++++-------- src/rail_gui.cpp | 4 ++-- src/script/api/script_rail.cpp | 2 +- src/script/api/script_rail.hpp | 2 +- src/signal_type.h | 2 +- 7 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/pathfinder/yapf/yapf_costrail.hpp b/src/pathfinder/yapf/yapf_costrail.hpp index 0ce9e478de..5781efce97 100644 --- a/src/pathfinder/yapf/yapf_costrail.hpp +++ b/src/pathfinder/yapf/yapf_costrail.hpp @@ -217,7 +217,7 @@ public: switch (sig_type) { case SIGTYPE_COMBO: case SIGTYPE_EXIT: cost += Yapf().PfGetSettings().rail_firstred_exit_penalty; break; // first signal is red pre-signal-exit - case SIGTYPE_NORMAL: + case SIGTYPE_BLOCK: case SIGTYPE_ENTRY: cost += Yapf().PfGetSettings().rail_firstred_penalty; break; default: break; } diff --git a/src/pathfinder/yapf/yapf_node_rail.hpp b/src/pathfinder/yapf/yapf_node_rail.hpp index 9185009df6..7309fa02d2 100644 --- a/src/pathfinder/yapf/yapf_node_rail.hpp +++ b/src/pathfinder/yapf/yapf_node_rail.hpp @@ -142,7 +142,7 @@ struct CYapfRailNodeT if (parent == nullptr) { m_num_signals_passed = 0; flags_u.m_inherited_flags = 0; - m_last_red_signal_type = SIGTYPE_NORMAL; + m_last_red_signal_type = SIGTYPE_BLOCK; /* We use PBS as initial signal type because if we are in * a PBS section and need to route, i.e. we're at a safe * waiting point of a station, we need to account for the diff --git a/src/rail_cmd.cpp b/src/rail_cmd.cpp index 2689f7f170..c59b195551 100644 --- a/src/rail_cmd.cpp +++ b/src/rail_cmd.cpp @@ -103,7 +103,7 @@ void ResolveRailTypeGUISprites(RailTypeInfo *rti) SPR_IMG_SIGNAL_SEMAPHORE_COMBO, SPR_IMG_SIGNAL_SEMAPHORE_PBS, SPR_IMG_SIGNAL_SEMAPHORE_PBS_OWAY}, }; - for (SignalType type = SIGTYPE_NORMAL; type < SIGTYPE_END; type = (SignalType)(type + 1)) { + for (SignalType type = SIGTYPE_BLOCK; type < SIGTYPE_END; type = (SignalType)(type + 1)) { for (SignalVariant var = SIG_ELECTRIC; var <= SIG_SEMAPHORE; var = (SignalVariant)(var + 1)) { SpriteID red = GetCustomSignalSprite(rti, INVALID_TILE, type, var, SIGNAL_STATE_RED, true); SpriteID green = GetCustomSignalSprite(rti, INVALID_TILE, type, var, SIGNAL_STATE_GREEN, true); @@ -1088,15 +1088,15 @@ CommandCost CmdBuildSingleSignal(DoCommandFlag flags, TileIndex tile, Track trac } else if (convert_signal) { /* convert button pressed */ if (ctrl_pressed || GetSignalVariant(tile, track) != sigvar) { - /* convert electric <-> semaphore */ + /* it costs money to change signal variant (light or semaphore) */ cost = CommandCost(EXPENSES_CONSTRUCTION, _price[PR_BUILD_SIGNALS] + _price[PR_CLEAR_SIGNALS]); } else { - /* it is free to change signal type: normal-pre-exit-combo */ + /* it is free to change signal type (block, exit, entry, combo, path, etc) */ cost = CommandCost(); } } else { - /* it is free to change orientation/pre-exit-combo signals */ + /* it is free to change orientation or number of signals on the tile (for block/presignals which allow signals in both directions) */ cost = CommandCost(); } } @@ -1290,7 +1290,7 @@ static CommandCost CmdSignalTrackHelper(DoCommandFlag flags, TileIndex tile, Til sigtype = GetSignalType(tile, track); /* Don't but copy entry or exit-signal type */ - if (sigtype == SIGTYPE_ENTRY || sigtype == SIGTYPE_EXIT) sigtype = SIGTYPE_NORMAL; + if (sigtype == SIGTYPE_ENTRY || sigtype == SIGTYPE_EXIT) sigtype = SIGTYPE_BLOCK; } else { // no signals exist, drag a two-way signal stretch signals = IsPbsSignal(sigtype) ? SignalAlongTrackdir(trackdir) : SignalOnTrack(track); } @@ -1325,7 +1325,7 @@ static CommandCost CmdSignalTrackHelper(DoCommandFlag flags, TileIndex tile, Til if (HasBit(signal_dir, 1)) signals |= SignalAgainstTrackdir(trackdir); DoCommandFlag do_flags = test_only ? flags & ~DC_EXEC : flags; - CommandCost ret = remove ? Command::Do(do_flags, tile, TrackdirToTrack(trackdir)) : Command::Do(do_flags, tile, TrackdirToTrack(trackdir), sigtype, sigvar, false, signal_ctr == 0, mode, SIGTYPE_NORMAL, SIGTYPE_NORMAL, 0, signals); + CommandCost ret = remove ? Command::Do(do_flags, tile, TrackdirToTrack(trackdir)) : Command::Do(do_flags, tile, TrackdirToTrack(trackdir), sigtype, sigvar, false, signal_ctr == 0, mode, SIGTYPE_BLOCK, SIGTYPE_BLOCK, 0, signals); if (test_only) return ret.Succeeded(); @@ -1526,7 +1526,7 @@ CommandCost CmdRemoveSingleSignal(DoCommandFlag flags, TileIndex tile, Track tra */ CommandCost CmdRemoveSignalTrack(DoCommandFlag flags, TileIndex tile, TileIndex end_tile, Track track, bool autofill) { - return CmdSignalTrackHelper(flags, tile, end_tile, track, SIGTYPE_NORMAL, SIG_ELECTRIC, false, true, autofill, false, 1); // bit 5 is remove bit + return CmdSignalTrackHelper(flags, tile, end_tile, track, SIGTYPE_BLOCK, SIG_ELECTRIC, false, true, autofill, false, 1); // bit 5 is remove bit } /** Update power of train under which is the railtype being converted */ @@ -1901,7 +1901,7 @@ static void DrawSingleSignal(TileIndex tile, const RailTypeInfo *rti, Track trac sprite += image; } else { /* Normal electric signals are stored in a different sprite block than all other signals. */ - sprite = (type == SIGTYPE_NORMAL && variant == SIG_ELECTRIC) ? SPR_ORIGINAL_SIGNALS_BASE : SPR_SIGNALS_BASE - 16; + sprite = (type == SIGTYPE_BLOCK && variant == SIG_ELECTRIC) ? SPR_ORIGINAL_SIGNALS_BASE : SPR_SIGNALS_BASE - 16; sprite += type * 16 + variant * 64 + image * 2 + condition + (type > SIGTYPE_LAST_NOPBS ? 64 : 0); } diff --git a/src/rail_gui.cpp b/src/rail_gui.cpp index 2f19b82205..7ed5e2159c 100644 --- a/src/rail_gui.cpp +++ b/src/rail_gui.cpp @@ -241,7 +241,7 @@ static void GenericPlaceSignals(TileIndex tile) Command::Post(STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM, CcPlaySound_CONSTRUCTION_RAIL, tile, track); } else { /* Which signals should we cycle through? */ - SignalType cycle_start = _settings_client.gui.cycle_signal_types == SIGNAL_CYCLE_ALL && _settings_client.gui.signal_gui_mode == SIGNAL_GUI_ALL ? SIGTYPE_NORMAL : SIGTYPE_PBS; + SignalType cycle_start = _settings_client.gui.cycle_signal_types == SIGNAL_CYCLE_ALL && _settings_client.gui.signal_gui_mode == SIGNAL_GUI_ALL ? SIGTYPE_BLOCK : SIGTYPE_PBS; if (FindWindowById(WC_BUILD_SIGNAL, 0) != nullptr) { /* signal GUI is used */ @@ -1695,7 +1695,7 @@ public: this->sig_sprite_size.height = 0; this->sig_sprite_bottom_offset = 0; const RailTypeInfo *rti = GetRailTypeInfo(_cur_railtype); - for (uint type = SIGTYPE_NORMAL; type < SIGTYPE_END; type++) { + for (uint type = SIGTYPE_BLOCK; type < SIGTYPE_END; type++) { for (uint variant = SIG_ELECTRIC; variant <= SIG_SEMAPHORE; variant++) { for (uint lowered = 0; lowered < 2; lowered++) { Point offset; diff --git a/src/script/api/script_rail.cpp b/src/script/api/script_rail.cpp index 3caf070509..88f88e6048 100644 --- a/src/script/api/script_rail.cpp +++ b/src/script/api/script_rail.cpp @@ -469,7 +469,7 @@ static bool IsValidSignalType(int signal_type) } ::SignalType sig_type = (::SignalType)(signal >= SIGNALTYPE_TWOWAY ? signal ^ SIGNALTYPE_TWOWAY : signal); - return ScriptObject::Command::Do(tile, track, sig_type, ::SIG_ELECTRIC, false, false, false, ::SIGTYPE_NORMAL, ::SIGTYPE_NORMAL, signal_cycles, 0); + return ScriptObject::Command::Do(tile, track, sig_type, ::SIG_ELECTRIC, false, false, false, ::SIGTYPE_BLOCK, ::SIGTYPE_BLOCK, signal_cycles, 0); } /* static */ bool ScriptRail::RemoveSignal(TileIndex tile, TileIndex front) diff --git a/src/script/api/script_rail.hpp b/src/script/api/script_rail.hpp index 31425721e6..da0edb04c0 100644 --- a/src/script/api/script_rail.hpp +++ b/src/script/api/script_rail.hpp @@ -64,7 +64,7 @@ public: */ enum SignalType { /* Note: these values represent part of the in-game SignalType enum */ - SIGNALTYPE_NORMAL = ::SIGTYPE_NORMAL, ///< Normal signal. + SIGNALTYPE_NORMAL = ::SIGTYPE_BLOCK, ///< Block signal. SIGNALTYPE_ENTRY = ::SIGTYPE_ENTRY, ///< Entry presignal. SIGNALTYPE_EXIT = ::SIGTYPE_EXIT, ///< Exit signal. SIGNALTYPE_COMBO = ::SIGTYPE_COMBO, ///< Combo signal. diff --git a/src/signal_type.h b/src/signal_type.h index b28c9ef108..e29d2d65b6 100644 --- a/src/signal_type.h +++ b/src/signal_type.h @@ -21,7 +21,7 @@ enum SignalVariant : byte { /** Type of signal, i.e. how does the signal behave? */ enum SignalType : byte { - SIGTYPE_NORMAL = 0, ///< normal signal + SIGTYPE_BLOCK = 0, ///< block signal SIGTYPE_ENTRY = 1, ///< presignal block entry SIGTYPE_EXIT = 2, ///< presignal block exit SIGTYPE_COMBO = 3, ///< presignal inter-block From b18e78e21d0c67258162b1c202800913c38f925e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Guilloux?= Date: Mon, 15 Jan 2024 21:41:44 +0100 Subject: [PATCH 05/17] Change: Redesign script debug window (#11782) --- src/script/script_gui.cpp | 18 ++++++++++-------- src/widget.cpp | 7 ++++--- src/widget_type.h | 2 +- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/script/script_gui.cpp b/src/script/script_gui.cpp index 429298de1d..1674327d77 100644 --- a/src/script/script_gui.cpp +++ b/src/script/script_gui.cpp @@ -1233,7 +1233,7 @@ struct ScriptDebugWindow : public Window { /** Make a number of rows with buttons for each company for the Script debug window. */ std::unique_ptr MakeCompanyButtonRowsScriptDebug() { - return MakeCompanyButtonRows(WID_SCRD_COMPANY_BUTTON_START, WID_SCRD_COMPANY_BUTTON_END, COLOUR_GREY, 8, STR_AI_DEBUG_SELECT_AI_TOOLTIP); + return MakeCompanyButtonRows(WID_SCRD_COMPANY_BUTTON_START, WID_SCRD_COMPANY_BUTTON_END, COLOUR_GREY, 5, STR_AI_DEBUG_SELECT_AI_TOOLTIP, false); } /** Widgets for the Script debug window. */ @@ -1245,14 +1245,16 @@ static const NWidgetPart _nested_script_debug_widgets[] = { NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), EndContainer(), - NWidget(WWT_PANEL, COLOUR_GREY, WID_SCRD_VIEW), - NWidgetFunction(MakeCompanyButtonRowsScriptDebug), SetPadding(0, 2, 1, 2), - EndContainer(), NWidget(NWID_HORIZONTAL), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCRD_SCRIPT_GAME), SetMinimalSize(100, 20), SetResize(1, 0), SetDataTip(STR_AI_GAME_SCRIPT, STR_AI_GAME_SCRIPT_TOOLTIP), - NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCRD_NAME_TEXT), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_JUST_STRING2, STR_AI_DEBUG_NAME_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCRD_SETTINGS), SetMinimalSize(100, 20), SetDataTip(STR_AI_DEBUG_SETTINGS, STR_AI_DEBUG_SETTINGS_TOOLTIP), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCRD_RELOAD_TOGGLE), SetMinimalSize(100, 20), SetDataTip(STR_AI_DEBUG_RELOAD, STR_AI_DEBUG_RELOAD_TOOLTIP), + NWidget(WWT_PANEL, COLOUR_GREY, WID_SCRD_VIEW), + NWidgetFunction(MakeCompanyButtonRowsScriptDebug), SetPadding(0, 2, 1, 2), + EndContainer(), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCRD_SCRIPT_GAME), SetMinimalSize(100, 20), SetDataTip(STR_AI_GAME_SCRIPT, STR_AI_GAME_SCRIPT_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SCRD_NAME_TEXT), SetResize(1, 0), SetDataTip(STR_JUST_STRING2, STR_AI_DEBUG_NAME_TOOLTIP), + NWidget(NWID_VERTICAL), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCRD_SETTINGS), SetMinimalSize(100, 20), SetFill(0, 1), SetDataTip(STR_AI_DEBUG_SETTINGS, STR_AI_DEBUG_SETTINGS_TOOLTIP), + NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCRD_RELOAD_TOGGLE), SetMinimalSize(100, 20), SetFill(0, 1), SetDataTip(STR_AI_DEBUG_RELOAD, STR_AI_DEBUG_RELOAD_TOOLTIP), + EndContainer(), EndContainer(), NWidget(NWID_HORIZONTAL), NWidget(NWID_VERTICAL), diff --git a/src/widget.cpp b/src/widget.cpp index 18a04092bf..d463bebc8e 100644 --- a/src/widget.cpp +++ b/src/widget.cpp @@ -3329,9 +3329,10 @@ std::unique_ptr MakeWindowNWidgetTree(const NWidgetPart *nwid_begin * @param colour The colour in which to draw the button. * @param max_length Maximal number of company buttons in one row. * @param button_tooltip The tooltip-string of every button. + * @param resizable Whether the rows are resizable. * @return Panel with rows of company buttons. */ -std::unique_ptr MakeCompanyButtonRows(WidgetID widget_first, WidgetID widget_last, Colours button_colour, int max_length, StringID button_tooltip) +std::unique_ptr MakeCompanyButtonRows(WidgetID widget_first, WidgetID widget_last, Colours button_colour, int max_length, StringID button_tooltip, bool resizable) { assert(max_length >= 1); std::unique_ptr vert = nullptr; // Storage for all rows. @@ -3358,7 +3359,7 @@ std::unique_ptr MakeCompanyButtonRows(WidgetID widget_first, Widget auto panel = std::make_unique(WWT_PANEL, button_colour, widnum); panel->SetMinimalSize(sprite_size.width, sprite_size.height); panel->SetFill(1, 1); - panel->SetResize(1, 0); + if (resizable) panel->SetResize(1, 0); panel->SetDataTip(0x0, button_tooltip); hor->Add(std::move(panel)); hor_length++; @@ -3369,7 +3370,7 @@ std::unique_ptr MakeCompanyButtonRows(WidgetID widget_first, Widget /* Last row is partial, add a spacer at the end to force all buttons to the left. */ auto spc = std::make_unique(sprite_size.width, sprite_size.height); spc->SetFill(1, 1); - spc->SetResize(1, 0); + if (resizable) spc->SetResize(1, 0); hor->Add(std::move(spc)); } if (hor != nullptr) vert->Add(std::move(hor)); diff --git a/src/widget_type.h b/src/widget_type.h index ef7b38c65a..0e058d33a0 100644 --- a/src/widget_type.h +++ b/src/widget_type.h @@ -1356,7 +1356,7 @@ bool IsContainerWidgetType(WidgetType tp); std::unique_ptr MakeNWidgets(const NWidgetPart *nwid_begin, const NWidgetPart *nwid_end, std::unique_ptr &&container); std::unique_ptr MakeWindowNWidgetTree(const NWidgetPart *nwid_begin, const NWidgetPart *nwid_end, NWidgetStacked **shade_select); -std::unique_ptr MakeCompanyButtonRows(WidgetID widget_first, WidgetID widget_last, Colours button_colour, int max_length, StringID button_tooltip); +std::unique_ptr MakeCompanyButtonRows(WidgetID widget_first, WidgetID widget_last, Colours button_colour, int max_length, StringID button_tooltip, bool resizable = true); void SetupWidgetDimensions(); From 375074577f4831e6096f9a402d09778266b6f657 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Mon, 15 Jan 2024 21:57:55 +0100 Subject: [PATCH 06/17] Fix: [SDL] remove hint to avoid hardware acceleration (#11790) This hint was once needed because of the way we handled surfaces. But as OpenGL already uses a hardware surface, we already had to fix all the issues that comes with it. As that is generic code, this hint is no longer actually needed. Further more, recent SDL versions break because of it on Wayland. --- src/video/sdl2_v.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/video/sdl2_v.cpp b/src/video/sdl2_v.cpp index ae8883e8e8..2bb381f5ec 100644 --- a/src/video/sdl2_v.cpp +++ b/src/video/sdl2_v.cpp @@ -507,11 +507,6 @@ bool VideoDriver_SDL_Base::PollEvent() static const char *InitializeSDL() { - /* Explicitly disable hardware acceleration. Enabling this causes - * UpdateWindowSurface() to update the window's texture instead of - * its surface. */ - SDL_SetHint(SDL_HINT_FRAMEBUFFER_ACCELERATION, "0"); - /* Check if the video-driver is already initialized. */ if (SDL_WasInit(SDL_INIT_VIDEO) != 0) return nullptr; From 7fd2c2d44f14914fc928342d7e29fd1f04902bc6 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Mon, 15 Jan 2024 21:59:19 +0100 Subject: [PATCH 07/17] Fix: [Linux] install all X11 dependencies in linux-generic (#11787) Without this, xrandr support is not compiled into SDL, which means that SDL will only see a single display spanning all your displays (a virtual desktop). --- .github/workflows/release-linux.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/workflows/release-linux.yml b/.github/workflows/release-linux.yml index 3205a50d7a..40b759033f 100644 --- a/.github/workflows/release-linux.yml +++ b/.github/workflows/release-linux.yml @@ -119,6 +119,22 @@ jobs: # EOF echo "::endgroup::" + echo "::group::Install video drivers" + # These video libs are to make sure the SDL version of vcpkg adds + # video-support; these libraries are not added to the resulting + # binary, but the headers are used to enable them in SDL. + yum install -y \ + libX11-devel \ + libXcursor-devel \ + libXext-devel \ + libXfixes-devel \ + libXi-devel \ + libxkbcommon-devel \ + libXrandr-devel \ + libXScrnSaver-devel \ + # EOF + echo "::endgroup::" + # We use vcpkg for our dependencies, to get more up-to-date version. echo "::group::Install vcpkg and dependencies" From 64bc07ff4ea1720ff08e36b1a67895f17fdbe38b Mon Sep 17 00:00:00 2001 From: EmperorJake <68182631+EmperorJake@users.noreply.github.com> Date: Tue, 16 Jan 2024 08:10:27 +1100 Subject: [PATCH 08/17] Change: Make "middle" the default stopping location for trains in platforms (#11605) --- src/table/settings/gui_settings.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/table/settings/gui_settings.ini b/src/table/settings/gui_settings.ini index fa3eef9a9f..79359d3ffb 100644 --- a/src/table/settings/gui_settings.ini +++ b/src/table/settings/gui_settings.ini @@ -594,7 +594,7 @@ cat = SC_BASIC var = gui.stop_location type = SLE_UINT8 flags = SF_NOT_IN_SAVE | SF_NO_NETWORK_SYNC | SF_GUI_DROPDOWN -def = 2 +def = 1 min = 0 max = 2 interval = 1 From 42e07809d00e1c82d5593e2fcf4b13335078fbee Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Mon, 15 Jan 2024 22:30:52 +0100 Subject: [PATCH 09/17] Change: [CI] upgrade linux-generic to libc 2.28 and introduce linux-legacy (#11792) linux-legacy is the old variant, which uses libc 2.17, released in 2012. linux-generic is now upgraded to libc 2.28, released in 2018. --- .github/workflows/release-linux-legacy.yml | 220 +++++++++++++++++++++ .github/workflows/release-linux.yml | 51 +---- .github/workflows/release.yml | 13 +- 3 files changed, 241 insertions(+), 43 deletions(-) create mode 100644 .github/workflows/release-linux-legacy.yml diff --git a/.github/workflows/release-linux-legacy.yml b/.github/workflows/release-linux-legacy.yml new file mode 100644 index 0000000000..8cf8d840f3 --- /dev/null +++ b/.github/workflows/release-linux-legacy.yml @@ -0,0 +1,220 @@ +name: Release (Linux, Legacy) + +on: + workflow_call: + inputs: + survey_key: + required: false + type: string + default: "" + +jobs: + linux: + name: Linux (Legacy) + + runs-on: ubuntu-latest + container: + # manylinux2014 is based on CentOS 7, and already has a lot of things + # installed and preconfigured. It makes it easier to build OpenTTD. + # This distro is based on glibc 2.17, released in 2012. + image: quay.io/pypa/manylinux2014_x86_64 + + steps: + - name: Download source + uses: actions/download-artifact@v3 + with: + name: internal-source + + - name: Unpack source + run: | + tar -xf source.tar.gz --strip-components=1 + + # curl is too old for most of the tools to work properly. For example, + # rust-toolchain doesn't work properly, neither vcpkg caching. + # The easier solution here is to upgrade curl. + - name: Update curl + run: | + yum install -y \ + openssl-devel \ + # EOF + + mkdir /curl + cd /curl + curl -o curl-7.81.0.zip https://curl.se/download/curl-7.81.0.zip + unzip curl-7.81.0.zip + cd curl-7.81.0 + ./configure --with-ssl --with-zlib --prefix=/usr --libdir=/usr/lib64 + make -j $(nproc) + make install + + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + + - name: Enable Rust cache + uses: Swatinem/rust-cache@v2.7.0 + + - name: Setup vcpkg caching + uses: actions/github-script@v6 + with: + script: | + core.exportVariable('ACTIONS_CACHE_URL', process.env.ACTIONS_CACHE_URL || ''); + core.exportVariable('ACTIONS_RUNTIME_TOKEN', process.env.ACTIONS_RUNTIME_TOKEN || ''); + core.exportVariable('VCPKG_BINARY_SOURCES', 'clear;x-gha,readwrite') + + - name: Install dependencies + run: | + echo "::group::Install system dependencies" + # perl-IPC-Cmd, wget, and zip are needed to run vcpkg. + # autoconf-archive is needed to build ICU. + yum install -y \ + autoconf-archive \ + perl-IPC-Cmd \ + wget \ + zip \ + # EOF + + # aclocal looks first in /usr/local/share/aclocal, and if that doesn't + # exist only looks in /usr/share/aclocal. We have files in both that + # are important. So copy the latter to the first, and we are good to + # go. + cp /usr/share/aclocal/* /usr/local/share/aclocal/ + echo "::endgroup::" + + # The yum variant of fluidsynth depends on all possible audio drivers, + # like jack, ALSA, pulseaudio, etc. This is not really useful for us, + # as we route the output of fluidsynth back via our sound driver, and + # as such do not use these audio driver outputs at all. + # The vcpkg variant of fluidsynth depends on ALSA. Similar issue here. + # So instead, we compile fluidsynth ourselves, with as few + # dependencies as possible. We do it before anything else is installed, + # to make sure it doesn't pick up on any of the drivers. + echo "::group::Install fluidsynth" + wget https://github.com/FluidSynth/fluidsynth/archive/v2.3.3.tar.gz + tar xf v2.3.3.tar.gz + ( + cd fluidsynth-2.3.3 + mkdir build + cd build + cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/usr + cmake --build . -j $(nproc) + cmake --install . + ) + + # The container we use is old enough, that it doesn't know SHF_COMPRESSED. + # But, breakpad needs this symbol to exist. So we patch it in our system + # libraries. + ( + cd / + patch -p1 < ${GITHUB_WORKSPACE}/os/linux/shf-compressed.patch + ) + echo "::endgroup::" + + echo "::group::Install audio drivers" + # These audio libs are to make sure the SDL version of vcpkg adds + # sound-support; these libraries are not added to the resulting + # binary, but the headers are used to enable them in SDL. + yum install -y \ + alsa-lib-devel \ + jack-audio-connection-kit-devel \ + pulseaudio-libs-devel \ + # EOF + echo "::endgroup::" + + echo "::group::Install video drivers" + # These video libs are to make sure the SDL version of vcpkg adds + # video-support; these libraries are not added to the resulting + # binary, but the headers are used to enable them in SDL. + yum install -y \ + libX11-devel \ + libXcursor-devel \ + libXext-devel \ + libXfixes-devel \ + libXi-devel \ + libxkbcommon-devel \ + libXrandr-devel \ + libXScrnSaver-devel \ + # EOF + echo "::endgroup::" + + # We use vcpkg for our dependencies, to get more up-to-date version. + echo "::group::Install vcpkg and dependencies" + + git clone https://github.com/microsoft/vcpkg /vcpkg + + ( + cd /vcpkg + ./bootstrap-vcpkg.sh -disableMetrics + ) + + # Make Python3 available for other packages. This needs to be done + # first, as otherwise dependencies fail to build because Python3 is + # not available. + ( + cd / + + /vcpkg/vcpkg install python3 + ln -sf /vcpkg/installed/x64-linux/tools/python3/python3.[0-9][0-9] /usr/bin/python3 + ) + echo "::endgroup::" + + echo "::group::Install breakpad dependencies" + cargo install dump_syms + echo "::endgroup::" + + - name: Patch bundle name + run: | + sed -i 's/generic/legacy/g' cmake/InstallAndPackage.cmake + + - name: Install GCC problem matcher + uses: ammaraskar/gcc-problem-matcher@master + + - name: Build + run: | + mkdir -p build + cd build + + echo "::group::CMake" + cmake ${GITHUB_WORKSPACE} \ + -DCMAKE_TOOLCHAIN_FILE=/vcpkg/scripts/buildsystems/vcpkg.cmake \ + -DCMAKE_BUILD_TYPE=RelWithDebInfo \ + -DOPTION_SURVEY_KEY=${{ inputs.survey_key }} \ + -DOPTION_PACKAGE_DEPENDENCIES=ON \ + # EOF + echo "::endgroup::" + + echo "::group::Build" + echo "Running on $(nproc) cores" + cmake --build . -j $(nproc) --target openttd + echo "::endgroup::" + + - name: Create breakpad symbols + run: | + cd build + dump_syms ./openttd --inlines --store symbols + + - name: Create bundles + run: | + cd ${GITHUB_WORKSPACE}/build + echo "::group::Run CPack" + cpack + echo "::endgroup::" + + echo "::group::Cleanup" + # Remove the sha256 files CPack generates; we will do this ourself at + # the end of this workflow. + rm -f bundles/*.sha256 + echo "::endgroup::" + + - name: Store bundles + uses: actions/upload-artifact@v3 + with: + name: openttd-linux-legacy + path: build/bundles + retention-days: 5 + + - name: Store symbols + uses: actions/upload-artifact@v3 + with: + name: symbols-linux-legacy + path: build/symbols + retention-days: 5 diff --git a/.github/workflows/release-linux.yml b/.github/workflows/release-linux.yml index 40b759033f..09c4e3da66 100644 --- a/.github/workflows/release-linux.yml +++ b/.github/workflows/release-linux.yml @@ -14,9 +14,10 @@ jobs: runs-on: ubuntu-latest container: - # manylinux2014 is based on CentOS 7, but already has a lot of things + # manylinux_2_28 is based on AlmaLinux 8, and already has a lot of things # installed and preconfigured. It makes it easier to build OpenTTD. - image: quay.io/pypa/manylinux2014_x86_64 + # This distro is based on glibc 2.28, released in 2018. + image: quay.io/pypa/manylinux_2_28_x86_64 steps: - name: Download source @@ -28,29 +29,11 @@ jobs: run: | tar -xf source.tar.gz --strip-components=1 - # curl is too old for most of the tools to work properly. For example, - # rust-toolchain doesn't work properly, neither vcpkg caching. - # The easier solution here is to upgrade curl. - - name: Update curl - run: | - yum install -y \ - openssl-devel \ - # EOF - - mkdir /curl - cd /curl - curl -o curl-7.81.0.zip https://curl.se/download/curl-7.81.0.zip - unzip curl-7.81.0.zip - cd curl-7.81.0 - ./configure --with-ssl --with-zlib --prefix=/usr --libdir=/usr/lib64 - make -j $(nproc) - make install - - name: Install Rust toolchain uses: dtolnay/rust-toolchain@stable - name: Enable Rust cache - uses: Swatinem/rust-cache@v2.7.0 + uses: Swatinem/rust-cache@v2 - name: Setup vcpkg caching uses: actions/github-script@v6 @@ -99,22 +82,12 @@ jobs: cmake --install . ) - # The container we use is old enough, that it doesn't know SHF_COMPRESSED. - # But, breakpad needs this symbol to exist. So we patch it in our system - # libraries. - ( - cd / - patch -p1 < ${GITHUB_WORKSPACE}/os/linux/shf-compressed.patch - ) - echo "::endgroup::" - echo "::group::Install audio drivers" # These audio libs are to make sure the SDL version of vcpkg adds # sound-support; these libraries are not added to the resulting # binary, but the headers are used to enable them in SDL. yum install -y \ alsa-lib-devel \ - jack-audio-connection-kit-devel \ pulseaudio-libs-devel \ # EOF echo "::endgroup::" @@ -132,6 +105,11 @@ jobs: libxkbcommon-devel \ libXrandr-devel \ libXScrnSaver-devel \ + mesa-libEGL-devel \ + mesa-libGL-devel \ + mesa-libGLES-devel \ + wayland-devel \ + wayland-protocols-devel \ # EOF echo "::endgroup::" @@ -145,17 +123,6 @@ jobs: ./bootstrap-vcpkg.sh -disableMetrics ) - # Make Python3 available for other packages. This needs to be done - # first, as otherwise dependencies fail to build because Python3 is - # not available. - ( - cd / - - /vcpkg/vcpkg install python3 - ln -sf /vcpkg/installed/x64-linux/tools/python3/python3.[0-9][0-9] /usr/bin/python3 - ) - echo "::endgroup::" - echo "::group::Install breakpad dependencies" cargo install dump_syms echo "::endgroup::" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 362fa762e9..2617d9f2b7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -31,6 +31,16 @@ jobs: with: version: ${{ needs.source.outputs.version }} + linux-legacy: + name: Linux (Legacy) + needs: source + + uses: ./.github/workflows/release-linux-legacy.yml + secrets: inherit + + with: + survey_key: ${{ needs.source.outputs.survey_key }} + linux: name: Linux (Generic) needs: source @@ -81,6 +91,7 @@ jobs: needs: - source - docs + - linux-legacy - linux - macos - windows @@ -88,7 +99,7 @@ jobs: # As windows-store is condition, we need to check ourselves if we need to run. # The always() makes sure the rest is always evaluated. - if: always() && needs.source.result == 'success' && needs.docs.result == 'success' && needs.linux.result == 'success' && needs.macos.result == 'success' && needs.windows.result == 'success' && (needs.windows-store.result == 'success' || needs.windows-store.result == 'skipped') + if: always() && needs.source.result == 'success' && needs.docs.result == 'success' && needs.linux-legacy.result == 'success' && needs.linux.result == 'success' && needs.macos.result == 'success' && needs.windows.result == 'success' && (needs.windows-store.result == 'success' || needs.windows-store.result == 'skipped') uses: ./.github/workflows/upload-cdn.yml secrets: inherit From 8510f7bd0034b476a47409bf0e7f41d2ef0cc456 Mon Sep 17 00:00:00 2001 From: Peter Nelson Date: Mon, 15 Jan 2024 23:02:25 +0000 Subject: [PATCH 10/17] Fix: NWidgetParts must use unscaled dimensions. (#11794) --- src/league_gui.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/league_gui.cpp b/src/league_gui.cpp index 500ccce085..3faadad0c9 100644 --- a/src/league_gui.cpp +++ b/src/league_gui.cpp @@ -426,7 +426,7 @@ static const NWidgetPart _nested_script_league_widgets[] = { NWidget(WWT_SHADEBOX, COLOUR_BROWN), NWidget(WWT_STICKYBOX, COLOUR_BROWN), EndContainer(), - NWidget(WWT_PANEL, COLOUR_BROWN, WID_SLT_BACKGROUND), SetMinimalSize(400, 0), SetMinimalTextLines(15, WidgetDimensions::scaled.framerect.Vertical()), + NWidget(WWT_PANEL, COLOUR_BROWN, WID_SLT_BACKGROUND), SetMinimalSize(400, 0), SetMinimalTextLines(15, WidgetDimensions::unscaled.framerect.Vertical()), EndContainer(), }; From b09a4384d97d0c866af3ab61247b68a862017741 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Mon, 15 Jan 2024 19:00:59 +0100 Subject: [PATCH 11/17] Codechange: remove need to use separate array for old_map3 --- src/saveload/oldloader_sl.cpp | 47 +++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/src/saveload/oldloader_sl.cpp b/src/saveload/oldloader_sl.cpp index 9fd71b2017..c813244cde 100644 --- a/src/saveload/oldloader_sl.cpp +++ b/src/saveload/oldloader_sl.cpp @@ -43,8 +43,6 @@ static bool _read_ttdpatch_flags; ///< Have we (tried to) read TTDPatch extra static uint16_t _old_extra_chunk_nums; ///< Number of extra TTDPatch chunks static byte _old_vehicle_multiplier; ///< TTDPatch vehicle multiplier -static uint8_t *_old_map3; - void FixOldMapArray() { /* TTO/TTD/TTDP savegames could have buoys at tile 0 @@ -54,13 +52,6 @@ void FixOldMapArray() static void FixTTDMapArray() { - /* _old_map3 is moved to _m::m3 and _m::m4 */ - for (TileIndex t = 0; t < OLD_MAP_SIZE; t++) { - Tile tile(t); - tile.m3() = _old_map3[t.base() * 2]; - tile.m4() = _old_map3[t.base() * 2 + 1]; - } - for (TileIndex t = 0; t < OLD_MAP_SIZE; t++) { Tile tile(t); switch (GetTileType(tile)) { @@ -499,6 +490,13 @@ static uint32_t _old_town_index; static uint16_t _old_string_id; static uint16_t _old_string_id_2; +static void ClearOldMap3(TileIndex t) +{ + Tile tile(t); + tile.m3() = 0; + tile.m4() = 0; +} + static void ReadTTDPatchFlags() { if (_read_ttdpatch_flags) return; @@ -513,8 +511,8 @@ static void ReadTTDPatchFlags() if (_savegame_type == SGT_TTO) return; - /* TTDPatch misuses _old_map3 for flags.. read them! */ - _old_vehicle_multiplier = _old_map3[0]; + /* TTDPatch misuses old map3 (now m3/m4) for flags.. read them! */ + _old_vehicle_multiplier = Tile(0).m3(); /* Somehow.... there was an error in some savegames, so 0 becomes 1 * and 1 becomes 2. The rest of the values are okay */ if (_old_vehicle_multiplier < 2) _old_vehicle_multiplier++; @@ -528,18 +526,26 @@ static void ReadTTDPatchFlags() * 1 vehicle == 128 bytes */ _bump_assert_value = (_old_vehicle_multiplier - 1) * 850 * 128; - for (uint i = 0; i < 17; i++) { // check tile 0, too - if (_old_map3[i] != 0) _savegame_type = SGT_TTDP1; + /* The first 17 bytes are used by TTDP1, which translates to the first 9 m3s and first 8 m4s. */ + for (TileIndex i = 0; i <= 8; i++) { // check tile 0, too + Tile tile(i); + if (tile.m3() != 0 || (i != 8 && tile.m4() != 0)) _savegame_type = SGT_TTDP1; } /* Check if we have a modern TTDPatch savegame (has extra data all around) */ - if (memcmp(&_old_map3[0x1FFFA], "TTDp", 4) == 0) _savegame_type = SGT_TTDP2; + Tile ttdp2_header_first(Map::Size() - 3); + Tile ttdp2_header_second(Map::Size() - 2); + if (ttdp2_header_first.m3() == 'T' && ttdp2_header_first.m4() == 'T' && + ttdp2_header_second.m3() == 'D' && ttdp2_header_second.m4() == 'p') { + _savegame_type = SGT_TTDP2; + } - _old_extra_chunk_nums = _old_map3[_savegame_type == SGT_TTDP2 ? 0x1FFFE : 0x2]; + Tile extra_chunk_tile = Tile(_savegame_type == SGT_TTDP2 ? Map::Size() - 1 : 1); + _old_extra_chunk_nums = extra_chunk_tile.m3() | extra_chunk_tile.m4() << 8; /* Clean the misused places */ - for (uint i = 0; i < 17; i++) _old_map3[i] = 0; - for (uint i = 0x1FE00; i < 0x20000; i++) _old_map3[i] = 0; + for (TileIndex i = 0; i < 9; i++) ClearOldMap3(i); + for (TileIndex i = TileXY(0, Map::MaxY()); i < Map::Size(); i++) ClearOldMap3(i); if (_savegame_type == SGT_TTDP2) Debug(oldloader, 2, "Found TTDPatch game"); @@ -1486,9 +1492,10 @@ static bool LoadOldMapPart1(LoadgameState *ls, int) } if (_savegame_type != SGT_TTO) { + /* old map3 is split into to m3 and m4 */ for (uint i = 0; i < OLD_MAP_SIZE; i++) { - _old_map3[i * 2] = ReadByte(ls); - _old_map3[i * 2 + 1] = ReadByte(ls); + Tile(i).m3() = ReadByte(ls); + Tile(i).m4() = ReadByte(ls); } for (uint i = 0; i < OLD_MAP_SIZE / 4; i++) { byte b = ReadByte(ls); @@ -1755,8 +1762,6 @@ bool LoadTTDMain(LoadgameState *ls) _read_ttdpatch_flags = false; /* Load the biggest chunk */ - std::array map3; - _old_map3 = map3.data(); _old_vehicle_names = nullptr; try { if (!LoadChunk(ls, nullptr, main_chunk)) { From f5b320e5024087587b985b0f552550f19ffbf4d2 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Mon, 15 Jan 2024 18:39:31 +0100 Subject: [PATCH 12/17] Codechange: use range based for loop, instead of tile numbers --- src/saveload/oldloader_sl.cpp | 38 +++++++++++++++-------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/src/saveload/oldloader_sl.cpp b/src/saveload/oldloader_sl.cpp index c813244cde..0ad2087d4c 100644 --- a/src/saveload/oldloader_sl.cpp +++ b/src/saveload/oldloader_sl.cpp @@ -52,8 +52,7 @@ void FixOldMapArray() static void FixTTDMapArray() { - for (TileIndex t = 0; t < OLD_MAP_SIZE; t++) { - Tile tile(t); + for (auto tile : Map::Iterate()) { switch (GetTileType(tile)) { case MP_STATION: tile.m4() = 0; // We do not understand this TTDP station mapping (yet) @@ -213,8 +212,7 @@ void FixOldVehicles() static bool FixTTOMapArray() { - for (TileIndex t = 0; t < OLD_MAP_SIZE; t++) { - Tile tile(t); + for (auto tile : Map::Iterate()) { TileType tt = GetTileType(tile); if (tt == 11) { /* TTO has a different way of storing monorail. @@ -1484,25 +1482,23 @@ static bool LoadOldMapPart1(LoadgameState *ls, int) Map::Allocate(OLD_MAP_SIZE, OLD_MAP_SIZE); } - for (uint i = 0; i < OLD_MAP_SIZE; i++) { - Tile(i).m1() = ReadByte(ls); + for (auto t : Map::Iterate()) { + t.m1() = ReadByte(ls); } - for (uint i = 0; i < OLD_MAP_SIZE; i++) { - Tile(i).m2() = ReadByte(ls); + for (auto t : Map::Iterate()) { + t.m2() = ReadByte(ls); } if (_savegame_type != SGT_TTO) { /* old map3 is split into to m3 and m4 */ - for (uint i = 0; i < OLD_MAP_SIZE; i++) { - Tile(i).m3() = ReadByte(ls); - Tile(i).m4() = ReadByte(ls); + for (auto t : Map::Iterate()) { + t.m3() = ReadByte(ls); + t.m4() = ReadByte(ls); } - for (uint i = 0; i < OLD_MAP_SIZE / 4; i++) { + auto range = Map::Iterate(); + for (auto it = range.begin(); it != range.end(); /* nothing. */) { byte b = ReadByte(ls); - Tile(i * 4 + 0).m6() = GB(b, 0, 2); - Tile(i * 4 + 1).m6() = GB(b, 2, 2); - Tile(i * 4 + 2).m6() = GB(b, 4, 2); - Tile(i * 4 + 3).m6() = GB(b, 6, 2); + for (int i = 0; i < 8; i += 2, ++it) (*it).m6() = GB(b, i, 2); } } @@ -1511,13 +1507,11 @@ static bool LoadOldMapPart1(LoadgameState *ls, int) static bool LoadOldMapPart2(LoadgameState *ls, int) { - uint i; - - for (i = 0; i < OLD_MAP_SIZE; i++) { - Tile(i).type() = ReadByte(ls); + for (auto t : Map::Iterate()) { + t.type() = ReadByte(ls); } - for (i = 0; i < OLD_MAP_SIZE; i++) { - Tile(i).m5() = ReadByte(ls); + for (auto t : Map::Iterate()) { + t.m5() = ReadByte(ls); } return true; From 67b405d2f68a429e3396259cd71ce11908514917 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Mon, 15 Jan 2024 19:10:13 +0100 Subject: [PATCH 13/17] Fix #11783, 953445a: TTO savegames are not 65536 by 65536 --- src/saveload/oldloader.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/saveload/oldloader.h b/src/saveload/oldloader.h index 3eaa20425a..6043fb8071 100644 --- a/src/saveload/oldloader.h +++ b/src/saveload/oldloader.h @@ -14,7 +14,7 @@ #include "../tile_type.h" static const uint BUFFER_SIZE = 4096; -static const uint OLD_MAP_SIZE = 256 * 256; +static const uint OLD_MAP_SIZE = 256; struct LoadgameState { FILE *file; From 51f1e939e885151a5aa12c6c4d3ff80c7050fa39 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Mon, 15 Jan 2024 19:22:51 +0100 Subject: [PATCH 14/17] Change: be more resilient against missing towns in old loader --- src/saveload/oldloader_sl.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/saveload/oldloader_sl.cpp b/src/saveload/oldloader_sl.cpp index 0ad2087d4c..2d8e20021c 100644 --- a/src/saveload/oldloader_sl.cpp +++ b/src/saveload/oldloader_sl.cpp @@ -495,6 +495,14 @@ static void ClearOldMap3(TileIndex t) tile.m4() = 0; } +static Town *RemapTown(TileIndex fallback) +{ + /* In some cases depots, industries and stations could refer to a missing town. */ + Town *t = Town::GetIfValid(RemapTownIndex(_old_town_index)); + if (t == nullptr) t = CalcClosestTownFromTile(fallback); + return t; +} + static void ReadTTDPatchFlags() { if (_read_ttdpatch_flags) return; @@ -674,10 +682,7 @@ static bool LoadOldDepot(LoadgameState *ls, int num) if (!LoadChunk(ls, d, depot_chunk)) return false; if (d->xy != 0) { - /* In some cases, there could be depots referencing invalid town. */ - Town *t = Town::GetIfValid(RemapTownIndex(_old_town_index)); - if (t == nullptr) t = Town::GetRandom(); - d->town = t; + d->town = RemapTown(d->xy); } else { delete d; } @@ -767,7 +772,7 @@ static bool LoadOldStation(LoadgameState *ls, int num) if (!LoadChunk(ls, st, station_chunk)) return false; if (st->xy != 0) { - st->town = Town::Get(RemapTownIndex(_old_town_index)); + st->town = RemapTown(st->xy); if (_savegame_type == SGT_TTO) { if (IsInsideBS(_old_string_id, 0x180F, 32)) { @@ -843,7 +848,7 @@ static bool LoadOldIndustry(LoadgameState *ls, int num) if (!LoadChunk(ls, i, industry_chunk)) return false; if (i->location.tile != 0) { - i->town = Town::Get(RemapTownIndex(_old_town_index)); + i->town = RemapTown(i->location.tile); if (_savegame_type == SGT_TTO) { if (i->type > 0x06) i->type++; // Printing Works were added From d5518f62634ca2a973f58e50dbb1132d0f9a565c Mon Sep 17 00:00:00 2001 From: Rubidium Date: Mon, 15 Jan 2024 20:04:11 +0100 Subject: [PATCH 15/17] Fix 36a0818: TTO did not save company shares --- src/saveload/oldloader_sl.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/saveload/oldloader_sl.cpp b/src/saveload/oldloader_sl.cpp index 2d8e20021c..e784eb8ca9 100644 --- a/src/saveload/oldloader_sl.cpp +++ b/src/saveload/oldloader_sl.cpp @@ -957,9 +957,9 @@ static const OldChunks _company_chunk[] = { OCL_CNULL( OC_TTD, 1 ), // avail_railtypes OCL_SVAR( OC_TILE, Company, location_of_HQ ), - OCL_NULL( 4 ), // Shares + OCL_CNULL( OC_TTD, 4 ), // Shares - OCL_CNULL( OC_TTD, 8 ), ///< junk at end of chunk + OCL_CNULL( OC_TTD, 8 ), // junk at end of chunk OCL_END() }; From f99793547e4a7bfc61786ac3867639ed70c5bb3d Mon Sep 17 00:00:00 2001 From: Rubidium Date: Mon, 15 Jan 2024 20:58:24 +0100 Subject: [PATCH 16/17] Fix fbd71a9: for TTO savegames, getting the savegame type left the file pointing to the wrong location --- src/saveload/oldloader.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/saveload/oldloader.cpp b/src/saveload/oldloader.cpp index 76e6b4a119..4f1954cc11 100644 --- a/src/saveload/oldloader.cpp +++ b/src/saveload/oldloader.cpp @@ -225,16 +225,17 @@ static bool VerifyOldNameChecksum(char *title, uint len) static std::tuple DetermineOldSavegameTypeAndName(FILE *f) { + long pos = ftell(f); char buffer[std::max(TTO_HEADER_SIZE, TTD_HEADER_SIZE)]; - if (fread(buffer, 1, lengthof(buffer), f) != lengthof(buffer)) { + if (pos < 0 || fread(buffer, 1, lengthof(buffer), f) != lengthof(buffer)) { return { SGT_INVALID, "(broken) Unable to read file" }; } - if (VerifyOldNameChecksum(buffer, TTO_HEADER_SIZE)) { + if (VerifyOldNameChecksum(buffer, TTO_HEADER_SIZE) && fseek(f, pos + TTO_HEADER_SIZE, SEEK_SET) == 0) { return { SGT_TTO, "(TTO)" + StrMakeValid({buffer, TTO_HEADER_SIZE - HEADER_CHECKSUM_SIZE}) }; } - if (VerifyOldNameChecksum(buffer, TTD_HEADER_SIZE)) { + if (VerifyOldNameChecksum(buffer, TTD_HEADER_SIZE) && fseek(f, pos + TTD_HEADER_SIZE, SEEK_SET) == 0) { return { SGT_TTD, "(TTD)" + StrMakeValid({buffer, TTD_HEADER_SIZE - HEADER_CHECKSUM_SIZE}) }; } @@ -267,7 +268,9 @@ bool LoadOldSaveGame(const std::string &file) switch (type) { case SGT_TTO: proc = &LoadTTOMain; break; case SGT_TTD: proc = &LoadTTDMain; break; - default: break; + default: + Debug(oldloader, 0, "Unknown savegame type; cannot be loaded"); + break; } _savegame_type = type; From 661bdae2e5c0924613c080a3ac44f172e9061471 Mon Sep 17 00:00:00 2001 From: Rubidium Date: Mon, 15 Jan 2024 22:12:55 +0100 Subject: [PATCH 17/17] Fix #11785, cf16f45: when bumping aircraft into the air, remove them from the loading vehicle list again --- src/saveload/vehicle_sl.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/saveload/vehicle_sl.cpp b/src/saveload/vehicle_sl.cpp index 8d482a1b89..cbec457e2d 100644 --- a/src/saveload/vehicle_sl.cpp +++ b/src/saveload/vehicle_sl.cpp @@ -198,6 +198,18 @@ void UpdateOldAircraft() SetAircraftPosition(a, gp.x, gp.y, GetAircraftFlightLevel(a)); } } + + /* Clear aircraft from loading vehicles, if we bumped them into the air. */ + for (Station *st : Station::Iterate()) { + for (auto iter = st->loading_vehicles.begin(); iter != st->loading_vehicles.end(); /* nothing */) { + Vehicle *v = *iter; + if (v->type == VEH_AIRCRAFT && !v->current_order.IsType(OT_LOADING)) { + iter = st->loading_vehicles.erase(iter); + } else { + ++iter; + } + } + } } /**