mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-08-14 01:59:09 +00:00
Compare commits
37 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
c01a5f8727 | ||
|
1c45ddd861 | ||
|
4a33c03a49 | ||
|
28dfc29888 | ||
|
8d90a3f417 | ||
|
10fdf41107 | ||
|
c13d1d6362 | ||
|
9fdc7a4ec9 | ||
|
5a82846fb0 | ||
|
e026f80caa | ||
|
47fe12ebc2 | ||
|
1ffa019bb5 | ||
|
3e445b2a6d | ||
|
a4551ff5ac | ||
|
c40bbef756 | ||
|
dff569beb6 | ||
|
04fc4595cf | ||
|
33ab06a9da | ||
|
f2cd6d20be | ||
|
95569e444b | ||
|
27bf9549d6 | ||
|
68423b35cf | ||
|
53fffb3bab | ||
|
7489a5d153 | ||
|
6b47e4ba24 | ||
|
38bcb67c38 | ||
|
e57c544643 | ||
|
1c5ff9933f | ||
|
8ebe828137 | ||
|
beceab38f8 | ||
|
6a91636e1a | ||
|
7a081330e4 | ||
|
8f6204546e | ||
|
909502dc41 | ||
|
6cde48e49f | ||
|
b0486a940d | ||
|
526fb6fa21 |
4
COPYING
4
COPYING
@@ -1,3 +1,7 @@
|
||||
This is the license which applies to OpenTTD with the exception of some
|
||||
3rd party modules. See readme.txt for details
|
||||
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
|
@@ -90,9 +90,9 @@ endif
|
||||
ifeq ($(TTD), openttd.exe)
|
||||
$(Q)unix2dos "$(BUNDLE_DIR)/docs/"* "$(BUNDLE_DIR)/readme.txt" "$(BUNDLE_DIR)/COPYING" "$(BUNDLE_DIR)/changelog.txt" "$(BUNDLE_DIR)/known-bugs.txt"
|
||||
ifeq ($(OS), DOS)
|
||||
$(Q)cp "$(ROOT_DIR)/os/dos/cwsdpmi.txt" "$(BUNDLE_DIR)/docs/"
|
||||
$(Q)cp "$(ROOT_DIR)/os/dos/cwsdpmi/cwsdpmi.txt" "$(BUNDLE_DIR)/docs/"
|
||||
ifndef STRIP
|
||||
$(Q)cp "$(ROOT_DIR)/os/dos/cwsdpmi.exe" "$(TTD_DIR)/"
|
||||
$(Q)cp "$(ROOT_DIR)/os/dos/cwsdpmi/cwsdpmi.exe" "$(TTD_DIR)/"
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
@@ -21,7 +21,7 @@ description.el_GR = Ένα πάκετο μουσικής χωρίς πραγμα
|
||||
description.en_AU = A music pack without actual music.
|
||||
description.en_US = A music pack without actual music.
|
||||
description.es_ES = Un conjunto de música vacío.
|
||||
description.et_EE = Muusikakomplekt ilma igasuguse muusikata.
|
||||
description.et_EE = Muusikakogu ilma muusikata.
|
||||
description.fi_FI = Musiikkipaketti, jossa ei ole musiikkia.
|
||||
description.fr_FR = Un pack de musiques sans musiques.
|
||||
description.gd_GB = Pacaid ciùil anns nach eil fonn sam bith.
|
||||
@@ -31,13 +31,15 @@ description.hu_HU = Zenei alapcsomag zene nélkül.
|
||||
description.id_ID = Paket musik tanpa musik sungguhan.
|
||||
description.is_IS = Tónlistarpakki sem er í raun án tónlistar.
|
||||
description.it_IT = Un pacchetto musicale non contenente alcuna musica.
|
||||
description.ja_JP = 音楽が無いミュージックパック
|
||||
description.ja_JP = 空の音楽パック
|
||||
description.ko_KR = 실제 음악이 없는 음악 목록입니다.
|
||||
description.lb_LU = E Musikpack ouni aktuell Musik.
|
||||
description.lt_LT = Muzikos pakas be muzikos.
|
||||
description.nb_NO = En musikkpakke uten noe musikk.
|
||||
description.nl_NL = Een muziekset zonder muziek.
|
||||
description.nn_NO = Ei musikkpakke utan noko musikk.
|
||||
description.pl_PL = Zestaw utworów muzycznych nie zawierający żadnej muzyki.
|
||||
description.pt_BR = Um pacote de músicas sem músicas.
|
||||
description.pt_PT = Um conjunto de música vazio.
|
||||
description.ro_RO = Un set de muzică fără muzică inclusă.
|
||||
description.ru_RU = "Пустой" набор музыкального оформления, не содержащий никакой музыки.
|
||||
@@ -46,8 +48,9 @@ description.sl_SI = Glasbeni paket z vključeno glasbo.
|
||||
description.sr_RS = Prazan skup muzičkih numera.
|
||||
description.sv_SE = Ett musikpaket utan någon musik.
|
||||
description.ta_IN = இசை இல்லாத இசைத்தொகுப்பு.
|
||||
description.th_TH = A music pack without actual music.
|
||||
description.th_TH = ชุดเพลงประกอบแบบไม่มีเสียงเพลง
|
||||
description.tr_TR = Müzik içermeyen boş bir müzik paketi.
|
||||
description.uk_UA = Порожній набір музики.
|
||||
description.vi_VN = Gói âm nhạc này không có nhạc nào.
|
||||
description.zh_CN = 一个没有实际内容的音乐包.
|
||||
description.zh_TW = 不含任何音樂的音樂集。
|
||||
|
@@ -21,7 +21,7 @@ description.el_GR = Ένα πάκετο ήχων χώρις ήχους.
|
||||
description.en_AU = A sound pack without any sounds.
|
||||
description.en_US = A sound pack without any sounds.
|
||||
description.es_ES = Un conjunto de sonidos vacío.
|
||||
description.et_EE = Ilma häälteta helipakk.
|
||||
description.et_EE = Helikogu ilma helideta.
|
||||
description.fi_FI = Äänipaketti, jossa ei ole ääniä.
|
||||
description.fr_FR = Un pack de sons sans sons.
|
||||
description.gd_GB = Pacaid fhuaimean anns nach eil fuaim sam bith.
|
||||
@@ -31,13 +31,15 @@ description.hu_HU = Hang alapcsomag hangok nélkül.
|
||||
description.id_ID = Paket efek suara tanpa suara apapun.
|
||||
description.is_IS = Hljóðpakki án hljóðs.
|
||||
description.it_IT = Un pacchetto sonoro non contenente alcun suono.
|
||||
description.ja_JP = 音楽が無いミュージックパック
|
||||
description.ja_JP = 空の効果音パック
|
||||
description.ko_KR = 아무런 효과음도 없는 효과음 팩입니다.
|
||||
description.lb_LU = En Soundpack mat all den Sounds.
|
||||
description.lt_LT = Garsų pakas be jokių garsų.
|
||||
description.nb_NO = En lydpakke uten noen lyder.
|
||||
description.nl_NL = Een geluidset zonder geluid.
|
||||
description.nn_NO = Ei lydpakke utan nokon lydar.
|
||||
description.pl_PL = Zestaw dźwięków nie zawierający żadnych dźwięków.
|
||||
description.pt_BR = Um pacote de sons sem sons.
|
||||
description.pt_PT = Um conjunto de sons vazio.
|
||||
description.ro_RO = Un set de sunete fără nici un sunet inclus.
|
||||
description.ru_RU = "Пустой" набор звукового оформления, не содержащий никаких звуков.
|
||||
@@ -46,8 +48,9 @@ description.sl_SI = Zvočni paket brez zvoka.
|
||||
description.sr_RS = Prazan skup zvukova.
|
||||
description.sv_SE = Ett ljudpaket utan några ljud.
|
||||
description.ta_IN = ஒலிகள் இல்லாத ஒலி தொகுப்பு.
|
||||
description.th_TH = A sound pack without any sounds.
|
||||
description.th_TH = ชุดเสียงแบบไร้เสียง
|
||||
description.tr_TR = Ses içermeyen boş bir ses kümesi.
|
||||
description.uk_UA = Порожній набір звуків.
|
||||
description.vi_VN = Gói âm thanh này không có âm thanh nào.
|
||||
description.zh_CN = 一个空的音效包.
|
||||
description.zh_TW = 不含任何音效的音效集。
|
||||
|
@@ -32,13 +32,15 @@ description.hu_HU = Az eredeti Transport Tycoon Deluxe DOS verziójának grafik
|
||||
description.id_ID = Grafik orisinil Transport Tycoon Deluxe versi DOS.
|
||||
description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe DOS útgáfunni.
|
||||
description.it_IT = Grafica originale di Transport Tycoon Deluxe, edizione DOS.
|
||||
description.ja_JP = オリジナルDOS『トランスポートタイクンデラックス』版画像
|
||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (DOS)
|
||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에디션의 그래픽입니다.
|
||||
description.lb_LU = Original Transport Tycoon Deluxe DOS Editioun Grafik.
|
||||
description.lt_LT = Originali Transport Tycoon Deluxe DOS leidimo grafika.
|
||||
description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for DOS.
|
||||
description.nl_NL = Originele graphics van de Transport Tycoon Deluxe DOS-versie.
|
||||
description.nn_NO = Original grafikk frå Transport Tycoon Deluxe for DOS.
|
||||
description.pl_PL = Oryginalna edycja grafik dla Transport Tycoon Deluxe DOS.
|
||||
description.pt_BR = Gráficos Originais do Transport Tycoon Deluxe, Edição DOS.
|
||||
description.pt_PT = Gráficos originais da edição DOS de Transport Tycoon Deluxe.
|
||||
description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru DOS.
|
||||
description.ru_RU = Оригинальная графика из Transport Tycoon Deluxe для DOS.
|
||||
@@ -49,6 +51,7 @@ description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, DOS-utgåvan
|
||||
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS பதிப்பு அசைவூட்டங்கள்.
|
||||
description.th_TH = กราฟฟิกต้นตำหรับของ Transport Tycoon Deluxe DOS edition
|
||||
description.tr_TR = Orijinal Transport Tycoon Deluxe DOS sürümü grafikleri.
|
||||
description.uk_UA = Оригінальна графіка з Transport Tycoon Deluxe DOS edition.
|
||||
description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên DOS
|
||||
description.zh_CN = 运输大亨DOS豪华版原版图形包.
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版的圖形。
|
||||
|
@@ -31,13 +31,15 @@ description.hu_HU = Az eredeti Transport Tycoon Deluxe DOS verziójának hangjai
|
||||
description.id_ID = Efek suara orisinil Transport Tycoon Deluxe versi DOS.
|
||||
description.is_IS = Upprunalega hljóðið úr Transport Tycoon Deluxe DOS útgáfunni.
|
||||
description.it_IT = Suoni originali di Transport Tycoon Deluxe, edizione DOS.
|
||||
description.ja_JP = オリジナル DOS 『トランスポートタイクンデラックス』版音楽
|
||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 効果音 (DOS)
|
||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 도스 에디션의 효과음입니다.
|
||||
description.lb_LU = Original Transport Tycoon Deluxe DOS Editioun Sound.
|
||||
description.lt_LT = Originalūs Transport Tycoon Deluxe DOS leidimo garsai.
|
||||
description.nb_NO = Originale lyder fra Transport Tycoon Deluxe for DOS.
|
||||
description.nl_NL = Originele geluiden van de Transport Tycoon Deluxe DOS-versie.
|
||||
description.nn_NO = Originale lydar frå Transport Tycoon Deluxe for DOS.
|
||||
description.pl_PL = Oryginalna edycja dźwięków dla Transport Tycoon Deluxe DOS.
|
||||
description.pt_BR = Sons Originais do Transport Tycoon Deluxe, Edição DOS.
|
||||
description.pt_PT = Sons originais da edição DOS de Transport Tycoon Deluxe.
|
||||
description.ro_RO = Setul de sunete original al Transport Tycoon Deluxe pentru DOS.
|
||||
description.ru_RU = Оригинальный набор звукового оформления из игры Transport Tycoon Deluxe для DOS.
|
||||
@@ -48,6 +50,7 @@ description.sv_SE = Originalljuden från Transport Tycoon Deluxe, DOS-utgåvan.
|
||||
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS பதிப்பு ஒலிகள்.
|
||||
description.th_TH = เสียงต้นตำหรับของ Transport Tycoon Deluxe DOS edition
|
||||
description.tr_TR = Orijinal Transport Tycoon Deluxe DOS sürümü sesleri.
|
||||
description.uk_UA = Оригінальний набір звуків з Transport Tycoon Deluxe DOS edition.
|
||||
description.vi_VN = Âm thanh gốc từ phiên bản Transport Tycoon Deluxe trên DOS
|
||||
description.zh_CN = 运输大亨DOS豪华版原版音效包.
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版的音效。
|
||||
|
@@ -32,13 +32,15 @@ description.hu_HU = Az eredeti Transport Tycoon Deluxe DOS (német) verziójána
|
||||
description.id_ID = Grafik orisinil Transport Tycoon Deluxe versi DOS (Jerman).
|
||||
description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe DOS (þýsku) útgáfunni.
|
||||
description.it_IT = Grafica originale di Transport Tycoon Deluxe (tedesco), edizione DOS.
|
||||
description.ja_JP = オリジナルDOS『トランスポートタイクンデラックス』ドイツ語版 画像
|
||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (DOS・ドイツ版)
|
||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에디션(독일)의 그래픽입니다.
|
||||
description.lb_LU = Original Transport Tycoon Deluxe DOS (Däitsch) Editioun Grafik.
|
||||
description.lt_LT = Originali Transport Tycoon Deluxe DOS (Vokiečių) leidimo grafika.
|
||||
description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for DOS (tysk).
|
||||
description.nl_NL = Originele graphics van de Duitse Transport Tycoon Deluxe DOS-versie.
|
||||
description.nn_NO = Original grafikk frå Transport Tycoon Deluxe for DOS (tysk).
|
||||
description.pl_PL = Oryginalna edycja grafik dla Transport Tycoon Deluxe DOS (German).
|
||||
description.pt_BR = Gráficos Originais do Transport Tycoon Deluxe, Edição DOS alemã.
|
||||
description.pt_PT = Gráficos originais da edição DOS (Alemã) de Transport Tycoon Deluxe.
|
||||
description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru DOS (ediţia germană).
|
||||
description.ru_RU = Оригинальная графика из немецкой версии Transport Tycoon Deluxe для DOS.
|
||||
@@ -49,6 +51,7 @@ description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, DOS-utgåvan
|
||||
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் DOS (செருமன்) பதிப்பு அசைவூட்டங்கள்.
|
||||
description.th_TH = กราฟฟิกต้นตำหรับของ Transport Tycoon Deluxe DOS (German) edition
|
||||
description.tr_TR = Orijinal Transport Tycoon Deluxe DOS (Almanca) sürümü grafikleri.
|
||||
description.uk_UA = Оригінальна графіка з Transport Tycoon Deluxe DOS edition (німецького).
|
||||
description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên DOS (tiếng Đức)
|
||||
description.zh_CN = 运输大亨DOS豪华德语版原版图形包.
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版 (德國版) 的圖形。
|
||||
|
@@ -32,13 +32,15 @@ description.hu_HU = Az eredeti Transport Tycoon Deluxe Windows verziójának gra
|
||||
description.id_ID = Grafik orisinil Transport Tycoon Deluxe versi Windows.
|
||||
description.is_IS = Upprunalega grafíkin úr Transport Tycoon Deluxe Windows útgáfunni.
|
||||
description.it_IT = Grafica originale di Transport Tycoon Deluxe, edizione Windows.
|
||||
description.ja_JP = オリジナルウィンドーズ『トランスポートタイクンデラックス』版 画像
|
||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 グラフィック (Windows)
|
||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도우 에디션의 그래픽입니다.
|
||||
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Grafik.
|
||||
description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo grafika.
|
||||
description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for Windows.
|
||||
description.nl_NL = Originele graphics van de Transport Tycoon Deluxe Windows-versie.
|
||||
description.nn_NO = Original grafikk frå Transport Tycoon Deluxe for Windows.
|
||||
description.pl_PL = Oryginalna edycja grafik dla Transport Tycoon Deluxe Windows.
|
||||
description.pt_BR = Gráficos Originais do Transport Tycoon, Edição Windows.
|
||||
description.pt_PT = Gráficos originais da edição Windows de Transport Tycoon Deluxe.
|
||||
description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru Windows.
|
||||
description.ru_RU = Оригинальная графика из Transport Tycoon Deluxe для Windows.
|
||||
@@ -49,6 +51,7 @@ description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, Windows-utg
|
||||
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு அசைவூட்டங்கள்.
|
||||
description.th_TH = กราฟฟิกต้ำตำหรับของ Transport Tycoon Deluxe Windows edition
|
||||
description.tr_TR = Orijinal Transport Tycoon Deluxe Windows sürümü grafikleri.
|
||||
description.uk_UA = Оригінальна графіка з Transport Tycoon Deluxe Windows edition.
|
||||
description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên Windows
|
||||
description.zh_CN = 运输大亨Windows豪华版原版图形包.
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的圖形。
|
||||
|
@@ -31,13 +31,15 @@ description.hu_HU = Az eredeti Transport Tycoon Deluxe Windows verziójának zen
|
||||
description.id_ID = Musik pengiring orisinil Transport Tycoon Deluxe versi Windows.
|
||||
description.is_IS = Upprunalega tónlistin úr Transport Tycoon Deluxe Windows útgáfunni.
|
||||
description.it_IT = Musica originale di Transport Tycoon Deluxe, edizione Windows.
|
||||
description.ja_JP = オリジナルウィンドーズ『トランスポートタイクンデラックス』版音楽
|
||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 音楽 (Windows)
|
||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도우 에디션의 음악입니다.
|
||||
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Music.
|
||||
description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo muzika.
|
||||
description.nb_NO = Original musikk fra Transport Tycoon Deluxe for Windows.
|
||||
description.nl_NL = Originele muziek van de Transport Tycoon Deluxe Windows-versie.
|
||||
description.nn_NO = Original musikk frå Transport Tycoon Deluxe for Windows.
|
||||
description.pl_PL = Oryginalna edycja utworów muzycznych w Transport Tycoon Deluxe Windows.
|
||||
description.pt_BR = Música Original do Transport Tycoon Deluxe, Edição Windows
|
||||
description.pt_PT = Música original da edição Windows de Transport Tycoon Deluxe.
|
||||
description.ro_RO = Setul de muzică original al Transport Tycoon Deluxe pentru Windows.
|
||||
description.ru_RU = Оригинальный набор музыкального оформления из игры Transport Tycoon Deluxe для Windows.
|
||||
@@ -48,6 +50,7 @@ description.sv_SE = Originalmusiken från Transport Tycoon Deluxe, Windows-utgå
|
||||
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு இசை.
|
||||
description.th_TH = เพลงต้นตำหรับชอง Transport Tycoon Deluxe Windows edition
|
||||
description.tr_TR = Orijinal Transport Tycoon Deluxe Windows sürümü müzikleri.
|
||||
description.uk_UA = Оригінальна музика з Transport Tycoon Deluxe Windows edition.
|
||||
description.vi_VN = Nhạc gốc từ phiên bản Transport Tycoon Deluxe trên Windows
|
||||
description.zh_CN = Transport Tycoon Deluxe(运输大亨Windows豪华版)的原版音乐包
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的音樂。
|
||||
|
@@ -31,13 +31,15 @@ description.hu_HU = Az eredeti Transport Tycoon Deluxe Windows verziójának han
|
||||
description.id_ID = Efek suara orisinil Transport Tycoon Deluxe versi Windows.
|
||||
description.is_IS = Upprunalega hljóðið úr Transport Tycoon Deluxe Windows útgáfunni.
|
||||
description.it_IT = Suoni originali di Transport Tycoon Deluxe, edizione Windows.
|
||||
description.ja_JP = オリジナルウィンドーズ『トランスポートタイクンデラックス』版音楽
|
||||
description.ja_JP = Transport Tycoon Deluxe オリジナル版 効果音 (Windows)
|
||||
description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도우 에디션의 효과음입니다.
|
||||
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Sound.
|
||||
description.lt_LT = Originalūs Transport Tycoon Deluxe Windows leidimo garsai.
|
||||
description.nb_NO = Originale lyder fra Transport Tycoon Deluxe for Windows.
|
||||
description.nl_NL = Originele geluiden van de Transport Tycoon Deluxe Windows-versie.
|
||||
description.nn_NO = Originale lydar frå Transport Tycoon Deluxe for Windows.
|
||||
description.pl_PL = Oryginalna edycja dźwięków dla Transport Tycoon Deluxe Windows.
|
||||
description.pt_BR = Sons Originais do Transport Tycoon Deluxe, Edição Windows.
|
||||
description.pt_PT = Sons originais da edição Windows de Transport Tycoon Deluxe.
|
||||
description.ro_RO = Setul de sunete original al Transport Tycoon Deluxe pentru Windows.
|
||||
description.ru_RU = Оригинальный набор звукового оформления из игры Transport Tycoon Deluxe для Windows.
|
||||
@@ -48,6 +50,7 @@ description.sv_SE = Originalljuden från Transport Tycoon Deluxe, Windows-utgåv
|
||||
description.ta_IN = அசல் டிரான்ஸ்ஃபோர்ட் டைகூன் டீலக்ஸ் விண்டோஸ் பதிப்பு ஒலிகள்.
|
||||
description.th_TH = เสียงต้นตำหรับของ Transport Tycoon Deluxe Windows edition
|
||||
description.tr_TR = Orijinal Transport Tycoon Deluxe Windows sürümü sesleri.
|
||||
description.uk_UA = Оригінальний набір звуків з Transport Tycoon Deluxe Windows edition.
|
||||
description.vi_VN = Âm thanh gốc từ phiên bản Transport Tycoon Deluxe trên Windows
|
||||
description.zh_CN = Transport Tycoon Deluxe Windows (运输大亨Windows豪华版)的原版音效包.
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的音效。
|
||||
|
102
changelog.txt
102
changelog.txt
@@ -1,3 +1,105 @@
|
||||
1.3.3-RC1 (2013-11-17)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: Crash when the ICU layouter thinks a font is corrupted [FS#5711] (r26029, r26018, r26017, r26016, r26015)
|
||||
- Fix: Make the installer warning about Windows XP SP3 not trigger on the 64 bit Windows XP which is not really Windows XP to start with [FS#5773] (r26028)
|
||||
- Fix: Only forward key presses to the IME system if an edit box has the input focus (r26023, r25693, r25691, r25689, r25686, r25684, r25682, r25681, r25667)
|
||||
- Fix: Having trains miss a platform that is just being modified is less of a problem than having trains stop twice without moving [FS#5684] (r26013)
|
||||
- Fix: --help text of ./configure for packages that require pkg-config (r26011)
|
||||
- Fix: The AI/GS library name to use in Import, is not the name given by GetName but GetInstanceName [FS#5662] (r26010)
|
||||
- Fix: [Windows] Conditional expression with enumeral with non-enumeral type (r26009)
|
||||
- Fix: Game script showing vehicle on e.g. a goal, then the vehicle being removed and eventually being replaced by a non-user vehicle (most likely smoke) causing an assertion to trigger [FS#5804] (r26007, r26006)
|
||||
- Fix: Crash when transferring savegame from server to client [FS#5478] (r26005)
|
||||
- Fix: [OSX] Text input into an edit box would trigger hotkeys [FS#5705] (r26003, r25743, r25671)
|
||||
- Fix: Comma key collided with F12 key for hotkeys; also remove '+' as that is generally not a key (the '+' on the numpad is a separate one) [FS#5679] (r25973)
|
||||
- Fix: Rail laying sounds of others could be heard in multiplayer [FS#5665] (r25972)
|
||||
- Fix: [SDL] Recursive mutex locking when changing blitter [FS#5787] (r25970)
|
||||
- Fix: The wrong vehicle would be taken in a shared order vehicle list window when the ID >= 65536, causing assertions triggering later on [FS#5800] (r25965)
|
||||
- Fix: [OSX] Compilation under OSX 10.9 [FS#5797] (r25962, r25951, r25950, r25913)
|
||||
- Fix: [NewGRF] A powered rail type implies it is compatible as well, but some NewGRF did not state that causing the path reservation code to bail out in some cases because there was no compatible path [FS#5779] (r25961)
|
||||
- Fix: Temporary persistent storage modifications, e.g. command tests or those from GUI, were not properly reset, creating the possibility of desyncs [FS#5772] (r25956)
|
||||
- Fix: Train's 'force proceed' status gets reset when the track on the other side of the tile has a signal [FS#5723] (r25955)
|
||||
- Fix: Wrong signal conversions for savegames from before 0.4.5 [FS#5731, FS#5732] (r25954, r25953)
|
||||
- Fix: Do not skip numbers when skipping spaces and other sorting 'improving' characters [FS#5719] (r25952)
|
||||
- Fix: Text direction forcing characters were not filtered out, but shown as ? when ICU was not used for layouting. These are included in chat and console messages to force them to be displayed right [FS#5683] (r25949)
|
||||
- Fix: NewGRF inspect window in RTL mode (r25943)
|
||||
- Fix: [NoGo] Preserve the relative town growth progress when changing the town growth rate [FS#5786] (r25931)
|
||||
- Fix: Several drawing overflows in the signal GUI [FS#5733] (r25929, r25928, r25927)
|
||||
- Fix: Center the edit sign window like all query windows (r25918)
|
||||
- Fix: Initialization of default objects swapped cost and dates (r25868)
|
||||
- Fix: Use the actual sprite dimensions for sizing the dropdown arrow of dropdown widgets (r25864)
|
||||
- Fix: If the child widgets of a NWidgetHorizontal container do not fill the complete container, align them according to text direction [FS#5686] (r25862, r25729)
|
||||
- Fix: When clearing font cache, also clear layout cache [FS#5737] (r25860)
|
||||
- Fix: Goto button in order window was not always lowered when it should [FS#5783] (r25858, 25857)
|
||||
- Fix: Searching for a suitable font failed, if one of the fonts had no '?' glyph, and no baseset is installed [FS#5704] (r25822, r25820)
|
||||
- Fix: Sprite 0 was considered available, even if no baseset was loaded (r25821)
|
||||
- Fix: [GS] Language file scanner considered filenames starting with '.' as valid translations, resulting in languages with empty name, which causes trouble [FS#5750] (r25818)
|
||||
- Fix: [GS] Handle savegames which contain GS translations for languages with empty name more gently [FS#5750] (r25817)
|
||||
- Fix: [Script] ScriptTile::IsBuildableRectangle could report true for tiles outside of the map, if they happened to wrap around into a valid area [FS#5754] (r25815)
|
||||
- Fix: [Script] Decoding JSON data with an empty array from Admin port failed (r25809)
|
||||
- Fix: Ensure the vehicle bar is high enough for the start/stop vehicle graphics [FS#5740] (r25805)
|
||||
- Fix: Lower sprite and text at the vehicle bar if it is pressed [FS#5739] (r25804)
|
||||
- Fix: Draw start/stop graphics of the vehicle bar at the right place in RTL mode [FS#5738] (r25803)
|
||||
- Fix: [NewGRF] Do not allow changing palette when it is set by the NewGRF (r25794, r25793, r25972)
|
||||
- Fix: Some spelling corrections to Catalan and Latin American town names [FS#5746] (r25775, r25774)
|
||||
- Fix: If old savegames contain bridges over owned land, keep on drawing the bridges nevertheless [FS#5725] (r25753)
|
||||
- Fix: Several RTL alignment issues [FS#5692] (r25733, r25732, r25731)
|
||||
- Fix: NWidgetMatrix used pip_pre and pip_post inconsistently and incorrectly, causing misalignment for RTL [FS#5686] (r25727)
|
||||
- Fix: Right side of object class string was misaligned (r25726)
|
||||
- Fix: [OSX] Do not pass -mmacosx-version-min to compilers that do not support it (r25706)
|
||||
- Fix: Autoreplace/renew also refits free wagons [FS#5700] (r25698)
|
||||
- Fix: Textbuf caret rendering for complex scripts (e.g. Tamil) (r25696, r25694, r25652, r25651, r25092, r25091)
|
||||
- Fix: Vehicle::MarkDirty must be called for the front engine [FS#5700] (r25695)
|
||||
- Fix: [Win32] Several issues regarding conversion of characters (r25677, r25676, r25675, r25674, r25673)
|
||||
- Fix: [Win32] Handle Unicode characters from outside the BMP correctly (r25672, r25670, r25669, r25668)
|
||||
- Fix: [OSX] Crash when unhiding the main window [FS#4689] (r25665)
|
||||
- Fix: [OSX] Bootstrap downloading of a baseset did not work [FS#4847] (r25664)
|
||||
- Fix: [OSX] Monospace font detection [FS#4857] (r25663, r25662)
|
||||
- Fix: [OSX] Rework font detection to work even if no default font sprites are present [FS#4847] (r25661)
|
||||
- Fix: [OSX] The name is OpenTTD, not OTTD (r25660)
|
||||
- Fix: [OSX] System mouse cursor could become visible during dragging [FS#4420] (r25659)
|
||||
- Fix: [OSX] The mouse cursor would sometimes jump near the window borders [FS#4392] (r25658)
|
||||
- Fix: [OSX] The new 10.7 fullscreen code can now also be compiled with older SDK versions [FS#4744] (r25656)
|
||||
- Fix: [OSX] Mouse cursor was not displayed properly after switching to fullscreen on 10.7+ (r25655)
|
||||
- Fix: Improve character and word deletion for CJK languages and complex scripts (r25654, r25653)
|
||||
- Fix: [OSX] Define version constants before they are used (r25643)
|
||||
- Fix: Some icu_config scripts are too stupid to separate two ldflags by spaces, thus only call it with one (r25642, r25638)
|
||||
- Fix: Do not suggest a start date for the game when there will be no vehicles available at all (r25640, r25639)
|
||||
- Fix: City list sort of population and rating are reversed compared to the icon [FS#5666] (r25630)
|
||||
- Fix: [Script] Give a slightly less generic error when removing inexisting rail [FS#5651] (r25614)
|
||||
- Fix: [Script] Do not return ERR_UNKNOWN when trying to move an order to its current location [FS#5648] (r25612)
|
||||
- Fix: Various misreferences in AI and GS changelog [FS#5649] (r25607)
|
||||
- Fix: [Script] If a NewGRF returned station type that could not be built by an AI via callback 18, an unknown error would be thrown instead of falling back to the default station [FS#5641] (r25605)
|
||||
- Fix: Only the front engine's date of last service was updated [FS#5550] (r25604)
|
||||
|
||||
|
||||
1.3.2 (2013-07-27)
|
||||
------------------------------------------------------------------------
|
||||
(None)
|
||||
|
||||
|
||||
1.3.2-RC2 (2013-07-13)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: [Admin] End-of-rcon data could not be determined reliably for any rcon command [FS#5643] (r25598, r25588, r25587)
|
||||
- Fix: [Content] When the server closed the connection, the client would for eternity try to read a packet and never timeout making it impossible to reconnect [FS#5635] (r25597)
|
||||
- Fix: [Script] Changing the script difficulty level in-game would also change the settings using the default even though they were not allowed to change in-game [FS#5644] (r25592)
|
||||
- Fix: [Admin] Ensure that sent and received length of json strings are the same [FS#5646] (r25590, r25589)
|
||||
- Fix: [Squirrel] Stack overflow did not show an error, due to the stack to throw the error already being full [FS#5320] (r25585)
|
||||
- Fix: [Script] Documentation implied that XXList::AddItem has a default for value if it isn't filled in [FS#5638] (r25579, r25577)
|
||||
- Fix: Layouter caused significant slowdown with text heavy windows, cache it to make it manageable (r25574, r25570, r25569, r25567, r25564)
|
||||
- Fix: Make content list appear faster (r25573)
|
||||
- Fix: Non-ICU layouter started new lines with the space which triggered the linebreak (r25568)
|
||||
- Fix: If the next order cannot be resolved, reset the current order property instead of leaving it in an intermediate state [FS#5633] (r25562)
|
||||
- Fix: [Squirrel] Infinite recursion loop in freeing data via a looping set of references [FS#5568] (r25558)
|
||||
- Fix: One could build bridges over owned land of another company [FS#5524] (r25557)
|
||||
- Fix: [Script] Texts from scripts were not validated before they were shown, causing an assertion to trigger [FS#5632] (r25555)
|
||||
- Fix: Provide a warning when no vehicles are available, and tell what to do in that case [FS#5530] (r25553)
|
||||
- Fix: Possible reading of uninitialised memory due to undefined execution order (r25551)
|
||||
- Fix: [Windows] Race condition between two drawing threads could crash OpenTTD [FS#5571] (r25550)
|
||||
- Fix: ICU returns the width of the visual run as if the trailing space was added (in case a newline was added). This caused the width to be more than the requested width, but it would still be drawn correctly [FS#5626] (r25547)
|
||||
- Fix: Small memory leaks (r25546)
|
||||
- Fix: [GS] The checks and validations for setting the extra text in the town window became too stringent [FS#5625] (r25544)
|
||||
|
||||
|
||||
1.3.2-RC1 (2013-06-30)
|
||||
------------------------------------------------------------------------
|
||||
- Remove: SETX(Y) does not work at all with other than default fonts, so get rid of it (r25454)
|
||||
|
13
config.lib
13
config.lib
@@ -1498,7 +1498,7 @@ make_cflags_and_ldflags() {
|
||||
LDFLAGS="$LDFLAGS -Wl,--subsystem,windows"
|
||||
fi
|
||||
|
||||
LIBS="$LIBS -lws2_32 -lwinmm -lgdi32 -ldxguid -lole32"
|
||||
LIBS="$LIBS -lws2_32 -lwinmm -lgdi32 -ldxguid -lole32 -limm32"
|
||||
|
||||
if [ $cc_version -ge 44 ]; then
|
||||
LDFLAGS_BUILD="$LDFLAGS_BUILD -static-libgcc -static-libstdc++"
|
||||
@@ -1558,7 +1558,7 @@ make_cflags_and_ldflags() {
|
||||
LDFLAGS="$OSX_LD_SYSROOT $LDFLAGS"
|
||||
fi
|
||||
|
||||
if [ "$enable_universal" = "0" ] && [ $cc_version -ge 40 ]; then
|
||||
if [ "$enable_universal" = "0" ] && [ $cc_version -gt 40 ]; then
|
||||
# Only set the min version when not doing an universal build.
|
||||
# Universal builds set the version elsewhere.
|
||||
if [ "$cpu_type" = "64" ]; then
|
||||
@@ -1718,9 +1718,9 @@ make_cflags_and_ldflags() {
|
||||
|
||||
# Some icu-configs have the 'feature' of not adding a space where others do add the space
|
||||
if [ "$static_icu" != "0" ]; then
|
||||
LIBS="$LIBS `$icu_config --ldflags-searchpath` `$icu_config --ldflags-libsonly --ldflags-layout | tr '\n\r' ' ' | sed s/licu/lsicu/g`"
|
||||
LIBS="$LIBS `$icu_config --ldflags-searchpath` `($icu_config --ldflags-libsonly; $icu_config --ldflags-layout) | tr '\n\r' ' ' | sed s/licu/lsicu/g`"
|
||||
else
|
||||
LIBS="$LIBS `$icu_config --ldflags-searchpath` `$icu_config --ldflags-libsonly --ldflags-layout | tr '\n\r' ' '`"
|
||||
LIBS="$LIBS `$icu_config --ldflags-searchpath` `($icu_config --ldflags-libsonly; $icu_config --ldflags-layout) | tr '\n\r' ' '`"
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -3631,12 +3631,13 @@ showhelp() {
|
||||
echo " --with-cocoa enables COCOA video driver (OSX ONLY)"
|
||||
echo " --with-sdl[=sdl-config] enables SDL video driver support"
|
||||
echo " --with-zlib[=zlib.a] enables zlib support"
|
||||
echo " --with-liblzma[=liblzma.a] enables liblzma support"
|
||||
echo " --with-liblzma[=\"pkg-config liblzma\"]"
|
||||
echo " enables liblzma support"
|
||||
echo " --with-liblzo2[=liblzo2.a] enables liblzo2 support"
|
||||
echo " --with-png[=libpng-config] enables libpng support"
|
||||
echo " --with-freetype[=freetype-config]"
|
||||
echo " enables libfreetype support"
|
||||
echo " --with-fontconfig[=pkg-config fontconfig]"
|
||||
echo " --with-fontconfig[=\"pkg-config fontconfig\"]"
|
||||
echo " enables fontconfig support"
|
||||
echo " --with-icu[=icu-config] enables icu (used for right-to-left support)"
|
||||
echo " --static-icu try to link statically (libsicu instead of"
|
||||
|
@@ -150,7 +150,8 @@ Table of contents
|
||||
|
||||
Note: No additional authentication is required for rcon commands.
|
||||
|
||||
The server will reply with a ADMIN_PACKET_SERVER_RCON packet. Applications
|
||||
The server will reply with one or more ADMIN_PACKET_SERVER_RCON packets.
|
||||
Finally an ADMIN_PACKET_ADMIN_RCON_END packet will be sent. Applications
|
||||
will not receive the answer twice if they have asked for the AdminUpdateType
|
||||
ADMIN_UPDATE_CONSOLE, as the result is not printed on the servers console
|
||||
(just like clients rcon commands).
|
||||
@@ -160,6 +161,13 @@ Table of contents
|
||||
Chat from the server itself will only be sent to the admin network when it
|
||||
was not sent from the admin network.
|
||||
|
||||
Note that when content is queried or updated via rcon, the processing
|
||||
happens asynchronously. But the ADMIN_PACKET_ADMIN_RCON_END packet is sent
|
||||
already right after the content is requested as there's no immediate output.
|
||||
Thus other packages and the output of content rcon command may be sent at
|
||||
an arbitrary later time, mixing into the output of other console activity,
|
||||
e.g. also of possible subsequent other rcon commands sent.
|
||||
|
||||
|
||||
5.0) Sending chat
|
||||
---- ------------
|
||||
|
@@ -1,6 +1,6 @@
|
||||
OpenTTD's known bugs
|
||||
Last updated: 2013-06-30
|
||||
Release version: 1.3.2-RC1
|
||||
Last updated: 2013-11-17
|
||||
Release version: 1.3.3-RC1
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -403,3 +403,44 @@ Mouse cursor going missing with SDL [FS#4997]:
|
||||
We cannot fix this problem as SDL simply does not provide the
|
||||
required information in these corner cases. This is a bug in SDL
|
||||
and as such there is little that we can do about it.
|
||||
|
||||
Inconsistent catchment areas [FS#5661]:
|
||||
Due to performance decisions the catchment area for cargo accepted
|
||||
by a station for delivery to houses or industries differs from the
|
||||
catchment area for cargo that is delivered to stations from houses
|
||||
or industries.
|
||||
|
||||
Conceptually they work the same, but the effect in game differs.
|
||||
They work by finding the closest destination "around" the source
|
||||
which is within a certain distance. This distance depends on the
|
||||
type of station, e.g. road stops have a smaller catchment area than
|
||||
large airports. In both cases the bounding box, the smallest
|
||||
rectangle that contains all tiles of something, is searched for the
|
||||
target of the cargo, and then spiraling outwards finding the closest
|
||||
tile of the target.
|
||||
|
||||
In the case of a station with two tiles spread far apart with a house
|
||||
that is within the station's bounding box, it would be possible that
|
||||
the spiraling search from the house does not reach one of the station
|
||||
tiles before the search ends, i.e. all tiles within that distance
|
||||
are searched. So the house does not deliver cargo to the station. On
|
||||
the other hand, the station will deliver cargo because the house
|
||||
falls within the bounding box, and thus search area.
|
||||
|
||||
It is possible to make these consistent, but then cargo from a house
|
||||
to a station needs to search up to 32 tiles around itself, i.e. 64
|
||||
by 64 tiles, to find all possible stations it could deliver to
|
||||
instead of 10 by 10 tiles (40 times more tiles). Alternatively the
|
||||
search from a station could be changed to use the actual tiles, but
|
||||
that would require considering checking 10 by 10 tiles for each of
|
||||
the tiles of a station, instead of just once.
|
||||
|
||||
Trains might not stop at platforms that are currently being changed [FS#5553]:
|
||||
If you add tiles to or remove tiles from a platform while a train is
|
||||
approaching to stop at the same platform, that train can miss the place
|
||||
where it's supposed to stop and pass the station without stopping. This
|
||||
is caused by the fact that the train is considered to already have stopped
|
||||
if it's beyond its assigned stopping location. We can't let the train stop
|
||||
just anywhere in the station because then it would never leave the station
|
||||
if you have the same station in the order list multiple times in a row or
|
||||
if there is only one station in the order list (see FS#5684).
|
||||
|
@@ -9,3 +9,4 @@ Exec=!!TTD!!
|
||||
Terminal=false
|
||||
Categories=!!MENU_GROUP!!
|
||||
Comment=A clone of Transport Tycoon Deluxe
|
||||
Keywords=game;simulation;transport;tycoon;deluxe;economics;multiplayer;money;train;ship;bus;truck;aircraft;cargo
|
||||
|
@@ -1,3 +1,21 @@
|
||||
openttd (1.3.3~RC1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.3.3-RC1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Sun, 17 Nov 2013 19:00:00 +0100
|
||||
|
||||
openttd (1.3.2-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.3.2
|
||||
|
||||
-- OpenTTD <info@openttd.org> Sat, 27 Jul 2013 18:00:00 +0200
|
||||
|
||||
openttd (1.3.2~RC2-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.3.2-RC2
|
||||
|
||||
-- OpenTTD <info@openttd.org> Sat, 13 Jul 2013 12:00:00 +0200
|
||||
|
||||
openttd (1.3.2~RC1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.3.2-RC1
|
||||
|
@@ -3,11 +3,10 @@ Section: games
|
||||
Priority: optional
|
||||
Maintainer: Matthijs Kooijman <matthijs@stdin.nl>
|
||||
Uploaders: Jordi Mallach <jordi@debian.org>
|
||||
DM-Upload-Allowed: yes
|
||||
Build-Depends: debhelper (>= 7.0.50), libsdl-dev, zlib1g-dev, libpng-dev, libfreetype6-dev, libfontconfig-dev, libicu-dev, liblzma-dev, liblzo2-dev
|
||||
Standards-Version: 3.8.4
|
||||
Vcs-Browser: http://git.debian.org/?p=collab-maint/openttd.git
|
||||
Vcs-Git: git://git.debian.org/collab-maint/openttd.git
|
||||
Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/openttd.git
|
||||
Vcs-Git: git://anonscm.debian.org/collab-maint/openttd.git
|
||||
Homepage: http://www.openttd.org/
|
||||
|
||||
Package: openttd
|
||||
|
@@ -1,77 +1,106 @@
|
||||
This package was debianized by Matthijs Kooijman <matthijs@stdin.nl>
|
||||
on Wed, 15 Sep 2004 00:24:01 +0200.
|
||||
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: OpenTTD
|
||||
Upstream-Contact: info@openttd.org, #openttd on irc.oftc.net
|
||||
Source: http://www.openttd.org
|
||||
|
||||
Upstream author: Ludvig Strigeus (ludde) and many others.
|
||||
Upstream homepage: http://www.openttd.org
|
||||
|
||||
Copyright © 2004-2009 Ludvig Strigeous and others.
|
||||
Files: *
|
||||
Copyright: © 2004-2012 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
|
||||
published by the Free Software Foundation;
|
||||
.
|
||||
This program 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 this package; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
.
|
||||
On Debian systems, the complete text of the GNU General Public License
|
||||
version 2 can be found in `/usr/share/common-licenses/GPL-2'.
|
||||
|
||||
OpenTTD License:
|
||||
Files: src/3rdparty/squirrel/*
|
||||
Copyright: © 2003-2009 Alberto Demichelis
|
||||
License: Zlib
|
||||
|
||||
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
|
||||
published by the Free Software Foundation;
|
||||
Files: src/3rdparty/md5/*
|
||||
Copyright: © 1999, 2000, 2002 Aladdin Enterprises. All rights reserved.
|
||||
License: Zlib
|
||||
|
||||
This program 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 this package; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
License: Zlib
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
.
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
.
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software in
|
||||
a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
.
|
||||
2. Altered source versions must be plainly marked as such, and must not
|
||||
be misrepresented as being the original software.
|
||||
.
|
||||
3. This notice may not be removed or altered from any source
|
||||
distribution.
|
||||
|
||||
On Debian systems, the complete text of the GNU General Public License
|
||||
version 2 can be found in `/usr/share/common-licenses/GPL-2'.
|
||||
Files: os/dos/exe2coff/*
|
||||
Copyright: © 1998 DJ Delorie
|
||||
License: GPL-2.0 with additional restrictions
|
||||
This document is Copyright (C) DJ Delorie and may be distributed
|
||||
verbatim, but changing it is not allowed.
|
||||
.
|
||||
Source code copyright DJ Delorie is distributed under the terms of the
|
||||
GNU General Public Licence, with the following exceptions:
|
||||
.
|
||||
* Sources used to build crt0.o, gcrt0.o, libc.a, libdbg.a, and
|
||||
libemu.a are distributed under the terms of the GNU Library General
|
||||
Public License, rather than the GNU GPL.
|
||||
.
|
||||
* Any existing copyright or authorship information in any given source
|
||||
file must remain intact. If you modify a source file, a notice to that
|
||||
effect must be added to the authorship information in the source file.
|
||||
.
|
||||
* Runtime binaries, as provided by DJ in DJGPP, may be distributed
|
||||
without sources ONLY if the recipient is given sufficient information
|
||||
to obtain a copy of djgpp themselves. This primarily applies to
|
||||
go32-v2.exe, emu387.dxe, and stubedit.exe.
|
||||
.
|
||||
* Runtime objects and libraries, as provided by DJ in DJGPP, when
|
||||
linked into an application, may be distributed without sources ONLY
|
||||
if the recipient is given sufficient information to obtain a copy of
|
||||
djgpp themselves. This primarily applies to crt0.o and libc.a.
|
||||
.
|
||||
On Debian systems, the complete text of the GNU General Public License
|
||||
version 2 can be found in `/usr/share/common-licenses/GPL-2'.
|
||||
Comment:
|
||||
Given only the exe2coff.c file is distributed in the source distribution (and
|
||||
nothing in Debian binary distribution), it seems only the 2nd condition
|
||||
applies.
|
||||
|
||||
This package contains an embedded version of the "Squirrel" programming
|
||||
language, which is shipped under the following license:
|
||||
|
||||
Copyright (c) 2003-2009 Alberto Demichelis
|
||||
|
||||
This software is provided 'as-is', without any
|
||||
express or implied warranty. In no event will the
|
||||
authors be held liable for any damages arising from
|
||||
the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software
|
||||
for any purpose, including commercial applications,
|
||||
and to alter it and redistribute it freely, subject
|
||||
to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be
|
||||
misrepresented; you must not claim that
|
||||
you wrote the original software. If you
|
||||
use this software in a product, an
|
||||
acknowledgment in the product
|
||||
documentation would be appreciated but is
|
||||
not required.
|
||||
|
||||
2. Altered source versions must be plainly
|
||||
marked as such, and must not be
|
||||
misrepresented as being the original
|
||||
software.
|
||||
|
||||
3. This notice may not be removed or
|
||||
altered from any source distribution.
|
||||
|
||||
This package contains an implementation of the md5 hash algorithm, which
|
||||
is shipped under the following license:
|
||||
|
||||
Copyright (C) 1999, 2000, 2002 Aladdin Enterprises. All rights reserved.
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgment in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
Files: os/dos/cwsdpmi/*
|
||||
Source: http://homer.rice.edu/~sandmann/cwsdpmi/index.html
|
||||
Copyright: © 1995-2000 Charles W Sandmann (sandmann@clio.rice.edu)
|
||||
License: Custom binary-only license
|
||||
This is release 5. The files in this binary distribution may be redistributed
|
||||
under the GPL (with source) or without the source code provided:
|
||||
.
|
||||
* CWSDPMI.EXE or CWSDPR0.EXE are not modified in any way except via CWSPARAM.
|
||||
.
|
||||
* CWSDSTUB.EXE internal contents are not modified in any way except via
|
||||
CWSPARAM or STUBEDIT. It may have a COFF image plus data appended to it.
|
||||
.
|
||||
* Notice to users that they have the right to receive the source code and/or
|
||||
binary updates for CWSDPMI. Distributors should indicate a site for the
|
||||
source in their documentation.
|
||||
Comment:
|
||||
Files are distributed as binary only, so the second option in the license
|
||||
("without source code provided: ...") is applicable.
|
||||
|
@@ -1,2 +1,2 @@
|
||||
?package(openttd):needs="X11" section="Games/Simulation" title="OpenTTD"\
|
||||
command="/usr/share/games/openttd/openttd-wrapper" icon="/usr/share/pixmaps/openttd.32.xpm"
|
||||
command="/usr/games/openttd" icon="/usr/share/pixmaps/openttd.32.xpm"
|
||||
|
@@ -4,7 +4,7 @@
|
||||
|
||||
# Use debhelper default for all targets (but some are overridden below).
|
||||
%:
|
||||
dh $@
|
||||
dh --parallel $@
|
||||
|
||||
DEB_HOST_GNU_TYPE=$(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
|
||||
DEB_BUILD_GNU_TYPE=$(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
|
||||
@@ -12,21 +12,29 @@ ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_BUILD_GNU_TYPE))
|
||||
CROSS= --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
|
||||
endif
|
||||
|
||||
# This prevents linking uselessly to libicudata and silences a warning
|
||||
# in the build process.
|
||||
DEB_LDFLAGS_MAINT_APPEND="-Wl,-as-needed"
|
||||
|
||||
# Enable all hardening options (since openttd offers a network-listening
|
||||
# service that handles untrusted data).
|
||||
DEB_BUILD_MAINT_OPTIONS=hardening=+all
|
||||
|
||||
# Load buildflags (this uses dpkg-buildflags). Note that we don't export
|
||||
# them, but instead pass them to ./configure explicitly.
|
||||
include /usr/share/dpkg/buildflags.mk
|
||||
|
||||
# Pass custom options to configure. Since it's not autoconf but a custom
|
||||
# script, some of the option names are slightly different. We also need
|
||||
# to be explicit about the dependencies, in case we're not running in a
|
||||
# clean build root.
|
||||
override_dh_auto_configure:
|
||||
./configure $(CROSS) --prefix-dir=/usr --install-dir=debian/openttd --without-allegro --with-zlib --with-sdl --with-png --with-freetype --with-fontconfig --with-icu --with-liblzo2 --with-lzma --without-iconv --disable-strip CFLAGS="$(CFLAGS) -g" LDFLAGS="$(LDFLAGS) -Wl,-as-needed"
|
||||
./configure $(CROSS) --prefix-dir=/usr --install-dir=debian/openttd --without-allegro --with-zlib --with-sdl --with-png --with-freetype --with-fontconfig --with-icu --with-liblzo2 --with-lzma --without-iconv --disable-strip CFLAGS="$(CFLAGS) $(CPPFLAGS)" CXXFLAGS="$(CXXFLAGS) $(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" CFLAGS_BUILD="$(CFLAGS) $(CPPFLAGS)" CXXFLAGS_BUILD="$(CXXFLAGS) $(CPPFLAGS)" LDFLAGS_BUILD="$(LDFLAGS)"
|
||||
|
||||
# Do some extra installation
|
||||
override_dh_auto_install:
|
||||
$(MAKE) install DO_NOT_INSTALL_CHANGELOG=1 DO_NOT_INSTALL_LICENSE=1
|
||||
|
||||
# Install the wrapper and make it executable
|
||||
install -d debian/openttd/usr/share/games/openttd/
|
||||
install -m755 debian/openttd-wrapper debian/openttd/usr/share/games/openttd/
|
||||
|
||||
# Don't do testing. Because the OpenTTD Makefile always does dependency
|
||||
# generation (even on invalid targets), dh_auto_test thinks there is a
|
||||
# "test" target, while there isn't.
|
||||
|
3
os/dos/cwsdpmi/README.licensing
Normal file
3
os/dos/cwsdpmi/README.licensing
Normal file
@@ -0,0 +1,3 @@
|
||||
The files in this directory are not licensed under the same terms as the
|
||||
rest of OpenTTD. Licensing details can be found in OpenTTD's readme.txt
|
||||
and in this directory or subdirectories as well.
|
3
os/dos/exe2coff/README.licensing
Normal file
3
os/dos/exe2coff/README.licensing
Normal file
@@ -0,0 +1,3 @@
|
||||
The files in this directory are not licensed under the same terms as the
|
||||
rest of OpenTTD. Licensing details can be found in OpenTTD's readme.txt
|
||||
and in this directory or subdirectories as well.
|
@@ -3,9 +3,9 @@
|
||||
# $Id$
|
||||
|
||||
cd `dirname $0`
|
||||
cc -o exe2coff exe2coff.c || exit
|
||||
cc -o exe2coff/exe2coff exe2coff/exe2coff.c || exit
|
||||
cp $1 binary.exe || exit
|
||||
./exe2coff binary.exe || exit
|
||||
cat cwsdstub.exe binary > binary.exe || exit
|
||||
./exe2coff/exe2coff binary.exe || exit
|
||||
cat cwsdpmi/cwsdstub.exe binary > binary.exe || exit
|
||||
mv binary.exe $1
|
||||
rm binary exe2coff
|
||||
rm binary exe2coff/exe2coff
|
||||
|
@@ -1,6 +1,6 @@
|
||||
@echo off
|
||||
|
||||
set OPENTTD_VERSION=1.3.2-RC1
|
||||
set OPENTTD_VERSION=1.3.3-RC1
|
||||
set OPENSFX_VERSION=0.8.0
|
||||
set NOSOUND_VERSION=0.8.0
|
||||
set OPENGFX_VERSION=1.2.0
|
||||
|
@@ -1,7 +1,7 @@
|
||||
# Version numbers to update
|
||||
!define APPV_MAJOR 1
|
||||
!define APPV_MINOR 3
|
||||
!define APPV_MAINT 2
|
||||
!define APPV_MAINT 3
|
||||
!define APPV_BUILD 0
|
||||
!define APPV_EXTRA "-RC1"
|
||||
|
||||
@@ -545,15 +545,22 @@ FunctionEnd
|
||||
;-------------------------------------------------------------------------------
|
||||
; Determine windows version, returns "win9x" if Win9x/Me/2000/XP SP2- or "winnt" for the rest on the stack
|
||||
Function GetWindowsVersion
|
||||
GetVersion::WindowsPlatformArchitecture
|
||||
Pop $R0
|
||||
IntCmp $R0 64 WinNT 0
|
||||
ClearErrors
|
||||
StrCpy $R0 "win9x"
|
||||
${If} ${IsNT}
|
||||
${If} ${IsWinXP}
|
||||
${AndIf} ${AtLeastServicePack} 3
|
||||
${OrIf} ${AtLeastWin2003}
|
||||
StrCpy $R0 "winnt"
|
||||
GoTo WinNT
|
||||
${EndIf}
|
||||
${EndIf}
|
||||
GoTo Done
|
||||
WinNT:
|
||||
StrCpy $R0 "winnt"
|
||||
Done:
|
||||
Push $R0
|
||||
FunctionEnd
|
||||
|
||||
|
@@ -131,7 +131,7 @@
|
||||
<Culture>0x0809</Culture>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -176,7 +176,7 @@
|
||||
<Culture>0x0809</Culture>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<IgnoreSpecificDefaultLibraries>LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -233,7 +233,7 @@
|
||||
<Culture>0x0809</Culture>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -280,7 +280,7 @@
|
||||
<Culture>0x0809</Culture>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<IgnoreSpecificDefaultLibraries>LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -573,6 +573,7 @@
|
||||
<ClInclude Include="..\src\statusbar_gui.h" />
|
||||
<ClInclude Include="..\src\stdafx.h" />
|
||||
<ClInclude Include="..\src\strgen\strgen.h" />
|
||||
<ClInclude Include="..\src\string_base.h" />
|
||||
<ClInclude Include="..\src\string_func.h" />
|
||||
<ClInclude Include="..\src\string_type.h" />
|
||||
<ClInclude Include="..\src\stringfilter_type.h" />
|
||||
|
@@ -948,6 +948,9 @@
|
||||
<ClInclude Include="..\src\strgen\strgen.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\string_base.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\src\string_func.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
|
@@ -131,7 +131,7 @@
|
||||
<Culture>0x0809</Culture>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -176,7 +176,7 @@
|
||||
<Culture>0x0809</Culture>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<IgnoreSpecificDefaultLibraries>LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -233,7 +233,7 @@
|
||||
<Culture>0x0809</Culture>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<IgnoreSpecificDefaultLibraries>%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
@@ -280,7 +280,7 @@
|
||||
<Culture>0x0809</Culture>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<AdditionalDependencies>winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||
<IgnoreSpecificDefaultLibraries>LIBCMT.lib;%(IgnoreSpecificDefaultLibraries)</IgnoreSpecificDefaultLibraries>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
|
@@ -87,7 +87,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="true"
|
||||
IgnoreDefaultLibraryNames=""
|
||||
@@ -184,7 +184,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
LinkIncremental="0"
|
||||
SuppressStartupBanner="true"
|
||||
IgnoreDefaultLibraryNames="LIBCMT.lib"
|
||||
@@ -292,7 +292,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="true"
|
||||
IgnoreDefaultLibraryNames=""
|
||||
@@ -392,7 +392,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
LinkIncremental="0"
|
||||
SuppressStartupBanner="true"
|
||||
IgnoreDefaultLibraryNames="LIBCMT.lib"
|
||||
@@ -1566,6 +1566,10 @@
|
||||
RelativePath=".\..\src\strgen\strgen.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\string_base.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\string_func.h"
|
||||
>
|
||||
|
@@ -87,7 +87,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="true"
|
||||
IgnoreDefaultLibraryNames=""
|
||||
@@ -184,7 +184,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
LinkIncremental="0"
|
||||
SuppressStartupBanner="true"
|
||||
IgnoreDefaultLibraryNames="LIBCMT.lib"
|
||||
@@ -292,7 +292,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="true"
|
||||
IgnoreDefaultLibraryNames=""
|
||||
@@ -392,7 +392,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
LinkIncremental="0"
|
||||
SuppressStartupBanner="true"
|
||||
IgnoreDefaultLibraryNames="LIBCMT.lib"
|
||||
|
@@ -88,7 +88,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="true"
|
||||
IgnoreDefaultLibraryNames=""
|
||||
@@ -183,7 +183,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
LinkIncremental="0"
|
||||
SuppressStartupBanner="true"
|
||||
IgnoreDefaultLibraryNames="LIBCMT.lib"
|
||||
@@ -290,7 +290,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="true"
|
||||
IgnoreDefaultLibraryNames=""
|
||||
@@ -389,7 +389,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
LinkIncremental="0"
|
||||
SuppressStartupBanner="true"
|
||||
IgnoreDefaultLibraryNames="LIBCMT.lib"
|
||||
@@ -1563,6 +1563,10 @@
|
||||
RelativePath=".\..\src\strgen\strgen.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\string_base.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\string_func.h"
|
||||
>
|
||||
|
@@ -88,7 +88,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="true"
|
||||
IgnoreDefaultLibraryNames=""
|
||||
@@ -183,7 +183,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
LinkIncremental="0"
|
||||
SuppressStartupBanner="true"
|
||||
IgnoreDefaultLibraryNames="LIBCMT.lib"
|
||||
@@ -290,7 +290,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="true"
|
||||
IgnoreDefaultLibraryNames=""
|
||||
@@ -389,7 +389,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
AdditionalDependencies="winmm.lib ws2_32.lib imm32.lib libpng.lib zlibstat.lib lzo2.lib liblzma.lib libfreetype2.lib icuuc.lib icuin.lib icudt.lib icule.lib iculx.lib"
|
||||
LinkIncremental="0"
|
||||
SuppressStartupBanner="true"
|
||||
IgnoreDefaultLibraryNames="LIBCMT.lib"
|
||||
|
40
readme.txt
40
readme.txt
@@ -1,5 +1,5 @@
|
||||
Last updated: 2013-06-30
|
||||
Release version: 1.3.2-RC1
|
||||
Last updated: 2013-11-17
|
||||
Release version: 1.3.3-RC1
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ Table of contents
|
||||
* 8.1) Translation
|
||||
* 8.2) Previewing
|
||||
9.0) Troubleshooting
|
||||
10.0) Licensing
|
||||
X.X) Credits
|
||||
|
||||
|
||||
@@ -35,9 +36,9 @@ OpenTTD is a transport simulation game based upon the popular game Transport
|
||||
Tycoon Deluxe, written by Chris Sawyer. It attempts to mimic the original
|
||||
game as closely as possible while extending it with new features.
|
||||
|
||||
OpenTTD is licensed under the GNU General Public License version 2.0. For
|
||||
more information, see the file 'COPYING'.
|
||||
|
||||
OpenTTD is licensed under the GNU General Public License version 2.0,
|
||||
but includes some 3rd party software under different licenses. See the
|
||||
section "Licensing" below for details.
|
||||
|
||||
2.0) Contacting
|
||||
---- ----------
|
||||
@@ -476,9 +477,9 @@ DOS:
|
||||
website. Compilation is straight forward: use make, but do a './configure'
|
||||
before the first build. The build binary will need cwsdpmi.exe to be in
|
||||
the same directory as the openttd executable. cwsdpmi.exe can be found in
|
||||
the os/dos subdirectory. If you compile with stripping turned on a binary
|
||||
will be generated that does not need cwsdpmi.exe by adding the cswdstub.exe
|
||||
to the created OpenTTD binary.
|
||||
the os/dos/cwsdpmi subdirectory. If you compile with stripping turned on a
|
||||
binary will be generated that does not need cwsdpmi.exe by adding the
|
||||
cswdstub.exe to the created OpenTTD binary.
|
||||
|
||||
7.1) Required/optional libraries
|
||||
---- ---------------------------
|
||||
@@ -642,6 +643,29 @@ development section (http://www.tt-forums.net/viewforum.php?f=66) or GrfCrawler
|
||||
(see section 4.2 'OpenTTD directories') and rescan the list of available NewGRFs.
|
||||
Once you have all missing files, you are set to go.
|
||||
|
||||
10.0) Licensing
|
||||
----- ---------
|
||||
OpenTTD is licensed under the GNU General Public License version 2.0. For
|
||||
the complete license text, see the file 'COPYING'. This license applies
|
||||
to all files in this distribution, except as noted below.
|
||||
|
||||
The squirrel implementation in src/3rdparty/squirrel is licensed under
|
||||
the Zlib license. See src/3rdparty/squirrel/COPYRIGHT for the complete
|
||||
license text.
|
||||
|
||||
The md5 implementation in src/3rdparty/md5 is licensed under the Zlib
|
||||
license. See the comments in the source files in src/3rdparty/md5 for
|
||||
the complete license text.
|
||||
|
||||
The exe2coff implementation in os/dos/exe2coff is available under the
|
||||
GPL, with a number of additional terms. See os/dos/exe2coff/copying and
|
||||
os/dos/exe2coff/copying.dj for the exact licensing terms.
|
||||
|
||||
The CWSDPMI implementation in os/dos/cwsdpmi is distributed under a
|
||||
custom binary-only license that prohibits modification. The exact
|
||||
licensing terms can be found in os/dos/cwsdpmi/cwsdpmi.txt. The sources
|
||||
for these files can be downloaded at its author site, at:
|
||||
http://homer.rice.edu/~sandmann/cwsdpmi/csdpmi5s.zip
|
||||
|
||||
X.X) Credits
|
||||
---- -------
|
||||
|
@@ -306,6 +306,7 @@ station_type.h
|
||||
statusbar_gui.h
|
||||
stdafx.h
|
||||
strgen/strgen.h
|
||||
string_base.h
|
||||
string_func.h
|
||||
string_type.h
|
||||
stringfilter_type.h
|
||||
|
3
src/3rdparty/README.licensing
vendored
Normal file
3
src/3rdparty/README.licensing
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
The files in this directory are not licensed under the same terms as the
|
||||
rest of OpenTTD. Licensing details can be found in OpenTTD's readme.txt
|
||||
and in this directory or subdirectories as well.
|
6
src/3rdparty/squirrel/squirrel/squtils.h
vendored
6
src/3rdparty/squirrel/squirrel/squtils.h
vendored
@@ -37,9 +37,13 @@ public:
|
||||
~sqvector()
|
||||
{
|
||||
if(_allocated) {
|
||||
/* Break freeing loops, if this vector (indirectly) links to itself. */
|
||||
size_t allocated_size = _allocated * sizeof(T);
|
||||
_allocated = 0;
|
||||
|
||||
for(SQUnsignedInteger i = 0; i < _size; i++)
|
||||
_vals[i].~T();
|
||||
SQ_FREE(_vals, (_allocated * sizeof(T)));
|
||||
SQ_FREE(_vals, allocated_size);
|
||||
}
|
||||
}
|
||||
void reserve(SQUnsignedInteger newsize) { _realloc(newsize); }
|
||||
|
1
src/3rdparty/squirrel/squirrel/sqvm.cpp
vendored
1
src/3rdparty/squirrel/squirrel/sqvm.cpp
vendored
@@ -107,6 +107,7 @@ SQVM::SQVM(SQSharedState *ss)
|
||||
_errorhandler = _null_;
|
||||
_debughook = _null_;
|
||||
_can_suspend = false;
|
||||
_in_stackoverflow = false;
|
||||
_ops_till_suspend = 0;
|
||||
ci = NULL;
|
||||
INIT_CHAIN();ADD_TO_CHAIN(&_ss(this)->_gc_chain,this);
|
||||
|
5
src/3rdparty/squirrel/squirrel/sqvm.h
vendored
5
src/3rdparty/squirrel/squirrel/sqvm.h
vendored
@@ -170,6 +170,7 @@ public:
|
||||
|
||||
SQBool _can_suspend;
|
||||
SQInteger _ops_till_suspend;
|
||||
SQBool _in_stackoverflow;
|
||||
|
||||
bool ShouldSuspend()
|
||||
{
|
||||
@@ -200,8 +201,10 @@ inline SQObjectPtr &stack_get(HSQUIRRELVM v,SQInteger idx){return ((idx>=0)?(v->
|
||||
|
||||
#define PUSH_CALLINFO(v,nci){ \
|
||||
if(v->_callsstacksize == v->_alloccallsstacksize) { \
|
||||
if (v->_callsstacksize > 65535) {\
|
||||
if (v->_callsstacksize > 65535 && !v->_in_stackoverflow) {\
|
||||
v->_in_stackoverflow = true; \
|
||||
v->Raise_Error(_SC("stack overflow"));\
|
||||
v->CallErrorHandler(v->_lasterror);\
|
||||
return false;\
|
||||
}\
|
||||
v->GrowCallStack(); \
|
||||
|
@@ -47,6 +47,7 @@
|
||||
/* Load default data and store the name in the settings */
|
||||
config->Change(info->GetName(), -1, false, true);
|
||||
}
|
||||
config->AnchorUnchangeableSettings();
|
||||
|
||||
Backup<CompanyByte> cur_company(_current_company, company, FILE_LINE);
|
||||
Company *c = Company::Get(company);
|
||||
|
@@ -1303,7 +1303,7 @@ struct AIDebugWindow : public Window {
|
||||
}
|
||||
}
|
||||
|
||||
virtual EventState OnKeyPress(uint16 key, uint16 keycode)
|
||||
virtual EventState OnKeyPress(WChar key, uint16 keycode)
|
||||
{
|
||||
EventState state = ES_NOT_HANDLED;
|
||||
int num = CheckHotkeyMatch(aidebug_hotkeys, keycode, this);
|
||||
@@ -1514,7 +1514,7 @@ Window *ShowAIDebugWindow(CompanyID show_company)
|
||||
/**
|
||||
* Handler for global AI debug window hotkeys.
|
||||
*/
|
||||
EventState AIDebugGlobalHotkeys(uint16 key, uint16 keycode)
|
||||
EventState AIDebugGlobalHotkeys(WChar key, uint16 keycode)
|
||||
{
|
||||
int num = CheckHotkeyMatch<AIDebugWindow>(_aidebug_hotkeys, keycode, NULL, true);
|
||||
if (num == -1) return ES_NOT_HANDLED;
|
||||
|
@@ -99,7 +99,7 @@ struct BuildAirToolbarWindow : Window {
|
||||
}
|
||||
|
||||
|
||||
virtual EventState OnKeyPress(uint16 key, uint16 keycode)
|
||||
virtual EventState OnKeyPress(WChar key, uint16 keycode)
|
||||
{
|
||||
int num = CheckHotkeyMatch(airtoolbar_hotkeys, keycode, this);
|
||||
if (num == -1) return ES_NOT_HANDLED;
|
||||
@@ -187,7 +187,7 @@ Window *ShowBuildAirToolbar()
|
||||
return AllocateWindowDescFront<BuildAirToolbarWindow>(&_air_toolbar_desc, TRANSPORT_AIR);
|
||||
}
|
||||
|
||||
EventState AirportToolbarGlobalHotkeys(uint16 key, uint16 keycode)
|
||||
EventState AirportToolbarGlobalHotkeys(WChar key, uint16 keycode)
|
||||
{
|
||||
if (!CanBuildVehicleInfrastructure(VEH_AIRCRAFT)) return ES_NOT_HANDLED;
|
||||
int num = CheckHotkeyMatch<BuildAirToolbarWindow>(_airtoolbar_hotkeys, keycode, NULL, true);
|
||||
@@ -338,7 +338,7 @@ public:
|
||||
if (!as->IsAvailable()) {
|
||||
GfxFillRect(r.left + 1, y + 1, r.right - 1, y + this->line_height - 2, PC_BLACK, FILLRECT_CHECKER);
|
||||
}
|
||||
DrawString(r.left + WD_MATRIX_LEFT, r.right + WD_MATRIX_RIGHT, y + WD_MATRIX_TOP, as->name, ((int)i == _selected_airport_index) ? TC_WHITE : TC_BLACK);
|
||||
DrawString(r.left + WD_MATRIX_LEFT, r.right - WD_MATRIX_RIGHT, y + WD_MATRIX_TOP, as->name, ((int)i == _selected_airport_index) ? TC_WHITE : TC_BLACK);
|
||||
y += this->line_height;
|
||||
}
|
||||
break;
|
||||
|
@@ -207,7 +207,7 @@ void Blitter_32bppOptimized::Draw(Blitter::BlitterParams *bp, BlitterMode mode,
|
||||
}
|
||||
}
|
||||
|
||||
Sprite *Blitter_32bppOptimized::Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
|
||||
Sprite *Blitter_32bppOptimized::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
|
||||
{
|
||||
/* streams of pixels (a, r, g, b channels)
|
||||
*
|
||||
|
@@ -24,7 +24,7 @@ public:
|
||||
};
|
||||
|
||||
/* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
|
||||
/* virtual */ Sprite *Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
|
||||
/* virtual */ Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
|
||||
|
||||
/* virtual */ const char *GetName() { return "32bpp-optimized"; }
|
||||
|
||||
|
@@ -92,7 +92,7 @@ void Blitter_32bppSimple::DrawColourMappingRect(void *dst, int width, int height
|
||||
DEBUG(misc, 0, "32bpp blitter doesn't know how to draw this colour table ('%d')", pal);
|
||||
}
|
||||
|
||||
Sprite *Blitter_32bppSimple::Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
|
||||
Sprite *Blitter_32bppSimple::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
|
||||
{
|
||||
Blitter_32bppSimple::Pixel *dst;
|
||||
Sprite *dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + sprite->height * sprite->width * sizeof(*dst));
|
||||
|
@@ -28,7 +28,7 @@ class Blitter_32bppSimple : public Blitter_32bppBase {
|
||||
public:
|
||||
/* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
|
||||
/* virtual */ void DrawColourMappingRect(void *dst, int width, int height, PaletteID pal);
|
||||
/* virtual */ Sprite *Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
|
||||
/* virtual */ Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
|
||||
|
||||
/* virtual */ const char *GetName() { return "32bpp-simple"; }
|
||||
};
|
||||
|
@@ -112,7 +112,7 @@ void Blitter_8bppOptimized::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Z
|
||||
}
|
||||
}
|
||||
|
||||
Sprite *Blitter_8bppOptimized::Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
|
||||
Sprite *Blitter_8bppOptimized::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
|
||||
{
|
||||
/* Make memory for all zoom-levels */
|
||||
uint memory = sizeof(SpriteData);
|
||||
|
@@ -25,7 +25,7 @@ public:
|
||||
};
|
||||
|
||||
/* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
|
||||
/* virtual */ Sprite *Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
|
||||
/* virtual */ Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
|
||||
|
||||
/* virtual */ const char *GetName() { return "8bpp-optimized"; }
|
||||
};
|
||||
|
@@ -55,7 +55,7 @@ void Blitter_8bppSimple::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Zoom
|
||||
}
|
||||
}
|
||||
|
||||
Sprite *Blitter_8bppSimple::Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
|
||||
Sprite *Blitter_8bppSimple::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
|
||||
{
|
||||
Sprite *dest_sprite;
|
||||
dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + sprite->height * sprite->width);
|
||||
|
@@ -19,7 +19,7 @@
|
||||
class Blitter_8bppSimple FINAL : public Blitter_8bppBase {
|
||||
public:
|
||||
/* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
|
||||
/* virtual */ Sprite *Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
|
||||
/* virtual */ Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
|
||||
|
||||
/* virtual */ const char *GetName() { return "8bpp-simple"; }
|
||||
};
|
||||
|
@@ -77,7 +77,7 @@ public:
|
||||
/**
|
||||
* Convert a sprite from the loader to our own format.
|
||||
*/
|
||||
virtual Sprite *Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator) = 0;
|
||||
virtual Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) = 0;
|
||||
|
||||
/**
|
||||
* Move the destination pointer the requested amount x and y, keeping in mind
|
||||
|
@@ -15,7 +15,7 @@
|
||||
/** Instantiation of the null blitter factory. */
|
||||
static FBlitter_Null iFBlitter_Null;
|
||||
|
||||
Sprite *Blitter_Null::Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
|
||||
Sprite *Blitter_Null::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
|
||||
{
|
||||
Sprite *dest_sprite;
|
||||
dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite));
|
||||
|
@@ -20,7 +20,7 @@ public:
|
||||
/* virtual */ uint8 GetScreenDepth() { return 0; }
|
||||
/* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) {};
|
||||
/* virtual */ void DrawColourMappingRect(void *dst, int width, int height, PaletteID pal) {};
|
||||
/* virtual */ Sprite *Encode(SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
|
||||
/* virtual */ Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
|
||||
/* virtual */ void *MoveTo(void *video, int x, int y) { return NULL; };
|
||||
/* virtual */ void SetPixel(void *video, int x, int y, uint8 colour) {};
|
||||
/* virtual */ void DrawRect(void *video, int width, int height, uint8 colour) {};
|
||||
|
@@ -218,7 +218,7 @@ bool HandleBootstrap()
|
||||
if (BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() == 0) goto failure;
|
||||
|
||||
/* If there is no network or no freetype, then there is nothing we can do. Go straight to failure. */
|
||||
#if defined(ENABLE_NETWORK) && defined(WITH_FREETYPE) && !defined(__APPLE__) && (defined(WITH_FONTCONFIG) || defined(WIN32))
|
||||
#if defined(ENABLE_NETWORK) && defined(WITH_FREETYPE) && (defined(WITH_FONTCONFIG) || defined(WIN32) || defined(__APPLE__))
|
||||
if (!_network_available) goto failure;
|
||||
|
||||
/* First tell the game we're bootstrapping. */
|
||||
|
@@ -249,7 +249,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
virtual EventState OnKeyPress(uint16 key, uint16 keycode)
|
||||
virtual EventState OnKeyPress(WChar key, uint16 keycode)
|
||||
{
|
||||
const uint8 i = keycode - '1';
|
||||
if (i < 9 && i < this->bridges->Length()) {
|
||||
|
@@ -910,7 +910,7 @@ void DrawEngineList(VehicleType type, int l, int r, int y, const GUIEngineList *
|
||||
const uint num_engines = GetGroupNumEngines(_local_company, selected_group, engine);
|
||||
|
||||
SetDParam(0, engine);
|
||||
DrawString(text_left, text_right, y + normal_text_y_offset, STR_ENGINE_NAME, engine == selected_id ? TC_WHITE : TC_BLACK, (rtl ? SA_RIGHT : SA_LEFT));
|
||||
DrawString(text_left, text_right, y + normal_text_y_offset, STR_ENGINE_NAME, engine == selected_id ? TC_WHITE : TC_BLACK);
|
||||
DrawVehicleEngine(l, r, sprite_x, y + sprite_y_offset, engine, (show_count && num_engines == 0) ? PALETTE_CRASH : GetEnginePalette(engine, _local_company), EIT_PURCHASE);
|
||||
if (show_count) {
|
||||
SetDParam(0, num_engines);
|
||||
|
@@ -21,6 +21,7 @@
|
||||
#include "settings_type.h"
|
||||
#include "console_func.h"
|
||||
#include "rev.h"
|
||||
#include "video/video_driver.hpp"
|
||||
|
||||
#include "widgets/console_widget.h"
|
||||
|
||||
@@ -184,6 +185,7 @@ struct IConsoleWindow : Window
|
||||
~IConsoleWindow()
|
||||
{
|
||||
_iconsole_mode = ICONSOLE_CLOSED;
|
||||
_video_driver->EditBoxLostFocus();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -215,6 +217,9 @@ struct IConsoleWindow : Window
|
||||
delta = 0;
|
||||
}
|
||||
|
||||
/* If we have a marked area, draw a background highlight. */
|
||||
if (_iconsole_cmdline.marklength != 0) GfxFillRect(this->line_offset + delta + _iconsole_cmdline.markxoffs, this->height - this->line_height, this->line_offset + delta + _iconsole_cmdline.markxoffs + _iconsole_cmdline.marklength, this->height - 1, PC_DARK_RED);
|
||||
|
||||
DrawString(this->line_offset + delta, right, this->height - this->line_height, _iconsole_cmdline.buf, (TextColour)CC_COMMAND, SA_LEFT | SA_FORCE);
|
||||
|
||||
if (_focused_window == this && _iconsole_cmdline.caret) {
|
||||
@@ -236,7 +241,7 @@ struct IConsoleWindow : Window
|
||||
if (_iconsole_cmdline.HandleCaret()) this->SetDirty();
|
||||
}
|
||||
|
||||
virtual EventState OnKeyPress(uint16 key, uint16 keycode)
|
||||
virtual EventState OnKeyPress(WChar key, uint16 keycode)
|
||||
{
|
||||
if (_focused_window != this) return ES_NOT_HANDLED;
|
||||
|
||||
@@ -290,46 +295,13 @@ struct IConsoleWindow : Window
|
||||
MarkWholeScreenDirty();
|
||||
break;
|
||||
|
||||
#ifdef WITH_COCOA
|
||||
case (WKC_META | 'V'):
|
||||
#endif
|
||||
case (WKC_CTRL | 'V'):
|
||||
if (_iconsole_cmdline.InsertClipboard()) {
|
||||
IConsoleResetHistoryPos();
|
||||
this->SetDirty();
|
||||
}
|
||||
break;
|
||||
|
||||
case (WKC_CTRL | 'L'):
|
||||
IConsoleCmdExec("clear");
|
||||
break;
|
||||
|
||||
#ifdef WITH_COCOA
|
||||
case (WKC_META | 'U'):
|
||||
#endif
|
||||
case (WKC_CTRL | 'U'):
|
||||
_iconsole_cmdline.DeleteAll();
|
||||
this->SetDirty();
|
||||
break;
|
||||
|
||||
case WKC_BACKSPACE: case WKC_DELETE:
|
||||
if (_iconsole_cmdline.DeleteChar(keycode)) {
|
||||
IConsoleResetHistoryPos();
|
||||
this->SetDirty();
|
||||
}
|
||||
break;
|
||||
|
||||
case WKC_LEFT: case WKC_RIGHT: case WKC_END: case WKC_HOME:
|
||||
if (_iconsole_cmdline.MovePos(keycode)) {
|
||||
IConsoleResetHistoryPos();
|
||||
this->SetDirty();
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
if (IsValidChar(key, CS_ALPHANUMERAL)) {
|
||||
if (_iconsole_cmdline.HandleKeyPress(key, keycode) != HKPR_NOT_HANDLED) {
|
||||
IConsoleWindow::scroll = 0;
|
||||
_iconsole_cmdline.InsertChar(key);
|
||||
IConsoleResetHistoryPos();
|
||||
this->SetDirty();
|
||||
} else {
|
||||
@@ -340,10 +312,70 @@ struct IConsoleWindow : Window
|
||||
return ES_HANDLED;
|
||||
}
|
||||
|
||||
virtual void InsertTextString(int wid, const char *str, bool marked, const char *caret, const char *insert_location, const char *replacement_end)
|
||||
{
|
||||
if (_iconsole_cmdline.InsertString(str, marked, caret, insert_location, replacement_end)) {
|
||||
IConsoleWindow::scroll = 0;
|
||||
IConsoleResetHistoryPos();
|
||||
this->SetDirty();
|
||||
}
|
||||
}
|
||||
|
||||
virtual const char *GetFocusedText() const
|
||||
{
|
||||
return _iconsole_cmdline.buf;
|
||||
}
|
||||
|
||||
virtual const char *GetCaret() const
|
||||
{
|
||||
return _iconsole_cmdline.buf + _iconsole_cmdline.caretpos;
|
||||
}
|
||||
|
||||
virtual const char *GetMarkedText(size_t *length) const
|
||||
{
|
||||
if (_iconsole_cmdline.markend == 0) return NULL;
|
||||
|
||||
*length = _iconsole_cmdline.markend - _iconsole_cmdline.markpos;
|
||||
return _iconsole_cmdline.buf + _iconsole_cmdline.markpos;
|
||||
}
|
||||
|
||||
virtual Point GetCaretPosition() const
|
||||
{
|
||||
int delta = min(this->width - this->line_offset - _iconsole_cmdline.pixels - ICON_RIGHT_BORDERWIDTH, 0);
|
||||
Point pt = {this->line_offset + delta + _iconsole_cmdline.caretxoffs, this->height - this->line_height};
|
||||
|
||||
return pt;
|
||||
}
|
||||
|
||||
virtual Rect GetTextBoundingRect(const char *from, const char *to) const
|
||||
{
|
||||
int delta = min(this->width - this->line_offset - _iconsole_cmdline.pixels - ICON_RIGHT_BORDERWIDTH, 0);
|
||||
|
||||
Point p1 = GetCharPosInString(_iconsole_cmdline.buf, from, FS_NORMAL);
|
||||
Point p2 = from != to ? GetCharPosInString(_iconsole_cmdline.buf, from) : p1;
|
||||
|
||||
Rect r = {this->line_offset + delta + p1.x, this->height - this->line_height, this->line_offset + delta + p2.x, this->height};
|
||||
return r;
|
||||
}
|
||||
|
||||
virtual const char *GetTextCharacterAtPosition(const Point &pt) const
|
||||
{
|
||||
int delta = min(this->width - this->line_offset - _iconsole_cmdline.pixels - ICON_RIGHT_BORDERWIDTH, 0);
|
||||
|
||||
if (!IsInsideMM(pt.y, this->height - this->line_height, this->height)) return NULL;
|
||||
|
||||
return GetCharAtPosition(_iconsole_cmdline.buf, pt.x - delta);
|
||||
}
|
||||
|
||||
virtual void OnMouseWheel(int wheel)
|
||||
{
|
||||
this->Scroll(-wheel);
|
||||
}
|
||||
|
||||
virtual void OnFocusLost()
|
||||
{
|
||||
_video_driver->EditBoxLostFocus();
|
||||
}
|
||||
};
|
||||
|
||||
int IConsoleWindow::scroll = 0;
|
||||
|
@@ -365,8 +365,8 @@ static inline T ROR(const T x, const uint8 n)
|
||||
* (since it will use hardware swapping if available).
|
||||
* Even though they should return uint16 and uint32, we get
|
||||
* warnings if we don't cast those (why?) */
|
||||
#define BSWAP32(x) ((uint32)Endian32_Swap(x))
|
||||
#define BSWAP16(x) ((uint16)Endian16_Swap(x))
|
||||
#define BSWAP32(x) ((uint32)CFSwapInt32(x))
|
||||
#define BSWAP16(x) ((uint16)CFSwapInt16(x))
|
||||
#elif defined(_MSC_VER)
|
||||
/* MSVC has intrinsics for swapping, resulting in faster code */
|
||||
#define BSWAP32(x) (_byteswap_ulong(x))
|
||||
|
@@ -131,13 +131,14 @@ static void debug_print(const char *dbg, const char *buf)
|
||||
fflush(f);
|
||||
#endif
|
||||
} else {
|
||||
char buffer[512];
|
||||
seprintf(buffer, lastof(buffer), "%sdbg: [%s] %s\n", GetLogPrefix(), dbg, buf);
|
||||
#if defined(WINCE)
|
||||
/* We need to do OTTD2FS twice, but as it uses a static buffer, we need to store one temporary */
|
||||
TCHAR tbuf[512];
|
||||
_sntprintf(tbuf, sizeof(tbuf), _T("%s"), OTTD2FS(dbg));
|
||||
NKDbgPrintfW(_T("dbg: [%s] %s\n"), tbuf, OTTD2FS(buf));
|
||||
NKDbgPrintfW(OTTD2FS(buffer));
|
||||
#elif defined(WIN32) || defined(WIN64)
|
||||
_fputts(OTTD2FS(buffer, true), stderr);
|
||||
#else
|
||||
fprintf(stderr, "%sdbg: [%s] %s\n", GetLogPrefix(), dbg, buf);
|
||||
fputs(buffer, stderr);
|
||||
#endif
|
||||
#ifdef ENABLE_NETWORK
|
||||
NetworkAdminConsole(dbg, buf);
|
||||
|
@@ -163,7 +163,7 @@ struct BuildDocksToolbarWindow : Window {
|
||||
this->last_clicked_widget = (DockToolbarWidgets)widget;
|
||||
}
|
||||
|
||||
virtual EventState OnKeyPress(uint16 key, uint16 keycode)
|
||||
virtual EventState OnKeyPress(WChar key, uint16 keycode)
|
||||
{
|
||||
int num = CheckHotkeyMatch(dockstoolbar_hotkeys, keycode, this);
|
||||
if (num == -1) return ES_NOT_HANDLED;
|
||||
@@ -335,7 +335,7 @@ Window *ShowBuildDocksToolbar()
|
||||
return AllocateWindowDescFront<BuildDocksToolbarWindow>(&_build_docks_toolbar_desc, TRANSPORT_WATER);
|
||||
}
|
||||
|
||||
EventState DockToolbarGlobalHotkeys(uint16 key, uint16 keycode)
|
||||
EventState DockToolbarGlobalHotkeys(WChar key, uint16 keycode)
|
||||
{
|
||||
int num = CheckHotkeyMatch<BuildDocksToolbarWindow>(_dockstoolbar_hotkeys, keycode, NULL, true);
|
||||
if (num == -1) return ES_NOT_HANDLED;
|
||||
|
@@ -30,6 +30,7 @@
|
||||
#include "company_base.h"
|
||||
#include "vehicle_func.h"
|
||||
#include "articulated_vehicles.h"
|
||||
#include "error.h"
|
||||
|
||||
#include "table/strings.h"
|
||||
#include "table/engines.h"
|
||||
@@ -1098,3 +1099,29 @@ bool IsEngineRefittable(EngineID engine)
|
||||
CargoID default_cargo = e->GetDefaultCargoType();
|
||||
return default_cargo != CT_INVALID && ei->refit_mask != 1U << default_cargo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check for engines that have an appropriate availability.
|
||||
*/
|
||||
void CheckEngines()
|
||||
{
|
||||
const Engine *e;
|
||||
Date min_date = INT32_MAX;
|
||||
|
||||
FOR_ALL_ENGINES(e) {
|
||||
if (!e->IsEnabled()) continue;
|
||||
|
||||
/* We have an available engine... yay! */
|
||||
if ((e->flags & ENGINE_AVAILABLE) != 0 && e->company_avail != 0) return;
|
||||
|
||||
/* Okay, try to find the earliest date. */
|
||||
min_date = min(min_date, e->info.base_intro);
|
||||
}
|
||||
|
||||
if (min_date < INT32_MAX) {
|
||||
SetDParam(0, min_date);
|
||||
ShowErrorMessage(STR_ERROR_NO_VEHICLES_AVAILABLE_YET, STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION, WL_WARNING);
|
||||
} else {
|
||||
ShowErrorMessage(STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL, STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION, WL_WARNING);
|
||||
}
|
||||
}
|
||||
|
@@ -18,6 +18,7 @@
|
||||
|
||||
void SetupEngines();
|
||||
void StartupEngines();
|
||||
void CheckEngines();
|
||||
|
||||
/* Original engine data counts and offsets */
|
||||
extern const uint8 _engine_counts[4];
|
||||
|
@@ -300,7 +300,7 @@ public:
|
||||
if (_window_system_initialized) ShowFirstError();
|
||||
}
|
||||
|
||||
virtual EventState OnKeyPress(uint16 key, uint16 keycode)
|
||||
virtual EventState OnKeyPress(WChar key, uint16 keycode)
|
||||
{
|
||||
if (keycode != WKC_SPACE) return ES_NOT_HANDLED;
|
||||
delete this;
|
||||
|
@@ -615,7 +615,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
virtual EventState OnKeyPress(uint16 key, uint16 keycode)
|
||||
virtual EventState OnKeyPress(WChar key, uint16 keycode)
|
||||
{
|
||||
if (keycode == WKC_ESC) {
|
||||
delete this;
|
||||
|
@@ -17,6 +17,7 @@
|
||||
#include "core/smallmap_type.hpp"
|
||||
#include "strings_func.h"
|
||||
#include "zoom_type.h"
|
||||
#include "gfx_layout.h"
|
||||
|
||||
#include "table/sprites.h"
|
||||
#include "table/control_codes.h"
|
||||
@@ -39,6 +40,7 @@ FontCache::FontCache(FontSize fs) : parent(FontCache::Get(fs)), fs(fs), height(_
|
||||
{
|
||||
assert(parent == NULL || this->fs == parent->fs);
|
||||
FontCache::caches[this->fs] = this;
|
||||
Layouter::ResetFontCache(this->fs);
|
||||
}
|
||||
|
||||
/** Clean everything up. */
|
||||
@@ -46,6 +48,7 @@ FontCache::~FontCache()
|
||||
{
|
||||
assert(this->fs == parent->fs);
|
||||
FontCache::caches[this->fs] = this->parent;
|
||||
Layouter::ResetFontCache(this->fs);
|
||||
}
|
||||
|
||||
|
||||
@@ -72,7 +75,7 @@ public:
|
||||
virtual SpriteID GetUnicodeGlyph(WChar key);
|
||||
virtual void SetUnicodeGlyph(WChar key, SpriteID sprite);
|
||||
virtual void InitializeUnicodeGlyphMap();
|
||||
virtual void ClearFontCache() {}
|
||||
virtual void ClearFontCache();
|
||||
virtual const Sprite *GetGlyph(GlyphID key);
|
||||
virtual uint GetGlyphWidth(GlyphID key);
|
||||
virtual bool GetDrawGlyphShadow();
|
||||
@@ -159,6 +162,11 @@ void SpriteFontCache::ClearGlyphToSpriteMap()
|
||||
this->glyph_to_spriteid_map = NULL;
|
||||
}
|
||||
|
||||
void SpriteFontCache::ClearFontCache()
|
||||
{
|
||||
Layouter::ResetFontCache(this->fs);
|
||||
}
|
||||
|
||||
const Sprite *SpriteFontCache::GetGlyph(GlyphID key)
|
||||
{
|
||||
SpriteID sprite = this->GetUnicodeGlyph(key);
|
||||
@@ -389,6 +397,8 @@ void FreeTypeFontCache::ClearFontCache()
|
||||
|
||||
free(this->glyph_to_sprite);
|
||||
this->glyph_to_sprite = NULL;
|
||||
|
||||
Layouter::ResetFontCache(this->fs);
|
||||
}
|
||||
|
||||
FreeTypeFontCache::GlyphEntry *FreeTypeFontCache::GetGlyphPtr(GlyphID key)
|
||||
@@ -455,9 +465,34 @@ const Sprite *FreeTypeFontCache::GetGlyph(GlyphID key)
|
||||
if (key == 0) {
|
||||
GlyphID question_glyph = this->MapCharToGlyph('?');
|
||||
if (question_glyph == 0) {
|
||||
/* The font misses the '?' character. Use sprite font. */
|
||||
SpriteID sprite = this->GetUnicodeGlyph(key);
|
||||
Sprite *spr = (Sprite*)GetRawSprite(sprite, ST_FONT, AllocateFont);
|
||||
/* The font misses the '?' character. Use built-in sprite.
|
||||
* Note: We cannot use the baseset as this also has to work in the bootstrap GUI. */
|
||||
#define CPSET { 0, 0, 0, 0, 1 }
|
||||
#define CP___ { 0, 0, 0, 0, 0 }
|
||||
static SpriteLoader::CommonPixel builtin_questionmark_data[10 * 8] = {
|
||||
CP___, CP___, CPSET, CPSET, CPSET, CPSET, CP___, CP___,
|
||||
CP___, CPSET, CPSET, CP___, CP___, CPSET, CPSET, CP___,
|
||||
CP___, CP___, CP___, CP___, CP___, CPSET, CPSET, CP___,
|
||||
CP___, CP___, CP___, CP___, CPSET, CPSET, CP___, CP___,
|
||||
CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___,
|
||||
CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___,
|
||||
CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___,
|
||||
CP___, CP___, CP___, CP___, CP___, CP___, CP___, CP___,
|
||||
CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___,
|
||||
CP___, CP___, CP___, CPSET, CPSET, CP___, CP___, CP___,
|
||||
};
|
||||
#undef CPSET
|
||||
#undef CP___
|
||||
static const SpriteLoader::Sprite builtin_questionmark = {
|
||||
10, // height
|
||||
8, // width
|
||||
0, // x_offs
|
||||
0, // y_offs
|
||||
ST_FONT,
|
||||
builtin_questionmark_data
|
||||
};
|
||||
|
||||
Sprite *spr = BlitterFactoryBase::GetCurrentBlitter()->Encode(&builtin_questionmark, AllocateFont);
|
||||
assert(spr != NULL);
|
||||
new_glyph.sprite = spr;
|
||||
new_glyph.width = spr->width + (this->fs != FS_NORMAL);
|
||||
|
@@ -159,7 +159,8 @@ static inline void InitializeUnicodeGlyphMap()
|
||||
}
|
||||
}
|
||||
|
||||
static inline void ClearFontCache() {
|
||||
static inline void ClearFontCache()
|
||||
{
|
||||
for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) {
|
||||
FontCache::Get(fs)->ClearFontCache();
|
||||
}
|
||||
|
@@ -42,26 +42,19 @@ extern FT_Library _library;
|
||||
* filename into something that isn't UTF-8 but represents the Unicode file
|
||||
* name. This is the short DOS 8.3 format. This does not contain any
|
||||
* characters that fopen doesn't support.
|
||||
* @param long_path the path in UTF-8.
|
||||
* @param long_path the path in system encoding.
|
||||
* @return the short path in ANSI (ASCII).
|
||||
*/
|
||||
char *GetShortPath(const char *long_path)
|
||||
const char *GetShortPath(const TCHAR *long_path)
|
||||
{
|
||||
static char short_path[MAX_PATH];
|
||||
#ifdef UNICODE
|
||||
/* The non-unicode GetShortPath doesn't support UTF-8...,
|
||||
* so convert the path to wide chars, then get the short
|
||||
* path and convert it back again. */
|
||||
wchar_t long_path_w[MAX_PATH];
|
||||
MultiByteToWideChar(CP_UTF8, 0, long_path, -1, long_path_w, MAX_PATH);
|
||||
|
||||
wchar_t short_path_w[MAX_PATH];
|
||||
GetShortPathNameW(long_path_w, short_path_w, MAX_PATH);
|
||||
|
||||
WideCharToMultiByte(CP_ACP, 0, short_path_w, -1, short_path, MAX_PATH, NULL, NULL);
|
||||
WCHAR short_path_w[MAX_PATH];
|
||||
GetShortPathName(long_path, short_path_w, lengthof(short_path_w));
|
||||
WideCharToMultiByte(CP_ACP, 0, short_path_w, -1, short_path, lengthof(short_path), NULL, NULL);
|
||||
#else
|
||||
/* Technically not needed, but do it for consistency. */
|
||||
GetShortPathNameA(long_path, short_path, MAX_PATH);
|
||||
GetShortPathName(long_path, short_path, lengthof(short_path));
|
||||
#endif
|
||||
return short_path;
|
||||
}
|
||||
@@ -82,9 +75,10 @@ FT_Error GetFontByFaceName(const char *font_name, FT_Face *face)
|
||||
HKEY hKey;
|
||||
LONG ret;
|
||||
TCHAR vbuffer[MAX_PATH], dbuffer[256];
|
||||
TCHAR *font_namep;
|
||||
char *font_path;
|
||||
TCHAR *pathbuf;
|
||||
const char *font_path;
|
||||
uint index;
|
||||
size_t path_len;
|
||||
|
||||
/* On windows NT (2000, NT3.5, XP, etc.) the fonts are stored in the
|
||||
* "Windows NT" key, on Windows 9x in the Windows key. To save us having
|
||||
@@ -97,15 +91,8 @@ FT_Error GetFontByFaceName(const char *font_name, FT_Face *face)
|
||||
return err;
|
||||
}
|
||||
|
||||
/* For Unicode we need some conversion between widechar and
|
||||
* normal char to match the data returned by RegEnumValue,
|
||||
* otherwise just use parameter */
|
||||
#if defined(UNICODE)
|
||||
font_namep = MallocT<TCHAR>(MAX_PATH);
|
||||
MB_TO_WIDE_BUFFER(font_name, font_namep, MAX_PATH * sizeof(TCHAR));
|
||||
#else
|
||||
font_namep = const_cast<char *>(font_name); // only cast because in unicode pointer is not const
|
||||
#endif
|
||||
/* Convert font name to file system encoding. */
|
||||
TCHAR *font_namep = _tcsdup(OTTD2FS(font_name));
|
||||
|
||||
for (index = 0;; index++) {
|
||||
TCHAR *s;
|
||||
@@ -142,23 +129,13 @@ FT_Error GetFontByFaceName(const char *font_name, FT_Face *face)
|
||||
/* Some fonts are contained in .ttc files, TrueType Collection fonts. These
|
||||
* contain multiple fonts inside this single file. GetFontData however
|
||||
* returns the whole file, so we need to check each font inside to get the
|
||||
* proper font.
|
||||
* Also note that FreeType does not support UNICODE filenames! */
|
||||
#if defined(UNICODE)
|
||||
/* We need a cast here back from wide because FreeType doesn't support
|
||||
* widechar filenames. Just use the buffer we allocated before for the
|
||||
* font_name search */
|
||||
font_path = (char*)font_namep;
|
||||
WIDE_TO_MB_BUFFER(vbuffer, font_path, MAX_PATH * sizeof(TCHAR));
|
||||
#else
|
||||
font_path = vbuffer;
|
||||
#endif
|
||||
* proper font. */
|
||||
path_len = _tcslen(vbuffer) + _tcslen(dbuffer) + 2; // '\' and terminating nul.
|
||||
pathbuf = AllocaM(TCHAR, path_len);
|
||||
_sntprintf(pathbuf, path_len, _T("%s\\%s"), vbuffer, dbuffer);
|
||||
|
||||
ttd_strlcat(font_path, "\\", MAX_PATH * sizeof(TCHAR));
|
||||
ttd_strlcat(font_path, WIDE_TO_MB(dbuffer), MAX_PATH * sizeof(TCHAR));
|
||||
|
||||
/* Convert the path into something that FreeType understands */
|
||||
font_path = GetShortPath(font_path);
|
||||
/* Convert the path into something that FreeType understands. */
|
||||
font_path = GetShortPath(pathbuf);
|
||||
|
||||
index = 0;
|
||||
do {
|
||||
@@ -175,9 +152,7 @@ FT_Error GetFontByFaceName(const char *font_name, FT_Face *face)
|
||||
|
||||
folder_error:
|
||||
registry_no_font_found:
|
||||
#if defined(UNICODE)
|
||||
free(font_namep);
|
||||
#endif
|
||||
RegCloseKey(hKey);
|
||||
return err;
|
||||
}
|
||||
@@ -338,11 +313,7 @@ static int CALLBACK EnumFontCallback(const ENUMLOGFONTEX *logfont, const NEWTEXT
|
||||
}
|
||||
|
||||
char font_name[MAX_PATH];
|
||||
#if defined(UNICODE)
|
||||
WIDE_TO_MB_BUFFER((const TCHAR*)logfont->elfFullName, font_name, lengthof(font_name));
|
||||
#else
|
||||
strecpy(font_name, (const TCHAR*)logfont->elfFullName, lastof(font_name));
|
||||
#endif
|
||||
convert_from_fs((const TCHAR *)logfont->elfFullName, font_name, lengthof(font_name));
|
||||
|
||||
/* Add english name after font name */
|
||||
const char *english_name = GetEnglishFontName(logfont);
|
||||
@@ -446,11 +417,8 @@ FT_Error GetFontByFaceName(const char *font_name, FT_Face *face)
|
||||
|
||||
bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, int winlangid, MissingGlyphSearcher *callback)
|
||||
{
|
||||
const char *str;
|
||||
bool result = false;
|
||||
|
||||
callback->FindMissingGlyphs(&str);
|
||||
|
||||
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
|
||||
if (MacOSVersionIsAtLeast(10, 5, 0)) {
|
||||
/* Determine fallback font using CoreText. This uses the language isocode
|
||||
@@ -462,11 +430,6 @@ bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, i
|
||||
} else if (strcmp(language_isocode, "zh_CN") == 0) {
|
||||
/* Simplified Chinese */
|
||||
strecpy(lang, "zh-Hans", lastof(lang));
|
||||
} else if (strncmp(language_isocode, "ur", 2) == 0) {
|
||||
/* The urdu alphabet is variant of persian. As OS X has no default
|
||||
* font that advertises an urdu language code, search for persian
|
||||
* support instead. */
|
||||
strecpy(lang, "fa", lastof(lang));
|
||||
} else {
|
||||
/* Just copy the first part of the isocode. */
|
||||
strecpy(lang, language_isocode, lastof(lang));
|
||||
@@ -474,150 +437,102 @@ bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, i
|
||||
if (sep != NULL) *sep = '\0';
|
||||
}
|
||||
|
||||
CFStringRef lang_code;
|
||||
lang_code = CFStringCreateWithCString(kCFAllocatorDefault, lang, kCFStringEncodingUTF8);
|
||||
/* Create a font descriptor matching the wanted language and latin (english) glyphs. */
|
||||
CFStringRef lang_codes[2];
|
||||
lang_codes[0] = CFStringCreateWithCString(kCFAllocatorDefault, lang, kCFStringEncodingUTF8);
|
||||
lang_codes[1] = CFSTR("en");
|
||||
CFArrayRef lang_arr = CFArrayCreate(kCFAllocatorDefault, (const void **)lang_codes, lengthof(lang_codes), &kCFTypeArrayCallBacks);
|
||||
CFDictionaryRef lang_attribs = CFDictionaryCreate(kCFAllocatorDefault, (const void**)&kCTFontLanguagesAttribute, (const void **)&lang_arr, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
|
||||
CTFontDescriptorRef lang_desc = CTFontDescriptorCreateWithAttributes(lang_attribs);
|
||||
CFRelease(lang_arr);
|
||||
CFRelease(lang_attribs);
|
||||
CFRelease(lang_codes[0]);
|
||||
|
||||
/* Get array of all font descriptors for the wanted language. */
|
||||
CFSetRef mandatory_attribs = CFSetCreate(kCFAllocatorDefault, (const void **)&kCTFontLanguagesAttribute, 1, &kCFTypeSetCallBacks);
|
||||
CFArrayRef descs = CTFontDescriptorCreateMatchingFontDescriptors(lang_desc, mandatory_attribs);
|
||||
CFRelease(mandatory_attribs);
|
||||
CFRelease(lang_desc);
|
||||
|
||||
for (CFIndex i = 0; descs != NULL && i < CFArrayGetCount(descs); i++) {
|
||||
CTFontDescriptorRef font = (CTFontDescriptorRef)CFArrayGetValueAtIndex(descs, i);
|
||||
|
||||
/* Get font traits. */
|
||||
CFDictionaryRef traits = (CFDictionaryRef)CTFontDescriptorCopyAttribute(font, kCTFontTraitsAttribute);
|
||||
CTFontSymbolicTraits symbolic_traits;
|
||||
CFNumberGetValue((CFNumberRef)CFDictionaryGetValue(traits, kCTFontSymbolicTrait), kCFNumberIntType, &symbolic_traits);
|
||||
CFRelease(traits);
|
||||
|
||||
/* Skip symbol fonts and vertical fonts. */
|
||||
if ((symbolic_traits & kCTFontClassMaskTrait) == (CTFontStylisticClass)kCTFontSymbolicClass || (symbolic_traits & kCTFontVerticalTrait)) continue;
|
||||
/* Skip bold fonts (especially Arial Bold, which looks worse than regular Arial). */
|
||||
if (symbolic_traits & kCTFontBoldTrait) continue;
|
||||
/* Select monospaced fonts if asked for. */
|
||||
if (((symbolic_traits & kCTFontMonoSpaceTrait) == kCTFontMonoSpaceTrait) != callback->Monospace()) continue;
|
||||
|
||||
/* Get font name. */
|
||||
char name[128];
|
||||
CFStringRef font_name = (CFStringRef)CTFontDescriptorCopyAttribute(font, kCTFontDisplayNameAttribute);
|
||||
CFStringGetCString(font_name, name, lengthof(name), kCFStringEncodingUTF8);
|
||||
CFRelease(font_name);
|
||||
|
||||
/* There are some special fonts starting with an '.' and the last
|
||||
* resort font that aren't usable. Skip them. */
|
||||
if (name[0] == '.' || strncmp(name, "LastResort", 10) == 0) continue;
|
||||
|
||||
/* Save result. */
|
||||
callback->SetFontNames(settings, name);
|
||||
if (!callback->FindMissingGlyphs(NULL)) {
|
||||
DEBUG(freetype, 2, "CT-Font for %s: %s", language_isocode, name);
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (descs != NULL) CFRelease(descs);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
/* Create a font iterator and iterate over all fonts that
|
||||
* are available to the application. */
|
||||
ATSFontIterator itr;
|
||||
ATSFontRef font;
|
||||
ATSFontIteratorCreate(kATSFontContextLocal, NULL, NULL, kATSOptionFlagsUnRestrictedScope, &itr);
|
||||
ATSFontIteratorCreate(kATSFontContextLocal, NULL, NULL, kATSOptionFlagsDefaultScope, &itr);
|
||||
while (!result && ATSFontIteratorNext(itr, &font) == noErr) {
|
||||
/* Get CoreText font handle. */
|
||||
CTFontRef font_ref = CTFontCreateWithPlatformFont(font, 0.0, NULL, NULL);
|
||||
CFArrayRef langs = CTFontCopySupportedLanguages(font_ref);
|
||||
if (langs != NULL) {
|
||||
/* Font has a list of supported languages. */
|
||||
for (CFIndex i = 0; i < CFArrayGetCount(langs); i++) {
|
||||
CFStringRef lang = (CFStringRef)CFArrayGetValueAtIndex(langs, i);
|
||||
if (CFStringCompare(lang, lang_code, kCFCompareAnchored) == kCFCompareEqualTo) {
|
||||
/* Lang code is supported by font, get full font name. */
|
||||
CFStringRef font_name = CTFontCopyFullName(font_ref);
|
||||
char name[128];
|
||||
CFStringGetCString(font_name, name, lengthof(name), kCFStringEncodingUTF8);
|
||||
CFRelease(font_name);
|
||||
/* Skip some inappropriate or ugly looking fonts that have better alternatives. */
|
||||
if (strncmp(name, "Courier", 7) == 0 || strncmp(name, "Apple Symbols", 13) == 0 ||
|
||||
strncmp(name, ".Aqua", 5) == 0 || strncmp(name, "LastResort", 10) == 0 ||
|
||||
strncmp(name, "GB18030 Bitmap", 14) == 0) continue;
|
||||
/* Get font name. */
|
||||
char name[128];
|
||||
CFStringRef font_name;
|
||||
ATSFontGetName(font, kATSOptionFlagsDefault, &font_name);
|
||||
CFStringGetCString(font_name, name, lengthof(name), kCFStringEncodingUTF8);
|
||||
|
||||
/* Save result. */
|
||||
callback->SetFontNames(settings, name);
|
||||
DEBUG(freetype, 2, "CT-Font for %s: %s", language_isocode, name);
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
CFRelease(langs);
|
||||
bool monospace = IsMonospaceFont(font_name);
|
||||
CFRelease(font_name);
|
||||
|
||||
/* Select monospaced fonts if asked for. */
|
||||
if (monospace != callback->Monospace()) continue;
|
||||
|
||||
/* We only want the base font and not bold or italic variants. */
|
||||
if (strstr(name, "Italic") != NULL || strstr(name, "Bold")) continue;
|
||||
|
||||
/* Skip some inappropriate or ugly looking fonts that have better alternatives. */
|
||||
if (name[0] == '.' || strncmp(name, "Apple Symbols", 13) == 0 || strncmp(name, "LastResort", 10) == 0) continue;
|
||||
|
||||
/* Save result. */
|
||||
callback->SetFontNames(settings, name);
|
||||
if (!callback->FindMissingGlyphs(NULL)) {
|
||||
DEBUG(freetype, 2, "ATS-Font for %s: %s", language_isocode, name);
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
CFRelease(font_ref);
|
||||
}
|
||||
ATSFontIteratorRelease(&itr);
|
||||
CFRelease(lang_code);
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
#if (MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5) && !__LP64__
|
||||
/* Determine fallback font using ATSUI. This uses a string sample with
|
||||
* missing characters. This is not failure-proof, but a better way like
|
||||
* using the isocode as in the CoreText code path is not available.
|
||||
* ATSUI was deprecated with 10.6 and is only partially available in
|
||||
* 64-bit mode. */
|
||||
|
||||
/* Remove all control characters in the range from SCC_CONTROL_START to
|
||||
* SCC_CONTROL_END as well as all ASCII < 0x20 from the string as it will
|
||||
* mess with the automatic font detection */
|
||||
char buff[256]; // This length is enough to find a suitable replacement font
|
||||
strecpy(buff, str, lastof(buff));
|
||||
str_validate(buff, lastof(buff), SVS_ALLOW_NEWLINE);
|
||||
|
||||
/* Extract a UniChar representation of the sample string. */
|
||||
CFStringRef cf_str = CFStringCreateWithCString(kCFAllocatorDefault, buff, kCFStringEncodingUTF8);
|
||||
if (cf_str == NULL) {
|
||||
/* Something went wrong. Corrupt/invalid sample string? */
|
||||
return false;
|
||||
}
|
||||
CFIndex str_len = CFStringGetLength(cf_str);
|
||||
UniChar string[str_len];
|
||||
CFStringGetCharacters(cf_str, CFRangeMake(0, str_len), string);
|
||||
|
||||
/* Create a default text style with the default font. */
|
||||
ATSUStyle style;
|
||||
ATSUCreateStyle(&style);
|
||||
|
||||
/* Create a text layout object from the sample string using the text style. */
|
||||
UniCharCount run_len = kATSUToTextEnd;
|
||||
ATSUTextLayout text_layout;
|
||||
ATSUCreateTextLayoutWithTextPtr(string, kATSUFromTextBeginning, kATSUToTextEnd, str_len, 1, &run_len, &style, &text_layout);
|
||||
|
||||
/* Try to match a font for the sample text. ATSUMatchFontsToText stops after
|
||||
* it finds the first continuous character run not renderable with the currently
|
||||
* selected font starting at offset. The matching needs to be repeated until
|
||||
* the end of the string is reached to make sure the fallback font matches for
|
||||
* all characters in the string and not only the first run. */
|
||||
UniCharArrayOffset offset = kATSUFromTextBeginning;
|
||||
OSStatus os_err;
|
||||
do {
|
||||
ATSUFontID font;
|
||||
UniCharCount run_len;
|
||||
os_err = ATSUMatchFontsToText(text_layout, offset, kATSUToTextEnd, &font, &offset, &run_len);
|
||||
if (os_err == kATSUFontsMatched) {
|
||||
/* Found a better fallback font. Update the text layout
|
||||
* object with the new font. */
|
||||
ATSUAttributeTag tag = kATSUFontTag;
|
||||
ByteCount size = sizeof(font);
|
||||
ATSUAttributeValuePtr val = &font;
|
||||
ATSUSetAttributes(style, 1, &tag, &size, &val);
|
||||
offset += run_len;
|
||||
}
|
||||
/* Exit if the end of the string is reached or some other error occurred. */
|
||||
} while (os_err == kATSUFontsMatched && offset < (UniCharArrayOffset)str_len);
|
||||
|
||||
if (os_err == noErr || os_err == kATSUFontsMatched) {
|
||||
/* ATSUMatchFontsToText exited normally. Extract font
|
||||
* out of the text layout object. */
|
||||
ATSUFontID font;
|
||||
ByteCount act_len;
|
||||
ATSUGetAttribute(style, kATSUFontTag, sizeof(font), &font, &act_len);
|
||||
|
||||
/* Get unique font name. The result is not a c-string, we have
|
||||
* to leave space for a \0 and terminate it ourselves. */
|
||||
char name[128];
|
||||
ATSUFindFontName(font, kFontUniqueName, kFontNoPlatformCode, kFontNoScriptCode, kFontNoLanguageCode, 127, name, &act_len, NULL);
|
||||
name[act_len > 127 ? 127 : act_len] = '\0';
|
||||
|
||||
/* Save Result. */
|
||||
callback->SetFontNames(settings, name);
|
||||
DEBUG(freetype, 2, "ATSUI-Font for %s: %s", language_isocode, name);
|
||||
result = true;
|
||||
}
|
||||
|
||||
ATSUDisposeTextLayout(text_layout);
|
||||
ATSUDisposeStyle(style);
|
||||
CFRelease(cf_str);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (result && strncmp(settings->medium.font, "Geeza Pro", 9) == 0) {
|
||||
/* The font 'Geeza Pro' is often found for arabic characters, but
|
||||
* it has the 'tiny' problem of not having any latin characters.
|
||||
* 'Arial Unicode MS' on the other hand has arabic and latin glyphs,
|
||||
* but seems to 'forget' to inform the OS about this fact. Manually
|
||||
* substitute the latter for the former if it is loadable. */
|
||||
bool ft_init = _library != NULL;
|
||||
FT_Face face;
|
||||
/* Init FreeType if needed. */
|
||||
if ((ft_init || FT_Init_FreeType(&_library) == FT_Err_Ok) && GetFontByFaceName("Arial Unicode MS", &face) == FT_Err_Ok) {
|
||||
FT_Done_Face(face);
|
||||
callback->SetFontNames(settings, "Arial Unicode MS");
|
||||
DEBUG(freetype, 1, "Replacing font 'Geeza Pro' with 'Arial Unicode MS'");
|
||||
}
|
||||
if (!ft_init) {
|
||||
/* Uninit FreeType if we did the init. */
|
||||
FT_Done_FreeType(_library);
|
||||
_library = NULL;
|
||||
}
|
||||
}
|
||||
if (!result) {
|
||||
/* For some OS versions, the font 'Arial Unicode MS' does not report all languages it
|
||||
* supports. If we didn't find any other font, just try it, maybe we get lucky. */
|
||||
callback->SetFontNames(settings, "Arial Unicode MS");
|
||||
result = !callback->FindMissingGlyphs(NULL);
|
||||
}
|
||||
|
||||
callback->FindMissingGlyphs(NULL);
|
||||
return result;
|
||||
|
@@ -71,6 +71,8 @@
|
||||
GameInfo *info = config->GetInfo();
|
||||
if (info == NULL) return;
|
||||
|
||||
config->AnchorUnchangeableSettings();
|
||||
|
||||
Backup<CompanyByte> cur_company(_current_company, FILE_LINE);
|
||||
cur_company.Change(OWNER_DEITY);
|
||||
|
||||
|
@@ -60,18 +60,11 @@ void NORETURN CDECL strgen_fatal(const char *s, ...)
|
||||
/**
|
||||
* Create a new container for language strings.
|
||||
* @param language The language name.
|
||||
* @param end If not NULL, terminate \a language at this position.
|
||||
*/
|
||||
LanguageStrings::LanguageStrings(const char *language)
|
||||
LanguageStrings::LanguageStrings(const char *language, const char *end)
|
||||
{
|
||||
const char *p = strrchr(language, PATHSEPCHAR);
|
||||
if (p == NULL) {
|
||||
p = language;
|
||||
} else {
|
||||
p++;
|
||||
}
|
||||
|
||||
const char *e = strchr(p, '.');
|
||||
this->language = e == NULL ? strdup(p) : strndup(p, e - p);
|
||||
this->language = end == NULL ? strdup(language) : strndup(language, end - language);
|
||||
}
|
||||
|
||||
/** Free everything. */
|
||||
@@ -95,7 +88,17 @@ LanguageStrings *ReadRawLanguageStrings(const char *file)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
ret = new LanguageStrings(file);
|
||||
const char *langname = strrchr(file, PATHSEPCHAR);
|
||||
if (langname == NULL) {
|
||||
langname = file;
|
||||
} else {
|
||||
langname++;
|
||||
}
|
||||
|
||||
/* Check for invalid empty filename */
|
||||
if (*langname == '.' || *langname == 0) return NULL;
|
||||
|
||||
ret = new LanguageStrings(langname, strchr(langname, '.'));
|
||||
|
||||
char buffer[2048];
|
||||
while (to_read != 0 && fgets(buffer, sizeof(buffer), fh) != NULL) {
|
||||
|
@@ -26,7 +26,7 @@ struct LanguageStrings {
|
||||
const char *language; ///< Name of the language (base filename).
|
||||
StringList lines; ///< The lines of the file to pass into the parser/encoder.
|
||||
|
||||
LanguageStrings(const char *language);
|
||||
LanguageStrings(const char *language, const char *end = NULL);
|
||||
~LanguageStrings();
|
||||
};
|
||||
|
||||
|
120
src/gfx.cpp
120
src/gfx.cpp
@@ -51,43 +51,6 @@ byte _colour_gradient[COLOUR_END][8];
|
||||
static void GfxMainBlitterViewport(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub = NULL, SpriteID sprite_id = SPR_CURSOR_MOUSE);
|
||||
static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub = NULL, SpriteID sprite_id = SPR_CURSOR_MOUSE, ZoomLevel zoom = ZOOM_LVL_NORMAL);
|
||||
|
||||
/**
|
||||
* Text drawing parameters, which can change while drawing a line, but are kept between multiple parts
|
||||
* of the same text, e.g. on line breaks.
|
||||
*/
|
||||
struct DrawStringParams {
|
||||
FontSize fontsize;
|
||||
TextColour cur_colour, prev_colour;
|
||||
|
||||
DrawStringParams(TextColour colour, FontSize fontsize) : fontsize(fontsize), cur_colour(colour), prev_colour(colour) {}
|
||||
|
||||
/**
|
||||
* Switch to new colour \a c.
|
||||
* @param c New colour to use.
|
||||
*/
|
||||
inline void SetColour(TextColour c)
|
||||
{
|
||||
assert(c >= TC_BLUE && c <= TC_BLACK);
|
||||
this->prev_colour = this->cur_colour;
|
||||
this->cur_colour = c;
|
||||
}
|
||||
|
||||
/** Switch to previous colour. */
|
||||
inline void SetPreviousColour()
|
||||
{
|
||||
Swap(this->cur_colour, this->prev_colour);
|
||||
}
|
||||
|
||||
/**
|
||||
* Switch to using a new font \a f.
|
||||
* @param f New font to use.
|
||||
*/
|
||||
inline void SetFontSize(FontSize f)
|
||||
{
|
||||
this->fontsize = f;
|
||||
}
|
||||
};
|
||||
|
||||
static ReusableBuffer<uint8> _cursor_backup;
|
||||
|
||||
/**
|
||||
@@ -302,16 +265,17 @@ static void SetColourRemap(TextColour colour)
|
||||
* case a right-to-left language is chosen this is inverted so it
|
||||
* will be drawn in the right direction.
|
||||
* @param underline Whether to underline what has been drawn or not.
|
||||
* @param truncation Whether to perform string truncation or not.
|
||||
*
|
||||
* @return In case of left or center alignment the right most pixel we have drawn to.
|
||||
* In case of right alignment the left most pixel we have drawn to.
|
||||
*/
|
||||
static int DrawLayoutLine(ParagraphLayout::Line *line, int y, int left, int right, StringAlignment align, bool underline)
|
||||
static int DrawLayoutLine(const ParagraphLayouter::Line *line, int y, int left, int right, StringAlignment align, bool underline, bool truncation)
|
||||
{
|
||||
if (line->countRuns() == 0) return 0;
|
||||
if (line->CountRuns() == 0) return 0;
|
||||
|
||||
int w = line->getWidth();
|
||||
int h = line->getLeading();
|
||||
int w = line->GetWidth();
|
||||
int h = line->GetLeading();
|
||||
|
||||
/*
|
||||
* The following is needed for truncation.
|
||||
@@ -331,7 +295,7 @@ static int DrawLayoutLine(ParagraphLayout::Line *line, int y, int left, int righ
|
||||
int min_x = left; // The minimum x position to draw normal glyphs on.
|
||||
int max_x = right; // The maximum x position to draw normal glyphs on.
|
||||
|
||||
bool truncation = max_w < w; // Whether we need to do truncation.
|
||||
truncation &= max_w < w; // Whether we need to do truncation.
|
||||
int dot_width = 0; // Cache for the width of the dot.
|
||||
const Sprite *dot_sprite = NULL; // Cache for the sprite of the dot.
|
||||
|
||||
@@ -342,7 +306,7 @@ static int DrawLayoutLine(ParagraphLayout::Line *line, int y, int left, int righ
|
||||
* another size would be chosen it won't have truncated too little for
|
||||
* the truncation dots.
|
||||
*/
|
||||
FontCache *fc = ((const Font*)line->getVisualRun(0)->getFont())->fc;
|
||||
FontCache *fc = ((const Font*)line->GetVisualRun(0)->GetFont())->fc;
|
||||
GlyphID dot_glyph = fc->MapCharToGlyph('.');
|
||||
dot_width = fc->GetGlyphWidth(dot_glyph);
|
||||
dot_sprite = fc->GetGlyph(dot_glyph);
|
||||
@@ -385,9 +349,9 @@ static int DrawLayoutLine(ParagraphLayout::Line *line, int y, int left, int righ
|
||||
NOT_REACHED();
|
||||
}
|
||||
|
||||
for (int run_index = 0; run_index < line->countRuns(); run_index++) {
|
||||
const ParagraphLayout::VisualRun *run = line->getVisualRun(run_index);
|
||||
const Font *f = (const Font*)run->getFont();
|
||||
for (int run_index = 0; run_index < line->CountRuns(); run_index++) {
|
||||
const ParagraphLayouter::VisualRun *run = line->GetVisualRun(run_index);
|
||||
const Font *f = (const Font*)run->GetFont();
|
||||
|
||||
FontCache *fc = f->fc;
|
||||
TextColour colour = f->colour;
|
||||
@@ -399,15 +363,15 @@ static int DrawLayoutLine(ParagraphLayout::Line *line, int y, int left, int righ
|
||||
|
||||
bool draw_shadow = fc->GetDrawGlyphShadow() && colour != TC_BLACK;
|
||||
|
||||
for (int i = 0; i < run->getGlyphCount(); i++) {
|
||||
GlyphID glyph = run->getGlyphs()[i];
|
||||
for (int i = 0; i < run->GetGlyphCount(); i++) {
|
||||
GlyphID glyph = run->GetGlyphs()[i];
|
||||
|
||||
/* Not a valid glyph (empty) */
|
||||
if (glyph == 0xFFFF) continue;
|
||||
|
||||
int begin_x = run->getPositions()[i * 2] + left - offset_x;
|
||||
int end_x = run->getPositions()[i * 2 + 2] + left - offset_x - 1;
|
||||
int top = run->getPositions()[i * 2 + 1] + y;
|
||||
int begin_x = (int)run->GetPositions()[i * 2] + left - offset_x;
|
||||
int end_x = (int)run->GetPositions()[i * 2 + 2] + left - offset_x - 1;
|
||||
int top = (int)run->GetPositions()[i * 2 + 1] + y;
|
||||
|
||||
/* Truncated away. */
|
||||
if (truncation && (begin_x < min_x || end_x > max_x)) continue;
|
||||
@@ -452,13 +416,26 @@ static int DrawLayoutLine(ParagraphLayout::Line *line, int y, int left, int righ
|
||||
* will be drawn in the right direction.
|
||||
* @param underline Whether to underline what has been drawn or not.
|
||||
* @param fontsize The size of the initial characters.
|
||||
* @return In case of left or center alignment the right most pixel we have drawn to.
|
||||
* In case of right alignment the left most pixel we have drawn to.
|
||||
*/
|
||||
int DrawString(int left, int right, int top, const char *str, TextColour colour, StringAlignment align, bool underline, FontSize fontsize)
|
||||
{
|
||||
/* The string may contain control chars to change the font, just use the biggest font for clipping. */
|
||||
int max_height = max(max(FONT_HEIGHT_SMALL, FONT_HEIGHT_NORMAL), max(FONT_HEIGHT_LARGE, FONT_HEIGHT_MONO));
|
||||
|
||||
/* Funny glyphs may extent outside the usual bounds, so relax the clipping somewhat. */
|
||||
int extra = max_height / 2;
|
||||
|
||||
if (_cur_dpi->top + _cur_dpi->height + extra < top || _cur_dpi->top > top + max_height + extra ||
|
||||
_cur_dpi->left + _cur_dpi->width + extra < left || _cur_dpi->left > right + extra) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
Layouter layout(str, INT32_MAX, colour, fontsize);
|
||||
if (layout.Length() == 0) return 0;
|
||||
|
||||
return DrawLayoutLine(*layout.Begin(), top, left, right, align, underline);
|
||||
return DrawLayoutLine(*layout.Begin(), top, left, right, align, underline, true);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -474,6 +451,8 @@ int DrawString(int left, int right, int top, const char *str, TextColour colour,
|
||||
* will be drawn in the right direction.
|
||||
* @param underline Whether to underline what has been drawn or not.
|
||||
* @param fontsize The size of the initial characters.
|
||||
* @return In case of left or center alignment the right most pixel we have drawn to.
|
||||
* In case of right alignment the left most pixel we have drawn to.
|
||||
*/
|
||||
int DrawString(int left, int right, int top, StringID str, TextColour colour, StringAlignment align, bool underline, FontSize fontsize)
|
||||
{
|
||||
@@ -592,15 +571,15 @@ int DrawStringMultiLine(int left, int right, int top, int bottom, const char *st
|
||||
int last_line = top;
|
||||
int first_line = bottom;
|
||||
|
||||
for (ParagraphLayout::Line **iter = layout.Begin(); iter != layout.End(); iter++) {
|
||||
ParagraphLayout::Line *line = *iter;
|
||||
for (const ParagraphLayouter::Line **iter = layout.Begin(); iter != layout.End(); iter++) {
|
||||
const ParagraphLayouter::Line *line = *iter;
|
||||
|
||||
int line_height = line->getLeading();
|
||||
int line_height = line->GetLeading();
|
||||
if (y >= top && y < bottom) {
|
||||
last_line = y + line_height;
|
||||
if (first_line > y) first_line = y;
|
||||
|
||||
DrawLayoutLine(line, y, left, right, align, underline);
|
||||
DrawLayoutLine(line, y, left, right, align, underline, false);
|
||||
}
|
||||
y += line_height;
|
||||
}
|
||||
@@ -660,6 +639,35 @@ Dimension GetStringBoundingBox(StringID strid)
|
||||
return GetStringBoundingBox(buffer);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the leading corner of a character in a single-line string relative
|
||||
* to the start of the string.
|
||||
* @param str String containing the character.
|
||||
* @param ch Pointer to the character in the string.
|
||||
* @param start_fontsize Font size to start the text with.
|
||||
* @return Upper left corner of the glyph associated with the character.
|
||||
*/
|
||||
Point GetCharPosInString(const char *str, const char *ch, FontSize start_fontsize)
|
||||
{
|
||||
Layouter layout(str, INT32_MAX, TC_FROMSTRING, start_fontsize);
|
||||
return layout.GetCharPosition(ch);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the character from a string that is drawn at a specific position.
|
||||
* @param str String to test.
|
||||
* @param x Position relative to the start of the string.
|
||||
* @param start_fontsize Font size to start the text with.
|
||||
* @return Pointer to the character at the position or NULL if there is no character at the position.
|
||||
*/
|
||||
const char *GetCharAtPosition(const char *str, int x, FontSize start_fontsize)
|
||||
{
|
||||
if (x < 0) return NULL;
|
||||
|
||||
Layouter layout(str, INT32_MAX, TC_FROMSTRING, start_fontsize);
|
||||
return layout.GetCharAtPosition(x);
|
||||
}
|
||||
|
||||
/**
|
||||
* Draw single character horizontally centered around (x,y)
|
||||
* @param c Character (glyph) to draw
|
||||
|
@@ -44,6 +44,7 @@
|
||||
|
||||
#include "gfx_type.h"
|
||||
#include "strings_type.h"
|
||||
#include "string_type.h"
|
||||
|
||||
void GameLoop();
|
||||
|
||||
@@ -69,7 +70,8 @@ extern Dimension _resolutions[32];
|
||||
extern Dimension _cur_resolution;
|
||||
extern Palette _cur_palette; ///< Current palette
|
||||
|
||||
void HandleKeypress(uint32 key);
|
||||
void HandleKeypress(uint keycode, WChar key);
|
||||
void HandleTextInput(const char *str, bool marked = false, const char *caret = NULL, const char *insert_location = NULL, const char *replacement_end = NULL);
|
||||
void HandleCtrlChanged();
|
||||
void HandleMouseEvents();
|
||||
void CSleep(int milliseconds);
|
||||
@@ -126,6 +128,8 @@ int GetStringLineCount(StringID str, int maxw);
|
||||
Dimension GetStringMultiLineBoundingBox(StringID str, const Dimension &suggestion);
|
||||
Dimension GetStringMultiLineBoundingBox(const char *str, const Dimension &suggestion);
|
||||
void LoadStringWidthTable(bool monospace = false);
|
||||
Point GetCharPosInString(const char *str, const char *ch, FontSize start_fontsize = FS_NORMAL);
|
||||
const char *GetCharAtPosition(const char *str, int x, FontSize start_fontsize = FS_NORMAL);
|
||||
|
||||
void DrawDirtyBlocks();
|
||||
void SetDirtyBlocks(int left, int top, int right, int bottom);
|
||||
|
@@ -13,6 +13,7 @@
|
||||
#include "gfx_layout.h"
|
||||
#include "string_func.h"
|
||||
#include "strings_func.h"
|
||||
#include "debug.h"
|
||||
|
||||
#include "table/control_codes.h"
|
||||
|
||||
@@ -20,6 +21,14 @@
|
||||
#include <unicode/ustring.h>
|
||||
#endif /* WITH_ICU */
|
||||
|
||||
|
||||
/** Cache of ParagraphLayout lines. */
|
||||
Layouter::LineCache *Layouter::linecache;
|
||||
|
||||
/** Cache of Font instances. */
|
||||
Layouter::FontColourMap Layouter::fonts[FS_END];
|
||||
|
||||
|
||||
/**
|
||||
* Construct a new font.
|
||||
* @param size The font size to use for this font.
|
||||
@@ -102,7 +111,7 @@ le_bool Font::getGlyphPoint(LEGlyphID glyph, le_int32 pointNumber, LEPoint &poin
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
size_t Layouter::AppendToBuffer(UChar *buff, const UChar *buffer_last, WChar c)
|
||||
static size_t AppendToBuffer(UChar *buff, const UChar *buffer_last, WChar c)
|
||||
{
|
||||
/* Transform from UTF-32 to internal ICU format of UTF-16. */
|
||||
int32 length = 0;
|
||||
@@ -111,7 +120,69 @@ size_t Layouter::AppendToBuffer(UChar *buff, const UChar *buffer_last, WChar c)
|
||||
return length;
|
||||
}
|
||||
|
||||
ParagraphLayout *Layouter::GetParagraphLayout(UChar *buff, UChar *buff_end, FontMap &fontMapping)
|
||||
/**
|
||||
* Wrapper for doing layouts with ICU.
|
||||
*/
|
||||
class ICUParagraphLayout : public AutoDeleteSmallVector<ParagraphLayouter::Line *, 4>, public ParagraphLayouter {
|
||||
ParagraphLayout *p; ///< The actual ICU paragraph layout.
|
||||
public:
|
||||
/** Helper for GetLayouter, to get the right type. */
|
||||
typedef UChar CharType;
|
||||
/** Helper for GetLayouter, to get whether the layouter supports RTL. */
|
||||
static const bool SUPPORTS_RTL = true;
|
||||
|
||||
/** Visual run contains data about the bit of text with the same font. */
|
||||
class ICUVisualRun : public ParagraphLayouter::VisualRun {
|
||||
const ParagraphLayout::VisualRun *vr; ///< The actual ICU vr.
|
||||
|
||||
public:
|
||||
ICUVisualRun(const ParagraphLayout::VisualRun *vr) : vr(vr) { }
|
||||
|
||||
const Font *GetFont() const { return (const Font*)vr->getFont(); }
|
||||
int GetGlyphCount() const { return vr->getGlyphCount(); }
|
||||
const GlyphID *GetGlyphs() const { return vr->getGlyphs(); }
|
||||
const float *GetPositions() const { return vr->getPositions(); }
|
||||
int GetLeading() const { return vr->getLeading(); }
|
||||
const int *GetGlyphToCharMap() const { return vr->getGlyphToCharMap(); }
|
||||
};
|
||||
|
||||
/** A single line worth of VisualRuns. */
|
||||
class ICULine : public AutoDeleteSmallVector<ICUVisualRun *, 4>, public ParagraphLayouter::Line {
|
||||
ParagraphLayout::Line *l; ///< The actual ICU line.
|
||||
|
||||
public:
|
||||
ICULine(ParagraphLayout::Line *l) : l(l)
|
||||
{
|
||||
for (int i = 0; i < l->countRuns(); i++) {
|
||||
*this->Append() = new ICUVisualRun(l->getVisualRun(i));
|
||||
}
|
||||
}
|
||||
~ICULine() { delete l; }
|
||||
|
||||
int GetLeading() const { return l->getLeading(); }
|
||||
int GetWidth() const { return l->getWidth(); }
|
||||
int CountRuns() const { return l->countRuns(); }
|
||||
const ParagraphLayouter::VisualRun *GetVisualRun(int run) const { return *this->Get(run); }
|
||||
|
||||
int GetInternalCharLength(WChar c) const
|
||||
{
|
||||
/* ICU uses UTF-16 internally which means we need to account for surrogate pairs. */
|
||||
return Utf8CharLen(c) < 4 ? 1 : 2;
|
||||
}
|
||||
};
|
||||
|
||||
ICUParagraphLayout(ParagraphLayout *p) : p(p) { }
|
||||
~ICUParagraphLayout() { delete p; }
|
||||
void Reflow() { p->reflow(); }
|
||||
|
||||
ParagraphLayouter::Line *NextLine(int max_width)
|
||||
{
|
||||
ParagraphLayout::Line *l = p->nextLine(max_width);
|
||||
return l == NULL ? NULL : new ICULine(l);
|
||||
}
|
||||
};
|
||||
|
||||
static ParagraphLayouter *GetParagraphLayout(UChar *buff, UChar *buff_end, FontMap &fontMapping)
|
||||
{
|
||||
int32 length = buff_end - buff;
|
||||
|
||||
@@ -129,12 +200,83 @@ ParagraphLayout *Layouter::GetParagraphLayout(UChar *buff, UChar *buff_end, Font
|
||||
}
|
||||
|
||||
LEErrorCode status = LE_NO_ERROR;
|
||||
return new ParagraphLayout(buff, length, &runs, NULL, NULL, NULL, _current_text_dir == TD_RTL ? UBIDI_DEFAULT_RTL : UBIDI_DEFAULT_LTR, false, status);
|
||||
/* ParagraphLayout does not copy "buff", so it must stay valid.
|
||||
* "runs" is copied according to the ICU source, but the documentation does not specify anything, so this might break somewhen. */
|
||||
ParagraphLayout *p = new ParagraphLayout(buff, length, &runs, NULL, NULL, NULL, _current_text_dir == TD_RTL ? UBIDI_DEFAULT_RTL : UBIDI_DEFAULT_LTR, false, status);
|
||||
if (status != LE_NO_ERROR) {
|
||||
delete p;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return new ICUParagraphLayout(p);
|
||||
}
|
||||
|
||||
#else /* WITH_ICU */
|
||||
#endif /* WITH_ICU */
|
||||
|
||||
/*** Paragraph layout ***/
|
||||
/**
|
||||
* Class handling the splitting of a paragraph of text into lines and
|
||||
* visual runs.
|
||||
*
|
||||
* One constructs this class with the text that needs to be split into
|
||||
* lines. Then nextLine is called with the maximum width until NULL is
|
||||
* returned. Each nextLine call creates VisualRuns which contain the
|
||||
* length of text that are to be drawn with the same font. In other
|
||||
* words, the result of this class is a list of sub strings with their
|
||||
* font. The sub strings are then already fully laid out, and only
|
||||
* need actual drawing.
|
||||
*
|
||||
* The positions in a visual run are sequential pairs of X,Y of the
|
||||
* begin of each of the glyphs plus an extra pair to mark the end.
|
||||
*
|
||||
* @note This variant does not handle left-to-right properly. This
|
||||
* is supported in the one ParagraphLayout coming from ICU.
|
||||
*/
|
||||
class FallbackParagraphLayout : public ParagraphLayouter {
|
||||
public:
|
||||
/** Helper for GetLayouter, to get the right type. */
|
||||
typedef WChar CharType;
|
||||
/** Helper for GetLayouter, to get whether the layouter supports RTL. */
|
||||
static const bool SUPPORTS_RTL = false;
|
||||
|
||||
/** Visual run contains data about the bit of text with the same font. */
|
||||
class FallbackVisualRun : public ParagraphLayouter::VisualRun {
|
||||
Font *font; ///< The font used to layout these.
|
||||
GlyphID *glyphs; ///< The glyphs we're drawing.
|
||||
float *positions; ///< The positions of the glyphs.
|
||||
int *glyph_to_char; ///< The char index of the glyphs.
|
||||
int glyph_count; ///< The number of glyphs.
|
||||
|
||||
public:
|
||||
FallbackVisualRun(Font *font, const WChar *chars, int glyph_count, int x);
|
||||
~FallbackVisualRun();
|
||||
const Font *GetFont() const;
|
||||
int GetGlyphCount() const;
|
||||
const GlyphID *GetGlyphs() const;
|
||||
const float *GetPositions() const;
|
||||
int GetLeading() const;
|
||||
const int *GetGlyphToCharMap() const;
|
||||
};
|
||||
|
||||
/** A single line worth of VisualRuns. */
|
||||
class FallbackLine : public AutoDeleteSmallVector<FallbackVisualRun *, 4>, public ParagraphLayouter::Line {
|
||||
public:
|
||||
int GetLeading() const;
|
||||
int GetWidth() const;
|
||||
int CountRuns() const;
|
||||
const ParagraphLayouter::VisualRun *GetVisualRun(int run) const;
|
||||
|
||||
int GetInternalCharLength(WChar c) const { return 1; }
|
||||
};
|
||||
|
||||
const WChar *buffer_begin; ///< Begin of the buffer.
|
||||
const WChar *buffer; ///< The current location in the buffer.
|
||||
FontMap &runs; ///< The fonts we have to use for this paragraph.
|
||||
|
||||
FallbackParagraphLayout(WChar *buffer, int length, FontMap &runs);
|
||||
void Reflow();
|
||||
const ParagraphLayouter::Line *NextLine(int max_width);
|
||||
};
|
||||
|
||||
/**
|
||||
* Create the visual run.
|
||||
@@ -143,10 +285,11 @@ ParagraphLayout *Layouter::GetParagraphLayout(UChar *buff, UChar *buff_end, Font
|
||||
* @param char_count The number of characters in this run.
|
||||
* @param x The initial x position for this run.
|
||||
*/
|
||||
ParagraphLayout::VisualRun::VisualRun(Font *font, const WChar *chars, int char_count, int x) :
|
||||
FallbackParagraphLayout::FallbackVisualRun::FallbackVisualRun(Font *font, const WChar *chars, int char_count, int x) :
|
||||
font(font), glyph_count(char_count)
|
||||
{
|
||||
this->glyphs = MallocT<GlyphID>(this->glyph_count);
|
||||
this->glyph_to_char = MallocT<int>(this->glyph_count);
|
||||
|
||||
/* Positions contains the location of the begin of each of the glyphs, and the end of the last one. */
|
||||
this->positions = MallocT<float>(this->glyph_count * 2 + 2);
|
||||
@@ -157,13 +300,15 @@ ParagraphLayout::VisualRun::VisualRun(Font *font, const WChar *chars, int char_c
|
||||
this->glyphs[i] = font->fc->MapCharToGlyph(chars[i]);
|
||||
this->positions[2 * i + 2] = this->positions[2 * i] + font->fc->GetGlyphWidth(this->glyphs[i]);
|
||||
this->positions[2 * i + 3] = 0;
|
||||
this->glyph_to_char[i] = i;
|
||||
}
|
||||
}
|
||||
|
||||
/** Free all data. */
|
||||
ParagraphLayout::VisualRun::~VisualRun()
|
||||
FallbackParagraphLayout::FallbackVisualRun::~FallbackVisualRun()
|
||||
{
|
||||
free(this->positions);
|
||||
free(this->glyph_to_char);
|
||||
free(this->glyphs);
|
||||
}
|
||||
|
||||
@@ -171,7 +316,7 @@ ParagraphLayout::VisualRun::~VisualRun()
|
||||
* Get the font associated with this run.
|
||||
* @return The font.
|
||||
*/
|
||||
Font *ParagraphLayout::VisualRun::getFont() const
|
||||
const Font *FallbackParagraphLayout::FallbackVisualRun::GetFont() const
|
||||
{
|
||||
return this->font;
|
||||
}
|
||||
@@ -180,7 +325,7 @@ Font *ParagraphLayout::VisualRun::getFont() const
|
||||
* Get the number of glyhps in this run.
|
||||
* @return The number of glyphs.
|
||||
*/
|
||||
int ParagraphLayout::VisualRun::getGlyphCount() const
|
||||
int FallbackParagraphLayout::FallbackVisualRun::GetGlyphCount() const
|
||||
{
|
||||
return this->glyph_count;
|
||||
}
|
||||
@@ -189,7 +334,7 @@ int ParagraphLayout::VisualRun::getGlyphCount() const
|
||||
* Get the glyhps of this run.
|
||||
* @return The glyphs.
|
||||
*/
|
||||
const GlyphID *ParagraphLayout::VisualRun::getGlyphs() const
|
||||
const GlyphID *FallbackParagraphLayout::FallbackVisualRun::GetGlyphs() const
|
||||
{
|
||||
return this->glyphs;
|
||||
}
|
||||
@@ -198,29 +343,38 @@ const GlyphID *ParagraphLayout::VisualRun::getGlyphs() const
|
||||
* Get the positions of this run.
|
||||
* @return The positions.
|
||||
*/
|
||||
float *ParagraphLayout::VisualRun::getPositions() const
|
||||
const float *FallbackParagraphLayout::FallbackVisualRun::GetPositions() const
|
||||
{
|
||||
return this->positions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the glyph-to-character map for this visual run.
|
||||
* @return The glyph-to-character map.
|
||||
*/
|
||||
const int *FallbackParagraphLayout::FallbackVisualRun::GetGlyphToCharMap() const
|
||||
{
|
||||
return this->glyph_to_char;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the height of this font.
|
||||
* @return The height of the font.
|
||||
*/
|
||||
int ParagraphLayout::VisualRun::getLeading() const
|
||||
int FallbackParagraphLayout::FallbackVisualRun::GetLeading() const
|
||||
{
|
||||
return this->getFont()->fc->GetHeight();
|
||||
return this->GetFont()->fc->GetHeight();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the height of the line.
|
||||
* @return The maximum height of the line.
|
||||
*/
|
||||
int ParagraphLayout::Line::getLeading() const
|
||||
int FallbackParagraphLayout::FallbackLine::GetLeading() const
|
||||
{
|
||||
int leading = 0;
|
||||
for (const VisualRun * const *run = this->Begin(); run != this->End(); run++) {
|
||||
leading = max(leading, (*run)->getLeading());
|
||||
for (const FallbackVisualRun * const *run = this->Begin(); run != this->End(); run++) {
|
||||
leading = max(leading, (*run)->GetLeading());
|
||||
}
|
||||
|
||||
return leading;
|
||||
@@ -230,7 +384,7 @@ int ParagraphLayout::Line::getLeading() const
|
||||
* Get the width of this line.
|
||||
* @return The width of the line.
|
||||
*/
|
||||
int ParagraphLayout::Line::getWidth() const
|
||||
int FallbackParagraphLayout::FallbackLine::GetWidth() const
|
||||
{
|
||||
if (this->Length() == 0) return 0;
|
||||
|
||||
@@ -239,15 +393,15 @@ int ParagraphLayout::Line::getWidth() const
|
||||
* Since there is no left-to-right support, taking this value of
|
||||
* the last run gives us the end of the line and thus the width.
|
||||
*/
|
||||
const VisualRun *run = this->getVisualRun(this->countRuns() - 1);
|
||||
return run->getPositions()[run->getGlyphCount() * 2];
|
||||
const ParagraphLayouter::VisualRun *run = this->GetVisualRun(this->CountRuns() - 1);
|
||||
return (int)run->GetPositions()[run->GetGlyphCount() * 2];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the number of runs in this line.
|
||||
* @return The number of runs.
|
||||
*/
|
||||
int ParagraphLayout::Line::countRuns() const
|
||||
int FallbackParagraphLayout::FallbackLine::CountRuns() const
|
||||
{
|
||||
return this->Length();
|
||||
}
|
||||
@@ -256,7 +410,7 @@ int ParagraphLayout::Line::countRuns() const
|
||||
* Get a specific visual run.
|
||||
* @return The visual run.
|
||||
*/
|
||||
ParagraphLayout::VisualRun *ParagraphLayout::Line::getVisualRun(int run) const
|
||||
const ParagraphLayouter::VisualRun *FallbackParagraphLayout::FallbackLine::GetVisualRun(int run) const
|
||||
{
|
||||
return *this->Get(run);
|
||||
}
|
||||
@@ -267,17 +421,25 @@ ParagraphLayout::VisualRun *ParagraphLayout::Line::getVisualRun(int run) const
|
||||
* @param length The length of the paragraph.
|
||||
* @param runs The font mapping of this paragraph.
|
||||
*/
|
||||
ParagraphLayout::ParagraphLayout(WChar *buffer, int length, FontMap &runs) : buffer_begin(buffer), buffer(buffer), runs(runs)
|
||||
FallbackParagraphLayout::FallbackParagraphLayout(WChar *buffer, int length, FontMap &runs) : buffer_begin(buffer), buffer(buffer), runs(runs)
|
||||
{
|
||||
assert(runs.End()[-1].first == length);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset the position to the start of the paragraph.
|
||||
*/
|
||||
void FallbackParagraphLayout::Reflow()
|
||||
{
|
||||
this->buffer = this->buffer_begin;
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a new line with a maximum width.
|
||||
* @param max_width The maximum width of the string.
|
||||
* @return A Line, or NULL when at the end of the paragraph.
|
||||
*/
|
||||
ParagraphLayout::Line *ParagraphLayout::nextLine(int max_width)
|
||||
const ParagraphLayouter::Line *FallbackParagraphLayout::NextLine(int max_width)
|
||||
{
|
||||
/* Simple idea:
|
||||
* - split a line at a newline character, or at a space where we can break a line.
|
||||
@@ -285,17 +447,17 @@ ParagraphLayout::Line *ParagraphLayout::nextLine(int max_width)
|
||||
*/
|
||||
if (this->buffer == NULL) return NULL;
|
||||
|
||||
Line *l = new Line();
|
||||
FallbackLine *l = new FallbackLine();
|
||||
|
||||
if (*this->buffer == '\0') {
|
||||
/* Only a newline. */
|
||||
this->buffer = NULL;
|
||||
*l->Append() = new VisualRun(this->runs.Begin()->second, this->buffer, 0, 0);
|
||||
*l->Append() = new FallbackVisualRun(this->runs.Begin()->second, this->buffer, 0, 0);
|
||||
return l;
|
||||
}
|
||||
|
||||
const WChar *begin = this->buffer;
|
||||
WChar *last_space = NULL;
|
||||
const WChar *last_space = NULL;
|
||||
const WChar *last_char = begin;
|
||||
int width = 0;
|
||||
|
||||
@@ -319,7 +481,8 @@ ParagraphLayout::Line *ParagraphLayout::nextLine(int max_width)
|
||||
}
|
||||
|
||||
if (this->buffer == next_run) {
|
||||
*l->Append() = new VisualRun(iter->second, begin, this->buffer - begin, l->getWidth());
|
||||
int w = l->GetWidth();
|
||||
*l->Append() = new FallbackVisualRun(iter->second, begin, this->buffer - begin, w);
|
||||
iter++;
|
||||
assert(iter != this->runs.End());
|
||||
|
||||
@@ -354,7 +517,7 @@ ParagraphLayout::Line *ParagraphLayout::nextLine(int max_width)
|
||||
last_char = this->buffer;
|
||||
} else {
|
||||
/* A space is found; perfect place to terminate */
|
||||
this->buffer = last_space;
|
||||
this->buffer = last_space + 1;
|
||||
last_char = last_space;
|
||||
}
|
||||
break;
|
||||
@@ -365,7 +528,8 @@ ParagraphLayout::Line *ParagraphLayout::nextLine(int max_width)
|
||||
}
|
||||
|
||||
if (l->Length() == 0 || last_char - begin != 0) {
|
||||
*l->Append() = new VisualRun(iter->second, begin, last_char - begin, l->getWidth());
|
||||
int w = l->GetWidth();
|
||||
*l->Append() = new FallbackVisualRun(iter->second, begin, last_char - begin, w);
|
||||
}
|
||||
return l;
|
||||
}
|
||||
@@ -377,7 +541,7 @@ ParagraphLayout::Line *ParagraphLayout::nextLine(int max_width)
|
||||
* @param c The character to add.
|
||||
* @return The number of buffer spaces that were used.
|
||||
*/
|
||||
size_t Layouter::AppendToBuffer(WChar *buff, const WChar *buffer_last, WChar c)
|
||||
static size_t AppendToBuffer(WChar *buff, const WChar *buffer_last, WChar c)
|
||||
{
|
||||
*buff = c;
|
||||
return 1;
|
||||
@@ -390,11 +554,74 @@ size_t Layouter::AppendToBuffer(WChar *buff, const WChar *buffer_last, WChar c)
|
||||
* @param fontMapping THe mapping of the fonts.
|
||||
* @return The ParagraphLayout instance.
|
||||
*/
|
||||
ParagraphLayout *Layouter::GetParagraphLayout(WChar *buff, WChar *buff_end, FontMap &fontMapping)
|
||||
static FallbackParagraphLayout *GetParagraphLayout(WChar *buff, WChar *buff_end, FontMap &fontMapping)
|
||||
{
|
||||
return new ParagraphLayout(buff, buff_end - buff, fontMapping);
|
||||
return new FallbackParagraphLayout(buff, buff_end - buff, fontMapping);
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper for getting a ParagraphLayouter of the given type.
|
||||
*
|
||||
* @note In case no ParagraphLayouter could be constructed, line.layout will be NULL.
|
||||
* @param line The cache item to store our layouter in.
|
||||
* @param str The string to create a layouter for.
|
||||
* @param state The state of the font and color.
|
||||
* @tparam T The type of layouter we want.
|
||||
*/
|
||||
template <typename T>
|
||||
static inline void GetLayouter(Layouter::LineCacheItem &line, const char *str, FontState state)
|
||||
{
|
||||
if (line.buffer != NULL) free(line.buffer);
|
||||
|
||||
typename T::CharType *buff_begin = MallocT<typename T::CharType>(DRAW_STRING_BUFFER);
|
||||
const typename T::CharType *buffer_last = buff_begin + DRAW_STRING_BUFFER;
|
||||
typename T::CharType *buff = buff_begin;
|
||||
FontMap &fontMapping = line.runs;
|
||||
Font *f = Layouter::GetFont(state.fontsize, state.cur_colour);
|
||||
|
||||
line.buffer = buff_begin;
|
||||
|
||||
/*
|
||||
* Go through the whole string while adding Font instances to the font map
|
||||
* whenever the font changes, and convert the wide characters into a format
|
||||
* usable by ParagraphLayout.
|
||||
*/
|
||||
for (; buff < buffer_last;) {
|
||||
WChar c = Utf8Consume(const_cast<const char **>(&str));
|
||||
if (c == '\0' || c == '\n') {
|
||||
break;
|
||||
} else if (c >= SCC_BLUE && c <= SCC_BLACK) {
|
||||
state.SetColour((TextColour)(c - SCC_BLUE));
|
||||
} else if (c == SCC_PREVIOUS_COLOUR) { // Revert to the previous colour.
|
||||
state.SetPreviousColour();
|
||||
} else if (c == SCC_TINYFONT) {
|
||||
state.SetFontSize(FS_SMALL);
|
||||
} else if (c == SCC_BIGFONT) {
|
||||
state.SetFontSize(FS_LARGE);
|
||||
} else {
|
||||
/* Filter out text direction characters that shouldn't be drawn, and
|
||||
* will not be handled in the fallback non ICU case because they are
|
||||
* mostly needed for RTL languages which need more ICU support. */
|
||||
if (!T::SUPPORTS_RTL && IsTextDirectionChar(c)) continue;
|
||||
buff += AppendToBuffer(buff, buffer_last, c);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!fontMapping.Contains(buff - buff_begin)) {
|
||||
fontMapping.Insert(buff - buff_begin, f);
|
||||
}
|
||||
f = Layouter::GetFont(state.fontsize, state.cur_colour);
|
||||
}
|
||||
|
||||
/* Better safe than sorry. */
|
||||
*buff = '\0';
|
||||
|
||||
if (!fontMapping.Contains(buff - buff_begin)) {
|
||||
fontMapping.Insert(buff - buff_begin, f);
|
||||
}
|
||||
line.layout = GetParagraphLayout(buff_begin, buff, fontMapping);
|
||||
line.state_after = state;
|
||||
}
|
||||
#endif /* !WITH_ICU */
|
||||
|
||||
/**
|
||||
* Create a new layouter.
|
||||
@@ -403,77 +630,50 @@ ParagraphLayout *Layouter::GetParagraphLayout(WChar *buff, WChar *buff_end, Font
|
||||
* @param colour The colour of the font.
|
||||
* @param fontsize The size of font to use.
|
||||
*/
|
||||
Layouter::Layouter(const char *str, int maxw, TextColour colour, FontSize fontsize)
|
||||
Layouter::Layouter(const char *str, int maxw, TextColour colour, FontSize fontsize) : string(str)
|
||||
{
|
||||
const CharType *buffer_last = lastof(this->buffer);
|
||||
CharType *buff = this->buffer;
|
||||
|
||||
TextColour cur_colour = colour, prev_colour = colour;
|
||||
FontState state(colour, fontsize);
|
||||
WChar c = 0;
|
||||
|
||||
do {
|
||||
Font *f = new Font(fontsize, cur_colour);
|
||||
CharType *buff_begin = buff;
|
||||
FontMap fontMapping;
|
||||
|
||||
/*
|
||||
* Go through the whole string while adding Font instances to the font map
|
||||
* whenever the font changes, and convert the wide characters into a format
|
||||
* usable by ParagraphLayout.
|
||||
*/
|
||||
for (; buff < buffer_last;) {
|
||||
c = Utf8Consume(const_cast<const char **>(&str));
|
||||
if (c == '\0' || c == '\n') {
|
||||
break;
|
||||
} else if (c >= SCC_BLUE && c <= SCC_BLACK) {
|
||||
prev_colour = cur_colour;
|
||||
cur_colour = (TextColour)(c - SCC_BLUE);
|
||||
} else if (c == SCC_PREVIOUS_COLOUR) { // Revert to the previous colour.
|
||||
Swap(prev_colour, cur_colour);
|
||||
} else if (c == SCC_TINYFONT) {
|
||||
fontsize = FS_SMALL;
|
||||
} else if (c == SCC_BIGFONT) {
|
||||
fontsize = FS_LARGE;
|
||||
} else {
|
||||
buff += AppendToBuffer(buff, buffer_last, c);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!fontMapping.Contains(buff - buff_begin)) {
|
||||
fontMapping.Insert(buff - buff_begin, f);
|
||||
*this->fonts.Append() = f;
|
||||
} else {
|
||||
delete f;
|
||||
}
|
||||
f = new Font(fontsize, cur_colour);
|
||||
/* Scan string for end of line */
|
||||
const char *lineend = str;
|
||||
for (;;) {
|
||||
size_t len = Utf8Decode(&c, lineend);
|
||||
if (c == '\0' || c == '\n') break;
|
||||
lineend += len;
|
||||
}
|
||||
|
||||
/* Better safe than sorry. */
|
||||
*buff = '\0';
|
||||
|
||||
if (!fontMapping.Contains(buff - buff_begin)) {
|
||||
fontMapping.Insert(buff - buff_begin, f);
|
||||
*this->fonts.Append() = f;
|
||||
LineCacheItem& line = GetCachedParagraphLayout(str, lineend - str, state);
|
||||
if (line.layout != NULL) {
|
||||
/* Line is in cache */
|
||||
str = lineend + 1;
|
||||
state = line.state_after;
|
||||
line.layout->Reflow();
|
||||
} else {
|
||||
/* Line is new, layout it */
|
||||
#ifdef WITH_ICU
|
||||
GetLayouter<ICUParagraphLayout>(line, str, state);
|
||||
if (line.layout == NULL) {
|
||||
static bool warned = false;
|
||||
if (!warned) {
|
||||
DEBUG(misc, 0, "ICU layouter bailed on the font. Falling back to the fallback layouter");
|
||||
warned = true;
|
||||
}
|
||||
GetLayouter<FallbackParagraphLayout>(line, str, state);
|
||||
}
|
||||
#else
|
||||
GetLayouter<FallbackParagraphLayout>(line, str, state);
|
||||
#endif
|
||||
}
|
||||
ParagraphLayout *p = GetParagraphLayout(buff_begin, buff, fontMapping);
|
||||
|
||||
/* Copy all lines into a local cache so we can reuse them later on more easily. */
|
||||
ParagraphLayout::Line *l;
|
||||
while ((l = p->nextLine(maxw)) != NULL) {
|
||||
const ParagraphLayouter::Line *l;
|
||||
while ((l = line.layout->NextLine(maxw)) != NULL) {
|
||||
*this->Append() = l;
|
||||
}
|
||||
|
||||
delete p;
|
||||
|
||||
} while (c != '\0' && buff < buffer_last);
|
||||
}
|
||||
|
||||
/** Free everything we allocated. */
|
||||
Layouter::~Layouter()
|
||||
{
|
||||
for (Font **iter = this->fonts.Begin(); iter != this->fonts.End(); iter++) {
|
||||
delete *iter;
|
||||
}
|
||||
} while (c != '\0');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -483,9 +683,162 @@ Layouter::~Layouter()
|
||||
Dimension Layouter::GetBounds()
|
||||
{
|
||||
Dimension d = { 0, 0 };
|
||||
for (ParagraphLayout::Line **l = this->Begin(); l != this->End(); l++) {
|
||||
d.width = max<uint>(d.width, (*l)->getWidth());
|
||||
d.height += (*l)->getLeading();
|
||||
for (const ParagraphLayouter::Line **l = this->Begin(); l != this->End(); l++) {
|
||||
d.width = max<uint>(d.width, (*l)->GetWidth());
|
||||
d.height += (*l)->GetLeading();
|
||||
}
|
||||
return d;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the position of a character in the layout.
|
||||
* @param ch Character to get the position of.
|
||||
* @return Upper left corner of the character relative to the start of the string.
|
||||
* @note Will only work right for single-line strings.
|
||||
*/
|
||||
Point Layouter::GetCharPosition(const char *ch) const
|
||||
{
|
||||
/* Find the code point index which corresponds to the char
|
||||
* pointer into our UTF-8 source string. */
|
||||
size_t index = 0;
|
||||
const char *str = this->string;
|
||||
while (str < ch) {
|
||||
WChar c;
|
||||
size_t len = Utf8Decode(&c, str);
|
||||
if (c == '\0' || c == '\n') break;
|
||||
str += len;
|
||||
index += (*this->Begin())->GetInternalCharLength(c);
|
||||
}
|
||||
|
||||
if (str == ch) {
|
||||
/* Valid character. */
|
||||
const ParagraphLayouter::Line *line = *this->Begin();
|
||||
|
||||
/* Pointer to the end-of-string/line marker? Return total line width. */
|
||||
if (*ch == '\0' || *ch == '\n') {
|
||||
Point p = { line->GetWidth(), 0 };
|
||||
return p;
|
||||
}
|
||||
|
||||
/* Scan all runs until we've found our code point index. */
|
||||
for (int run_index = 0; run_index < line->CountRuns(); run_index++) {
|
||||
const ParagraphLayouter::VisualRun *run = line->GetVisualRun(run_index);
|
||||
|
||||
for (int i = 0; i < run->GetGlyphCount(); i++) {
|
||||
/* Matching glyph? Return position. */
|
||||
if ((size_t)run->GetGlyphToCharMap()[i] == index) {
|
||||
Point p = { (int)run->GetPositions()[i * 2], (int)run->GetPositions()[i * 2 + 1] };
|
||||
return p;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Point p = { 0, 0 };
|
||||
return p;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the character that is at a position.
|
||||
* @param x Position in the string.
|
||||
* @return Pointer to the character at the position or NULL if no character is at the position.
|
||||
*/
|
||||
const char *Layouter::GetCharAtPosition(int x) const
|
||||
{
|
||||
const ParagraphLayouter::Line *line = *this->Begin();;
|
||||
|
||||
for (int run_index = 0; run_index < line->CountRuns(); run_index++) {
|
||||
const ParagraphLayouter::VisualRun *run = line->GetVisualRun(run_index);
|
||||
|
||||
for (int i = 0; i < run->GetGlyphCount(); i++) {
|
||||
/* Not a valid glyph (empty). */
|
||||
if (run->GetGlyphs()[i] == 0xFFFF) continue;
|
||||
|
||||
int begin_x = (int)run->GetPositions()[i * 2];
|
||||
int end_x = (int)run->GetPositions()[i * 2 + 2];
|
||||
|
||||
if (IsInsideMM(x, begin_x, end_x)) {
|
||||
/* Found our glyph, now convert to UTF-8 string index. */
|
||||
size_t index = run->GetGlyphToCharMap()[i];
|
||||
|
||||
size_t cur_idx = 0;
|
||||
for (const char *str = this->string; *str != '\0'; ) {
|
||||
if (cur_idx == index) return str;
|
||||
|
||||
WChar c = Utf8Consume(&str);
|
||||
cur_idx += line->GetInternalCharLength(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a static font instance.
|
||||
*/
|
||||
Font *Layouter::GetFont(FontSize size, TextColour colour)
|
||||
{
|
||||
FontColourMap::iterator it = fonts[size].Find(colour);
|
||||
if (it != fonts[size].End()) return it->second;
|
||||
|
||||
Font *f = new Font(size, colour);
|
||||
*fonts[size].Append() = FontColourMap::Pair(colour, f);
|
||||
return f;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset cached font information.
|
||||
* @param size Font size to reset.
|
||||
*/
|
||||
void Layouter::ResetFontCache(FontSize size)
|
||||
{
|
||||
for (FontColourMap::iterator it = fonts[size].Begin(); it != fonts[size].End(); ++it) {
|
||||
delete it->second;
|
||||
}
|
||||
fonts[size].Clear();
|
||||
|
||||
/* We must reset the linecache since it references the just freed fonts */
|
||||
ResetLineCache();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get reference to cache item.
|
||||
* If the item does not exist yet, it is default constructed.
|
||||
* @param str Source string of the line (including colour and font size codes).
|
||||
* @param len Length of \a str in bytes (no termination).
|
||||
* @param state State of the font at the beginning of the line.
|
||||
* @return Reference to cache item.
|
||||
*/
|
||||
Layouter::LineCacheItem &Layouter::GetCachedParagraphLayout(const char *str, size_t len, const FontState &state)
|
||||
{
|
||||
if (linecache == NULL) {
|
||||
/* Create linecache on first access to avoid trouble with initialisation order of static variables. */
|
||||
linecache = new LineCache();
|
||||
}
|
||||
|
||||
LineCacheKey key;
|
||||
key.state_before = state;
|
||||
key.str.assign(str, len);
|
||||
return (*linecache)[key];
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear line cache.
|
||||
*/
|
||||
void Layouter::ResetLineCache()
|
||||
{
|
||||
if (linecache != NULL) linecache->clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* Reduce the size of linecache if necessary to prevent infinite growth.
|
||||
*/
|
||||
void Layouter::ReduceLineCache()
|
||||
{
|
||||
if (linecache != NULL) {
|
||||
/* TODO LRU cache would be fancy, but not exactly necessary */
|
||||
if (linecache->size() > 4096) ResetLineCache();
|
||||
}
|
||||
}
|
||||
|
162
src/gfx_layout.h
162
src/gfx_layout.h
@@ -16,6 +16,9 @@
|
||||
#include "gfx_func.h"
|
||||
#include "core/smallmap_type.hpp"
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
#ifdef WITH_ICU
|
||||
#include "layout/ParagraphLayout.h"
|
||||
#define ICU_FONTINSTANCE : public LEFontInstance
|
||||
@@ -23,6 +26,45 @@
|
||||
#define ICU_FONTINSTANCE
|
||||
#endif /* WITH_ICU */
|
||||
|
||||
/**
|
||||
* Text drawing parameters, which can change while drawing a line, but are kept between multiple parts
|
||||
* of the same text, e.g. on line breaks.
|
||||
*/
|
||||
struct FontState {
|
||||
FontSize fontsize; ///< Current font size.
|
||||
TextColour cur_colour; ///< Current text colour.
|
||||
TextColour prev_colour; ///< Text colour from before the last colour switch.
|
||||
|
||||
FontState() : fontsize(FS_END), cur_colour(TC_INVALID), prev_colour(TC_INVALID) {}
|
||||
FontState(TextColour colour, FontSize fontsize) : fontsize(fontsize), cur_colour(colour), prev_colour(colour) {}
|
||||
|
||||
/**
|
||||
* Switch to new colour \a c.
|
||||
* @param c New colour to use.
|
||||
*/
|
||||
inline void SetColour(TextColour c)
|
||||
{
|
||||
assert(c >= TC_BLUE && c <= TC_BLACK);
|
||||
this->prev_colour = this->cur_colour;
|
||||
this->cur_colour = c;
|
||||
}
|
||||
|
||||
/** Switch to previous colour. */
|
||||
inline void SetPreviousColour()
|
||||
{
|
||||
Swap(this->cur_colour, this->prev_colour);
|
||||
}
|
||||
|
||||
/**
|
||||
* Switch to using a new font \a f.
|
||||
* @param f New font to use.
|
||||
*/
|
||||
inline void SetFontSize(FontSize f)
|
||||
{
|
||||
this->fontsize = f;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Container with information about a font.
|
||||
*/
|
||||
@@ -55,86 +97,94 @@ public:
|
||||
/** Mapping from index to font. */
|
||||
typedef SmallMap<int, Font *> FontMap;
|
||||
|
||||
#ifndef WITH_ICU
|
||||
/**
|
||||
* Class handling the splitting of a paragraph of text into lines and
|
||||
* visual runs.
|
||||
*
|
||||
* One constructs this class with the text that needs to be split into
|
||||
* lines. Then nextLine is called with the maximum width until NULL is
|
||||
* returned. Each nextLine call creates VisualRuns which contain the
|
||||
* length of text that are to be drawn with the same font. In other
|
||||
* words, the result of this class is a list of sub strings with their
|
||||
* font. The sub strings are then already fully laid out, and only
|
||||
* need actual drawing.
|
||||
*
|
||||
* The positions in a visual run are sequential pairs of X,Y of the
|
||||
* begin of each of the glyphs plus an extra pair to mark the end.
|
||||
*
|
||||
* @note This variant does not handle left-to-right properly. This
|
||||
* is supported in the one ParagraphLayout coming from ICU.
|
||||
* @note Does not conform to function naming style as it provides a
|
||||
* fallback for the ICU class.
|
||||
* Interface to glue fallback and normal layouter into one.
|
||||
*/
|
||||
class ParagraphLayout {
|
||||
class ParagraphLayouter {
|
||||
public:
|
||||
virtual ~ParagraphLayouter() {}
|
||||
|
||||
/** Visual run contains data about the bit of text with the same font. */
|
||||
class VisualRun {
|
||||
Font *font; ///< The font used to layout these.
|
||||
GlyphID *glyphs; ///< The glyphs we're drawing.
|
||||
float *positions; ///< The positions of the glyphs.
|
||||
int glyph_count; ///< The number of glyphs.
|
||||
|
||||
public:
|
||||
VisualRun(Font *font, const WChar *chars, int glyph_count, int x);
|
||||
~VisualRun();
|
||||
Font *getFont() const;
|
||||
int getGlyphCount() const;
|
||||
const GlyphID *getGlyphs() const;
|
||||
float *getPositions() const;
|
||||
int getLeading() const;
|
||||
virtual ~VisualRun() {}
|
||||
virtual const Font *GetFont() const = 0;
|
||||
virtual int GetGlyphCount() const = 0;
|
||||
virtual const GlyphID *GetGlyphs() const = 0;
|
||||
virtual const float *GetPositions() const = 0;
|
||||
virtual int GetLeading() const = 0;
|
||||
virtual const int *GetGlyphToCharMap() const = 0;
|
||||
};
|
||||
|
||||
/** A single line worth of VisualRuns. */
|
||||
class Line : public AutoDeleteSmallVector<VisualRun *, 4> {
|
||||
class Line {
|
||||
public:
|
||||
int getLeading() const;
|
||||
int getWidth() const;
|
||||
int countRuns() const;
|
||||
VisualRun *getVisualRun(int run) const;
|
||||
virtual ~Line() {}
|
||||
virtual int GetLeading() const = 0;
|
||||
virtual int GetWidth() const = 0;
|
||||
virtual int CountRuns() const = 0;
|
||||
virtual const VisualRun *GetVisualRun(int run) const = 0;
|
||||
virtual int GetInternalCharLength(WChar c) const = 0;
|
||||
};
|
||||
|
||||
const WChar *buffer_begin; ///< Begin of the buffer.
|
||||
WChar *buffer; ///< The current location in the buffer.
|
||||
FontMap &runs; ///< The fonts we have to use for this paragraph.
|
||||
|
||||
ParagraphLayout(WChar *buffer, int length, FontMap &runs);
|
||||
Line *nextLine(int max_width);
|
||||
virtual void Reflow() = 0;
|
||||
virtual const Line *NextLine(int max_width) = 0;
|
||||
};
|
||||
#endif /* !WITH_ICU */
|
||||
|
||||
/**
|
||||
* The layouter performs all the layout work.
|
||||
*
|
||||
* It also accounts for the memory allocations and frees.
|
||||
*/
|
||||
class Layouter : public AutoDeleteSmallVector<ParagraphLayout::Line *, 4> {
|
||||
#ifdef WITH_ICU
|
||||
typedef UChar CharType; ///< The type of character used within the layouter.
|
||||
#else /* WITH_ICU */
|
||||
typedef WChar CharType; ///< The type of character used within the layouter.
|
||||
#endif /* WITH_ICU */
|
||||
class Layouter : public AutoDeleteSmallVector<const ParagraphLayouter::Line *, 4> {
|
||||
const char *string; ///< Pointer to the original string.
|
||||
|
||||
size_t AppendToBuffer(CharType *buff, const CharType *buffer_last, WChar c);
|
||||
ParagraphLayout *GetParagraphLayout(CharType *buff, CharType *buff_end, FontMap &fontMapping);
|
||||
|
||||
CharType buffer[DRAW_STRING_BUFFER]; ///< Buffer for the text that is going to be drawn.
|
||||
SmallVector<Font *, 4> fonts; ///< The fonts needed for drawing.
|
||||
/** Key into the linecache */
|
||||
struct LineCacheKey {
|
||||
FontState state_before; ///< Font state at the beginning of the line.
|
||||
std::string str; ///< Source string of the line (including colour and font size codes).
|
||||
|
||||
/** Comparison operator for std::map */
|
||||
bool operator<(const LineCacheKey &other) const
|
||||
{
|
||||
if (this->state_before.fontsize != other.state_before.fontsize) return this->state_before.fontsize < other.state_before.fontsize;
|
||||
if (this->state_before.cur_colour != other.state_before.cur_colour) return this->state_before.cur_colour < other.state_before.cur_colour;
|
||||
if (this->state_before.prev_colour != other.state_before.prev_colour) return this->state_before.prev_colour < other.state_before.prev_colour;
|
||||
return this->str < other.str;
|
||||
}
|
||||
};
|
||||
public:
|
||||
/** Item in the linecache */
|
||||
struct LineCacheItem {
|
||||
/* Stuff that cannot be freed until the ParagraphLayout is freed */
|
||||
void *buffer; ///< Accessed by both ICU's and our ParagraphLayout::nextLine.
|
||||
FontMap runs; ///< Accessed by our ParagraphLayout::nextLine.
|
||||
|
||||
FontState state_after; ///< Font state after the line.
|
||||
ParagraphLayouter *layout; ///< Layout of the line.
|
||||
|
||||
LineCacheItem() : buffer(NULL), layout(NULL) {}
|
||||
~LineCacheItem() { delete layout; free(buffer); }
|
||||
};
|
||||
private:
|
||||
typedef std::map<LineCacheKey, LineCacheItem> LineCache;
|
||||
static LineCache *linecache;
|
||||
|
||||
static LineCacheItem &GetCachedParagraphLayout(const char *str, size_t len, const FontState &state);
|
||||
|
||||
typedef SmallMap<TextColour, Font *> FontColourMap;
|
||||
static FontColourMap fonts[FS_END];
|
||||
public:
|
||||
static Font *GetFont(FontSize size, TextColour colour);
|
||||
|
||||
Layouter(const char *str, int maxw = INT32_MAX, TextColour colour = TC_FROMSTRING, FontSize fontsize = FS_NORMAL);
|
||||
~Layouter();
|
||||
Dimension GetBounds();
|
||||
Point GetCharPosition(const char *ch) const;
|
||||
const char *GetCharAtPosition(int x) const;
|
||||
|
||||
static void ResetFontCache(FontSize size);
|
||||
static void ResetLineCache();
|
||||
static void ReduceLineCache();
|
||||
};
|
||||
|
||||
#endif /* GFX_LAYOUT_H */
|
||||
|
@@ -63,7 +63,7 @@ struct EndGameHighScoreBaseWindow : Window {
|
||||
delete this;
|
||||
}
|
||||
|
||||
virtual EventState OnKeyPress(uint16 key, uint16 keycode)
|
||||
virtual EventState OnKeyPress(WChar key, uint16 keycode)
|
||||
{
|
||||
/* All keys are 'handled' by this window but we want to make
|
||||
* sure that 'quit' still works correctly. Not handling the
|
||||
|
@@ -48,8 +48,7 @@ static const KeycodeNames _keycode_to_name[] = {
|
||||
{"F11", WKC_F11},
|
||||
{"F12", WKC_F12},
|
||||
{"PAUSE", WKC_PAUSE},
|
||||
{"PLUS", (WindowKeyCodes)'+'},
|
||||
{"COMMA", (WindowKeyCodes)','},
|
||||
{"COMMA", WKC_COMMA},
|
||||
{"NUM_PLUS", WKC_NUM_PLUS},
|
||||
{"NUM_MINUS", WKC_NUM_MINUS},
|
||||
{"=", WKC_EQUALS},
|
||||
@@ -295,7 +294,7 @@ void SaveHotkeysToConfig()
|
||||
SaveLoadHotkeys(true);
|
||||
}
|
||||
|
||||
typedef EventState GlobalHotkeyHandler(uint16, uint16);
|
||||
typedef EventState GlobalHotkeyHandler(WChar, uint16);
|
||||
|
||||
GlobalHotkeyHandler RailToolbarGlobalHotkeys;
|
||||
GlobalHotkeyHandler DockToolbarGlobalHotkeys;
|
||||
@@ -324,7 +323,7 @@ GlobalHotkeyHandler *_global_hotkey_handlers_editor[] = {
|
||||
};
|
||||
|
||||
|
||||
void HandleGlobalHotkeys(uint16 key, uint16 keycode)
|
||||
void HandleGlobalHotkeys(WChar key, uint16 keycode)
|
||||
{
|
||||
if (_game_mode == GM_NORMAL) {
|
||||
for (uint i = 0; i < lengthof(_global_hotkey_handlers); i++) {
|
||||
|
@@ -14,6 +14,7 @@
|
||||
|
||||
#include "core/smallvec_type.hpp"
|
||||
#include "gfx_type.h"
|
||||
#include "string_type.h"
|
||||
|
||||
/**
|
||||
* All data for a single hotkey. The name (for saving/loading a configfile),
|
||||
@@ -130,6 +131,6 @@ void LoadHotkeysFromConfig();
|
||||
void SaveHotkeysToConfig();
|
||||
|
||||
|
||||
void HandleGlobalHotkeys(uint16 key, uint16 keycode);
|
||||
void HandleGlobalHotkeys(WChar key, uint16 keycode);
|
||||
|
||||
#endif /* HOTKEYS_H */
|
||||
|
@@ -378,24 +378,37 @@ public:
|
||||
virtual void DrawWidget(const Rect &r, int widget) const
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_DPI_MATRIX_WIDGET:
|
||||
case WID_DPI_MATRIX_WIDGET: {
|
||||
uint text_left, text_right, icon_left, icon_right;
|
||||
if (_current_text_dir == TD_RTL) {
|
||||
icon_right = r.right - WD_MATRIX_RIGHT;
|
||||
icon_left = icon_right - 10;
|
||||
text_right = icon_right - BuildIndustryWindow::MATRIX_TEXT_OFFSET;
|
||||
text_left = r.left + WD_MATRIX_LEFT;
|
||||
} else {
|
||||
icon_left = r.left + WD_MATRIX_LEFT;
|
||||
icon_right = icon_left + 10;
|
||||
text_left = icon_left + BuildIndustryWindow::MATRIX_TEXT_OFFSET;
|
||||
text_right = r.right - WD_MATRIX_RIGHT;
|
||||
}
|
||||
|
||||
for (byte i = 0; i < this->vscroll->GetCapacity() && i + this->vscroll->GetPosition() < this->count; i++) {
|
||||
int x = r.left + WD_MATRIX_LEFT;
|
||||
int y = r.top + WD_MATRIX_TOP + i * this->resize.step_height;
|
||||
bool selected = this->selected_index == i + this->vscroll->GetPosition();
|
||||
|
||||
if (this->index[i + this->vscroll->GetPosition()] == INVALID_INDUSTRYTYPE) {
|
||||
DrawString(x + MATRIX_TEXT_OFFSET, r.right - WD_MATRIX_RIGHT, y, STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES, selected ? TC_WHITE : TC_ORANGE);
|
||||
DrawString(text_left, text_right, y, STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES, selected ? TC_WHITE : TC_ORANGE);
|
||||
continue;
|
||||
}
|
||||
const IndustrySpec *indsp = GetIndustrySpec(this->index[i + this->vscroll->GetPosition()]);
|
||||
|
||||
/* Draw the name of the industry in white is selected, otherwise, in orange */
|
||||
DrawString(x + MATRIX_TEXT_OFFSET, r.right - WD_MATRIX_RIGHT, y, indsp->name, selected ? TC_WHITE : TC_ORANGE);
|
||||
GfxFillRect(x, y + 1, x + 10, y + 7, selected ? PC_WHITE : PC_BLACK);
|
||||
GfxFillRect(x + 1, y + 2, x + 9, y + 6, indsp->map_colour);
|
||||
DrawString(text_left, text_right, y, indsp->name, selected ? TC_WHITE : TC_ORANGE);
|
||||
GfxFillRect(icon_left, y + 1, icon_right, y + 7, selected ? PC_WHITE : PC_BLACK);
|
||||
GfxFillRect(icon_left + 1, y + 2, icon_right - 1, y + 6, indsp->map_colour);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_DPI_INFOPANEL: {
|
||||
int y = r.top + WD_FRAMERECT_TOP;
|
||||
@@ -2575,7 +2588,7 @@ struct IndustryCargoesWindow : public Window {
|
||||
delete lst;
|
||||
break;
|
||||
}
|
||||
int selected = (this->ind_cargo >= NUM_INDUSTRYTYPES) ? this->ind_cargo - NUM_INDUSTRYTYPES : -1;
|
||||
int selected = (this->ind_cargo >= NUM_INDUSTRYTYPES) ? (int)(this->ind_cargo - NUM_INDUSTRYTYPES) : -1;
|
||||
ShowDropDownList(this, lst, selected, WID_IC_CARGO_DROPDOWN, 0, true);
|
||||
break;
|
||||
}
|
||||
@@ -2592,7 +2605,7 @@ struct IndustryCargoesWindow : public Window {
|
||||
delete lst;
|
||||
break;
|
||||
}
|
||||
int selected = (this->ind_cargo < NUM_INDUSTRYTYPES) ? this->ind_cargo : -1;
|
||||
int selected = (this->ind_cargo < NUM_INDUSTRYTYPES) ? (int)this->ind_cargo : -1;
|
||||
ShowDropDownList(this, lst, selected, WID_IC_IND_DROPDOWN, 0, true);
|
||||
break;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -222,7 +222,7 @@ STR_LIST_FILTER_TOOLTIP :{BLACK} اخت
|
||||
|
||||
STR_TOOLTIP_SORT_ORDER :{BLACK} اختر طريقة الترتيب - تنازلي / تصاعدي
|
||||
STR_TOOLTIP_SORT_CRITERIA :{BLACK} اختر نوع الترتيب
|
||||
STR_TOOLTIP_FILTER_CRITERIA :{BLACK} اختر معايير الفلترة
|
||||
STR_TOOLTIP_FILTER_CRITERIA :{BLACK}حدد معايير المُرَشِح
|
||||
STR_BUTTON_SORT_BY :{BLACK} رتب بـ
|
||||
STR_BUTTON_LOCATION :{BLACK}الموقع
|
||||
STR_BUTTON_RENAME :{BLACK}اعادة تسمية
|
||||
@@ -346,10 +346,10 @@ STR_SCENEDIT_FILE_MENU_QUIT :انهاء
|
||||
############ range for SE file menu starts
|
||||
|
||||
############ range for settings menu starts
|
||||
STR_SETTINGS_MENU_GAME_OPTIONS :خيارات اللعبة
|
||||
STR_SETTINGS_MENU_GAME_OPTIONS :إعدادات اللعبه
|
||||
STR_SETTINGS_MENU_CONFIG_SETTINGS :اعدادات متقدمة
|
||||
STR_SETTINGS_MENU_SCRIPT_SETTINGS :الذكاء الصناعي/ اعدادات اللعبة
|
||||
STR_SETTINGS_MENU_NEWGRF_SETTINGS :إعدادات جرافيك جديده
|
||||
STR_SETTINGS_MENU_NEWGRF_SETTINGS :إعدادات اﻹضافات
|
||||
STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :خيارات الشفافية
|
||||
STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :عرض اسماء المدن
|
||||
STR_SETTINGS_MENU_STATION_NAMES_DISPLAYED :عرض اسماء المحطات
|
||||
@@ -623,7 +623,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}اختي
|
||||
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}تشغيل / ايقاف العشوائي
|
||||
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}اظهار اطار اختيار الموسيقى
|
||||
|
||||
STR_ERROR_NO_SONGS :{WHITE}لا تحتوي مجموعة الموسيقى المختارة على اغاني. لن تعزف اي موسيقى.
|
||||
STR_ERROR_NO_SONGS :{WHITE}لا تحتوى قاعده الموسيقى المُختاره على اى اغانى. لن تُعزَف اى اغانى
|
||||
|
||||
# Playlist window
|
||||
STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}برنامج اختيار الموسيقى
|
||||
@@ -735,7 +735,7 @@ STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLAC
|
||||
STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}المواطنون يحتفلون ... {}بوصول اول سفينة الى {STATION}!
|
||||
STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}الأهالي يحتفلون . . . {}بوصول أول طائرة الى {STATION}!
|
||||
|
||||
STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}تحطم قطار! {}{COMMA} مات في حريق بعد الحادث
|
||||
STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}تحطم قطاراً!{}{COMMA} مات فى الحريق بعد الحادث
|
||||
STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}العربة تحطمت !{}السائق توفي في شعلة الحريق بعد الاصطدام بقطار
|
||||
STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}العربة تحطمت !{}{COMMA} توفي في شعلة الحريق بعد الاصطدام بقطار
|
||||
STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}تحطم طائرة !{}{COMMA}ماتوا في الحريق بمطار {STATION}
|
||||
@@ -833,7 +833,7 @@ STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}لصق
|
||||
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}لصق شاشة العرض هذة للشاشة الرئيسية
|
||||
|
||||
# Game options window
|
||||
STR_GAME_OPTIONS_CAPTION :{WHITE}خيارات
|
||||
STR_GAME_OPTIONS_CAPTION :{WHITE}إعدادات اللعبه
|
||||
STR_GAME_OPTIONS_CURRENCY_UNITS_FRAME :{BLACK}وحدة العملة
|
||||
STR_GAME_OPTIONS_CURRENCY_UNITS_DROPDOWN_TOOLTIP :{BLACK}اختيار وحدة العملة
|
||||
|
||||
@@ -941,7 +941,7 @@ STR_GAME_OPTIONS_BASE_SFX :{BLACK}قاعد
|
||||
STR_GAME_OPTIONS_BASE_SFX_TOOLTIP :{BLACK}اختر الاصوات الاساسية للاستخدام
|
||||
STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}معلومات اضافية حول مجوعة الصوت
|
||||
|
||||
STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}مجموعة الموسيقى الاساسية
|
||||
STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}قاعده الموسيقى الاساسيه
|
||||
STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}اختر الموسيقى الاساسية التي تود استخدامها
|
||||
STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ملف غير صالح{P ""}
|
||||
STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}معلومات اضافية عن الموسيقى الاساسية
|
||||
@@ -1032,8 +1032,12 @@ STR_CITY_APPROVAL_HOSTILE :معاد
|
||||
STR_WARNING_NO_SUITABLE_AI :{WHITE}لايوجد ذكاء اصطناعي متاح ...{}تستطيع تجميل العديد من الذكاء الاصطناعي عن طريق اللانترنت
|
||||
|
||||
# Advanced settings window
|
||||
STR_CONFIG_SETTING_CAPTION :{WHITE}الاعدادات المتقدمة
|
||||
STR_CONFIG_SETTING_CAPTION :{WHITE}إعدادات متقدمه
|
||||
STR_CONFIG_SETTING_EXPAND_ALL :مدد الكل
|
||||
STR_CONFIG_SETTING_COLLAPSE_ALL :إسحب الكل
|
||||
|
||||
STR_CONFIG_SETTING_RESTRICT_LABEL :اظهر:
|
||||
STR_CONFIG_SETTING_RESTRICT_BASIC :اﻹعدادات الاساسيه
|
||||
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}احصر القائمة على انواع اعدادات محددة
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :كل الاعدادات
|
||||
@@ -1096,7 +1100,7 @@ STR_CONFIG_SETTING_PLANE_CRASHES :عدد الطا
|
||||
STR_CONFIG_SETTING_PLANE_CRASHES_NONE :بدون
|
||||
STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :منخفض
|
||||
STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :طبيعي
|
||||
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :السماح للعربات العبور خلال المواقف المملوكة داخل المدن {STRING}
|
||||
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :السماح للعربات بالعبور خلال المواقف المملوكة داخل المدن: {STRING}
|
||||
STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :السماح بمرور العربات خلال المحطات المملوكة للمنافسين: {STRING}
|
||||
STR_CONFIG_SETTING_ADJACENT_STATIONS :السماح ببناء محطات متلاصقة{STRING}
|
||||
STR_CONFIG_SETTING_DYNAMIC_ENGINES :السماح بتعدد محركات NewGFR {STRING}
|
||||
@@ -1171,8 +1175,6 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :قصير - 31 -
|
||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ايزو 31-12-2008
|
||||
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :النوافذ القياسية للاضافة غير محددة: {STRING}
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :نوافذ الدوس
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :نوافذ الوندوز
|
||||
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :إيقاف اللعبة تلقائيا عند بدأ لعبة جديدة: {STRING}
|
||||
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :عندمل توقف أسمح: {STRING}
|
||||
@@ -1259,7 +1261,7 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :ممتلئ
|
||||
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :الاخبار الملونة تظهر في: {STRING}
|
||||
STR_CONFIG_SETTING_STARTING_YEAR :سنة البدايه: {STRING}
|
||||
STR_CONFIG_SETTING_SMOOTH_ECONOMY :السماح بأقتصاد ثابت )تغيرات صغيرة اكثر): {STRING}
|
||||
STR_CONFIG_SETTING_ALLOW_SHARES :السماح بشراء حصص من الشركات المنافسة: {STRING}
|
||||
STR_CONFIG_SETTING_ALLOW_SHARES :السماح بشراء حصص من الشركات الاخرى: {STRING}
|
||||
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :اتاحة استخدام الأشارات بالأعلام قبل :{STRING}
|
||||
STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :السماح باستخدام اشارات واجهة المستخدم الرسومية: {STRING}
|
||||
STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :نوع الاشارة الذي يبنى قياسيا: {STRING}
|
||||
@@ -1365,10 +1367,12 @@ STR_INTRO_PLAY_HEIGHTMAP :{BLACK}العب
|
||||
STR_INTRO_SCENARIO_EDITOR :{BLACK}محرر الخريطة
|
||||
STR_INTRO_MULTIPLAYER :{BLACK}لعب جماعي
|
||||
|
||||
STR_INTRO_GAME_OPTIONS :{BLACK}خيارات اللعبة
|
||||
STR_INTRO_GAME_OPTIONS :{BLACK}إعدادات اللعبه
|
||||
STR_INTRO_HIGHSCORE :{BLACK}قائمه المتفوقين
|
||||
STR_INTRO_ADVANCED_SETTINGS :{BLACK}الاعدادات المتقدمة
|
||||
STR_INTRO_NEWGRF_SETTINGS :{BLACK} اعدادات NewGRF
|
||||
STR_INTRO_ONLINE_CONTENT :{BLACK} ابحث عن المحتوى على الانتر نت
|
||||
STR_INTRO_ONLINE_CONTENT :{BLACK} إبحث عن المحتوى عبر الشبكه العنكبوتيه
|
||||
STR_INTRO_SCRIPT_SETTINGS :{BLACK}إعدادات الذكاء الصناعى
|
||||
STR_INTRO_QUIT :{BLACK}خروج
|
||||
|
||||
STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}بدأ لعبة جديدة
|
||||
@@ -1385,7 +1389,7 @@ STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}اختي
|
||||
|
||||
STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}عرض خيارات اللعبة
|
||||
STR_INTRO_TOOLTIP_ADVANCED_SETTINGS :{BLACK}عرض الاعدادات المتقدمة
|
||||
STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK} عرض اعدادات newGRF
|
||||
STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}عرض إعدادات اﻹضافات
|
||||
STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK} ابحث عن محتوى جديد او تحديث
|
||||
STR_INTRO_TOOLTIP_QUIT :{BLACK}اغلاق'OpenTTD'
|
||||
|
||||
@@ -1410,19 +1414,19 @@ STR_OSNAME_OS2 :او اس/2
|
||||
STR_OSNAME_SUNOS :صن
|
||||
|
||||
# Abandon game
|
||||
STR_ABANDON_GAME_CAPTION :{WHITE}ترك اللعبة
|
||||
STR_ABANDON_GAME_QUERY :{YELLOW}هل انت متأكد انك تود ترك هذة اللعبة و اغلاقها؟
|
||||
STR_ABANDON_GAME_CAPTION :{WHITE}إغلاق اللعبه
|
||||
STR_ABANDON_GAME_QUERY :{YELLOW}أمتأكد من رغبتك فى إغلاق اللعبه؟
|
||||
STR_ABANDON_SCENARIO_QUERY :{YELLOW}هل تريد الخروج من انشاء الخريطة
|
||||
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}اسرار
|
||||
STR_CHEATS_TOOLTIP :{BLACK}علامة صح اذا استخدمت هذا السرمن قبل
|
||||
STR_CHEATS_WARNING :{BLACK}تحذير! أنت على وشك أن تخون منافسيك. هذا الخيانة ستبقى عار عليك الى الأبد.
|
||||
STR_CHEATS_WARNING :{BLACK}تحذير! انت على وشك ان تغش منافسيك. إعلم انهم سيتذكرون عليك هذا العار للإبد
|
||||
STR_CHEAT_MONEY :{LTBLUE}زيادة السيولة بـ {CURRENCY_LONG}
|
||||
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}العب كشركة{ORANGE}{COMMA}
|
||||
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}الجرافة السحرية - لازالة المصانع و الاجسام غير القابلة للازالة.{ORANGE}{STRING}
|
||||
STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}يمكن للانفاق ان تتقاطع: {ORANGE}{STRING}
|
||||
STR_CHEAT_NO_JETCRASH :{LTBLUE}الطائرات النفاثة لن تتحطم كثيرا في المطارات الصغيرة {ORANGE} {STRING}
|
||||
STR_CHEAT_NO_JETCRASH :{LTBLUE}الطائرات النفاثه لا تتحطم (كثيراً) فى المطارات الصغيره: {ORANGE}{STRING}
|
||||
STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :مناطق معتدلة
|
||||
STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :مناطق ثلجية
|
||||
STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :مناطق مدارية
|
||||
@@ -1556,7 +1560,7 @@ STR_NETWORK_SERVER_LIST_CLIENTS :{SILVER}عمل
|
||||
STR_NETWORK_SERVER_LIST_LANGUAGE :{SILVER}اللغة:{WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_LIST_LANDSCAPE :{SILVER}مجموعة المربعات:{WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_LIST_MAP_SIZE :{SILVER}حجم الخريطة: {WHITE}{COMMA}x{COMMA}
|
||||
STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}نسخة الخادم:{WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_LIST_SERVER_VERSION :{SILVER}نسخه اللعبه لهذا الخادم: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_LIST_SERVER_ADDRESS :{SILVER}عنوان الخادم:{WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_LIST_START_DATE :{SILVER}تاريخ البداية:{WHITE}{DATE_SHORT}
|
||||
STR_NETWORK_SERVER_LIST_CURRENT_DATE :{SILVER}التاريخ الحالي:{WHITE}{DATE_SHORT}
|
||||
@@ -1570,7 +1574,7 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}أنضم
|
||||
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}حدث الخادم
|
||||
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}حدث معلومات الخادم
|
||||
|
||||
STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}أبحث عن خادم
|
||||
STR_NETWORK_SERVER_LIST_FIND_SERVER :{BLACK}إبحث عن خوادم
|
||||
STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}أبحث في الشبكة عن خادم
|
||||
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}اضف خادم - سيرفر
|
||||
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}اضف خادم (سيرفر) و الذي سوف يفحص اذا كان هناك لعبة قيد التشغيل حاليا
|
||||
@@ -1689,8 +1693,8 @@ STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES}
|
||||
|
||||
STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}فصل
|
||||
|
||||
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}الخادم محمي، أدخل الرقم السر
|
||||
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}الشركة محمية ، أدخل الرقم السري
|
||||
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}الخادم محمى. من فضلك ادخل كلمه المرور
|
||||
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}الشركه محميه. من فضلك ادخل كلمه المرور
|
||||
|
||||
# Network company list added strings
|
||||
STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}قائمة العملاء
|
||||
@@ -1709,7 +1713,7 @@ STR_NETWORK_SERVER :خادم
|
||||
STR_NETWORK_CLIENT :عميل
|
||||
STR_NETWORK_SPECTATORS :المشاهدين
|
||||
|
||||
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}ادخل قدر المال الذي تود اعطائه
|
||||
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}ادخل رقم المبلغ الذى تود إعطائه
|
||||
|
||||
# Network set password
|
||||
STR_COMPANY_PASSWORD_CANCEL :{BLACK}لا تحفظ كلمة المرور المدخلة
|
||||
@@ -1806,7 +1810,7 @@ STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}اقفل
|
||||
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}يتم بدأ الخادم من جديد ... {} الرجاء الأنتظار
|
||||
|
||||
# Content downloading window
|
||||
STR_CONTENT_TITLE :{WHITE}تحميل المحتوى
|
||||
STR_CONTENT_TITLE :{WHITE}تنزيل المحتوى
|
||||
STR_CONTENT_TYPE_CAPTION :{BLACK} نوع
|
||||
STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK} نوع المحتوى
|
||||
STR_CONTENT_NAME_CAPTION :{BLACK} الاسم
|
||||
@@ -1818,7 +1822,7 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK} اخت
|
||||
STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK} ضع علامة على التحديثات للمحتويات الموجودة و التي سيتم تحميلها
|
||||
STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK} مسح الكل
|
||||
STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK} ضع علامة على المحتوى التي لن يتم تحميلها
|
||||
STR_CONTENT_FILTER_TITLE :{BLACK} فلتر:
|
||||
STR_CONTENT_FILTER_TITLE :{BLACK}مُرَشِح:
|
||||
STR_CONTENT_DOWNLOAD_CAPTION :{BLACK} تحميل
|
||||
STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK} ابدأ تحميل المحتويات المختارة
|
||||
STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER} حجم البيانات التي سيتم تحميلها: {WHITE}{BYTES}
|
||||
@@ -2127,7 +2131,7 @@ STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}صغير
|
||||
STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}وسط
|
||||
STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}كبير
|
||||
STR_FOUND_TOWN_SIZE_RANDOM :{BLACK} عشوائي
|
||||
STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}اختر حجم المدينة
|
||||
STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}حدد حجم المدينه
|
||||
STR_FOUND_TOWN_CITY :{BLACK}مدينة
|
||||
STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK} المدن الكبيرة تنمو اسرع من المدن العادية. {} كلما كانت اكبر عند انشائها, بالاعتماد على الاعدادات.
|
||||
|
||||
@@ -2366,7 +2370,7 @@ STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_QUERY_CAPT :{WHITE}غير
|
||||
STR_GENERATION_WORLD :{WHITE}توليد الخريطة
|
||||
STR_GENERATION_ABORT :{BLACK}ألغي
|
||||
STR_GENERATION_ABORT_CAPTION :{WHITE}ايقاف توليد الخريطة
|
||||
STR_GENERATION_ABORT_MESSAGE :{YELLOW}هل انت متأكد بأنك ترغبب في ايقاف توليد الخريطة؟
|
||||
STR_GENERATION_ABORT_MESSAGE :{YELLOW}هل انت متأكد بأنك ترغب في ايقاف توليد الخريطة؟
|
||||
STR_GENERATION_PROGRESS :{WHITE}{NUM}% انتهى
|
||||
STR_GENERATION_PROGRESS_NUM :{BLACK}{NUM} / {NUM}
|
||||
STR_GENERATION_WORLD_GENERATION :{BLACK} مولد الخريطة
|
||||
@@ -2376,15 +2380,15 @@ STR_GENERATION_OBJECT_GENERATION :{BLACK}صانع
|
||||
STR_GENERATION_CLEARING_TILES :{BLACK}مولد المناطق الخشنة والصخرية
|
||||
STR_GENERATION_SETTINGUP_GAME :{BLACK}تجهيز لعبة
|
||||
STR_GENERATION_PREPARING_TILELOOP :{BLACK} تشغيل المتكررة
|
||||
STR_GENERATION_PREPARING_GAME :{BLACK}يتك تجهيز اللعبة
|
||||
STR_GENERATION_PREPARING_GAME :{BLACK}يُجَهِز اللعبه
|
||||
|
||||
# NewGRF settings
|
||||
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}اعدادات NewGRF
|
||||
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}إعدادات اﻹضافات
|
||||
STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}تفاصيل الاضافات الجديدة
|
||||
STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}اضافة جديدة فعالة
|
||||
STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}ملفات غير فعالة لاضافات جديدة
|
||||
STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}اختر مجموعة الخواص المحددة مسبقا:
|
||||
STR_NEWGRF_FILTER_TITLE :{ORANGE}نص المرشح
|
||||
STR_NEWGRF_FILTER_TITLE :{ORANGE}مُرَشِح:
|
||||
STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}فتح مجموعة الاعدادات المسجلة
|
||||
STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}حفظ مجموعة الاعدادات
|
||||
STR_NEWGRF_SETTINGS_PRESET_SAVE_TOOLTIP :{BLACK}حفظ القائمة الحالية كمجموعة اعدادات
|
||||
@@ -2482,7 +2486,7 @@ STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING}تم
|
||||
|
||||
# NewGRF related 'general' warnings
|
||||
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}تحذير!
|
||||
STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}ان على وشك ان تحدث تغييرات في لعبة شغالة؛ قد يتسبب في توقف OpenTTD.{} هل انت متأكد تماما من هذا؟
|
||||
STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}انت على وشك ان تحدث تغييرات في لعبة مفتوحه. قد يتسبب هذا في حدوث إنهيار.{} امتأكد من رغبتك فى هذا؟
|
||||
|
||||
STR_NEWGRF_DUPLICATE_GRFID :{WHITE}لا يمكن اضافة الملف: نسخة سابقة منه مضافة
|
||||
STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}الملف المطابق غير موجود (ملف متوافق من NewGRFحمل)
|
||||
@@ -2516,6 +2520,8 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} لـ<ح
|
||||
STR_NEWGRF_INVALID_ENGINE :<موديل العربة غير صالح>
|
||||
STR_NEWGRF_INVALID_INDUSTRYTYPE :<المصنع غير صالح>
|
||||
|
||||
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
|
||||
|
||||
# NewGRF scanning window
|
||||
STR_NEWGRF_SCAN_CAPTION :{WHITE}بحث اضافات جديدة
|
||||
STR_NEWGRF_SCAN_MESSAGE :{BLACK}تحديث الاضافات. وقت البحث يعتمدعلى عدد الاضافات. من الممكن ان يستغرق وقتا اطول...
|
||||
@@ -2560,10 +2566,10 @@ STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}حدود
|
||||
STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}وسط الشاشة الاساسية على موقع المدينة
|
||||
STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}بلدية المدينة
|
||||
STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}عرض معلومات البلدية
|
||||
STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}تغيير اسم المدينة
|
||||
STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}غير إسم المدينه
|
||||
|
||||
STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}توسيع المدينة
|
||||
STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}زيادة حجم المدينة
|
||||
STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}ازد حجم المدينه
|
||||
STR_TOWN_VIEW_DELETE_BUTTON :{BLACK}حذف
|
||||
STR_TOWN_VIEW_DELETE_TOOLTIP :{BLACK}حذف المدينة كليا
|
||||
|
||||
@@ -3032,9 +3038,9 @@ STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}ارسل
|
||||
STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}ارسل الطائرة الى حظيرة الصيانة - مفتاح التحكم (كنترول) + الضغط يرسلها للصيانة فقط
|
||||
|
||||
STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}هذا سوف يشتري نسخة عن قطار بكل عرباته. مفتاح التحكم + الضغط سوف يشارك الاوامر.
|
||||
STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}هذا سوف يشتري عربة مطابقة للمختارة. مفتاح التحكم كنترول + الضغط سوف يتشارك بالاوامر.
|
||||
STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}هذا سوف يشتري عربة مُطابِقة للمُختاره. مفتاح كنترول+النقر بالفأره سيستنسخ نفس الاوامر الاوامر الى العربه الجديده. مفتاح شفت+النقر بالفأره سيحسب التكلفه المُقدره ويعرضها لك
|
||||
STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}هذا سوف يشتري سفينة مطابقة للمختارة. مفتاح التحكم كنترول + الضغط سوف يتشارك بالاوامر.
|
||||
STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}هذا سوف يشتري طائرة مطابقة للمختارة. مفتاح التحكم كنترول + الضغط سوف يتشارك بالاوامر.
|
||||
STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}هذا سوف يشتري طائرة مطابقة للمختارة. مفتاح كنترول+نقره بالفأره سينسخ نفس اوامر الطائره السابقه الى الطائره الجديده. مفتاح شفت+نقره بالفأره سيحسب التكلفه المُقَدره ويعرضها لك
|
||||
|
||||
STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}اجبر القطار على التحرك بدون انتظار الاشارة الخضراء
|
||||
|
||||
@@ -3331,7 +3337,7 @@ STR_TIMETABLE_TOOLTIP :{BLACK}جدول
|
||||
|
||||
STR_TIMETABLE_NO_TRAVEL :لا رحيل
|
||||
STR_TIMETABLE_NOT_TIMETABLEABLE :المغادرة (ذاتي: بواسطة الامر اليدوي التالي)
|
||||
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :مسافر (ليس هناك جدولة)
|
||||
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED :مسافر (غير مجدوله)
|
||||
STR_TIMETABLE_TRAVEL_NOT_TIMETABLED_SPEED :سافر بمعدل {2:VELOCITY} (بدون جدوله)
|
||||
STR_TIMETABLE_TRAVEL_FOR :مسافر لـ {STRING}
|
||||
STR_TIMETABLE_TRAVEL_FOR_SPEED :سافر لي {STRING} بمعدل {VELOCITY}
|
||||
@@ -3341,24 +3347,24 @@ STR_TIMETABLE_DAYS :{COMMA}يوم
|
||||
STR_TIMETABLE_TICKS :{COMMA} علامة
|
||||
|
||||
STR_TIMETABLE_TOTAL_TIME :{BLACK}جدولة الاوامر هذه ستأخذ {STRING} لنهاية
|
||||
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}جدولة الاوامر هذه ستأخذ على الاقل {STRING} للاكمال (لايشمل كل الجدولة).
|
||||
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}جدولة الاوامر هذه ستأخذ على الاقل {STRING} لتكتمل (لايشمل كل الجدولة)
|
||||
|
||||
STR_TIMETABLE_STATUS_ON_TIME :{BLACK}هذه العربة تعمل حسب الجدولة في الوقت المحدد
|
||||
STR_TIMETABLE_STATUS_LATE :{BLACK}هذه العربة {STRING} متاخرة حاليا عن الجدولة
|
||||
STR_TIMETABLE_STATUS_EARLY :{BLACK}هذه العربة {STRING} متقدمة عن الجدولة
|
||||
STR_TIMETABLE_STATUS_ON_TIME :{BLACK}هذه العربة تعمل حسب الجدولة في الوقت المُحَدَد
|
||||
STR_TIMETABLE_STATUS_LATE :{BLACK}هذه العربه {STRING} مُتاخِرة حاليا عن الجدوله
|
||||
STR_TIMETABLE_STATUS_EARLY :{BLACK}هذه العربه {STRING} مُتَقَدِمه عن الجدوله
|
||||
STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}جدولة الاعمال لم تبدأ بعد
|
||||
STR_TIMETABLE_STATUS_START_AT :{BLACK}جدولة الاعمال سوف تبدأ في {STRING}
|
||||
STR_TIMETABLE_STATUS_START_AT :{BLACK}جدولة الاعمال ستبدأ فى {STRING}
|
||||
|
||||
STR_TIMETABLE_STARTING_DATE :{BLACK}تاريخ البدأ
|
||||
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}اختر تاريخ كنقطة بداية لجدول الاعمال هذا
|
||||
|
||||
STR_TIMETABLE_CHANGE_TIME :{BLACK}غير الوقت
|
||||
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}غير مقدار الزمن الذي يستغرقة الامر
|
||||
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}غير مقدار الزمن الذي يستغرقه هذا الامر
|
||||
|
||||
STR_TIMETABLE_CLEAR_TIME :{BLACK}مسح الوقت
|
||||
STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}مسح مقدار الوقت للامر
|
||||
STR_TIMETABLE_CLEAR_TIME :{BLACK}إمسح الوقت
|
||||
STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}إمسح مقدار الزمن لهذا الامر
|
||||
|
||||
STR_TIMETABLE_CHANGE_SPEED :{BLACK}غير تحديد السرعة
|
||||
STR_TIMETABLE_CHANGE_SPEED :{BLACK}غير حدود السرعه
|
||||
STR_TIMETABLE_CHANGE_SPEED_TOOLTIP :{BLACK}غير السرعة القصوى للامر المختار
|
||||
|
||||
STR_TIMETABLE_CLEAR_SPEED :{BLACK}ازل تحديد السرعة
|
||||
@@ -3407,10 +3413,10 @@ STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}عرض
|
||||
|
||||
STR_ERROR_AI_NO_AI_FOUND :لا يوجد اضافات مناسبة للتحميل {} هذه اضافة غبية ولن تفعل شيئا لك {} تستطيع تحميل اضافات من الشبكة عن طريق نظام التحميل
|
||||
STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}واحد من الذكاء الصناعي فشل. الرجاء ابلاغ المبرمج عنه مصحوبا بصورة من شاشة مصحح الاخطاء.
|
||||
STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW} شاشة اخطاء الذكاء الصناعي متوفرة فقط في الخادم
|
||||
STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW} شاشة اخطاء الذكاء الصناعي متوفرة فقط للخادم
|
||||
|
||||
# AI configuration window
|
||||
STR_AI_CONFIG_CAPTION :{WHITE}اعداد الذكاء الصناعي
|
||||
STR_AI_CONFIG_CAPTION :{WHITE}إعدادات الذكاء الصناعي
|
||||
STR_AI_CONFIG_HUMAN_PLAYER :لاعب انساني
|
||||
STR_AI_CONFIG_RANDOM_AI :ذكاء صناعي عشوائي
|
||||
|
||||
@@ -3477,7 +3483,7 @@ STR_ERROR_GAME_SAVE_FAILED :{WHITE}فشل
|
||||
STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}لا يمكن حذف الملف
|
||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}فشل فتح اللعبة {}{STRING}
|
||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :خطأ داخلي: {STRING}
|
||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :لعبة محفوطة غير صالحة{STRING}
|
||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :لعبه محفوظه غير صالحه - {STRING}
|
||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :اللعبة حفظت بنسخة أحدث
|
||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :لا يمكن قراءة الملف
|
||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :لايمكن قراءة الملف
|
||||
@@ -3534,7 +3540,7 @@ STR_ERROR_GENERIC_OBJECT_IN_THE_WAY :{WHITE}{1:STRIN
|
||||
STR_ERROR_NOT_ALLOWED_WHILE_PAUSED :{WHITE}غير مسموح في حين توقفت
|
||||
|
||||
# Local authority errors
|
||||
STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN}بلدية المدينة ترفض السماح بهذا
|
||||
STR_ERROR_LOCAL_AUTHORITY_REFUSES_TO_ALLOW_THIS :{WHITE}{TOWN} السلطات المحليه ترفض المساح بهذا
|
||||
STR_ERROR_LOCAL_AUTHORITY_REFUSES_AIRPORT :{WHITE}{TOWN}البلدية ترفض بناء مطار آخر في هذه المدينة
|
||||
STR_ERROR_LOCAL_AUTHORITY_REFUSES_NOISE :{WHITE}بلدية {TOWN}{} ترفض السماح بمطار هنا بسبب تتعلق بالضوضاء العالية منه .
|
||||
STR_ERROR_BRIBE_FAILED :{WHITE}محاولتك لرشوة السلطات اكتشفت بواسطة مراقب محلي
|
||||
@@ -3566,7 +3572,7 @@ STR_ERROR_PROTECTED :{WHITE}هذه
|
||||
|
||||
# Town related errors
|
||||
STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}لا يمكن انشاء اي مدينة
|
||||
STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}لايمكن اعادة تسمية المدينة ...
|
||||
STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}تعذر إعاده تسميه المدينه...
|
||||
STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}لا يمكن انشاء مدينة هنا
|
||||
STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}لا يمكن توسيع المدينة ...
|
||||
STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... قريبة جدا من حافة الخريطة
|
||||
@@ -3581,7 +3587,7 @@ STR_ERROR_STATUE_NO_SUITABLE_PLACE :{WHITE}... لا
|
||||
# Industry related errors
|
||||
STR_ERROR_TOO_MANY_INDUSTRIES :{WHITE}... المصانع كثيرة جدا
|
||||
STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}لا يمكن انشاء مصانع ...
|
||||
STR_ERROR_CAN_T_BUILD_HERE :{WHITE}لايمكن انشاء {STRING} هنا...
|
||||
STR_ERROR_CAN_T_BUILD_HERE :{WHITE}تعذر بناء {STRING} هنا...
|
||||
STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}لا بمكن بناء المصنع هنا ...
|
||||
STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}قريب جدا من مصنع آخر
|
||||
STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... يجب بناء مدينة اولا
|
||||
@@ -3598,136 +3604,136 @@ STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}يمكن
|
||||
|
||||
# Station construction related errors
|
||||
STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}لا يمكن بناء محطة سكة حديد هنا ...
|
||||
STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}لا يمكن بناء محطة باصات هنا ...
|
||||
STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}لا يمكن بناء محطة تحميل عربات هنا ...
|
||||
STR_ERROR_CAN_T_BUILD_BUS_STATION :{WHITE}تعذر بناء محطه الحافلات...
|
||||
STR_ERROR_CAN_T_BUILD_TRUCK_STATION :{WHITE}تعذر بناء محطات الشاحنات...
|
||||
STR_ERROR_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}لا يمكن بناء محطة ركاب هنا ...
|
||||
STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}لا يمكن بناء محطة ترام هنا ...
|
||||
STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}لا يمكن بناء مرفء هنا ...
|
||||
STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}لا يمكن بناء مطار هنا ...
|
||||
STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}تعذر بناء المطار هنا...
|
||||
|
||||
STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}جاور اكثر من محطة موجودة مسبقا
|
||||
STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... المحطة واسعة جدا
|
||||
STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}الكثير من المحطات واماكن التحميل
|
||||
STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}قطاعات المحطة كثيرة جدا
|
||||
STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}محطات توقف الباصات كثيرة جدا
|
||||
STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}محطات تحميل العربات كثيرة جدا
|
||||
STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}قريب جدا من محطة موجودة
|
||||
STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}قريب جدا من مرفء آخر
|
||||
STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}قريب جدا من مطار آخر
|
||||
STR_ERROR_CAN_T_RENAME_STATION :{WHITE}لا يمكن اعادة التسمية
|
||||
STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}هذا طريق مملوك للمدينه
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... اتجاة الطريق خاطئ
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... القيادة عبر اشارات التوقف لا يمكن ان تحتوي على اركان
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... القيادة عبر اشارات التوقف لا يمكن ان تحتوي على تقاطعات
|
||||
STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}جاور اكثر من محطه موجوده مسبقاً
|
||||
STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... المحطه ممتده للخارج للغايه
|
||||
STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}يوجد الكثير من المحطات
|
||||
STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}يوجد الكثير من قطاعات محطه السكه الحديديه
|
||||
STR_ERROR_TOO_MANY_BUS_STOPS :{WHITE}يوجد الكثير من محطات الحافلات
|
||||
STR_ERROR_TOO_MANY_TRUCK_STOPS :{WHITE}يوجد الكثير من محطات الشاحنات
|
||||
STR_ERROR_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}قريب للغايه من محطه اخرى
|
||||
STR_ERROR_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}قريب للغايه من مَرسَى اخر
|
||||
STR_ERROR_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}قريب للغايه من مطار اخر
|
||||
STR_ERROR_CAN_T_RENAME_STATION :{WHITE}تعذر إعاده تسميه المحطه...
|
||||
STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... هذا الطريق ملك المدينه
|
||||
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... اتجاه الطريق خاطئ
|
||||
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... القيادة عبر إشارات التوقف لا يمكن ان تحتوي على زوايا
|
||||
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... القيادة عبر إشارات التوقف لا يمكن ان تحتوي على تقاطعات
|
||||
|
||||
# Station destruction related errors
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}لا يمكن حذف جزء من المحطة ...
|
||||
STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}يجب ازالة محطة القطار اولا
|
||||
STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}لا يمكن حذف محطة الركاب ...
|
||||
STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}لا يمكن ازالة محطة البضائع من هنا ...
|
||||
STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}لا يمكن ازالة محطة الترام للركاب
|
||||
STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}لا يمكن ازالة محطة الترام للشحن
|
||||
STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}يجب حذف محطة التوقف اولا
|
||||
STR_ERROR_THERE_IS_NO_STATION :{WHITE}... لا توجد محطة هنا
|
||||
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}تعذر حذف هذا الجزء من المحطه...
|
||||
STR_ERROR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}يجب ازالة محطة القطار اولاً
|
||||
STR_ERROR_CAN_T_REMOVE_BUS_STATION :{WHITE}تعذر إزاله محطه الحافلات...
|
||||
STR_ERROR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}تعذر إزاله محطه الشاحنات...
|
||||
STR_ERROR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}تعذر إزاله محطه ركاب الترام...
|
||||
STR_ERROR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}تعذر إزاله محطه شحن الترام...
|
||||
STR_ERROR_MUST_REMOVE_ROAD_STOP_FIRST :{WHITE}يجب إزاله محطة التوقف اولاً
|
||||
STR_ERROR_THERE_IS_NO_STATION :{WHITE}... لايوجد اى محطه هنا
|
||||
|
||||
STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}يجب ازالة محطة القطار اولا
|
||||
STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}يجب هدم محطة الباصات اولا
|
||||
STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}يجب هدم محطة التحميل اولا
|
||||
STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}يجب هدم محطة ركاب الترام
|
||||
STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}يجب هدم محطة شحن الترام اولا
|
||||
STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}يجب هدم المرفء اولا
|
||||
STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}يجب هدم المطار اولا
|
||||
STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}يجب ازالة محطة القطار اولاً
|
||||
STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}يجب إزاله محطه الحافلات اولاً
|
||||
STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}يجب إزاله محطه الشاحنات اولاً
|
||||
STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}يجب إزاله محطه ركاب الترام اولاً
|
||||
STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}يجب إزاله محطه شحن الترام اولاً
|
||||
STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}يجب إزاله المَرسَى اولاً
|
||||
STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}يجب إزاله المطار اولاً
|
||||
|
||||
# Waypoint related errors
|
||||
STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}اربط اكثر من نقاط العبور المتواجدة
|
||||
STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}قريبة جدا من نقطة عبور اخرى
|
||||
STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}جاور اكثر من نقطه عبور متواجده
|
||||
STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}قريب للغايه من نقطه عبور اخرى
|
||||
|
||||
STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}لا يمكن بناء نقطة عبور هنا ...
|
||||
STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}لا يمكن وضع عوامة هنا
|
||||
STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}لا يمكن تعديل نقطة العبور
|
||||
STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}تعذر بناء نقطه العبور هنا...
|
||||
STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}تعذر وضع العوامه هنا...
|
||||
STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}تعذر إعاده تسميه نقطه العبور
|
||||
|
||||
STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}لا يمكن ازالة نقطة العبور من هنا ...
|
||||
STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}يجب ازالة سكة الحديد اولا
|
||||
STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... عوامة في المسار
|
||||
STR_ERROR_BUOY_IS_IN_USE :{WHITE}... العوامة مستخدمة بواسطة شركة اخرى!
|
||||
STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}لا يمكن ازالة نقطة عبور القطار من هنا...
|
||||
STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}يجب إزالة السكه الحديديه اولاً
|
||||
STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... توجد عوامه فى المسار
|
||||
STR_ERROR_BUOY_IS_IN_USE :{WHITE}... العوامه مُستخدمه من قِبَل شركه اخرى!
|
||||
|
||||
# Depot related errors
|
||||
STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}لا يمكن بناء ورشة صيانة هنا...
|
||||
STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}لا يمكن بناء الورشة هنا ...
|
||||
STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}لا يمكن بناء ورشة ترام هنا ...
|
||||
STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}لا يمكن بناء حوض صيانة هنا ...
|
||||
STR_ERROR_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}تعذر بناء مستودع القطارات هنا...
|
||||
STR_ERROR_CAN_T_BUILD_ROAD_DEPOT :{WHITE}تعذر بناء مستودع العربات البريه هذا هنا...
|
||||
STR_ERROR_CAN_T_BUILD_TRAM_DEPOT :{WHITE}تعذر بناء مستوع الترام هنا...
|
||||
STR_ERROR_CAN_T_BUILD_SHIP_DEPOT :{WHITE}تعذر بناء مستودع السفن هنا..
|
||||
|
||||
STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}لا يمكن تسمية الورشة
|
||||
STR_ERROR_CAN_T_RENAME_DEPOT :{WHITE}تعذر إعاده تسميه المستودع...
|
||||
|
||||
STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}يجب ان يتوقف القطار بالكامل داخل مستودع الصيانة
|
||||
STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... يجب ان يوقف داخل ورشة الصيانة.
|
||||
STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}يجب ان تكون السفينة متوقفة في حوض الصيانة
|
||||
STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}يجب ان تكون الطائرة متوقفة في الحظيرة
|
||||
STR_ERROR_TRAIN_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... يجب ان يكون متوقفاً بالكامل داخل المستودع
|
||||
STR_ERROR_ROAD_VEHICLE_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... يجب ان تكون متوقفه بالكامل داخل المستودع
|
||||
STR_ERROR_SHIP_MUST_BE_STOPPED_INSIDE_DEPOT :{WHITE}... يجب ان تكون متوقفه بالكامل داخل المستودع
|
||||
STR_ERROR_AIRCRAFT_MUST_BE_STOPPED_INSIDE_HANGAR :{WHITE}... يجب ان تكون متوقفه بالكامل في الحظيره
|
||||
|
||||
STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}يمكن تعديل القطارعندما يكون متوقف في ورشة الصيانة
|
||||
STR_ERROR_TRAIN_TOO_LONG :{WHITE}القطار طويل جدا
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}لا يمكن تغيير اتجاة العربة ...
|
||||
STR_ERROR_TRAINS_CAN_ONLY_BE_ALTERED_INSIDE_A_DEPOT :{WHITE}يمكن تعديل القطارات فقط عند وجودها داخل المستودع
|
||||
STR_ERROR_TRAIN_TOO_LONG :{WHITE}القطار طويل للغايه
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE :{WHITE}تعذر تغيير إتجاه العربه...
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_RAIL_VEHICLE_MULTIPLE_UNITS :{WHITE}تتكون من اكثر من وحدة ...
|
||||
STR_ERROR_INCOMPATIBLE_RAIL_TYPES :نوع سكة حديد متعارض
|
||||
STR_ERROR_INCOMPATIBLE_RAIL_TYPES :نوع السكه الحديديه غير متوافق
|
||||
|
||||
STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}لا يمكن تحريك العربة ...
|
||||
STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}المحرك الخلفي دائما سيتبع الامامي
|
||||
STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}لا يمكن ايجاد طريق للورشة
|
||||
STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}لم يتم العثور على ورشة قريبة من العربة
|
||||
STR_ERROR_CAN_T_MOVE_VEHICLE :{WHITE}تعذر تحريك العربه...
|
||||
STR_ERROR_REAR_ENGINE_FOLLOW_FRONT :{WHITE}المُحرك الخلفى سيتبع نظيره الامامى دائماً
|
||||
STR_ERROR_UNABLE_TO_FIND_ROUTE_TO :{WHITE}تعذر إيجاد الطريق المؤدى للمستودع
|
||||
STR_ERROR_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}تعذر إيجاد مستوع محلى
|
||||
|
||||
STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :ورشةمن نوع خاطئ
|
||||
STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :مستودع خطأ
|
||||
|
||||
# Autoreplace related errors
|
||||
STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} طويل جدا بعد الاستبدال
|
||||
STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} طويل للغايه بعد اﻹستبدال
|
||||
STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}لا يوجد نظام مطبق للتبديل/ التجديد
|
||||
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :- حدود التكلفة للتبديل -
|
||||
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(حدود التكلفة للتبديل)
|
||||
|
||||
# Rail construction errors
|
||||
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}تركيبة سكك غير صالحة
|
||||
STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}يجب حذف الاشارة اولا
|
||||
STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}يجب إزاله اﻹشاره اولاً
|
||||
STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}... مسار السكة الحديدية غير مناسب
|
||||
STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}يجب ازالة السكة اولا
|
||||
STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}طريق بإتجاه واحد أو مغلق
|
||||
STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}يجب إزاله السكه الحديديه اولاً
|
||||
STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}الطريق باتجاه واحد او ربما يكون مسدوداً
|
||||
STR_ERROR_CROSSING_DISALLOWED :{WHITE}التقاطع المتعدد غير متاح لهذا النوع من السكك
|
||||
STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}لا يمكن بناء اشارة توقف هنا ...
|
||||
STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}لا يمكن بناء سكة قطار هنا ...
|
||||
STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}لا يمكن ازالة سكة القطار من هنا ...
|
||||
STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}لا يمكن ازالة الإشارة من هتا ...
|
||||
STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}تعذر بناء اﻹشارات هنا...
|
||||
STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}تعذر بناء السكه الحديديه هنا...
|
||||
STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}تعذر إزاله السكه الحديديه من هنا...
|
||||
STR_ERROR_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}تعذر إزاله اﻹشاره من هنا...
|
||||
STR_ERROR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}لا يمكن تحويل الاشارة هنا ...
|
||||
STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... لا يوجد سكة قطار هنا
|
||||
STR_ERROR_THERE_IS_NO_RAILROAD_TRACK :{WHITE}... لا يوجد سكه حديديه
|
||||
STR_ERROR_THERE_ARE_NO_SIGNALS :{WHITE}... لا توجد اشارات هنا
|
||||
|
||||
STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}لا يمكن تحويل سكة القطار هنا ...
|
||||
|
||||
# Road construction errors
|
||||
STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}يجب ازالة الطريق اولا
|
||||
STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... الطريق موحد الأتجاة لا يمكن ان يحتوي على تقاطع
|
||||
STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}لايمكن وضع طريق هنا ...
|
||||
STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}لا يمكن بناء سكة ترام هنا ...
|
||||
STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}لايمكن ازالة الطريق من هنا ...
|
||||
STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}لا يمكن ازالة سكة الترام من هنا ...
|
||||
STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... لا يوجد طريق هنا
|
||||
STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... لا يوجد خط ترام هنا
|
||||
STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}يجب إزاله الطريق اولاً
|
||||
STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... الطريق موحد اﻹتجاه لا يمكن ان يحتوى على تقطاعات
|
||||
STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}تعذر بناء الطريق هنا...
|
||||
STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}تعذر بناء سكه الترام هنا...
|
||||
STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}تعذر إزاله الطريق من هنا...
|
||||
STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}تعذر إزاله سكه الترام من هنا...
|
||||
STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... لا يوجد طريق
|
||||
STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... لا يوجد سكه ترام هنا
|
||||
|
||||
# Waterway construction errors
|
||||
STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}لا يمكن بناء قناة مياة هنا ...
|
||||
STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}لا يمكن بناء حاجز هنا
|
||||
STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}لا يمكن وضع نهر هنا ...
|
||||
STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}يجب ان يبنى في الماء
|
||||
STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}تعذر بناء القناه هنا...
|
||||
STR_ERROR_CAN_T_BUILD_LOCKS :{WHITE}تعذر بناء الحاجز هنا...
|
||||
STR_ERROR_CAN_T_PLACE_RIVERS :{WHITE}تعذر وضع النهر هنا...
|
||||
STR_ERROR_MUST_BE_BUILT_ON_WATER :{WHITE}... يجب بناءه على الماء
|
||||
STR_ERROR_CAN_T_BUILD_ON_WATER :{WHITE}... لا يمكن بنائة على الماء
|
||||
STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}لا يمكن بناءة في البحر المفتوح
|
||||
STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}لا يمكن بناءة على القناة
|
||||
STR_ERROR_CAN_T_BUILD_ON_SEA :{WHITE}... لا يمكن بناءه فى البحر المفتوح
|
||||
STR_ERROR_CAN_T_BUILD_ON_CANAL :{WHITE}... لا يمكن بناءه على القناه
|
||||
STR_ERROR_CAN_T_BUILD_ON_RIVER :{WHITE}لا يمكن بنائة على النهر
|
||||
STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}يجب هدم القتاة اولا
|
||||
STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}لا يمكن بناء قناة مياة هنا ...
|
||||
STR_ERROR_MUST_DEMOLISH_CANAL_FIRST :{WHITE}يجب إزاله القناه اولاً
|
||||
STR_ERROR_CAN_T_BUILD_AQUEDUCT_HERE :{WHITE}لا يمكن بناء قناه مياه هنا...
|
||||
|
||||
# Tree related errors
|
||||
STR_ERROR_TREE_ALREADY_HERE :{WHITE}... الاشجار موجودة هنا مسبقا
|
||||
STR_ERROR_TREE_ALREADY_HERE :{WHITE}... الشجره موجوده هنا مسبقاً
|
||||
STR_ERROR_TREE_WRONG_TERRAIN_FOR_TREE_TYPE :{WHITE}... البيئة غير مناسبة لنوع الشجر
|
||||
STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}... لا يمكن زراعة اشجار هنا
|
||||
|
||||
# Bridge related errors
|
||||
STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}لا يمكن بناء جسر هنا ...
|
||||
STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}تعذر بناء الجسر هنا...
|
||||
STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}يجب هدم الجسر اولا
|
||||
STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}لا يمكن ان يبدء وينتهي في نفس المكان
|
||||
STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}نهايات الجسر ليست على استقامة واحدة
|
||||
@@ -3738,7 +3744,7 @@ STR_ERROR_BRIDGE_TOO_LONG :{WHITE}... ال
|
||||
STR_ERROR_BRIDGE_THROUGH_MAP_BORDER :{WHITE}قد ينتهي الجسر خارج الخريطة
|
||||
|
||||
# Tunnel related errors
|
||||
STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}لا يمكن بناء نفق هنا ...
|
||||
STR_ERROR_CAN_T_BUILD_TUNNEL_HERE :{WHITE}تعذر بناء النفق هنا...
|
||||
STR_ERROR_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}الموقع غير صالح لمدخل النفق
|
||||
STR_ERROR_MUST_DEMOLISH_TUNNEL_FIRST :{WHITE}يجب هدم النفق اولا
|
||||
STR_ERROR_ANOTHER_TUNNEL_IN_THE_WAY :{WHITE}نفق آخر في مسار هذا النفق
|
||||
@@ -3813,6 +3819,9 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}لا ي
|
||||
|
||||
STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... العربة تحطمت
|
||||
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}لن تتوافر اى وسائل نقل على اﻹطلاق
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_YET :لا تتوافر اى آليه نقل بعد
|
||||
|
||||
# Specific vehicle errors
|
||||
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}لا يمكن السماح للقطار بالعبور من الاشارة في وضع الخطر
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}لا يمكن عكس اتجاة القطار...
|
||||
@@ -4312,6 +4321,7 @@ STR_JUST_DATE_ISO :{DATE_ISO}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_JUST_STRING_STRING :{STRING}{STRING}
|
||||
STR_JUST_RAW_STRING :{STRING}
|
||||
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
|
||||
|
||||
# Slightly 'raw' stringcodes with colour or size
|
||||
STR_BLACK_COMMA :{BLACK}{COMMA}
|
||||
|
@@ -1316,8 +1316,6 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31
|
||||
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Paletarik zehazten ez duten NewGRF berrientzat aurretik zehaztutako paleta erabiltzea: {STRING}
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Beharrezko paleta zehazten ez duten NewGRFetan paleta lehenetsia erabili
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS paleta
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows paleta
|
||||
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatikoki jokoa pausan jarri joko berri bat hastearakoan: {STRING}
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Gaitua dagoenean, joko berria hasterakoan automatikoki pausatua egongo da, aldez aurretik mapa aztertzeko
|
||||
@@ -2756,6 +2754,8 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of <bal
|
||||
STR_NEWGRF_INVALID_ENGINE :<garraio modelo baliogabea>
|
||||
STR_NEWGRF_INVALID_INDUSTRYTYPE :<industria baliogabea>
|
||||
|
||||
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
|
||||
|
||||
# NewGRF scanning window
|
||||
STR_NEWGRF_SCAN_CAPTION :{WHITE} NewGRF berriak bilatzen.
|
||||
STR_NEWGRF_SCAN_MESSAGE :{BLACK} NewGRFak bilatzen. Zenbatekoaren arabera tartetxo baterako luza litzateke...
|
||||
@@ -4304,7 +4304,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel)
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Lurrina)
|
||||
@@ -4513,7 +4513,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Bi
|
||||
STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Bidaiari Ferry-a
|
||||
STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Zamaontzia
|
||||
STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Zamaontzia
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Zamaontzia
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Zamaontzia
|
||||
STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Zamaontzia
|
||||
STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52
|
||||
STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count
|
||||
|
@@ -1636,8 +1636,6 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-01-31
|
||||
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Калі ў NewGRF ня вызначана палітра, выкарыстоўваць: {STRING}
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Палітра ґрафічных набораў (NewGRF), якая ўжываецца па змоўчаньні, калі ня вызначана ў самім наборы.
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :палітру DOS
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :палітру Windows
|
||||
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Аўтаматычнае ўключэньне паўзы напачатку гульні: {STRING}
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Калі ўключана, распачатая гульня будзе аўтаматычна стаяць на паўзе, дазваляючы блізкае вывучэньне мапы.
|
||||
@@ -3137,6 +3135,8 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} <нев
|
||||
STR_NEWGRF_INVALID_ENGINE :<няправільная мадэль>
|
||||
STR_NEWGRF_INVALID_INDUSTRYTYPE :<невядомае прадпрыемства>
|
||||
|
||||
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
|
||||
|
||||
# NewGRF scanning window
|
||||
STR_NEWGRF_SCAN_CAPTION :{WHITE}Сканаваньне NewGRF
|
||||
STR_NEWGRF_SCAN_MESSAGE :{BLACK}Ідзе сканаваньне NewGRF. Гэта зойме некаторы час...
|
||||
@@ -4837,7 +4837,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Танк-пар
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :Цеплавоз MJS 250
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Паравоз Ploddyphut «Чу-Чу»
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Паравоз Powernaut «Чу-Чу»
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Паравоз Mightymover «Чу-Чу»
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Паравоз MightyMover «Чу-Чу»
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Цеплавоз Ploddyphut
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Цеплавоз Powernaut
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Паравоз Wills 2-8-0
|
||||
@@ -5046,7 +5046,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Пасажыр.
|
||||
STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Пасажыр. судна Shivershake
|
||||
STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Сухагруз Yate
|
||||
STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Сухагруз Bakewell
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Сухагруз Mightymover
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Сухагруз MightyMover
|
||||
STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Сухагруз Powernaut
|
||||
STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52
|
||||
STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count
|
||||
|
@@ -38,7 +38,7 @@ STR_CARGO_PLURAL_GRAIN :{G=m}Cereais
|
||||
STR_CARGO_PLURAL_WOOD :{G=f}Madeira
|
||||
STR_CARGO_PLURAL_IRON_ORE :{G=m}Minério de Ferro
|
||||
STR_CARGO_PLURAL_STEEL :{G=m}Aço
|
||||
STR_CARGO_PLURAL_VALUABLES :{G=f}Preciosidades
|
||||
STR_CARGO_PLURAL_VALUABLES :{G=f}Objetos de Valor
|
||||
STR_CARGO_PLURAL_COPPER_ORE :{G=m}Minério de Cobre
|
||||
STR_CARGO_PLURAL_MAIZE :{G=m}Milho
|
||||
STR_CARGO_PLURAL_FRUIT :{G=f}Fruta
|
||||
@@ -1064,7 +1064,7 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Configs. com va
|
||||
STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Configs. com um valor diferente das configs. para novos jogos
|
||||
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Restringe a lista abaixo a determinados tipos
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Todas as configs.
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Todos os tipos de configs.
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Config. do cliente (não é guardado no savegame; afeta todos os jogos)
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Config. do jogo (guardado no savegame; afeta apenas novos jogos)
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Config. do jogo (guardado no savegame; afeta apenas o jogo atual)
|
||||
@@ -1324,8 +1324,8 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31
|
||||
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Paleta padrão a ser usada para NewGRF's sem paletas específicas: {STRING}
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Paleta padrão a ser usada por NewGRFs que não a especificarem
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Paleta do DOS
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Paleta do Windows
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Paleta Padrão (D)
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Paleta Original (W)
|
||||
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Pausar automaticamente ao inicar um novo jogo: {STRING}
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Ativado, pausa o jogo ao iniciar um jogo novo, permitindo um estudo do mapa antes do jogo
|
||||
@@ -1449,7 +1449,7 @@ STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Exibe mensagens
|
||||
STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Novos veículos: {STRING}
|
||||
STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Exibe um jornal quando um novo tipo de veículo se torna disponível
|
||||
STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Mudanças à aceitação de carga: {STRING}
|
||||
STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Exibe mensagens sobre estações alterando aceitação de cargas
|
||||
STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Exibe mensagens sobre estações alterando aceitação de algumas cargas
|
||||
STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsídios: {STRING}
|
||||
STR_CONFIG_SETTING_NEWS_SUBSIDIES_HELPTEXT :Exibe um jornal sobre eventos relacionados a subsídios
|
||||
STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Informações gerais: {STRING}
|
||||
@@ -2805,6 +2805,8 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} de <car
|
||||
STR_NEWGRF_INVALID_ENGINE :<modelo de veíc. inválido>
|
||||
STR_NEWGRF_INVALID_INDUSTRYTYPE :<indústria inválida>
|
||||
|
||||
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
|
||||
|
||||
# NewGRF scanning window
|
||||
STR_NEWGRF_SCAN_CAPTION :{WHITE}Escaneando NewGRFs
|
||||
STR_NEWGRF_SCAN_MESSAGE :{BLACK}Escaneando NewGRFs. Dependendo da quantidade, isso pode levar um tempo...
|
||||
@@ -4191,6 +4193,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Impossí
|
||||
|
||||
STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... veículo está destruído
|
||||
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Não haverá nenhum veículo disponível
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Altere sua configuração de NewGRF
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Não há veículos disponíveis ainda
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :[WHITE]Inicie um jogo após {DATE_SHORT} ou use um NewGRF que tenha veículos anteriores
|
||||
|
||||
# Specific vehicle errors
|
||||
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Impossível fazer o trem passar o sinal de perigo...
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Impossível inverter a direção do trem...
|
||||
@@ -4234,6 +4241,14 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Impossí
|
||||
STR_DESKTOP_SHORTCUT_COMMENT :Um jogo de simulação baseado no Transport Tycoon Deluxe
|
||||
|
||||
# Translatable descriptions in media/baseset/*.ob* files
|
||||
STR_BASEGRAPHICS_DOS_DESCRIPTION :Gráficos Originais do Transport Tycoon Deluxe, Edição DOS.
|
||||
STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Gráficos Originais do Transport Tycoon Deluxe, Edição DOS alemã.
|
||||
STR_BASEGRAPHICS_WIN_DESCRIPTION :Gráficos Originais do Transport Tycoon, Edição Windows.
|
||||
STR_BASESOUNDS_DOS_DESCRIPTION :Sons Originais do Transport Tycoon Deluxe, Edição DOS.
|
||||
STR_BASESOUNDS_WIN_DESCRIPTION :Sons Originais do Transport Tycoon Deluxe, Edição Windows.
|
||||
STR_BASESOUNDS_NONE_DESCRIPTION :Um pacote de sons sem sons.
|
||||
STR_BASEMUSIC_WIN_DESCRIPTION :Música Original do Transport Tycoon Deluxe, Edição Windows
|
||||
STR_BASEMUSIC_NONE_DESCRIPTION :Um pacote de músicas sem músicas.
|
||||
|
||||
##id 0x2000
|
||||
# Town building names
|
||||
@@ -4357,7 +4372,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel)
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Vapor)
|
||||
@@ -4566,7 +4581,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Navio de Passag
|
||||
STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Navio de Passageiros Shivershake
|
||||
STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Cargueiro Yate
|
||||
STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Cargueiro Bakewell
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Cargueiro Mightymover
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Cargueiro MightyMover
|
||||
STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Cargueiro Powernaut
|
||||
STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52
|
||||
STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count
|
||||
@@ -4683,6 +4698,7 @@ STR_JUST_DATE_ISO :{DATE_ISO}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_JUST_STRING_STRING :{STRING}{STRING}
|
||||
STR_JUST_RAW_STRING :{STRING}
|
||||
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
|
||||
|
||||
# Slightly 'raw' stringcodes with colour or size
|
||||
STR_BLACK_COMMA :{BLACK}{COMMA}
|
||||
|
@@ -1333,8 +1333,6 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31
|
||||
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Палитра по подразбиране за NewGRF, които не са задали палитра: {STRING}
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Палитра по подразбиране за NewGRF, за които е зададена от коя се нуждаят
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS палитра
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows палитра
|
||||
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Игрите започват в пауза: {STRING}
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Ако тази опция бъде активирана, играта автоматично ще бъде паузирана, когато започнете нова игра, това ще ви позволи да изучите по-подробно картата
|
||||
@@ -2811,6 +2809,8 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} на <
|
||||
STR_NEWGRF_INVALID_ENGINE :<невалидна машина>
|
||||
STR_NEWGRF_INVALID_INDUSTRYTYPE :<невалдна индустрия>
|
||||
|
||||
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
|
||||
|
||||
# NewGRF scanning window
|
||||
STR_NEWGRF_SCAN_CAPTION :{WHITE}Търси NewGRF-и
|
||||
STR_NEWGRF_SCAN_MESSAGE :{BLACK}Търси NewGRF-и. Може да отнеме време, в зависимост от количеството...
|
||||
|
@@ -453,7 +453,7 @@ STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Captura de pant
|
||||
STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Captura de pantalla amb el zoom predeterminat
|
||||
STR_ABOUT_MENU_GIANT_SCREENSHOT :Captura de pantalla de tot el mapa
|
||||
STR_ABOUT_MENU_ABOUT_OPENTTD :Quant a 'OpenTTD'
|
||||
STR_ABOUT_MENU_SPRITE_ALIGNER :Alineador d'sprite
|
||||
STR_ABOUT_MENU_SPRITE_ALIGNER :Alineador d'sprites
|
||||
STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Commuta les caixes delimitadores
|
||||
STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Commuta el colorejat dels blocs bruts
|
||||
############ range ends here
|
||||
@@ -633,7 +633,7 @@ STR_ERROR_NO_SONGS :{WHITE}S'ha sel
|
||||
# Playlist window
|
||||
STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Selecció del Programa de Música
|
||||
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
|
||||
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Index de Pista
|
||||
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Índex de Pistes
|
||||
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programa - '{STRING}'
|
||||
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Esborra
|
||||
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Esborra el programa actual (només Opcional 1 o Opcional 2)
|
||||
@@ -1324,8 +1324,8 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31
|
||||
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Paleta predeterminada pels NewGRFs que no n'especifiquin una: {STRING}
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Paleta predeterminada a utilitzar als NewGRFs que no especifiquen quina necessiten
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Paleta DOS
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Paleta Windows
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Paleta predeterminada (D)
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Paleta preexistent (W)
|
||||
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Posa en pausa automàticament en començar un nou joc: {STRING}
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Quan està activat, el joc es pausarà automàticament quan es comenci un joc nou, permetent a l'usuari estudiar el mapa més detalladament
|
||||
@@ -1472,7 +1472,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :En arrossegar,
|
||||
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Estableix la distància en les quals els senyals seran construïts a la via fins al següent obstacle (senyal, desviament), si els senyals són arrossegats
|
||||
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} cel·la{P 0 "" s}
|
||||
STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Quan arrosseguis, mantingues fixada la distància entre senyals: {STRING}
|
||||
STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Selecciona el comportament de la situació de senyals quan Ctrl+arrossega senyals. Si es desactiva els senyals són situats al voltant dels túnels o ponts per evitar grans troços sense senyals. Si s'activa, els senyals són situats cada n cel·les, fent l'aliniament de senyals en vies paral·leles més fàcil
|
||||
STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Selecciona el comportament de la situació de senyals quan Ctrl+arrossega senyals. Si es desactiva, els senyals són situats al voltant dels túnels o ponts per evitar grans trossos sense senyals. Si s'activa, els senyals són situats cada n cel·les, fent l'alineament de senyals en vies paral·leles més fàcil
|
||||
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Construir semàfors mecànics automàticament abans de: {STRING}
|
||||
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Estableix l'any per utilitzar semàfors elèctrics. Abans d'aquest any s'utilitzaran senyals mecànics (que tenen exactament la mateixa funció, però amb diferent aspecte)
|
||||
STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Activa la interfície de senyals: {STRING}
|
||||
@@ -1519,7 +1519,7 @@ STR_CONFIG_SETTING_STATUSBAR_POS :Posició de la
|
||||
STR_CONFIG_SETTING_STATUSBAR_POS_HELPTEXT :Posició horitzontal de la barra d'estat a la part inferior de la pantalla
|
||||
STR_CONFIG_SETTING_SNAP_RADIUS :Radi d'acció de la finestra: {STRING}
|
||||
STR_CONFIG_SETTING_SNAP_RADIUS_HELPTEXT :Distància entre finestres abans que la finestra moguda sigui automàticament alineada a una finestra propera
|
||||
STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} pixel{P 0 "" s}
|
||||
STR_CONFIG_SETTING_SNAP_RADIUS_VALUE :{COMMA} píxel{P 0 "" s}
|
||||
STR_CONFIG_SETTING_SNAP_RADIUS_DISABLED :Desactivat
|
||||
STR_CONFIG_SETTING_SOFT_LIMIT :Nombre màxim de finestres no-enganxoses: {STRING}
|
||||
STR_CONFIG_SETTING_SOFT_LIMIT_HELPTEXT :Nombre de finestres no-enganxoses obertes abans que les finestres antigues es tanquin automàticament per fer lloc a les noves finestres
|
||||
@@ -1535,13 +1535,13 @@ STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normal
|
||||
STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x
|
||||
STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x
|
||||
STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x
|
||||
STR_CONFIG_SETTING_TOWN_GROWTH :Velocitat de creixement de les ciutats: {STRING}
|
||||
STR_CONFIG_SETTING_TOWN_GROWTH :Velocitat de creixement de les poblacions: {STRING}
|
||||
STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Velocitat de creixement de les poblacions
|
||||
STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Cap
|
||||
STR_CONFIG_SETTING_TOWN_GROWTH_SLOW :Lenta
|
||||
STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Normal
|
||||
STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Ràpida
|
||||
STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Molt Ràpida
|
||||
STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Molt ràpida
|
||||
STR_CONFIG_SETTING_LARGER_TOWNS :Proporció de pobles que es convertiran en ciutats: {STRING}
|
||||
STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Quantitat de pobles que esdevenen una ciutat, es a dir un poble que comença més gran i creix més ràpidament
|
||||
STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 en {COMMA}
|
||||
@@ -1604,7 +1604,7 @@ STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... igno
|
||||
STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignorant el conjunt de sons base '{STRING}': no trobats
|
||||
STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignorant el conjunt de músiques base '{STRING}': no trobats
|
||||
STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Memòria exhaurida
|
||||
STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}L'assignació de {BYTES} de la memòria cau d'sprites ha fallat. La memòria cau d'sprites s'ha reduït a {BYTES}. Això reduirà el rendiment d'OpenTTD. Per reduir els requeriments de memòia pots probar a desactivar els gràfics de 32bpp i/o els nivells amb zoom
|
||||
STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}L'assignació de {BYTES} de la memòria cau d'sprites ha fallat. La memòria cau d'sprites s'ha reduït a {BYTES}. Això reduirà el rendiment d'OpenTTD. Per reduir els requeriments de memòria pots probar a desactivar els gràfics de 32bpp i/o els nivells amb zoom
|
||||
|
||||
# Intro window
|
||||
STR_INTRO_CAPTION :{WHITE}OpenTTD {REV}
|
||||
@@ -1644,7 +1644,7 @@ STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Comprova
|
||||
STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Mostra els paràmetres de la IA/Script del joc
|
||||
STR_INTRO_TOOLTIP_QUIT :{BLACK}Surt d'OpenTTD
|
||||
|
||||
STR_INTRO_TRANSLATION :{BLACK}A aquesta traducció li falta {NUM} string{P "" s}. Si us plau ajuda a fer millor OpenTTD unint-te com a traductor. Veure readme.txt per més detalls.
|
||||
STR_INTRO_TRANSLATION :{BLACK}A aquesta traducció li falten {NUM} caden{P a es}. Si us plau ajuda a fer millor OpenTTD unint-te com a traductor. Veure readme.txt per més detalls.
|
||||
|
||||
# Quit window
|
||||
STR_QUIT_CAPTION :{WHITE}Surt
|
||||
@@ -1977,7 +1977,7 @@ STR_COMPANY_PASSWORD_MAKE_DEFAULT_TOOLTIP :{BLACK}Utilitza
|
||||
STR_COMPANY_VIEW_JOIN :{BLACK}Unir-se
|
||||
STR_COMPANY_VIEW_JOIN_TOOLTIP :{BLACK}Unir-se i jugar amb aquesta companyia
|
||||
STR_COMPANY_VIEW_PASSWORD :{BLACK}Contrasenya
|
||||
STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Protegeix la teva Empresa amb contrasenya per tal d'evitar que la utilitzin usuaris no autoritzats
|
||||
STR_COMPANY_VIEW_PASSWORD_TOOLTIP :{BLACK}Protegeix la teva empresa amb contrasenya per tal d'evitar que la utilitzin usuaris no autoritzats
|
||||
STR_COMPANY_VIEW_SET_PASSWORD :{BLACK}Estableix la contrasenya de l'Empresa
|
||||
|
||||
# Network chat
|
||||
@@ -2805,6 +2805,8 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} de <cà
|
||||
STR_NEWGRF_INVALID_ENGINE :<model de vehicle invàlid>
|
||||
STR_NEWGRF_INVALID_INDUSTRYTYPE :<indústria invàlida>
|
||||
|
||||
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
|
||||
|
||||
# NewGRF scanning window
|
||||
STR_NEWGRF_SCAN_CAPTION :{WHITE}Escanejant NewGRFs
|
||||
STR_NEWGRF_SCAN_MESSAGE :{BLACK}Escanejant NewGRFs. Depenent de la quantitat pot trigar una estona...
|
||||
@@ -3074,9 +3076,9 @@ STR_BUY_COMPANY_MESSAGE :{WHITE}Busquem
|
||||
|
||||
# Company infrastructure window
|
||||
STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastructura de {COMPANY}
|
||||
STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Troços de via:
|
||||
STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Trossos de via:
|
||||
STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Senyals
|
||||
STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Troços de carretera:
|
||||
STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Trossos de carretera:
|
||||
STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD :{WHITE}Carretera
|
||||
STR_COMPANY_INFRASTRUCTURE_VIEW_TRAMWAY :{WHITE}Tramvia
|
||||
STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Cel·les d'aigua:
|
||||
@@ -3742,7 +3744,7 @@ STR_DATE_YEAR_TOOLTIP :{BLACK}Seleccio
|
||||
|
||||
|
||||
# AI debug window
|
||||
STR_AI_DEBUG :{WHITE}IA/Depuració de l'script del joc
|
||||
STR_AI_DEBUG :{WHITE}Depuració de la IA/Script de Joc
|
||||
STR_AI_DEBUG_NAME_AND_VERSION :{BLACK}{STRING} (v{NUM})
|
||||
STR_AI_DEBUG_NAME_TOOLTIP :{BLACK}Nom de l'script
|
||||
STR_AI_DEBUG_SETTINGS :{BLACK}Paràmetres
|
||||
@@ -3766,16 +3768,16 @@ STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Un dels
|
||||
STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}IA/La finestra de depuració de l'Script del Joc només està disponible pel servidor
|
||||
|
||||
# AI configuration window
|
||||
STR_AI_CONFIG_CAPTION :{WHITE}IA/Configuració dels Scripts del joc
|
||||
STR_AI_CONFIG_CAPTION :{WHITE}Configuració de la IA/Script de Joc
|
||||
STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}L'Script del Joc que serà carregat al proper joc
|
||||
STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Les IA que seran carregades al proper joc
|
||||
STR_AI_CONFIG_HUMAN_PLAYER :Jugador humà
|
||||
STR_AI_CONFIG_RANDOM_AI :IA Aleatòria
|
||||
STR_AI_CONFIG_RANDOM_AI :IA aleatòria
|
||||
STR_AI_CONFIG_NONE :(cap)
|
||||
|
||||
STR_AI_CONFIG_MOVE_UP :{BLACK}Mou Amunt
|
||||
STR_AI_CONFIG_MOVE_UP :{BLACK}Mou amunt
|
||||
STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}Mou la IA selecionada amunt a la llista
|
||||
STR_AI_CONFIG_MOVE_DOWN :{BLACK}Mou Avall
|
||||
STR_AI_CONFIG_MOVE_DOWN :{BLACK}Mou avall
|
||||
STR_AI_CONFIG_MOVE_DOWN_TOOLTIP :{BLACK}Mou la IA selecionada avall a la llista
|
||||
|
||||
STR_AI_CONFIG_GAMESCRIPT :{SILVER}Script del Joc
|
||||
@@ -3815,10 +3817,10 @@ STR_AI_SETTINGS_START_DELAY :Número de dies
|
||||
|
||||
|
||||
# Textfile window
|
||||
STR_TEXTFILE_README_CAPTION :{WHITE}Llegeixme del {STRING} de {STRING}
|
||||
STR_TEXTFILE_README_CAPTION :{WHITE}Llegeix-me del {STRING} de {STRING}
|
||||
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Registre de canvis del {STRING} de {STRING}
|
||||
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Llicència del {STRING} de {STRING}
|
||||
STR_TEXTFILE_VIEW_README :{BLACK}Veure llegeixme
|
||||
STR_TEXTFILE_VIEW_README :{BLACK}Veure llegeix-me
|
||||
STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Registre de canvis
|
||||
STR_TEXTFILE_VIEW_LICENCE :{BLACK}Llicència
|
||||
|
||||
@@ -3881,7 +3883,7 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Només s
|
||||
|
||||
# Screenshot related messages
|
||||
STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Captura de pantalla enorme
|
||||
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}La captura de pantalla tindrà una resolució de {COMMA} x {COMMA} pixels. Es tardarà una estona a fer la captura. Vols continuar?
|
||||
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}La captura de pantalla tindrà una resolució de {COMMA} x {COMMA} píxels. Es tardarà una estona a fer la captura. Vols continuar?
|
||||
|
||||
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Captura de pantalla desada correctament com a '{STRING}'
|
||||
STR_ERROR_SCREENSHOT_FAILED :{WHITE}Error en la captura de pantalla!
|
||||
@@ -3920,7 +3922,7 @@ STR_ERROR_BRIBE_FAILED :{WHITE}El teu i
|
||||
STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Aquí no es pot elevar el terreny...
|
||||
STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Aquí no es pot rebaixar el terreny...
|
||||
STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Aquí no es pot anivellar...
|
||||
STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}La excavació pot malmetre el túnel
|
||||
STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}L'excavació pot malmetre el túnel
|
||||
STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Ja ets a nivell del mar
|
||||
STR_ERROR_TOO_HIGH :{WHITE}Massa alt
|
||||
STR_ERROR_ALREADY_LEVELLED :{WHITE}... ja és pla
|
||||
@@ -4191,6 +4193,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}No es po
|
||||
|
||||
STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vehicle està destruït
|
||||
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}No hi haurà cap vehicle disponible
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Canvia la teva configuració dels NewGRF
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Encara no hi ha vehicles disponibles
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Iniciar un nou joc després de {DATE_SHORT} o usar un NewGRF que proporciona vehicles primerencs
|
||||
|
||||
# Specific vehicle errors
|
||||
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}No pots fer que un tren passi d'una senyal amb perill...
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}No es pot invertir la direcció del tren...
|
||||
@@ -4365,7 +4372,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Dièsel)
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Dièsel
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Dièsel
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Vapor)
|
||||
@@ -4574,7 +4581,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :{G=Masculin}Fer
|
||||
STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :{G=Masculin}Ferry de Passatgers Shivershake
|
||||
STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :{G=Masculin}Vaixell Mercant Yate
|
||||
STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :{G=Masculin}Vaixell Mercant Bakewell
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :{G=Masculin}Vaixell Mercant Mightymover
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :{G=Masculin}Vaixell Mercant MightyMover
|
||||
STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :{G=Masculin}Vaixell Mercant Powernaut
|
||||
STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :{G=Masculin}Sampson U52
|
||||
STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :{G=Masculin}Coleman Count
|
||||
@@ -4691,6 +4698,7 @@ STR_JUST_DATE_ISO :{DATE_ISO}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_JUST_STRING_STRING :{STRING}{STRING}
|
||||
STR_JUST_RAW_STRING :{STRING}
|
||||
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
|
||||
|
||||
# Slightly 'raw' stringcodes with colour or size
|
||||
STR_BLACK_COMMA :{BLACK}{COMMA}
|
||||
|
@@ -380,9 +380,9 @@ STR_SORT_BY_ENGINE_ID :MotorID (standa
|
||||
STR_SORT_BY_COST :Cijena
|
||||
STR_SORT_BY_POWER :Snaga
|
||||
STR_SORT_BY_TRACTIVE_EFFORT :Vučna sila
|
||||
STR_SORT_BY_INTRO_DATE :Datum početka
|
||||
STR_SORT_BY_RUNNING_COST :Trošak uporabe
|
||||
STR_SORT_BY_POWER_VS_RUNNING_COST :Snaga/trošak uporabe
|
||||
STR_SORT_BY_INTRO_DATE :Datum uvođenja
|
||||
STR_SORT_BY_RUNNING_COST :Tekući trošak
|
||||
STR_SORT_BY_POWER_VS_RUNNING_COST :Snaga/Tekući trošak
|
||||
STR_SORT_BY_CARGO_CAPACITY :Nosivost tereta
|
||||
STR_SORT_BY_RANGE :Domet
|
||||
|
||||
@@ -1159,7 +1159,7 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Postavke sa dru
|
||||
STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Postavke sa drugačijim vrijednostima od postavki vaše nove igre
|
||||
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Dozvoljava popis samo ispod određene postavke
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Sve postavke
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Sve vrste postavki
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Postavke klijenta (nisu spremljene prilikom snimanja; utječu na sve igre)
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Postavke igre (spremljene prilikom snimanja; utječu samo na nove igre)
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Postavke igre (spremljene prilikom snimanja; utječu samo na tekuću igru)
|
||||
@@ -1419,8 +1419,8 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31
|
||||
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Osnovna paleta će biti postavljena za NewGRFove koji ne odrede paletu: {STRING}
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Osnovna paleta koju će koristiti NewGRF-ovi koji nemaju specificirano koju paletu trebaju
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS paleta
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows paleta
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Osnovna (D) paleta boja
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Legacy (W) paleta boja
|
||||
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatski pauziraj prilikom pokretanja nove igre: {STRING}
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Kada je uključeno, igra će se automatski pauzirati priliko pokretanja nove igre, dozvoljavajući bolje proučavanje mape
|
||||
@@ -2900,6 +2900,8 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} od <pog
|
||||
STR_NEWGRF_INVALID_ENGINE :<pogrešan model vozila>
|
||||
STR_NEWGRF_INVALID_INDUSTRYTYPE :<pogrešna industrija>
|
||||
|
||||
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
|
||||
|
||||
# NewGRF scanning window
|
||||
STR_NEWGRF_SCAN_CAPTION :{WHITE}Tražim NewGRFove
|
||||
STR_NEWGRF_SCAN_MESSAGE :{BLACK}Tražim NewGRFove. Ovisno o količini ovo može malo potrajati...
|
||||
@@ -4286,6 +4288,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Nije mog
|
||||
|
||||
STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vozilo je uništeno
|
||||
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Neće biti dostupno nijedno vozilo
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Promijenite konfiguraciju NewGRF-a
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Još nema dostupnih vozila
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Pokreni novu igru nakon {DATE_SHORT} ili upotrijebi NewGRF koji daje vrlo rana vozila
|
||||
|
||||
# Specific vehicle errors
|
||||
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nije moguće natjerati vlak da ignorira signale dok traje opasnost...
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Nije moguće promijeniti smjer vlaka...
|
||||
@@ -4497,7 +4504,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel)
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (parni)
|
||||
@@ -4706,7 +4713,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Putnički traje
|
||||
STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Putnički trajekt Shivershake
|
||||
STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Teretni brod Yate
|
||||
STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Teretni brod Bakewell
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Teretni brod Mightymover
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Teretni brod MightyMover
|
||||
STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Teretni brod Powernaut
|
||||
STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52
|
||||
STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count
|
||||
@@ -4823,6 +4830,7 @@ STR_JUST_DATE_ISO :{DATE_ISO}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_JUST_STRING_STRING :{STRING}{STRING}
|
||||
STR_JUST_RAW_STRING :{STRING}
|
||||
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
|
||||
|
||||
# Slightly 'raw' stringcodes with colour or size
|
||||
STR_BLACK_COMMA :{BLACK}{COMMA}
|
||||
|
@@ -1145,14 +1145,14 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Nastavení s ji
|
||||
STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Nastavení s jinou hodnotou než tvé nastavení nových her
|
||||
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Omezí určitá nastavení v seznamu níže
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Všechna nastavení
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Všechny typy nastavení
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Nastavení klienta (není uchováno v uložených hrách; ovlivní všechny hry)
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Nastavení hry (uchováno v uložených hrách; ovlivní pouze nové hry)
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Nastavení hry (uchováno v uložené hře; ovlivní pouze stávající hru)
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Nastavení společnosti (uchováno v uložených hrách; ovlivní pouze nové hry)
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Nastavení společnosti (uchováno v uložené hře; ovlivní pouze stávající společnost)
|
||||
|
||||
STR_CONFIG_SETTING_OFF :vypnuto
|
||||
STR_CONFIG_SETTING_OFF :Vypnuto
|
||||
STR_CONFIG_SETTING_ON :Zapnuto
|
||||
STR_CONFIG_SETTING_DISABLED :Vypnuto
|
||||
|
||||
@@ -1173,7 +1173,7 @@ STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Jak moc si mů
|
||||
STR_CONFIG_SETTING_INTEREST_RATE :Výše úroků: {STRING}
|
||||
STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Výše úroků z půjček; rovněž ovlivňuje inflaci, pokud je zapnuta
|
||||
STR_CONFIG_SETTING_RUNNING_COSTS :Cena provozu: {STRING}
|
||||
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Nastav cenu držby a provozu vozidel a infrastruktury
|
||||
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Nastav cenu údržby a provozu vozidel a infrastruktury
|
||||
STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Rychlost výstavby: {STRING}
|
||||
STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Omezení výstavby AI
|
||||
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Poruchy vozidel: {STRING}
|
||||
@@ -1364,7 +1364,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :fialová
|
||||
STR_CONFIG_SETTING_REVERSE_SCROLLING :Posouvat pohled opačným směrem: {STRING}
|
||||
STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Chování při posouvání mapy pomocí stisku pravého tlačítka myši. Pokud vypnuto, myš pohybuje kamerou. Pokud zapnuto, myš pohybuje mapou
|
||||
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Plynulé posouvání po mapě: {STRING}
|
||||
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Ovládá jak se hlavní pohled posouvá na specifické místo na mapě, kliknutím na minimapu nebo spuštěním příkazu na posun na specifický objekt na mapě. Pokud povoleno, pohled se posouvá plynule, pokud vypnuto, skáče pohled přímo na cílové místo
|
||||
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Ovládá jak se hlavní pohled posouvá na specifické místo na mapě, kliknutím na minimapu nebo spuštěním příkazu na posun na specifický objekt na mapě. Pokud zapnuto, pohled se posouvá plynule, pokud vypnuto, skáče pohled přímo na cílové místo
|
||||
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Ukázat rozměry při použití stavebních nástrojů: {STRING}
|
||||
STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Zobrazovat vzdálenost a výškový rozdíl při výstavbě tahem.
|
||||
STR_CONFIG_SETTING_LIVERIES :Zobrazovat barvy společnosti pro: {STRING}
|
||||
@@ -1405,8 +1405,8 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31
|
||||
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Předpokládaná základní paleta pro NewGRF nespecifikuje paletu: {STRING}
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Pro nové grafiky, které nemají definovanou potřebnou paletu, použít paletu defaultní.
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :paleta DOS
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :paleta Windows
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Původní (D) paleta
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Stará (W) paleta
|
||||
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Zastavit automaticky hru při začínání nové hry: {STRING}
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Pokud je zapnuto, hra se na začátku nové hry automaticky pozastaví a umožní tak bližší prozkoumání mapy
|
||||
@@ -2892,6 +2892,8 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} jednot{
|
||||
STR_NEWGRF_INVALID_ENGINE :<neplatný druh vozidla>
|
||||
STR_NEWGRF_INVALID_INDUSTRYTYPE :<neplatný průmysl>
|
||||
|
||||
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
|
||||
|
||||
# NewGRF scanning window
|
||||
STR_NEWGRF_SCAN_CAPTION :{WHITE}Prohledávání grafik
|
||||
STR_NEWGRF_SCAN_MESSAGE :{BLACK}Prohledávám grafiky. Toto může chvíli trvat...
|
||||
@@ -4291,6 +4293,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Nelze zm
|
||||
|
||||
STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vozidlo bylo zničeno
|
||||
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Žádná vozidla nejsou dostupná
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Zmeň nastavení NewGRF
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Zatím nejsou dostupná žádná vozidla
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Začít hru po {DATE_SHORT} nebo použít NewGRF, která zajistí dřívější vozidla
|
||||
|
||||
# Specific vehicle errors
|
||||
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Nelze nechat vlak projet semafory v nebezpečí...
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Nelze obrátit vlak...
|
||||
@@ -4576,7 +4583,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (dieselová)
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut (dieselová)
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut (dieselová)
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (parní)
|
||||
@@ -4785,7 +4792,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Trajekt pro ces
|
||||
STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Trajekt pro cestující Shivershake
|
||||
STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Nákladní loď Yate
|
||||
STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Nákladní loď Bakewell
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Nákladní loď Mightymover
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Nákladní loď MightyMover
|
||||
STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Nákladní loď Powernaut
|
||||
STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52
|
||||
STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count
|
||||
@@ -4908,6 +4915,7 @@ STR_JUST_DATE_ISO :{DATE_ISO}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_JUST_STRING_STRING :{STRING}{STRING}
|
||||
STR_JUST_RAW_STRING :{STRING}
|
||||
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
|
||||
|
||||
# Slightly 'raw' stringcodes with colour or size
|
||||
STR_BLACK_COMMA :{BLACK}{COMMA}
|
||||
|
@@ -1323,8 +1323,6 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31
|
||||
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Standard palette NewGRFer uden valgt palette: {STRING}
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Standardpalet til brug af NewGRFs der ikke angiver hvilken en de har brug for
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS palette
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows palette
|
||||
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Sæt automatisk på pause når nyt spil startes: {STRING}
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Når aktiveret, vil spillet automatisk pause når du starter et nyt spil, det giver mulighed for at studerer kortet nærmere
|
||||
@@ -2804,6 +2802,8 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} af <ikk
|
||||
STR_NEWGRF_INVALID_ENGINE :<ugyldig køretøjsmodel>
|
||||
STR_NEWGRF_INVALID_INDUSTRYTYPE :<ikke gyldig industri type>
|
||||
|
||||
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
|
||||
|
||||
# NewGRF scanning window
|
||||
STR_NEWGRF_SCAN_CAPTION :{WHITE}Scanner NewGRFs
|
||||
STR_NEWGRF_SCAN_MESSAGE :{BLACK}Scanner NewGRFs. Afhængig af mængden, vil dette tage noget tid...
|
||||
@@ -4364,7 +4364,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel)
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Damp)
|
||||
@@ -4573,7 +4573,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Pa
|
||||
STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Passagerfærge
|
||||
STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Fragtskib
|
||||
STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Fragtskib
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Fragtskib
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Fragtskib
|
||||
STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Fragtskib
|
||||
STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52
|
||||
STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count
|
||||
|
@@ -1101,9 +1101,9 @@ STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Instellen hoeve
|
||||
STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Bouwkosten: {STRING}
|
||||
STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Het niveau van bouw- en aankoopkosten
|
||||
STR_CONFIG_SETTING_RECESSIONS :Recessies: {STRING}
|
||||
STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Wanneer ingeschakeld kunnen recessies om de paar jaar optreden. Tijdens een recessie is alle productie aanzienlijk lager (Deze keert terug naar het vorige niveau als de recessie voorbij is)
|
||||
STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Wanneer ingeschakeld kunnen recessies om de paar jaar optreden. Tijdens een recessie is alle productie aanzienlijk lager (deze keert terug naar het vorige niveau als de recessie voorbij is)
|
||||
STR_CONFIG_SETTING_TRAIN_REVERSING :Niet toestaan dat treinen keren in stations: {STRING}
|
||||
STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Indien ingeschakeld zullen treinen niet omkeren in niet-eind stations, als er een kortere weg naar hun volgende bestemming is bij omkeren
|
||||
STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Indien ingeschakeld zullen treinen niet omkeren in niet-eind stations, zelfs als er een kortere weg naar hun volgende bestemming is bij omkeren
|
||||
STR_CONFIG_SETTING_DISASTERS :Rampen: {STRING}
|
||||
STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Schakel rampen die af en toe voertuigen of infrastructuur kunnen blokkeren of vernietigen
|
||||
STR_CONFIG_SETTING_CITY_APPROVAL :Gemeenteraad's houding ten opzichte van herstructurering gebied: {STRING}
|
||||
@@ -1323,8 +1323,8 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31
|
||||
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Standaard palette voor NewGRFs zonder specifiek palette: {STRING}
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Standaard palet te gebruiken voor NewGRFs die niet aangeven welke ze nodig hebben
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS palette
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows palette
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Standaard (D) palette
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Legacy (W) palette
|
||||
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatisch pauzeren als je een nieuw spel start: {STRING}
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Wanneer ingeschakeld, het spel zal automatisch pauzeren bij het starten van een nieuw spel, waardoor nadere bestudering van de kaart mogelijk is
|
||||
@@ -1363,7 +1363,7 @@ STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Speel geluidsef
|
||||
STR_CONFIG_SETTING_SOUND_NEW_YEAR :Einde jaar: {STRING}
|
||||
STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Speel geluidseffecten bij de samenvatting van resultaten gedurende het jaar ten opzichte van het jaar ervoor aan het einde van het jaar
|
||||
STR_CONFIG_SETTING_SOUND_CONFIRM :Bouw: {STRING}
|
||||
STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Speel geluidseffecten van succesvolle constructies of andere acties
|
||||
STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Speel geluidseffecten bij succesvolle constructies of andere acties
|
||||
STR_CONFIG_SETTING_SOUND_CLICK :Knop kliks: {STRING}
|
||||
STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Piep bij het klikken op knoppen
|
||||
STR_CONFIG_SETTING_SOUND_DISASTER :Rampen/ongelukken: {STRING}
|
||||
@@ -2804,6 +2804,8 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} van <on
|
||||
STR_NEWGRF_INVALID_ENGINE :<ongeldig treinmodel>
|
||||
STR_NEWGRF_INVALID_INDUSTRYTYPE :<ongeldige industrie>
|
||||
|
||||
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
|
||||
|
||||
# NewGRF scanning window
|
||||
STR_NEWGRF_SCAN_CAPTION :{WHITE}Scannen van NewGRFs
|
||||
STR_NEWGRF_SCAN_MESSAGE :{BLACK}Scannen van NewGRFs. Afhankelijk van het aantal, kan dit even duren...
|
||||
@@ -4190,6 +4192,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Kan onde
|
||||
|
||||
STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... voertuig is vernietigd
|
||||
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Geen enkel voertuig zal beschikbaar zijn
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Pas je NewGRF configuratie aan
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Nog geen voertuigen beschikbaar
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE} Start een nieuw spel na {DATE_SHORT} of gebruik een NewGRF dat in vroege voertuigen voorziet
|
||||
|
||||
# Specific vehicle errors
|
||||
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan trein niet het signaal laten passeren bij gevaar...
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Kan de richting van de trein niet omdraaien...
|
||||
@@ -4364,7 +4371,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel)
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Stoom)
|
||||
@@ -4573,7 +4580,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Ve
|
||||
STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Veerboot
|
||||
STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Goederenschip
|
||||
STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Goederenschip
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Goederenschip
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Goederenschip
|
||||
STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Goederenschip
|
||||
STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52
|
||||
STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count
|
||||
@@ -4690,6 +4697,7 @@ STR_JUST_DATE_ISO :{DATE_ISO}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_JUST_STRING_STRING :{STRING}{STRING}
|
||||
STR_JUST_RAW_STRING :{STRING}
|
||||
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
|
||||
|
||||
# Slightly 'raw' stringcodes with colour or size
|
||||
STR_BLACK_COMMA :{BLACK}{COMMA}
|
||||
|
@@ -284,10 +284,10 @@ STR_SORT_BY_ENGINE_ID :EngineID (class
|
||||
STR_SORT_BY_COST :Cost
|
||||
STR_SORT_BY_POWER :Power
|
||||
STR_SORT_BY_TRACTIVE_EFFORT :Tractive effort
|
||||
STR_SORT_BY_INTRO_DATE :Introduction Date
|
||||
STR_SORT_BY_RUNNING_COST :Running Cost
|
||||
STR_SORT_BY_POWER_VS_RUNNING_COST :Power/Running Cost
|
||||
STR_SORT_BY_CARGO_CAPACITY :Cargo Capacity
|
||||
STR_SORT_BY_INTRO_DATE :Introduction date
|
||||
STR_SORT_BY_RUNNING_COST :Running cost
|
||||
STR_SORT_BY_POWER_VS_RUNNING_COST :Power/Running cost
|
||||
STR_SORT_BY_CARGO_CAPACITY :Cargo capacity
|
||||
STR_SORT_BY_RANGE :Range
|
||||
|
||||
# Tooltips for the main toolbar
|
||||
@@ -1063,7 +1063,7 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Settings with a
|
||||
STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Settings with a different value than your new-game settings
|
||||
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below to certain setting types
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :All settings
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :All setting types
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Client settings (not stored in saves; affects all games)
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Game settings (stored in saves; affects only new games)
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Game settings (stored in save; affects only current game)
|
||||
@@ -1323,8 +1323,8 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31
|
||||
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Default palette to assume for NewGRFs not specifying a palette: {STRING2}
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Default palette to use for NewGRFs that do not specify which one they need
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS palette
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows palette
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Default (D) palette
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Legacy (W) palette
|
||||
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatically pause when starting a new game: {STRING2}
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :When enabled, the game will automatically pause when starting a new game, allowing for closer study of the map
|
||||
@@ -2804,6 +2804,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of <inv
|
||||
STR_NEWGRF_INVALID_ENGINE :<invalid vehicle model>
|
||||
STR_NEWGRF_INVALID_INDUSTRYTYPE :<invalid industry>
|
||||
|
||||
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
|
||||
STR_INVALID_VEHICLE :<invalid vehicle>
|
||||
|
||||
# NewGRF scanning window
|
||||
STR_NEWGRF_SCAN_CAPTION :{WHITE}Scanning NewGRFs
|
||||
STR_NEWGRF_SCAN_MESSAGE :{BLACK}Scanning NewGRFs. Depending on the amount this can take a while...
|
||||
@@ -4190,6 +4193,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Can't ch
|
||||
|
||||
STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vehicle is destroyed
|
||||
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}No vehicles will be available at all
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Change your NewGRF configuration
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}No vehicles are available yet
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Start a new game after {DATE_SHORT} or use a NewGRF that provides early vehicles
|
||||
|
||||
# Specific vehicle errors
|
||||
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Can't make train pass signal at danger...
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Can't reverse direction of train...
|
||||
@@ -4364,7 +4372,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel)
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Steam)
|
||||
@@ -4573,7 +4581,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Pa
|
||||
STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Passenger Ferry
|
||||
STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Cargo Ship
|
||||
STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Cargo Ship
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Cargo Ship
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Cargo Ship
|
||||
STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Cargo Ship
|
||||
STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52
|
||||
STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count
|
||||
|
@@ -1063,7 +1063,7 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Settings with a
|
||||
STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Settings with a different value than your new-game settings
|
||||
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below to certain setting types
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :All settings
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :All setting types
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Client settings (not stored in saves; affects all games)
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Game settings (stored in saves; only affects new games)
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Game settings (stored in save; only affects current game)
|
||||
@@ -1323,8 +1323,8 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31
|
||||
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Default palette to assume for NewGRFs not specifying a palette: {STRING}
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Default palette to use for NewGRFs that do not specify which one they need
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS palette
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows palette
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Default (D) palette
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Legacy (W) palette
|
||||
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatically pause when starting a new game: {STRING}
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :When enabled, the game will automatically pause when starting a new game, allowing for closer study of the map
|
||||
@@ -2804,6 +2804,8 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of <inv
|
||||
STR_NEWGRF_INVALID_ENGINE :<invalid vehicle model>
|
||||
STR_NEWGRF_INVALID_INDUSTRYTYPE :<invalid industry>
|
||||
|
||||
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
|
||||
|
||||
# NewGRF scanning window
|
||||
STR_NEWGRF_SCAN_CAPTION :{WHITE}Scanning NewGRFs
|
||||
STR_NEWGRF_SCAN_MESSAGE :{BLACK}Scanning NewGRFs. Depending on the amount this can take a while...
|
||||
@@ -4190,6 +4192,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Can't ch
|
||||
|
||||
STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vehicle is destroyed
|
||||
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}No vehicles will be available at all
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Change your NewGRF configuration
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}No vehicles are available yet
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Start a new game after {DATE_SHORT} or use a NewGRF which provides early vehicles
|
||||
|
||||
# Specific vehicle errors
|
||||
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Can't make train pass signal at danger...
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Can't reverse direction of train...
|
||||
@@ -4364,7 +4371,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel)
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Steam)
|
||||
@@ -4573,7 +4580,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Pa
|
||||
STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Passenger Ferry
|
||||
STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Cargo Ship
|
||||
STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Cargo Ship
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Cargo Ship
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Cargo Ship
|
||||
STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Cargo Ship
|
||||
STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52
|
||||
STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count
|
||||
@@ -4690,6 +4697,7 @@ STR_JUST_DATE_ISO :{DATE_ISO}
|
||||
STR_JUST_STRING :{STRING}
|
||||
STR_JUST_STRING_STRING :{STRING}{STRING}
|
||||
STR_JUST_RAW_STRING :{STRING}
|
||||
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
|
||||
|
||||
# Slightly 'raw' stringcodes with colour or size
|
||||
STR_BLACK_COMMA :{BLACK}{COMMA}
|
||||
|
@@ -284,10 +284,10 @@ STR_SORT_BY_ENGINE_ID :EngineID (class
|
||||
STR_SORT_BY_COST :Cost
|
||||
STR_SORT_BY_POWER :Power
|
||||
STR_SORT_BY_TRACTIVE_EFFORT :Tractive effort
|
||||
STR_SORT_BY_INTRO_DATE :Introduction Date
|
||||
STR_SORT_BY_RUNNING_COST :Running Cost
|
||||
STR_SORT_BY_POWER_VS_RUNNING_COST :Power/Running Cost
|
||||
STR_SORT_BY_CARGO_CAPACITY :Cargo Capacity
|
||||
STR_SORT_BY_INTRO_DATE :Introduction date
|
||||
STR_SORT_BY_RUNNING_COST :Running cost
|
||||
STR_SORT_BY_POWER_VS_RUNNING_COST :Power/Running cost
|
||||
STR_SORT_BY_CARGO_CAPACITY :Cargo capacity
|
||||
STR_SORT_BY_RANGE :Range
|
||||
|
||||
# Tooltips for the main toolbar
|
||||
@@ -295,7 +295,7 @@ STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pause ga
|
||||
STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Fast forward the game
|
||||
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Options
|
||||
STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Save game, abandon game, quit
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Display map
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Display map, extra viewport, or list of signs
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Display town directory
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Display subsidies
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Display list of company's stations
|
||||
@@ -303,7 +303,7 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Display
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Display general company information
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Display graphs
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Display company league table
|
||||
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Fund construction of new industry
|
||||
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Fund construction of new industry or list all industries
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}Display list of company's trains. Ctrl+Click toggles opening the group/vehicle list
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}Display list of company's road vehicles. Ctrl+Click toggles opening the group/vehicle list
|
||||
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}Display list of company's ships. Ctrl+Click toggles opening the group/vehicle list
|
||||
@@ -439,7 +439,7 @@ STR_TOOLBAR_SOUND_MUSIC :Sound/music
|
||||
|
||||
############ range for message menu starts
|
||||
STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Last message/news report
|
||||
STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Message History
|
||||
STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Message history
|
||||
############ range ends here
|
||||
|
||||
############ range for about menu starts
|
||||
@@ -584,10 +584,10 @@ STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Total:
|
||||
STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Number of vehicles that turned a profit last year. This includes road vehicles, trains, ships and aircraft
|
||||
STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Number of recently-serviced stations. Train stations, bus stops, airports and so on are counted separately even if they belong to the same station
|
||||
STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}The profit of the vehicle with the lowest income (only vehicles older than two years are considered)
|
||||
STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Amount of cash made in the quarter with the lowest profit of the past 12 quarters
|
||||
STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Amount of cash made in the quarter with the highest profit of the past 12 quarters
|
||||
STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Units of cargo delivered in the past four quarters
|
||||
STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Number of types of cargo delivered in the past quarter
|
||||
STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Amount of cash made in the quarter with the lowest profit of the last 12 quarters
|
||||
STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Amount of cash made in the quarter with the highest profit of the last 12 quarters
|
||||
STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Units of cargo delivered in the last four quarters
|
||||
STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Number of types of cargo delivered in the last quarter
|
||||
STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Amount of money this company has in the bank
|
||||
STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}The amount of money this company has taken on loan
|
||||
STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Total points out of possible points
|
||||
@@ -719,7 +719,7 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Display
|
||||
# Status bar messages
|
||||
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Show last message or news report
|
||||
STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - -
|
||||
STR_STATUSBAR_PAUSED :{YELLOW}* * PAUSED * *
|
||||
STR_STATUSBAR_PAUSED :{YELLOW}* * PAUSED * *
|
||||
STR_STATUSBAR_AUTOSAVE :{RED}AUTOSAVE
|
||||
STR_STATUSBAR_SAVING_GAME :{RED}* * SAVING GAME * *
|
||||
|
||||
@@ -1063,7 +1063,7 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Settings with a
|
||||
STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Settings with a different value than your new-game settings
|
||||
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Restricts the list below to certain setting types
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :All settings
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :All setting types
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Client settings (not stored in saves; affects all games)
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Game settings (stored in saves; affects only new games)
|
||||
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Game settings (stored in save; affects only current game)
|
||||
@@ -1097,7 +1097,7 @@ STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Limit the amoun
|
||||
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Vehicle breakdowns: {STRING}
|
||||
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Control how often inadequately maintained vehicles may break down
|
||||
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Subsidy multiplier: {STRING}
|
||||
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Set how much is paid for subsidised connections
|
||||
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Set how much is paid for subsidized connections
|
||||
STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Construction costs: {STRING}
|
||||
STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Set level of construction and purchase costs
|
||||
STR_CONFIG_SETTING_RECESSIONS :Recessions: {STRING}
|
||||
@@ -1131,7 +1131,7 @@ STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Steepness of a
|
||||
STR_CONFIG_SETTING_PERCENTAGE :{COMMA}%
|
||||
STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Slope steepness for road vehicles: {STRING}
|
||||
STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Steepness of a sloped tile for a road vehicle. Higher values make it more difficult to climb a hill
|
||||
STR_CONFIG_SETTING_FORBID_90_DEG :Forbid trains and ships to make 90 deg turns: {STRING}
|
||||
STR_CONFIG_SETTING_FORBID_90_DEG :Forbid trains and ships from making 90° turns: {STRING}
|
||||
STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90 degree turns occur when a horizontal track is directly followed by a vertical track piece on the adjacent tile, thus making the train turn by 90 degree when traversing the tile edge instead of the usual 45 degrees for other track combinations. This also applies to the turning radius of ships
|
||||
STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Allow joining stations not directly adjacent: {STRING}
|
||||
STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Allow adding parts to a station without directly touching the existing parts. Needs Ctrl+Click while placing the new parts
|
||||
@@ -1260,7 +1260,7 @@ STR_CONFIG_SETTING_TREE_PLACER_NONE :None
|
||||
STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Original
|
||||
STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Improved
|
||||
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Heightmap rotation: {STRING}
|
||||
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Anti-clockwise
|
||||
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Counter-clockwise
|
||||
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Clockwise
|
||||
STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :The height level a flat scenario map gets: {STRING}
|
||||
STR_CONFIG_SETTING_ENABLE_FREEFORM_EDGES :Enable terraforming the tiles at the map borders: {STRING}
|
||||
@@ -1308,7 +1308,7 @@ STR_CONFIG_SETTING_OSK_ACTIVATION_SINGLE_CLICK :Single click (i
|
||||
|
||||
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU :Right-click emulation: {STRING}
|
||||
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_HELPTEXT :Select the method to emulate right mouse-button clicks
|
||||
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command-click
|
||||
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Click
|
||||
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Click
|
||||
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Off
|
||||
|
||||
@@ -1323,8 +1323,8 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31
|
||||
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Default palette to assume for NewGRFs not specifying a palette: {STRING}
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Default palette to use for NewGRFs that do not specify which one they need
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS palette
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Windows palette
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Default (D) palette
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Legacy (W) palette
|
||||
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatically pause when starting a new game: {STRING}
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :When enabled, the game will automatically pause when starting a new game, allowing for closer study of the map
|
||||
@@ -1357,11 +1357,11 @@ STR_CONFIG_SETTING_EXPENSES_LAYOUT :Group expenses
|
||||
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Define the layout for the company expenses window
|
||||
|
||||
STR_CONFIG_SETTING_SOUND_TICKER :News ticker: {STRING}
|
||||
STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Play sound for summarised news messages
|
||||
STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Play sound for summarized news messages
|
||||
STR_CONFIG_SETTING_SOUND_NEWS :Newspaper: {STRING}
|
||||
STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Play sound upon display of newspapers
|
||||
STR_CONFIG_SETTING_SOUND_NEW_YEAR :End of year: {STRING}
|
||||
STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Play sound at the end of a year summarising the company's performance during the year compared to the previous year
|
||||
STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Play sound at the end of a year summarizing the company's performance during the year compared to the previous year
|
||||
STR_CONFIG_SETTING_SOUND_CONFIRM :Construction: {STRING}
|
||||
STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Play sound on successful constructions or other actions
|
||||
STR_CONFIG_SETTING_SOUND_CLICK :Button clicks: {STRING}
|
||||
@@ -1460,7 +1460,7 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Full
|
||||
|
||||
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Colored news appears in: {STRING}
|
||||
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Year that the newspaper announcements get printed in color. Before this year, it uses monochrome black/white
|
||||
STR_CONFIG_SETTING_STARTING_YEAR :Starting date: {STRING}
|
||||
STR_CONFIG_SETTING_STARTING_YEAR :Starting year: {STRING}
|
||||
STR_CONFIG_SETTING_SMOOTH_ECONOMY :Enable smooth economy (more, smaller changes): {STRING}
|
||||
STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :When enabled, industry production changes more often, and in smaller steps. This setting has usually no effect, if industry types are provided by a NewGRF
|
||||
STR_CONFIG_SETTING_ALLOW_SHARES :Allow buying shares from other companies: {STRING}
|
||||
@@ -1665,8 +1665,8 @@ STR_OSNAME_SUNOS :SunOS
|
||||
|
||||
# Abandon game
|
||||
STR_ABANDON_GAME_CAPTION :{WHITE}Abandon Game
|
||||
STR_ABANDON_GAME_QUERY :{YELLOW}Are you sure you want to abandon this game ?
|
||||
STR_ABANDON_SCENARIO_QUERY :{YELLOW}Are you sure you want to abandon this scenario ?
|
||||
STR_ABANDON_GAME_QUERY :{YELLOW}Are you sure you want to abandon this game?
|
||||
STR_ABANDON_SCENARIO_QUERY :{YELLOW}Are you sure you want to abandon this scenario?
|
||||
|
||||
# Cheat window
|
||||
STR_CHEATS :{WHITE}Cheats
|
||||
@@ -1829,24 +1829,24 @@ STR_NETWORK_SERVER_LIST_FIND_SERVER_TOOLTIP :{BLACK}Search n
|
||||
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Add server
|
||||
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Adds a server to the list which will always be checked for running games
|
||||
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Start server
|
||||
STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Start an own server
|
||||
STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Start your own server
|
||||
|
||||
STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Enter your name
|
||||
STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Enter the IP address of the server
|
||||
|
||||
# Start new multiplayer server
|
||||
STR_NETWORK_START_SERVER_CAPTION :{WHITE}Start new game
|
||||
STR_NETWORK_START_SERVER_CAPTION :{WHITE}Start new multiplayer game
|
||||
|
||||
STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Game name:
|
||||
STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}The game name will be displayed to other players in the multiplayer game selection menu
|
||||
STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Set password
|
||||
STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protect your game with a password if you don't want other people to join it
|
||||
STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protect your game with a password if you don't want it to be publicly accessible
|
||||
|
||||
STR_NETWORK_START_SERVER_LAN_INTERNET :LAN / Internet
|
||||
STR_NETWORK_START_SERVER_INTERNET_ADVERTISE :Internet (advertize)
|
||||
STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} client{P "" s}
|
||||
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Max clients:
|
||||
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Choose a maximum number of clients. Not all slots need to be filled
|
||||
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Choose the maximum number of clients. Not all slots need to be filled
|
||||
STR_NETWORK_START_SERVER_COMPANIES_SELECT :{BLACK}{NUM} compan{P y ies}
|
||||
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES :{BLACK}Max companies:
|
||||
STR_NETWORK_START_SERVER_NUMBER_OF_COMPANIES_TOOLTIP :{BLACK}Limit the server to a certain number of companies
|
||||
@@ -1902,7 +1902,7 @@ STR_NETWORK_LANG_LATVIAN :Latvian
|
||||
STR_NETWORK_GAME_LOBBY_CAPTION :{WHITE}Multiplayer game lobby
|
||||
|
||||
STR_NETWORK_GAME_LOBBY_PREPARE_TO_JOIN :{BLACK}Preparing to join: {ORANGE}{STRING}
|
||||
STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}A list of all companies currently in this game. You can either join one or start a
|
||||
STR_NETWORK_GAME_LOBBY_COMPANY_LIST_TOOLTIP :{BLACK}A list of all companies currently in this game. You can either join one or start a new one if there is a free company slot
|
||||
|
||||
STR_NETWORK_GAME_LOBBY_COMPANY_INFO :{SILVER}COMPANY INFO
|
||||
STR_NETWORK_GAME_LOBBY_COMPANY_NAME :{SILVER}Company name: {WHITE}{STRING}
|
||||
@@ -1917,11 +1917,11 @@ STR_NETWORK_GAME_LOBBY_STATIONS :{SILVER}Station
|
||||
STR_NETWORK_GAME_LOBBY_PLAYERS :{SILVER}Players: {WHITE}{STRING}
|
||||
|
||||
STR_NETWORK_GAME_LOBBY_NEW_COMPANY :{BLACK}New company
|
||||
STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Open a new company
|
||||
STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Watch game
|
||||
STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Create a new company
|
||||
STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Spectate game
|
||||
STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Watch the game as a spectator
|
||||
STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Join company
|
||||
STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Help managing this company
|
||||
STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Help manage this company
|
||||
|
||||
# Network connecting window
|
||||
STR_NETWORK_CONNECTING_CAPTION :{WHITE}Connecting...
|
||||
@@ -1937,7 +1937,7 @@ STR_NETWORK_CONNECTING_6 :{BLACK}(6/6) Re
|
||||
STR_NETWORK_CONNECTING_SPECIAL_1 :{BLACK}Fetching game info...
|
||||
STR_NETWORK_CONNECTING_SPECIAL_2 :{BLACK}Fetching company info...
|
||||
############ End of leave-in-this-order
|
||||
STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} client{P "" s} in front of us
|
||||
STR_NETWORK_CONNECTING_WAITING :{BLACK}{NUM} client{P "" s} in front of you
|
||||
STR_NETWORK_CONNECTING_DOWNLOADING_1 :{BLACK}{BYTES} downloaded so far
|
||||
STR_NETWORK_CONNECTING_DOWNLOADING_2 :{BLACK}{BYTES} / {BYTES} downloaded so far
|
||||
|
||||
@@ -1947,7 +1947,7 @@ STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Server i
|
||||
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Company is protected. Enter password
|
||||
|
||||
# Network company list added strings
|
||||
STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Client List
|
||||
STR_NETWORK_COMPANY_LIST_CLIENT_LIST :{WHITE}Client list
|
||||
STR_NETWORK_COMPANY_LIST_SPECTATE :{WHITE}Spectate
|
||||
STR_NETWORK_COMPANY_LIST_NEW_COMPANY :{WHITE}New company
|
||||
|
||||
@@ -2003,7 +2003,7 @@ STR_NETWORK_ERROR_SAVEGAMEERROR :{WHITE}Could no
|
||||
STR_NETWORK_ERROR_SERVER_START :{WHITE}Could not start the server
|
||||
STR_NETWORK_ERROR_CLIENT_START :{WHITE}Could not connect
|
||||
STR_NETWORK_ERROR_TIMEOUT :{WHITE}Connection #{NUM} timed out
|
||||
STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}We made a protocol-error and our connection is closed
|
||||
STR_NETWORK_ERROR_SERVER_ERROR :{WHITE}A protocol error was detected and the connection was closed
|
||||
STR_NETWORK_ERROR_WRONG_REVISION :{WHITE}The revision of this client does not match the server's revision
|
||||
STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Wrong password
|
||||
STR_NETWORK_ERROR_SERVER_FULL :{WHITE}The server is full
|
||||
@@ -2550,11 +2550,11 @@ STR_LAI_BRIDGE_DESCRIPTION_AQUEDUCT :Aqueduct
|
||||
|
||||
STR_LAI_OBJECT_DESCRIPTION_TRANSMITTER :Transmitter
|
||||
STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Lighthouse
|
||||
STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Company Headquarters
|
||||
STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Company headquarters
|
||||
STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Company-owned land
|
||||
|
||||
# About OpenTTD window
|
||||
STR_ABOUT_OPENTTD :{WHITE}OpenTTD
|
||||
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-2013 The OpenTTD team
|
||||
@@ -2584,7 +2584,7 @@ STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF:
|
||||
STR_SAVELOAD_OSKTITLE :{BLACK}Enter a name for the savegame
|
||||
|
||||
# World generation
|
||||
STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}World generation
|
||||
STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}World Generation
|
||||
STR_MAPGEN_MAPSIZE :{BLACK}Map size:
|
||||
STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Select the size of the map in tiles. The number of available tiles will be slightly smaller
|
||||
STR_MAPGEN_BY :{BLACK}*
|
||||
@@ -2594,7 +2594,7 @@ STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}No. of i
|
||||
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Snow line height:
|
||||
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Move the snow line height up one
|
||||
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Move the snow line height down one
|
||||
STR_MAPGEN_RANDOM_SEED :{BLACK}Random Seed:
|
||||
STR_MAPGEN_RANDOM_SEED :{BLACK}Random seed:
|
||||
STR_MAPGEN_RANDOM_SEED_HELP :{BLACK}Click to enter a random seed
|
||||
STR_MAPGEN_RANDOM :{BLACK}Randomize
|
||||
STR_MAPGEN_RANDOM_HELP :{BLACK}Change the random seed used for Terrain Generation
|
||||
@@ -2629,7 +2629,7 @@ STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Change s
|
||||
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Change starting year
|
||||
|
||||
# SE Map generation
|
||||
STR_SE_MAPGEN_CAPTION :{WHITE}Scenario type
|
||||
STR_SE_MAPGEN_CAPTION :{WHITE}Scenario Type
|
||||
STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Flat land
|
||||
STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Generate a flat land
|
||||
STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Random land
|
||||
@@ -2804,6 +2804,9 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} of <inv
|
||||
STR_NEWGRF_INVALID_ENGINE :<invalid vehicle model>
|
||||
STR_NEWGRF_INVALID_INDUSTRYTYPE :<invalid industry>
|
||||
|
||||
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
|
||||
STR_INVALID_VEHICLE :<invalid vehicle>
|
||||
|
||||
# NewGRF scanning window
|
||||
STR_NEWGRF_SCAN_CAPTION :{WHITE}Scanning NewGRFs
|
||||
STR_NEWGRF_SCAN_MESSAGE :{BLACK}Scanning NewGRFs. Depending on the amount this can take a while...
|
||||
@@ -3069,7 +3072,7 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Sell 25%
|
||||
STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Company Name
|
||||
STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :President's Name
|
||||
|
||||
STR_BUY_COMPANY_MESSAGE :{WHITE}We are looking for a transport company to take-over our company{}{}Do you want to purchase {COMPANY} for {CURRENCY_LONG}?
|
||||
STR_BUY_COMPANY_MESSAGE :{WHITE}We are looking for a transport company to take-over our company.{}{}Do you want to purchase {COMPANY} for {CURRENCY_LONG}?
|
||||
|
||||
# Company infrastructure window
|
||||
STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastructure of {COMPANY}
|
||||
@@ -3147,7 +3150,7 @@ STR_VEHICLE_LIST_SEND_SHIP_TO_DEPOT :Send to Depot
|
||||
STR_VEHICLE_LIST_SEND_AIRCRAFT_TO_HANGAR :Send to Hangar
|
||||
|
||||
STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP :{BLACK}Click to stop all vehicles in the list
|
||||
STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Click to start all listed vehicles
|
||||
STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP :{BLACK}Click to start all the vehicles in the list
|
||||
|
||||
STR_VEHICLE_LIST_SHARED_ORDERS_LIST_CAPTION :{WHITE}Shared orders of {COMMA} Vehicle{P "" s}
|
||||
|
||||
@@ -3179,7 +3182,7 @@ STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :New Electric Ra
|
||||
STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :New Monorail Vehicles
|
||||
STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :New Maglev Vehicles
|
||||
|
||||
STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Rail Vehicles
|
||||
STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :New Rail Vehicles
|
||||
STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :New Road Vehicles
|
||||
STR_BUY_VEHICLE_SHIP_CAPTION :New Ships
|
||||
STR_BUY_VEHICLE_AIRCRAFT_CAPTION :New Aircraft
|
||||
@@ -3330,7 +3333,7 @@ STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}Cost: {C
|
||||
# Autoreplace window
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Replace {STRING} - {STRING}
|
||||
STR_REPLACE_VEHICLE_TRAIN :Train
|
||||
STR_REPLACE_VEHICLE_ROAD_VEHICLE :Road vehicle
|
||||
STR_REPLACE_VEHICLE_ROAD_VEHICLE :Road Vehicle
|
||||
STR_REPLACE_VEHICLE_SHIP :Ship
|
||||
STR_REPLACE_VEHICLE_AIRCRAFT :Aircraft
|
||||
|
||||
@@ -3370,10 +3373,10 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Center m
|
||||
STR_VEHICLE_VIEW_SHIP_LOCATION_TOOLTIP :{BLACK}Center main view on ship's location. Ctrl+Click will follow ship in main view
|
||||
STR_VEHICLE_VIEW_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Center main view on aircraft's location. Ctrl+Click will follow aircraft in main view
|
||||
|
||||
STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send train to depot
|
||||
STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send vehicle to depot
|
||||
STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send ship to depot
|
||||
STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send aircraft to hangar
|
||||
STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send train to depot. Ctrl+Click will only service
|
||||
STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send vehicle to depot. Ctrl+Click will only service
|
||||
STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send ship to depot. Ctrl+Click will only service
|
||||
STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}Send aircraft to hangar. Ctrl+Click will only service
|
||||
|
||||
STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}This will buy a copy of the train including all cars. Ctrl+Click will share the orders. Shift+Click shows estimated cost without purchase
|
||||
STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}This will buy a copy of the road vehicle. Ctrl+Click will share the orders. Shift+Click shows estimated cost without purchase
|
||||
@@ -3477,7 +3480,7 @@ STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}Name air
|
||||
STR_VEHICLE_DETAILS_TRAIN_ENGINE_BUILT_AND_VALUE :{LTBLUE}{ENGINE}{BLACK} Built: {LTBLUE}{NUM}{BLACK} Value: {LTBLUE}{CURRENCY_LONG}
|
||||
STR_VEHICLE_DETAILS_TRAIN_WAGON_VALUE :{LTBLUE}{ENGINE}{BLACK} Value: {LTBLUE}{CURRENCY_LONG}
|
||||
|
||||
STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Total cargo (capacity) of this train:
|
||||
STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_TEXT :{BLACK}Total cargo capacity of this train:
|
||||
STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT})
|
||||
STR_VEHICLE_DETAILS_TRAIN_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO_LONG} ({CARGO_SHORT}) (x{NUM})
|
||||
|
||||
@@ -3920,8 +3923,8 @@ STR_ERROR_CAN_T_RAISE_LAND_HERE :{WHITE}Can't ra
|
||||
STR_ERROR_CAN_T_LOWER_LAND_HERE :{WHITE}Can't lower land here...
|
||||
STR_ERROR_CAN_T_LEVEL_LAND_HERE :{WHITE}Can't level land here...
|
||||
STR_ERROR_EXCAVATION_WOULD_DAMAGE :{WHITE}Excavation would damage tunnel
|
||||
STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}Already at sea-level
|
||||
STR_ERROR_TOO_HIGH :{WHITE}Too high
|
||||
STR_ERROR_ALREADY_AT_SEA_LEVEL :{WHITE}... already at sea level
|
||||
STR_ERROR_TOO_HIGH :{WHITE}... too high
|
||||
STR_ERROR_ALREADY_LEVELLED :{WHITE}... already flat
|
||||
|
||||
# Company related errors
|
||||
@@ -3943,7 +3946,7 @@ STR_ERROR_PROTECTED :{WHITE}This com
|
||||
# Town related errors
|
||||
STR_ERROR_CAN_T_GENERATE_TOWN :{WHITE}Can't build any towns
|
||||
STR_ERROR_CAN_T_RENAME_TOWN :{WHITE}Can't rename town...
|
||||
STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Can't build town here...
|
||||
STR_ERROR_CAN_T_FOUND_TOWN_HERE :{WHITE}Can't found town here...
|
||||
STR_ERROR_CAN_T_EXPAND_TOWN :{WHITE}Can't expand town...
|
||||
STR_ERROR_TOO_CLOSE_TO_EDGE_OF_MAP_SUB :{WHITE}... too close to edge of map
|
||||
STR_ERROR_TOO_CLOSE_TO_ANOTHER_TOWN :{WHITE}... too close to another town
|
||||
@@ -3960,7 +3963,7 @@ STR_ERROR_CAN_T_GENERATE_INDUSTRIES :{WHITE}Can't ge
|
||||
STR_ERROR_CAN_T_BUILD_HERE :{WHITE}Can't build {STRING} here...
|
||||
STR_ERROR_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Can't construct this industry type here...
|
||||
STR_ERROR_INDUSTRY_TOO_CLOSE :{WHITE}... too close to another industry
|
||||
STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... must build town first
|
||||
STR_ERROR_MUST_FOUND_TOWN_FIRST :{WHITE}... must found town first
|
||||
STR_ERROR_ONLY_ONE_ALLOWED_PER_TOWN :{WHITE}... only one allowed per town
|
||||
STR_ERROR_CAN_ONLY_BE_BUILT_IN_TOWNS_WITH_POPULATION_OF_1200 :{WHITE}... can only be built in towns with a population of at least 1200
|
||||
STR_ERROR_CAN_ONLY_BE_BUILT_IN_RAINFOREST :{WHITE}... can only be built in rainforest areas
|
||||
@@ -4106,7 +4109,7 @@ STR_ERROR_CAN_T_PLANT_TREE_HERE :{WHITE}Can't pl
|
||||
# Bridge related errors
|
||||
STR_ERROR_CAN_T_BUILD_BRIDGE_HERE :{WHITE}Can't build bridge here...
|
||||
STR_ERROR_MUST_DEMOLISH_BRIDGE_FIRST :{WHITE}Must demolish bridge first
|
||||
STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Cannot start and end on same position
|
||||
STR_ERROR_CAN_T_START_AND_END_ON :{WHITE}Can't start and end in the same spot
|
||||
STR_ERROR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Bridge heads not at the same level
|
||||
STR_ERROR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Bridge is too low for the terrain
|
||||
STR_ERROR_START_AND_END_MUST_BE_IN :{WHITE}Start and end must be in line
|
||||
@@ -4161,7 +4164,7 @@ STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Can't st
|
||||
STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Can't stop/start aircraft...
|
||||
|
||||
STR_ERROR_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Can't send train to depot...
|
||||
STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Can't send vehicle to depot...
|
||||
STR_ERROR_CAN_T_SEND_ROAD_VEHICLE_TO_DEPOT :{WHITE}Can't send road vehicle to depot...
|
||||
STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Can't send ship to depot...
|
||||
STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}Can't send aircraft to hangar...
|
||||
|
||||
@@ -4190,6 +4193,11 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Can't ch
|
||||
|
||||
STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vehicle is destroyed
|
||||
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}No vehicles will be available at all
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Change your NewGRF configuration
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}No vehicles are available yet
|
||||
STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Start a new game after {DATE_SHORT} or use a NewGRF that provides early vehicles
|
||||
|
||||
# Specific vehicle errors
|
||||
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Can't make train pass signal at danger...
|
||||
STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Can't reverse direction of train...
|
||||
@@ -4364,7 +4372,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Diesel)
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Steam)
|
||||
@@ -4573,7 +4581,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug Pa
|
||||
STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake Passenger Ferry
|
||||
STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate Cargo Ship
|
||||
STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell Cargo Ship
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Mightymover Cargo Ship
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover Cargo Ship
|
||||
STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut Cargo Ship
|
||||
STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52
|
||||
STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count
|
||||
@@ -4629,8 +4637,8 @@ STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Buoy #{C
|
||||
STR_FORMAT_COMPANY_NUM :(Company {COMMA})
|
||||
STR_FORMAT_GROUP_NAME :Group {COMMA}
|
||||
STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING}
|
||||
STR_FORMAT_WAYPOINT_NAME :Waypoint {TOWN}
|
||||
STR_FORMAT_WAYPOINT_NAME_SERIAL :Waypoint {TOWN} #{COMMA}
|
||||
STR_FORMAT_WAYPOINT_NAME :{TOWN} Waypoint
|
||||
STR_FORMAT_WAYPOINT_NAME_SERIAL :{TOWN} Waypoint #{COMMA}
|
||||
|
||||
STR_FORMAT_DEPOT_NAME_TRAIN :{TOWN} Train Depot
|
||||
STR_FORMAT_DEPOT_NAME_TRAIN_SERIAL :{TOWN} Train Depot #{COMMA}
|
||||
|
@@ -1193,8 +1193,6 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :mallonga (31-12
|
||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31)
|
||||
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Norma paletro supozi por NewGRFs ne specifanta paletron: {STRING}
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :DOS paletro
|
||||
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Vindoza paletro
|
||||
|
||||
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Aŭtomate paŭzu startante novan ludon: {STRING}
|
||||
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Permesu dum paŭza: {STRING}
|
||||
@@ -2455,6 +2453,8 @@ STR_NEWGRF_INVALID_CARGO_QUANTITY :{COMMA} de <mal
|
||||
STR_NEWGRF_INVALID_ENGINE :<malvalida modelo de veturilo>
|
||||
STR_NEWGRF_INVALID_INDUSTRYTYPE :<malvalida industrio>
|
||||
|
||||
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
|
||||
|
||||
# NewGRF scanning window
|
||||
STR_NEWGRF_SCAN_CAPTION :{WHITE}Trovas NewGRF-oj
|
||||
STR_NEWGRF_SCAN_MESSAGE :{BLACK}Trovas NewGRF-oj. Dependa de la sumo ĝi povas esti longetempe...
|
||||
@@ -3898,7 +3898,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MJS_250_DIESEL :MJS 250 (Dizelo)
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_CHOO_CHOO :Ploddyphut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_CHOO_CHOO :Powernaut Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :Mightymover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_MIGHTYMOVER_CHOO_CHOO :MightyMover Choo-Choo
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_PLODDYPHUT_DIESEL :Ploddyphut Diesel
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_POWERNAUT_DIESEL :Powernaut Diesel
|
||||
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_WILLS_2_8_0_STEAM :Wills 2-8-0 (Vaporo)
|
||||
@@ -4107,7 +4107,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Pasaĝerŝipo "
|
||||
STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Pasaĝerŝipo "Shivershake"
|
||||
STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Ŝarĝŝipo "Yate"
|
||||
STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Ŝarĝŝipo "Bakewell"
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Ŝarĝŝipo "Mightymover"
|
||||
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Ŝarĝŝipo "MightyMover"
|
||||
STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Ŝarĝŝipo "Powernaut"
|
||||
STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52
|
||||
STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count
|
||||
|
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user