From d6df92b6df6e9092b44e1c059ae6c5c6ddaec082 Mon Sep 17 00:00:00 2001 From: translators Date: Fri, 23 Feb 2018 18:45:38 +0000 Subject: [PATCH 01/21] (svn r27969) -Update from Eints: danish: 22 changes by Knogle --- src/lang/danish.txt | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/src/lang/danish.txt b/src/lang/danish.txt index 18abcb7846..a596e0cce5 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -1372,6 +1372,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Fra STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Venstreklik-scrolling: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Aktiver rulle kortet ved at trække den med venstre museknap. Dette er især nyttigt, når du bruger en touch-screen til at rulle +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Luk vindue ved højre-klik: {STRING} +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Lukker vinduet ved at højreklikke inde i det. Deaktiverer værktøjstip ved at højreklikke! STR_CONFIG_SETTING_AUTOSAVE :Auto gem: {STRING} STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Vælg interval mellem automatisk gemte spil @@ -1761,6 +1763,7 @@ STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Tjek for STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Vis computerspiller/spilscript indstillinger STR_INTRO_TOOLTIP_QUIT :{BLACK}Afslut 'OpenTTD' +STR_INTRO_BASESET :{BLACK} Det aktuelt valgte base grafiksæt mangler {NUM} sprite {P "" s}. Se venligst efter opdateringer til basesættet. STR_INTRO_TRANSLATION :{BLACK}Denne oversættelse mangler {NUM} streng{P "" e}. Hjælp venligst med at gøre OpenTTD bedre ved at tilmelde dig som oversætter. Se readme.txt for detaljer. # Quit window @@ -2589,6 +2592,7 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Lufthavn STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Accepteret last: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) +STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Tog type: {LTBLUE}{STRING} STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Togspors hastighedsgrænse: {LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Vej hastighedsbegrænsning: {LTBLUE}{VELOCITY} @@ -2604,13 +2608,13 @@ STR_LAI_CLEAR_DESCRIPTION_DESERT :Ørken STR_LAI_RAIL_DESCRIPTION_TRACK :Jernbane spor STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Jernbane spor med bloksignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Jernbane spor med with pre-signaler -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Jernbane spor med udgangssignaler +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Jernbane spor med udgangs-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Jernbane spor med kombinerede signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Jernbane spor med rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Jernbane spor med en-vejs-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Jernbane spor med blok- og pre-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Jernbane spor med blok- og udgangs-signaler -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Jernbane spor med blok og kombinerede signaler +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Jernbane spor med blok- og kombinerede signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Jernbane spor med blok- og rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Jernbane spor med blok og en-vejs rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Jernbane spor med pre- og udgangs-signaler @@ -2621,7 +2625,7 @@ STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Jernbane spor m STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Jernbane spor med udgangs- og rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Jernbane spor med udgangs- og en-vejs rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Jernbane spor med kombinerede og rute-signaler -STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Jernbane spor med kombinerede og en-vejs rute-signaler +STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Jernbane spor med kombinationede- og en-vejs rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Jernbane spor med rute- og en-vejs rute-signaler STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Jernbane togdepot @@ -3292,6 +3296,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Kræver: STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Kræver: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} ############ range for requires ends +STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Kræver: +STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING} +STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} venter{STRING} ############ range for produces starts STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Producerer: {YELLOW}{STRING}{STRING} @@ -3360,6 +3367,10 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Fjern alle kør STR_GROUP_RENAME_CAPTION :{BLACK}Omdøb en gruppe +STR_GROUP_PROFIT_THIS_YEAR :Afkast i år: +STR_GROUP_PROFIT_LAST_YEAR :Afkast sidste år: +STR_GROUP_OCCUPANCY :Nuværende brug: +STR_GROUP_OCCUPANCY_VALUE :{NUM}% # Build vehicle window STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nye jernbanekøretøjer @@ -3392,6 +3403,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Alle lasttyper STR_PURCHASE_INFO_ALL_BUT :Alle undtagen {CARGO_LIST} STR_PURCHASE_INFO_MAX_TE :{BLACK}Maks. trækkraft: {GOLD}{FORCE} STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Rækkevidde: {GOLD}{COMMA} felter +STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Fly type: {GOLD}{STRING} STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Togvalgsliste - klik på et køretøj for mere information STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Liste over køretøjstyper - klik på køretøj for information @@ -3526,6 +3538,10 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :magnetskinnelok STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Pris: {CURRENCY_LONG} Vægt: {WEIGHT_SHORT}{}Hastighed: {VELOCITY} Styrke: {POWER}{}Driftsomkostninger: {CURRENCY_LONG}/år{}Kapacitet: {CARGO_LONG} STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Pris: {CURRENCY_LONG} Vægt: {WEIGHT_SHORT}{}Hastighed: {VELOCITY} Hestekræfter: {POWER} Maks. Trækkraft: {6:FORCE}{}Driftsomkostning: {4:CURRENCY_LONG}/år{}Kapacitet: {5:CARGO_LONG} STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Maks. hast.: {VELOCITY}{}Kapacitet: {CARGO_LONG}{}Driftsomkostninger: {CURRENCY_LONG}/år +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Max. Hastighed: {VELOCITY}{}Aircraft type: {STRING}{}Kapacitet: {CARGO_LONG}, {CARGO_LONG}{}Omkostninger: {CURRENCY_LONG}/år +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Max. Hastighed: {VELOCITY}{}Fly type: {STRING}{}Kapacitet: {CARGO_LONG}{}Omkostninger: {CURRENCY_LONG}/år +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Max. Hastighed: {VELOCITY}{}Fly type: {STRING} Rækkevidde: {COMMA} felter{}Kapacitet: {CARGO_LONG}, {CARGO_LONG}{}Omkostninger: {CURRENCY_LONG}/år +STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Pris: {CURRENCY_LONG} Max. Hastighed{VELOCITY}{}Fly type: {STRING} Rækkevidde: {COMMA} felter{}Kapacitet: {CARGO_LONG}{}Omkostninger: {CURRENCY_LONG}/år # Autoreplace window STR_REPLACE_VEHICLES_WHITE :{WHITE}Udskift {STRING} - {STRING} @@ -3555,6 +3571,7 @@ STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Tryk for STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Skift imellem lokomotiv- og vognudskiftningsvindue STR_REPLACE_ENGINES :Lokomotiver STR_REPLACE_WAGONS :Vogne +STR_REPLACE_ALL_RAILTYPE :Alle jernbanevogne STR_REPLACE_HELP_RAILTYPE :{BLACK}Vælg den skinne type, du ønsker at udskifte lokomotiver til STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Viser hvilket køretøj det valgte køretøj til venstre bliver udskiftet med, hvis det udskiftes @@ -3647,6 +3664,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} år ({C STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} år ({COMMA}) STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Maks. hast.: {LTBLUE}{VELOCITY} +STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Max. hastighed: {LTBLUE}{VELOCITY} {BLACK}Fly type: {LTBLUE}{STRING} +STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Max. hastighed: {LTBLUE}{VELOCITY} {BLACK}Fly type: {LTBLUE}{STRING} {BLACK}Rækkevidde: {LTBLUE}{COMMA} felter STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Vægt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Effekt: {LTBLUE}{POWER}{BLACK} Maks. hast.: {LTBLUE}{VELOCITY} STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Vægt: {LTBLUE}{WEIGHT_SHORT} {BLACK}Effekt: {LTBLUE}{POWER}{BLACK} Maks. hast.: {LTBLUE}{VELOCITY} {BLACK}Maks. trækkraft: {LTBLUE}{FORCE} From d6354f5408db4f7650cc64294f03a5278a0ce35d Mon Sep 17 00:00:00 2001 From: translators Date: Wed, 28 Feb 2018 18:45:37 +0000 Subject: [PATCH 02/21] (svn r27970) -Update from Eints: greek: 1 change by Jubilee --- src/lang/greek.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/lang/greek.txt b/src/lang/greek.txt index ae56581485..686e619a70 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -1479,6 +1479,7 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Απενεργ STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Μετάβαση με αριστερό κλικ: {STRING} STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Ενεργοποίηση της κύλισης του χάρτη σύροντας τον με το αριστερό κουμπί του ποντικιού. Αυτό είναι ιδιαίτερα χρήσιμο για την κύλιση όταν χρησιμοποιείται οθόνη αφής +STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Κλείσιμο παραθύρου με δεξί-κλικ: {STRING} STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Κλείνει το παράθυρο με δεξί πάτημα μέσα του. Απενεργοποιεί την ανάδυση επεξηγήσεων με το δεξί κουμπί! STR_CONFIG_SETTING_AUTOSAVE :Αυτόματο σώσιμο: {STRING} From 9ce3403e2ddd5c0bdcde4aadfe8518415b893f5d Mon Sep 17 00:00:00 2001 From: translators Date: Thu, 1 Mar 2018 18:45:36 +0000 Subject: [PATCH 03/21] (svn r27971) -Update from Eints: spanish (mexican): 2 changes by Absay --- src/lang/spanish_MX.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index 1c8ca5c220..0fb6815e2b 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -1857,7 +1857,7 @@ STR_FACE_FEMALE_BUTTON :{BLACK}Mujer STR_FACE_FEMALE_TOOLTIP :{BLACK}Elegir cara femenina STR_FACE_NEW_FACE_BUTTON :{BLACK}Nueva cara STR_FACE_NEW_FACE_TOOLTIP :{BLACK}Generar cara al azar -STR_FACE_ADVANCED :{BLACK}Avanzada +STR_FACE_ADVANCED :{BLACK}Avanzado STR_FACE_ADVANCED_TOOLTIP :{BLACK}Selección avanzada de caras STR_FACE_SIMPLE :{BLACK}Simple STR_FACE_SIMPLE_TOOLTIP :{BLACK}Selección simple de caras @@ -4493,7 +4493,7 @@ STR_TOWN_BUILDING_NAME_OFFICE_BLOCK_1 :Edificio de ofi STR_TOWN_BUILDING_NAME_SMALL_BLOCK_OF_FLATS_1 :Conjunto habitacional pequeño STR_TOWN_BUILDING_NAME_CHURCH_1 :Iglesia STR_TOWN_BUILDING_NAME_LARGE_OFFICE_BLOCK_1 :Complejo de oficinas -STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Casas de pueblo +STR_TOWN_BUILDING_NAME_TOWN_HOUSES_1 :Casas adosadas STR_TOWN_BUILDING_NAME_HOTEL_1 :Hotel STR_TOWN_BUILDING_NAME_STATUE_1 :Estatua STR_TOWN_BUILDING_NAME_FOUNTAIN_1 :Fuente From b85190128aafd3b6905539e01445f8bbce974038 Mon Sep 17 00:00:00 2001 From: peter1138 Date: Mon, 5 Mar 2018 21:24:48 +0000 Subject: [PATCH 04/21] (svn r27972) -Fix (r15271) [FS#6670]: Catenary sprites got mixed up for depots. --- src/table/elrail_data.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/table/elrail_data.h b/src/table/elrail_data.h index 102ad42644..6915360035 100644 --- a/src/table/elrail_data.h +++ b/src/table/elrail_data.h @@ -310,10 +310,10 @@ enum WireSpriteOffset { WSO_X_NE_UP, WSO_Y_NW_DOWN, - WSO_ENTRANCE_NE, - WSO_ENTRANCE_SE, WSO_ENTRANCE_SW, WSO_ENTRANCE_NW, + WSO_ENTRANCE_NE, + WSO_ENTRANCE_SE, }; struct SortableSpriteStruct { @@ -400,10 +400,10 @@ static const SortableSpriteStruct RailCatenarySpriteData_Depot[] = { }; static const SortableSpriteStruct RailCatenarySpriteData_Tunnel[] = { - { WSO_ENTRANCE_NE, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! Wire for NE tunnel exit - { WSO_ENTRANCE_SE, 7, 0, 1, 15, 1, ELRAIL_ELEVATION }, //! Wire for SE tunnel exit - { WSO_ENTRANCE_SW, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! Wire for SW tunnel exit - { WSO_ENTRANCE_NW, 7, 0, 1, 15, 1, ELRAIL_ELEVATION } //! Wire for NW tunnel exit + { WSO_ENTRANCE_SW, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! Wire for NE tunnel (SW facing exit) + { WSO_ENTRANCE_NW, 7, 0, 1, 15, 1, ELRAIL_ELEVATION }, //! Wire for SE tunnel (NW facing exit) + { WSO_ENTRANCE_NE, 0, 7, 15, 1, 1, ELRAIL_ELEVATION }, //! Wire for SW tunnel (NE facing exit) + { WSO_ENTRANCE_SE, 7, 0, 1, 15, 1, ELRAIL_ELEVATION } //! Wire for NW tunnel (SE facing exit) }; From c46e470f07864a58fe7c25fb942f48931174068c Mon Sep 17 00:00:00 2001 From: peter1138 Date: Mon, 5 Mar 2018 22:57:49 +0000 Subject: [PATCH 05/21] (svn r27973) -Fix: [FS#6662] Avoid tile operations outside map border when building lock. --- src/water_cmd.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp index edce4cda58..6b11e7e64b 100644 --- a/src/water_cmd.cpp +++ b/src/water_cmd.cpp @@ -73,7 +73,7 @@ static const uint8 _flood_from_dirs[] = { */ static inline void MarkTileDirtyIfCanalOrRiver(TileIndex tile) { - if (IsTileType(tile, MP_WATER) && (IsCanal(tile) || IsRiver(tile))) MarkTileDirtyByTile(tile); + if (IsValidTile(tile) && IsTileType(tile, MP_WATER) && (IsCanal(tile) || IsRiver(tile))) MarkTileDirtyByTile(tile); } /** From 5df8ac52d60b1eada8157284b5c8be29fcf34829 Mon Sep 17 00:00:00 2001 From: peter1138 Date: Tue, 6 Mar 2018 07:48:29 +0000 Subject: [PATCH 06/21] (svn r27974) -Fix (r27907) [FS#6627]: free() called on static airport rotation data (JGR) --- src/newgrf.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 4759c8a19c..704892e5cf 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -3672,6 +3672,9 @@ static void DuplicateTileTable(AirportSpec *as) HangarTileTable *depot_table = MallocT(as->nof_depots); MemCpyT(depot_table, as->depot_table, as->nof_depots); as->depot_table = depot_table; + Direction *rotation = MallocT(as->num_table); + MemCpyT(rotation, as->rotation, as->num_table); + as->rotation = rotation; } /** @@ -3741,6 +3744,7 @@ static ChangeInfoResult AirportChangeInfo(uint airport, int numinfo, int prop, B } case 0x0A: { // Set airport layout + free(as->rotation); as->num_table = buf->ReadByte(); // Number of layaouts as->rotation = MallocT(as->num_table); uint32 defsize = buf->ReadDWord(); // Total size of the definition From 7ed8067e1cda42a4979175ae5566212f4bf751bd Mon Sep 17 00:00:00 2001 From: peter1138 Date: Sun, 11 Mar 2018 07:16:58 +0000 Subject: [PATCH 07/21] (svn r27975) -Fix (r8969) [FS#6642]: Missing one hair style. --- src/company_manager_face.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/company_manager_face.h b/src/company_manager_face.h index 993e539cc7..511f85b7d5 100644 --- a/src/company_manager_face.h +++ b/src/company_manager_face.h @@ -78,7 +78,7 @@ static const CompanyManagerFaceBitsInfo _cmf_info[] = { /* CMFV_MOUSTACHE */ { 13, 2, { 3, 0, 3, 0 }, { 0x367, 0, 0x397, 0 } }, ///< Depends on CMFV_HAS_MOUSTACHE /* CMFV_LIPS */ { 13, 4, { 12, 10, 9, 9 }, { 0x35B, 0x351, 0x3A5, 0x3C8 } }, ///< Depends on !CMFV_HAS_MOUSTACHE /* CMFV_NOSE */ { 17, 3, { 8, 4, 4, 5 }, { 0x349, 0x34C, 0x393, 0x3B3 } }, ///< Depends on !CMFV_HAS_MOUSTACHE - /* CMFV_HAIR */ { 20, 4, { 9, 5, 5, 4 }, { 0x382, 0x38B, 0x3D4, 0x3D9 } }, + /* CMFV_HAIR */ { 20, 4, { 9, 5, 5, 5 }, { 0x382, 0x38B, 0x3D4, 0x3D9 } }, /* CMFV_JACKET */ { 24, 2, { 3, 3, 3, 3 }, { 0x36B, 0x378, 0x36B, 0x378 } }, /* CMFV_COLLAR */ { 26, 2, { 4, 4, 4, 4 }, { 0x36E, 0x37B, 0x36E, 0x37B } }, /* CMFV_TIE_EARRING */ { 28, 3, { 6, 3, 6, 3 }, { 0x372, 0x37F, 0x372, 0x3D1 } }, ///< Depends on CMFV_HAS_TIE_EARRING From 37be4bef67a9f1664949408e1e876b5b6805323c Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 11 Mar 2018 11:43:32 +0000 Subject: [PATCH 08/21] (svn r27976) -Add [FS#6664]: Climate-specific Action5 extra airport sprites. (PaulC) --- bin/baseset/openttd.grf | Bin 498518 -> 501532 bytes media/extra_grf/airports.nfo | 13 +++++++++++++ media/extra_grf/airports.png | Bin 6504 -> 8478 bytes 3 files changed, 13 insertions(+) diff --git a/bin/baseset/openttd.grf b/bin/baseset/openttd.grf index 6d979b5d795ec2ea9e200488b8913bf57f6cebe8..5d124f3f8fa8ba03d57e1d67a8abe553fef879ec 100644 GIT binary patch delta 3433 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 ecS}B+hZ}a~#R)@OR>S%0BEEbdoWJhhaQJ@$-p z-ZK*dtrrQ(w4!4r>r;C>84bfIdtYmXh^mEmuls zLW3XZV7jd=+p?^%t(0uS9n7M96ts!9bJ%Xg>@H3Am6{D0(&Ma$rm4qRV|&PD zVT{o$Gr@Z4I)j<)v5We>`&@q&_W}ZN#O-hngOc6ox~)#l)H%@^05IRpCFhN|!w&-7 zv(7AQv*XM4=l0z!M#}B)53y!^k zsJS{lFL4wvC3Ysxcv(=&TNoYS3j&3nsX345AMMiC!rx+RRWQh9#3w5ihnf{q*;bH2 zG@BOu^YwY_mP%z|8mZ1AxkP{hm*RtrEEF|(6orMm}OQ|Aqm>Un=`PK zPW~5ODHyb*Q9d0o`IKXJP!Vrih}pOiudr|x=F&O5!Q1DX80|8RBuxcVG{8Gk^aHoc zq~cAl3i7+cT}9(&S>FZ0p@-|Y_?TN^J!rPhq|-xyUeB}fu?an@Ln*ceAnrNEZn1gi zRSHD6bKAWgKc8G7x|}!WrMa9eD0lwE55>K_7(_HjPtJ^T5o-_W;l?}qI0te6nK?|& zLz80#^lfC$*isX3*J7-g>`~L!1 C?m-v; diff --git a/media/extra_grf/airports.nfo b/media/extra_grf/airports.nfo index 8feb813baf..45cd25de04 100644 --- a/media/extra_grf/airports.nfo +++ b/media/extra_grf/airports.nfo @@ -23,3 +23,16 @@ -1 sprites/airports.png 8bpp 82 88 64 31 -31 0 normal -1 sprites/airports.png 8bpp 162 88 64 31 -31 0 normal -1 sprites/airports.png 8bpp 242 88 64 31 -31 0 normal + -1 * 0 0C "Climate specific sprites by PaulC" + -1 * 0 07 83 01 \7! 01 03 + -1 * 0 05 90 02 0D + -1 sprites/airports.png 8bpp 320 88 64 31 -31 0 normal + -1 sprites/airports.png 8bpp 400 88 64 31 -31 0 normal + -1 * 0 07 83 01 \7! 02 03 + -1 * 0 05 90 02 0D + -1 sprites/airports.png 8bpp 480 88 64 31 -31 0 normal + -1 sprites/airports.png 8bpp 560 88 64 31 -31 0 normal + -1 * 0 07 83 01 \7! 03 03 + -1 * 0 05 90 02 0D + -1 sprites/airports.png 8bpp 640 88 64 31 -31 0 normal + -1 sprites/airports.png 8bpp 720 88 64 31 -31 0 normal diff --git a/media/extra_grf/airports.png b/media/extra_grf/airports.png index fd63355b1f5f428cf951228e1d5012b0bf552ece..a5833b057665b066e4e3c992a5dbaac234d401aa 100644 GIT binary patch delta 7734 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 Date: Sun, 11 Mar 2018 12:03:17 +0000 Subject: [PATCH 09/21] (svn r27977) -Add [FS#6664]: Replace the office building sprite on various toyland airports with a better fitting sprite. This also affects GRFs which activate the default refinery in toyland. (PaulC) --- bin/baseset/orig_dos.obg | 2 +- bin/baseset/orig_dos_de.obg | 2 +- bin/baseset/orig_extra.grf | Bin 327856 -> 328676 bytes bin/baseset/orig_win.obg | 2 +- media/extra_grf/airports.png | Bin 8478 -> 9491 bytes media/extra_grf/airports_orig_extra.nfo | 12 ++++++++++++ media/extra_grf/orig_extra.nfo | 1 + 7 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 media/extra_grf/airports_orig_extra.nfo diff --git a/bin/baseset/orig_dos.obg b/bin/baseset/orig_dos.obg index 2ed8a5a59c..9d0db3e2af 100644 --- a/bin/baseset/orig_dos.obg +++ b/bin/baseset/orig_dos.obg @@ -77,7 +77,7 @@ TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8 TRGC.GRF = ed446637e034104c5559b32c18afe78d TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9 TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6 -ORIG_EXTRA.GRF = 0b10a95c0adee710ecca9c3d676be4f3 +ORIG_EXTRA.GRF = 67bcfac5911667309d86b7749ea8d08c [origin] default = You can find it on your Transport Tycoon Deluxe CD-ROM. diff --git a/bin/baseset/orig_dos_de.obg b/bin/baseset/orig_dos_de.obg index 598d8ed89d..754ab5a2d4 100644 --- a/bin/baseset/orig_dos_de.obg +++ b/bin/baseset/orig_dos_de.obg @@ -75,7 +75,7 @@ TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8 TRGC.GRF = ed446637e034104c5559b32c18afe78d TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9 TRGT.GRF = fcde1d7e8a74197d72a62695884b909e -ORIG_EXTRA.GRF = 0b10a95c0adee710ecca9c3d676be4f3 +ORIG_EXTRA.GRF = 67bcfac5911667309d86b7749ea8d08c [origin] default = You can find it on your Transport Tycoon Deluxe CD-ROM. diff --git a/bin/baseset/orig_extra.grf b/bin/baseset/orig_extra.grf index 46faff391673e974f469787bf2779dee0659983c..728a8b2555bb3de7506193ed1124209dafa33ad7 100644 GIT binary patch delta 862 zcmWmB&ube;6bJB~*hagp$8px@L?})ecY5b*ci0KW;a((Y_x&Qug+kv%KXN` zy0zWdxsu_QQV;Mv6uG4ez(?|K27F*}XUqAL=Qxh?X~x%}s;1|}Fp9&_JwN<7qbRnW z&EgFq8OM=Z4zAh+-zlJC9i7kTl$t3aD`f+P7rmdA=q|4 z|I2F15LY$Nr{%pF)wAcQyJ!Rr{6>;&lHg`w&1 z3cBvp$RI_Y;ccBD!Ew4ZYGMTY&dBhc)RKEW$LV#uU2F+XzuzAizDH1|*Nc-liw*Lr zYouO)Uas;TMa|L#9OANjZGwsQ@*JOx_1P!HVA4*F`Q`Z?vUvS2pUridjHV`t=I_BM z_7}vU<=L0K#EH@Q6JvfcT>yvG;VA&QH}HW8qky$4Ej+uxB9X-D=5Q-OK${KH#R+<{ z={bQ#I$y8=7wj#?(v#ujci#&vQB7jKM*jj?jQCgKUH43E$!anlkCT`kJNbzk zp!jr!vhd03bTdV?j7|3M4WR#hiJ0ViMwHYf8K(xH#1j3SB2e_u&}56eIhiG55_6oK z8lMf2w*~a+99AWY&gyjFqLBlO#TSQ9AKicPz+qSJ-(Mc(|9Kzi_|>z^M;{(te01sP Ut5-MfU2Q{F{2y1_!ncS20VUCN82|tP delta 35 pcmaFTF0!FfgoTCS|I0>}Ru;ysEKII-?X`_eK+L?owvi>h2>|No4D$d0 diff --git a/bin/baseset/orig_win.obg b/bin/baseset/orig_win.obg index 2b7d43478d..ec00781488 100644 --- a/bin/baseset/orig_win.obg +++ b/bin/baseset/orig_win.obg @@ -76,7 +76,7 @@ TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32 TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1 TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8 -ORIG_EXTRA.GRF = 0b10a95c0adee710ecca9c3d676be4f3 +ORIG_EXTRA.GRF = 67bcfac5911667309d86b7749ea8d08c [origin] default = You can find it on your Transport Tycoon Deluxe CD-ROM. diff --git a/media/extra_grf/airports.png b/media/extra_grf/airports.png index a5833b057665b066e4e3c992a5dbaac234d401aa..5fb9618bc5bf8113df7bfb7e0739c3864e441d7f 100644 GIT binary patch delta 8723 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 diff --git a/media/extra_grf/airports_orig_extra.nfo b/media/extra_grf/airports_orig_extra.nfo new file mode 100644 index 0000000000..f2a8dc8327 --- /dev/null +++ b/media/extra_grf/airports_orig_extra.nfo @@ -0,0 +1,12 @@ +// +// $Id$ +// +// This file is part of OpenTTD. +// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2. +// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see . +// + -1 * 0 0C "Climate specific airport sprite by PaulC" + -1 * 0 07 83 01 \7! 03 02 + -1 * 0 0A 01 01 2F 08 + -1 sprites/airports.png 8bpp 20 170 42 39 -19 -21 normal diff --git a/media/extra_grf/orig_extra.nfo b/media/extra_grf/orig_extra.nfo index 534badab03..a1173a58c1 100644 --- a/media/extra_grf/orig_extra.nfo +++ b/media/extra_grf/orig_extra.nfo @@ -78,6 +78,7 @@ #include "chars_orig_extra.nfo" #include "shore.nfo" #include "fix_graphics.nfo" +#include "airports_orig_extra.nfo" #include "canals_extra.nfo" #include "rivers/rapids.nfo" #include "rivers/temperate.nfo" From 91bcc210cff361bb5dc97324a7013a4210c01a25 Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 11 Mar 2018 12:11:09 +0000 Subject: [PATCH 10/21] (svn r27978) -Fix [FS#6673] (r18541): Store the map variety setting in the samegame like the other mapgen settings, so restarting maps considers it. (Samu) --- src/saveload/saveload.cpp | 3 ++- src/table/settings.ini | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index dfa3be7219..2c00ecc4a1 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -264,8 +264,9 @@ * 194 26881 1.5.x, 1.6.0 * 195 27572 1.6.x * 196 27778 1.7.x + * 197 27978 */ -extern const uint16 SAVEGAME_VERSION = 196; ///< Current savegame version of OpenTTD. +extern const uint16 SAVEGAME_VERSION = 197; ///< Current savegame version of OpenTTD. SavegameType _savegame_type; ///< type of savegame we are loading FileToSaveLoad _file_to_saveload; ///< File to save or load in the openttd loop. diff --git a/src/table/settings.ini b/src/table/settings.ini index 23fca32a43..2554a2ece5 100644 --- a/src/table/settings.ini +++ b/src/table/settings.ini @@ -2189,7 +2189,7 @@ cat = SC_BASIC base = GameSettings var = game_creation.variety type = SLE_UINT8 -flags = SLF_NOT_IN_SAVE | SLF_NO_NETWORK_SYNC +from = 197 guiflags = SGF_MULTISTRING | SGF_NEWGAME_ONLY def = 0 min = 0 From 6e19cbf219900f33762f8d10d021b2e838245733 Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 11 Mar 2018 12:18:30 +0000 Subject: [PATCH 11/21] (svn r27979) -Add: adf88 to readme --- readme.txt | 1 + src/misc_gui.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/readme.txt b/readme.txt index e378bd5d22..5f6598b9a2 100644 --- a/readme.txt +++ b/readme.txt @@ -680,6 +680,7 @@ http://homer.rice.edu/~sandmann/cwsdpmi/csdpmi5s.zip X.X) Credits ---- ------- The OpenTTD team (in alphabetical order): + Grzegorz Duczyński (adf88) - General coding (since 1.7.2) Albert Hofkamp (Alberth) - GUI expert (since 0.7) Matthijs Kooijman (blathijs) - Pathfinder-guru, Debian port (since 0.3) Ulf Hermann (fonsinchen) - Cargo Distribution (since 1.3) diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index 03500c2a26..01e8d2c45d 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -397,6 +397,7 @@ static const char * const _credits[] = { "Original graphics by Simon Foster", "", "The OpenTTD team (in alphabetical order):", + " Grzegorz Duczy\xC5\x84ski (adf88) - General coding (since 1.7.2)", " Albert Hofkamp (Alberth) - GUI expert (since 0.7)", " Matthijs Kooijman (blathijs) - Pathfinder-guru, Debian port (since 0.3)", " Ulf Hermann (fonsinchen) - Cargo Distribution (since 1.3)", From b1592787ebc829782f6a04fd141d7c8124511a8a Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 11 Mar 2018 12:24:32 +0000 Subject: [PATCH 12/21] (svn r27980) -Doc: Yearly increment --- os/debian/copyright | 2 +- os/rpm/openttd.spec | 2 +- src/lang/afrikaans.txt | 2 +- src/lang/arabic_egypt.txt | 2 +- src/lang/basque.txt | 2 +- src/lang/belarusian.txt | 2 +- src/lang/brazilian_portuguese.txt | 2 +- src/lang/bulgarian.txt | 2 +- src/lang/catalan.txt | 2 +- src/lang/croatian.txt | 2 +- src/lang/czech.txt | 2 +- src/lang/danish.txt | 2 +- src/lang/dutch.txt | 2 +- src/lang/english.txt | 2 +- src/lang/english_AU.txt | 2 +- src/lang/english_US.txt | 2 +- src/lang/esperanto.txt | 2 +- src/lang/estonian.txt | 2 +- src/lang/faroese.txt | 2 +- src/lang/finnish.txt | 2 +- src/lang/french.txt | 2 +- src/lang/gaelic.txt | 2 +- src/lang/galician.txt | 2 +- src/lang/german.txt | 2 +- src/lang/greek.txt | 2 +- src/lang/hebrew.txt | 2 +- src/lang/hungarian.txt | 2 +- src/lang/icelandic.txt | 2 +- src/lang/indonesian.txt | 2 +- src/lang/irish.txt | 2 +- src/lang/italian.txt | 2 +- src/lang/japanese.txt | 2 +- src/lang/korean.txt | 2 +- src/lang/latvian.txt | 2 +- src/lang/lithuanian.txt | 2 +- src/lang/luxembourgish.txt | 2 +- src/lang/malay.txt | 2 +- src/lang/norwegian_bokmal.txt | 2 +- src/lang/norwegian_nynorsk.txt | 2 +- src/lang/polish.txt | 2 +- src/lang/portuguese.txt | 2 +- src/lang/romanian.txt | 2 +- src/lang/russian.txt | 2 +- src/lang/serbian.txt | 2 +- src/lang/simplified_chinese.txt | 2 +- src/lang/slovak.txt | 2 +- src/lang/slovenian.txt | 2 +- src/lang/spanish.txt | 2 +- src/lang/spanish_MX.txt | 2 +- src/lang/swedish.txt | 2 +- src/lang/tamil.txt | 2 +- src/lang/thai.txt | 2 +- src/lang/traditional_chinese.txt | 2 +- src/lang/turkish.txt | 2 +- src/lang/ukrainian.txt | 2 +- src/lang/unfinished/frisian.txt | 2 +- src/lang/unfinished/ido.txt | 2 +- src/lang/unfinished/macedonian.txt | 2 +- src/lang/unfinished/persian.txt | 2 +- src/lang/vietnamese.txt | 2 +- src/lang/welsh.txt | 2 +- src/os/windows/ottdres.rc.in | 2 +- 62 files changed, 62 insertions(+), 62 deletions(-) diff --git a/os/debian/copyright b/os/debian/copyright index ab62f66a42..05cbfc4328 100644 --- a/os/debian/copyright +++ b/os/debian/copyright @@ -5,7 +5,7 @@ Source: http://www.openttd.org Files: * -Copyright: © 2004-2017 Ludvig Strigeous and others. +Copyright: © 2004-2018 Ludvig Strigeous and others. License: GPL-2.0 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2.0 as diff --git a/os/rpm/openttd.spec b/os/rpm/openttd.spec index 9685624462..27acc1b7df 100644 --- a/os/rpm/openttd.spec +++ b/os/rpm/openttd.spec @@ -2,7 +2,7 @@ # spec file for package openttd # # Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. -# Copyright (c) 2007-2017 The OpenTTD developers +# Copyright (c) 2007-2018 The OpenTTD developers # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index 02c5e92135..b7fee9ae8b 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -2688,7 +2688,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Maatskappy-besi STR_ABOUT_OPENTTD :{WHITE}Oor OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Oorspronklike kopiereg {COPYRIGHT} 1995 Chris Sawyer, Alle regte voorbehou STR_ABOUT_VERSION :{BLACK}OpenTTD uitgawe {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Die OpenTTD span +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Die OpenTTD span # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spaar Spel diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt index 70e4734099..b026705865 100644 --- a/src/lang/arabic_egypt.txt +++ b/src/lang/arabic_egypt.txt @@ -2320,7 +2320,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :ارض مملو STR_ABOUT_OPENTTD :{WHITE}حول النسخة المفتوحة STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}الحقوق الاصلية {COPYRIGHT} كريس سوير 1995 , جميع الحقوق محفوظة STR_ABOUT_VERSION :{BLACK}النسخة المفتوحة رقم {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النسخة المفتوحة {COPYRIGHT}2002-2017 فريق النسخة المفتوحة +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النسخة المفتوحة {COPYRIGHT}2002-2018 فريق النسخة المفتوحة # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}حفظ اللعبة diff --git a/src/lang/basque.txt b/src/lang/basque.txt index f761d45931..6d80461b68 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -2592,7 +2592,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Konpainia jabe STR_ABOUT_OPENTTD :{WHITE}OpenTTD-ri buruz STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD bertsioa {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gordetako jokoa diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt index fc469fe53e..a9824eec67 100644 --- a/src/lang/belarusian.txt +++ b/src/lang/belarusian.txt @@ -3020,7 +3020,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Зямля на STR_ABOUT_OPENTTD :{WHITE}Аб OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Арыґінальныя аўтарскія правы {COPYRIGHT} 1995 Chris Sawyer. Усе правы абароненыя. STR_ABOUT_VERSION :{BLACK}OpenTTD вэрсія {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002–2017 Каманда распрацоўнікаў OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002–2018 Каманда распрацоўнікаў OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Захаваць гульню diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt index e4fd8dce5b..859a6c1afa 100644 --- a/src/lang/brazilian_portuguese.txt +++ b/src/lang/brazilian_portuguese.txt @@ -2692,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :O terreno é pr STR_ABOUT_OPENTTD :{WHITE}Sobre o OpenTTD... STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Todos os direitos reservados STR_ABOUT_VERSION :{BLACK}OpenTTD versão {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 A equipe do OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 A equipe do OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvar Jogo diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt index 81ae04a8ac..f366f29344 100644 --- a/src/lang/bulgarian.txt +++ b/src/lang/bulgarian.txt @@ -2626,7 +2626,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Земя, пр STR_ABOUT_OPENTTD :{WHITE}Относно OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Авторски права {COPYRIGHT} 1995 Крис Сойер (Chris Sawyer), Всички права са запазени STR_ABOUT_VERSION :{BLACK}OpenTTD версия {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Запази играта diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index b2fff236de..28814005c8 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -2692,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :terreny propiet STR_ABOUT_OPENTTD :{WHITE}Quant a l'OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer. Tots els drets reservats. STR_ABOUT_VERSION :{BLACK}Versió {REV} de l'OpenTTD -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 L'equip de l'OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 L'equip de l'OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Desa la Partida diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index dcfb6e2fe4..e7694f1bde 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -2787,7 +2787,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Zemlja u posjed STR_ABOUT_OPENTTD :{WHITE}O OpenTTD-u STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Izvorno autorsko pravo {COPYRIGHT} 1995 Chris Sawyer, sva prava pridržana STR_ABOUT_VERSION :{BLACK}OpenTTD verzija {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD tim +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD tim # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spremi igru diff --git a/src/lang/czech.txt b/src/lang/czech.txt index 0cd1b4e00d..cab72a7c92 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -2784,7 +2784,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Půda vlastněn STR_ABOUT_OPENTTD :{WHITE}O OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Původní copyright: {COPYRIGHT} 1995 Chris Sawyer, všechna práva vyhrazena STR_ABOUT_VERSION :{BLACK}OpenTTD verze {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Tým OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Tým OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Uložit hru diff --git a/src/lang/danish.txt b/src/lang/danish.txt index a596e0cce5..3119390f3e 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -2691,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Land ejet af se STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, Alle rettigheder reserveret STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD teamet +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD teamet # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gem spil diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index cb625b1f6d..383706f727 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -2691,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terrein in bedr STR_ABOUT_OPENTTD :{WHITE}Over OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Originele copyright {COPYRIGHT} 1995 Chris Sawyer, alle rechten voorbehouden STR_ABOUT_VERSION :{BLACK}OpenTTD versie {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Het OpenTTD-team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Het OpenTTD-team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spel Opslaan diff --git a/src/lang/english.txt b/src/lang/english.txt index 33a4f42cfe..258c02c6d6 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -2691,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Company-owned l STR_ABOUT_OPENTTD :{WHITE}About OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt index a37f78d61c..8d51d06660 100644 --- a/src/lang/english_AU.txt +++ b/src/lang/english_AU.txt @@ -2662,7 +2662,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Company-owned l STR_ABOUT_OPENTTD :{WHITE}About OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt index 48247afb28..86519ddc61 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -2691,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Company-owned l STR_ABOUT_OPENTTD :{WHITE}About OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt index 8cb30a79d2..949fdb0d2c 100644 --- a/src/lang/esperanto.txt +++ b/src/lang/esperanto.txt @@ -2265,7 +2265,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Kompanie poseda STR_ABOUT_OPENTTD :{WHITE}Pri OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Origina kopirajto {COPYRIGHT} 1995 Chris Sawyer, Ĉiuj rajtoj rezervitaj STR_ABOUT_VERSION :{BLACK}OpenTTD-versio {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 La teamo de OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 La teamo de OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Konservu Ludon diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index a69b0da58a..344f099741 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -2745,7 +2745,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ettevõtte maa STR_ABOUT_OPENTTD :{WHITE}OpenTTD lisainfo STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Algne autorikaitse {COPYRIGHT} 1995 Chris Sawyer, kõik õigused kaitstud STR_ABOUT_VERSION :{BLACK}OpenTTD osa {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 OpenTTD meeskond +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 OpenTTD meeskond # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Mängu salvestamine diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt index 3fcea7a53e..4d90facad2 100644 --- a/src/lang/faroese.txt +++ b/src/lang/faroese.txt @@ -2427,7 +2427,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ogn hjá fyrit STR_ABOUT_OPENTTD :{WHITE}Um OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Upprunalig upphavsrættindi {COPYRIGHT} 1995 Chris Sawyer, Øll rættindi umbiðin STR_ABOUT_VERSION :{BLACK}OpenTTD útgáva {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD toymi +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD toymi # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Goym spæl diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index 24cb9b697d..b53a762c9b 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -2691,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Yhtiön omistam STR_ABOUT_OPENTTD :{WHITE}Tietoja OpenTTD:stä STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Alkuperäiset oikeudet {COPYRIGHT} 1995 Chris Sawyer, kaikki oikeudet pidätetään STR_ABOUT_VERSION :{BLACK}OpenTTD-versio {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Tallenna peli diff --git a/src/lang/french.txt b/src/lang/french.txt index 9150d72ed3..2c57358046 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -2692,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terrain apparte STR_ABOUT_OPENTTD :{WHITE}À propos de OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Tous droits réservés STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 L'équipe OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 L'équipe OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sauvegarder la partie diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt index d500df2b4b..c06b81ecf7 100644 --- a/src/lang/gaelic.txt +++ b/src/lang/gaelic.txt @@ -2932,7 +2932,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Tìr a' chompan STR_ABOUT_OPENTTD :{WHITE}Mu dheidhinn OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Còir-lethbhreac tùsail {COPYRIGHT} 1995 Chris Sawyer, a h-uile còir glèidhte STR_ABOUT_VERSION :{BLACK}OpenTTD tionndadh {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 An sgioba OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 An sgioba OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sàbhail an geama diff --git a/src/lang/galician.txt b/src/lang/galician.txt index 4a17d897e7..d87aa14abe 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -2692,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreo propieda STR_ABOUT_OPENTTD :{WHITE}Acerca de OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright orixinal {COPYRIGHT} 1995 Chris Sawyer, Tódolos dereitos reservados STR_ABOUT_VERSION :{BLACK}OpenTTD versión {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 O equipo de OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 O equipo de OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gravar partida diff --git a/src/lang/german.txt b/src/lang/german.txt index f5042e8338..128c516c62 100644 --- a/src/lang/german.txt +++ b/src/lang/german.txt @@ -2692,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Firmeneigenes G STR_ABOUT_OPENTTD :{WHITE}OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Transport Tycoon-Urheberrecht {COPYRIGHT} 1995 Chris Sawyer, alle Rechte vorbehalten STR_ABOUT_VERSION :{BLACK}OpenTTD-Version {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD-Team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD-Team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spiel speichern diff --git a/src/lang/greek.txt b/src/lang/greek.txt index 686e619a70..11d5755d78 100644 --- a/src/lang/greek.txt +++ b/src/lang/greek.txt @@ -2798,7 +2798,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ιδιοκτη STR_ABOUT_OPENTTD :{WHITE}Σχετικά με το OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Αρχικά Πνευματικά Δικαιώματα {COPYRIGHT} 1995 Chris Sawyer, Όλα τα δικαιώματα διατηρούνται STR_ABOUT_VERSION :{BLACK}Έκδοση OpenTTD{REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Η ομάδα του OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Η ομάδα του OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Αποθήκευση Παιχνιδιού diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt index 8f362d3f74..90ed5ccc55 100644 --- a/src/lang/hebrew.txt +++ b/src/lang/hebrew.txt @@ -2705,7 +2705,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :שטח בבעל STR_ABOUT_OPENTTD :{WHITE}OpenTTD אודות STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}כל הזכויות שמורות , {COPYRIGHT}1995 כריס סויר - זכויות יוצרים מקוריות STR_ABOUT_VERSION :{BLACK}{REV} גירסה , OpenTTD -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}שמור משחק diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index 00a3d089b4..99dbfb82c8 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -2755,7 +2755,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Vállalat álta STR_ABOUT_OPENTTD :{WHITE}Az OpenTTD-ről STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Eredeti copyright {COPYRIGHT} 1995 Chris Sawyer, Minden jog fenntartva STR_ABOUT_VERSION :{BLACK}OpenTTD {REV} verzió -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 Az OpenTTD csapat +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 Az OpenTTD csapat # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Játék mentése diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt index 3202b99e62..77e9c09660 100644 --- a/src/lang/icelandic.txt +++ b/src/lang/icelandic.txt @@ -2536,7 +2536,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Land í eigu fy STR_ABOUT_OPENTTD :{WHITE}Um OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Upphaflegur höfundarréttur {COPYRIGHT} 1995 Chris Sawyer, Öll réttindi áskilin STR_ABOUT_VERSION :{BLACK}OpenTTD útgáfa {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 OpenTTD hópurinn +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 OpenTTD hópurinn # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Vista leik diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt index b9194ea0a7..9a371a83d5 100644 --- a/src/lang/indonesian.txt +++ b/src/lang/indonesian.txt @@ -2687,7 +2687,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Tanah milik Per STR_ABOUT_OPENTTD :{WHITE}Tentang OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Hak Cipta asli {COPYRIGHT} 1995 Chris Sawyer, Hak Cipta dilindungi STR_ABOUT_VERSION :{BLACK}OpenTTD versi {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Tim OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Tim OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Simpan Permainan diff --git a/src/lang/irish.txt b/src/lang/irish.txt index 229580074d..6c2cb21375 100644 --- a/src/lang/irish.txt +++ b/src/lang/irish.txt @@ -2687,7 +2687,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Talamh faoi úi STR_ABOUT_OPENTTD :{WHITE}Maidir le OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Cóipcheart bunaidh {COPYRIGHT} 1995 Chris Sawyer, Gach ceart ar cosaint STR_ABOUT_VERSION :{BLACK}OpenTTD leagan {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 An fhoireann OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 An fhoireann OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sábháil an Cluiche diff --git a/src/lang/italian.txt b/src/lang/italian.txt index 7b1da01230..e2d5ffa49a 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -2721,7 +2721,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreno possedu STR_ABOUT_OPENTTD :{WHITE}Informazioni su OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright originale {COPYRIGHT} 1995 Chris Sawyer, Tutti i diritti riservati STR_ABOUT_VERSION :{BLACK}OpenTTD versione {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Il team OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Il team OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salva partita diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt index 13d52cbe58..8e7f0c486d 100644 --- a/src/lang/japanese.txt +++ b/src/lang/japanese.txt @@ -2688,7 +2688,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :社有地 STR_ABOUT_OPENTTD :{WHITE}OpenTTDについて STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}オリジナル版権{COPYRIGHT} 1995 Chris Sawyer All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD バージョン {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}ゲームを保存 diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 5c0de74420..b6dc29a099 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -2692,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :회사 소유 STR_ABOUT_OPENTTD :{WHITE}OpenTTD에 대해서 STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD 버전 {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD 개발팀 +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD 개발팀 # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}게임 저장 diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt index 30f43b807a..dab5900f75 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -2628,7 +2628,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Uzņēmumam pie STR_ABOUT_OPENTTD :{WHITE}Par OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Oriģināla autortiesības {COPYRIGHT} 1995 Kriss Sojers. Visas tiesības paturētas STR_ABOUT_VERSION :{BLACK}OpenTTD versija {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD darba grupa +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD darba grupa # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Saglabāt spēli diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt index 6d6d1428b8..4d44522671 100644 --- a/src/lang/lithuanian.txt +++ b/src/lang/lithuanian.txt @@ -2906,7 +2906,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Kompanijos žem STR_ABOUT_OPENTTD :{WHITE}Apie OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Pradinės versijos teisės priklauso {COPYRIGHT} 1995 Chris Sawyer, Visos teisės saugomos STR_ABOUT_VERSION :{BLACK}OpenTTD versija {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 OpenTTD komanda +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 OpenTTD komanda # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Išsaugoti žaidimą diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt index 35ba9b4d41..38dba61000 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -2691,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Land am Firmenb STR_ABOUT_OPENTTD :{WHITE}Iwwert OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original Copyright {COPYRIGHT} 1995 Chris Sawyer, All Rechter virbehalen STR_ABOUT_VERSION :{BLACK}OpenTTD Versioun {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 D'OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 D'OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spill späicheren diff --git a/src/lang/malay.txt b/src/lang/malay.txt index d1da5f40f6..4ba83efdaa 100644 --- a/src/lang/malay.txt +++ b/src/lang/malay.txt @@ -2406,7 +2406,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Tanah dimiliki STR_ABOUT_OPENTTD :{WHITE}Tentang OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Hakcipta Asal {COPYRIGHT} 1995 Chris Sawyer, Hakcipta terpelihara STR_ABOUT_VERSION :{BLACK}OpenTTD versi {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Simpankan Permainan diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index eb5d8dbdd9..dccf73075f 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -2695,7 +2695,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Firma-eid lando STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Opprinnelig opphavsbeskyttet {COPYRIGHT} 1995 Chris Sawyer, Alle rettigheter reservert STR_ABOUT_VERSION :{BLACK}OpenTTD versjon {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD-teamet +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD-teamet # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lagre spill diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt index 516933dd7a..5e545ce290 100644 --- a/src/lang/norwegian_nynorsk.txt +++ b/src/lang/norwegian_nynorsk.txt @@ -2608,7 +2608,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Feltet eigast a STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Opphaveleg opphavsbeskytta av {COPYRIGHT} 1995 Chris Sawyer, Alle rettigheiter reservert STR_ABOUT_VERSION :{BLACK}OpenTTD versjon {REV}. Oversett til nynorsk av Thor Morten Skogrand med fleire. -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD-teamet +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD-teamet # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lagre spel diff --git a/src/lang/polish.txt b/src/lang/polish.txt index 6fcf49adeb..cc3f06cffe 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -3071,7 +3071,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Teren w posiada STR_ABOUT_OPENTTD :{WHITE}OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Prawa Autorskie {COPYRIGHT} 1995 Chris Sawyer, Wszelkie prawa zastrzeżone STR_ABOUT_VERSION :{BLACK}OpenTTD wersja {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 Zespół OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 Zespół OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Zapisz grę diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index 2f0603c443..65ad9c6661 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -2692,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreno proprie 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-2017 A equipa do OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 A equipa do OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Guardar Jogo diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt index 69b3c11a18..a2aa17927e 100644 --- a/src/lang/romanian.txt +++ b/src/lang/romanian.txt @@ -2652,7 +2652,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Teren în propr STR_ABOUT_OPENTTD :{WHITE}Despre OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Toate drepturile rezervate STR_ABOUT_VERSION :{BLACK}OpenTTD versiunea {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Echipa OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Echipa OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvează joc diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 559e47ae85..45b3be2c6d 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -2871,7 +2871,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Земля в STR_ABOUT_OPENTTD :{WHITE}Об OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Оригинальные авторские права {COPYRIGHT} 1995 Chris Sawyer. Все права защищены. STR_ABOUT_VERSION :{BLACK}OpenTTD версия {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Команда разработчиков OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Команда разработчиков OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Сохранить игру diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt index 5a81456990..155772ce5d 100644 --- a/src/lang/serbian.txt +++ b/src/lang/serbian.txt @@ -2882,7 +2882,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Zemljište u po STR_ABOUT_OPENTTD :{WHITE}O OpenTTD-u STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Originalni kopirajt {COPYRIGHT} 1995 Chris Sawyer, Sva prava zadržana STR_ABOUT_VERSION :{BLACK}OpenTTD verzija {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD tim +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD tim # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sačuvaj poziciju diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index d613ea15fe..d8e9f0c8c6 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -2688,7 +2688,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :公司属地 STR_ABOUT_OPENTTD :{WHITE}关于 OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}原始版权由 {COPYRIGHT} 1995 Chris Sawyer 所有,保留一切权力。 STR_ABOUT_VERSION :{BLACK}OpenTTD 版本 {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD 团队 +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD 团队 # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}保存游戏 diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt index eaf1b59285..4e28c45c02 100644 --- a/src/lang/slovak.txt +++ b/src/lang/slovak.txt @@ -2755,7 +2755,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Spoločnosťou STR_ABOUT_OPENTTD :{WHITE}OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Pôvodný copyright: {COPYRIGHT} 1995 Chris Sawyer, všetky práva vyhradené STR_ABOUT_VERSION :{BLACK}OpenTTD verzia {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 team OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 team OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Uložiť hru diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt index b89bb03510..5fd44b4d36 100644 --- a/src/lang/slovenian.txt +++ b/src/lang/slovenian.txt @@ -2841,7 +2841,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ozemlje v lasti STR_ABOUT_OPENTTD :{WHITE}O OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Prvotne avtorske pravice {COPYRIGHT} 1995 Chris Sawyer, vse pravice pridržane STR_ABOUT_VERSION :{BLACK}OpenTTD različica {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 ekipa OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 ekipa OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Shrani igro diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index d20ec0719c..6993b7b04b 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -2692,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreno propied STR_ABOUT_OPENTTD :{WHITE}Acerca de OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright Original {COPYRIGHT} 1995 Chris Sawyer, Todos los derechos reservados STR_ABOUT_VERSION :{BLACK}OpenTTD versión {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 El equipo OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 El equipo OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Guardar Juego diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index 0fb6815e2b..739cfa37a3 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -2692,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreno propied STR_ABOUT_OPENTTD :{WHITE}Acerca de OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Todos los derechos reservados STR_ABOUT_VERSION :{BLACK}OpenTTD versión {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017, el equipo de OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018, el equipo de OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Guardar partida diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index 1113e32358..255967c9d7 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -2691,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Mark som ägs a STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Ursprunglig upphovsrätt {COPYRIGHT} 1995 Chris Sawyer, Alla rättigheter hävdas STR_ABOUT_VERSION :{BLACK}OpenTTD-version {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD-teamet +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD-teamet # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spara spel diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt index c0df044d1f..ec3ef56fff 100644 --- a/src/lang/tamil.txt +++ b/src/lang/tamil.txt @@ -2378,7 +2378,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :நிறுவ STR_ABOUT_OPENTTD :{WHITE}OpenTTD-ஐ பற்றி STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}அசல் உரிமைகள் {COPYRIGHT} 1995 கிறிஸ் சாயர், எல்லா உரிமைகளும் பதிவுசெய்யப்பட்டது STR_ABOUT_VERSION :{BLACK}OpenTTD பதிப்பு {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD குழுமம் +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD குழுமம் # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}ஆட்டத்தை பதிவு செய் diff --git a/src/lang/thai.txt b/src/lang/thai.txt index 1d2ff09156..d939eeeeac 100644 --- a/src/lang/thai.txt +++ b/src/lang/thai.txt @@ -2635,7 +2635,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :บริษั STR_ABOUT_OPENTTD :{WHITE}เกี่ยวกับ OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}ลิขสิทธิ์เดิม {COPYRIGHT} ค.ศ.1995 ของ Chris Sawyer, สงวนลิขสิทธิ์ STR_ABOUT_VERSION :{BLACK}OpenTTD รุ่นที่ {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}ลิขสิทธิ์ OpenTTD {COPYRIGHT}2002-2017 ของ The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}ลิขสิทธิ์ OpenTTD {COPYRIGHT}2002-2018 ของ The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}บันทึกเกม diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt index 7346889e4a..7ce922edc1 100644 --- a/src/lang/traditional_chinese.txt +++ b/src/lang/traditional_chinese.txt @@ -2687,7 +2687,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :公司所有土 STR_ABOUT_OPENTTD :{WHITE}關於 OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}原著作權為 {COPYRIGHT} 1995 Chris Sawyer,保留所有權利 STR_ABOUT_VERSION :{BLACK}OpenTTD 版本 {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD 開發小組 +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD 開發小組 # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}儲存遊戲 diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt index 763eb16f6d..763fb2a65a 100644 --- a/src/lang/turkish.txt +++ b/src/lang/turkish.txt @@ -2692,7 +2692,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Satın alınmı STR_ABOUT_OPENTTD :{WHITE}OpenTTD Hakkında STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Telif hakkı {COPYRIGHT} 1995 Chris Sawyer, Her hakkı saklıdır STR_ABOUT_VERSION :{BLACK}OpenTTD sürüm {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD ekibi +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD ekibi # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Oyunu Kaydet diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index 1b3e3a42bb..dbb815d2dc 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -2818,7 +2818,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ця ділян STR_ABOUT_OPENTTD :{WHITE}Про OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Авторське право {COPYRIGHT} 1995 Кріс Сойєр, Всі права захищені STR_ABOUT_VERSION :{BLACK}OpenTTD версія {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 команда OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 команда OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Зберегти гру diff --git a/src/lang/unfinished/frisian.txt b/src/lang/unfinished/frisian.txt index 2b0b989323..051b62c843 100644 --- a/src/lang/unfinished/frisian.txt +++ b/src/lang/unfinished/frisian.txt @@ -2475,7 +2475,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Lân fan bedriu STR_ABOUT_OPENTTD :{WHITE}Oer OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Orizjineel copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD-ferzje {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 It OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 It OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spul Opslaan diff --git a/src/lang/unfinished/ido.txt b/src/lang/unfinished/ido.txt index ff0ad37f4e..4f4d4846ff 100644 --- a/src/lang/unfinished/ido.txt +++ b/src/lang/unfinished/ido.txt @@ -776,7 +776,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Stabeyo di komp # About OpenTTD window STR_ABOUT_VERSION :{BLACK}OpenTTD versiono {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 La kruo OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 La kruo OpenTTD # Save/load game/scenario STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Ludo Detali diff --git a/src/lang/unfinished/macedonian.txt b/src/lang/unfinished/macedonian.txt index f3b4cbaaec..6a0157c5a8 100644 --- a/src/lang/unfinished/macedonian.txt +++ b/src/lang/unfinished/macedonian.txt @@ -1202,7 +1202,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Компани STR_ABOUT_OPENTTD :{WHITE}За OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Оригинален copyright {COPYRIGHT} 1995 Chris Sawyer, Сите права се задржани STR_ABOUT_VERSION :{BLACK}OpenTTD верзија {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 OpenTTD тимот +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 OpenTTD тимот # Save/load game/scenario STR_SAVELOAD_LOAD_BUTTON :{BLACK}Оптоварување diff --git a/src/lang/unfinished/persian.txt b/src/lang/unfinished/persian.txt index 14a70bab4e..9701899630 100644 --- a/src/lang/unfinished/persian.txt +++ b/src/lang/unfinished/persian.txt @@ -2389,7 +2389,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :زمین خری STR_ABOUT_OPENTTD :{WHITE}OpenTTD در باره ی STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD ویرایش {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 The OpenTTD team +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 The OpenTTD team # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}ذخیره ی بازی diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index 38fcf09edc..19fbce1cfd 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -2691,7 +2691,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Đất công ty STR_ABOUT_OPENTTD :{WHITE}Về OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Nguyên tác bản quyền {COPYRIGHT} 1995 Chris Sawyer, All rights reserved STR_ABOUT_VERSION :{BLACK}OpenTTD phiên bản {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Nhóm OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Nhóm OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lưu Ván Chơi diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt index 4519d0e919..35027d48fc 100644 --- a/src/lang/welsh.txt +++ b/src/lang/welsh.txt @@ -2688,7 +2688,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Tir cwmni STR_ABOUT_OPENTTD :{WHITE}Gwybodaeth am OpenTTD STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Hawlfraint Wreiddiol {COPYRIGHT} 1995 Chris Sawyer, Holl cedwir pob hawl STR_ABOUT_VERSION :{BLACK}fersiwn OpenTTD {REV} -STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 Y tîm OpenTTD +STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 Y tîm OpenTTD # Save/load game/scenario STR_SAVELOAD_SAVE_CAPTION :{WHITE}Cadw Gêm diff --git a/src/os/windows/ottdres.rc.in b/src/os/windows/ottdres.rc.in index fca129c6a6..b96b0faa9f 100644 --- a/src/os/windows/ottdres.rc.in +++ b/src/os/windows/ottdres.rc.in @@ -100,7 +100,7 @@ BEGIN VALUE "FileDescription", "OpenTTD\0" VALUE "FileVersion", "!!VERSION!!\0" VALUE "InternalName", "openttd\0" - VALUE "LegalCopyright", "Copyright \xA9 OpenTTD Developers 2002-2017. All Rights Reserved.\0" + VALUE "LegalCopyright", "Copyright \xA9 OpenTTD Developers 2002-2018. All Rights Reserved.\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "openttd.exe\0" VALUE "PrivateBuild", "\0" From 8f47687b84838c3a34a08c3381aca2585a688b8f Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 11 Mar 2018 12:46:05 +0000 Subject: [PATCH 13/21] (svn r27981) -Change [FS#6679]: Check companies for bankruptcy before subtracting reoccuring monthly costs. (Samu) --- src/economy.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/economy.cpp b/src/economy.cpp index 0106e87e14..e97f61d6e9 100644 --- a/src/economy.cpp +++ b/src/economy.cpp @@ -654,12 +654,16 @@ static void CompanyCheckBankrupt(Company *c) */ static void CompaniesGenStatistics() { - Station *st; + /* Check for bankruptcy each month */ + Company *c; + FOR_ALL_COMPANIES(c) { + CompanyCheckBankrupt(c); + } Backup cur_company(_current_company, FILE_LINE); - Company *c; if (!_settings_game.economy.infrastructure_maintenance) { + Station *st; FOR_ALL_STATIONS(st) { cur_company.Change(st->owner); CommandCost cost(EXPENSES_PROPERTY, _price[PR_STATION_VALUE] >> 1); @@ -688,11 +692,6 @@ static void CompaniesGenStatistics() } cur_company.Restore(); - /* Check for bankruptcy each month */ - FOR_ALL_COMPANIES(c) { - CompanyCheckBankrupt(c); - } - /* Only run the economic statics and update company stats every 3rd month (1st of quarter). */ if (!HasBit(1 << 0 | 1 << 3 | 1 << 6 | 1 << 9, _cur_month)) return; From aee8ffc73be6a437f05008cf3658317b3b70a601 Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 11 Mar 2018 13:17:44 +0000 Subject: [PATCH 14/21] (svn r27982) -Codechange: Reduce invocations of GetGlobalVariable. Speedup sprite resolving by about 3 percent. --- src/newgrf_spritegroup.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/newgrf_spritegroup.cpp b/src/newgrf_spritegroup.cpp index a838a1388d..96ebdf093d 100644 --- a/src/newgrf_spritegroup.cpp +++ b/src/newgrf_spritegroup.cpp @@ -60,11 +60,7 @@ RandomizedSpriteGroup::~RandomizedSpriteGroup() static inline uint32 GetVariable(const ResolverObject &object, ScopeResolver *scope, byte variable, uint32 parameter, bool *available) { - /* First handle variables common with Action7/9/D */ uint32 value; - if (GetGlobalVariable(variable, &value, object.grffile)) return value; - - /* Non-common variable */ switch (variable) { case 0x0C: return object.callback; case 0x10: return object.callback_param1; @@ -79,8 +75,11 @@ static inline uint32 GetVariable(const ResolverObject &object, ScopeResolver *sc if (object.grffile == NULL) return 0; return object.grffile->GetParam(parameter); - /* Not a common variable, so evaluate the feature specific variables */ - default: return scope->GetVariable(variable, parameter, available); + default: + /* First handle variables common with Action7/9/D */ + if (variable < 0x40 && GetGlobalVariable(variable, &value, object.grffile)) return value; + /* Not a common variable, so evaluate the feature specific variables */ + return scope->GetVariable(variable, parameter, available); } } From 2a3d0cea500026950abbd3713c2458b9dd878864 Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 11 Mar 2018 13:18:13 +0000 Subject: [PATCH 15/21] (svn r27983) -Codechange: Reduce complexity of VA2 add-div/mod adjustments --- src/newgrf_spritegroup.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/newgrf_spritegroup.cpp b/src/newgrf_spritegroup.cpp index 96ebdf093d..5a53e3b6a8 100644 --- a/src/newgrf_spritegroup.cpp +++ b/src/newgrf_spritegroup.cpp @@ -194,11 +194,9 @@ static U EvalAdjustT(const DeterministicSpriteGroupAdjust *adjust, ScopeResolver value >>= adjust->shift_num; value &= adjust->and_mask; - if (adjust->type != DSGA_TYPE_NONE) value += (S)adjust->add_val; - switch (adjust->type) { - case DSGA_TYPE_DIV: value = (S)value / (S)adjust->divmod_val; break; - case DSGA_TYPE_MOD: value = (S)value % (S)adjust->divmod_val; break; + case DSGA_TYPE_DIV: value = ((S)value + (S)adjust->add_val) / (S)adjust->divmod_val; break; + case DSGA_TYPE_MOD: value = ((S)value + (S)adjust->add_val) % (S)adjust->divmod_val; break; case DSGA_TYPE_NONE: break; } From 29dca1be3b3902568cbd83c90b560b98441f244d Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 11 Mar 2018 13:19:41 +0000 Subject: [PATCH 16/21] (svn r27984) -Codechange: Make ScopeResolver constructors/destructors inlineable. Speedup sprite resolving by about 8 percent. --- src/newgrf_airport.cpp | 29 ++++++++++++----------------- src/newgrf_airporttiles.cpp | 15 --------------- src/newgrf_airporttiles.h | 14 +++++++++++++- src/newgrf_canal.cpp | 10 ++++------ src/newgrf_engine.cpp | 15 --------------- src/newgrf_engine.h | 12 +++++++++++- src/newgrf_generic.cpp | 29 ++++++++++------------------- src/newgrf_house.cpp | 22 ---------------------- src/newgrf_house.h | 16 +++++++++++++++- src/newgrf_industries.cpp | 17 ----------------- src/newgrf_industries.h | 13 ++++++++++++- src/newgrf_industrytiles.cpp | 12 ------------ src/newgrf_industrytiles.h | 11 ++++++++++- src/newgrf_object.cpp | 15 --------------- src/newgrf_object.h | 12 +++++++++++- src/newgrf_railtype.cpp | 12 ------------ src/newgrf_railtype.h | 11 ++++++++++- src/newgrf_spritegroup.cpp | 28 ---------------------------- src/newgrf_spritegroup.h | 20 ++++++++++++++++---- src/newgrf_station.cpp | 17 ----------------- src/newgrf_station.h | 12 +++++++++++- src/newgrf_town.cpp | 12 ------------ src/newgrf_town.h | 11 ++++++++++- 23 files changed, 145 insertions(+), 220 deletions(-) diff --git a/src/newgrf_airport.cpp b/src/newgrf_airport.cpp index 6db12f7373..0863d09861 100644 --- a/src/newgrf_airport.cpp +++ b/src/newgrf_airport.cpp @@ -26,7 +26,18 @@ struct AirportScopeResolver : public ScopeResolver { byte layout; ///< Layout of the airport to build. TileIndex tile; ///< Tile for the callback, only valid for airporttile callbacks. - AirportScopeResolver(ResolverObject &ro, TileIndex tile, Station *st, byte airport_id, byte layout); + /** + * Constructor of the scope resolver for an airport. + * @param ro Surrounding resolver. + * @param tile %Tile for the callback, only valid for airporttile callbacks. + * @param st %Station of the airport for which the callback is run, or \c NULL for build gui. + * @param airport_id Type of airport for which the callback is run. + * @param layout Layout of the airport to build. + */ + AirportScopeResolver(ResolverObject &ro, TileIndex tile, Station *st, byte airport_id, byte layout) + : ScopeResolver(ro), st(st), airport_id(airport_id), layout(layout), tile(tile) + { + } /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; @@ -242,22 +253,6 @@ AirportResolverObject::AirportResolverObject(TileIndex tile, Station *st, byte a this->root_spritegroup = AirportSpec::Get(airport_id)->grf_prop.spritegroup[0]; } -/** - * Constructor of the scope resolver for an airport. - * @param ro Surrounding resolver. - * @param tile %Tile for the callback, only valid for airporttile callbacks. - * @param st %Station of the airport for which the callback is run, or \c NULL for build gui. - * @param airport_id Type of airport for which the callback is run. - * @param layout Layout of the airport to build. - */ -AirportScopeResolver::AirportScopeResolver(ResolverObject &ro, TileIndex tile, Station *st, byte airport_id, byte layout) : ScopeResolver(ro) -{ - this->st = st; - this->airport_id = airport_id; - this->layout = layout; - this->tile = tile; -} - SpriteID GetCustomAirportSprite(const AirportSpec *as, byte layout) { AirportResolverObject object(INVALID_TILE, NULL, as->GetIndex(), layout); diff --git a/src/newgrf_airporttiles.cpp b/src/newgrf_airporttiles.cpp index 5eb24f670f..2d3a5129c9 100644 --- a/src/newgrf_airporttiles.cpp +++ b/src/newgrf_airporttiles.cpp @@ -222,21 +222,6 @@ AirportTileResolverObject::AirportTileResolverObject(const AirportTileSpec *ats, this->root_spritegroup = ats->grf_prop.spritegroup[0]; } -/** - * Constructor of the scope resolver specific for airport tiles. - * @param ats Specification of the airport tiles. - * @param tile %Tile for the callback, only valid for airporttile callbacks. - * @param st Station of the airport for which the callback is run, or \c NULL for build gui. - */ -AirportTileScopeResolver::AirportTileScopeResolver(ResolverObject &ro, const AirportTileSpec *ats, TileIndex tile, Station *st) : ScopeResolver(ro) -{ - assert(st != NULL); - - this->st = st; - this->airport_id = st->airport.type; - this->tile = tile; -} - uint16 GetAirportTileCallback(CallbackID callback, uint32 param1, uint32 param2, const AirportTileSpec *ats, Station *st, TileIndex tile, int extra_data = 0) { AirportTileResolverObject object(ats, tile, st, callback, param1, param2); diff --git a/src/newgrf_airporttiles.h b/src/newgrf_airporttiles.h index 4d25aa9240..dc04642037 100644 --- a/src/newgrf_airporttiles.h +++ b/src/newgrf_airporttiles.h @@ -17,6 +17,7 @@ #include "newgrf_animation_type.h" #include "newgrf_commons.h" #include "newgrf_spritegroup.h" +#include "station_base.h" /** Scope resolver for handling the tiles of an airport. */ struct AirportTileScopeResolver : public ScopeResolver { @@ -24,7 +25,18 @@ struct AirportTileScopeResolver : public ScopeResolver { byte airport_id; ///< Type of airport for which the callback is run. TileIndex tile; ///< Tile for the callback, only valid for airporttile callbacks. - AirportTileScopeResolver(ResolverObject &ro, const AirportTileSpec *ats, TileIndex tile, Station *st); + /** + * Constructor of the scope resolver specific for airport tiles. + * @param ats Specification of the airport tiles. + * @param tile %Tile for the callback, only valid for airporttile callbacks. + * @param st Station of the airport for which the callback is run, or \c NULL for build gui. + */ + AirportTileScopeResolver(ResolverObject &ro, const AirportTileSpec *ats, TileIndex tile, Station *st) + : ScopeResolver(ro), st(st), tile(tile) + { + assert(st != NULL); + this->airport_id = st->airport.type; + } /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; diff --git a/src/newgrf_canal.cpp b/src/newgrf_canal.cpp index cba19cbdba..3438bb9850 100644 --- a/src/newgrf_canal.cpp +++ b/src/newgrf_canal.cpp @@ -25,7 +25,10 @@ WaterFeature _water_feature[CF_END]; struct CanalScopeResolver : public ScopeResolver { TileIndex tile; ///< Tile containing the canal. - CanalScopeResolver(ResolverObject &ro, TileIndex tile); + CanalScopeResolver(ResolverObject &ro, TileIndex tile) + : ScopeResolver(ro), tile(tile) + { + } /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; @@ -110,11 +113,6 @@ struct CanalResolverObject : public ResolverObject { return group->loaded[0]; } -CanalScopeResolver::CanalScopeResolver(ResolverObject &ro, TileIndex tile) : ScopeResolver(ro) -{ - this->tile = tile; -} - /** * Canal resolver constructor. * @param feature Which canal feature we want. diff --git a/src/newgrf_engine.cpp b/src/newgrf_engine.cpp index 94c8df1d13..660b7e476b 100644 --- a/src/newgrf_engine.cpp +++ b/src/newgrf_engine.cpp @@ -937,21 +937,6 @@ static uint32 VehicleGetVariable(Vehicle *v, const VehicleScopeResolver *object, return in_motion ? group->loaded[set] : group->loading[set]; } -/** - * Scope resolver of a single vehicle. - * @param ro Surrounding resolver. - * @param engine_type Engine type - * @param v %Vehicle being resolved. - * @param info_view Indicates if the item is being drawn in an info window. - */ -VehicleScopeResolver::VehicleScopeResolver(ResolverObject &ro, EngineID engine_type, const Vehicle *v, bool info_view) - : ScopeResolver(ro) -{ - this->v = v; - this->self_type = engine_type; - this->info_view = info_view; -} - /** * Get the grf file associated with an engine type. * @param engine_type Engine to query. diff --git a/src/newgrf_engine.h b/src/newgrf_engine.h index 6406b0f4e3..51adb0b7fb 100644 --- a/src/newgrf_engine.h +++ b/src/newgrf_engine.h @@ -26,7 +26,17 @@ struct VehicleScopeResolver : public ScopeResolver { EngineID self_type; ///< Type of the vehicle. bool info_view; ///< Indicates if the item is being drawn in an info window. - VehicleScopeResolver(ResolverObject &ro, EngineID engine_type, const Vehicle *v, bool info_view); + /** + * Scope resolver of a single vehicle. + * @param ro Surrounding resolver. + * @param engine_type Engine type + * @param v %Vehicle being resolved. + * @param info_view Indicates if the item is being drawn in an info window. + */ + VehicleScopeResolver(ResolverObject &ro, EngineID engine_type, const Vehicle *v, bool info_view) + : ScopeResolver(ro), v(v), self_type(engine_type), info_view(info_view) + { + } void SetVehicle(const Vehicle *v) { this->v = v; } diff --git a/src/newgrf_generic.cpp b/src/newgrf_generic.cpp index 9bd77239aa..6606422154 100644 --- a/src/newgrf_generic.cpp +++ b/src/newgrf_generic.cpp @@ -31,7 +31,16 @@ struct GenericScopeResolver : public ScopeResolver { uint8 count; uint8 station_size; - GenericScopeResolver(ResolverObject &ro, bool ai_callback); + /** + * Generic scope resolver. + * @param ro Surrounding resolver. + * @param ai_callback Callback comes from the AI. + */ + GenericScopeResolver(ResolverObject &ro, bool ai_callback) + : ScopeResolver(ro), cargo_type(0), default_selection(0), src_industry(0), dst_industry(0), distance(0), + event(), count(0), station_size(0), ai_callback(ai_callback) + { + } /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; @@ -145,24 +154,6 @@ GenericResolverObject::GenericResolverObject(bool ai_callback, CallbackID callba { } -/** - * Generic scope resolver. - * @param ro Surrounding resolver. - * @param ai_callback Callback comes from the AI. - */ -GenericScopeResolver::GenericScopeResolver(ResolverObject &ro, bool ai_callback) : ScopeResolver(ro) -{ - this->cargo_type = 0; - this->default_selection = 0; - this->src_industry = 0; - this->dst_industry = 0; - this->distance = 0; - this->event = (AIConstructionEvent)0; - this->count = 0; - this->station_size = 0; - this->ai_callback = ai_callback; -} - /** * Follow a generic feature callback list and return the first successful diff --git a/src/newgrf_house.cpp b/src/newgrf_house.cpp index bcd83f2f19..ebdd858a4d 100644 --- a/src/newgrf_house.cpp +++ b/src/newgrf_house.cpp @@ -31,28 +31,6 @@ static HouseClassMapping _class_mapping[HOUSE_CLASS_MAX]; HouseOverrideManager _house_mngr(NEW_HOUSE_OFFSET, NUM_HOUSES, INVALID_HOUSE_ID); -/** - * Constructor of a house scope resolver. - * @param ro Surrounding resolver. - * @param house_id House type being queried. - * @param tile %Tile containing the house. - * @param town %Town containing the house. - * @param not_yet_constructed House is still under construction. - * @param initial_random_bits Random bits during construction checks. - * @param watched_cargo_triggers Cargo types that triggered the watched cargo callback. - */ -HouseScopeResolver::HouseScopeResolver(ResolverObject &ro, HouseID house_id, TileIndex tile, Town *town, - bool not_yet_constructed, uint8 initial_random_bits, uint32 watched_cargo_triggers) - : ScopeResolver(ro) -{ - this->house_id = house_id; - this->tile = tile; - this->town = town; - this->not_yet_constructed = not_yet_constructed; - this->initial_random_bits = initial_random_bits; - this->watched_cargo_triggers = watched_cargo_triggers; -} - /** * Retrieve the grf file associated with a house. * @param house_id House to query. diff --git a/src/newgrf_house.h b/src/newgrf_house.h index efc0c6cbb3..0ac868d1e7 100644 --- a/src/newgrf_house.h +++ b/src/newgrf_house.h @@ -27,8 +27,22 @@ struct HouseScopeResolver : public ScopeResolver { uint16 initial_random_bits; ///< Random bits during construction checks. uint32 watched_cargo_triggers; ///< Cargo types that triggered the watched cargo callback. + /** + * Constructor of a house scope resolver. + * @param ro Surrounding resolver. + * @param house_id House type being queried. + * @param tile %Tile containing the house. + * @param town %Town containing the house. + * @param not_yet_constructed House is still under construction. + * @param initial_random_bits Random bits during construction checks. + * @param watched_cargo_triggers Cargo types that triggered the watched cargo callback. + */ HouseScopeResolver(ResolverObject &ro, HouseID house_id, TileIndex tile, Town *town, - bool not_yet_constructed, uint8 initial_random_bits, uint32 watched_cargo_triggers); + bool not_yet_constructed, uint8 initial_random_bits, uint32 watched_cargo_triggers) + : ScopeResolver(ro), house_id(house_id), tile(tile), town(town), not_yet_constructed(not_yet_constructed), + initial_random_bits(initial_random_bits), watched_cargo_triggers(watched_cargo_triggers) + { + } /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; diff --git a/src/newgrf_industries.cpp b/src/newgrf_industries.cpp index 9f227a9f58..7815ba36af 100644 --- a/src/newgrf_industries.cpp +++ b/src/newgrf_industries.cpp @@ -457,23 +457,6 @@ TownScopeResolver *IndustriesResolverObject::GetTown() return this->town_scope; } -/** - * Scope resolver for industries. - * @param ro Surrounding resolver. - * @param tile %Tile owned by the industry. - * @param industry %Industry being resolved. - * @param type Type of the industry. - * @param random_bits Random bits of the new industry. - */ -IndustriesScopeResolver::IndustriesScopeResolver(ResolverObject &ro, TileIndex tile, Industry *industry, IndustryType type, uint32 random_bits) - : ScopeResolver(ro) -{ - this->tile = tile; - this->industry = industry; - this->type = type; - this->random_bits = random_bits; -} - /** * Perform an industry callback. * @param callback The callback to perform. diff --git a/src/newgrf_industries.h b/src/newgrf_industries.h index 45b0333a67..fa809fcd73 100644 --- a/src/newgrf_industries.h +++ b/src/newgrf_industries.h @@ -21,7 +21,18 @@ struct IndustriesScopeResolver : public ScopeResolver { IndustryType type; ///< Type of the industry. uint32 random_bits; ///< Random bits of the new industry. - IndustriesScopeResolver(ResolverObject &ro, TileIndex tile, Industry *industry, IndustryType type, uint32 random_bits = 0); + /** + * Scope resolver for industries. + * @param ro Surrounding resolver. + * @param tile %Tile owned by the industry. + * @param industry %Industry being resolved. + * @param type Type of the industry. + * @param random_bits Random bits of the new industry. + */ + IndustriesScopeResolver(ResolverObject &ro, TileIndex tile, Industry *industry, IndustryType type, uint32 random_bits = 0) + : ScopeResolver(ro), tile(tile), industry(industry), type(type), random_bits(random_bits) + { + } /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; diff --git a/src/newgrf_industrytiles.cpp b/src/newgrf_industrytiles.cpp index b4b8f77c43..69c4b1d07d 100644 --- a/src/newgrf_industrytiles.cpp +++ b/src/newgrf_industrytiles.cpp @@ -146,18 +146,6 @@ IndustryTileResolverObject::IndustryTileResolverObject(IndustryGfx gfx, TileInde this->root_spritegroup = GetIndustryTileSpec(gfx)->grf_prop.spritegroup[0]; } -/** - * Constructor of the scope resolver for the industry tile. - * @param ro Surrounding resolver. - * @param industry %Industry owning the tile. - * @param tile %Tile of the industry. - */ -IndustryTileScopeResolver::IndustryTileScopeResolver(ResolverObject &ro, Industry *industry, TileIndex tile) : ScopeResolver(ro) -{ - this->industry = industry; - this->tile = tile; -} - static void IndustryDrawTileLayout(const TileInfo *ti, const TileLayoutSpriteGroup *group, byte rnd_colour, byte stage, IndustryGfx gfx) { const DrawTileSprites *dts = group->ProcessRegisters(&stage); diff --git a/src/newgrf_industrytiles.h b/src/newgrf_industrytiles.h index 2af064054d..6051c1062b 100644 --- a/src/newgrf_industrytiles.h +++ b/src/newgrf_industrytiles.h @@ -21,7 +21,16 @@ struct IndustryTileScopeResolver : public ScopeResolver { Industry *industry; ///< Industry owning the tiles. TileIndex tile; ///< %Tile being resolved. - IndustryTileScopeResolver(ResolverObject &ro, Industry *industry, TileIndex tile); + /** + * Constructor of the scope resolver for the industry tile. + * @param ro Surrounding resolver. + * @param industry %Industry owning the tile. + * @param tile %Tile of the industry. + */ + IndustryTileScopeResolver(ResolverObject &ro, Industry *industry, TileIndex tile) + : ScopeResolver(ro), industry(industry), tile(tile) + { + } /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; diff --git a/src/newgrf_object.cpp b/src/newgrf_object.cpp index 058d5e0c00..78bbc52443 100644 --- a/src/newgrf_object.cpp +++ b/src/newgrf_object.cpp @@ -128,21 +128,6 @@ bool NewGRFClass::IsUIAvailable(uint index) const INSTANTIATE_NEWGRF_CLASS_METHODS(ObjectClass, ObjectSpec, ObjectClassID, OBJECT_CLASS_MAX) -/** - * Constructor of an object scope resolver. - * @param ro Surrounding resolver. - * @param obj Object being resolved. - * @param tile %Tile of the object. - * @param view View of the object. - */ -ObjectScopeResolver::ObjectScopeResolver(ResolverObject &ro, Object *obj, TileIndex tile, uint8 view) - : ScopeResolver(ro) -{ - this->obj = obj; - this->tile = tile; - this->view = view; -} - /* virtual */ uint32 ObjectScopeResolver::GetRandomBits() const { return IsValidTile(this->tile) && IsTileType(this->tile, MP_OBJECT) ? GetObjectRandomBits(this->tile) : 0; diff --git a/src/newgrf_object.h b/src/newgrf_object.h index cbd06b6f6d..69e1a3299c 100644 --- a/src/newgrf_object.h +++ b/src/newgrf_object.h @@ -104,7 +104,17 @@ struct ObjectScopeResolver : public ScopeResolver { TileIndex tile; ///< The tile related to the object. uint8 view; ///< The view of the object. - ObjectScopeResolver(ResolverObject &ro, Object *obj, TileIndex tile, uint8 view = 0); + /** + * Constructor of an object scope resolver. + * @param ro Surrounding resolver. + * @param obj Object being resolved. + * @param tile %Tile of the object. + * @param view View of the object. + */ + ObjectScopeResolver(ResolverObject &ro, Object *obj, TileIndex tile, uint8 view = 0) + : ScopeResolver(ro), obj(obj), tile(tile), view(view) + { + } /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; diff --git a/src/newgrf_railtype.cpp b/src/newgrf_railtype.cpp index 8a074db974..624b0eca84 100644 --- a/src/newgrf_railtype.cpp +++ b/src/newgrf_railtype.cpp @@ -67,18 +67,6 @@ return NULL; } -/** - * Constructor of the railtype scope resolvers. - * @param ro Surrounding resolver. - * @param tile %Tile containing the track. For track on a bridge this is the southern bridgehead. - * @param context Are we resolving sprites for the upper halftile, or on a bridge? - */ -RailTypeScopeResolver::RailTypeScopeResolver(ResolverObject &ro, TileIndex tile, TileContext context) : ScopeResolver(ro) -{ - this->tile = tile; - this->context = context; -} - /** * Resolver object for rail types. * @param rti Railtype. NULL in NewGRF Inspect window. diff --git a/src/newgrf_railtype.h b/src/newgrf_railtype.h index 4c68e7d1db..5fadcd2ab5 100644 --- a/src/newgrf_railtype.h +++ b/src/newgrf_railtype.h @@ -21,7 +21,16 @@ struct RailTypeScopeResolver : public ScopeResolver { TileIndex tile; ///< Tracktile. For track on a bridge this is the southern bridgehead. TileContext context; ///< Are we resolving sprites for the upper halftile, or on a bridge? - RailTypeScopeResolver(ResolverObject &ro, TileIndex tile, TileContext context); + /** + * Constructor of the railtype scope resolvers. + * @param ro Surrounding resolver. + * @param tile %Tile containing the track. For track on a bridge this is the southern bridgehead. + * @param context Are we resolving sprites for the upper halftile, or on a bridge? + */ + RailTypeScopeResolver(ResolverObject &ro, TileIndex tile, TileContext context) + : ScopeResolver(ro), tile(tile), context(context) + { + } /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; diff --git a/src/newgrf_spritegroup.cpp b/src/newgrf_spritegroup.cpp index 5a53e3b6a8..cb70a88bf7 100644 --- a/src/newgrf_spritegroup.cpp +++ b/src/newgrf_spritegroup.cpp @@ -83,13 +83,6 @@ static inline uint32 GetVariable(const ResolverObject &object, ScopeResolver *sc } } -ScopeResolver::ScopeResolver(ResolverObject &ro) - : ro(ro) -{ -} - -ScopeResolver::~ScopeResolver() {} - /** * Get a few random bits. Default implementation has no random bits. * @return Random bits. @@ -129,27 +122,6 @@ ScopeResolver::~ScopeResolver() {} */ /* virtual */ void ScopeResolver::StorePSA(uint reg, int32 value) {} -/** - * Resolver constructor. - * @param grffile NewGRF file associated with the object (or \c NULL if none). - * @param callback Callback code being resolved (default value is #CBID_NO_CALLBACK). - * @param callback_param1 First parameter (var 10) of the callback (only used when \a callback is also set). - * @param callback_param2 Second parameter (var 18) of the callback (only used when \a callback is also set). - */ -ResolverObject::ResolverObject(const GRFFile *grffile, CallbackID callback, uint32 callback_param1, uint32 callback_param2) - : default_scope(*this) -{ - this->callback = callback; - this->callback_param1 = callback_param1; - this->callback_param2 = callback_param2; - this->ResetState(); - - this->grffile = grffile; - this->root_spritegroup = NULL; -} - -ResolverObject::~ResolverObject() {} - /** * Get the real sprites of the grf. * @param group Group to get. diff --git a/src/newgrf_spritegroup.h b/src/newgrf_spritegroup.h index a0ae6ce511..4d290b1377 100644 --- a/src/newgrf_spritegroup.h +++ b/src/newgrf_spritegroup.h @@ -288,8 +288,8 @@ struct IndustryProductionSpriteGroup : SpriteGroup { struct ScopeResolver { ResolverObject &ro; ///< Surrounding resolver object. - ScopeResolver(ResolverObject &ro); - virtual ~ScopeResolver(); + ScopeResolver(ResolverObject &ro) : ro(ro) {} + virtual ~ScopeResolver() {} virtual uint32 GetRandomBits() const; virtual uint32 GetTriggers() const; @@ -305,8 +305,20 @@ struct ScopeResolver { * to get the results of callbacks, rerandomisations or normal sprite lookups. */ struct ResolverObject { - ResolverObject(const GRFFile *grffile, CallbackID callback = CBID_NO_CALLBACK, uint32 callback_param1 = 0, uint32 callback_param2 = 0); - virtual ~ResolverObject(); + /** + * Resolver constructor. + * @param grffile NewGRF file associated with the object (or \c NULL if none). + * @param callback Callback code being resolved (default value is #CBID_NO_CALLBACK). + * @param callback_param1 First parameter (var 10) of the callback (only used when \a callback is also set). + * @param callback_param2 Second parameter (var 18) of the callback (only used when \a callback is also set). + */ + ResolverObject(const GRFFile *grffile, CallbackID callback = CBID_NO_CALLBACK, uint32 callback_param1 = 0, uint32 callback_param2 = 0) + : default_scope(*this), callback(callback), callback_param1(callback_param1), callback_param2(callback_param2), grffile(grffile), root_spritegroup(NULL) + { + this->ResetState(); + } + + virtual ~ResolverObject() {} ScopeResolver default_scope; ///< Default implementation of the grf scope. diff --git a/src/newgrf_station.cpp b/src/newgrf_station.cpp index 091182185e..41ef7af75c 100644 --- a/src/newgrf_station.cpp +++ b/src/newgrf_station.cpp @@ -578,23 +578,6 @@ StationResolverObject::~StationResolverObject() delete this->town_scope; } -/** - * Constructor for station scopes. - * @param ro Surrounding resolver. - * @param statspec Station (type) specification. - * @param st Instance of the station. - * @param tile %Tile of the station. - */ -StationScopeResolver::StationScopeResolver(ResolverObject &ro, const StationSpec *statspec, BaseStation *st, TileIndex tile) - : ScopeResolver(ro) -{ - this->tile = tile; - this->st = st; - this->statspec = statspec; - this->cargo_type = CT_INVALID; - this->axis = INVALID_AXIS; -} - /** * Resolve sprites for drawing a station tile. * @param statspec Station spec diff --git a/src/newgrf_station.h b/src/newgrf_station.h index f6a39efb15..5413a4c08f 100644 --- a/src/newgrf_station.h +++ b/src/newgrf_station.h @@ -30,7 +30,17 @@ struct StationScopeResolver : public ScopeResolver { CargoID cargo_type; ///< Type of cargo of the station. Axis axis; ///< Station axis, used only for the slope check callback. - StationScopeResolver(ResolverObject &ro, const StationSpec *statspec, BaseStation *st, TileIndex tile); + /** + * Constructor for station scopes. + * @param ro Surrounding resolver. + * @param statspec Station (type) specification. + * @param st Instance of the station. + * @param tile %Tile of the station. + */ + StationScopeResolver(ResolverObject &ro, const StationSpec *statspec, BaseStation *st, TileIndex tile) + : ScopeResolver(ro), tile(tile), st(st), statspec(statspec), cargo_type(CT_INVALID), axis(INVALID_AXIS) + { + } /* virtual */ uint32 GetRandomBits() const; /* virtual */ uint32 GetTriggers() const; diff --git a/src/newgrf_town.cpp b/src/newgrf_town.cpp index 2f48eb757d..820e2be689 100644 --- a/src/newgrf_town.cpp +++ b/src/newgrf_town.cpp @@ -16,18 +16,6 @@ #include "safeguards.h" -/** - * Resolver of a town scope. - * @param ro Surrounding resolver. - * @param t %Town of the scope. - * @param readonly Scope may change persistent storage of the town. - */ -TownScopeResolver::TownScopeResolver(ResolverObject &ro, Town *t, bool readonly) : ScopeResolver(ro) -{ - this->t = t; - this->readonly = readonly; -} - /* virtual */ uint32 TownScopeResolver::GetVariable(byte variable, uint32 parameter, bool *available) const { switch (variable) { diff --git a/src/newgrf_town.h b/src/newgrf_town.h index 145571e8ae..7c4fb5395c 100644 --- a/src/newgrf_town.h +++ b/src/newgrf_town.h @@ -25,7 +25,16 @@ struct TownScopeResolver : public ScopeResolver { Town *t; ///< %Town of the scope. bool readonly; ///< When set, persistent storage of the town is read-only, - TownScopeResolver(ResolverObject &ro, Town *t, bool readonly); + /** + * Resolver of a town scope. + * @param ro Surrounding resolver. + * @param t %Town of the scope. + * @param readonly Scope may change persistent storage of the town. + */ + TownScopeResolver(ResolverObject &ro, Town *t, bool readonly) + : ScopeResolver(ro), t(t), readonly(readonly) + { + } virtual uint32 GetVariable(byte variable, uint32 parameter, bool *available) const; virtual void StorePSA(uint reg, int32 value); From 30f73d907a35a5264e5ca415cee58365cd22f8d8 Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 11 Mar 2018 13:21:27 +0000 Subject: [PATCH 17/21] (svn r27985) -Codechange: Convert VA2 switches into ones with non-overlapping ranges, sort them and resolve them using binary search. Speedup sprite resolving by about 7 percent. --- src/newgrf.cpp | 59 +++++++++++++++++++++++++++++++++----- src/newgrf_spritegroup.cpp | 22 +++++++++++--- src/newgrf_spritegroup.h | 2 ++ 3 files changed, 72 insertions(+), 11 deletions(-) diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 704892e5cf..41d7195918 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -12,6 +12,7 @@ #include "stdafx.h" #include +#include #include "debug.h" #include "fileio_func.h" @@ -4687,16 +4688,60 @@ static void NewSpriteGroup(ByteReader *buf) group->adjusts = MallocT(group->num_adjusts); MemCpyT(group->adjusts, adjusts.Begin(), group->num_adjusts); - group->num_ranges = buf->ReadByte(); - if (group->num_ranges > 0) group->ranges = CallocT(group->num_ranges); - - for (uint i = 0; i < group->num_ranges; i++) { - group->ranges[i].group = GetGroupFromGroupID(setid, type, buf->ReadWord()); - group->ranges[i].low = buf->ReadVarSize(varsize); - group->ranges[i].high = buf->ReadVarSize(varsize); + std::vector ranges; + ranges.resize(buf->ReadByte()); + for (uint i = 0; i < ranges.size(); i++) { + ranges[i].group = GetGroupFromGroupID(setid, type, buf->ReadWord()); + ranges[i].low = buf->ReadVarSize(varsize); + ranges[i].high = buf->ReadVarSize(varsize); } group->default_group = GetGroupFromGroupID(setid, type, buf->ReadWord()); + group->error_group = ranges.size() > 0 ? ranges[0].group : group->default_group; + + /* Sort ranges ascending. When ranges overlap, this may required clamping or splitting them */ + std::vector bounds; + for (uint i = 0; i < ranges.size(); i++) { + bounds.push_back(ranges[i].low); + if (ranges[i].high != UINT32_MAX) bounds.push_back(ranges[i].high + 1); + } + std::sort(bounds.begin(), bounds.end()); + bounds.erase(std::unique(bounds.begin(), bounds.end()), bounds.end()); + + std::vector target; + for (uint j = 0; j < bounds.size(); ++j) { + uint32 v = bounds[j]; + const SpriteGroup *t = NULL; + for (uint i = 0; i < ranges.size(); i++) { + if (ranges[i].low <= v && v <= ranges[i].high) { + t = ranges[i].group; + } + } + target.push_back(t); + } + assert(target.size() == bounds.size()); + + std::vector optimised; + for (uint j = 0; j < bounds.size(); ) { + if (target[j]) { + DeterministicSpriteGroupRange r; + r.group = target[j]; + r.low = bounds[j]; + while (j < bounds.size() && target[j] == r.group) { + j++; + } + r.high = j < bounds.size() ? bounds[j] - 1 : UINT32_MAX; + optimised.push_back(r); + } else { + j++; + } + } + + group->num_ranges = optimised.size(); + if (group->num_ranges > 0) { + group->ranges = MallocT(group->num_ranges); + MemCpyT(group->ranges, &optimised.front(), group->num_ranges); + } break; } diff --git a/src/newgrf_spritegroup.cpp b/src/newgrf_spritegroup.cpp index cb70a88bf7..8f44ef9c5e 100644 --- a/src/newgrf_spritegroup.cpp +++ b/src/newgrf_spritegroup.cpp @@ -10,6 +10,7 @@ /** @file newgrf_spritegroup.cpp Handling of primarily NewGRF action 2. */ #include "stdafx.h" +#include #include "debug.h" #include "newgrf_spritegroup.h" #include "core/pool_func.hpp" @@ -201,6 +202,11 @@ static U EvalAdjustT(const DeterministicSpriteGroupAdjust *adjust, ScopeResolver } +static bool RangeHighComparator(const DeterministicSpriteGroupRange& range, uint32 value) +{ + return range.high < value; +} + const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject &object) const { uint32 last_value = 0; @@ -232,7 +238,7 @@ const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject &object) con if (!available) { /* Unsupported variable: skip further processing and return either * the group from the first range or the default group. */ - return SpriteGroup::Resolve(this->num_ranges > 0 ? this->ranges[0].group : this->default_group, object, false); + return SpriteGroup::Resolve(this->error_group, object, false); } switch (this->size) { @@ -254,9 +260,17 @@ const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject &object) con return &nvarzero; } - for (i = 0; i < this->num_ranges; i++) { - if (this->ranges[i].low <= value && value <= this->ranges[i].high) { - return SpriteGroup::Resolve(this->ranges[i].group, object, false); + if (this->num_ranges > 4) { + DeterministicSpriteGroupRange *lower = std::lower_bound(this->ranges + 0, this->ranges + this->num_ranges, value, RangeHighComparator); + if (lower != this->ranges + this->num_ranges && lower->low <= value) { + assert(lower->low <= value && value <= lower->high); + return SpriteGroup::Resolve(lower->group, object, false); + } + } else { + for (i = 0; i < this->num_ranges; i++) { + if (this->ranges[i].low <= value && value <= this->ranges[i].high) { + return SpriteGroup::Resolve(this->ranges[i].group, object, false); + } } } diff --git a/src/newgrf_spritegroup.h b/src/newgrf_spritegroup.h index 4d290b1377..b2e764599d 100644 --- a/src/newgrf_spritegroup.h +++ b/src/newgrf_spritegroup.h @@ -181,6 +181,8 @@ struct DeterministicSpriteGroup : SpriteGroup { /* Dynamically allocated, this is the sole owner */ const SpriteGroup *default_group; + const SpriteGroup *error_group; // was first range, before sorting ranges + protected: const SpriteGroup *Resolve(ResolverObject &object) const; }; From 6b088d37bf8ce585367c52748f7ed8ea0fdca95e Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 11 Mar 2018 13:23:26 +0000 Subject: [PATCH 18/21] (svn r27986) -Codechange: Name magic constants in the vehicle position hash functions. --- src/tile_type.h | 2 ++ src/vehicle.cpp | 47 +++++++++++++++++++++++++++++++++++------------ 2 files changed, 37 insertions(+), 12 deletions(-) diff --git a/src/tile_type.h b/src/tile_type.h index 0d720925da..eb5e8234c4 100644 --- a/src/tile_type.h +++ b/src/tile_type.h @@ -18,6 +18,8 @@ static const uint TILE_PIXELS = 32; ///< Pixel distan static const uint TILE_HEIGHT = 8; ///< Height of a height level in world coordinate AND in pixels in #ZOOM_LVL_BASE. static const uint MAX_BUILDING_PIXELS = 200; ///< Maximum height of a building in pixels in #ZOOM_LVL_BASE. (Also applies to "bridge buildings" on the bridge floor.) +static const int MAX_VEHICLE_PIXEL_X = 70; ///< Maximum width of a vehicle in pixels in #ZOOM_LVL_BASE. +static const int MAX_VEHICLE_PIXEL_Y = 70; ///< Maximum height of a vehicle in pixels in #ZOOM_LVL_BASE. static const uint MAX_TILE_HEIGHT = 255; ///< Maximum allowed tile height diff --git a/src/vehicle.cpp b/src/vehicle.cpp index e4a8c7bf1f..be11e05be3 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -57,7 +57,30 @@ #include "safeguards.h" -#define GEN_HASH(x, y) ((GB((y), 6 + ZOOM_LVL_SHIFT, 6) << 6) + GB((x), 7 + ZOOM_LVL_SHIFT, 6)) +/* Number of bits in the hash to use from each vehicle coord */ +static const uint GEN_HASHX_BITS = 6; +static const uint GEN_HASHY_BITS = 6; + +/* Size of each hash bucket */ +static const uint GEN_HASHX_BUCKET_BITS = 7; +static const uint GEN_HASHY_BUCKET_BITS = 6; + +/* Compute hash for vehicle coord */ +#define GEN_HASHX(x) GB((x), GEN_HASHX_BUCKET_BITS + ZOOM_LVL_SHIFT, GEN_HASHX_BITS) +#define GEN_HASHY(y) (GB((y), GEN_HASHY_BUCKET_BITS + ZOOM_LVL_SHIFT, GEN_HASHY_BITS) << GEN_HASHX_BITS) +#define GEN_HASH(x, y) (GEN_HASHY(y) + GEN_HASHX(x)) + +/* Maximum size until hash repeats */ +static const int GEN_HASHX_SIZE = 1 << (GEN_HASHX_BUCKET_BITS + GEN_HASHX_BITS + ZOOM_LVL_SHIFT); +static const int GEN_HASHY_SIZE = 1 << (GEN_HASHY_BUCKET_BITS + GEN_HASHY_BITS + ZOOM_LVL_SHIFT); + +/* Increments to reach next bucket in hash table */ +static const int GEN_HASHX_INC = 1; +static const int GEN_HASHY_INC = 1 << GEN_HASHX_BITS; + +/* Mask to wrap-around buckets */ +static const uint GEN_HASHX_MASK = (1 << GEN_HASHX_BITS) - 1; +static const uint GEN_HASHY_MASK = ((1 << GEN_HASHY_BITS) - 1) << GEN_HASHX_BITS; VehicleID _new_vehicle_id; uint16 _returned_refit_capacity; ///< Stores the capacity after a refit operation. @@ -618,7 +641,7 @@ static void UpdateVehicleTileHash(Vehicle *v, bool remove) v->hash_tile_current = new_hash; } -static Vehicle *_vehicle_viewport_hash[0x1000]; +static Vehicle *_vehicle_viewport_hash[1 << (GEN_HASHX_BITS + GEN_HASHY_BITS)]; static void UpdateVehicleViewportHash(Vehicle *v, int x, int y) { @@ -1088,26 +1111,26 @@ void ViewportAddVehicles(DrawPixelInfo *dpi) /* The hash area to scan */ int xl, xu, yl, yu; - if (dpi->width + (70 * ZOOM_LVL_BASE) < (1 << (7 + 6 + ZOOM_LVL_SHIFT))) { - xl = GB(l - (70 * ZOOM_LVL_BASE), 7 + ZOOM_LVL_SHIFT, 6); - xu = GB(r, 7 + ZOOM_LVL_SHIFT, 6); + if (dpi->width + (MAX_VEHICLE_PIXEL_X * ZOOM_LVL_BASE) < GEN_HASHX_SIZE) { + xl = GEN_HASHX(l - MAX_VEHICLE_PIXEL_X * ZOOM_LVL_BASE); + xu = GEN_HASHX(r); } else { /* scan whole hash row */ xl = 0; - xu = 0x3F; + xu = GEN_HASHX_MASK; } - if (dpi->height + (70 * ZOOM_LVL_BASE) < (1 << (6 + 6 + ZOOM_LVL_SHIFT))) { - yl = GB(t - (70 * ZOOM_LVL_BASE), 6 + ZOOM_LVL_SHIFT, 6) << 6; - yu = GB(b, 6 + ZOOM_LVL_SHIFT, 6) << 6; + if (dpi->height + (MAX_VEHICLE_PIXEL_Y * ZOOM_LVL_BASE) < GEN_HASHY_SIZE) { + yl = GEN_HASHY(t - MAX_VEHICLE_PIXEL_Y * ZOOM_LVL_BASE); + yu = GEN_HASHY(b); } else { /* scan whole column */ yl = 0; - yu = 0x3F << 6; + yu = GEN_HASHY_MASK; } - for (int y = yl;; y = (y + (1 << 6)) & (0x3F << 6)) { - for (int x = xl;; x = (x + 1) & 0x3F) { + for (int y = yl;; y = (y + GEN_HASHY_INC) & GEN_HASHY_MASK) { + for (int x = xl;; x = (x + GEN_HASHX_INC) & GEN_HASHX_MASK) { const Vehicle *v = _vehicle_viewport_hash[x + y]; // already masked & 0xFFF while (v != NULL) { From 25a2b98b4c690fcf2efb536ece32732a31b5706c Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 11 Mar 2018 13:25:26 +0000 Subject: [PATCH 19/21] (svn r27987) -Change: Increase maximum allowed vehicle sprite size to reduce clipping of ships. --- src/tile_type.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tile_type.h b/src/tile_type.h index eb5e8234c4..c02ba4fc45 100644 --- a/src/tile_type.h +++ b/src/tile_type.h @@ -18,8 +18,8 @@ static const uint TILE_PIXELS = 32; ///< Pixel distan static const uint TILE_HEIGHT = 8; ///< Height of a height level in world coordinate AND in pixels in #ZOOM_LVL_BASE. static const uint MAX_BUILDING_PIXELS = 200; ///< Maximum height of a building in pixels in #ZOOM_LVL_BASE. (Also applies to "bridge buildings" on the bridge floor.) -static const int MAX_VEHICLE_PIXEL_X = 70; ///< Maximum width of a vehicle in pixels in #ZOOM_LVL_BASE. -static const int MAX_VEHICLE_PIXEL_Y = 70; ///< Maximum height of a vehicle in pixels in #ZOOM_LVL_BASE. +static const int MAX_VEHICLE_PIXEL_X = 192; ///< Maximum width of a vehicle in pixels in #ZOOM_LVL_BASE. +static const int MAX_VEHICLE_PIXEL_Y = 96; ///< Maximum height of a vehicle in pixels in #ZOOM_LVL_BASE. static const uint MAX_TILE_HEIGHT = 255; ///< Maximum allowed tile height From 23b21b15eb60b768383312f0e7616bb40ca421df Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 11 Mar 2018 13:34:28 +0000 Subject: [PATCH 20/21] (svn r27988) -Codechange: Extent hg- and gitignore for .vs --- .gitignore | 1 + .hgignore | 1 + 2 files changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 4bf58b05c1..a6be172bab 100644 --- a/.gitignore +++ b/.gitignore @@ -29,6 +29,7 @@ docs/source/* media/openttd.desktop media/openttd.desktop.install objs/* +projects/.vs projects/Debug projects/Release projects/*.ncb diff --git a/.hgignore b/.hgignore index 17b2557f80..3cf61bde69 100644 --- a/.hgignore +++ b/.hgignore @@ -22,6 +22,7 @@ Makefile.bundle media/openttd.desktop media/openttd.desktop.install objs/* +projects/.vs projects/*.ncb projects/*.suo projects/*.sdf From a537fd5d0e2a7af3ae5865ce09910fcb1b9253be Mon Sep 17 00:00:00 2001 From: frosch Date: Sun, 11 Mar 2018 15:08:51 +0000 Subject: [PATCH 21/21] (svn r27989) -Fix (r27985): VA2 optimisation failed in various special cases: - nvar=0 is meant to return the calculated result. - Missing references resolve to NULL and got identified with the default result. - Missing 'break' broke overlapping cases. - Splitting into non-overlapping cases could result in more than 256 cases. --- src/newgrf.cpp | 7 +++++-- src/newgrf_spritegroup.cpp | 2 +- src/newgrf_spritegroup.h | 3 ++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 41d7195918..d06d1c40a5 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -4698,6 +4698,8 @@ static void NewSpriteGroup(ByteReader *buf) group->default_group = GetGroupFromGroupID(setid, type, buf->ReadWord()); group->error_group = ranges.size() > 0 ? ranges[0].group : group->default_group; + /* nvar == 0 is a special case -- we turn our value into a callback result */ + group->calculated_result = ranges.size() == 0; /* Sort ranges ascending. When ranges overlap, this may required clamping or splitting them */ std::vector bounds; @@ -4711,10 +4713,11 @@ static void NewSpriteGroup(ByteReader *buf) std::vector target; for (uint j = 0; j < bounds.size(); ++j) { uint32 v = bounds[j]; - const SpriteGroup *t = NULL; + const SpriteGroup *t = group->default_group; for (uint i = 0; i < ranges.size(); i++) { if (ranges[i].low <= v && v <= ranges[i].high) { t = ranges[i].group; + break; } } target.push_back(t); @@ -4723,7 +4726,7 @@ static void NewSpriteGroup(ByteReader *buf) std::vector optimised; for (uint j = 0; j < bounds.size(); ) { - if (target[j]) { + if (target[j] != group->default_group) { DeterministicSpriteGroupRange r; r.group = target[j]; r.low = bounds[j]; diff --git a/src/newgrf_spritegroup.cpp b/src/newgrf_spritegroup.cpp index 8f44ef9c5e..a5d689bbf9 100644 --- a/src/newgrf_spritegroup.cpp +++ b/src/newgrf_spritegroup.cpp @@ -252,7 +252,7 @@ const SpriteGroup *DeterministicSpriteGroup::Resolve(ResolverObject &object) con object.last_value = last_value; - if (this->num_ranges == 0) { + if (this->calculated_result) { /* nvar == 0 is a special case -- we turn our value into a callback result */ if (value != CALLBACK_FAILED) value = GB(value, 0, 15); static CallbackResultSpriteGroup nvarzero(0, true); diff --git a/src/newgrf_spritegroup.h b/src/newgrf_spritegroup.h index b2e764599d..6adf7c2ac8 100644 --- a/src/newgrf_spritegroup.h +++ b/src/newgrf_spritegroup.h @@ -174,7 +174,8 @@ struct DeterministicSpriteGroup : SpriteGroup { VarSpriteGroupScope var_scope; DeterministicSpriteGroupSize size; uint num_adjusts; - byte num_ranges; + uint num_ranges; + bool calculated_result; DeterministicSpriteGroupAdjust *adjusts; DeterministicSpriteGroupRange *ranges; // Dynamically allocated