mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-08-14 18:19:11 +00:00
Compare commits
177 Commits
1.3.0-beta
...
1.3.1
Author | SHA1 | Date | |
---|---|---|---|
|
63e4ec5c5d | ||
|
3ac18d20c9 | ||
|
6289bb92af | ||
|
c32de24438 | ||
|
011de43698 | ||
|
9cb01a519b | ||
|
b604bbfb3d | ||
|
37ed615df1 | ||
|
a40ad243ca | ||
|
962dda2b8b | ||
|
7739f1951d | ||
|
17d90107a3 | ||
|
7daff778f9 | ||
|
283ab728f2 | ||
|
6bb922953d | ||
|
7e0c0b633d | ||
|
585f0ef91c | ||
|
0e692735c4 | ||
|
5df60bf2a6 | ||
|
42e569e0d1 | ||
|
278cebf202 | ||
|
51f4d6d357 | ||
|
b0a9f0e638 | ||
|
eb548884b8 | ||
|
b69d02ef4f | ||
|
bb4a82c8e1 | ||
|
8ad76d2f8d | ||
|
e572eecc73 | ||
|
f393cecbf7 | ||
|
5bc674b48d | ||
|
a3b3db664e | ||
|
ced17303c2 | ||
|
3d7860e0a5 | ||
|
ef8d491d8f | ||
|
369a6f9d1b | ||
|
c77cd1f409 | ||
|
328ed1cf94 | ||
|
afcb4a25b2 | ||
|
97decad061 | ||
|
b9b2b019c9 | ||
|
37b03c06d6 | ||
|
d8c6a6fb59 | ||
|
affd456995 | ||
|
b1016f66ba | ||
|
e27582d104 | ||
|
ae9498da64 | ||
|
3e02890b73 | ||
|
4e61c1770d | ||
|
bb225ae39e | ||
|
b9b34bc898 | ||
|
078fc80362 | ||
|
d5927464b6 | ||
|
85c1521df8 | ||
|
05203587b5 | ||
5bffc704f9 | |||
3b4f4fe0b6 | |||
|
00530f4ccf | ||
|
6444dc3f53 | ||
|
124f0fc7a3 | ||
|
495b7fa1eb | ||
|
99a08e1e8c | ||
|
26adb854e0 | ||
|
191cfd077f | ||
|
fc5f25a823 | ||
|
eb538da228 | ||
|
968b41fa3f | ||
|
f790d70cd6 | ||
|
c7168f09c3 | ||
|
e65a710986 | ||
|
6be79c424d | ||
|
a6ae4ea8a2 | ||
|
2e20291a3d | ||
|
4a9e710fa7 | ||
|
c3832ffb7f | ||
|
6f147013ad | ||
|
9a079b74e2 | ||
|
2ef3b24046 | ||
|
6f80f4ac29 | ||
68420aa92e | |||
|
df3a9027d2 | ||
|
24fd67f9d6 | ||
|
4a9e5aa0f2 | ||
1b3f9e1bb9 | |||
|
cd5bd698a9 | ||
|
e9c44aaeb3 | ||
|
c1dcc4b0da | ||
|
41b9a1b990 | ||
|
b3632e3e38 | ||
|
4ae2649210 | ||
13e8656804 | |||
|
f563250c0b | ||
|
8fa3da44c7 | ||
eec1a0aa11 | |||
|
f9e531d69c | ||
|
4c6ea864e5 | ||
bef25bbdab | |||
c18446951d | |||
|
7e8efa04fe | ||
|
882f0bb3e5 | ||
|
a00320c61d | ||
|
dafff99b2a | ||
|
f8fd13dea1 | ||
|
f73e43818c | ||
|
9b7c8cf7a7 | ||
|
9823fac63b | ||
|
42883b9543 | ||
|
5fb6b7b9eb | ||
|
487730b0e0 | ||
|
79ae76c30a | ||
506132c051 | |||
|
5398822714 | ||
|
4927a96de8 | ||
|
379cf25e2d | ||
|
3a3162865b | ||
|
914bb708ad | ||
|
5a98df40b9 | ||
|
eda4cfeabe | ||
|
1ec4cf6ff1 | ||
|
fea76bbb78 | ||
|
28f22a46bc | ||
|
07ffc90bf4 | ||
|
5c242c64a3 | ||
fed430b45d | |||
c00a400cc7 | |||
4ebbfc3de4 | |||
b935e01513 | |||
|
ecfe0e1302 | ||
|
89429d5406 | ||
|
c24374f99c | ||
|
89a2ba2a6d | ||
|
fd8f5cff5d | ||
|
8f681a7a10 | ||
|
e35745abf7 | ||
|
812346cad9 | ||
|
f8e0b22974 | ||
|
4f04486e19 | ||
|
ba8d5d662c | ||
|
fbb9aba0ce | ||
|
2e4f470f1a | ||
|
65ff2c1ce6 | ||
|
283256aadd | ||
|
4c7cd6dabb | ||
|
9ec314c6ee | ||
|
534837ace5 | ||
|
eb5149622e | ||
|
c749a02ac4 | ||
|
0dd0bbc071 | ||
|
34b7a60a54 | ||
|
fc52eff554 | ||
|
984b7fad16 | ||
|
f4915ce34f | ||
|
d5d96ba683 | ||
|
76a41cf88d | ||
|
7cd923ac31 | ||
|
f1b6201a73 | ||
|
7626165535 | ||
|
713890b780 | ||
|
3997924f57 | ||
|
945469f993 | ||
|
745d71a632 | ||
606e9d5659 | |||
|
a81404dcf6 | ||
|
01dfcd1cbd | ||
|
872ad0aab3 | ||
|
e7dd182d1d | ||
|
2161747eb7 | ||
|
c4c3d00578 | ||
|
dbe46698ff | ||
|
0efd29b71b | ||
|
9bce12a0ce | ||
|
24e62f39e0 | ||
|
e9afedca14 | ||
|
b48c4c800b | ||
|
799a745099 | ||
|
1e30884201 | ||
1ef4f7712d | |||
|
629efeedb4 |
@@ -26,11 +26,13 @@ endif
|
||||
# An OSX application bundle needs the data files, lang files and openttd executable in a different location.
|
||||
ifdef OSXAPP
|
||||
AI_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/ai
|
||||
GAME_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/game
|
||||
BASESET_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/baseset
|
||||
LANG_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/Resources/lang
|
||||
TTD_DIR = $(BUNDLE_DIR)/$(OSXAPP)/Contents/MacOS
|
||||
else
|
||||
AI_DIR = $(BUNDLE_DIR)/ai
|
||||
GAME_DIR = $(BUNDLE_DIR)/game
|
||||
BASESET_DIR = $(BUNDLE_DIR)/baseset
|
||||
LANG_DIR = $(BUNDLE_DIR)/lang
|
||||
TTD_DIR = $(BUNDLE_DIR)
|
||||
@@ -45,6 +47,7 @@ bundle: all
|
||||
$(Q)mkdir -p "$(BUNDLE_DIR)/scripts"
|
||||
$(Q)mkdir -p "$(TTD_DIR)"
|
||||
$(Q)mkdir -p "$(AI_DIR)"
|
||||
$(Q)mkdir -p "$(GAME_DIR)"
|
||||
$(Q)mkdir -p "$(BASESET_DIR)"
|
||||
$(Q)mkdir -p "$(LANG_DIR)"
|
||||
ifdef OSXAPP
|
||||
@@ -59,6 +62,7 @@ ifeq ($(OS),UNIX)
|
||||
endif
|
||||
$(Q)cp "$(BIN_DIR)/$(TTD)" "$(TTD_DIR)/"
|
||||
$(Q)cp "$(BIN_DIR)/ai/"compat_*.nut "$(AI_DIR)/"
|
||||
$(Q)cp "$(BIN_DIR)/game/"compat_*.nut "$(GAME_DIR)/"
|
||||
$(Q)cp "$(BIN_DIR)/baseset/"*.grf "$(BASESET_DIR)/"
|
||||
$(Q)cp "$(BIN_DIR)/baseset/"*.obg "$(BASESET_DIR)/"
|
||||
$(Q)cp "$(BIN_DIR)/baseset/"*.obs "$(BASESET_DIR)/"
|
||||
|
@@ -20,6 +20,8 @@
|
||||
|
||||
ROOT_DIR = !!ROOT_DIR!!
|
||||
GRF_DIR = $(ROOT_DIR)/media/extra_grf
|
||||
BASESET_DIR = $(ROOT_DIR)/media/baseset
|
||||
LANG_DIR = $(ROOT_DIR)/src/lang
|
||||
BIN_DIR = !!BIN_DIR!!/baseset
|
||||
OBJS_DIR = !!GRF_OBJS_DIR!!
|
||||
OS = !!OS!!
|
||||
@@ -36,6 +38,7 @@ endif
|
||||
|
||||
GRFCODEC := !!GRFCODEC!!
|
||||
NFORENUM := !!NFORENUM!!
|
||||
CC_BUILD := !!CC_BUILD!!
|
||||
MD5SUM := $(shell [ "$(OS)" = "OSX" ] && echo "md5 -r" || echo "md5sum")
|
||||
|
||||
# Some "should not be changed" settings.
|
||||
@@ -44,7 +47,7 @@ PNG_FILES := $(GRF_DIR)/*.png $(GRF_DIR)/rivers/*.png
|
||||
|
||||
# Build the GRF.
|
||||
ifdef GRFCODEC
|
||||
all: $(BIN_DIR)/openttd.grf
|
||||
all: $(BIN_DIR)/openttd.grf $(BIN_DIR)/orig_dos.obg $(BIN_DIR)/orig_dos_de.obg $(BIN_DIR)/orig_win.obg $(BIN_DIR)/orig_dos.obs $(BIN_DIR)/orig_win.obs $(BIN_DIR)/no_sound.obs $(BIN_DIR)/orig_win.obm $(BIN_DIR)/no_music.obm
|
||||
else
|
||||
all:
|
||||
endif
|
||||
@@ -53,20 +56,33 @@ endif
|
||||
$(OBJS_DIR)/sprites:
|
||||
$(Q)-mkdir "$@"
|
||||
|
||||
# Generic
|
||||
$(BIN_DIR)/openttd.grf: $(OBJS_DIR)/openttd.grf
|
||||
$(Q)cp $(OBJS_DIR)/openttd.grf $(BIN_DIR)/openttd.grf
|
||||
$(E) '$(STAGE) Updating base graphics sets'
|
||||
$(Q) for grf in $(BIN_DIR)/orig*.obg; do sed 's/^OPENTTD.GRF = [0-9a-f]*$$/OPENTTD.GRF = '`$(MD5SUM) $(BIN_DIR)/openttd.grf | sed 's@ .*@@'`'/' $$grf > $$grf.tmp && mv $$grf.tmp $$grf; done
|
||||
$(OBJS_DIR)/langfiles.tmp: $(LANG_DIR)/*.txt
|
||||
$(E) '$(STAGE) Collecting baseset translations'
|
||||
$(Q) cat $^ > $@
|
||||
|
||||
# Yeah, we'd like to use -i in the sed, but Mac OS X's sed and GNU sed just can't agree on the usage of -i. In any case either one of them fails.
|
||||
$(OBJS_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites
|
||||
$(BIN_DIR)/%.obg: $(BASESET_DIR)/%.obg $(BIN_DIR)/openttd.grf $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/translations.awk
|
||||
$(E) '$(STAGE) Updating $(notdir $@)'
|
||||
$(Q) sed 's/^OPENTTD.GRF = *[0-9a-f]*$$/OPENTTD.GRF = '`$(MD5SUM) $(BIN_DIR)/openttd.grf | sed 's@ .*@@'`'/' $< > $@.tmp
|
||||
$(Q) awk -v langfiles='$(OBJS_DIR)/langfiles.tmp' -f $(BASESET_DIR)/translations.awk $@.tmp >$@
|
||||
$(Q) rm $@.tmp
|
||||
|
||||
$(BIN_DIR)/%.obs: $(BASESET_DIR)/%.obs $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/translations.awk
|
||||
$(E) '$(STAGE) Updating $(notdir $@)'
|
||||
$(Q) awk -v langfiles='$(OBJS_DIR)/langfiles.tmp' -f $(BASESET_DIR)/translations.awk $< >$@
|
||||
|
||||
$(BIN_DIR)/%.obm: $(BASESET_DIR)/%.obm $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/translations.awk
|
||||
$(E) '$(STAGE) Updating $(notdir $@)'
|
||||
$(Q) awk -v langfiles='$(OBJS_DIR)/langfiles.tmp' -f $(BASESET_DIR)/translations.awk $< >$@
|
||||
|
||||
# Compile extra grf
|
||||
$(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites
|
||||
$(E) '$(STAGE) Assembling openttd.nfo'
|
||||
$(Q)-cp $(PNG_FILES) $(OBJS_DIR)/sprites 2> /dev/null
|
||||
$(Q) gcc -I$(GRF_DIR) -C -E - < "$(GRF_DIR)/openttd.nfo" | sed -e '/^#/d' -e '/^$$/d' > $(OBJS_DIR)/sprites/openttd.nfo
|
||||
$(Q) $(CC_BUILD) -nostdinc -I$(GRF_DIR) -C -E - < "$(GRF_DIR)/openttd.nfo" | sed -e '/^#/d' -e '/^$$/d' > $(OBJS_DIR)/sprites/openttd.nfo
|
||||
$(Q) $(NFORENUM) -s $(OBJS_DIR)/sprites/openttd.nfo
|
||||
$(E) '$(STAGE) Compiling openttd.grf'
|
||||
$(Q) $(GRFCODEC) -n -s -e -p1 $(OBJS_DIR)/openttd.grf
|
||||
$(Q)cp $(OBJS_DIR)/openttd.grf $(BIN_DIR)/openttd.grf
|
||||
|
||||
# Clean up temporary files.
|
||||
clean:
|
||||
|
@@ -154,7 +154,7 @@ mrproper:
|
||||
distclean: mrproper
|
||||
|
||||
maintainer-clean: distclean
|
||||
$(Q)rm -f $(BIN_DIR)/baseset/openttd.grf
|
||||
$(Q)rm -f $(BIN_DIR)/baseset/openttd.grf $(BIN_DIR)/baseset/*.obg $(BIN_DIR)/baseset/*.obs $(BIN_DIR)/baseset/*.obm
|
||||
|
||||
depend:
|
||||
@for dir in $(SRC_DIRS); do \
|
||||
|
@@ -276,7 +276,7 @@ endian_target.h: $(ENDIAN_CHECK) $(CONFIG_CACHE_ENDIAN)
|
||||
|
||||
$(ENDIAN_CHECK): $(SRC_DIR)/endian_check.cpp
|
||||
$(E) '$(STAGE) Compiling and Linking $@'
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) $< -o $@
|
||||
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) $(LDFLAGS_BUILD) $< -o $@
|
||||
|
||||
# Revision files
|
||||
|
||||
|
@@ -5079,7 +5079,7 @@ ERROR: IsEnd() is invalid as Begin() is never called
|
||||
GetPlaneType(): -1
|
||||
Engine 211
|
||||
IsValidEngine(): true
|
||||
GetName(): Yate Cargo ship
|
||||
GetName(): Yate Cargo Ship
|
||||
GetCargoType(): 5
|
||||
CanRefitCargo(): true
|
||||
GetCapacity(): 160
|
||||
|
@@ -10,22 +10,27 @@ fallback = true
|
||||
description = A music pack without actual music.
|
||||
description.af_ZA = 'n Musiek stel sonder enige musiek.
|
||||
description.ar_EG = مجموعة موسيقى بدون موسيقى
|
||||
description.be_BY = "Пусты" набор музычнага афармлення, не змяшчаючы ніякай музыкі.
|
||||
description.bg_BG = Празен музикален пакет.
|
||||
description.ca_ES = Un joc de música sense cap música.
|
||||
description.cs_CZ = Prázná hudební sada.
|
||||
description.da_DA = En musikpakke uden musik.
|
||||
description.cy_GB = Pecyn cerddoriaeth heb unrhyw gerddoriaeth ynddo.
|
||||
description.da_DK = En musikpakke uden musik.
|
||||
description.de_DE = Ein Musikset ohne Musik.
|
||||
description.el_GR = Ένα πάκετο μουσικής χωρίς πραγματική μουσική.
|
||||
description.en_GB = A music pack without actual music.
|
||||
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_ET = Muusikakomplekt ilma igasuguse muusikata.
|
||||
description.et_EE = Muusikakomplekt ilma igasuguse 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.
|
||||
description.hr_HR = Muzički paket bez ikakve muzike.
|
||||
description.hu_HU = Zenei alapcsomag zene nélkül.
|
||||
description.id_ID = Paket musik tanpa berisi musik.
|
||||
description.is_IS = Tónlistarpakki sem er í raun án tónlistar.
|
||||
description.it_IT = Un pacchetto musicale non contenente alcuna musica.
|
||||
description.ko_KR = 실제 음악이 없는 음악 목록입니다.
|
||||
description.nb_NO = En musikkpakke uten noe musikk.
|
||||
description.nl_NL = Een muziekset zonder muziek.
|
||||
description.nn_NO = Ei musikkpakke utan noko musikk.
|
||||
@@ -34,10 +39,11 @@ description.pt_PT = Um conjunto de música vazio.
|
||||
description.ro_RO = Un set de muzică fără muzică inclusă.
|
||||
description.ru_RU = "Пустой" набор музыкального оформления, не содержащий никакой музыки.
|
||||
description.sk_SK = Sada hudby neobsahujúca hudbu.
|
||||
description.sl_SL = Glasbeni paket z vključeno glasbo.
|
||||
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.tr_TR = Müzik içermeyen boş bir müzik paketi.
|
||||
description.vi_VN = Gói âm nhạc này không có nhạc nào.
|
||||
description.zh_TW = 不含任何音樂的音樂集。
|
||||
|
||||
[files]
|
||||
|
@@ -10,22 +10,27 @@ fallback = true
|
||||
description = A sound pack without any sounds.
|
||||
description.af_ZA = 'n Klank stel sonder enige klanke.
|
||||
description.ar_EG = مجموعة صوت بدوت اصوات مضافة
|
||||
description.be_BY = "Пусты" набор гукавога афармленьня, не змяшчаючы ніякіх гукаў.
|
||||
description.bg_BG = Празен звуков пакет.
|
||||
description.ca_ES = Un joc de sons sense cap so.
|
||||
description.cs_CZ = Prázdná sada zvuků.
|
||||
description.da_DA = En lydpakke uden lyde.
|
||||
description.cy_GB = Pecyn sain heb unrhyw effeithiau sain ynddo.
|
||||
description.da_DK = En lydpakke uden lyde.
|
||||
description.de_DE = Basissounds ohne Sound.
|
||||
description.el_GR = Ένα πάκετο ήχων χώρις ήχους.
|
||||
description.en_GB = A sound pack without any sounds.
|
||||
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_ET = Ilma häälteta helipakk.
|
||||
description.fi_FI = Äänipaketti ilman ääniä.
|
||||
description.et_EE = Ilma häälteta helipakk.
|
||||
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.
|
||||
description.hr_HR = Zvučni paket bez ikakvih zvukova.
|
||||
description.hu_HU = Hang alapcsomag hangok nélkül.
|
||||
description.id_ID = Paket efek suara tanpa berisi suara.
|
||||
description.is_IS = Hljóðpakki án hljóðs.
|
||||
description.it_IT = Un pacchetto sonoro non contenente alcun suono.
|
||||
description.ko_KR = 아무런 효과음도 없는 효과음 팩입니다.
|
||||
description.nb_NO = En lydpakke uten noen lyder.
|
||||
description.nl_NL = Een geluidset zonder geluid.
|
||||
description.nn_NO = Ei lydpakke utan nokon lydar.
|
||||
@@ -34,10 +39,11 @@ description.pt_PT = Um conjunto de sons vazio.
|
||||
description.ro_RO = Un set de sunete fără nici un sunet inclus.
|
||||
description.ru_RU = "Пустой" набор звукового оформления, не содержащий никаких звуков.
|
||||
description.sk_SK = Zvuková sada neobsahujúca zvuky.
|
||||
description.sl_SL = Zvočni paket brez zvoka.
|
||||
description.sl_SI = Zvočni paket brez zvoka.
|
||||
description.sr_RS = Prazan skup zvukova.
|
||||
description.sv_SE = Ett ljudpaket utan några ljud.
|
||||
description.tr_TR = Ses içermeyen boş bir ses kümesi.
|
||||
description.vi_VN = Gói âm thanh này không có âm thanh nào.
|
||||
description.zh_TW = 不含任何音效的音效集。
|
||||
|
||||
[files]
|
||||
|
Binary file not shown.
Binary file not shown.
@@ -11,22 +11,28 @@ palette = DOS
|
||||
description = Original Transport Tycoon Deluxe DOS edition graphics.
|
||||
description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS uitgawe grafieke.
|
||||
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الرسومية نسخة الدوس
|
||||
description.be_BY = Арыгінальная графіка з Transport Tycoon Deluxe для DOS.
|
||||
description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за DOS.
|
||||
description.ca_ES = Gràfics originals de Transport Tycoon Deluxe per a DOS.
|
||||
description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (verze pro DOS).
|
||||
description.da_DA = Originalgrafik fra Transport Tycoon Deluxe DOS-version.
|
||||
description.cy_GB = Graffeg gwreiddiol fersiwn DOS o Transport Tycoon Deluxe.
|
||||
description.da_DK = Originalgrafik fra Transport Tycoon Deluxe DOS-version.
|
||||
description.de_DE = Original Transport Tycoon Deluxe DOS Basisgrafiken.
|
||||
description.el_GR = Αρχικά γραφικά από το Transport Tycoon Deluxe έκδοση DOS.
|
||||
description.en_GB = Original Transport Tycoon Deluxe DOS edition graphics.
|
||||
description.en_AU = Original Transport Tycoon Deluxe DOS edition graphics.
|
||||
description.en_US = Original Transport Tycoon Deluxe DOS edition graphics.
|
||||
description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión DOS.
|
||||
description.et_ET = Algse Transport Tycoon Deluxe DOSi versiooni graafika.
|
||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxe DOS grafiikat.
|
||||
description.et_EE = Algse Transport Tycoon Deluxe DOSi versiooni graafika.
|
||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen DOS-version grafiikat.
|
||||
description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version DOS).
|
||||
description.gd_GB = Grafaigeachd aig an deasachadh DOS tùsail aig Transport Tycoon Deluxe.
|
||||
description.gl_ES = Graficos da edición orixinal de Transport Tycoon Deluxe para DOS.
|
||||
description.hr_HR = Originalna grafika za Transport Tycoon Deluxe DOS izdanje.
|
||||
description.hu_HU = Az eredeti Transport Tycoon Deluxe DOS verziójának grafikája.
|
||||
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.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에디션의 그래픽입니다.
|
||||
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.
|
||||
@@ -35,10 +41,11 @@ description.pt_PT = Gráficos originais da edição DOS de Transport Tycoon Delu
|
||||
description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru DOS.
|
||||
description.ru_RU = Оригинальная графика из Transport Tycoon Deluxe для DOS.
|
||||
description.sk_SK = Pôvodná grafika Transport Tycoon Deluxe (DOS).
|
||||
description.sl_SL = Originalna grafika Transport Tycoon Deluxe za različico DOS.
|
||||
description.sl_SI = Originalna grafika Transport Tycoon Deluxe za različico DOS.
|
||||
description.sr_RS = Originalni skup grafika Transport Tycoon Deluxe DOS izdanja.
|
||||
description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, DOS-utgåvan.
|
||||
description.tr_TR = Orijinal Transport Tycoon Deluxe DOS sürümü grafikleri.
|
||||
description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên DOS
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版的圖形。
|
||||
|
||||
[files]
|
||||
@@ -55,7 +62,7 @@ TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
||||
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
|
||||
OPENTTD.GRF = 891f2dc7c81346d8fd5fbf4cf42dc5bd
|
||||
OPENTTD.GRF = c683a77e1a43aed7db29ef318b166dd9
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
|
@@ -10,22 +10,27 @@ version = 0
|
||||
description = Original Transport Tycoon Deluxe DOS edition sounds.
|
||||
description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS uitgawe klanke.
|
||||
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الصوتية نسخة الدوس
|
||||
description.be_BY = Арыгінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для DOS.
|
||||
description.bg_BG = Оригинални звуци на Transport Tycoon Deluxe за DOS.
|
||||
description.ca_ES = Sons originals de Transport Tycoon Deluxe per a DOS.
|
||||
description.cs_CZ = Původní sada zvuků Transport Tycoon Deluxe (verze pro DOS).
|
||||
description.da_DA = Originallyd fra Transport Tycoon Deluxe DOS-version.
|
||||
description.cy_GB = Effeithiau sain gwreiddiol fersiwn DOS o Transport Tycoon Deluxe.
|
||||
description.da_DK = Originallyd fra Transport Tycoon Deluxe DOS-version.
|
||||
description.de_DE = Original Transport Tycoon Deluxe DOS Basissounds.
|
||||
description.el_GR = Αρχικοί ήχοι από το Transport Tycoon Deluxe έκδοση DOS.
|
||||
description.en_GB = Original Transport Tycoon Deluxe DOS edition sounds.
|
||||
description.en_AU = Original Transport Tycoon Deluxe DOS edition sounds.
|
||||
description.en_US = Original Transport Tycoon Deluxe DOS edition sounds.
|
||||
description.es_ES = Sonidos originales de Transport Tycoon Deluxe versión DOS.
|
||||
description.et_ET = Algse Transport Tycoon Deluxe DOSi versiooni helid.
|
||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxe DOS äänet.
|
||||
description.et_EE = Algse Transport Tycoon Deluxe DOSi versiooni helid.
|
||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen DOS-version äänet.
|
||||
description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version DOS).
|
||||
description.gd_GB = Fuaimean aig an deasachadh DOS tùsail aig Transport Tycoon Deluxe.
|
||||
description.hr_HR = Originalni zvukovi za Transport Tycoon Deluxe DOS izdanje.
|
||||
description.hu_HU = Az eredeti Transport Tycoon Deluxe DOS verziójának hangjai.
|
||||
description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version DOS).
|
||||
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.ko_KR = 오리지널 트랜스포트 타이쿤 도스 에디션의 효과음입니다.
|
||||
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.
|
||||
@@ -34,10 +39,11 @@ 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.
|
||||
description.sk_SK = Pôvodné zvuky Transport Tycoon Deluxe (DOS).
|
||||
description.sl_SL = Originalni zvoki Transport Tycoon Deluxe različice DOS.
|
||||
description.sl_SI = Originalni zvoki Transport Tycoon Deluxe različice DOS.
|
||||
description.sr_RS = Originalni skup zvukova Transport Tycoon Deluxe DOS izdanja.
|
||||
description.sv_SE = Originalljuden från Transport Tycoon Deluxe, DOS-utgåvan.
|
||||
description.tr_TR = Orijinal Transport Tycoon Deluxe DOS sürümü sesleri.
|
||||
description.vi_VN = Âm thanh gốc từ phiên bản Transport Tycoon Deluxe trên DOS
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版的音效。
|
||||
|
||||
[files]
|
||||
|
@@ -11,22 +11,28 @@ palette = DOS
|
||||
description = Original Transport Tycoon Deluxe DOS (German) edition graphics.
|
||||
description.af_ZA = Oorspronklike Transport Tycoon Deluxe DOS (German) uitgawe grafieke.
|
||||
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الالمانية نسخة الدوس
|
||||
description.be_BY = Арыгінальная графіка з нямецкай версіі Transport Tycoon Deluxe для DOS.
|
||||
description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за DOS (немски) .
|
||||
description.ca_ES = Gràfics originals de Transport Tycoon Deluxe per a DOS (Alemany).
|
||||
description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (německá verze pro DOS).
|
||||
description.da_DA = Originalgrafik fra Transport Tycoon Deluxe DOS (Tysk) version.
|
||||
description.cy_GB = Graffeg gwreiddiol fersiwn DOS (Almaenig) o Transport Tycoon Deluxe.
|
||||
description.da_DK = Originalgrafik fra Transport Tycoon Deluxe DOS (Tysk) version.
|
||||
description.de_DE = Original Transport Tycoon Deluxe DOS (Deutsch) Basisgrafiken.
|
||||
description.el_GR = Αρχικά γραφικά από το Transport Tycoon Deluxe έκδοση DOS (Γερμανικό).
|
||||
description.en_GB = Original Transport Tycoon Deluxe DOS (German) edition graphics.
|
||||
description.en_AU = Original Transport Tycoon Deluxe DOS (German) edition graphics.
|
||||
description.en_US = Original Transport Tycoon Deluxe DOS (German) edition graphics.
|
||||
description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión DOS (Alemán).
|
||||
description.et_ET = Algse Transport Tycoon Deluxe DOSi (Saksa) versiooni graafika.
|
||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxe DOS (Saksalainen) grafiikat.
|
||||
description.et_EE = Algse Transport Tycoon Deluxe DOSi (Saksa) versiooni graafika.
|
||||
description.fi_FI = Alkuperäiset Saksassa julkaistun Transport Tycoon Deluxen DOS-version grafiikat.
|
||||
description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version DOS allemande).
|
||||
description.gd_GB = Grafaigeachd aig an deasachadh DOS (Gearmailteach) tùsail aig Transport Tycoon Deluxe.
|
||||
description.gl_ES = Graficos da edición orixinal (alemá) de Transport Tycoon Deluxe para DOS.
|
||||
description.hr_HR = Originalna grafika za Transport Tycoon Deluxe DOS (Njemački) izdanje.
|
||||
description.hu_HU = Az eredeti Transport Tycoon Deluxe DOS (német) verziójának grafikája.
|
||||
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.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에디션(독일)의 그래픽입니다.
|
||||
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).
|
||||
@@ -35,10 +41,11 @@ description.pt_PT = Gráficos originais da edição DOS (Alemã) de Transport Ty
|
||||
description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru DOS (ediţia germană).
|
||||
description.ru_RU = Оригинальная графика из немецкой версии Transport Tycoon Deluxe для DOS.
|
||||
description.sk_SK = Pôvodná grafika Transport Tycoon Deluxe (DOS) (v jazyku nemčina).
|
||||
description.sl_SL = Originalna grafika Transport Tycoon Deluxe za nemško različico DOS.
|
||||
description.sl_SI = Originalna grafika Transport Tycoon Deluxe za nemško različico DOS.
|
||||
description.sr_RS = Originalni skup grafika nemačkog Transport Tycoon Deluxe DOS izdanja.
|
||||
description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, DOS-utgåvan (tyska).
|
||||
description.tr_TR = Orijinal Transport Tycoon Deluxe DOS (Almanca) sürümü grafikleri.
|
||||
description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên DOS (tiếng Đức)
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版 (德國版) 的圖形。
|
||||
|
||||
[files]
|
||||
@@ -55,7 +62,7 @@ TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
||||
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
|
||||
OPENTTD.GRF = 891f2dc7c81346d8fd5fbf4cf42dc5bd
|
||||
OPENTTD.GRF = c683a77e1a43aed7db29ef318b166dd9
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
|
@@ -11,22 +11,28 @@ palette = Windows
|
||||
description = Original Transport Tycoon Deluxe Windows edition graphics.
|
||||
description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe grafieke.
|
||||
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الرسومية نسخة وندوز
|
||||
description.be_BY = Арыгінальная графіка з Transport Tycoon Deluxe для Windows.
|
||||
description.bg_BG = Оригинални графики на Transport Tycoon Deluxe за Windows.
|
||||
description.ca_ES = Gràfics originals de Transport Tycoon Deluxe per a Windows.
|
||||
description.cs_CZ = Původní sada grafik Transport Tycoon Deluxe (verze pro Windows).
|
||||
description.da_DA = Originalgrafik fra Transport Tycoon Deluxe Windows-version.
|
||||
description.cy_GB = Graffeg gwreiddiol fersiwn Windows o Transport Tycoon Deluxe.
|
||||
description.da_DK = Originalgrafik fra Transport Tycoon Deluxe Windows-version.
|
||||
description.de_DE = Original Transport Tycoon Deluxe Windows Basisgrafiken.
|
||||
description.el_GR = Αρχικά γραφικά από το Transport Tycoon Deluxe έκδοση Windows.
|
||||
description.en_GB = Original Transport Tycoon Deluxe Windows edition graphics.
|
||||
description.en_AU = Original Transport Tycoon Deluxe Windows edition graphics.
|
||||
description.en_US = Original Transport Tycoon Deluxe Windows edition graphics.
|
||||
description.es_ES = Gráficos originales de Transport Tycoon Deluxe versión Windows.
|
||||
description.et_ET = Algse Transport Tycoon Deluxe Windowsi versiooni graafika.
|
||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxe Windows grafiikat.
|
||||
description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni graafika.
|
||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen Windows-version grafiikat.
|
||||
description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version Windows).
|
||||
description.gd_GB = Grafaigeachd aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe.
|
||||
description.gl_ES = Graficos da edición orixinal de Transport Tycoon Deluxe para Windows.
|
||||
description.hr_HR = Originalna grafika za Transport Tycoon Deluxe Windows izdanje.
|
||||
description.hu_HU = Az eredeti Transport Tycoon Deluxe Windows verziójának grafikája.
|
||||
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.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도우 에디션의 그래픽입니다.
|
||||
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.
|
||||
@@ -35,10 +41,11 @@ description.pt_PT = Gráficos originais da edição Windows de Transport Tycoon
|
||||
description.ro_RO = Setul grafic original al Transport Tycoon Deluxe pentru Windows.
|
||||
description.ru_RU = Оригинальная графика из Transport Tycoon Deluxe для Windows.
|
||||
description.sk_SK = Pôvodná grafika Transport Tycoon Deluxe (Windows).
|
||||
description.sl_SL = Originalna grafika Transport Tycoon Deluxe za različico oken(windows).
|
||||
description.sl_SI = Originalna grafika Transport Tycoon Deluxe za različico oken(windows).
|
||||
description.sr_RS = Originalni skup grafika Transport Tycoon Deluxe Windows izdanja.
|
||||
description.sv_SE = Originalgrafiken från Transport Tycoon Deluxe, Windows-utgåvan.
|
||||
description.tr_TR = Orijinal Transport Tycoon Deluxe Windows sürümü grafikleri.
|
||||
description.vi_VN = Đồ họa gốc từ phiên bản Transport Tycoon Deluxe trên Windows
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的圖形。
|
||||
|
||||
[files]
|
||||
@@ -55,7 +62,7 @@ TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
|
||||
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
|
||||
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
|
||||
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
|
||||
OPENTTD.GRF = 891f2dc7c81346d8fd5fbf4cf42dc5bd
|
||||
OPENTTD.GRF = c683a77e1a43aed7db29ef318b166dd9
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
|
@@ -10,34 +10,40 @@ version = 1
|
||||
description = Original Transport Tycoon Deluxe Windows edition music.
|
||||
description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe musiek.
|
||||
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الموسيقية نسخة وندوز
|
||||
description.be_BY = Арыгінальны набор музычнага афармленьня з гульні Transport Tycoon Deluxe для Windows.
|
||||
description.bg_BG = Оригинална музика на Transport Tycoon Deluxe за Windows.
|
||||
description.ca_ES = Música Original de Transport Tycoon Deluxe per a Windows.
|
||||
description.cs_CZ = Původní hudba Transport Tycoon Deluxe (verze pro Windows).
|
||||
description.da_DA = Originalmusik fra Transport Tycoon Deluxe Windows-version.
|
||||
description.cy_GB = Cerddoriaeth gwreiddiol fersion Windows o Transport Tycoon Deluxe.
|
||||
description.da_DK = Originalmusik fra Transport Tycoon Deluxe Windows-version.
|
||||
description.de_DE = Original Transport Tycoon Deluxe Windows Musikset.
|
||||
description.el_GR = Αρχική μουσική από το Transport Tycoon Deluxe έκδοση Windows.
|
||||
description.en_GB = Original Transport Tycoon Deluxe Windows edition music.
|
||||
description.en_AU = Original Transport Tycoon Deluxe Windows edition music.
|
||||
description.en_US = Original Transport Tycoon Deluxe Windows edition music.
|
||||
description.es_ES = Música original de Transport Tycoon Deluxe versión Windows.
|
||||
description.et_ET = Algse Transport Tycoon Deluxe Windowsi versiooni muusika.
|
||||
description.fi_FI = Alkuperäinen Transport Tycoon Deluxe Windows musiikki.
|
||||
description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni muusika.
|
||||
description.fi_FI = Alkuperäinen Transport Tycoon Deluxen Windows-version musiikki.
|
||||
description.fr_FR = Musiques originales de Transport Tycoon Deluxe (version Windows).
|
||||
description.gd_GB = Ceòl aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe.
|
||||
description.hr_HR = Originalna muzika za Transport Tycoon Deluxe Windows izdanje.
|
||||
description.hu_HU = Az eredeti Transport Tycoon Deluxe Windows verziójának zenéje.
|
||||
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.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도우 에디션의 음악입니다.
|
||||
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_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.
|
||||
description.ru_RU = Оригинальный набор музыкального оформления из игры Transport Tycoon Deluxe для Windows.
|
||||
description.sk_SK = Pôvodná hudba z Transport Tycoon Deluxe (Windows).
|
||||
description.sl_SL = Originalna glasba Transport Tycoon Deluxe različice oken(windows).
|
||||
description.sl_SI = Originalna glasba Transport Tycoon Deluxe različice oken(windows).
|
||||
description.sr_RS = Originalni skup muzičkih numera Transport Tycoon Deluxe Windows izdanja.
|
||||
description.sv_SE = Originalmusiken från Transport Tycoon Deluxe, Windows-utgåvan.
|
||||
description.tr_TR = Orijinal Transport Tycoon Deluxe Windows sürümü müzikleri.
|
||||
description.vi_VN = Nhạc gốc từ phiên bản Transport Tycoon Deluxe trên Windows
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的音樂。
|
||||
|
||||
[files]
|
||||
|
@@ -10,22 +10,27 @@ version = 0
|
||||
description = Original Transport Tycoon Deluxe Windows edition sounds.
|
||||
description.af_ZA = Oorspronklike Transport Tycoon Deluxe Windows uitgawe klanke.
|
||||
description.ar_EG = النسخة الاصلية من ترانسبورت تايكون ديلوكس الصوتية نسخة وندوز
|
||||
description.be_BY = Арыгінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для Windows.
|
||||
description.bg_BG = Оригинални звуци на Transport Tycoon Deluxe за Windows.
|
||||
description.ca_ES = Sons originals de Transport Tycoon Deluxe per a Windows.
|
||||
description.cs_CZ = Původní sada zvuků Transport Tycoon Deluxe (verze pro Windows).
|
||||
description.da_DA = Originallyd fra Transport Tycoon Deluxe Windows-version.
|
||||
description.cy_GB = Effeithiau sain gwreiddiol fersiwn Windows o Transport Tycoon Deluxe.
|
||||
description.da_DK = Originallyd fra Transport Tycoon Deluxe Windows-version.
|
||||
description.de_DE = Original Transport Tycoon Deluxe Windows Basissounds.
|
||||
description.el_GR = Αρχικοί ήχοι από το Transport Tycoon Deluxe έκδοση Windows.
|
||||
description.en_GB = Original Transport Tycoon Deluxe Windows edition sounds.
|
||||
description.en_AU = Original Transport Tycoon Deluxe Windows edition sounds.
|
||||
description.en_US = Original Transport Tycoon Deluxe Windows edition sounds.
|
||||
description.es_ES = Sonidos originales de Transport Tycoon Deluxe versión Windows.
|
||||
description.et_ET = Algse Transport Tycoon Deluxe Windowsi versiooni helid.
|
||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxe Windows äänet.
|
||||
description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni helid.
|
||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen Windows-version äänet.
|
||||
description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version Windows).
|
||||
description.gd_GB = Fuaimean aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe.
|
||||
description.hr_HR = Originalni zvukovi za Transport Tycoon Deluxe Windows izdanje.
|
||||
description.hu_HU = Az eredeti Transport Tycoon Deluxe Windows verziójának hangjai.
|
||||
description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version Windows).
|
||||
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.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도우 에디션의 효과음입니다.
|
||||
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.
|
||||
@@ -34,10 +39,11 @@ description.pt_PT = Sons originais da edição Windows de Transport Tycoon Delux
|
||||
description.ro_RO = Setul de sunete original al Transport Tycoon Deluxe pentru Windows.
|
||||
description.ru_RU = Оригинальный набор звукового оформления из игры Transport Tycoon Deluxe для Windows.
|
||||
description.sk_SK = Pôvodné zvuky Transport Tycoon Deluxe (Windows).
|
||||
description.sl_SL = Originalni zvoki Transport Tycoon Deluxe različice oken(windows).
|
||||
description.sl_SI = Originalni zvoki Transport Tycoon Deluxe različice oken(windows).
|
||||
description.sr_RS = Originalni skup zvukova Transport Tycoon Deluxe Windows izdanja.
|
||||
description.sv_SE = Originalljuden från Transport Tycoon Deluxe, Windows-utgåvan.
|
||||
description.tr_TR = Orijinal Transport Tycoon Deluxe Windows sürümü sesleri.
|
||||
description.vi_VN = Âm thanh gốc từ phiên bản Transport Tycoon Deluxe trên Windows
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的音效。
|
||||
|
||||
[files]
|
||||
|
158
changelog.txt
158
changelog.txt
@@ -1,3 +1,127 @@
|
||||
1.3.1 (2013-06-01)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: When overbuilding a reserved track with a non-track station tile, that tile would remain reserved and eventually trigger a crash upon removal [FS#5540] (r25251)
|
||||
|
||||
|
||||
1.3.1-RC1 (2013-05-17)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: Translations of baseset descriptions via language files (r25209, r25205)
|
||||
- Feature: Faroese and Scottish Gaelic translations (r25198, r25176)
|
||||
- Feature: Plural form to be used by Scottish Gaelic (1,11; 2,12; 3..10, 13..19; other) (r25078)
|
||||
- Change: [strgen] Allow any number of colour codes in translations (r25193, r25192, r25191)
|
||||
- Change: [Win32] MSVC 2010 comes with stdint.h (r25128)
|
||||
- Change: Be slightly more lenient with trying to detect a subversion repository in case someone has a sparse tags checkout. In that case the .svn folder misses from the $ROOT_DIR because it is in the $ROOT_DIR/.. (i.e. tags) folder (r25107)
|
||||
- Fix: 'No station' error was given, even when there was a station that way occupied or not yours [FS#5546] (r25243)
|
||||
- Fix: Crash when AI is executing a command as it is bankrupted (removed from the game) [FS#5547] (r25236)
|
||||
- Fix: Give bridges owned by noone (from bankrupt companies) to the first company which replaces the bridge. Everyone could have removed/rebuild the bridge anyway [FS#5541] (r25231, r25227)
|
||||
- Fix: [NewGRF] Revise when vehicle running sound effects 04, 07 and 08 are played; in depot or tunnel, or when crashed or stopped: No sound. Braking: Effect 08 instead of 07 [FS#5538] (r25226)
|
||||
- Fix: [NewGRF] Play vehicle sound effect also for planes (r25225)
|
||||
- Fix: [NewGRF] cur_speed is only valid for the front engine, so make other engines in the consist use the speed of the front [FS#5534] (r25224)
|
||||
- Fix: [NewGRF] Make tick_counters work the same for vehicles (r25223, r25222)
|
||||
- Fix: [NewGRF] IsCompatibleTrainStationTile() is not a symmetric function. Clarify the parameters and fix the cases were they were swapped (r25221)
|
||||
- Fix: Consider map border as water with repsect to river/canal continuation (r25220)
|
||||
- Fix: [Script] Clarify on which tiles IsDesertTile and IsSnowTile work, i.e. the ones without infrastructure or buildings, and introduce GetTerrainType for the cases where IsDesertTile/IsSnowTile do not work [FS#5537] (r25213)
|
||||
- Fix: The level crossing sound is an ambient sound and not a new year sound (r25200)
|
||||
- Fix: Original train and road vehicle acceleration did no longer respect bridge speed limits [FS#5523] (r25167)
|
||||
- Fix: [Win32] Do not statically link to SHGetFolderPath as it may not exist, and improve its emulation [FS#5522] (r25155, r25153)
|
||||
- Fix: [Win32] Do not store invalid paths in the search path list (r25154)
|
||||
- Fix: Remove stray reservation from savegames affected by FS#5510 et al. upon loading [FS#5520] (r25152)
|
||||
- Fix: [Script] XXBase::Chance function did not work for large values (>65535) [FS#5517] (r25148)
|
||||
- Fix: Several typos/inconsistencies in English strings [FS#5496] (r25144, r25143)
|
||||
- Fix: When extra dynamite was disabled, towns would be allowed to clear bridges with trams (r25141)
|
||||
- Fix: Towns are build as OWNER_TOWN, so they also need to be removed as OWNER_TOWN otherwise parts might remain [FS#5519] (r25140)
|
||||
- Fix: Editboxes could become too small when resizing windows (r25121)
|
||||
- Fix: Game script language files did not work, when inside a tar [FS#5509] (r25117, r25114)
|
||||
- Fix: [NewGRF] Acceleration of NewGRF aircraft was too fast, while acceleration of default aircraft was way too slow (r25115)
|
||||
- Fix: Pass $LDFLAGS_BUILD to all endian_check compilations (r25108)
|
||||
|
||||
|
||||
1.3.0 (2013-04-01)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: Station rebuilding could leave reserved tiles which caused crashes later on [FS#5510, FS#5516] (r25132)
|
||||
- Fix: When the count for a scrollbar was 0, the inter distance was subtracted too much causing a scrollbar with a negative size (r25123)
|
||||
|
||||
|
||||
1.3.0-RC3 (2013-03-18)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: Limit aircraft property 0D to 19, since the conversion result to km-ish/h needs to fit into a byte [FS#5492] (r25099)
|
||||
- Fix: Clicking the statusbar crashed, when news were pending but no news were shown yet [FS#5486] (r25093)
|
||||
- Fix: Make editbox character filters also apply to pasted content from clipboard (r25090, r25089)
|
||||
- Fix: Catch exception anonymously, if the exception content is not of interest [FS#5500] (r25081)
|
||||
|
||||
|
||||
1.3.0-RC2 (2013-03-05)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: Make sizes of the station preview list and direction selection identical in the station build window [FS#5472] (r25064)
|
||||
- Fix: When allocation of the sprite cache fails, try to allocate less memory and display an error message later on (r25061)
|
||||
- Fix: Refactor Script Debug GUI to only set widget states in OnInvalidateData [FS#5490] (r25052)
|
||||
- Fix: Do not let gcc include files from the 'standard C' include directories to avoid inclusion of header files at the top of the preprocessed nfo files, which cause NFOrenum/GRFcodec to make invalid assumptions about the NFO version (r25050)
|
||||
- Fix: Minimise gaps feature caused removal to only happen at the signal build interval instead of the implicit interval of 1 [FS#5479] (r25038)
|
||||
- Fix: Green path signals would be shown when building them 'under' a train, and they would keep showing green until they were passed again [FS#5480] (r25037)
|
||||
|
||||
|
||||
1.3.0-RC1 (2013-02-19)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: Searching of (missing) content via GrfCrawler (r25024, r25023)
|
||||
- Change: Cleanup goals and cargo monitors of companies when they go bankrupt or are taken over (r24986)
|
||||
- Change: Apply the same name sorting rules to content and NewGRF list as for the server list (r24983)
|
||||
- Fix: [SDL] Crash after bootstrap download of 32bits base set due to referencing a deleted mutex [FS#5466] (r25017)
|
||||
- Fix: [SDL] Improve 8bpp hardware palette support. Instead of always requesting SDL_HWPALETTE, it is now only done for 8bp blitters in fullscreen mode (r25003, r25002, r24993)
|
||||
- Fix: Set vehicle's service interval is percent flag appropriately on creation [FS#5137] (r24998)
|
||||
- Fix: When choosing a train in a depot to attach a newly purchased wagon to, do not consider trains currently moving in and out of the depot (r24987)
|
||||
- Fix: [Script] Crash when passing too many parameters [FS#5465] (r24982, r24981, r24980)
|
||||
|
||||
|
||||
1.3.0-beta2 (2013-02-07)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [NewGRF] Station randomisation triggers (r24906, r24905)
|
||||
- Feature: Settings type filter included in the advanced settings GUI (r24862, r24863)
|
||||
- Change: Revert to opening the vehicle GUI again when cloning vehicles using the clone-button from the depot GUI [FS#4458] (r24955)
|
||||
- Fix: Additional zoom in levels could glitch by a few pixels due to incorrect rounding [FS#5463] (r24975)
|
||||
- Fix: Honour pause_on_newgame setting when running as a dedicated server [FS#5279] (r24974)
|
||||
- Fix: [NewGRF] Prevent access to tile-based variables when tile is invalid [FS#5462] (r24973)
|
||||
- Fix: Do not make overbuilding rivers with canals insanely expensive [FS#5258] (r24972)
|
||||
- Fix: Crash when an infinite loop occurred during loading of a script [FS#5346] (r24970)
|
||||
- Fix: company window was not updated when shares were enabled/disabled [FS#5379] (r24968)
|
||||
- Fix: Trams would get stuck on water [FS#5228] (r24966)
|
||||
- Fix: With YAPF the docking behaviour differed per direction; now favour docking in the direction you approached [FS#5416] (r24964)
|
||||
- Fix: Do not stop loading if there are reservations left [FS#5435] (r24963)
|
||||
- Fix: Reserve all capacity while unloading to avoid 'stealing' cargo, i.e. loading cargo onto a second vehicle when the first cannot be fully filled yet [FS#5438] (r24962)
|
||||
- Fix: If a platform is enlarged and there is a reservation, reserve the whole platform [FS#5362] (r24961)
|
||||
- Fix: Inconsistencies in the 'thanks to' lists [FS#5423] (r24960)
|
||||
- Fix: Set 'replace when old' flag when replacing an autoreplace (r24950)
|
||||
- Fix: Deleting implicit orders was not able to deal with the various side-effects of DeleteOrder [FS#5452] (r24944)
|
||||
- Fix: Redraw autoreplace window properly in network games (r24939)
|
||||
- Fix: Never put a space between cargo name and subtype [FS#5447] (r24938)
|
||||
- Fix: Do not allow order refit to be set for no-load orders [FS#5446] (r24936)
|
||||
- Fix: Make group names unique per company and vehicle type [FS#3473] (r24933)
|
||||
- Fix: Prevent more NewGRFs being selected than is possible to load [FS#5158] (r24932)
|
||||
- Fix: [GS] Do not try to pause or unpause crashed scripts [FS#5415] (r24929)
|
||||
- Fix: [Squirrel] Update line information before processing 'while' token of 'do'-'while' statement [FS#5408] (r24928)
|
||||
- Fix: Add a tooltip to the mapsize selection mentioning possible deviations [FS#5395] (r24925)
|
||||
- Fix: When an object built on a river is removed, restore the river [FS#5441] (r24923)
|
||||
- Fix: Upgrading bridges could steal road types [FS#5389] (r24912)
|
||||
- Fix: [GS] Allow GSs to pass negative integer string parameters (r24908)
|
||||
- Fix: 'Train loads/unloads cargo' station animation triggers on individual platform (r24904)
|
||||
- Fix: Cached station animation triggers were only set when removing parts of a station (r24903)
|
||||
- Fix: The station build window did not update when the station spread changed [FS#5434] (r24899)
|
||||
- Fix: Do not unpause the game when closing the highscore window if it was already paused before the highscore screen was shown (r24898)
|
||||
- Fix: Improvements and fixes for the base translation [FS#5411, FS#5420, FS#5421, FS#5422, FS#5427] (r24896, r24875, r24872, r24869)
|
||||
- Fix: Allow downgrade of road bridges in the scenario editor [FS#5436] (r24895)
|
||||
- Fix: Invalidate station selection window when station spread changes [FS#5434] (r24894)
|
||||
- Fix: Distribute GS compat_<version>.nut with OpenTTD (r24890)
|
||||
- Fix: Pass proper UTF-16 strings instead of UCS-2 to ICU in order to preserve characters outside the BMP (r24885)
|
||||
- Fix: A completely emptied vehicle could trigger an assert (r24883)
|
||||
- Fix: Desync when NewGRF changes the stats related to acceleration (power, weight, tractive effort, etc) during service or 32 day triggers (r24882)
|
||||
- Fix: Incorrect Romanian own name (r24874)
|
||||
- Fix: Make invalid sprite references to mapgen sprites behave the same as invalid references between recolour and real sprites [FS#5404] (r24858)
|
||||
- Fix: Do not let UFOs and coal mines clear water (r24857)
|
||||
- Fix: Do not let UFOs and coal mines destroy depots [FS#5406] (r24856)
|
||||
- Fix: Do not send aircraft to depots that are out of range of the next destination [FS#5405] (r24855)
|
||||
- Fix: Only consider vehicles available in the climate for purchase/depot cell size (r24854)
|
||||
- Fix: Extend widget data member to 32 bits so that sprite IDs >= 2^16 can be used (r24853)
|
||||
|
||||
|
||||
1.3.0-beta1 (2012-12-24)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: Advanced settings to disable certain sound effects (r24846)
|
||||
@@ -85,8 +209,8 @@
|
||||
- Change: [NewGRF] Make bounding boxes of road vehicles change according to the vehicle length to make alignment easier [FS#5204] (r24331)
|
||||
- Fix: [NewGRF] Consider regearing-like cargos as no-cargo in cargo filters [FS#5386] (r24848)
|
||||
- Fix: [NewGRF] Draw NewGRF railtypes in NewGRF station previews (r24840)
|
||||
- Fix: Don't consider blocked rail station tiles that display wires as non-reachable for masking out unnecessary catenary wires (r24837)
|
||||
- Fix: The autorefit dropdown in the order GUI wasn't always updated when modifying vehicle consists [FS#5396] (r24834)
|
||||
- Fix: Do not consider blocked rail station tiles that display wires as non-reachable for masking out unnecessary catenary wires (r24837)
|
||||
- Fix: The autorefit dropdown in the order GUI was not always updated when modifying vehicle consists [FS#5396] (r24834)
|
||||
- Fix: [NewGRF] Incorrect values are better than a crash when a NewGRF queries vehicle variable 4C before vehicle initialisation is completed [FS#5398] (r24831)
|
||||
- Fix: determineversion.vbs could hang in a git checkout (r24826)
|
||||
- Fix: Close pending preview windows when the engine is introduced to everyone (r24812)
|
||||
@@ -326,7 +450,7 @@
|
||||
- Fix: [SDL] Handle the SDL_VIDEOEXPOSE event to solve issues with SDL 1.3 (r23910)
|
||||
- Fix: [SDL] Fix keyboard-related segfault when compiling against SDL 1.3 (r23909)
|
||||
- Fix: [Makefile] Make sure bin/baseset/openttd.32.bmp is removed on make clean (r23908)
|
||||
- Fix: [Makefile] Let "make clean --dry-run" not delete Makefiles (r23907)
|
||||
- Fix: [Makefile] Let 'make clean --dry-run' not delete Makefiles (r23907)
|
||||
- Fix: [Windows installer] OpenMSX got downloaded to and extracted in the wrong (non-existent) folder [FS#5045] (r23905)
|
||||
- Fix: Memory leak everytime one clicked a savegame in the load GUI (r23901)
|
||||
- Fix: [NewGRF] It was not possible to import sounds from a NewGRF later in the load order (r23883)
|
||||
@@ -1653,7 +1777,7 @@
|
||||
- Fix: The lock in the company window was only drawn for your own company [FS#3427] (r18729)
|
||||
- Fix: Some invalid gender/plural indices in strings, which could eventually cause crashes [FS#3480] (r18727)
|
||||
- Fix: With non-uniform industries the 'supplies' text when building a station could be incorrect (missing a cargo) [FS#3463] (r18726)
|
||||
- Fix: Refitting a non-refittable vehicle to it's default cargotype failed, causing problems for AIs [FS#3475] (r18724)
|
||||
- Fix: Refitting a non-refittable vehicle to its default cargotype failed, causing problems for AIs [FS#3475] (r18724)
|
||||
- Fix: The join station window did not account for scrolling, so if you did scroll the station was not joined with the selected station [FS#3476] (r18713)
|
||||
- Fix: The wrong town is mentioned in the error when trying to make one way roads of town owned roads [FS#3478] (r18710)
|
||||
- Fix: Animation buffer for 32bpp-anim blitter was only validated during sprite blitting, other drawing operations did not check it. Initial startup and window resize could therefore lead to crash [FS#3464] (r18709)
|
||||
@@ -2314,7 +2438,7 @@
|
||||
- Feature: [NewGRF] Add support for property 0x13 for Bridges. In other words, one can now specifies a 16 bits cost multiplier (r14172)
|
||||
- Feature: Make it possible to choose between the DOS and Windows graphics packs while retaining the possibility to override the palette (r14151)
|
||||
- Feature: Increase the size of the console backlog. Now it'll only remove backlog items when there are more than a threshold and when they are there longer than (another) threshold (r14056)
|
||||
- Feature: Make it possible to filter list_patches output like it's done for other list_* console commands (r14041)
|
||||
- Feature: Make it possible to filter list_patches output like it is done for other list_* console commands (r14041)
|
||||
- Feature: Path based signalling (r13926-13967)
|
||||
- Feature: Show [total-]cargo info in depot when [ctrl-]right-clicking on vehicle (r13923)
|
||||
- Feature: NewGRF presets, selected by a drop down list in the NewGRF window. Presets are saved in the config file (r13781)
|
||||
@@ -2394,7 +2518,7 @@
|
||||
- Fix: Order pool seemed to look full when it was not as it only checked whether it was possible to allocate a new block of pool items instead of checking for free pool items (r14547)
|
||||
- Fix: Do not deliver cargo to industries not inside station catchment area [FS#2138] (r14530)
|
||||
- Fix: Allocate stub (empty) sound entries when loading an empty/corrupt/incorrectly sized sample.cat instead of making valid NewGRFs fail to load (r14527)
|
||||
- Fix: Make sure trains stop at the end of a station; a 3/8th length train did stop 2/8th of it's length too early causing a 63/8th long train not to fit in a 4 tile station [FS#2379] (r14526)
|
||||
- Fix: Make sure trains stop at the end of a station; a 3/8th length train did stop 2/8th of its length too early causing a 63/8th long train not to fit in a 4 tile station [FS#2379] (r14526)
|
||||
- Fix: Small possible chance of desync due to sorting on pointer instead of by (station) index [FS#2348] (r14463)
|
||||
- Fix: When a road stop gets moved make sure to update the destination of RVs going to that road stop [FS#2330] (r14446)
|
||||
- Fix: Support for spaces in directories passed to ./configure [FS#1802] (r14440)
|
||||
@@ -2592,7 +2716,7 @@
|
||||
- Fix: Do not crash very hard on unrecognised savegames, just go back to the intro menu instead (r12707)
|
||||
- Fix: In some cases a news messages would not be shown [FS#1906] (r12683)
|
||||
- Fix: Removing road pieces from a town gave you twice the intended penalty [FS#1920] (r12682)
|
||||
- Fix: When a road vehicle has a tram only stop multiple times in a row in it's orders, only the first one would be skipped [FS#1918] (r12678)
|
||||
- Fix: When a road vehicle has a tram only stop multiple times in a row in its orders, only the first one would be skipped [FS#1918] (r12678)
|
||||
- Fix: Colour remaps on station sprites only worked for company colours [FS#1902] (r12674)
|
||||
- Fix: Remove buggy buoys at tile 0 from old TTDP savegames (r12642)
|
||||
- Fix: Possible NULL pointer dereference when reading some NewGRF data [FS#1913] (r12637)
|
||||
@@ -3305,7 +3429,7 @@
|
||||
- Fix: Some disaster-events fixed: combat chopper shoots from right position, submarine once again moves around (r8140, r8158)
|
||||
- Fix: 'out of sprite memory' warning messages due to incorrect assumption of requested memory for sprites (r8133)
|
||||
- Fix: Buoys are now built and numbered 1..9 not 9..1 [FS#538] (r8123)
|
||||
- Fix: Clicking for more news properly cycles through the news history backwards, and does not show the first item doubly if it's already open (r8049)
|
||||
- Fix: Clicking for more news properly cycles through the news history backwards, and does not show the first item doubly if it is already open (r8049)
|
||||
- Fix: Crash when removing a town in the scenario editor while the query window is open for one of the town's tiles (r8030)
|
||||
- Fix: Overflow of system-ticks was not handled properly, resulting in a possibly unresponsive server/client (r8028)
|
||||
- Fix: Automatic pause interfering with 'pause_on_join setting' in MP when <shift> is pressed [FS#486] (r8027)
|
||||
@@ -3426,7 +3550,7 @@
|
||||
- Codechange: Show more correct capacity of articulated wagons in the train purchase list (r6650)
|
||||
- Codechange: When showing tooltips, properly position the tooltip taking into account window dimensions and cursor (r6405)
|
||||
- Codechange: Speed up the animated cursors a bit so they move once in a while at least (r6367)
|
||||
- Codechange: Remove the 'unsorted' vehicle sorter, because it's plain useless (r6270)
|
||||
- Codechange: Remove the 'unsorted' vehicle sorter, because it is plain useless (r6270)
|
||||
- Codechange: Remove MSVC6 support. The compiler was too stupid and too many workarounds were needed. Please switch to mingw or VC2005++ express (r5286)
|
||||
- Codechange: Allow a switch in Makefile.config to disable threads in OpenTTD (r5978)
|
||||
- Codechange: [Windows] Add native x64 target to VS2005 project files (r5813)
|
||||
@@ -3533,9 +3657,9 @@
|
||||
- Fix: The wrong IP could get unbanned, e.g. 'unban 1.2.3.42' could result in unbanning 1.2.3.4
|
||||
- Fix: It was possible to convert the railtype of a bridge while a train was on it
|
||||
- Fix: It was possible to rename signs or waypoints with the chat box
|
||||
- Fix: Be more strict what it means for an aircraft to be in a hangar: It's not just being stopped on a hangar tile
|
||||
- Fix: If a road vehicle is on a road depot tile and stopped does not mean it's in the depot. Use the proper test for this
|
||||
- Fix: [AI] The AI should send a plane into a hangar if it's not in a hangar _or_ not stopped, not when it's not in a hangar _and_ not stopped
|
||||
- Fix: Be more strict what it means for an aircraft to be in a hangar: It is not just being stopped on a hangar tile
|
||||
- Fix: If a road vehicle is on a road depot tile and stopped does not mean it is in the depot. Use the proper test for this
|
||||
- Fix: [AI] The AI should send a plane into a hangar if it is not in a hangar _or_ not stopped, not when it is not in a hangar _and_ not stopped
|
||||
- Fix: [AI] The trolly AI used information from the wrong industry when calculating the amount of to be transported goods
|
||||
- Fix: [NTP] Fix NTP over bridges: do not check the rail type when on a bridge
|
||||
- Fix: Truncate text in dropdown lists to stop text overflowing
|
||||
@@ -3607,7 +3731,7 @@
|
||||
- Fix: Update german and finnish languages (r3968)
|
||||
- Fix: Properly set back the owner of a crossing/road-under bridge after removing it (r3967)
|
||||
- Fix: [Autoreplace] Autoreplacing trains now keep their tile length instead of their pixel length [FS#67] (r3964)
|
||||
- Fix: Mark the right tile as dirty. It's just a graphical glitch which happend in r1592 (r3962)
|
||||
- Fix: Mark the right tile as dirty. It is just a graphical glitch which happend in r1592 (r3962)
|
||||
- Fix: Fix crash when resizing news history window (r3961)
|
||||
- Fix: Correctly implement minimum search, so road vehicles head twoards the closest station, not the last one in the list (r3960)
|
||||
- Fix: The tooltips for raising and lowering land buttons in the scenario editor are interchanged [FS#61] (r3959)
|
||||
@@ -3708,7 +3832,7 @@
|
||||
- Fix: Spaces in the path to the MIDI files caused the Windows MIDI player to fail (r2563)
|
||||
- Fix: Set server map name to the loaded name of the game/scenario (r2610)
|
||||
- Fix: Improve the old pathfinder. Changed it to A* instead of Dijkstra. Benchmark shows that NTP is now around 10x faster than NPF (r2635)
|
||||
- Fix: Correctly save and load company_value, it's 64 bits wide, not 32 bits (r2684)
|
||||
- Fix: Correctly save and load company_value, it is 64 bits wide, not 32 bits (r2684)
|
||||
- Fix: Volume control works now for the DirectMusic MIDI backend (r2712)
|
||||
- Fix: Change the fence algorithm so it removes fences when no farm tile is adjacent (r2739)
|
||||
- Fix: Tree tiles above the snow line got redrawn disproportionately often (r2750)
|
||||
@@ -3838,7 +3962,7 @@
|
||||
- Fix: Speeding up when pressing ALT+TAB (Windows) [SF#1114261]
|
||||
- Fix: Signals disappear after typing text and pressing enter!. Signs in Scenario Editor have no owner so ignore that [SF#1149403]
|
||||
- Fix: Single tile Bridge in Volcano City scenario. Some bridges still had the old single-tile bridge bug that was caused by improper town growth in combination with DC_AUTO. Fixed the scenario [SF#1149766]
|
||||
- Fix: Stop startup memory corruption crash using optimized MSVC6. MSVC6 workaround as it's too stupid again for its own good [SF#1119147]
|
||||
- Fix: Stop startup memory corruption crash using optimized MSVC6. MSVC6 workaround as it is too stupid again for its own good [SF#1119147]
|
||||
- Fix: Dedicated server now accepts '-g' (load game) as param [SF#1101874]
|
||||
- Fix: Crash with German umlauts in station names [SF#1155696]
|
||||
- Fix: Segmentation fault when loading savegame, out of bounds array check [SF#1158618]
|
||||
@@ -3864,7 +3988,7 @@
|
||||
- Fix: [NewGRF] Helicopters are correctly recognized
|
||||
- Fix: [Autoreplace] Made sure that planes only show planes in replace GUI and helicopters only show helicopters
|
||||
- Fix: Crash when generating tropical maps
|
||||
- Fix: [Autoreplace] Cheaters can no longer exploit autoreplace to get vehicles, that's not invented yet
|
||||
- Fix: [Autoreplace] Cheaters can no longer exploit autoreplace to get vehicles, that is not invented yet
|
||||
- Fix: [Autoreplace] Fixed a stupid bug introduced in r1687, that made a crash if anybody tried to autoreplace anything but an aircraft
|
||||
- Fix: Expand rail stations beyond maximum spread
|
||||
- Fix: [Autoreplace] Fixed a typo that could prevent autoreplaced aircraft from automatically go to a hangar
|
||||
@@ -3950,7 +4074,7 @@
|
||||
- Fix: Aircraft in hangar messages are now revalidated before display [SF#1104969]
|
||||
- Fix: Destroyed train locks crossings [SF#1105112]
|
||||
- Fix: Upgrade rail fails when train under bridge [SF#1105281]
|
||||
- Fix: Trains do not think they're on a slope any more while they drive around in a tunnel [SF#1105959]
|
||||
- Fix: Trains do not think they are on a slope any more while they drive around in a tunnel [SF#1105959]
|
||||
- Fix: Buoys can now only be removed if no ship has it in their schedule. This makes buoys more useable in multiplayer games again, as buoys cannot be deleted by other players if they are used [SF#1105963]
|
||||
- Fix: Graph's keys get confused [SF#1106354]
|
||||
- Fix: Placing signals with 2x1 drags is treated as placing a single signal [SF#1106930]
|
||||
|
28
config.lib
28
config.lib
@@ -57,8 +57,8 @@ set_default() {
|
||||
enable_translator="0"
|
||||
enable_unicode="1"
|
||||
enable_console="1";
|
||||
enable_assert="1"
|
||||
enable_strip="0"
|
||||
enable_assert="0"
|
||||
enable_strip="1"
|
||||
enable_universal="0"
|
||||
enable_osx_g5="0"
|
||||
enable_cocoa_quartz="1"
|
||||
@@ -1012,6 +1012,12 @@ check_params() {
|
||||
|
||||
if [ -d "$ROOT_DIR/.svn" ] && [ -n "`svn help 2>/dev/null`" ]; then
|
||||
log 1 "checking revision... svn detection"
|
||||
elif [ -d "$ROOT_DIR/../.svn" ] && [ -n "`svn help 2>/dev/null`" ] && [ -n "`LC_ALL=C svn info $ROOT_DIR/.. | grep '^URL:.*tags$'`" ]; then
|
||||
# subversion changed its behaviour; now not all folders have a .svn folder,
|
||||
# but only the root folder. Since making tags requires a (sparse) checkout
|
||||
# of the tags folder, the folder of the tag does not have a .svn folder
|
||||
# anymore and this fails to detect the subversion repository checkout.
|
||||
log 1 "checking revision... svn detection (tag)"
|
||||
elif [ -d "$ROOT_DIR/.git" ] && [ -n "`git help 2>/dev/null`" ]; then
|
||||
log 1 "checking revision... git detection"
|
||||
elif [ -d "$ROOT_DIR/.hg" ] && [ -n "`hg help 2>/dev/null`" ]; then
|
||||
@@ -3169,9 +3175,9 @@ detect_grfcodec() {
|
||||
log 2 " returned $version"
|
||||
log 2 " exit code $ret"
|
||||
|
||||
if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "913" ]; then
|
||||
if [ -n "$version" ] && [ "$version" -lt "913" ]; then
|
||||
log 1 "checking grfcodec... needs at least version 5.1.4 (r913), disabled"
|
||||
if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "949" ]; then
|
||||
if [ -n "$version" ] && [ "$version" -lt "949" ]; then
|
||||
log 1 "checking grfcodec... needs at least version 6.0.2 (r949), disabled"
|
||||
else
|
||||
log 1 "checking grfcodec... not found"
|
||||
fi
|
||||
@@ -3211,9 +3217,9 @@ detect_nforenum() {
|
||||
log 2 " returned $version"
|
||||
log 2 " exit code $ret"
|
||||
|
||||
if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "913" ]; then
|
||||
if [ -n "$version" ] && [ "$version" -lt "913" ]; then
|
||||
log 1 "checking nforenum... needs at least version 5.1.4 (r913), disabled"
|
||||
if [ -z "$version" ] || [ "$ret" != "0" ] || [ "$version" -lt "949" ]; then
|
||||
if [ -n "$version" ] && [ "$version" -lt "949" ]; then
|
||||
log 1 "checking nforenum... needs at least version 6.0.2 (r949), disabled"
|
||||
else
|
||||
log 1 "checking nforenum... not found"
|
||||
fi
|
||||
@@ -3429,7 +3435,7 @@ generate_settings() {
|
||||
}
|
||||
|
||||
generate_grf() {
|
||||
STAGE="[GRF]"
|
||||
STAGE="[BASESET]"
|
||||
|
||||
make_sed
|
||||
|
||||
@@ -3638,6 +3644,7 @@ showhelp() {
|
||||
echo " --with-makedepend[=makedepend] enables makedepend support"
|
||||
echo " --with-ccache enables ccache support"
|
||||
echo " --with-distcc enables distcc support"
|
||||
echo " --without-grfcodec disable usage of grfcodec and re-generation of base sets"
|
||||
echo ""
|
||||
echo "Some influential environment variables:"
|
||||
echo " CC C compiler command"
|
||||
@@ -3648,6 +3655,9 @@ showhelp() {
|
||||
echo " LDFLAGS linker flags, e.g. -L<lib dir> if you"
|
||||
echo " have libraries in a nonstandard"
|
||||
echo " directory <lib dir>"
|
||||
echo " CFLAGS_BUILD C compiler flags for build time tool generation"
|
||||
echo " CXXFLAGS_BUILD C++ compiler flags for build time tool generation"
|
||||
echo " LDFLAGS_BUILD linker flags for build time tool generation"
|
||||
echo ""
|
||||
echo "Use these variables to override the choices made by 'configure' or to help"
|
||||
echo "it to find libraries and programs with nonstandard names/locations."
|
||||
|
@@ -70,7 +70,7 @@ ROOT_DIR=`pwd`
|
||||
# Determine if we are using a modified version
|
||||
# Assume the dir is not modified
|
||||
MODIFIED="0"
|
||||
if [ -d "$ROOT_DIR/.svn" ]; then
|
||||
if [ -d "$ROOT_DIR/.svn" ] || [ -d "$ROOT_DIR/../.svn" ]; then
|
||||
# We are an svn checkout
|
||||
if [ -n "`svnversion | grep 'M'`" ]; then
|
||||
MODIFIED="2"
|
||||
|
@@ -1,14 +1,13 @@
|
||||
OpenTTD's known bugs
|
||||
Last updated: 2012-06-01
|
||||
Release version: 1.2.1
|
||||
Last updated: 2013-06-01
|
||||
Release version: 1.3.1
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
Table of contents
|
||||
-----------------
|
||||
1.0) About
|
||||
2.0) Known bugs in this release
|
||||
* 2.1) Known bugs that will not be solved
|
||||
2.0) Known bugs
|
||||
|
||||
|
||||
1.0) About
|
||||
@@ -17,36 +16,13 @@ All bugs listed below are marked as known. Please do not submit any bugs
|
||||
that are the same as these. If you do, do not act surprised, because
|
||||
we WILL flame you!!
|
||||
|
||||
Of course if you have more knowledge about any of these bugs, have more
|
||||
specifics, we welcome you to report them. React to the given bug indicated
|
||||
by the number below on http://bugs.openttd.org.
|
||||
The current list of known bugs that we intend to fix can be found in our
|
||||
bug tracking system at: http://bugs.openttd.org
|
||||
Also check the closed bugs when searching for your bug in this system as
|
||||
we might have fixed the bug in the mean time.
|
||||
|
||||
|
||||
2.0) Known bugs in this release
|
||||
---- --------------------------
|
||||
The following bugs are known to exist in this release and we intend to
|
||||
fix them. Some bugs are known but are not fixable or fixing them would
|
||||
cause further problems. Those bugs can be found in the "Known bugs that
|
||||
will not be solved" section.
|
||||
|
||||
The bugs in this section all refer to a ticket in our bug tracking system
|
||||
that you can find at: http://bugs.openttd.org
|
||||
If the bugs are closed but still listed here it means that the bug is fixed
|
||||
and that the nightlies and next major release will not have that bug.
|
||||
|
||||
Issues prefixed with [OSX] are required to be fixed before we consider
|
||||
officially supporting Mac OS X again. For now it remains unsupported and
|
||||
we only apply bug fixes provided by the community but we are unable to fix
|
||||
these bugs ourselves.
|
||||
|
||||
- 4857 [OSX] No support for detecting mono space font
|
||||
- 4847 [OSX] No support for bootstrap downloading of base graphics
|
||||
- 4744 [OSX] Crash when switching to full screen with OS X Lion
|
||||
- 4689 [OSX] Crash when hiding window after coming from full screen
|
||||
- 4420 [OSX] OS' mouse pointer still shows
|
||||
- 2484 [OSX] Cannot enter CJK characters
|
||||
|
||||
2.1) Known bugs that will not be solved
|
||||
2.0) Known bugs
|
||||
---- ----------------------------------
|
||||
This section lists all known bugs that we do not intend to fix and the
|
||||
reasons why we think that fixing them is infeasible. We might make some
|
||||
|
50
media/baseset/no_music.obm
Normal file
50
media/baseset/no_music.obm
Normal file
@@ -0,0 +1,50 @@
|
||||
; $Id$
|
||||
;
|
||||
; This represents more or less nothingness
|
||||
;
|
||||
[metadata]
|
||||
name = NoMusic
|
||||
shortname = NULL
|
||||
version = 0
|
||||
fallback = true
|
||||
!! description STR_BASEMUSIC_NONE_DESCRIPTION
|
||||
|
||||
[files]
|
||||
theme =
|
||||
old_0 =
|
||||
old_1 =
|
||||
old_2 =
|
||||
old_3 =
|
||||
old_4 =
|
||||
old_5 =
|
||||
old_6 =
|
||||
old_7 =
|
||||
old_8 =
|
||||
old_9 =
|
||||
new_0 =
|
||||
new_1 =
|
||||
new_2 =
|
||||
new_3 =
|
||||
new_4 =
|
||||
new_5 =
|
||||
new_6 =
|
||||
new_7 =
|
||||
new_8 =
|
||||
new_9 =
|
||||
ezy_0 =
|
||||
ezy_1 =
|
||||
ezy_2 =
|
||||
ezy_3 =
|
||||
ezy_4 =
|
||||
ezy_5 =
|
||||
ezy_6 =
|
||||
ezy_7 =
|
||||
ezy_8 =
|
||||
ezy_9 =
|
||||
|
||||
[md5s]
|
||||
|
||||
[names]
|
||||
|
||||
[origin]
|
||||
default = This file was part of your OpenTTD installation.
|
18
media/baseset/no_sound.obs
Normal file
18
media/baseset/no_sound.obs
Normal file
@@ -0,0 +1,18 @@
|
||||
; $Id$
|
||||
;
|
||||
; This represents more or less nothingness
|
||||
;
|
||||
[metadata]
|
||||
name = NoSound
|
||||
shortname = NULL
|
||||
version = 2
|
||||
fallback = true
|
||||
!! description STR_BASESOUNDS_NONE_DESCRIPTION
|
||||
|
||||
[files]
|
||||
samples =
|
||||
|
||||
[md5s]
|
||||
|
||||
[origin]
|
||||
default = This file was part of your OpenTTD installation.
|
31
media/baseset/orig_dos.obg
Normal file
31
media/baseset/orig_dos.obg
Normal file
@@ -0,0 +1,31 @@
|
||||
; $Id$
|
||||
;
|
||||
; This represents the original graphics as on the non-German Transport
|
||||
; Tycoon Deluxe DOS CD.
|
||||
;
|
||||
[metadata]
|
||||
name = original_dos
|
||||
shortname = TTDD
|
||||
version = 1
|
||||
palette = DOS
|
||||
!! description STR_BASEGRAPHICS_DOS_DESCRIPTION
|
||||
|
||||
[files]
|
||||
base = TRG1.GRF
|
||||
logos = TRGI.GRF
|
||||
arctic = TRGC.GRF
|
||||
tropical = TRGH.GRF
|
||||
toyland = TRGT.GRF
|
||||
extra = OPENTTD.GRF
|
||||
|
||||
[md5s]
|
||||
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
|
||||
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
||||
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
|
||||
OPENTTD.GRF =
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
OPENTTD.GRF = This file was part of your OpenTTD installation.
|
19
media/baseset/orig_dos.obs
Normal file
19
media/baseset/orig_dos.obs
Normal file
@@ -0,0 +1,19 @@
|
||||
; $Id$
|
||||
;
|
||||
; This represents the original sounds as on the Transport
|
||||
; Tycoon Deluxe DOS CD.
|
||||
;
|
||||
[metadata]
|
||||
name = original_dos
|
||||
shortname = TTDO
|
||||
version = 0
|
||||
!! description STR_BASESOUNDS_DOS_DESCRIPTION
|
||||
|
||||
[files]
|
||||
samples = SAMPLE.CAT
|
||||
|
||||
[md5s]
|
||||
SAMPLE.CAT = 422ea3dd074d2859bb51639a6e0e85da
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
31
media/baseset/orig_dos_de.obg
Normal file
31
media/baseset/orig_dos_de.obg
Normal file
@@ -0,0 +1,31 @@
|
||||
; $Id$
|
||||
;
|
||||
; This represents the original graphics as on the German Transport
|
||||
; Tycoon Deluxe DOS CD. It contains one broken sprite.
|
||||
;
|
||||
[metadata]
|
||||
name = original_dos_de
|
||||
shortname = TTDD
|
||||
version = 0
|
||||
palette = DOS
|
||||
!! description STR_BASEGRAPHICS_DOS_DE_DESCRIPTION
|
||||
|
||||
[files]
|
||||
base = TRG1.GRF
|
||||
logos = TRGI.GRF
|
||||
arctic = TRGC.GRF
|
||||
tropical = TRGH.GRF
|
||||
toyland = TRGT.GRF
|
||||
extra = OPENTTD.GRF
|
||||
|
||||
[md5s]
|
||||
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
|
||||
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
||||
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
|
||||
OPENTTD.GRF =
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
OPENTTD.GRF = This file was part of your OpenTTD installation.
|
31
media/baseset/orig_win.obg
Normal file
31
media/baseset/orig_win.obg
Normal file
@@ -0,0 +1,31 @@
|
||||
; $Id$
|
||||
;
|
||||
; This represents the original graphics as on the Transport
|
||||
; Tycoon Deluxe for Windows CD.
|
||||
;
|
||||
[metadata]
|
||||
name = original_windows
|
||||
shortname = TTDW
|
||||
version = 0
|
||||
palette = Windows
|
||||
!! description STR_BASEGRAPHICS_WIN_DESCRIPTION
|
||||
|
||||
[files]
|
||||
base = TRG1R.GRF
|
||||
logos = TRGIR.GRF
|
||||
arctic = TRGCR.GRF
|
||||
tropical = TRGHR.GRF
|
||||
toyland = TRGTR.GRF
|
||||
extra = OPENTTD.GRF
|
||||
|
||||
[md5s]
|
||||
TRG1R.GRF = b04ce593d8c5016e07473a743d7d3358
|
||||
TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
|
||||
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
|
||||
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
|
||||
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
|
||||
OPENTTD.GRF =
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
OPENTTD.GRF = This file was part of your OpenTTD installation.
|
94
media/baseset/orig_win.obm
Normal file
94
media/baseset/orig_win.obm
Normal file
@@ -0,0 +1,94 @@
|
||||
; $Id$
|
||||
;
|
||||
; This represents the original music as on the Transport
|
||||
; Tycoon Deluxe for Windows CD.
|
||||
;
|
||||
[metadata]
|
||||
name = original_windows
|
||||
shortname = TTDW
|
||||
version = 1
|
||||
!! description STR_BASEMUSIC_WIN_DESCRIPTION
|
||||
|
||||
[files]
|
||||
theme = GM_TT00.GM
|
||||
old_0 = GM_TT02.GM
|
||||
old_1 = GM_TT06.GM
|
||||
old_2 = GM_TT03.GM
|
||||
old_3 = GM_TT12.GM
|
||||
old_4 = GM_TT08.GM
|
||||
old_5 = GM_TT13.GM
|
||||
old_6 = GM_TT14.GM
|
||||
old_7 = GM_TT10.GM
|
||||
old_8 =
|
||||
old_9 =
|
||||
new_0 = GM_TT04.GM
|
||||
new_1 = GM_TT01.GM
|
||||
new_2 = GM_TT05.GM
|
||||
new_3 = GM_TT15.GM
|
||||
new_4 = GM_TT11.GM
|
||||
new_5 = GM_TT16.GM
|
||||
new_6 = GM_TT09.GM
|
||||
new_7 =
|
||||
new_8 =
|
||||
new_9 =
|
||||
ezy_0 = GM_TT18.GM
|
||||
ezy_1 = GM_TT19.GM
|
||||
ezy_2 = GM_TT21.GM
|
||||
ezy_3 = GM_TT17.GM
|
||||
ezy_4 = GM_TT20.GM
|
||||
ezy_5 = GM_TT07.GM
|
||||
ezy_6 =
|
||||
ezy_7 =
|
||||
ezy_8 =
|
||||
ezy_9 =
|
||||
|
||||
[md5s]
|
||||
GM_TT00.GM = 45cfec1b9d8c7a0ad45e755833cbf221
|
||||
GM_TT01.GM = ab14ed3392d848abd2a2e90a9d75d121
|
||||
GM_TT02.GM = dd4f696e4be5987ce738257b08b50171
|
||||
GM_TT03.GM = a1bfde23343df9e4063419bf29c166b8
|
||||
GM_TT04.GM = 4e6943aa0c455203d76c79389054747d
|
||||
GM_TT05.GM = cee281cb85a2e2343552d97640545a47
|
||||
GM_TT06.GM = 26d1de5efa8675f94065784e9d539e49
|
||||
GM_TT07.GM = 6f2691e17558f552ec4c565e4ab7139c
|
||||
GM_TT08.GM = a42bf2cb3340a822f1a69646fc7a487d
|
||||
GM_TT09.GM = eb35761a58a8df3c59ed8929cce13916
|
||||
GM_TT10.GM = 42fecd686720a785d20a78590c466a82
|
||||
GM_TT11.GM = 50ef1ef02e49d2112786dd45e69dc3ee
|
||||
GM_TT12.GM = 4ce707a0e0e72419f0681dd9bd95271b
|
||||
GM_TT13.GM = e765753be29d889ec818f38009103619
|
||||
GM_TT14.GM = 270e2d63bd32b95a4d007ce15a6ce45f
|
||||
GM_TT15.GM = 89e116a1c0c69f1845cc903a9bfbe460
|
||||
GM_TT16.GM = f824e2371b3bedfe61aad4b9c62dd6be
|
||||
GM_TT17.GM = 1b23eebb0796c1ab99cd97fa7082cf7b
|
||||
GM_TT18.GM = 15650de3bad645d0e88c4f5c7a2df92a
|
||||
GM_TT19.GM = 7aec079e15bd09588660b85545ac4dfc
|
||||
GM_TT20.GM = 1509097889dee617aa1e9a1738a5a930
|
||||
GM_TT21.GM = a8d0aaad02e1a762d8d54cf81da56bab
|
||||
|
||||
[names]
|
||||
GM_TT00.GM = Tycoon DELUXE Theme
|
||||
GM_TT01.GM = Snarl Up
|
||||
GM_TT02.GM = Easy Driver
|
||||
GM_TT03.GM = Little Red Diesel
|
||||
GM_TT04.GM = City Groove
|
||||
GM_TT05.GM = Aliens Ate My Railway
|
||||
GM_TT06.GM = Stoke It
|
||||
GM_TT07.GM = Don't Walk!
|
||||
GM_TT08.GM = Sawyer's Tune
|
||||
GM_TT09.GM = Fell Apart On Me
|
||||
GM_TT10.GM = Can't Get There From Here
|
||||
GM_TT11.GM = Hard Drivin'
|
||||
GM_TT12.GM = Road Hog
|
||||
GM_TT13.GM = Hold That Train!
|
||||
GM_TT14.GM = Broomer's Oil Rag
|
||||
GM_TT15.GM = Goss Groove
|
||||
GM_TT16.GM = Small Town
|
||||
GM_TT17.GM = Cruise Control
|
||||
GM_TT18.GM = Stroll On
|
||||
GM_TT19.GM = Funk Central
|
||||
GM_TT20.GM = Jammit
|
||||
GM_TT21.GM = Movin' On
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
19
media/baseset/orig_win.obs
Normal file
19
media/baseset/orig_win.obs
Normal file
@@ -0,0 +1,19 @@
|
||||
; $Id$
|
||||
;
|
||||
; This represents the original sounds as on the Transport
|
||||
; Tycoon Deluxe for Windows CD.
|
||||
;
|
||||
[metadata]
|
||||
name = original_windows
|
||||
shortname = TTDO
|
||||
version = 0
|
||||
!! description STR_BASESOUNDS_WIN_DESCRIPTION
|
||||
|
||||
[files]
|
||||
samples = SAMPLE.CAT
|
||||
|
||||
[md5s]
|
||||
SAMPLE.CAT = 9212e81e72badd4bbe1eaeae66458e10
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
69
media/baseset/translations.awk
Normal file
69
media/baseset/translations.awk
Normal file
@@ -0,0 +1,69 @@
|
||||
# $Id: openttd.desktop.translation.awk 24100 2012-04-08 14:29:31Z rubidium $
|
||||
|
||||
# This file is part of OpenTTD.
|
||||
# OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
# OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#
|
||||
# Awk script to extract translations for baseset descriptions
|
||||
# from lang files for insertion into .obg/obs/obm files.
|
||||
# If there is no translation, there is no output.
|
||||
#
|
||||
# The input file is scanned for the pattern
|
||||
# !! <ini-key> <STR_id>
|
||||
#
|
||||
# The lang files (passed as variable 'langfiles') are scanned for <STR_id> and
|
||||
# the translations are added to the output file:
|
||||
# <ini-key>.<iso-code> = <translation>
|
||||
#
|
||||
|
||||
# Simple insertion sort since not all AWKs have a sort implementation
|
||||
function isort(A) {
|
||||
n = 0
|
||||
for (val in A) {
|
||||
n++;
|
||||
}
|
||||
|
||||
for (i = 2; i <= n; i++) {
|
||||
j = i;
|
||||
hold = A[j]
|
||||
while (A[j - 1] > hold) {
|
||||
j--;
|
||||
A[j + 1] = A[j]
|
||||
}
|
||||
A[j] = hold
|
||||
}
|
||||
|
||||
return n
|
||||
}
|
||||
|
||||
/^!!/ {
|
||||
ini_key = $2;
|
||||
str_id = $3;
|
||||
|
||||
file = langfiles
|
||||
while ((getline < file) > 0) {
|
||||
if (match($0, "##isocode") > 0) {
|
||||
lang = $2;
|
||||
} else if (match($0, "^" str_id " *:") > 0) {
|
||||
sub("^[^:]*:", "", $0)
|
||||
i++;
|
||||
if (lang == "en_GB") {
|
||||
texts[i] = ini_key " = "$0;
|
||||
} else {
|
||||
texts[i] = ini_key "." lang " = "$0;
|
||||
}
|
||||
}
|
||||
}
|
||||
close(file);
|
||||
|
||||
count = isort(texts);
|
||||
for (i = 1; i <= count; i++) {
|
||||
print texts[i]
|
||||
}
|
||||
|
||||
next
|
||||
}
|
||||
|
||||
{ print }
|
@@ -7,7 +7,7 @@
|
||||
// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
-1 * 0 0C "OpenTTD GUI graphics"
|
||||
-1 * 3 05 15 A8
|
||||
-1 * 3 05 15 \b 168 // OPENTTD_SPRITE_COUNT
|
||||
-1 sprites/openttdgui.png 8bpp 66 8 64 31 -31 7 normal
|
||||
-1 sprites/openttdgui.png 8bpp 146 8 64 31 -31 7 normal
|
||||
-1 sprites/openttdgui.png 8bpp 226 8 64 31 -31 7 normal
|
||||
|
@@ -1,278 +1,320 @@
|
||||
openttd (1.3.0-beta1) unstable; urgency=low
|
||||
openttd (1.3.1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.3.1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Sat, 01 Jun 2013 00:00:00 +0300
|
||||
|
||||
openttd (1.3.1~RC1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.3.1-RC1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Fri, 17 May 2013 22:00:00 +0200
|
||||
|
||||
openttd (1.3.0-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.3.0
|
||||
|
||||
-- OpenTTD <info@openttd.org> Mon, 01 Apr 2013 00:00:00 +0200
|
||||
|
||||
openttd (1.3.0~RC3) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.3.0-RC3
|
||||
|
||||
-- OpenTTD <info@openttd.org> Mon, 18 Mar 2013 00:00:00 +0100
|
||||
|
||||
openttd (1.3.0~RC2) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.3.0-RC2
|
||||
|
||||
-- OpenTTD <info@openttd.org> Tue, 05 Mar 2013 00:00:00 +0100
|
||||
|
||||
openttd (1.3.0~RC1) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.3.0-RC1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Tue, 19 Feb 2013 00:00:00 +0100
|
||||
|
||||
openttd (1.3.0~beta2) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.3.0-beta2
|
||||
|
||||
-- OpenTTD <info@openttd.org> Thu, 07 Feb 2013 00:00:00 +0100
|
||||
|
||||
openttd (1.3.0~beta1) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.3.0-beta1
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Mon, 24 Dec 2012 00:00:00 +0100
|
||||
-- OpenTTD <info@openttd.org> Mon, 24 Dec 2012 00:00:00 +0100
|
||||
|
||||
openttd (1.2.3) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.2.3
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Thu, 01 Nov 2012 00:00:00 +0200
|
||||
-- OpenTTD <info@openttd.org> Thu, 01 Nov 2012 00:00:00 +0200
|
||||
|
||||
openttd (1.2.3~RC1) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.2.3-RC1
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Wed, 17 Oct 2012 00:00:00 +0200
|
||||
-- OpenTTD <info@openttd.org> Wed, 17 Oct 2012 00:00:00 +0200
|
||||
|
||||
openttd (1.2.2) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.2.2
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Thu, 16 Aug 2012 20:00:00 +0200
|
||||
-- OpenTTD <info@openttd.org> Thu, 16 Aug 2012 20:00:00 +0200
|
||||
|
||||
openttd (1.2.2~RC1) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.2.2-RC1
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Wed, 01 Aug 2012 00:00:00 +0200
|
||||
-- OpenTTD <info@openttd.org> Wed, 01 Aug 2012 00:00:00 +0200
|
||||
|
||||
openttd (1.2.1) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.2.1
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Fri, 01 Jun 2012 00:00:00 +0200
|
||||
-- OpenTTD <info@openttd.org> Fri, 01 Jun 2012 00:00:00 +0200
|
||||
|
||||
openttd (1.2.1~RC1) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.2.1-RC1
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Wed, 16 Apr 2012 22:00:00 +0200
|
||||
-- OpenTTD <info@openttd.org> Wed, 16 Apr 2012 22:00:00 +0200
|
||||
|
||||
openttd (1.2.0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.2.0
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 15 Apr 2012 14:00:00 +0200
|
||||
-- OpenTTD <info@openttd.org> Sun, 15 Apr 2012 14:00:00 +0200
|
||||
|
||||
openttd (1.2.0~RC4) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.2.0-RC4
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 01 Apr 2012 00:00:00 +0200
|
||||
-- OpenTTD <info@openttd.org> Sun, 01 Apr 2012 00:00:00 +0200
|
||||
|
||||
openttd (1.2.0~RC3) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.2.0-RC3
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 18 Mar 2012 18:00:00 +0100
|
||||
-- OpenTTD <info@openttd.org> Sun, 18 Mar 2012 18:00:00 +0100
|
||||
|
||||
openttd (1.2.0~RC2) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.2.0-RC2
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 04 Mar 2012 18:00:00 +0100
|
||||
-- OpenTTD <info@openttd.org> Sun, 04 Mar 2012 18:00:00 +0100
|
||||
|
||||
openttd (1.2.0~RC1) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.2.0-RC1
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 19 Feb 2012 23:00:00 +0100
|
||||
-- OpenTTD <info@openttd.org> Sun, 19 Feb 2012 23:00:00 +0100
|
||||
|
||||
openttd (1.2.0~beta4) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.2.0-beta4
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 04 Feb 2012 16:00:00 +0100
|
||||
-- OpenTTD <info@openttd.org> Sat, 04 Feb 2012 16:00:00 +0100
|
||||
|
||||
openttd (1.2.0~beta3) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.2.0-beta3
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 21 Jan 2012 16:00:00 +0100
|
||||
-- OpenTTD <info@openttd.org> Sat, 21 Jan 2012 16:00:00 +0100
|
||||
|
||||
openttd (1.2.0~beta2) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.2.0-beta2
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 07 Jan 2012 00:00:00 +0100
|
||||
-- OpenTTD <info@openttd.org> Sat, 07 Jan 2012 00:00:00 +0100
|
||||
|
||||
openttd (1.2.0~beta1) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.2.0-beta1
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 24 Dec 2011 00:00:00 +0100
|
||||
-- OpenTTD <info@openttd.org> Sat, 24 Dec 2011 00:00:00 +0100
|
||||
|
||||
openttd (1.1.4) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.1.4
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Mon, 05 Dec 2011 00:00:00 +0400
|
||||
-- OpenTTD <info@openttd.org> Mon, 05 Dec 2011 00:00:00 +0400
|
||||
|
||||
openttd (1.1.4-RC1) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.1.4-RC1
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 20 Nov 2011 17:00:00 +0100
|
||||
-- OpenTTD <info@openttd.org> Sun, 20 Nov 2011 17:00:00 +0100
|
||||
|
||||
openttd (1.1.3) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.1.3
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Thu, 15 Sep 2011 21:00:00 +0200
|
||||
-- OpenTTD <info@openttd.org> Thu, 15 Sep 2011 21:00:00 +0200
|
||||
|
||||
openttd (1.1.3-RC1) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.1.3-RC1
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 04 Sep 2011 17:00:00 +0200
|
||||
-- OpenTTD <info@openttd.org> Sun, 04 Sep 2011 17:00:00 +0200
|
||||
|
||||
openttd (1.1.2) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.1.2
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 14 Aug 2011 17:00:00 +0200
|
||||
-- OpenTTD <info@openttd.org> Sun, 14 Aug 2011 17:00:00 +0200
|
||||
|
||||
openttd (1.1.2~RC2) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.1.2-RC2
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 30 Jul 2011 21:00:00 +0200
|
||||
-- OpenTTD <info@openttd.org> Sat, 30 Jul 2011 21:00:00 +0200
|
||||
|
||||
openttd (1.1.2~RC1) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.1.2-RC1
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 24 Jul 2011 21:00:00 +0200
|
||||
-- OpenTTD <info@openttd.org> Sun, 24 Jul 2011 21:00:00 +0200
|
||||
|
||||
openttd (1.1.1) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.1.1
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Wed, 01 Jun 2011 00:00:00 +0200
|
||||
-- OpenTTD <info@openttd.org> Wed, 01 Jun 2011 00:00:00 +0200
|
||||
|
||||
openttd (1.1.1~RC1) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.1.1-RC1
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 15 May 2011 21:00:00 +0200
|
||||
-- OpenTTD <info@openttd.org> Sun, 15 May 2011 21:00:00 +0200
|
||||
|
||||
openttd (1.1.0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.1.0
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Fri, 01 Apr 2011 00:00:00 +0100
|
||||
-- OpenTTD <info@openttd.org> Fri, 01 Apr 2011 00:00:00 +0100
|
||||
|
||||
openttd (1.1.0~RC3) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.1.0-RC3
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Fri, 18 Mar 2011 22:00:00 +0100
|
||||
-- OpenTTD <info@openttd.org> Fri, 18 Mar 2011 22:00:00 +0100
|
||||
|
||||
openttd (1.1.0~RC2) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.1.0-RC2
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Fri, 04 Mar 2011 22:00:00 +0100
|
||||
-- OpenTTD <info@openttd.org> Fri, 04 Mar 2011 22:00:00 +0100
|
||||
|
||||
openttd (1.1.0~RC1) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.1.0-RC1
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Fri, 18 Feb 2011 22:00:00 +0100
|
||||
-- OpenTTD <info@openttd.org> Fri, 18 Feb 2011 22:00:00 +0100
|
||||
|
||||
openttd (1.1.0~beta5) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.1.0-beta5
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Fri, 04 Feb 2011 22:00:00 +0100
|
||||
-- OpenTTD <info@openttd.org> Fri, 04 Feb 2011 22:00:00 +0100
|
||||
|
||||
openttd (1.1.0~beta4) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.1.0-beta4
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Fri, 21 Jan 2011 00:00:00 +0100
|
||||
-- OpenTTD <info@openttd.org> Fri, 21 Jan 2011 00:00:00 +0100
|
||||
|
||||
openttd (1.1.0~beta3) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.1.0-beta3
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 09 Jan 2011 18:00:00 +0100
|
||||
-- OpenTTD <info@openttd.org> Sun, 09 Jan 2011 18:00:00 +0100
|
||||
|
||||
openttd (1.1.0~beta2) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.1.0-beta2
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Fri, 31 Dec 2010 18:00:00 +0100
|
||||
-- OpenTTD <info@openttd.org> Fri, 31 Dec 2010 18:00:00 +0100
|
||||
|
||||
openttd (1.1.0~beta1) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.1.0-beta1
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Fri, 24 Dec 2010 00:00:00 +0100
|
||||
-- OpenTTD <info@openttd.org> Fri, 24 Dec 2010 00:00:00 +0100
|
||||
|
||||
openttd (1.0.5-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.0.5
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 20 Nov 2010 21:00:00 +0000
|
||||
-- OpenTTD <info@openttd.org> Sat, 20 Nov 2010 21:00:00 +0000
|
||||
|
||||
openttd (1.0.5~rc2-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.0.5~rc2
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 14 Nov 2010 15:00:00 +0000
|
||||
-- OpenTTD <info@openttd.org> Sun, 14 Nov 2010 15:00:00 +0000
|
||||
|
||||
openttd (1.0.5~rc1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.0.5-RC1
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 31 Oct 2010 15:00:00 +0000
|
||||
-- OpenTTD <info@openttd.org> Sun, 31 Oct 2010 15:00:00 +0000
|
||||
|
||||
openttd (1.0.4-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.0.4
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Tue, 14 Sep 2010 20:00:00 +0000
|
||||
-- OpenTTD <info@openttd.org> Tue, 14 Sep 2010 20:00:00 +0000
|
||||
|
||||
openttd (1.0.4~rc1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.0.4-RC1
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Mon, 30 Aug 2010 20:00:00 +0000
|
||||
-- OpenTTD <info@openttd.org> Mon, 30 Aug 2010 20:00:00 +0000
|
||||
|
||||
openttd (1.0.3-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.0.3
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sun, 01 Aug 2010 00:00:00 +0000
|
||||
-- OpenTTD <info@openttd.org> Sun, 01 Aug 2010 00:00:00 +0000
|
||||
|
||||
openttd (1.0.3~rc1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.0.3-RC1
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 05 Jul 2010 17:37:21 +0000
|
||||
-- OpenTTD <info@openttd.org> Sat, 05 Jul 2010 17:37:21 +0000
|
||||
|
||||
openttd (1.0.2-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.0.2
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 19 Jun 2010 18:36:21 +0000
|
||||
-- OpenTTD <info@openttd.org> Sat, 19 Jun 2010 18:36:21 +0000
|
||||
|
||||
openttd (1.0.2~rc1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.0.2-RC1
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 05 Jun 2010 23:36:21 +0000
|
||||
-- OpenTTD <info@openttd.org> Sat, 05 Jun 2010 23:36:21 +0000
|
||||
|
||||
openttd (1.0.1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.0.1
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 01 May 2010 00:00:00 +0200
|
||||
-- OpenTTD <info@openttd.org> Sat, 01 May 2010 00:00:00 +0200
|
||||
|
||||
openttd (1.0.1~rc2-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.0.1-RC2
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Wed, 21 Apr 2010 21:36:21 +0200
|
||||
-- OpenTTD <info@openttd.org> Wed, 21 Apr 2010 21:36:21 +0200
|
||||
|
||||
openttd (1.0.1~rc1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.0.1-RC1
|
||||
|
||||
-- Matthijs Kooijman <matthijs@stdin.nl> Sat, 17 Apr 2010 23:36:21 +0000
|
||||
-- OpenTTD <info@openttd.org> Sat, 17 Apr 2010 23:36:21 +0000
|
||||
|
||||
openttd (1.0.0-1) unstable; urgency=low
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
@echo off
|
||||
|
||||
set OPENTTD_VERSION=1.3.0-beta1
|
||||
set OPENTTD_VERSION=1.3.1
|
||||
set OPENSFX_VERSION=0.8.0
|
||||
set NOSOUND_VERSION=0.8.0
|
||||
set OPENGFX_VERSION=1.2.0
|
||||
|
@@ -17,9 +17,9 @@
|
||||
#
|
||||
|
||||
Name: openttd
|
||||
Version: 1.3.beta1
|
||||
Version: 1.3.beta2
|
||||
Release: 0
|
||||
%define srcver 1.3.0-beta1
|
||||
%define srcver 1.3.0-beta2
|
||||
Summary: An open source reimplementation of Chris Sawyer's Transport Tycoon Deluxe
|
||||
License: GPL-2.0
|
||||
Group: Amusements/Games/Strategy/Other
|
||||
@@ -227,11 +227,13 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
|
||||
%dir %{_datadir}/%{name}/baseset
|
||||
%dir %{_datadir}/%{name}/scripts
|
||||
%dir %{_datadir}/%{name}/ai
|
||||
%dir %{_datadir}/%{name}/game
|
||||
%{_datadir}/doc/%{name}/*
|
||||
%{_datadir}/%{name}/lang/*
|
||||
%{_datadir}/%{name}/baseset/*
|
||||
%{_datadir}/%{name}/scripts/*
|
||||
%{_datadir}/%{name}/ai/*
|
||||
%{_datadir}/%{name}/game/*
|
||||
%doc %{_mandir}/man6/%{name}.6.*
|
||||
|
||||
%files gui
|
||||
|
@@ -1,9 +1,9 @@
|
||||
# Version numbers to update
|
||||
!define APPV_MAJOR 1
|
||||
!define APPV_MINOR 3
|
||||
!define APPV_MAINT 0
|
||||
!define APPV_BUILD 0
|
||||
!define APPV_EXTRA "-beta1"
|
||||
!define APPV_MAINT 1
|
||||
!define APPV_BUILD 1
|
||||
!define APPV_EXTRA ""
|
||||
|
||||
!define APPNAME "OpenTTD" ; Define application name
|
||||
!define APPVERSION "${APPV_MAJOR}.${APPV_MINOR}.${APPV_MAINT}${APPV_EXTRA}" ; Define application version
|
||||
@@ -124,6 +124,10 @@ Section "!OpenTTD" Section1
|
||||
SetOutPath "$INSTDIR\ai\"
|
||||
File ${PATH_ROOT}bin\ai\compat_*.nut
|
||||
|
||||
; Copy Game Script files
|
||||
SetOutPath "$INSTDIR\game\"
|
||||
File ${PATH_ROOT}bin\game\compat_*.nut
|
||||
|
||||
; Copy data files
|
||||
SetOutPath "$INSTDIR\baseset\"
|
||||
File ${PATH_ROOT}bin\baseset\*.grf
|
||||
@@ -398,6 +402,9 @@ Section "Uninstall"
|
||||
; AI files
|
||||
Delete "$INSTDIR\ai\compat_*.nut"
|
||||
|
||||
; Game Script files
|
||||
Delete "$INSTDIR\game\compat_*.nut"
|
||||
|
||||
; Baseset files
|
||||
Delete "$INSTDIR\baseset\opntitle.dat"
|
||||
Delete "$INSTDIR\baseset\openttd.grf"
|
||||
@@ -469,6 +476,7 @@ Section "Uninstall"
|
||||
RMDir "$SMPROGRAMS\$SHORTCUTS\Docs\"
|
||||
RMDir "$SMPROGRAMS\$SHORTCUTS"
|
||||
RMDir "$INSTDIR\ai"
|
||||
RMDir "$INSTDIR\game"
|
||||
RMDir "$INSTDIR\data"
|
||||
RMDir "$INSTDIR\baseset"
|
||||
RMDir "$INSTDIR\gm"
|
||||
|
@@ -59,6 +59,12 @@
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)</AdditionalInputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\lang\arabic_egypt.lng;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\basque.txt">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating basque language file</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)</AdditionalInputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\lang\basque.lng;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\belarusian.txt">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating belarusian language file</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"</Command>
|
||||
@@ -131,6 +137,12 @@
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)</AdditionalInputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\lang\estonian.lng;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\faroese.txt">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating faroese language file</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)</AdditionalInputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\lang\faroese.lng;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\finnish.txt">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating finnish language file</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"</Command>
|
||||
@@ -143,6 +155,12 @@
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)</AdditionalInputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\lang\french.lng;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\gaelic.txt">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating gaelic language file</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)</AdditionalInputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\lang\gaelic.lng;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\galician.txt">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating galician language file</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"</Command>
|
||||
@@ -305,6 +323,12 @@
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)</AdditionalInputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\lang\swedish.lng;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\tamil.txt">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating tamil language file</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"</Command>
|
||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)</AdditionalInputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\bin\lang\tamil.lng;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\traditional_chinese.txt">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating traditional_chinese language file</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"</Command>
|
||||
|
@@ -13,6 +13,9 @@
|
||||
<CustomBuild Include="..\src\lang\arabic_egypt.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\basque.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\belarusian.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
@@ -49,12 +52,18 @@
|
||||
<CustomBuild Include="..\src\lang\estonian.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\faroese.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\finnish.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\french.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\gaelic.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\galician.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
@@ -136,6 +145,9 @@
|
||||
<CustomBuild Include="..\src\lang\swedish.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\tamil.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\traditional_chinese.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
|
@@ -93,6 +93,21 @@
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\basque.txt"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating basque language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
exit 0
"
|
||||
AdditionalDependencies="..\src\lang\english.txt;..\objs\strgen\strgen.exe"
|
||||
Outputs="..\bin\lang\basque.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\belarusian.txt"
|
||||
>
|
||||
@@ -273,6 +288,21 @@
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\faroese.txt"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating faroese language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
exit 0
"
|
||||
AdditionalDependencies="..\src\lang\english.txt;..\objs\strgen\strgen.exe"
|
||||
Outputs="..\bin\lang\faroese.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\finnish.txt"
|
||||
>
|
||||
@@ -303,6 +333,21 @@
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\gaelic.txt"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating gaelic language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
exit 0
"
|
||||
AdditionalDependencies="..\src\lang\english.txt;..\objs\strgen\strgen.exe"
|
||||
Outputs="..\bin\lang\gaelic.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\galician.txt"
|
||||
>
|
||||
@@ -708,6 +753,21 @@
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\tamil.txt"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating tamil language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
exit 0
"
|
||||
AdditionalDependencies="..\src\lang\english.txt;..\objs\strgen\strgen.exe"
|
||||
Outputs="..\bin\lang\tamil.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\traditional_chinese.txt"
|
||||
>
|
||||
|
@@ -94,6 +94,21 @@
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\basque.txt"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating basque language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
exit 0
"
|
||||
AdditionalDependencies="..\src\lang\english.txt;..\objs\strgen\strgen.exe"
|
||||
Outputs="..\bin\lang\basque.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\belarusian.txt"
|
||||
>
|
||||
@@ -274,6 +289,21 @@
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\faroese.txt"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating faroese language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
exit 0
"
|
||||
AdditionalDependencies="..\src\lang\english.txt;..\objs\strgen\strgen.exe"
|
||||
Outputs="..\bin\lang\faroese.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\finnish.txt"
|
||||
>
|
||||
@@ -304,6 +334,21 @@
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\gaelic.txt"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating gaelic language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
exit 0
"
|
||||
AdditionalDependencies="..\src\lang\english.txt;..\objs\strgen\strgen.exe"
|
||||
Outputs="..\bin\lang\gaelic.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\galician.txt"
|
||||
>
|
||||
@@ -709,6 +754,21 @@
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\tamil.txt"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating tamil language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
exit 0
"
|
||||
AdditionalDependencies="..\src\lang\english.txt;..\objs\strgen\strgen.exe"
|
||||
Outputs="..\bin\lang\tamil.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\traditional_chinese.txt"
|
||||
>
|
||||
|
@@ -102,7 +102,7 @@
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>Sync</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
@@ -204,7 +204,7 @@
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>Sync</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
|
@@ -102,7 +102,7 @@
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>Sync</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
@@ -204,7 +204,7 @@
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>Sync</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
|
@@ -52,7 +52,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -257,7 +257,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64;WITH_ASSERT"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
|
@@ -52,7 +52,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -257,7 +257,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64;WITH_ASSERT"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
|
@@ -53,7 +53,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -255,7 +255,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64;WITH_ASSERT"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
|
@@ -53,7 +53,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -255,7 +255,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64;WITH_ASSERT"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
|
52
readme.txt
52
readme.txt
@@ -1,6 +1,5 @@
|
||||
OpenTTD readme
|
||||
Last updated: 2012-12-24
|
||||
Release version: 1.3.0-beta1
|
||||
Last updated: 2013-06-01
|
||||
Release version: 1.3.1
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -22,6 +21,7 @@ Table of contents
|
||||
7.0) Compiling
|
||||
* 7.1) Required/optional libraries
|
||||
* 7.2) Supported compilers
|
||||
* 7.3) Compilation of base sets
|
||||
8.0) Translating
|
||||
* 8.1) Translation
|
||||
* 8.2) Previewing
|
||||
@@ -218,9 +218,9 @@ The Windows installer can optionally download and install these packages.
|
||||
4.1.2) Original Transport Tycoon Deluxe graphics and sound files
|
||||
------ ---------------------------------------------------------
|
||||
If you want to play with the original Transport Tycoon Deluxe data files you
|
||||
have to copy the data files from the CD-ROM into the data/ directory. It does
|
||||
not matter whether you copy them from the DOS or Windows version of Transport
|
||||
Tycoon Deluxe. The Windows install can optionally copy these files.
|
||||
have to copy the data files from the CD-ROM into the baseset/ directory. It
|
||||
does not matter whether you copy them from the DOS or Windows version of
|
||||
Transport Tycoon Deluxe. The Windows install can optionally copy these files.
|
||||
You need to copy the following files:
|
||||
- sample.cat
|
||||
- trg1r.grf or TRG1.GRF
|
||||
@@ -409,7 +409,6 @@ Information logged:
|
||||
original Transport Tycoon version
|
||||
* Running a modified OpenTTD build
|
||||
* Changing settings affecting NewGRF behaviour (non-network-safe settings)
|
||||
* Changing landscape (by cheat)
|
||||
* Triggering NewGRF bugs
|
||||
|
||||
No personal information is stored.
|
||||
@@ -501,21 +500,15 @@ open most older savegames or use the content downloading system.
|
||||
Without libSDL/liballegro on non-Windows and non-MacOS X machines you have
|
||||
no graphical user interface; you would be building a dedicated server.
|
||||
|
||||
To recompile the extra graphics needed to play with the original Transport
|
||||
Tycoon Deluxe graphics you need GRFCodec (which includes NFORenum) as well.
|
||||
GRFCodec can be found at: http://www.openttd.org/download-grfcodec
|
||||
The compilation of these extra graphics does generally not happen, unless
|
||||
you remove the graphics file using 'make maintainer-clean'.
|
||||
|
||||
7.2) Supported compilers
|
||||
---- -------------------
|
||||
The following compilers are known to compile OpenTTD:
|
||||
- Microsoft Visual C++ (MSVC) 2005, 2008 and 2010.
|
||||
Version 2005 gives bogus warnings about scoping issues.
|
||||
- GNU Compiler Collection (GCC) 3.3 - 4.7.
|
||||
- GNU Compiler Collection (GCC) 3.3 - 4.4, 4.6 - 4.8.
|
||||
Versions 4.1 and earlier give bogus warnings about uninitialised variables.
|
||||
Versions 4.4 - 4.6 give bogus warnings about freeing non-heap objects.
|
||||
Versions 4.5 and later give invalid warnings when lto is enabled.
|
||||
Versions 4.4, 4.6 give bogus warnings about freeing non-heap objects.
|
||||
Versions 4.6 and later give invalid warnings when lto is enabled.
|
||||
- Intel C++ Compiler (ICC) 12.0.
|
||||
- Clang/LLVM 2.9 - 3.0
|
||||
Version 2.9 gives bogus warnings about code nonconformity.
|
||||
@@ -524,6 +517,8 @@ The following compilers are known not to compile OpenTTD:
|
||||
- Microsoft Visual C++ (MSVC) 2003 and earlier.
|
||||
- GNU Compiler Collection (GCC) 3.2 and earlier.
|
||||
These old versions fail due to OpenTTD's template usage.
|
||||
- GNU Compiler Collection (GCC) 4.5. It optimizes enums too aggressively.
|
||||
See http://bugs.openttd.org/task/5513 and references therein.
|
||||
- Intel C++ Compiler (ICC) 11.1 and earlier.
|
||||
Version 10.0 and earlier fail a configure check and fail with recent system
|
||||
headers.
|
||||
@@ -535,6 +530,21 @@ The following compilers are known not to compile OpenTTD:
|
||||
If any of these compilers can compile OpenTTD again, please let us know.
|
||||
Patches to support more compilers are welcome.
|
||||
|
||||
7.3) Compilation of base sets
|
||||
-----------------------------
|
||||
To recompile the extra graphics needed to play with the original Transport
|
||||
Tycoon Deluxe graphics you need GRFCodec (which includes NFORenum) as well.
|
||||
GRFCodec can be found at: http://www.openttd.org/download-grfcodec
|
||||
The compilation of these extra graphics does generally not happen, unless
|
||||
you remove the graphics file using 'make maintainer-clean'.
|
||||
|
||||
Re-compilation of the base sets, thus also use of --maintainer-clean can
|
||||
leave the repository in a modified state as different grfcodec versions can
|
||||
cause binary differences in the resulting grf. Also translations might have
|
||||
been added for the base sets which are not yet included in the base set
|
||||
information files. Use the configure option --without-grfcodec to avoid
|
||||
modification of the base set files by the build process.
|
||||
|
||||
|
||||
8.0) Translating
|
||||
---- -----------
|
||||
@@ -572,10 +582,9 @@ Note: Do not alter the following parts of the file:
|
||||
8.2) Previewing
|
||||
---- ----------
|
||||
In order to view the translation in the game, you need to compile your language
|
||||
file with the strgen utility. You can download the precompiled strgen from:
|
||||
http://www.openttd.org/download-strgen
|
||||
To compile it yourself just take the normal OpenTTD sources and build that.
|
||||
During the build process the strgen utility will be made.
|
||||
file with the strgen utility. As this utility is tailored to a specific OpenTTD
|
||||
version, you need to compile it yourself. Just take the normal OpenTTD sources
|
||||
and build that. During the build process the strgen utility will be made.
|
||||
|
||||
strgen is a command-line utility. It takes the language filename as parameter.
|
||||
Example:
|
||||
@@ -670,7 +679,7 @@ Retired Developers:
|
||||
|
||||
Thanks to:
|
||||
Josef Drexler - For his great work on TTDPatch.
|
||||
Marcin Grzegorczyk - For his TTDPatch work and documentation of Transport Tycoon Deluxe internals and graphics (signals and track foundations)
|
||||
Marcin Grzegorczyk - For his TTDPatch work and documentation of Transport Tycoon Deluxe internals and track foundations
|
||||
Petr Baudiš (pasky) - Many patches, newgrf support, etc.
|
||||
Simon Sasburg (HackyKid) - For the many bugfixes he has blessed us with
|
||||
Stefan Meißner (sign_de) - For his work on the console
|
||||
@@ -684,7 +693,6 @@ Thanks to:
|
||||
George - Canal graphics
|
||||
Andrew Parkhouse (andythenorth) - River graphics
|
||||
David Dallaston (Pikka) - Tram tracks
|
||||
Marcin Grzegorczyk - Foundations for tracks on slopes,
|
||||
All Translators - For their support to make OpenTTD a truly international game
|
||||
Bug Reporters - Thanks for all bug reports
|
||||
Chris Sawyer - For an amazing game!
|
||||
|
@@ -917,6 +917,7 @@ public:
|
||||
_last_stacksize = _fs->GetStackSize();
|
||||
Statement();
|
||||
CleanStack(stacksize);
|
||||
_fs->AddLineInfos(_lex._currentline, _lineinfo, true);
|
||||
Expect(TK_WHILE);
|
||||
SQInteger continuetrg = _fs->GetCurrentPos();
|
||||
Expect(_SC('(')); CommaExpr(); Expect(_SC(')'));
|
||||
|
2
src/3rdparty/squirrel/squirrel/sqvm.cpp
vendored
2
src/3rdparty/squirrel/squirrel/sqvm.cpp
vendored
@@ -1190,7 +1190,7 @@ bool SQVM::CallNative(SQNativeClosure *nclosure,SQInteger nargs,SQInteger stackb
|
||||
throw;
|
||||
}
|
||||
|
||||
assert(cstksize == _callsstacksize);
|
||||
_callsstacksize = cstksize;
|
||||
|
||||
_nnativecalls--;
|
||||
suspend = false;
|
||||
|
@@ -26,7 +26,7 @@ typedef std::map<const char *, class ScriptInfo *, StringCompare> ScriptInfoList
|
||||
class AI {
|
||||
public:
|
||||
/**
|
||||
* The default months AIs start after eachother.
|
||||
* The default months AIs start after each other.
|
||||
*/
|
||||
enum StartNext {
|
||||
START_NEXT_EASY = DAYS_IN_YEAR * 2,
|
||||
|
@@ -197,7 +197,7 @@
|
||||
|
||||
/* static */ void AI::ResetConfig()
|
||||
{
|
||||
/* Check for both newgame as current game if we can reload the AIInfo insde
|
||||
/* Check for both newgame as current game if we can reload the AIInfo inside
|
||||
* the AIConfig. If not, remove the AI from the list (which will assign
|
||||
* a random new AI on reload). */
|
||||
for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) {
|
||||
|
@@ -987,6 +987,56 @@ struct AIDebugWindow : public Window {
|
||||
return (ScriptLog::LogData *)Company::Get(ai_debug_company)->ai_instance->GetLogPointer();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the currently selected AI/GS is dead.
|
||||
* @return true if dead.
|
||||
*/
|
||||
bool IsDead() const
|
||||
{
|
||||
if (ai_debug_company == OWNER_DEITY) {
|
||||
GameInstance *game = Game::GetInstance();
|
||||
return game == NULL || game->IsDead();
|
||||
}
|
||||
return !Company::IsValidAiID(ai_debug_company) || Company::Get(ai_debug_company)->ai_instance->IsDead();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether a company is a valid AI company or GS.
|
||||
* @param company Company to check for validity.
|
||||
* @return true if company is valid for debugging.
|
||||
*/
|
||||
bool IsValidDebugCompany(CompanyID company) const
|
||||
{
|
||||
switch (company) {
|
||||
case INVALID_COMPANY: return false;
|
||||
case OWNER_DEITY: return Game::GetInstance() != NULL;
|
||||
default: return Company::IsValidAiID(company);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure that \c ai_debug_company refers to a valid AI company or GS, or is set to #INVALID_COMPANY.
|
||||
* If no valid company is selected, it selects the first valid AI or GS if any.
|
||||
*/
|
||||
void SelectValidDebugCompany()
|
||||
{
|
||||
/* Check if the currently selected company is still active. */
|
||||
if (this->IsValidDebugCompany(ai_debug_company)) return;
|
||||
|
||||
ai_debug_company = INVALID_COMPANY;
|
||||
|
||||
const Company *c;
|
||||
FOR_ALL_COMPANIES(c) {
|
||||
if (c->is_ai) {
|
||||
ChangeToAI(c->index);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* If no AI is available, see if there is a game script. */
|
||||
if (Game::GetInstance() != NULL) ChangeToAI(OWNER_DEITY);
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructor for the window.
|
||||
* @param desc The description of the window.
|
||||
@@ -1001,14 +1051,6 @@ struct AIDebugWindow : public Window {
|
||||
this->FinishInitNested(desc, number);
|
||||
|
||||
if (!this->show_break_box) break_check_enabled = false;
|
||||
/* Disable the companies who are not active or not an AI */
|
||||
for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) {
|
||||
this->SetWidgetDisabledState(i + WID_AID_COMPANY_BUTTON_START, !Company::IsValidAiID(i));
|
||||
}
|
||||
this->EnableWidget(WID_AID_SCRIPT_GAME);
|
||||
this->DisableWidget(WID_AID_RELOAD_TOGGLE);
|
||||
this->DisableWidget(WID_AID_SETTINGS);
|
||||
this->DisableWidget(WID_AID_CONTINUE_BTN);
|
||||
|
||||
this->last_vscroll_pos = 0;
|
||||
this->autoscroll = true;
|
||||
@@ -1019,17 +1061,8 @@ struct AIDebugWindow : public Window {
|
||||
/* Restore the break string value from static variable */
|
||||
this->break_editbox.text.Assign(this->break_string);
|
||||
|
||||
/* Restore button state from static class variables */
|
||||
if (ai_debug_company == OWNER_DEITY) {
|
||||
this->LowerWidget(WID_AID_SCRIPT_GAME);
|
||||
this->SetWidgetDisabledState(WID_AID_CONTINUE_BTN, !Game::IsPaused());
|
||||
} else if (ai_debug_company != INVALID_COMPANY) {
|
||||
this->LowerWidget(ai_debug_company + WID_AID_COMPANY_BUTTON_START);
|
||||
this->SetWidgetDisabledState(WID_AID_CONTINUE_BTN, !AI::IsPaused(ai_debug_company));
|
||||
}
|
||||
this->SetWidgetLoweredState(WID_AID_BREAK_STR_ON_OFF_BTN, this->break_check_enabled);
|
||||
this->SetWidgetLoweredState(WID_AID_MATCH_CASE_BTN, this->case_sensitive_break_check);
|
||||
|
||||
this->SelectValidDebugCompany();
|
||||
this->InvalidateData(-1);
|
||||
}
|
||||
|
||||
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
|
||||
@@ -1042,67 +1075,31 @@ struct AIDebugWindow : public Window {
|
||||
|
||||
virtual void OnPaint()
|
||||
{
|
||||
/* Check if the currently selected company is still active. */
|
||||
if (ai_debug_company == INVALID_COMPANY || (ai_debug_company != OWNER_DEITY && !Company::IsValidAiID(ai_debug_company))) {
|
||||
if (ai_debug_company != INVALID_COMPANY) {
|
||||
/* Raise the widget for the previous selection. */
|
||||
this->RaiseWidget(ai_debug_company + WID_AID_COMPANY_BUTTON_START);
|
||||
|
||||
ai_debug_company = INVALID_COMPANY;
|
||||
}
|
||||
|
||||
const Company *c;
|
||||
FOR_ALL_COMPANIES(c) {
|
||||
if (c->is_ai) {
|
||||
/* Lower the widget corresponding to this company. */
|
||||
this->LowerWidget(c->index + WID_AID_COMPANY_BUTTON_START);
|
||||
|
||||
ai_debug_company = c->index;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* If no AI is available, see if there is a game script. */
|
||||
if (ai_debug_company == INVALID_COMPANY && Game::GetInstance() != NULL) {
|
||||
/* Lower the widget corresponding to the game script. */
|
||||
this->LowerWidget(WID_AID_SCRIPT_GAME);
|
||||
|
||||
ai_debug_company = OWNER_DEITY;
|
||||
}
|
||||
}
|
||||
|
||||
/* Update "Reload AI" and "AI settings" buttons */
|
||||
this->SetWidgetDisabledState(WID_AID_SETTINGS, ai_debug_company == INVALID_COMPANY);
|
||||
this->SetWidgetDisabledState(WID_AID_RELOAD_TOGGLE, ai_debug_company == INVALID_COMPANY || ai_debug_company == OWNER_DEITY);
|
||||
this->SetWidgetDisabledState(WID_AID_SCRIPT_GAME, Game::GetGameInstance() == NULL);
|
||||
this->SelectValidDebugCompany();
|
||||
|
||||
/* Draw standard stuff */
|
||||
this->DrawWidgets();
|
||||
|
||||
if (this->IsShaded()) return; // Don't draw anything when the window is shaded.
|
||||
|
||||
bool dirty = false;
|
||||
|
||||
/* Paint the company icons */
|
||||
for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) {
|
||||
NWidgetCore *button = this->GetWidget<NWidgetCore>(i + WID_AID_COMPANY_BUTTON_START);
|
||||
bool dirty = false;
|
||||
|
||||
bool valid = Company::IsValidAiID(i);
|
||||
bool disabled = !valid;
|
||||
if (button->IsDisabled() != disabled) {
|
||||
/* Invalid/non-AI companies have button disabled */
|
||||
button->SetDisabled(disabled);
|
||||
dirty = true;
|
||||
}
|
||||
|
||||
/* Check whether the validity of the company changed */
|
||||
dirty |= (button->IsDisabled() == valid);
|
||||
|
||||
/* Mark dead/paused AIs by setting the background colour. */
|
||||
bool dead = valid && Company::Get(i)->ai_instance->IsDead();
|
||||
bool paused = valid && Company::Get(i)->ai_instance->IsPaused();
|
||||
/* Re-paint if the button was updated.
|
||||
* (note that it is intentional that SetScriptButtonColour is always called) */
|
||||
dirty = SetScriptButtonColour(*button, dead, paused) || dirty;
|
||||
dirty |= SetScriptButtonColour(*button, dead, paused);
|
||||
|
||||
/* Do we need a repaint? */
|
||||
if (dirty) this->SetDirty();
|
||||
/* Draw company icon only for valid AI companies */
|
||||
if (!valid) continue;
|
||||
|
||||
@@ -1112,13 +1109,14 @@ struct AIDebugWindow : public Window {
|
||||
|
||||
/* Set button colour for Game Script. */
|
||||
GameInstance *game = Game::GetInstance();
|
||||
bool dead = game != NULL && game->IsDead();
|
||||
bool paused = game != NULL && game->IsPaused();
|
||||
bool valid = game != NULL;
|
||||
bool dead = valid && game->IsDead();
|
||||
bool paused = valid && game->IsPaused();
|
||||
|
||||
NWidgetCore *button = this->GetWidget<NWidgetCore>(WID_AID_SCRIPT_GAME);
|
||||
if (SetScriptButtonColour(*button, dead, paused)) {
|
||||
/* Re-paint if the button was updated. */
|
||||
this->SetWidgetDirty(WID_AID_SCRIPT_GAME);
|
||||
}
|
||||
dirty |= (button->IsDisabled() == valid) || SetScriptButtonColour(*button, dead, paused);
|
||||
|
||||
if (dirty) this->InvalidateData(-1);
|
||||
|
||||
/* If there are no active companies, don't display anything else. */
|
||||
if (ai_debug_company == INVALID_COMPANY) return;
|
||||
@@ -1220,30 +1218,19 @@ struct AIDebugWindow : public Window {
|
||||
*/
|
||||
void ChangeToAI(CompanyID show_ai)
|
||||
{
|
||||
if (ai_debug_company == OWNER_DEITY) {
|
||||
this->RaiseWidget(WID_AID_SCRIPT_GAME);
|
||||
} else {
|
||||
this->RaiseWidget(ai_debug_company + WID_AID_COMPANY_BUTTON_START);
|
||||
}
|
||||
if (!this->IsValidDebugCompany(show_ai)) return;
|
||||
|
||||
ai_debug_company = show_ai;
|
||||
|
||||
ScriptLog::LogData *log = this->GetLogPointer();
|
||||
this->vscroll->SetCount((log == NULL) ? 0 : log->used);
|
||||
|
||||
if (ai_debug_company == OWNER_DEITY) {
|
||||
this->LowerWidget(WID_AID_SCRIPT_GAME);
|
||||
this->SetWidgetDisabledState(WID_AID_CONTINUE_BTN, !Game::IsPaused());
|
||||
} else {
|
||||
this->LowerWidget(ai_debug_company + WID_AID_COMPANY_BUTTON_START);
|
||||
this->SetWidgetDisabledState(WID_AID_CONTINUE_BTN, !AI::IsPaused(ai_debug_company));
|
||||
}
|
||||
|
||||
this->highlight_row = -1; // The highlight of one AI make little sense for another AI.
|
||||
this->autoscroll = true;
|
||||
this->last_vscroll_pos = this->vscroll->GetPosition();
|
||||
this->SetDirty();
|
||||
|
||||
/* Close AI settings window to prevent confusion */
|
||||
DeleteWindowByClass(WC_AI_SETTINGS);
|
||||
|
||||
this->InvalidateData(-1);
|
||||
|
||||
this->autoscroll = true;
|
||||
this->last_vscroll_pos = this->vscroll->GetPosition();
|
||||
}
|
||||
|
||||
virtual void OnClick(Point pt, int widget, int click_count)
|
||||
@@ -1274,24 +1261,22 @@ struct AIDebugWindow : public Window {
|
||||
|
||||
case WID_AID_BREAK_STR_ON_OFF_BTN:
|
||||
this->break_check_enabled = !this->break_check_enabled;
|
||||
this->SetWidgetLoweredState(WID_AID_BREAK_STR_ON_OFF_BTN, this->break_check_enabled);
|
||||
this->SetWidgetDirty(WID_AID_BREAK_STR_ON_OFF_BTN);
|
||||
this->InvalidateData(-1);
|
||||
break;
|
||||
|
||||
case WID_AID_MATCH_CASE_BTN:
|
||||
this->case_sensitive_break_check = !this->case_sensitive_break_check;
|
||||
this->SetWidgetLoweredState(WID_AID_MATCH_CASE_BTN, this->case_sensitive_break_check);
|
||||
this->SetWidgetDirty(WID_AID_MATCH_CASE_BTN);
|
||||
this->InvalidateData(-1);
|
||||
break;
|
||||
|
||||
case WID_AID_CONTINUE_BTN:
|
||||
/* Unpause current AI / game script and mark the corresponding script button dirty. */
|
||||
if (ai_debug_company == OWNER_DEITY) {
|
||||
Game::Unpause();
|
||||
this->SetWidgetDirty(WID_AID_SCRIPT_GAME);
|
||||
} else {
|
||||
AI::Unpause(ai_debug_company);
|
||||
this->SetWidgetDirty(WID_AID_COMPANY_BUTTON_START + ai_debug_company);
|
||||
if (!this->IsDead()) {
|
||||
if (ai_debug_company == OWNER_DEITY) {
|
||||
Game::Unpause();
|
||||
} else {
|
||||
AI::Unpause(ai_debug_company);
|
||||
}
|
||||
}
|
||||
|
||||
/* If the last AI/Game Script is unpaused, unpause the game too. */
|
||||
@@ -1313,8 +1298,7 @@ struct AIDebugWindow : public Window {
|
||||
}
|
||||
|
||||
this->highlight_row = -1;
|
||||
this->SetWidgetDirty(WID_AID_LOG_PANEL);
|
||||
this->DisableWidget(WID_AID_CONTINUE_BTN);
|
||||
this->InvalidateData(-1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1348,15 +1332,14 @@ struct AIDebugWindow : public Window {
|
||||
/**
|
||||
* Some data on this window has become invalid.
|
||||
* @param data Information about the changed data.
|
||||
* This is the company ID of the AI/GS which wrote a new log message, or -1 in other cases.
|
||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||
*/
|
||||
virtual void OnInvalidateData(int data = 0, bool gui_scope = true)
|
||||
{
|
||||
if (data == -1 || ai_debug_company == data) this->SetDirty();
|
||||
|
||||
/* If the log message is related to the active company tab, check the break string.
|
||||
* This needs to be done in gameloop-scope, so the AI is suspended immediately. */
|
||||
if (!gui_scope && data == ai_debug_company && this->break_check_enabled && !this->break_string_filter.IsEmpty()) {
|
||||
if (!gui_scope && data == ai_debug_company && this->IsValidDebugCompany(ai_debug_company) && this->break_check_enabled && !this->break_string_filter.IsEmpty()) {
|
||||
/* Get the log instance of the active company */
|
||||
ScriptLog::LogData *log = this->GetLogPointer();
|
||||
|
||||
@@ -1365,10 +1348,12 @@ struct AIDebugWindow : public Window {
|
||||
this->break_string_filter.AddLine(log->lines[log->pos]);
|
||||
if (this->break_string_filter.GetState()) {
|
||||
/* Pause execution of script. */
|
||||
if (ai_debug_company == OWNER_DEITY) {
|
||||
Game::Pause();
|
||||
} else {
|
||||
AI::Pause(ai_debug_company);
|
||||
if (!this->IsDead()) {
|
||||
if (ai_debug_company == OWNER_DEITY) {
|
||||
Game::Pause();
|
||||
} else {
|
||||
AI::Pause(ai_debug_company);
|
||||
}
|
||||
}
|
||||
|
||||
/* Pause the game. */
|
||||
@@ -1376,15 +1361,35 @@ struct AIDebugWindow : public Window {
|
||||
DoCommandP(0, PM_PAUSED_NORMAL, 1, CMD_PAUSE);
|
||||
}
|
||||
|
||||
/* Make it possible to click on the continue button */
|
||||
this->EnableWidget(WID_AID_CONTINUE_BTN);
|
||||
this->SetWidgetDirty(WID_AID_CONTINUE_BTN);
|
||||
|
||||
/* Highlight row that matched */
|
||||
this->highlight_row = log->pos;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!gui_scope) return;
|
||||
|
||||
this->SelectValidDebugCompany();
|
||||
|
||||
ScriptLog::LogData *log = ai_debug_company != INVALID_COMPANY ? this->GetLogPointer() : NULL;
|
||||
this->vscroll->SetCount((log == NULL) ? 0 : log->used);
|
||||
|
||||
/* Update company buttons */
|
||||
for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) {
|
||||
this->SetWidgetDisabledState(i + WID_AID_COMPANY_BUTTON_START, !Company::IsValidAiID(i));
|
||||
this->SetWidgetLoweredState(i + WID_AID_COMPANY_BUTTON_START, ai_debug_company == i);
|
||||
}
|
||||
|
||||
this->SetWidgetDisabledState(WID_AID_SCRIPT_GAME, Game::GetGameInstance() == NULL);
|
||||
this->SetWidgetLoweredState(WID_AID_SCRIPT_GAME, ai_debug_company == OWNER_DEITY);
|
||||
|
||||
this->SetWidgetLoweredState(WID_AID_BREAK_STR_ON_OFF_BTN, this->break_check_enabled);
|
||||
this->SetWidgetLoweredState(WID_AID_MATCH_CASE_BTN, this->case_sensitive_break_check);
|
||||
|
||||
this->SetWidgetDisabledState(WID_AID_SETTINGS, ai_debug_company == INVALID_COMPANY);
|
||||
this->SetWidgetDisabledState(WID_AID_RELOAD_TOGGLE, ai_debug_company == INVALID_COMPANY || ai_debug_company == OWNER_DEITY);
|
||||
this->SetWidgetDisabledState(WID_AID_CONTINUE_BTN, ai_debug_company == INVALID_COMPANY ||
|
||||
(ai_debug_company == OWNER_DEITY ? !Game::IsPaused() : !AI::IsPaused(ai_debug_company)));
|
||||
}
|
||||
|
||||
virtual void OnResize()
|
||||
|
@@ -238,8 +238,17 @@ ScriptInfo *AIInstance::FindLibrary(const char *library, int version)
|
||||
*/
|
||||
void CcAI(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
{
|
||||
Company::Get(_current_company)->ai_instance->DoCommandCallback(result, tile, p1, p2);
|
||||
Company::Get(_current_company)->ai_instance->Continue();
|
||||
/*
|
||||
* The company might not exist anymore. Check for this.
|
||||
* The command checks are not useful since this callback
|
||||
* is also called when the command fails, which is does
|
||||
* when the company does not exist anymore.
|
||||
*/
|
||||
const Company *c = Company::GetIfValid(_current_company);
|
||||
if (c == NULL || c->ai_instance == NULL) return;
|
||||
|
||||
c->ai_instance->DoCommandCallback(result, tile, p1, p2);
|
||||
c->ai_instance->Continue();
|
||||
}
|
||||
|
||||
CommandCallback *AIInstance::GetDoCommandCallback()
|
||||
|
@@ -30,7 +30,7 @@ public:
|
||||
/**
|
||||
* Check if we have an AI by name and version available in our list.
|
||||
* @param nameParam The name of the AI.
|
||||
* @param versionParam The versionof the AI, or -1 if you want the latest.
|
||||
* @param versionParam The version of the AI, or -1 if you want the latest.
|
||||
* @param force_exact_match Only match name+version, never latest.
|
||||
* @return NULL if no match found, otherwise the AI that matched.
|
||||
*/
|
||||
|
@@ -136,6 +136,11 @@ static StationID FindNearestHangar(const Aircraft *v)
|
||||
|
||||
/* v->tile can't be used here, when aircraft is flying v->tile is set to 0 */
|
||||
uint distance = DistanceSquare(vtile, st->airport.tile);
|
||||
if (v->acache.cached_max_range_sqr != 0) {
|
||||
/* Check if our current destination can be reached from the depot airport. */
|
||||
const Station *cur_dest = GetTargetAirportIfValid(v);
|
||||
if (cur_dest != NULL && DistanceSquare(st->airport.tile, cur_dest->airport.tile) > v->acache.cached_max_range_sqr) continue;
|
||||
}
|
||||
if (distance < best || index == INVALID_STATION) {
|
||||
best = distance;
|
||||
index = st->index;
|
||||
@@ -297,7 +302,7 @@ CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, const Engine *
|
||||
v->targetairport = GetStationIndex(tile);
|
||||
v->SetNext(u);
|
||||
|
||||
v->service_interval = Company::Get(_current_company)->settings.vehicle.servint_aircraft;
|
||||
v->SetServiceInterval(Company::Get(_current_company)->settings.vehicle.servint_aircraft);
|
||||
|
||||
v->date_of_last_service = _date;
|
||||
v->build_year = u->build_year = _cur_year;
|
||||
@@ -309,6 +314,7 @@ CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, const Engine *
|
||||
|
||||
v->vehicle_flags = 0;
|
||||
if (e->flags & ENGINE_EXCLUSIVE_PREVIEW) SetBit(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE);
|
||||
v->SetServiceIntervalIsPercent(Company::Get(_current_company)->settings.vehicle.servint_ispercent);
|
||||
|
||||
v->InvalidateNewGRFCacheOfChain();
|
||||
|
||||
@@ -592,7 +598,14 @@ enum AircraftSpeedLimits {
|
||||
*/
|
||||
static int UpdateAircraftSpeed(Aircraft *v, uint speed_limit = SPEED_LIMIT_NONE, bool hard_limit = true)
|
||||
{
|
||||
uint spd = v->acceleration * 16;
|
||||
/**
|
||||
* 'acceleration' has the unit 3/8 mph/tick. This function is called twice per tick.
|
||||
* So the speed amount we need to accelerate is:
|
||||
* acceleration * 3 / 16 mph = acceleration * 3 / 16 * 16 / 10 km-ish/h
|
||||
* = acceleration * 3 / 10 * 256 * (km-ish/h / 256)
|
||||
* ~ acceleration * 77 (km-ish/h / 256)
|
||||
*/
|
||||
uint spd = v->acceleration * 77;
|
||||
byte t;
|
||||
|
||||
/* Adjust speed limits by plane speed factor to prevent taxiing
|
||||
@@ -630,7 +643,7 @@ static int UpdateAircraftSpeed(Aircraft *v, uint speed_limit = SPEED_LIMIT_NONE,
|
||||
/* Adjust distance moved by plane speed setting */
|
||||
if (_settings_game.vehicle.plane_speed > 1) spd /= _settings_game.vehicle.plane_speed;
|
||||
|
||||
/* Convert direction-indepenent speed into direction-dependent speed. (old movement method) */
|
||||
/* Convert direction-independent speed into direction-dependent speed. (old movement method) */
|
||||
spd = v->GetOldAdvanceSpeed(spd);
|
||||
|
||||
spd += v->progress;
|
||||
@@ -655,7 +668,7 @@ int GetAircraftFlyingAltitude(const Aircraft *v)
|
||||
int base_altitude = PLANE_HOLDING_ALTITUDE;
|
||||
|
||||
/* Make sure eastbound and westbound planes do not "crash" into each
|
||||
* other by providing them with vertical seperation
|
||||
* other by providing them with vertical separation
|
||||
*/
|
||||
switch (v->direction) {
|
||||
case DIR_N:
|
||||
@@ -1053,7 +1066,12 @@ static bool HandleCrashedAircraft(Aircraft *v)
|
||||
}
|
||||
|
||||
|
||||
static void HandleAircraftSmoke(Aircraft *v)
|
||||
/**
|
||||
* Handle smoke of broken aircraft.
|
||||
* @param v Aircraft
|
||||
* @param mode Is this the non-first call for this vehicle in this tick?
|
||||
*/
|
||||
static void HandleAircraftSmoke(Aircraft *v, bool mode)
|
||||
{
|
||||
static const struct {
|
||||
int8 x;
|
||||
@@ -1071,13 +1089,15 @@ static void HandleAircraftSmoke(Aircraft *v)
|
||||
|
||||
if (!(v->vehstatus & VS_AIRCRAFT_BROKEN)) return;
|
||||
|
||||
/* Stop smoking when landed */
|
||||
if (v->cur_speed < 10) {
|
||||
v->vehstatus &= ~VS_AIRCRAFT_BROKEN;
|
||||
v->breakdown_ctr = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if ((v->tick_counter & 0x1F) == 0) {
|
||||
/* Spawn effect et most once per Tick, i.e. !mode */
|
||||
if (!mode && (v->tick_counter & 0x0F) == 0) {
|
||||
CreateEffectVehicleRel(v,
|
||||
smoke_pos[v->direction].x,
|
||||
smoke_pos[v->direction].y,
|
||||
@@ -1375,7 +1395,7 @@ static void AircraftEventHandler_AtTerminal(Aircraft *v, const AirportFTAClass *
|
||||
* and get serviced at the same time - setting */
|
||||
if (_settings_game.order.serviceathelipad) {
|
||||
if (v->subtype == AIR_HELICOPTER && apc->num_helipads > 0) {
|
||||
/* an exerpt of ServiceAircraft, without the invisibility stuff */
|
||||
/* an excerpt of ServiceAircraft, without the invisibility stuff */
|
||||
v->date_of_last_service = _date;
|
||||
v->breakdowns_since_last_service = 0;
|
||||
v->reliability = v->GetEngine()->reliability;
|
||||
@@ -1397,7 +1417,7 @@ static void AircraftEventHandler_AtTerminal(Aircraft *v, const AirportFTAClass *
|
||||
switch (v->current_order.GetType()) {
|
||||
case OT_GOTO_STATION: // ready to fly to another airport
|
||||
break;
|
||||
case OT_GOTO_DEPOT: // visit hangar for serivicing, sale, etc.
|
||||
case OT_GOTO_DEPOT: // visit hangar for servicing, sale, etc.
|
||||
go_to_hangar = v->current_order.GetDestination() == v->targetairport;
|
||||
break;
|
||||
case OT_CONDITIONAL:
|
||||
@@ -1880,8 +1900,6 @@ static void AircraftHandleDestTooFar(Aircraft *v, bool too_far)
|
||||
|
||||
static bool AircraftEventHandler(Aircraft *v, int loop)
|
||||
{
|
||||
v->tick_counter++;
|
||||
|
||||
if (v->vehstatus & VS_CRASHED) {
|
||||
return HandleCrashedAircraft(v);
|
||||
}
|
||||
@@ -1890,7 +1908,7 @@ static bool AircraftEventHandler(Aircraft *v, int loop)
|
||||
|
||||
v->HandleBreakdown();
|
||||
|
||||
HandleAircraftSmoke(v);
|
||||
HandleAircraftSmoke(v, loop != 0);
|
||||
ProcessOrders(v);
|
||||
v->HandleLoading(loop != 0);
|
||||
|
||||
@@ -1920,6 +1938,8 @@ bool Aircraft::Tick()
|
||||
{
|
||||
if (!this->IsNormalAircraft()) return true;
|
||||
|
||||
this->tick_counter++;
|
||||
|
||||
if (!(this->vehstatus & VS_STOPPED)) this->running_ticks++;
|
||||
|
||||
if (this->subtype == AIR_HELICOPTER) HelicopterTickHandler(this);
|
||||
|
@@ -22,7 +22,7 @@
|
||||
* @param terminals The terminals.
|
||||
* @param num_helipads Number of heli pads.
|
||||
* @param flags Information about the class of FTA.
|
||||
* @param delta_z Height of the arport above the land.
|
||||
* @param delta_z Height of the airport above the land.
|
||||
*/
|
||||
#define AIRPORT_GENERIC(name, terminals, num_helipads, flags, delta_z) \
|
||||
static AirportFTAClass _airportfta_ ## name(_airport_moving_data_ ## name, terminals, \
|
||||
@@ -41,7 +41,7 @@
|
||||
* Define a heliport.
|
||||
* @param name Suffix of the names of the helipad data.
|
||||
* @param num_helipads Number of heli pads.
|
||||
* @param delta_z Height of the arport above the land.
|
||||
* @param delta_z Height of the airport above the land.
|
||||
*/
|
||||
#define HELIPORT(name, num_helipads, delta_z) \
|
||||
AIRPORT_GENERIC(name, NULL, num_helipads, AirportFTAClass::HELICOPTERS, delta_z)
|
||||
|
@@ -68,7 +68,7 @@ bool IsArticulatedEngine(EngineID engine_type)
|
||||
* Count the number of articulated parts of an engine.
|
||||
* @param engine_type The engine to get the number of parts of.
|
||||
* @param purchase_window Whether we are in the scope of the purchase window or not, i.e. whether we cannot allocate vehicles.
|
||||
* @return The nmumber of parts.
|
||||
* @return The number of parts.
|
||||
*/
|
||||
uint CountArticulatedParts(EngineID engine_type, bool purchase_window)
|
||||
{
|
||||
@@ -98,7 +98,7 @@ uint CountArticulatedParts(EngineID engine_type, bool purchase_window)
|
||||
|
||||
/**
|
||||
* Returns the default (non-refitted) capacity of a specific EngineID.
|
||||
* @param engine the EngineID of iterest
|
||||
* @param engine the EngineID of interest
|
||||
* @param cargo_type returns the default cargo type, if needed
|
||||
* @return capacity
|
||||
*/
|
||||
@@ -113,7 +113,7 @@ static inline uint16 GetVehicleDefaultCapacity(EngineID engine, CargoID *cargo_t
|
||||
|
||||
/**
|
||||
* Returns all cargoes a vehicle can carry.
|
||||
* @param engine the EngineID of iterest
|
||||
* @param engine the EngineID of interest
|
||||
* @param include_initial_cargo_type if true the default cargo type of the vehicle is included; if false only the refit_mask
|
||||
* @return bit set of CargoIDs
|
||||
*/
|
||||
|
@@ -87,7 +87,10 @@ CommandCost AddEngineReplacement(EngineRenewList *erl, EngineID old_engine, Engi
|
||||
/* Check if the old vehicle is already in the list */
|
||||
EngineRenew *er = GetEngineReplacement(*erl, old_engine, group);
|
||||
if (er != NULL) {
|
||||
if (flags & DC_EXEC) er->to = new_engine;
|
||||
if (flags & DC_EXEC) {
|
||||
er->to = new_engine;
|
||||
er->replace_when_old = replace_when_old;
|
||||
}
|
||||
return CommandCost();
|
||||
}
|
||||
|
||||
|
@@ -66,18 +66,18 @@ bool CheckAutoreplaceValidity(EngineID from, EngineID to, CompanyID company)
|
||||
/* make sure the railtypes are compatible */
|
||||
if ((GetRailTypeInfo(e_from->u.rail.railtype)->compatible_railtypes & GetRailTypeInfo(e_to->u.rail.railtype)->compatible_railtypes) == 0) return false;
|
||||
|
||||
/* make sure we do not replace wagons with engines or vise versa */
|
||||
/* make sure we do not replace wagons with engines or vice versa */
|
||||
if ((e_from->u.rail.railveh_type == RAILVEH_WAGON) != (e_to->u.rail.railveh_type == RAILVEH_WAGON)) return false;
|
||||
break;
|
||||
}
|
||||
|
||||
case VEH_ROAD:
|
||||
/* make sure that we do not replace a tram with a normal road vehicles or vise versa */
|
||||
/* make sure that we do not replace a tram with a normal road vehicles or vice versa */
|
||||
if (HasBit(e_from->info.misc_flags, EF_ROAD_TRAM) != HasBit(e_to->info.misc_flags, EF_ROAD_TRAM)) return false;
|
||||
break;
|
||||
|
||||
case VEH_AIRCRAFT:
|
||||
/* make sure that we do not replace a plane with a helicopter or vise versa */
|
||||
/* make sure that we do not replace a plane with a helicopter or vice versa */
|
||||
if ((e_from->u.air.subtype & AIR_CTOL) != (e_to->u.air.subtype & AIR_CTOL)) return false;
|
||||
break;
|
||||
|
||||
@@ -263,7 +263,7 @@ static CommandCost GetNewEngineType(const Vehicle *v, const Company *c, bool alw
|
||||
* Builds and refits a replacement vehicle
|
||||
* Important: The old vehicle is still in the original vehicle chain (used for determining the cargo when the old vehicle did not carry anything, but the new one does)
|
||||
* @param old_veh A single (articulated/multiheaded) vehicle that shall be replaced.
|
||||
* @param new_vehicle Returns the newly build and refittet vehicle
|
||||
* @param new_vehicle Returns the newly build and refitted vehicle
|
||||
* @param part_of_chain The vehicle is part of a train
|
||||
* @return cost or error
|
||||
*/
|
||||
@@ -766,7 +766,7 @@ CommandCost CmdSetAutoReplace(TileIndex tile, DoCommandFlag flags, uint32 p1, ui
|
||||
|
||||
if (flags & DC_EXEC) {
|
||||
GroupStatistics::UpdateAutoreplace(_current_company);
|
||||
SetWindowClassesDirty(GetWindowClassForVehicleType(Engine::Get(old_engine_type)->type));
|
||||
if (IsLocalCompany()) SetWindowDirty(WC_REPLACE_VEHICLE, Engine::Get(old_engine_type)->type);
|
||||
}
|
||||
if ((flags & DC_EXEC) && IsLocalCompany()) InvalidateAutoreplaceWindow(old_engine_type, id_g);
|
||||
|
||||
|
@@ -45,7 +45,7 @@ static int CDECL EngineNumberSorter(const EngineID *a, const EngineID *b)
|
||||
* @param id_g The group the engine belongs to
|
||||
* Note: this function only works if it is called either
|
||||
* - when a new vehicle is build, but before it's counted in num_engines
|
||||
* - when a vehicle is deleted and after it's substracted from num_engines
|
||||
* - when a vehicle is deleted and after it's subtracted from num_engines
|
||||
* - when not changing the count (used when changing replace orders)
|
||||
*/
|
||||
void InvalidateAutoreplaceWindow(EngineID e, GroupID id_g)
|
||||
@@ -186,7 +186,6 @@ class ReplaceVehicleWindow : public Window {
|
||||
EngineID veh_from = this->sel_engine[0];
|
||||
EngineID veh_to = this->sel_engine[1];
|
||||
DoCommandP(0, (replace_when_old ? 1 : 0) | (this->sel_group << 16), veh_from + (veh_to << 16), CMD_SET_AUTOREPLACE);
|
||||
this->SetDirty();
|
||||
}
|
||||
|
||||
public:
|
||||
@@ -455,7 +454,6 @@ public:
|
||||
case WID_RV_STOP_REPLACE: { // Stop replacing
|
||||
EngineID veh_from = this->sel_engine[0];
|
||||
DoCommandP(0, this->sel_group << 16, veh_from + (INVALID_ENGINE << 16), CMD_SET_AUTOREPLACE);
|
||||
this->SetDirty();
|
||||
break;
|
||||
}
|
||||
|
||||
|
@@ -24,12 +24,12 @@ struct BaseConsist {
|
||||
int32 lateness_counter; ///< How many ticks late (or early if negative) this vehicle is.
|
||||
Date timetable_start; ///< When the vehicle is supposed to start the timetable.
|
||||
|
||||
Date service_interval; ///< The interval for (automatic) servicing; either in days or %.
|
||||
uint16 service_interval; ///< The interval for (automatic) servicing; either in days or %.
|
||||
|
||||
VehicleOrderID cur_real_order_index;///< The index to the current real (non-implicit) order
|
||||
VehicleOrderID cur_implicit_order_index;///< The index to the current implicit order
|
||||
|
||||
byte vehicle_flags; ///< Used for gradual loading and other miscellaneous things (@see VehicleFlags enum)
|
||||
uint16 vehicle_flags; ///< Used for gradual loading and other miscellaneous things (@see VehicleFlags enum)
|
||||
|
||||
BaseConsist() : name(NULL) {}
|
||||
virtual ~BaseConsist();
|
||||
|
@@ -137,12 +137,16 @@ bool BaseSet<T, Tnum_files, Tsearch_in_tars>::FillSetDetails(IniFile *ini, const
|
||||
switch (T::CheckMD5(file, BASESET_DIR)) {
|
||||
case MD5File::CR_MATCH:
|
||||
this->valid_files++;
|
||||
/* FALL THROUGH */
|
||||
this->found_files++;
|
||||
break;
|
||||
|
||||
case MD5File::CR_MISMATCH:
|
||||
DEBUG(grf, 1, "MD5 checksum mismatch for: %s (in %s)", filename, full_filename);
|
||||
this->found_files++;
|
||||
break;
|
||||
|
||||
case MD5File::CR_NO_FILE:
|
||||
DEBUG(grf, 1, "The file %s specified in %s is missing", filename, full_filename);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -180,7 +184,8 @@ bool BaseMedia<Tbase_set>::AddFile(const char *filename, size_t basepath_length,
|
||||
/* The more complete set takes precedence over the version number. */
|
||||
if ((duplicate->valid_files == set->valid_files && duplicate->version >= set->version) ||
|
||||
duplicate->valid_files > set->valid_files) {
|
||||
DEBUG(grf, 1, "Not adding %s (%i) as base " SET_TYPE " set (duplicate)", set->name, set->version);
|
||||
DEBUG(grf, 1, "Not adding %s (%i) as base " SET_TYPE " set (duplicate, %s)", set->name, set->version,
|
||||
duplicate->valid_files > set->valid_files ? "less valid files" : "lower version");
|
||||
set->next = BaseMedia<Tbase_set>::duplicate_sets;
|
||||
BaseMedia<Tbase_set>::duplicate_sets = set;
|
||||
} else {
|
||||
@@ -195,7 +200,8 @@ bool BaseMedia<Tbase_set>::AddFile(const char *filename, size_t basepath_length,
|
||||
* version number until a new game is started which isn't a big problem */
|
||||
if (BaseMedia<Tbase_set>::used_set == duplicate) BaseMedia<Tbase_set>::used_set = set;
|
||||
|
||||
DEBUG(grf, 1, "Removing %s (%i) as base " SET_TYPE " set (duplicate)", duplicate->name, duplicate->version);
|
||||
DEBUG(grf, 1, "Removing %s (%i) as base " SET_TYPE " set (duplicate, %s)", duplicate->name, duplicate->version,
|
||||
duplicate->valid_files < set->valid_files ? "less valid files" : "lower version");
|
||||
duplicate->next = BaseMedia<Tbase_set>::duplicate_sets;
|
||||
BaseMedia<Tbase_set>::duplicate_sets = duplicate;
|
||||
ret = true;
|
||||
@@ -263,7 +269,7 @@ template <class Tbase_set>
|
||||
if (missing == 0) {
|
||||
p += seprintf(p, last, " (%i corrupt file%s)\n", invalid, invalid == 1 ? "" : "s");
|
||||
} else {
|
||||
p += seprintf(p, last, " (unuseable: %i missing file%s)\n", missing, missing == 1 ? "" : "s");
|
||||
p += seprintf(p, last, " (unusable: %i missing file%s)\n", missing, missing == 1 ? "" : "s");
|
||||
}
|
||||
} else {
|
||||
p += seprintf(p, last, "\n");
|
||||
|
@@ -71,6 +71,7 @@ struct BaseStation : StationPool::PoolItem<&_station_pool> {
|
||||
uint16 random_bits; ///< Random bits assigned to this station
|
||||
byte waiting_triggers; ///< Waiting triggers (NewGRF) for this station
|
||||
uint8 cached_anim_triggers; ///< NOSAVE: Combined animation trigger bitmask, used to determine if trigger processing should happen.
|
||||
uint32 cached_cargo_triggers; ///< NOSAVE: Combined cargo trigger bitmask
|
||||
|
||||
TileArea train_station; ///< Tile area the train 'station' part covers
|
||||
StationRect rect; ///< NOSAVE: Station spread out rectangle maintained by StationRect::xxx() functions
|
||||
|
@@ -107,7 +107,7 @@ void Blitter_32bppBase::ScrollBuffer(void *video, int &left, int &top, int &widt
|
||||
dst = (uint32 *)video + left + top * _screen.pitch;
|
||||
src = dst - scroll_y * _screen.pitch;
|
||||
|
||||
/* Decrese height. (scroll_y is <=0). */
|
||||
/* Decrease height. (scroll_y is <=0). */
|
||||
height += scroll_y;
|
||||
assert(height > 0);
|
||||
|
||||
|
@@ -112,7 +112,7 @@ void Blitter_8bppBase::ScrollBuffer(void *video, int &left, int &top, int &width
|
||||
dst = (uint8 *)video + left + top * _screen.pitch;
|
||||
src = dst - scroll_y * _screen.pitch;
|
||||
|
||||
/* Decrese height. (scroll_y is <=0). */
|
||||
/* Decrease height. (scroll_y is <=0). */
|
||||
height += scroll_y;
|
||||
assert(height > 0);
|
||||
|
||||
|
@@ -123,7 +123,7 @@ public:
|
||||
|
||||
/**
|
||||
* Copy from a buffer to the screen.
|
||||
* @param video The destionation pointer (video-buffer).
|
||||
* @param video The destination pointer (video-buffer).
|
||||
* @param src The buffer from which the data will be read.
|
||||
* @param width The width of the buffer.
|
||||
* @param height The height of the buffer.
|
||||
|
@@ -37,7 +37,7 @@ public:
|
||||
/* virtual */ int GetBytesPerPixel() { return 0; }
|
||||
};
|
||||
|
||||
/** Factory for the blitter that doesn nothing. */
|
||||
/** Factory for the blitter that does nothing. */
|
||||
class FBlitter_Null: public BlitterFactory<FBlitter_Null> {
|
||||
public:
|
||||
/* virtual */ const char *GetName() { return "null"; }
|
||||
|
@@ -205,7 +205,7 @@ public:
|
||||
#endif /* defined(ENABLE_NETWORK) && defined(WITH_FREETYPE) */
|
||||
|
||||
/**
|
||||
* Handle all procedures for bootstrapping OpenTTD without a base grapics set.
|
||||
* Handle all procedures for bootstrapping OpenTTD without a base graphics set.
|
||||
* This requires all kinds of trickery that is needed to avoid the use of
|
||||
* sprites from the base graphics set which are pretty interwoven.
|
||||
* @return True if a base set exists, otherwise false.
|
||||
|
@@ -381,7 +381,7 @@ void ShowBuildBridgeWindow(TileIndex start, TileIndex end, TransportType transpo
|
||||
/* The bridge length without ramps. */
|
||||
const uint bridge_len = GetTunnelBridgeLength(start, end);
|
||||
|
||||
/* If Ctrl is being pressed, check wether the last bridge built is available
|
||||
/* If Ctrl is being pressed, check whether the last bridge built is available
|
||||
* If so, return this bridge type. Otherwise continue normally.
|
||||
* We store bridge types for each transport type, so we have to check for
|
||||
* the transport type beforehand.
|
||||
|
@@ -41,7 +41,7 @@ static inline bool IsBridgeTile(TileIndex t)
|
||||
* checks for the possibility that a bridge may be on this tile
|
||||
* These are in fact all the tile types on which a bridge can be found
|
||||
* @param t The tile to analyze
|
||||
* @return true if a bridge migh be present
|
||||
* @return true if a bridge might be present
|
||||
*/
|
||||
static inline bool MayHaveBridgeAbove(TileIndex t)
|
||||
{
|
||||
@@ -161,15 +161,17 @@ static inline void MakeBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, D
|
||||
* Make a bridge ramp for roads.
|
||||
* @param t the tile to make a bridge ramp
|
||||
* @param o the new owner of the bridge ramp
|
||||
* @param owner_road the new owner of the road on the bridge
|
||||
* @param owner_tram the new owner of the tram on the bridge
|
||||
* @param bridgetype the type of bridge this bridge ramp belongs to
|
||||
* @param d the direction this ramp must be facing
|
||||
* @param r the road type of the bridge
|
||||
*/
|
||||
static inline void MakeRoadBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, DiagDirection d, RoadTypes r)
|
||||
static inline void MakeRoadBridgeRamp(TileIndex t, Owner o, Owner owner_road, Owner owner_tram, BridgeType bridgetype, DiagDirection d, RoadTypes r)
|
||||
{
|
||||
MakeBridgeRamp(t, o, bridgetype, d, TRANSPORT_ROAD, 0);
|
||||
SetRoadOwner(t, ROADTYPE_ROAD, o);
|
||||
if (o != OWNER_TOWN) SetRoadOwner(t, ROADTYPE_TRAM, o);
|
||||
SetRoadOwner(t, ROADTYPE_ROAD, owner_road);
|
||||
if (owner_tram != OWNER_TOWN) SetRoadOwner(t, ROADTYPE_TRAM, owner_tram);
|
||||
SetRoadTypes(t, r);
|
||||
}
|
||||
|
||||
|
@@ -272,7 +272,7 @@ static int CDECL EnginePowerVsRunningCostSorter(const EngineID *a, const EngineI
|
||||
* we will actually calculate cunning cost/power (to make it more than 1).
|
||||
* Because of this, the return value have to be reversed as well and we return b - a instead of a - b.
|
||||
* Another thing is that both power and running costs should be doubled for multiheaded engines.
|
||||
* Since it would be multipling with 2 in both numerator and denumerator, it will even themselves out and we skip checking for multiheaded. */
|
||||
* Since it would be multiplying with 2 in both numerator and denominator, it will even themselves out and we skip checking for multiheaded. */
|
||||
Money va = (e_a->GetRunningCost()) / max(1U, (uint)e_a->GetPower());
|
||||
Money vb = (e_b->GetRunningCost()) / max(1U, (uint)e_b->GetPower());
|
||||
int r = ClampToI32(vb - va);
|
||||
@@ -967,7 +967,7 @@ struct BuildVehicleWindow : Window {
|
||||
this->vscroll = this->GetScrollbar(WID_BV_SCROLLBAR);
|
||||
|
||||
/* If we are just viewing the list of vehicles, we do not need the Build button.
|
||||
* So we just hide it, and enlarge the Rename buton by the now vacant place. */
|
||||
* So we just hide it, and enlarge the Rename button by the now vacant place. */
|
||||
if (this->listview_mode) this->GetWidget<NWidgetStacked>(WID_BV_BUILD_SEL)->SetDisplayedPlane(SZSP_NONE);
|
||||
|
||||
NWidgetCore *widget = this->GetWidget<NWidgetCore>(WID_BV_LIST);
|
||||
|
@@ -16,22 +16,54 @@
|
||||
CargoMonitorMap _cargo_pickups; ///< Map of monitored pick-ups to the amount since last query/activation.
|
||||
CargoMonitorMap _cargo_deliveries; ///< Map of monitored deliveries to the amount since last query/activation.
|
||||
|
||||
/** Clear all pick-up cargo monitors. */
|
||||
void ClearCargoPickupMonitoring()
|
||||
/**
|
||||
* Helper method for ClearCargoPickupMonitoring and ClearCargoDeliveryMonitoring.
|
||||
* Clears all monitors that belong to the specified company or all if INVALID_OWNER
|
||||
* is specified as company.
|
||||
* @param cargo_monitor_map reference to the cargo monitor map to operate on.
|
||||
* @param company company to clear cargo monitors for or INVALID_OWNER if all cargo monitors should be cleared.
|
||||
*/
|
||||
static void ClearCargoMonitoring(CargoMonitorMap &cargo_monitor_map, CompanyID company = INVALID_OWNER)
|
||||
{
|
||||
_cargo_pickups.clear();
|
||||
if (company == INVALID_OWNER) {
|
||||
cargo_monitor_map.clear();
|
||||
return;
|
||||
}
|
||||
|
||||
CargoMonitorMap::iterator next;
|
||||
for (CargoMonitorMap::iterator it = cargo_monitor_map.begin(); it != cargo_monitor_map.end(); it = next) {
|
||||
next = it;
|
||||
next++;
|
||||
if (DecodeMonitorCompany(it->first) == company) {
|
||||
cargo_monitor_map.erase(it);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Clear all delivery cargo monitors. */
|
||||
void ClearCargoDeliveryMonitoring()
|
||||
/**
|
||||
* Clear all pick-up cargo monitors.
|
||||
* @param company clear all pick-up monitors for this company or if INVALID_OWNER
|
||||
* is passed, all pick-up monitors are cleared regardless of company.
|
||||
*/
|
||||
void ClearCargoPickupMonitoring(CompanyID company)
|
||||
{
|
||||
_cargo_deliveries.clear();
|
||||
ClearCargoMonitoring(_cargo_pickups, company);
|
||||
}
|
||||
|
||||
/**
|
||||
* Clear all delivery cargo monitors.
|
||||
* @param company clear all delivery monitors for this company or if INVALID_OWNER
|
||||
* is passed, all delivery monitors are cleared regardless of company.
|
||||
*/
|
||||
void ClearCargoDeliveryMonitoring(CompanyID company)
|
||||
{
|
||||
ClearCargoMonitoring(_cargo_deliveries, company);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get and reset the amount associated with a cargo monitor.
|
||||
* @param[in,out] monitor_map Monitoring map to search (and reset for the queried entry).
|
||||
* @oaram monitor Cargo monitor to query/reset.
|
||||
* @param monitor Cargo monitor to query/reset.
|
||||
* @param keep_monitoring After returning from this call, continue monitoring.
|
||||
* @return Amount collected since last query/activation for the monitored combination.
|
||||
*/
|
||||
|
@@ -139,8 +139,8 @@ static inline TownID DecodeMonitorTown(CargoMonitorID num)
|
||||
return GB(num, CCB_TOWN_IND_NUMBER_START, CCB_TOWN_IND_NUMBER_LENGTH);
|
||||
}
|
||||
|
||||
void ClearCargoPickupMonitoring();
|
||||
void ClearCargoDeliveryMonitoring();
|
||||
void ClearCargoPickupMonitoring(CompanyID company = INVALID_OWNER);
|
||||
void ClearCargoDeliveryMonitoring(CompanyID company = INVALID_OWNER);
|
||||
uint32 GetDeliveryAmount(CargoMonitorID monitor, bool keep_monitoring);
|
||||
uint32 GetPickupAmount(CargoMonitorID monitor, bool keep_monitoring);
|
||||
void AddCargoDelivery(CargoID cargo_type, CompanyID company, uint32 amount, SourceType src_type, SourceID src, const Station *st);
|
||||
|
@@ -161,7 +161,7 @@ public:
|
||||
|
||||
/**
|
||||
* Simple collection class for a list of cargo packets.
|
||||
* @tparam Tinst Actual instantation of this cargo list.
|
||||
* @tparam Tinst Actual instantiation of this cargo list.
|
||||
*/
|
||||
template <class Tinst>
|
||||
class CargoList {
|
||||
|
@@ -46,7 +46,7 @@ enum CargoClass {
|
||||
CC_LIQUID = 1 << 6, ///< Liquids (Oil, Water, Rubber)
|
||||
CC_REFRIGERATED = 1 << 7, ///< Refrigerated cargo (Food, Fruit)
|
||||
CC_HAZARDOUS = 1 << 8, ///< Hazardous cargo (Nuclear Fuel, Explosives, etc.)
|
||||
CC_COVERED = 1 << 9, ///< Covered/Sheltered Freight (Transporation in Box Vans, Silo Wagons, etc.)
|
||||
CC_COVERED = 1 << 9, ///< Covered/Sheltered Freight (Transportation in Box Vans, Silo Wagons, etc.)
|
||||
CC_SPECIAL = 1 << 15, ///< Special bit used for livery refit tricks instead of normal cargoes.
|
||||
};
|
||||
|
||||
@@ -163,13 +163,13 @@ static inline bool IsCargoInClass(CargoID c, CargoClass cc)
|
||||
* @param var Reference getting the cargospec.
|
||||
* @see CargoSpec
|
||||
*/
|
||||
#define FOR_ALL_SORTED_CARGOSPECS(var) for (uint8 index = 0; var = _sorted_cargo_specs[index], index < _sorted_cargo_specs_size; index++)
|
||||
#define FOR_ALL_SORTED_CARGOSPECS(var) for (uint8 index = 0; index < _sorted_cargo_specs_size && (var = _sorted_cargo_specs[index], true) ; index++)
|
||||
|
||||
/**
|
||||
* Loop header for iterating over 'real' cargoes, sorted by name. Phony cargoes like regearing cargoes are skipped.
|
||||
* @param var Reference getting the cargospec.
|
||||
* @see CargoSpec
|
||||
*/
|
||||
#define FOR_ALL_SORTED_STANDARD_CARGOSPECS(var) for (uint8 index = 0; var = _sorted_cargo_specs[index], index < _sorted_standard_cargo_specs_size; index++)
|
||||
#define FOR_ALL_SORTED_STANDARD_CARGOSPECS(var) for (uint8 index = 0; index < _sorted_standard_cargo_specs_size && (var = _sorted_cargo_specs[index], true); index++)
|
||||
|
||||
#endif /* CARGOTYPE_H */
|
||||
|
@@ -75,7 +75,7 @@ static int32 ClickChangeCompanyCheat(int32 p1, int32 p2)
|
||||
* Allow (or disallow) changing production of all industries.
|
||||
* @param p1 new value
|
||||
* @param p2 unused
|
||||
* @return New value allwing change of industry production.
|
||||
* @return New value allowing change of industry production.
|
||||
*/
|
||||
static int32 ClickSetProdCheat(int32 p1, int32 p2)
|
||||
{
|
||||
|
@@ -190,12 +190,12 @@ static void TileLoopClearAlps(TileIndex tile)
|
||||
}
|
||||
}
|
||||
/* Update snow density. */
|
||||
uint curent_density = GetClearDensity(tile);
|
||||
uint current_density = GetClearDensity(tile);
|
||||
uint req_density = (k < 0) ? 0u : min((uint)k, 3);
|
||||
|
||||
if (curent_density < req_density) {
|
||||
if (current_density < req_density) {
|
||||
AddClearDensity(tile, 1);
|
||||
} else if (curent_density > req_density) {
|
||||
} else if (current_density > req_density) {
|
||||
AddClearDensity(tile, -1);
|
||||
} else {
|
||||
/* Density at the required level. */
|
||||
|
@@ -331,7 +331,7 @@ static const Command _command_proc_table[] = {
|
||||
/*!
|
||||
* This function range-checks a cmd, and checks if the cmd is not NULL
|
||||
*
|
||||
* @param cmd The integervalue of a command
|
||||
* @param cmd The integer value of a command
|
||||
* @return true if the command is valid (and got a CommandProc function)
|
||||
*/
|
||||
bool IsValidCommand(uint32 cmd)
|
||||
|
@@ -277,7 +277,7 @@ enum Commands {
|
||||
|
||||
CMD_GIVE_MONEY, ///< give money to another company
|
||||
CMD_CHANGE_SETTING, ///< change a setting
|
||||
CMD_CHANGE_COMPANY_SETTING, ///< change a company etting
|
||||
CMD_CHANGE_COMPANY_SETTING, ///< change a company setting
|
||||
|
||||
CMD_SET_AUTOREPLACE, ///< set an autoreplace entry
|
||||
|
||||
|
@@ -1170,3 +1170,21 @@ CommandCost CmdRenamePresident(TileIndex tile, DoCommandFlag flags, uint32 p1, u
|
||||
|
||||
return CommandCost();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the service interval for the given company and vehicle type.
|
||||
* @param c The company, or NULL for client-default settings.
|
||||
* @param type The vehicle type to get the interval for.
|
||||
* @return The service interval.
|
||||
*/
|
||||
int CompanyServiceInterval(const Company *c, VehicleType type)
|
||||
{
|
||||
const VehicleDefaultSettings *vds = (c == NULL) ? &_settings_client.company.vehicle : &c->settings.vehicle;
|
||||
switch (type) {
|
||||
default: NOT_REACHED();
|
||||
case VEH_TRAIN: return vds->servint_trains;
|
||||
case VEH_ROAD: return vds->servint_roadveh;
|
||||
case VEH_AIRCRAFT: return vds->servint_aircraft;
|
||||
case VEH_SHIP: return vds->servint_ships;
|
||||
}
|
||||
}
|
||||
|
@@ -15,6 +15,7 @@
|
||||
#include "command_type.h"
|
||||
#include "company_type.h"
|
||||
#include "gfx_type.h"
|
||||
#include "vehicle_type.h"
|
||||
|
||||
bool MayCompanyTakeOver(CompanyID cbig, CompanyID small);
|
||||
void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner);
|
||||
@@ -56,4 +57,6 @@ static inline bool IsInteractiveCompany(CompanyID company)
|
||||
return company == _local_company;
|
||||
}
|
||||
|
||||
int CompanyServiceInterval(const Company *c, VehicleType type);
|
||||
|
||||
#endif /* COMPANY_FUNC_H */
|
||||
|
@@ -1987,6 +1987,7 @@ struct CompanyWindow : Window
|
||||
{
|
||||
this->InitNested(desc, window_number);
|
||||
this->owner = (Owner)this->window_number;
|
||||
this->OnInvalidateData();
|
||||
}
|
||||
|
||||
virtual void OnPaint()
|
||||
@@ -2055,25 +2056,6 @@ struct CompanyWindow : Window
|
||||
}
|
||||
}
|
||||
|
||||
if (!local) {
|
||||
if (_settings_game.economy.allow_shares) { // Shares are allowed
|
||||
/* If all shares are owned by someone (none by nobody), disable buy button */
|
||||
this->SetWidgetDisabledState(WID_C_BUY_SHARE, GetAmountOwnedBy(c, INVALID_OWNER) == 0 ||
|
||||
/* Only 25% left to buy. If the company is human, disable buying it up.. TODO issues! */
|
||||
(GetAmountOwnedBy(c, INVALID_OWNER) == 1 && !c->is_ai) ||
|
||||
/* Spectators cannot do anything of course */
|
||||
_local_company == COMPANY_SPECTATOR);
|
||||
|
||||
/* If the company doesn't own any shares, disable sell button */
|
||||
this->SetWidgetDisabledState(WID_C_SELL_SHARE, (GetAmountOwnedBy(c, _local_company) == 0) ||
|
||||
/* Spectators cannot do anything of course */
|
||||
_local_company == COMPANY_SPECTATOR);
|
||||
} else { // Shares are not allowed, disable buy/sell buttons
|
||||
this->DisableWidget(WID_C_BUY_SHARE);
|
||||
this->DisableWidget(WID_C_SELL_SHARE);
|
||||
}
|
||||
}
|
||||
|
||||
this->DrawWidgets();
|
||||
}
|
||||
|
||||
@@ -2396,6 +2378,36 @@ struct CompanyWindow : Window
|
||||
#endif /* ENABLE_NETWORK */
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Some data on this window has become invalid.
|
||||
* @param data Information about the changed data.
|
||||
* @param gui_scope Whether the call is done from GUI scope. You may not do everything when not in GUI scope. See #InvalidateWindowData() for details.
|
||||
*/
|
||||
virtual void OnInvalidateData(int data = 0, bool gui_scope = true)
|
||||
{
|
||||
if (this->window_number == _local_company) return;
|
||||
|
||||
if (_settings_game.economy.allow_shares) { // Shares are allowed
|
||||
const Company *c = Company::Get(this->window_number);
|
||||
|
||||
/* If all shares are owned by someone (none by nobody), disable buy button */
|
||||
this->SetWidgetDisabledState(WID_C_BUY_SHARE, GetAmountOwnedBy(c, INVALID_OWNER) == 0 ||
|
||||
/* Only 25% left to buy. If the company is human, disable buying it up.. TODO issues! */
|
||||
(GetAmountOwnedBy(c, INVALID_OWNER) == 1 && !c->is_ai) ||
|
||||
/* Spectators cannot do anything of course */
|
||||
_local_company == COMPANY_SPECTATOR);
|
||||
|
||||
/* If the company doesn't own any shares, disable sell button */
|
||||
this->SetWidgetDisabledState(WID_C_SELL_SHARE, (GetAmountOwnedBy(c, _local_company) == 0) ||
|
||||
/* Spectators cannot do anything of course */
|
||||
_local_company == COMPANY_SPECTATOR);
|
||||
} else { // Shares are not allowed, disable buy/sell buttons
|
||||
this->DisableWidget(WID_C_BUY_SHARE);
|
||||
this->DisableWidget(WID_C_SELL_SHARE);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
static const WindowDesc _company_desc(
|
||||
|
@@ -120,7 +120,7 @@ static inline void SetCompanyManagerFaceBits(CompanyManagerFace &cmf, CompanyMan
|
||||
/**
|
||||
* Increase/Decrease the company manager's face variable by the given amount.
|
||||
* If the new value greater than the max value for this variable it will be set to 0.
|
||||
* Or is it negativ (< 0) it will be set to max value.
|
||||
* Or is it negative (< 0) it will be set to max value.
|
||||
*
|
||||
* @param cmf the company manager face to write the bits to
|
||||
* @param cmfv the company manager face variable to write the data of
|
||||
|
@@ -355,7 +355,7 @@ static void IConsoleAliasExec(const IConsoleAlias *alias, byte tokencount, char
|
||||
aliasstream[astream_i++] = '"';
|
||||
break;
|
||||
|
||||
case ';': // Cmd seperator, start new command
|
||||
case ';': // Cmd separator, start new command
|
||||
aliasstream[astream_i] = '\0';
|
||||
aliases[++a_index] = &aliasstream[++astream_i];
|
||||
cmdptr++;
|
||||
@@ -364,7 +364,7 @@ static void IConsoleAliasExec(const IConsoleAlias *alias, byte tokencount, char
|
||||
case '%': // Some or all parameters
|
||||
cmdptr++;
|
||||
switch (*cmdptr) {
|
||||
case '+': { // All parameters seperated: "[param 1]" "[param 2]"
|
||||
case '+': { // All parameters separated: "[param 1]" "[param 2]"
|
||||
for (i = 0; i != tokencount; i++) {
|
||||
aliasstream[astream_i++] = '"';
|
||||
astream_i += IConsoleCopyInParams(&aliasstream[astream_i], tokens[i], astream_i);
|
||||
@@ -412,7 +412,7 @@ static void IConsoleAliasExec(const IConsoleAlias *alias, byte tokencount, char
|
||||
|
||||
/**
|
||||
* Execute a given command passed to us. First chop it up into
|
||||
* individual tokens (seperated by spaces), then execute it if possible
|
||||
* individual tokens (separated by spaces), then execute it if possible
|
||||
* @param cmdstr string to be parsed and executed
|
||||
*/
|
||||
void IConsoleCmdExec(const char *cmdstr)
|
||||
@@ -439,14 +439,14 @@ void IConsoleCmdExec(const char *cmdstr)
|
||||
memset(&tokens, 0, sizeof(tokens));
|
||||
memset(&tokenstream, 0, sizeof(tokenstream));
|
||||
|
||||
/* 1. Split up commandline into tokens, seperated by spaces, commands
|
||||
/* 1. Split up commandline into tokens, separated by spaces, commands
|
||||
* enclosed in "" are taken as one token. We can only go as far as the amount
|
||||
* of characters in our stream or the max amount of tokens we can handle */
|
||||
for (cmdptr = cmdstr, t_index = 0, tstream_i = 0; *cmdptr != '\0'; cmdptr++) {
|
||||
if (t_index >= lengthof(tokens) || tstream_i >= lengthof(tokenstream)) break;
|
||||
|
||||
switch (*cmdptr) {
|
||||
case ' ': // Token seperator
|
||||
case ' ': // Token separator
|
||||
if (!foundtoken) break;
|
||||
|
||||
if (longtoken) {
|
||||
|
@@ -1066,7 +1066,7 @@ DEF_CONSOLE_CMD(ConRestart)
|
||||
}
|
||||
|
||||
/**
|
||||
* Print a text buffer line by line to the console. Lines are seperated by '\n'.
|
||||
* Print a text buffer line by line to the console. Lines are separated by '\n'.
|
||||
* @param buf The buffer to print.
|
||||
* @note All newlines are replace by '\0' characters.
|
||||
*/
|
||||
|
@@ -28,7 +28,7 @@ enum ConsoleHookResult {
|
||||
* --Commands--
|
||||
* Commands are commands, or functions. They get executed once and any
|
||||
* effect they produce are carried out. The arguments to the commands
|
||||
* are given to them, each input word seperated by a double-quote (") is an argument
|
||||
* are given to them, each input word separated by a double-quote (") is an argument
|
||||
* If you want to handle multiple words as one, enclose them in double-quotes
|
||||
* eg. 'say "hello sexy boy"'
|
||||
*/
|
||||
@@ -50,7 +50,7 @@ struct IConsoleCmd {
|
||||
* (eg. 'ng' for 'load %A; unpause; debug_level 5'). Aliases can parse the arguments
|
||||
* given to them in the command line.
|
||||
* - "%A - %Z" substitute arguments 1 t/m 26
|
||||
* - "%+" lists all parameters keeping them seperated
|
||||
* - "%+" lists all parameters keeping them separated
|
||||
* - "%!" also lists all parameters but presenting them to the aliased command as one argument
|
||||
* - ";" allows for combining commands (see example 'ng')
|
||||
*/
|
||||
|
@@ -27,7 +27,7 @@ const uint8 _ffb_64[64] = {
|
||||
* Search the first set bit in a 32 bit variable.
|
||||
*
|
||||
* This algorithm is a static implementation of a log
|
||||
* conguence search algorithm. It checks the first half
|
||||
* congruence search algorithm. It checks the first half
|
||||
* if there is a bit set search there further. And this
|
||||
* way further. If no bit is set return 0.
|
||||
*
|
||||
@@ -55,7 +55,7 @@ uint8 FindFirstBit(uint32 x)
|
||||
* Search the last set bit in a 64 bit variable.
|
||||
*
|
||||
* This algorithm is a static implementation of a log
|
||||
* conguence search algorithm. It checks the second half
|
||||
* congruence search algorithm. It checks the second half
|
||||
* if there is a bit set search there further. And this
|
||||
* way further. If no bit is set return 0.
|
||||
*
|
||||
|
@@ -26,6 +26,8 @@
|
||||
* @param x The value to read some bits.
|
||||
* @param s The start position to read some bits.
|
||||
* @param n The number of bits to read.
|
||||
* @pre n < sizeof(T) * 8
|
||||
* @pre s + n <= sizeof(T) * 8
|
||||
* @return The selected bits, aligned to a LSB.
|
||||
*/
|
||||
template <typename T>
|
||||
@@ -50,6 +52,8 @@ static inline uint GB(const T x, const uint8 s, const uint8 n)
|
||||
* @param s The start position for the new bits
|
||||
* @param n The size/window for the new bits
|
||||
* @param d The actually new bits to save in the defined position.
|
||||
* @pre n < sizeof(T) * 8
|
||||
* @pre s + n <= sizeof(T) * 8
|
||||
* @return The new value of \a x
|
||||
*/
|
||||
template <typename T, typename U>
|
||||
@@ -72,6 +76,8 @@ static inline T SB(T &x, const uint8 s, const uint8 n, const U d)
|
||||
* @param x The variable to add some bits at some position
|
||||
* @param s The start position of the addition
|
||||
* @param n The size/window for the addition
|
||||
* @pre n < sizeof(T) * 8
|
||||
* @pre s + n <= sizeof(T) * 8
|
||||
* @param i The value to add at the given start position in the given window.
|
||||
* @return The new value of \a x
|
||||
*/
|
||||
@@ -92,6 +98,7 @@ static inline T AB(T &x, const uint8 s, const uint8 n, const U i)
|
||||
*
|
||||
* @param x The value to check
|
||||
* @param y The position of the bit to check, started from the LSB
|
||||
* @pre y < sizeof(T) * 8
|
||||
* @return True if the bit is set, false else.
|
||||
*/
|
||||
template <typename T>
|
||||
@@ -109,6 +116,7 @@ static inline bool HasBit(const T x, const uint8 y)
|
||||
*
|
||||
* @param x The variable to set a bit
|
||||
* @param y The bit position to set
|
||||
* @pre y < sizeof(T) * 8
|
||||
* @return The new value of the old value with the bit set
|
||||
*/
|
||||
template <typename T>
|
||||
@@ -138,6 +146,7 @@ static inline T SetBit(T &x, const uint8 y)
|
||||
*
|
||||
* @param x The variable to clear the bit
|
||||
* @param y The bit position to clear
|
||||
* @pre y < sizeof(T) * 8
|
||||
* @return The new value of the old value with the bit cleared
|
||||
*/
|
||||
template <typename T>
|
||||
@@ -167,6 +176,7 @@ static inline T ClrBit(T &x, const uint8 y)
|
||||
*
|
||||
* @param x The variable to toggle the bit
|
||||
* @param y The bit position to toggle
|
||||
* @pre y < sizeof(T) * 8
|
||||
* @return The new value of the old value with the bit toggled
|
||||
*/
|
||||
template <typename T>
|
||||
@@ -286,6 +296,7 @@ static inline bool HasAtMostOneBit(T value)
|
||||
* @note Assumes a byte has 8 bits
|
||||
* @param x The value which we want to rotate
|
||||
* @param n The number how many we want to rotate
|
||||
* @pre n < sizeof(T) * 8
|
||||
* @return A bit rotated number
|
||||
*/
|
||||
template <typename T>
|
||||
@@ -300,6 +311,7 @@ static inline T ROL(const T x, const uint8 n)
|
||||
* @note Assumes a byte has 8 bits
|
||||
* @param x The value which we want to rotate
|
||||
* @param n The number how many we want to rotate
|
||||
* @pre n < sizeof(T) * 8
|
||||
* @return A bit rotated number
|
||||
*/
|
||||
template <typename T>
|
||||
|
@@ -89,7 +89,7 @@ template <typename Tenum_t> struct TinyEnumT;
|
||||
template <typename Tenum_t>
|
||||
struct TinyEnumT {
|
||||
typedef Tenum_t enum_type; ///< expose our enumeration type (i.e. Trackdir) to outside
|
||||
typedef EnumPropsT<Tenum_t> Props; ///< make easier access to our enumeration propeties
|
||||
typedef EnumPropsT<Tenum_t> Props; ///< make easier access to our enumeration properties
|
||||
typedef typename Props::storage storage_type; ///< small storage type
|
||||
static const enum_type begin = Props::begin; ///< enum beginning (i.e. TRACKDIR_BEGIN)
|
||||
static const enum_type end = Props::end; ///< enum end (i.e. TRACKDIR_END)
|
||||
|
@@ -108,7 +108,7 @@ DEFINE_POOL_METHOD(inline void *)::AllocateItem(size_t size, size_t index)
|
||||
item = (Titem *)this->alloc_cache;
|
||||
this->alloc_cache = this->alloc_cache->next;
|
||||
if (Tzero) {
|
||||
/* Explicitly casting to (void *) prevets a clang warning -
|
||||
/* Explicitly casting to (void *) prevents a clang warning -
|
||||
* we are actually memsetting a (not-yet-constructed) object */
|
||||
memset((void *)item, 0, sizeof(Titem));
|
||||
}
|
||||
|
@@ -45,7 +45,7 @@ struct PoolBase {
|
||||
static void Clean(PoolType);
|
||||
|
||||
/**
|
||||
* Contructor registers this object in the pool vector.
|
||||
* Constructor registers this object in the pool vector.
|
||||
* @param pt type of this pool.
|
||||
*/
|
||||
PoolBase(PoolType pt) : type(pt)
|
||||
@@ -278,7 +278,7 @@ struct Pool : PoolBase {
|
||||
};
|
||||
|
||||
private:
|
||||
static const size_t NO_FREE_ITEM = MAX_UVALUE(size_t); ///< Contant to indicate we can't allocate any more items
|
||||
static const size_t NO_FREE_ITEM = MAX_UVALUE(size_t); ///< Constant to indicate we can't allocate any more items
|
||||
|
||||
/**
|
||||
* Helper struct to cache 'freed' PoolItems so we
|
||||
|
@@ -37,7 +37,7 @@ static inline void QSortT(T *base, uint num, int (CDECL *comparator)(const T*, c
|
||||
/**
|
||||
* Type safe Gnome Sort.
|
||||
*
|
||||
* This is a slightly modifyied Gnome search. The basic
|
||||
* This is a slightly modified Gnome search. The basic
|
||||
* Gnome search tries to sort already sorted list parts.
|
||||
* The modification skips these.
|
||||
*
|
||||
|
@@ -72,7 +72,7 @@ protected:
|
||||
virtual char *LogRegisters(char *buffer, const char *last) const;
|
||||
|
||||
/**
|
||||
* Writes the dynamically linked libaries/modules to the buffer, if there
|
||||
* Writes the dynamically linked libraries/modules to the buffer, if there
|
||||
* is information about it available.
|
||||
* @param buffer The begin where to write at.
|
||||
* @param last The last position in the buffer to write to.
|
||||
|
@@ -62,7 +62,7 @@ static const CurrencySpec origin_currency_specs[NUM_CURRENCY] = {
|
||||
CurrencySpec _currency_specs[NUM_CURRENCY];
|
||||
|
||||
/**
|
||||
* These enums are only declared in order to make sens
|
||||
* These enums are only declared in order to make sense
|
||||
* out of the TTDPatch_To_OTTDIndex array that will follow
|
||||
* Every currency used by Ottd is there, just in case TTDPatch will
|
||||
* add those missing in its code
|
||||
@@ -129,7 +129,7 @@ const byte TTDPatch_To_OTTDIndex[] =
|
||||
};
|
||||
|
||||
/**
|
||||
* Will return the ottd's index correspondance to
|
||||
* Will return the ottd's index correspondence to
|
||||
* the ttdpatch's id. If the id is bigger than the array,
|
||||
* it is a grf written for ottd, thus returning the same id.
|
||||
* Only called from newgrf.cpp
|
||||
@@ -180,7 +180,7 @@ void CheckSwitchToEuro()
|
||||
* Called only from newgrf.cpp and settings.cpp.
|
||||
* @param preserve_custom will not reset custom currency (the latest one on the list)
|
||||
* if ever it is flagged to true. In which case, the total size of the memory to move
|
||||
* will be one currency spec less, thus preserving the custom curreny from been
|
||||
* will be one currency spec less, thus preserving the custom currency from been
|
||||
* overwritten.
|
||||
*/
|
||||
void ResetCurrencies(bool preserve_custom)
|
||||
|
@@ -138,7 +138,7 @@ void ConvertDateToYMD(Date date, YearMonthDay *ymd)
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a tupe of Year, Month and Day to a Date.
|
||||
* Converts a tuple of Year, Month and Day to a Date.
|
||||
* @param year is a number between 0..MAX_YEAR
|
||||
* @param month is a number between 0..11
|
||||
* @param day is a number between 1..31
|
||||
|
@@ -83,7 +83,7 @@ uint64 ottd_rdtsc();
|
||||
*
|
||||
* for (int i = 0; i < 5; i++) {
|
||||
* TIC();
|
||||
* --Do yuor code--
|
||||
* --Do your code--
|
||||
* TOC("A name", 5);
|
||||
* }
|
||||
*
|
||||
|
@@ -169,6 +169,8 @@ static void InitBlocksizeForVehicles(VehicleType type, EngineImageType image_typ
|
||||
|
||||
const Engine *e;
|
||||
FOR_ALL_ENGINES_OF_TYPE(e, type) {
|
||||
if (!e->IsEnabled()) continue;
|
||||
|
||||
EngineID eid = e->index;
|
||||
uint x, y;
|
||||
int x_offs, y_offs;
|
||||
@@ -742,7 +744,7 @@ struct DepotWindow : Window {
|
||||
}
|
||||
|
||||
case WID_D_SELL_ALL:
|
||||
/* Only open the confimation window if there are anything to sell */
|
||||
/* Only open the confirmation window if there are anything to sell */
|
||||
if (this->vehicle_list.Length() != 0 || this->wagon_list.Length() != 0) {
|
||||
TileIndex tile = this->window_number;
|
||||
byte vehtype = this->type;
|
||||
@@ -840,8 +842,7 @@ struct DepotWindow : Window {
|
||||
*/
|
||||
virtual bool OnVehicleSelect(const Vehicle *v)
|
||||
{
|
||||
/* Suppress the vehicle GUI when share-cloning. There is no point to it, starting vehicles can also be done via the depot GUI. */
|
||||
if (DoCommandP(this->window_number, v->index, _ctrl_pressed ? 1 : 0, CMD_CLONE_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_BUY_TRAIN + v->type), _ctrl_pressed ? NULL : CcCloneVehicle)) {
|
||||
if (DoCommandP(this->window_number, v->index, _ctrl_pressed ? 1 : 0, CMD_CLONE_VEHICLE | CMD_MSG(STR_ERROR_CAN_T_BUY_TRAIN + v->type), CcCloneVehicle)) {
|
||||
ResetObjectToPlace();
|
||||
}
|
||||
return true;
|
||||
|
@@ -93,7 +93,7 @@ static inline DiagDirection ReverseDiagDir(DiagDirection d)
|
||||
* the new DiagDirection.
|
||||
*
|
||||
* @param d The DiagDirection
|
||||
* @param delta The difference to applie on
|
||||
* @param delta The difference to apply on
|
||||
* @return The new direction which was calculated
|
||||
*/
|
||||
static inline DiagDirection ChangeDiagDir(DiagDirection d, DiagDirDiff delta)
|
||||
@@ -207,7 +207,7 @@ static inline DiagDirection XYNSToDiagDir(Axis xy, uint ns)
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if an interger value is a valid DiagDirection
|
||||
* Checks if an integer value is a valid DiagDirection
|
||||
*
|
||||
* @param d The value to check
|
||||
* @return True if the value belongs to a DiagDirection, else false
|
||||
|
@@ -66,7 +66,7 @@ enum DirDiff {
|
||||
DIRDIFF_SAME = 0, ///< Both directions faces to the same direction
|
||||
DIRDIFF_45RIGHT = 1, ///< Angle of 45 degrees right
|
||||
DIRDIFF_90RIGHT = 2, ///< Angle of 90 degrees right
|
||||
DIRDIFF_REVERSE = 4, ///< One direction is the opposit of the other one
|
||||
DIRDIFF_REVERSE = 4, ///< One direction is the opposite of the other one
|
||||
DIRDIFF_90LEFT = 6, ///< Angle of 90 degrees left
|
||||
DIRDIFF_45LEFT = 7, ///< Angle of 45 degrees left
|
||||
};
|
||||
@@ -119,7 +119,7 @@ DECLARE_POSTFIX_INCREMENT(DiagDirDiff)
|
||||
/**
|
||||
* Enumeration for the two axis X and Y
|
||||
*
|
||||
* This enumeration represente the two axis X and Y in the game.
|
||||
* This enumeration represents the two axis X and Y in the game.
|
||||
* The X axis is the one which goes align the north-west edge
|
||||
* (and south-east edge). The Y axis must be so the one which goes
|
||||
* align the north-east edge (and south-west) edge.
|
||||
|
@@ -76,7 +76,7 @@ static void DisasterClearSquare(TileIndex tile)
|
||||
|
||||
switch (GetTileType(tile)) {
|
||||
case MP_RAILWAY:
|
||||
if (Company::IsHumanID(GetTileOwner(tile))) {
|
||||
if (Company::IsHumanID(GetTileOwner(tile)) && !IsRailDepot(tile)) {
|
||||
Backup<CompanyByte> cur_company(_current_company, OWNER_WATER, FILE_LINE);
|
||||
DoCommand(tile, 0, 0, DC_EXEC, CMD_LANDSCAPE_CLEAR);
|
||||
cur_company.Restore();
|
||||
@@ -382,7 +382,7 @@ static void DestructIndustry(Industry *i)
|
||||
|
||||
/**
|
||||
* Aircraft handling, v->current_order.dest states:
|
||||
* 0: Fly towards the targetted industry
|
||||
* 0: Fly towards the targeted industry
|
||||
* 1: If within 15 tiles, fire away rockets and destroy industry
|
||||
* 2: Industry explosions
|
||||
* 3: Fly out of the map
|
||||
|
@@ -87,7 +87,7 @@ static TileIndex GetOtherAqueductEnd(TileIndex tile_from, TileIndex *tile_to = N
|
||||
return endtile;
|
||||
}
|
||||
|
||||
/** Toolbar window for constructing water infra structure. */
|
||||
/** Toolbar window for constructing water infrastructure. */
|
||||
struct BuildDocksToolbarWindow : Window {
|
||||
DockToolbarWidgets last_clicked_widget; ///< Contains the last widget that has been clicked on this toolbar.
|
||||
|
||||
|
@@ -45,6 +45,7 @@
|
||||
#include "water.h"
|
||||
#include "game/game.hpp"
|
||||
#include "cargomonitor.h"
|
||||
#include "goal_base.h"
|
||||
|
||||
#include "table/strings.h"
|
||||
#include "table/pricebase.h"
|
||||
@@ -291,7 +292,7 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner)
|
||||
#endif /* ENABLE_NETWORK */
|
||||
if (old_owner == _local_company) {
|
||||
/* Single player cheated to AI company.
|
||||
* There are no specatators in single player, so we must pick some other company. */
|
||||
* There are no spectators in single player, so we must pick some other company. */
|
||||
assert(!_networking);
|
||||
Backup<CompanyByte> cur_company(_current_company, FILE_LINE);
|
||||
Company *c;
|
||||
@@ -461,7 +462,7 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner)
|
||||
if (new_owner != INVALID_OWNER) {
|
||||
/* Update all signals because there can be new segment that was owned by two companies
|
||||
* and signals were not propagated
|
||||
* Similiar with crossings - it is needed to bar crossings that weren't before
|
||||
* Similar with crossings - it is needed to bar crossings that weren't before
|
||||
* because of different owner of crossing and approaching train */
|
||||
tile = 0;
|
||||
|
||||
@@ -508,6 +509,15 @@ void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner)
|
||||
if (si->owner == old_owner) si->owner = new_owner == INVALID_OWNER ? OWNER_NONE : new_owner;
|
||||
}
|
||||
|
||||
/* Remove Game Script created Goals and CargoMonitors. */
|
||||
Goal *g;
|
||||
FOR_ALL_GOALS(g) {
|
||||
if (g->company == old_owner) delete g;
|
||||
}
|
||||
|
||||
ClearCargoPickupMonitoring(old_owner);
|
||||
ClearCargoDeliveryMonitoring(old_owner);
|
||||
|
||||
/* Change colour of existing windows */
|
||||
if (new_owner != INVALID_OWNER) ChangeWindowOwner(old_owner, new_owner);
|
||||
|
||||
@@ -545,7 +555,7 @@ static void CompanyCheckBankrupt(Company *c)
|
||||
case 9:
|
||||
break;
|
||||
|
||||
/* Warn about bancruptcy after 3 months */
|
||||
/* Warn about bankruptcy after 3 months */
|
||||
case 4: {
|
||||
CompanyNewsInformation *cni = MallocT<CompanyNewsInformation>(1);
|
||||
cni->FillData(c);
|
||||
@@ -560,19 +570,19 @@ static void CompanyCheckBankrupt(Company *c)
|
||||
|
||||
/* Offer company for sale after 6 months */
|
||||
case 7: {
|
||||
/* Check if the company has any value. If not, declare it bankrupt
|
||||
* right now */
|
||||
/* Don't consider the loan */
|
||||
Money val = CalculateCompanyValue(c, false);
|
||||
if (val > 0) {
|
||||
c->bankrupt_value = val;
|
||||
c->bankrupt_asked = 1 << c->index; // Don't ask the owner
|
||||
c->bankrupt_timeout = 0;
|
||||
break;
|
||||
}
|
||||
/* FALL THROUGH to case 10 */
|
||||
|
||||
c->bankrupt_value = val;
|
||||
c->bankrupt_asked = 1 << c->index; // Don't ask the owner
|
||||
c->bankrupt_timeout = 0;
|
||||
|
||||
/* The company assets should always have some value */
|
||||
assert(c->bankrupt_value > 0);
|
||||
break;
|
||||
}
|
||||
|
||||
/* Bancrupt company after 6 months (if the company has no value) or latest
|
||||
/* Bankrupt company after 6 months (if the company has no value) or latest
|
||||
* after 9 months (if it still had value after 6 months) */
|
||||
default:
|
||||
case 10: {
|
||||
@@ -696,7 +706,7 @@ bool AddInflation(bool check_year)
|
||||
/* Approximation for (100 + infl_amount)% ** (1 / 12) - 100%
|
||||
* scaled by 65536
|
||||
* 12 -> months per year
|
||||
* This is only a good approxiamtion for small values
|
||||
* This is only a good approximation for small values
|
||||
*/
|
||||
_economy.inflation_prices += (_economy.inflation_prices * _economy.infl_amount * 54) >> 16;
|
||||
_economy.inflation_payment += (_economy.inflation_payment * _economy.infl_amount_pr * 54) >> 16;
|
||||
@@ -866,7 +876,7 @@ void StartupIndustryDailyChanges(bool init_counter)
|
||||
* which stands for the days in a month.
|
||||
* Using just 31 will make it so that a monthly reset (based on the real number of days of that month)
|
||||
* would not be needed.
|
||||
* Since it is based on "fractionnal parts", the leftover days will not make much of a difference
|
||||
* Since it is based on "fractional parts", the leftover days will not make much of a difference
|
||||
* on the overall total number of changes performed */
|
||||
_economy.industry_daily_increment = (1 << map_size) / 31;
|
||||
|
||||
@@ -1251,7 +1261,8 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left)
|
||||
if (_settings_game.order.improved_load && (front->current_order.GetLoadType() & OLFB_FULL_LOAD)) {
|
||||
/* 'Reserve' this cargo for this vehicle, because we were first. */
|
||||
for (Vehicle *v = front; v != NULL; v = v->Next()) {
|
||||
int cap_left = v->cargo_cap - v->cargo.Count();
|
||||
int cap_left = v->cargo_cap;
|
||||
if (!HasBit(v->vehicle_flags, VF_CARGO_UNLOADING)) cap_left -= v->cargo.Count();
|
||||
if (cap_left > 0) cargo_left[v->cargo_type] -= cap_left;
|
||||
}
|
||||
}
|
||||
@@ -1284,11 +1295,12 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left)
|
||||
bool dirty_station = false;
|
||||
|
||||
bool completely_emptied = true;
|
||||
bool anything_unloaded = false;
|
||||
bool anything_loaded = false;
|
||||
bool anything_unloaded = false;
|
||||
bool anything_loaded = false;
|
||||
uint32 full_load_amount = 0;
|
||||
uint32 cargo_not_full = 0;
|
||||
uint32 cargo_full = 0;
|
||||
uint32 cargo_not_full = 0;
|
||||
uint32 cargo_full = 0;
|
||||
uint32 reservation_left = 0;
|
||||
|
||||
front->cur_speed = 0;
|
||||
|
||||
@@ -1500,9 +1512,14 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left)
|
||||
if (use_autorefit) {
|
||||
/* When using autorefit, reserve all cargo for this wagon to prevent other wagons
|
||||
* from feeling the need to refit. */
|
||||
int total_cap_left = v->cargo_cap - v->cargo.Count();
|
||||
uint total_cap_left = v->cargo_cap - v->cargo.Count();
|
||||
cargo_left[v->cargo_type] -= total_cap_left;
|
||||
consist_capleft[v->cargo_type] -= total_cap_left;
|
||||
if (total_cap_left > cap && count > cap) {
|
||||
/* Remember if there are reservations left so that we don't stop
|
||||
* loading before they're loaded. */
|
||||
SetBit(reservation_left, v->cargo_type);
|
||||
}
|
||||
} else {
|
||||
/* Update cargo left; but don't reserve everything yet, so other wagons
|
||||
* of the same consist load in parallel. */
|
||||
@@ -1535,6 +1552,7 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left)
|
||||
st->last_vehicle_type = v->type;
|
||||
|
||||
if (ge->cargo.Empty()) {
|
||||
TriggerStationRandomisation(st, st->xy, SRT_CARGO_TAKEN, v->cargo_type);
|
||||
TriggerStationAnimation(st, st->xy, SAT_CARGO_TAKEN, v->cargo_type);
|
||||
AirportAnimationTrigger(st, AAT_STATION_CARGO_TAKEN, v->cargo_type);
|
||||
}
|
||||
@@ -1552,7 +1570,10 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left)
|
||||
}
|
||||
|
||||
if (anything_loaded || anything_unloaded) {
|
||||
if (front->type == VEH_TRAIN) TriggerStationAnimation(st, st->xy, SAT_TRAIN_LOADS);
|
||||
if (front->type == VEH_TRAIN) {
|
||||
TriggerStationRandomisation(st, front->tile, SRT_TRAIN_LOADS);
|
||||
TriggerStationAnimation(st, front->tile, SAT_TRAIN_LOADS);
|
||||
}
|
||||
}
|
||||
|
||||
/* Only set completely_emptied, if we just unloaded all remaining cargo */
|
||||
@@ -1564,10 +1585,17 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left)
|
||||
* If we use autorefit otoh, we only want to load/refit a vehicle if the other wagons cannot already hold the cargo,
|
||||
* to keep the option to still refit the vehicle when new cargo of different type shows up.
|
||||
*/
|
||||
if (_settings_game.order.improved_load && (front->current_order.GetLoadType() & OLFB_FULL_LOAD) && !use_autorefit) {
|
||||
if (_settings_game.order.improved_load && (front->current_order.GetLoadType() & OLFB_FULL_LOAD)) {
|
||||
/* Update left cargo */
|
||||
for (Vehicle *v = front; v != NULL; v = v->Next()) {
|
||||
int cap_left = v->cargo_cap - v->cargo.Count();
|
||||
int cap_left = v->cargo_cap;
|
||||
if (!HasBit(v->vehicle_flags, VF_CARGO_UNLOADING)) {
|
||||
if (use_autorefit) {
|
||||
continue;
|
||||
} else {
|
||||
cap_left -= v->cargo.Count();
|
||||
}
|
||||
}
|
||||
if (cap_left > 0) cargo_left[v->cargo_type] -= cap_left;
|
||||
}
|
||||
}
|
||||
@@ -1585,7 +1613,7 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left)
|
||||
}
|
||||
/* We loaded less cargo than possible for all cargo types and it's not full
|
||||
* load and we're not supposed to wait any longer: stop loading. */
|
||||
if (!anything_unloaded && full_load_amount == 0 && !(front->current_order.GetLoadType() & OLFB_FULL_LOAD) &&
|
||||
if (!anything_unloaded && full_load_amount == 0 && reservation_left == 0 && !(front->current_order.GetLoadType() & OLFB_FULL_LOAD) &&
|
||||
front->current_order_time >= (uint)max(front->current_order.wait_time - front->lateness_counter, 0)) {
|
||||
SetBit(front->vehicle_flags, VF_STOP_LOADING);
|
||||
}
|
||||
@@ -1637,6 +1665,9 @@ static void LoadUnloadVehicle(Vehicle *front, int *cargo_left)
|
||||
front->load_unload_ticks = max(1, unloading_time);
|
||||
|
||||
if (completely_emptied) {
|
||||
/* Make sure the vehicle is marked dirty, since we need to update the NewGRF
|
||||
* properties such as weight, power and TE whenever the trigger runs. */
|
||||
dirty_vehicle = true;
|
||||
TriggerVehicle(front, VEHICLE_TRIGGER_EMPTY);
|
||||
}
|
||||
|
||||
@@ -1797,7 +1828,7 @@ CommandCost CmdBuyShareInCompany(TileIndex tile, DoCommandFlag flags, uint32 p1,
|
||||
break;
|
||||
}
|
||||
}
|
||||
SetWindowDirty(WC_COMPANY, target_company);
|
||||
InvalidateWindowData(WC_COMPANY, target_company);
|
||||
CompanyAdminUpdate(c);
|
||||
}
|
||||
return cost;
|
||||
@@ -1835,7 +1866,7 @@ CommandCost CmdSellShareInCompany(TileIndex tile, DoCommandFlag flags, uint32 p1
|
||||
OwnerByte *b = c->share_owners;
|
||||
while (*b != _current_company) b++; // share owners is guaranteed to contain company
|
||||
*b = COMPANY_SPECTATOR;
|
||||
SetWindowDirty(WC_COMPANY, target_company);
|
||||
InvalidateWindowData(WC_COMPANY, target_company);
|
||||
CompanyAdminUpdate(c);
|
||||
}
|
||||
return CommandCost(EXPENSES_OTHER, cost);
|
||||
|
@@ -547,7 +547,7 @@ static EffectInitProc * const _effect_init_procs[] = {
|
||||
};
|
||||
assert_compile(lengthof(_effect_init_procs) == EV_END);
|
||||
|
||||
/** Functions for controling effect vehicles at each tick. */
|
||||
/** Functions for controlling effect vehicles at each tick. */
|
||||
static EffectTickProc * const _effect_tick_procs[] = {
|
||||
ChimneySmokeTick, // EV_CHIMNEY_SMOKE
|
||||
SteamSmokeTick, // EV_STEAM_SMOKE
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user