Merge branch 'master' into jgrpp

# Conflicts:
#	projects/openttd_vs100.vcxproj
#	projects/openttd_vs100.vcxproj.filters
#	projects/openttd_vs80.vcproj
#	projects/openttd_vs90.vcproj
#	src/viewport.cpp
This commit is contained in:
Jonathan G Rennison
2018-11-19 20:51:16 +00:00
56 changed files with 150 additions and 20323 deletions

View File

@@ -650,6 +650,7 @@ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLA
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT}{DKGREEN}Tidak ada musik yang tersedia
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}"
STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Track
STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Titel
@@ -670,10 +671,12 @@ STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Acak/Uru
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Tampilkan jendela pemilihan judul musik
# Playlist window
STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}Program Musik - '{STRING}'
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Daftar rel
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}'
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Kosong
STR_PLAYLIST_CHANGE_SET :{BLACK}Gantikan set
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Hapus program saat ini (hanya Bebas 1 atau Bebas 2)
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klik pada musik track untuk menambah pada program sekarang (hanya Bebas 1 atau Bebas 2)
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klik pada track musik untuk menghapusnya dari program saat ini. (Bebas 1 atau Bebas 2 saja)
@@ -810,6 +813,7 @@ STR_NEWS_MERGER_TAKEOVER_TITLE :{BIG_FONT}{BLAC
STR_PRESIDENT_NAME_MANAGER :{BLACK}{PRESIDENT_NAME}{}(Pimpinan)
STR_NEWS_NEW_TOWN :{BLACK}{BIG_FONT}{STRING} menjadi sponsor pembangunan kota baru {TOWN}!
STR_NEWS_NEW_TOWN_UNSPONSORED :{BLACK}{BIG_FONT}Kota baru yang bernama {TOWN} baru dibuatkan!
STR_NEWS_INDUSTRY_CONSTRUCTION :{BIG_FONT}{BLACK}Ada pembangunan {STRING} baru di dekat {TOWN}!
STR_NEWS_INDUSTRY_PLANTED :{BIG_FONT}{BLACK}{STRING} baru sedang ditanam di dekat {TOWN}!
@@ -895,7 +899,7 @@ STR_GAME_OPTIONS_CURRENCY_JPY :Yen Jepang (JPY
STR_GAME_OPTIONS_CURRENCY_ATS :Shilling Austria (ATS)
STR_GAME_OPTIONS_CURRENCY_BEF :Franc Belgia (BEF)
STR_GAME_OPTIONS_CURRENCY_CHF :Franc Swiss (CHF)
STR_GAME_OPTIONS_CURRENCY_CZK :Koruna Czech (CZK)
STR_GAME_OPTIONS_CURRENCY_CZK :Koruna Ceko (CZK)
STR_GAME_OPTIONS_CURRENCY_DEM :Deutschmark (DEM)
STR_GAME_OPTIONS_CURRENCY_DKK :Krone Denmark (DKK)
STR_GAME_OPTIONS_CURRENCY_ESP :Peseta Spanyol (ESP)
@@ -909,7 +913,7 @@ STR_GAME_OPTIONS_CURRENCY_NLG :Dutch Guilder (
STR_GAME_OPTIONS_CURRENCY_NOK :Krone Norwegia (NOK)
STR_GAME_OPTIONS_CURRENCY_PLN :Zloty Polandia (PLN)
STR_GAME_OPTIONS_CURRENCY_RON :Leu Romania (RON)
STR_GAME_OPTIONS_CURRENCY_RUR :Rubles Rusia (RUR)
STR_GAME_OPTIONS_CURRENCY_RUR :Rubel Rusia (RUR)
STR_GAME_OPTIONS_CURRENCY_SIT :Tolar Slovenia (SIT)
STR_GAME_OPTIONS_CURRENCY_SEK :Krona Swedia (SEK)
STR_GAME_OPTIONS_CURRENCY_TRY :Lira Turki (TRY)
@@ -922,6 +926,7 @@ STR_GAME_OPTIONS_CURRENCY_ZAR :Rand Afrika Sel
STR_GAME_OPTIONS_CURRENCY_CUSTOM :Atur sendiri...
STR_GAME_OPTIONS_CURRENCY_GEL :Lari Georgia (GEL)
STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iran (IRR)
STR_GAME_OPTIONS_CURRENCY_RUB :Rubel Rusia Baru (RUB)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Kendaraan jalan raya
@@ -938,7 +943,7 @@ STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Perancis
STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Jerman
STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Inggris (Tambahan)
STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Amerika-Latin
STR_GAME_OPTIONS_TOWN_NAME_SILLY :Silly
STR_GAME_OPTIONS_TOWN_NAME_SILLY :Lucu
STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Swedia
STR_GAME_OPTIONS_TOWN_NAME_DUTCH :Belanda
STR_GAME_OPTIONS_TOWN_NAME_FINNISH :Finlandia
@@ -948,7 +953,7 @@ STR_GAME_OPTIONS_TOWN_NAME_NORWEGIAN :Norwegia
STR_GAME_OPTIONS_TOWN_NAME_HUNGARIAN :Hungaria
STR_GAME_OPTIONS_TOWN_NAME_AUSTRIAN :Austria
STR_GAME_OPTIONS_TOWN_NAME_ROMANIAN :Romania
STR_GAME_OPTIONS_TOWN_NAME_CZECH :Czechnya
STR_GAME_OPTIONS_TOWN_NAME_CZECH :Ceko
STR_GAME_OPTIONS_TOWN_NAME_SWISS :Swiss
STR_GAME_OPTIONS_TOWN_NAME_DANISH :Denmark
STR_GAME_OPTIONS_TOWN_NAME_TURKISH :Turki
@@ -1334,6 +1339,10 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Warna daratan d
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Hijau
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Hijau Gelap
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violet
STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Kelakuan waktu menggerakkan peta
STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Gerakan viewport memakai tombol kanan tetikus, posisi tetikus terkunci
STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Gerakan peta memakai tombol kanan tetikus, posisi tetikus terkunci
STR_CONFIG_SETTING_SCROLLMODE_RMB :Gerakan peta memakai tombol kanan tetikus
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Pergeseran pandangan viewport secara halus: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Menyetel bagaimana tampilan utama menggeser posisi di peta kecil. Jika dinyalakan, peta akan bergeser secara halus. Jika dimatikan, peta langsung menuju tempat yang di klik
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Tampilkan ukuran ketika menggunakan alat pembangun: {STRING}
@@ -1982,7 +1991,7 @@ STR_NETWORK_LANG_FRENCH :Perancis
STR_NETWORK_LANG_BRAZILIAN :Brazil
STR_NETWORK_LANG_BULGARIAN :Bulgaria
STR_NETWORK_LANG_CHINESE :China
STR_NETWORK_LANG_CZECH :Czech
STR_NETWORK_LANG_CZECH :Ceko
STR_NETWORK_LANG_DANISH :Denmark
STR_NETWORK_LANG_DUTCH :Belanda
STR_NETWORK_LANG_ESPERANTO :Esperanto
@@ -1997,7 +2006,7 @@ STR_NETWORK_LANG_NORWEGIAN :Norwegia
STR_NETWORK_LANG_POLISH :Polandia
STR_NETWORK_LANG_PORTUGUESE :Portugis
STR_NETWORK_LANG_ROMANIAN :Rumania
STR_NETWORK_LANG_RUSSIAN :Russia
STR_NETWORK_LANG_RUSSIAN :Rusia
STR_NETWORK_LANG_SLOVAK :Slovakia
STR_NETWORK_LANG_SLOVENIAN :Slovenia
STR_NETWORK_LANG_SPANISH :Spanyol
@@ -2274,6 +2283,7 @@ STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Legenda
STR_LINKGRAPH_LEGEND_ALL :{BLACK}Semua
STR_LINKGRAPH_LEGEND_NONE :{BLACK}Tidak ada
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Pilih perusahaan yang akan ditampilkan
STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP :{BLACK}{STRING}{}{COMPANY}
# Linkgraph legend window and linkgraph legend in smallmap
STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}tak terpakai
@@ -2683,9 +2693,34 @@ STR_ABOUT_VERSION :{BLACK}OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Tim OpenTTD
# Framerate display window
STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x)
STR_FRAMERATE_RATE_GAMELOOP :{WHITE}Rata simulasi: {STRING}
STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Beberapa cepat permainan lagi berjalan, dibanding dengan kecepatan diharapkan memakai rata simulasi biasa.
STR_FRAMERATE_CURRENT :{WHITE}Sekarang
STR_FRAMERATE_DATA_POINTS :{WHITE}Data tergantung oleh ukuran {COMMA}
STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL}{WHITE} ms
STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL}{WHITE} ms
STR_FRAMERATE_MS_BAD :{RED}{DECIMAL}{WHITE} ms
STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COMMA} ms
STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} s
############ Leave those lines in this order!!
STR_FRAMERATE_GL_ECONOMY :{WHITE} Penanganan kargo:
STR_FRAMERATE_GL_TRAINS :{WHITE} Titik kereta:
STR_FRAMERATE_GL_ROADVEHS :{WHITE} Titik kendaraan:
STR_FRAMERATE_GL_SHIPS :{WHITE} Titik kapal:
STR_FRAMERATE_GL_AIRCRAFT :{WHITE} Titik pesawat:
STR_FRAMERATE_GL_LANDSCAPE :{WHITE} Titik dunia:
STR_FRAMERATE_DRAWING_VIEWPORTS :{WHITE} Viewport dunia:
STR_FRAMERATE_SOUND :{WHITE}Mixing suara:
############ End of leave-in-this-order
############ Leave those lines in this order!!
STR_FRAMETIME_CAPTION_GL_ECONOMY :Penanganan kargo
STR_FRAMETIME_CAPTION_GL_TRAINS :Titik kereta
STR_FRAMETIME_CAPTION_GL_ROADVEHS :Titik kendaraan
STR_FRAMETIME_CAPTION_GL_SHIPS :Titik kapal
STR_FRAMETIME_CAPTION_GL_AIRCRAFT :Titik pesawat
STR_FRAMETIME_CAPTION_GL_LANDSCAPE :Titik dunia
STR_FRAMETIME_CAPTION_SOUND :Mixing suara
############ End of leave-in-this-order
@@ -2976,6 +3011,7 @@ STR_TOWN_POPULATION :{BLACK}Populasi
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (City)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Populasi: {ORANGE}{COMMA}{BLACK} Rumah: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} bulan lalu: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Kargo untuk pertumbuhan kota:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED} Butuh {ORANGE}{STRING}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} dibutuhkan saat musim dingin
@@ -3288,6 +3324,8 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Membutuh
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Membutuhkan: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Membutuhkan:
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} menunggu{STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Menghasilkan: {YELLOW}{STRING}{STRING}
@@ -3357,6 +3395,9 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Jual semua
STR_GROUP_RENAME_CAPTION :{BLACK}Ubah nama kelompok
STR_GROUP_PROFIT_THIS_YEAR :Keuntungan tahun ini:
STR_GROUP_PROFIT_LAST_YEAR :Keuntungan tahun lalu:
STR_GROUP_OCCUPANCY :Penggunaan sekarang:
STR_GROUP_OCCUPANCY_VALUE :{NUM}%
# Build vehicle window
STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Kereta Baru
@@ -3364,7 +3405,7 @@ STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Kereta listrik
STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Monorel Baru
STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Maglev Baru
STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Semua Kereta
STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Kereta Baru
STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Kendaraan Baru
STR_BUY_VEHICLE_SHIP_CAPTION :Kapal Baru
STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Buat Pesawat
@@ -3389,6 +3430,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Semua jenis kar
STR_PURCHASE_INFO_ALL_BUT :Semua tapi tidak untuk {CARGO_LIST}
STR_PURCHASE_INFO_MAX_TE :{BLACK}Traksi Maks.: {GOLD}{FORCE}
STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Jangkauan: {GOLD}{COMMA} kotak
STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}Jenis pesawat: {GOLD}{STRING}
STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Daftar pilihan kereta - klik pada kereta untuk menampilkan informasi
STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Daftar pilihan kendaraan - klik pada kendaraan untuk menampilkan informasi
@@ -3523,6 +3565,10 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :lokomotif magle
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Biaya: {CURRENCY_LONG} Berat: {WEIGHT_SHORT}{}Kecepatan: {VELOCITY} Daya: {POWER}{}Biaya ops.: {CURRENCY_LONG}/thn{}Kapasitas: {CARGO_LONG}
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Biaya: {CURRENCY_LONG} Berat: {WEIGHT_SHORT}{}Kecepatan: {VELOCITY} Power: {POWER} Max. T.E.: {6:FORCE}{}Biaya Operasional: {4:CURRENCY_LONG}/yr{}Kapasitas: {5:CARGO_LONG}
STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Biaya: {CURRENCY_LONG} Kec. Max: {VELOCITY}{}Kapasitas: {CARGO_LONG}{}Bea Berjalan: {CURRENCY_LONG}/thn
STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :{BLACK}Biaya: {CURRENCY_LONG} Kec. Max.: {VELOCITY}{}Jenis pesawat: {STRING}{}Kapasitas: {CARGO_LONG}, {CARGO_LONG}{}Biaya operasi: {CURRENCY_LONG}/thn
STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK}Biaya: {CURRENCY_LONG} Kec. Max.: {VELOCITY}{}Jenis pesawat: {STRING}{}Kapasitas: {CARGO_LONG}{}Biaya operasi: {CURRENCY_LONG}/thn
STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK}Biaya: {CURRENCY_LONG} Kec. Max.: {VELOCITY}{}Jenis pesawat: {STRING} Jangkauan: {COMMA} ubin{}Kapasitas: {CARGO_LONG}, {CARGO_LONG}{}Biaya Operasi: {CURRENCY_LONG}/thn
STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :{BLACK}Biaya: {CURRENCY_LONG} Kec. Max.: {VELOCITY}{}Jenis pesawat: {STRING} Jangkauan: {COMMA} ubin{}Kapasitas: {CARGO_LONG}{}Biaya operasi: {CURRENCY_LONG}/thn
# Autoreplace window
STR_REPLACE_VEHICLES_WHITE :{WHITE}Ganti {STRING} - {STRING}
@@ -3552,6 +3598,7 @@ STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Tekan un
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Pindah tampilan penggantian lokomitif atau gerbong
STR_REPLACE_ENGINES :Lokomotif
STR_REPLACE_WAGONS :Gerbong
STR_REPLACE_ALL_RAILTYPE :Semua kereta
STR_REPLACE_HELP_RAILTYPE :{BLACK}Pilih jenis kereta yang anda inginkan untuk diganti
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Menampilkan kendaraan terpilih di sisi kiri yang akan diganti, jika ada
@@ -3645,6 +3692,7 @@ STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ta
STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Kec. Max: {LTBLUE}{VELOCITY}
STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Kecepatan Maks.: {LTBLUE}{VELOCITY} {BLACK}Jenis pesawat: {LTBLUE}{STRING}
STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Kec. max.: {LTBLUE}{VELOCITY} {BLACK}Jenis pesawat: {LTBLUE}{STRING} {BLACK}Jangkauan: {LTBLUE}{COMMA} ubin
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Berat: {LTBLUE}{WEIGHT_SHORT} {BLACK}Tenaga: {LTBLUE}{POWER}{BLACK} Kec. Max: {LTBLUE}{VELOCITY}
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Berat: {LTBLUE}{WEIGHT_SHORT} {BLACK}Tenaga: {LTBLUE}{POWER}{BLACK} Kec. Max: {LTBLUE}{VELOCITY} {BLACK}Max. T.E.: {LTBLUE}{FORCE}
@@ -4210,6 +4258,7 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... jala
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... menghadap pada arah yang salah
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... terminal lintas-lalu tak bisa memiliki sudut
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... terminal lintas-lalu tak bisa memiliki simpangan
STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... jalannya satu arah atau terhalang
# Station destruction related errors
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Tidak dapat menghapus bagian dari stasiun...
@@ -4278,7 +4327,7 @@ STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Kombinas
STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Sinyal harus dihancurkan dulu
STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Tidak tersedia rel yang sesuai
STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Harus membongkar rel terlebih dahulu
STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Jalan satu arah atau ada yang menghalangi
STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Jalannya satu arah atau terhalang
STR_ERROR_CROSSING_DISALLOWED :{WHITE}Perlintasan tingkat tidak diperbolehkan pada tipe rel ini
STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Tidak dapat membangun sinyal disini
STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Tidak dapat membangun jalur rel disini
@@ -4461,6 +4510,8 @@ STR_BASESOUNDS_DOS_DESCRIPTION :Efek suara oris
STR_BASESOUNDS_WIN_DESCRIPTION :Efek suara orisinil Transport Tycoon Deluxe versi Windows.
STR_BASESOUNDS_NONE_DESCRIPTION :Paket efek suara tanpa suara apapun.
STR_BASEMUSIC_WIN_DESCRIPTION :Musik pengiring orisinil Transport Tycoon Deluxe versi Windows.
STR_BASEMUSIC_DOS_DESCRIPTION :Musik orisinil Transport Tycoon Deluxe versi DOS.
STR_BASEMUSIC_TTO_DESCRIPTION :Musik orisinil Transport Tycoon (Orisinil/Editor Dunia) versi DOS.
STR_BASEMUSIC_NONE_DESCRIPTION :Paket musik tanpa musik sungguhan.
##id 0x2000

View File

@@ -574,7 +574,7 @@ STR_GRAPH_OPERATING_PROFIT_CAPTION :{WHITE}Gráfico
STR_GRAPH_INCOME_CAPTION :{WHITE}Gráfico de Ingresos
STR_GRAPH_CARGO_DELIVERED_CAPTION :{WHITE}Unidades de carga entregadas
STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION :{WHITE}Calificaciones de actuación de empresas (tasa máxima=1000)
STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Valores de las empresas
STR_GRAPH_COMPANY_VALUES_CAPTION :{WHITE}Valor de la empresa
STR_GRAPH_CARGO_PAYMENT_RATES_CAPTION :{WHITE}Tasas de pago por carga
STR_GRAPH_CARGO_PAYMENT_RATES_X_LABEL :{TINY_FONT}{BLACK}Días en tránsito
@@ -878,10 +878,10 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLAC
# Extra view window
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Vista {COMMA}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copiar punto de vista
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Cambiar punto de vista
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copia la localización de la vista principal a este punto de vista
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Pegar punto de vista
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Pega la localización de este punto de vista a la principal
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Cambiar vista principal
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Copia la localización de este punto de vista en la vista principal
# Game options window
STR_GAME_OPTIONS_CAPTION :{WHITE}Opciones del juego
@@ -2686,6 +2686,9 @@ STR_ABOUT_VERSION :{BLACK}OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 El equipo OpenTTD
# Framerate display window
STR_FRAMERATE_CAPTION :{WHITE}Fotogramas por segundo - FPS
STR_FRAMERATE_CURRENT :{WHITE}Actual
STR_FRAMERATE_AVERAGE :{WHITE}Medio
############ Leave those lines in this order!!
############ End of leave-in-this-order
############ Leave those lines in this order!!
@@ -2780,7 +2783,7 @@ STR_GENERATION_ABORT_MESSAGE :{YELLOW}¿Desea
STR_GENERATION_PROGRESS :{WHITE}{NUM}% completado
STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM}
STR_GENERATION_WORLD_GENERATION :{BLACK}Generación de mundo
STR_GENERATION_RIVER_GENERATION :{BLACK}Generación de Ríos
STR_GENERATION_RIVER_GENERATION :{BLACK}Generación de ríos
STR_GENERATION_TREE_GENERATION :{BLACK}Generación de árboles
STR_GENERATION_OBJECT_GENERATION :{BLACK}Generación de inamovibles
STR_GENERATION_CLEARING_TILES :{BLACK}Generación de áreas ásperas o rocosas
@@ -2976,6 +2979,7 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Introduc
STR_TOWN_DIRECTORY_CAPTION :{WHITE}Municipios
STR_TOWN_DIRECTORY_NONE :{ORANGE}- Ninguna -
STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA})
STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Ciudad){BLACK} ({COMMA})
STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Nombres de los municipios - click sobre un nombre para centrar la vista principal en él. Ctrl+Click abre una ventana de visualización en dicha posición
STR_TOWN_POPULATION :{BLACK}Población mundial: {COMMA}
@@ -2983,6 +2987,7 @@ STR_TOWN_POPULATION :{BLACK}Poblaci
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Ciudad)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Habitantes: {ORANGE}{COMMA}{BLACK} Casas: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} último mes: {ORANGE}{COMMA}{BLACK} máx: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Carga necesaria para crecimiento del municipio:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} requeridos
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} requerido en invierno

View File

@@ -411,6 +411,7 @@ static const char * const _credits[] = {
" Christoph Elsenhans (frosch) - General coding (since 0.6)",
" Lo\xC3\xAF""c Guilloux (glx) - General / Windows Expert (since 0.4.5)",
" Michael Lutz (michi_cc) - Path based signals (since 0.7)",
" Niels Martin Hansen (nielsm) - Music system, general coding (since 1.9)",
" Owen Rudge (orudge) - Forum host, OS/2 port (since 0.1)",
" Peter Nelson (peter1138) - Spiritual descendant from NewGRF gods (since 0.4.5)",
" Ingo von Borstel (planetmaker) - General, Support (since 1.1)",

View File

@@ -432,13 +432,8 @@ static SQInteger _io_file_read(SQUserPointer file, SQUserPointer buf, SQInteger
SQRESULT Squirrel::LoadFile(HSQUIRRELVM vm, const char *filename, SQBool printerror)
{
size_t size;
FILE *file;
SQInteger ret;
unsigned short us;
unsigned char uc;
SQLEXREADFUNC func;
size_t size;
if (strncmp(this->GetAPIName(), "AI", 2) == 0) {
file = FioFOpenFile(filename, "rb", AI_DIR, &size);
if (file == NULL) file = FioFOpenFile(filename, "rb", AI_LIBRARY_DIR, &size);
@@ -449,61 +444,75 @@ SQRESULT Squirrel::LoadFile(HSQUIRRELVM vm, const char *filename, SQBool printer
NOT_REACHED();
}
if (file != NULL) {
SQFile f(file, size);
ret = fread(&us, 1, sizeof(us), file);
/* Most likely an empty file */
if (ret != 2) us = 0;
switch (us) {
case SQ_BYTECODE_STREAM_TAG: { // BYTECODE
if (fseek(file, -2, SEEK_CUR) < 0) {
FioFCloseFile(file);
return sq_throwerror(vm, "cannot seek the file");
}
if (SQ_SUCCEEDED(sq_readclosure(vm, _io_file_read, &f))) {
FioFCloseFile(file);
return SQ_OK;
}
FioFCloseFile(file);
return sq_throwerror(vm, "Couldn't read bytecode");
}
case 0xFFFE:
/* Either this file is encoded as big-endian and we're on a little-endian
* machine, or this file is encoded as little-endian and we're on a big-endian
* machine. Either way, swap the bytes of every word we read. */
func = _io_file_lexfeed_UCS2_swap;
break;
case 0xFEFF: func = _io_file_lexfeed_UCS2_no_swap; break;
case 0xBBEF: // UTF-8
case 0xEFBB: // UTF-8 on big-endian machine
if (fread(&uc, 1, sizeof(uc), file) == 0) {
FioFCloseFile(file);
return sq_throwerror(vm, "I/O error");
}
if (uc != 0xBF) {
FioFCloseFile(file);
return sq_throwerror(vm, "Unrecognized encoding");
}
func = _io_file_lexfeed_UTF8;
break;
default: // ASCII
func = _io_file_lexfeed_ASCII;
if (fseek(file, -2, SEEK_CUR) < 0) {
FioFCloseFile(file);
return sq_throwerror(vm, "cannot seek the file");
}
break;
}
if (SQ_SUCCEEDED(sq_compile(vm, func, &f, filename, printerror))) {
FioFCloseFile(file);
return SQ_OK;
}
FioFCloseFile(file);
return SQ_ERROR;
if (file == NULL) {
return sq_throwerror(vm, "cannot open the file");
}
return sq_throwerror(vm, "cannot open the file");
unsigned short bom = 0;
if (size >= 2) {
fread(&bom, 1, sizeof(bom), file); // Inside tar, no point checking return value of fread
}
SQLEXREADFUNC func;
switch (bom) {
case SQ_BYTECODE_STREAM_TAG: { // BYTECODE
if (fseek(file, -2, SEEK_CUR) < 0) {
FioFCloseFile(file);
return sq_throwerror(vm, "cannot seek the file");
}
SQFile f(file, size);
if (SQ_SUCCEEDED(sq_readclosure(vm, _io_file_read, &f))) {
FioFCloseFile(file);
return SQ_OK;
}
FioFCloseFile(file);
return sq_throwerror(vm, "Couldn't read bytecode");
}
case 0xFFFE:
/* Either this file is encoded as big-endian and we're on a little-endian
* machine, or this file is encoded as little-endian and we're on a big-endian
* machine. Either way, swap the bytes of every word we read. */
func = _io_file_lexfeed_UCS2_swap;
size -= 2; // Skip BOM
break;
case 0xFEFF:
func = _io_file_lexfeed_UCS2_no_swap;
size -= 2; // Skip BOM
break;
case 0xBBEF: // UTF-8
case 0xEFBB: { // UTF-8 on big-endian machine
/* Similarly, check the file is actually big enough to finish checking BOM */
if (size < 3) {
FioFCloseFile(file);
return sq_throwerror(vm, "I/O error");
}
unsigned char uc;
fread(&uc, 1, sizeof(uc), file);
if (uc != 0xBF) {
FioFCloseFile(file);
return sq_throwerror(vm, "Unrecognized encoding");
}
func = _io_file_lexfeed_UTF8;
size -= 3; // Skip BOM
break;
}
default: // ASCII
func = _io_file_lexfeed_ASCII;
/* Account for when we might not have fread'd earlier */
if (size >= 2 && fseek(file, -2, SEEK_CUR) < 0) {
FioFCloseFile(file);
return sq_throwerror(vm, "cannot seek the file");
}
break;
}
SQFile f(file, size);
if (SQ_SUCCEEDED(sq_compile(vm, func, &f, filename, printerror))) {
FioFCloseFile(file);
return SQ_OK;
}
FioFCloseFile(file);
return SQ_ERROR;
}
bool Squirrel::LoadScript(HSQUIRRELVM vm, const char *script, bool in_root)

View File

@@ -105,7 +105,6 @@
#include "gui.h"
#include "core/container_func.hpp"
#include "tunnelbridge_map.h"
#include "core/sort_func.hpp"
#include <map>
#include <vector>
@@ -1526,22 +1525,11 @@ static bool ViewportSortParentSpritesChecker()
return true;
}
static int CDECL CompareParentSprites(ParentSpriteToDraw * const *psd, ParentSpriteToDraw * const *psd2)
{
const ParentSpriteToDraw *ps = *psd;
const ParentSpriteToDraw *ps2 = *psd2;
return ps->xmin - ps2->xmin;
}
/** Sort parent sprites pointer array */
static void ViewportSortParentSprites(ParentSpriteToSortVector *psdv)
{
ParentSpriteToDraw **psdvend = psdv->End();
ParentSpriteToDraw **psd = psdv->Begin();
/* pre-sort by xmin in ascending order */
QSortT(psd, psdvend - psd, CompareParentSprites);
while (psd != psdvend) {
ParentSpriteToDraw *ps = *psd;
@@ -1578,11 +1566,9 @@ static void ViewportSortParentSprites(ParentSpriteToSortVector *psdv)
* I.e. every single order of X, Y, Z says ps2 is behind ps or they overlap.
* That is: If one partial order says ps behind ps2, do not change the order.
*/
if (ps->xmax < ps2->xmin) {
/* all following sprites have xmin >= ps2->xmin */
break;
}
if (ps->ymax < ps2->ymin || ps->zmax < ps2->zmin) {
if (ps->xmax < ps2->xmin ||
ps->ymax < ps2->ymin ||
ps->zmax < ps2->zmin) {
continue;
}
}

View File

@@ -15,7 +15,6 @@
#include "cpu.h"
#include "smmintrin.h"
#include "viewport_sprite_sorter.h"
#include "core/sort_func.hpp"
#include "safeguards.h"
@@ -26,24 +25,12 @@
#define LOAD_128 _mm_loadu_si128
#endif
static int CDECL CompareParentSprites(ParentSpriteToDraw * const *psd, ParentSpriteToDraw * const *psd2)
{
const ParentSpriteToDraw *ps = *psd;
const ParentSpriteToDraw *ps2 = *psd2;
return ps->xmin - ps2->xmin;
}
/** Sort parent sprites pointer array using SSE4.1 optimizations. */
void ViewportSortParentSpritesSSE41(ParentSpriteToSortVector *psdv)
{
const __m128i mask_ptest = _mm_setr_epi8(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0);
const __m128i mask_ptest2 = _mm_setr_epi8(-1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
const __m128i mask_ptest = _mm_setr_epi8(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0);
ParentSpriteToDraw ** const psdvend = psdv->End();
ParentSpriteToDraw **psd = psdv->Begin();
/* pre-sort by xmin in ascending order */
QSortT(psd, psdvend - psd, CompareParentSprites);
while (psd != psdvend) {
ParentSpriteToDraw * const ps = *psd;
@@ -77,14 +64,8 @@ void ViewportSortParentSpritesSSE41(ParentSpriteToSortVector *psdv)
__m128i ps1_max = LOAD_128((__m128i*) &ps->xmax);
__m128i ps2_min = LOAD_128((__m128i*) &ps2->xmin);
__m128i rslt1 = _mm_cmplt_epi32(ps1_max, ps2_min);
if (!_mm_testz_si128(mask_ptest, rslt1)) {
if (!_mm_testz_si128(mask_ptest2, rslt1) /* ps->xmax < ps2->xmin */) {
/* all following sprites have xmin >= ps2->xmin */
break;
} else {
continue;
}
}
if (!_mm_testz_si128(mask_ptest, rslt1))
continue;
__m128i ps1_min = LOAD_128((__m128i*) &ps->xmin);
__m128i ps2_max = LOAD_128((__m128i*) &ps2->xmax);