Compare commits
481 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c029120a7b | ||
|
|
93a3bc7cab | ||
|
|
d7c590dc18 | ||
|
|
71bc6bcc17 | ||
|
|
bbeaad03e4 | ||
|
|
d7de3b0dbe | ||
|
|
d8edc654f6 | ||
|
|
aa6f149224 | ||
|
|
9732544d81 | ||
|
|
b6b4c24b87 | ||
|
|
0aab694253 | ||
|
|
69040d6ea5 | ||
|
|
ae64743448 | ||
|
|
9f078c357d | ||
|
|
f82a4bf45a | ||
|
|
aa2de610f4 | ||
|
|
429d476be8 | ||
|
|
ebaa3964ed | ||
|
|
04651ae69f | ||
|
|
bf0403be84 | ||
|
|
3797cbb166 | ||
|
|
728a6a430b | ||
|
|
7f3ac7c344 | ||
|
|
03cace6d82 | ||
|
|
ca629a74c8 | ||
|
|
406121dae2 | ||
|
|
8ce5694417 | ||
|
|
565cf4687a | ||
|
|
abeaba735a | ||
|
|
479472fe7d | ||
|
|
84bb80dc1c | ||
|
|
19022439f3 | ||
|
|
e91431046a | ||
|
|
d4f850a325 | ||
|
|
c1d21ce505 | ||
|
|
c1492ea540 | ||
|
|
6ab394e941 | ||
|
|
ade411bf41 | ||
|
|
11371eb7d1 | ||
|
|
b0b26f31ef | ||
|
|
3eff380398 | ||
|
|
e8eafe008b | ||
|
|
26a657ea01 | ||
|
|
fb5afa8b0d | ||
|
|
5652be7007 | ||
|
|
2a9275900a | ||
|
|
7b6bfad6c1 | ||
|
|
06ba21d834 | ||
|
|
3688f73576 | ||
|
|
06ffec3f90 | ||
|
|
656b375e03 | ||
|
|
af63fa103f | ||
|
|
6959749aea | ||
|
|
c65cb4a2cf | ||
|
|
7b9842c9fe | ||
|
|
307e17be4d | ||
|
|
08c73115dd | ||
|
|
1affb01a81 | ||
|
|
650e372710 | ||
|
|
3e069251c9 | ||
|
|
736a6ad1f5 | ||
|
|
2757f1844c | ||
|
|
7a5e2b454e | ||
|
|
f2405b6e3e | ||
|
|
99df613d97 | ||
|
|
2f31a81021 | ||
|
|
3364c4288d | ||
|
|
0f8a3bdfb7 | ||
|
|
d904e0155d | ||
|
|
376dbd4d66 | ||
|
|
2db4a9f8b8 | ||
|
|
c4d53e04d8 | ||
|
|
f2c61803d9 | ||
|
|
73a9161869 | ||
|
|
c53950b12e | ||
|
|
8375a7edf8 | ||
|
|
1c8ca0ca4f | ||
|
|
e48232345a | ||
|
|
181b5f363b | ||
|
|
22e7a437c4 | ||
|
|
859ec2c025 | ||
|
|
2dbddf0e31 | ||
|
|
4976bbc3e1 | ||
|
|
c11ec69cd6 | ||
|
|
7b27195e9e | ||
|
|
3ed747e0ab | ||
|
|
ce56dd8023 | ||
|
|
6dcd0f280f | ||
|
|
c207359d2d | ||
|
|
f4a2317c39 | ||
|
|
205ef47f73 | ||
|
|
0a7a095b92 | ||
|
|
a13b40e0c8 | ||
|
|
7aef2e6897 | ||
|
|
e5cd6ce45c | ||
|
|
86337b4ef7 | ||
|
|
1329335de0 | ||
|
|
4f16bf6047 | ||
|
|
93aa9f4bbc | ||
|
|
55d3fdfa32 | ||
|
|
d6ab2f7052 | ||
|
|
a42af29db7 | ||
|
|
7539839412 | ||
|
|
d62c992a8f | ||
|
|
0f94e05bb1 | ||
|
|
ae99eac3ad | ||
|
|
fd943b8856 | ||
|
|
329fa15163 | ||
|
|
2aa35f7dd3 | ||
|
|
ef3a4e5de6 | ||
|
|
dec2f899ad | ||
|
|
4c908f2f84 | ||
|
|
4588cae722 | ||
|
|
c2544e5c32 | ||
|
|
a69d58e4fe | ||
|
|
3c2afedd7c | ||
|
|
90f9e91222 | ||
|
|
343933e5eb | ||
|
|
ed7ec153fc | ||
|
|
41b4fbaa67 | ||
|
|
6a82576c87 | ||
|
|
ab64ba4828 | ||
|
|
f7d8ba3694 | ||
|
|
e5348843c4 | ||
|
|
e54b83e66f | ||
|
|
5603daecc5 | ||
|
|
6159de9626 | ||
|
|
bfd0157107 | ||
|
|
5bb92c1e8a | ||
|
|
928fbf00d1 | ||
|
|
39bb32ee90 | ||
|
|
0ed45f178a | ||
|
|
c0115b1264 | ||
|
|
5e238bdd73 | ||
|
|
7b33872d79 | ||
|
|
c27c828eaf | ||
|
|
7c16f1417f | ||
|
|
d18a9995ce | ||
|
|
cee6057bf2 | ||
|
|
1b49cf0050 | ||
|
|
ac4527c25d | ||
|
|
1c4dcd494f | ||
|
|
158655211e | ||
|
|
8e684c5806 | ||
|
|
25a8e0f967 | ||
|
|
842a9d8a48 | ||
|
|
2e2ea93f63 | ||
|
|
528bb4ea32 | ||
|
|
dee012cf87 | ||
|
|
07d225d85b | ||
|
|
fd3def339c | ||
|
|
b4cc822085 | ||
|
|
8f78427f03 | ||
|
|
cd865fc77a | ||
|
|
9b363c59f0 | ||
|
|
34ffe3eec9 | ||
|
|
f87f657e4d | ||
|
|
a3969f84bb | ||
|
|
22e97e4666 | ||
|
|
e16c85f53a | ||
|
|
d35d97c4a5 | ||
|
|
01ba6e32d5 | ||
|
|
226eaa198c | ||
|
|
7e93ca0d25 | ||
|
|
0eec38eb5b | ||
|
|
5a5f2db080 | ||
|
|
11eb95aae9 | ||
|
|
76a063e8e2 | ||
|
|
6004032ba2 | ||
|
|
fc607d314f | ||
|
|
8faceb03d7 | ||
|
|
c9b0eea04c | ||
|
|
7a0d500529 | ||
|
|
1d04aef406 | ||
|
|
f2097e7448 | ||
|
|
a36d05567e | ||
|
|
ed1e09edea | ||
|
|
c0f71fb65c | ||
|
|
be8d17f217 | ||
|
|
f9a464512c | ||
|
|
db042040c2 | ||
|
|
ca80f71f45 | ||
|
|
a724419cc9 | ||
|
|
ff28829393 | ||
|
|
09b1a4cf5d | ||
|
|
21c13781e4 | ||
|
|
96501e9f08 | ||
|
|
f7b1a0abd3 | ||
|
|
3b79284608 | ||
|
|
1f95adba77 | ||
|
|
091e208807 | ||
|
|
b5aa062ce5 | ||
|
|
8d0391bf9c | ||
|
|
7252c08e50 | ||
|
|
4909bdbecc | ||
|
|
24a9d18717 | ||
|
|
3dd6167192 | ||
|
|
6c6c78752a | ||
|
|
c1908fcda5 | ||
|
|
4206d8a84a | ||
|
|
615ad710de | ||
|
|
7da54512d1 | ||
|
|
9cf2149c78 | ||
|
|
8a27d0bb1e | ||
|
|
bea8807de7 | ||
|
|
d3de080883 | ||
|
|
bc61ff380a | ||
|
|
ffcdd47321 | ||
|
|
51c6ae62d1 | ||
|
|
5b7a04ca27 | ||
|
|
f2af019eb7 | ||
|
|
5e28cc4757 | ||
|
|
4d12cce1c4 | ||
|
|
0d5ee772fc | ||
|
|
bc2382af06 | ||
|
|
724f1f3b69 | ||
|
|
f469b0be3e | ||
|
|
4180276c81 | ||
|
|
3342c5a367 | ||
|
|
d22b80779b | ||
|
|
a8f9520bbd | ||
|
|
a192fa74a7 | ||
|
|
9071d5f07f | ||
|
|
60f7168c22 | ||
|
|
40eee1e3a2 | ||
|
|
ce32ca4dc6 | ||
|
|
0c1fcc02ec | ||
|
|
49b940f69c | ||
|
|
b54a79f13e | ||
|
|
02967c3c08 | ||
|
|
d5c6760c85 | ||
|
|
fa81e20390 | ||
|
|
34ca88c098 | ||
|
|
5bcca41ace | ||
|
|
c9a8360419 | ||
|
|
04040a6a6d | ||
|
|
9eff17e66b | ||
|
|
9d85de4d3e | ||
|
|
c46e51449e | ||
|
|
594b328c7e | ||
|
|
30637d1580 | ||
|
|
31d4b1e8d6 | ||
|
|
0fc88ade9f | ||
|
|
cd18f2c10c | ||
|
|
6c573dc3b5 | ||
|
|
3245922407 | ||
|
|
1d6f3fda80 | ||
|
|
2335acdc16 | ||
|
|
140bb8409a | ||
|
|
2f5cc263c7 | ||
|
|
a2e53d5ab4 | ||
|
|
050271ed2d | ||
|
|
c72f21e410 | ||
|
|
79027cbf9d | ||
|
|
8bd3a8a991 | ||
|
|
9f858cefd1 | ||
|
|
3e7bdb0c73 | ||
|
|
b276dd7c63 | ||
|
|
a76847f362 | ||
|
|
dc024f0e3a | ||
|
|
373a6d3497 | ||
|
|
ca329cd275 | ||
|
|
4955e71ee0 | ||
|
|
43ee8e8d38 | ||
|
|
12d17ed62b | ||
|
|
a8496153d6 | ||
|
|
151956d471 | ||
|
|
9bbc6e7ab5 | ||
|
|
db6e65f4f3 | ||
|
|
1c7e978b09 | ||
|
|
d1c64315cd | ||
|
|
dbe969087d | ||
|
|
60a79b599e | ||
|
|
14dba9764b | ||
|
|
d8a316d7c5 | ||
|
|
c917ed2112 | ||
|
|
2be42dadea | ||
|
|
9145e5d2b5 | ||
|
|
124f386fd1 | ||
|
|
2507487877 | ||
|
|
ab3d5305a5 | ||
|
|
6de1225894 | ||
|
|
ca65ea003d | ||
|
|
1522558cf7 | ||
|
|
be21109989 | ||
|
|
2171a56c15 | ||
|
|
37b6bd5702 | ||
|
|
5d5d020103 | ||
|
|
8a41b36cd8 | ||
|
|
1808557b45 | ||
|
|
01059a7f75 | ||
|
|
3f78d271b2 | ||
|
|
7c7913c986 | ||
|
|
4e2ecbb5a1 | ||
|
|
1db921bedb | ||
|
|
0360e61dae | ||
|
|
00b422712e | ||
|
|
4753097c3d | ||
|
|
f294258b18 | ||
|
|
cf04ca5db3 | ||
|
|
da76191afc | ||
|
|
cdbb864725 | ||
|
|
aa26edfa48 | ||
|
|
fd7852cbdf | ||
|
|
4ea93bc8ef | ||
|
|
7e2e63094b | ||
|
|
9d8c04b0cc | ||
|
|
616c02c42e | ||
|
|
4436f96f9f | ||
|
|
221c84be66 | ||
|
|
36cbb54a9d | ||
|
|
a08df612be | ||
|
|
77b790cd5a | ||
|
|
3f75b8bca2 | ||
|
|
f8f2c9d3a5 | ||
|
|
ba566e9126 | ||
|
|
a37bb32fd6 | ||
|
|
f36539837e | ||
|
|
8321c2d0fa | ||
|
|
fe12488232 | ||
|
|
2a1e955fee | ||
|
|
3b9cc70553 | ||
|
|
8c1bf8f16d | ||
|
|
b080b86574 | ||
|
|
3ee07f37d8 | ||
|
|
169468a857 | ||
|
|
db38de3b7e | ||
|
|
740534440e | ||
|
|
737897653a | ||
|
|
533cb7c156 | ||
|
|
f286ba8db2 | ||
|
|
0b8869930f | ||
|
|
e735bbebce | ||
|
|
a959c0c965 | ||
|
|
c3bed437ee | ||
|
|
3b84827773 | ||
|
|
ec2b2fad58 | ||
|
|
ac72a6b1ed | ||
|
|
76cd96e709 | ||
|
|
8a9e9f838b | ||
|
|
f618c0d0a5 | ||
|
|
93baf192a0 | ||
|
|
a38cdeccc0 | ||
|
|
c530f89761 | ||
|
|
b6c29ae4eb | ||
|
|
e78627f2f1 | ||
|
|
b5eb50da7b | ||
|
|
757bc0a97b | ||
|
|
a35e970ab0 | ||
|
|
df2221ba7e | ||
|
|
55c7c21c5d | ||
|
|
f46996243b | ||
|
|
0829753fd0 | ||
|
|
caa9bffb56 | ||
|
|
0214caaac2 | ||
|
|
0e3e4eeb53 | ||
|
|
2337d169e8 | ||
|
|
93d5995bed | ||
|
|
2257d782b0 | ||
|
|
9d5ed2c469 | ||
|
|
a2a69c1480 | ||
|
|
cc18df4cb7 | ||
|
|
46aeed3817 | ||
|
|
bd6799a9f8 | ||
|
|
2c403c8a80 | ||
|
|
aa140bb928 | ||
|
|
c6ac52e71a | ||
|
|
f7a7f141d3 | ||
|
|
18bbe02337 | ||
|
|
ff96590312 | ||
|
|
a81b7a24a6 | ||
|
|
6b2eed0a70 | ||
|
|
8d5566651b | ||
|
|
8f2461cdfb | ||
|
|
fe0d3761f7 | ||
|
|
dd5e3d9f33 | ||
|
|
932951982f | ||
|
|
60d05aa27d | ||
|
|
5973140ac2 | ||
|
|
3d54c33180 | ||
|
|
a073b276ba | ||
|
|
1234b7d0f8 | ||
|
|
9a7618aeb6 | ||
|
|
5ac736ec00 | ||
|
|
842aaf7cdd | ||
|
|
05a91106b8 | ||
|
|
0b2f8c13a2 | ||
|
|
a66e0ff1f4 | ||
|
|
c5ae45c764 | ||
|
|
39d588fa60 | ||
|
|
65ff8ef539 | ||
|
|
c9f68ede59 | ||
|
|
51e274a523 | ||
|
|
6981fee459 | ||
|
|
b1272ee714 | ||
|
|
9aa9d7e898 | ||
|
|
7108b0aa3b | ||
|
|
1124c15ccd | ||
|
|
6fafa3d93a | ||
|
|
2de4652d09 | ||
|
|
14c1a7ad0b | ||
|
|
998a6c1302 | ||
|
|
f5c5783fac | ||
|
|
dd2f369e9d | ||
|
|
e71afa0c10 | ||
|
|
101a63c3f5 | ||
|
|
724dd44355 | ||
|
|
bd71bcc616 | ||
|
|
edfe26f2ee | ||
|
|
49b69a5705 | ||
|
|
7e06cdb455 | ||
|
|
91ddd32c20 | ||
|
|
baa11c8b0f | ||
|
|
6da8fede43 | ||
|
|
b892103747 | ||
|
|
f0db8a16d5 | ||
|
|
3d476cf432 | ||
|
|
3ae6dab58b | ||
|
|
b21e13a2a4 | ||
|
|
a3ffac0025 | ||
|
|
806d97435e | ||
|
|
729a03ea67 | ||
|
|
d23bcc13b1 | ||
|
|
fa83b145c8 | ||
|
|
34b68c7a82 | ||
|
|
732260853e | ||
|
|
e9fea1738a | ||
|
|
507e7135ec | ||
|
|
d70da28365 | ||
|
|
e7e6b45d89 | ||
|
|
4cfa482786 | ||
|
|
c723ef85ff | ||
|
|
35aa952c36 | ||
|
|
bff29d86b5 | ||
|
|
6ed602fab2 | ||
|
|
e004c5e6fe | ||
|
|
30004ef2c4 | ||
|
|
4928cc3022 | ||
|
|
7412338eb4 | ||
|
|
1601b87325 | ||
|
|
e006df1226 | ||
|
|
fd0a3f9ffc | ||
|
|
67d27d79b0 | ||
|
|
a1a662782c | ||
|
|
d49e71d803 | ||
|
|
c8f3f3c4a0 | ||
|
|
cfa1c18469 | ||
|
|
ad5599aed8 | ||
|
|
595727c438 | ||
|
|
0516d3518f | ||
|
|
bf3ae8d3d0 | ||
|
|
dbdf6273a3 | ||
|
|
0badab6d8e | ||
|
|
9a5db2063b | ||
|
|
fd95276926 | ||
|
|
44453a4f3d | ||
|
|
655bb98974 | ||
|
|
ecd7e7f4b1 | ||
|
|
3f4beeb212 | ||
|
|
079c97d994 | ||
|
|
59c99e3224 | ||
|
|
568a135848 | ||
|
|
e70cc80e44 | ||
|
|
c1a6abf3b1 | ||
|
|
48f3615bab | ||
|
|
758b4cf151 | ||
|
|
d72e0d2fb5 | ||
|
|
090a8f3f16 | ||
|
|
76fc242666 | ||
|
|
e580d9e623 | ||
|
|
05b5c945cc | ||
|
|
db8d95b1a0 | ||
|
|
c5aee2ac52 | ||
|
|
692458d8f5 | ||
|
|
927d1a9490 | ||
|
|
518eeac55f | ||
|
|
177c61477a | ||
|
|
fe4d076dd8 | ||
|
|
20373af117 | ||
|
|
3912258035 | ||
|
|
fbd79d88f0 |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -7,6 +7,7 @@ bin/ai/*
|
||||
bin/baseset/*
|
||||
!bin/baseset/openttd.grf
|
||||
!bin/baseset/opntitle.dat
|
||||
!bin/baseset/orig_extra.grf
|
||||
!bin/baseset/orig_*.obg
|
||||
!bin/baseset/orig_*.obs
|
||||
!bin/baseset/no_sound.obs
|
||||
|
||||
2
Doxyfile
2
Doxyfile
@@ -195,7 +195,7 @@ EXPAND_ONLY_PREDEF = YES
|
||||
SEARCH_INCLUDES = YES
|
||||
INCLUDE_PATH =
|
||||
INCLUDE_FILE_PATTERNS =
|
||||
PREDEFINED = ENABLE_NETWORK WITH_ZLIB WITH_LZO WITH_LZMA WITH_SDL WITH_PNG WITH_FONTCONFIG WITH_FREETYPE WITH_ICU UNICODE _UNICODE _GNU_SOURCE FINAL=
|
||||
PREDEFINED = ENABLE_NETWORK WITH_ZLIB WITH_LZO WITH_LZMA WITH_SDL WITH_PNG WITH_FONTCONFIG WITH_FREETYPE WITH_ICU_SORT WITH_ICU_LAYOUT UNICODE _UNICODE _GNU_SOURCE FINAL=
|
||||
EXPAND_AS_DEFINED =
|
||||
SKIP_FUNCTION_MACROS = YES
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
@@ -84,7 +84,7 @@ endif
|
||||
$(Q)cp "$(BIN_DIR)/scripts/"* "$(BUNDLE_DIR)/scripts/"
|
||||
ifdef MENU_DIR
|
||||
$(Q)cp "$(ROOT_DIR)/media/openttd.desktop" "$(BUNDLE_DIR)/media/"
|
||||
$(Q)$(AWK) -f "$(ROOT_DIR)/media/openttd.desktop.translation.awk" "$(SRC_DIR)/lang/"*.txt | $(SORT) | $(AWK) -f "$(ROOT_DIR)/media/openttd.desktop.filter.awk" >> "$(BUNDLE_DIR)/media/openttd.desktop"
|
||||
$(Q)$(AWK) -f "$(ROOT_DIR)/media/openttd.desktop.translation.awk" "$(SRC_DIR)/lang/"*.txt | LC_ALL=C $(SORT) | $(AWK) -f "$(ROOT_DIR)/media/openttd.desktop.filter.awk" >> "$(BUNDLE_DIR)/media/openttd.desktop"
|
||||
$(Q)sed s/=openttd/=$(BINARY_NAME)/g "$(BUNDLE_DIR)/media/openttd.desktop" > "$(ROOT_DIR)/media/openttd.desktop.install"
|
||||
endif
|
||||
ifeq ($(TTD), openttd.exe)
|
||||
|
||||
@@ -44,22 +44,18 @@ PNG_FILES := $(GRF_DIR)/*.png $(GRF_DIR)/rivers/*.png
|
||||
|
||||
# Build the GRF.
|
||||
ifdef GRFCODEC
|
||||
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
|
||||
all: $(BIN_DIR)/openttd.grf $(BIN_DIR)/orig_extra.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
|
||||
|
||||
# Make sure the sprites directory exists.
|
||||
$(OBJS_DIR)/sprites:
|
||||
$(Q)-mkdir "$@"
|
||||
|
||||
$(OBJS_DIR)/langfiles.tmp: $(LANG_DIR)/*.txt
|
||||
$(E) '$(STAGE) Collecting baseset translations'
|
||||
$(Q) cat $^ > $@
|
||||
|
||||
$(BIN_DIR)/%.obg: $(BASESET_DIR)/%.obg $(BIN_DIR)/openttd.grf $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/translations.awk
|
||||
$(BIN_DIR)/%.obg: $(BASESET_DIR)/%.obg $(BIN_DIR)/orig_extra.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) sed 's/^ORIG_EXTRA.GRF = *[0-9a-f]*$$/ORIG_EXTRA.GRF = '`$(MD5SUM) $(BIN_DIR)/orig_extra.grf | sed 's@ .*@@'`'/' $< > $@.tmp
|
||||
$(Q) awk -v langfiles='$(OBJS_DIR)/langfiles.tmp' -f $(BASESET_DIR)/translations.awk $@.tmp >$@
|
||||
$(Q) rm $@.tmp
|
||||
|
||||
@@ -72,8 +68,9 @@ $(BIN_DIR)/%.obm: $(BASESET_DIR)/%.obm $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/
|
||||
$(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 $(GRF_DIR)/assemble_nfo.awk
|
||||
$(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(GRF_DIR)/assemble_nfo.awk
|
||||
$(E) '$(STAGE) Assembling openttd.nfo'
|
||||
$(Q)-mkdir -p $(OBJS_DIR)/sprites
|
||||
$(Q)-cp $(PNG_FILES) $(OBJS_DIR)/sprites 2> /dev/null
|
||||
$(Q) awk -f $(GRF_DIR)/assemble_nfo.awk $(GRF_DIR)/openttd.nfo > $(OBJS_DIR)/sprites/openttd.nfo
|
||||
$(Q) $(NFORENUM) -s $(OBJS_DIR)/sprites/openttd.nfo
|
||||
@@ -81,6 +78,17 @@ $(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites $(GRF_DIR)
|
||||
$(Q) $(GRFCODEC) -n -s -e -p1 $(OBJS_DIR)/openttd.grf
|
||||
$(Q)cp $(OBJS_DIR)/openttd.grf $(BIN_DIR)/openttd.grf
|
||||
|
||||
# The copy operation of PNG_FILES is duplicated from the target 'openttd.grf', thus those targets may not run in parallel.
|
||||
$(BIN_DIR)/orig_extra.grf: $(PNG_FILES) $(NFO_FILES) $(GRF_DIR)/assemble_nfo.awk | $(BIN_DIR)/openttd.grf
|
||||
$(E) '$(STAGE) Assembling orig_extra.nfo'
|
||||
$(Q)-mkdir -p $(OBJS_DIR)/sprites
|
||||
$(Q)-cp $(PNG_FILES) $(OBJS_DIR)/sprites 2> /dev/null
|
||||
$(Q) awk -f $(GRF_DIR)/assemble_nfo.awk $(GRF_DIR)/orig_extra.nfo > $(OBJS_DIR)/sprites/orig_extra.nfo
|
||||
$(Q) $(NFORENUM) -s $(OBJS_DIR)/sprites/orig_extra.nfo
|
||||
$(E) '$(STAGE) Compiling orig_extra.grf'
|
||||
$(Q) $(GRFCODEC) -n -s -e -p1 $(OBJS_DIR)/orig_extra.grf
|
||||
$(Q)cp $(OBJS_DIR)/orig_extra.grf $(BIN_DIR)/orig_extra.grf
|
||||
|
||||
# Clean up temporary files.
|
||||
clean:
|
||||
$(Q)rm -f *.bak *.grf
|
||||
|
||||
@@ -152,7 +152,7 @@ mrproper:
|
||||
distclean: mrproper
|
||||
|
||||
maintainer-clean: distclean
|
||||
$(Q)rm -f $(BIN_DIR)/baseset/openttd.grf $(BIN_DIR)/baseset/*.obg $(BIN_DIR)/baseset/*.obs $(BIN_DIR)/baseset/*.obm
|
||||
$(Q)rm -f $(BIN_DIR)/baseset/openttd.grf $(BIN_DIR)/baseset/orig_extra.grf $(BIN_DIR)/baseset/*.obg $(BIN_DIR)/baseset/*.obs $(BIN_DIR)/baseset/*.obm
|
||||
|
||||
depend:
|
||||
@for dir in $(SRC_DIRS); do \
|
||||
|
||||
@@ -210,7 +210,7 @@ endif
|
||||
{ \
|
||||
print $$0 \
|
||||
} \
|
||||
' < Makefile.dep.tmp | sed 's@ *@ @g;s@ $$@@' | $(SORT) > Makefile.dep
|
||||
' < Makefile.dep.tmp | sed 's@ *@ @g;s@ $$@@' | LC_ALL=C $(SORT) > Makefile.dep
|
||||
|
||||
$(Q)rm -f Makefile.dep.tmp Makefile.dep.tmp.bak
|
||||
|
||||
|
||||
16
android-extract-strings.sh
Executable file
16
android-extract-strings.sh
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/bin/sh
|
||||
|
||||
mkdir -p ../translations/lang
|
||||
git diff 1.7/master -- src/lang/english.txt | tail -n +5 | grep '^[+]' | cut -b 2- | \
|
||||
grep -v "^STR_TABLET_CLOSE\b" | \
|
||||
grep -v "^STR_TABLET_SHIFT\b" | \
|
||||
grep -v "^STR_TABLET_CTRL\b" | \
|
||||
cat > ../translations/lang/english.txt
|
||||
|
||||
for f in src/lang/*.txt; do
|
||||
[ "$f" = src/lang/english.txt ] && continue
|
||||
rm -f ../translations/lang/`basename $f`
|
||||
cat ../translations/lang/english.txt | grep '^STR' | while read name text; do
|
||||
grep "^$name\b" $f >> ../translations/lang/`basename $f`
|
||||
done
|
||||
done
|
||||
13
android-store-strings.sh
Executable file
13
android-store-strings.sh
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/bin/sh
|
||||
|
||||
for f in ../translations/lang/*.txt; do
|
||||
[ "$f" = ../translations/lang/english.txt ] && continue
|
||||
out=src/lang/`basename $f`
|
||||
grep "^# Android strings" $out > /dev/null || [ -z "`tail -c 2 $out`" ] || echo >> $out
|
||||
{ grep -v "^# Android strings" $out ; echo "# Android strings" ; } > $out.new
|
||||
mv -f $out.new $out
|
||||
cat $f | grep '^STR' | while read name text; do
|
||||
{ grep -v "^$name\b" $out ; printf "%-64s%s\n" "$name" "$text" ; } > $out.new
|
||||
mv -f $out.new $out
|
||||
done
|
||||
done
|
||||
@@ -6,3 +6,5 @@
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
AILog.Info("1.6 API compatibility in effect.");
|
||||
|
||||
8
bin/ai/compat_1.7.nut
Normal file
8
bin/ai/compat_1.7.nut
Normal file
@@ -0,0 +1,8 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@@ -6,7 +6,7 @@ class Regression extends AIInfo {
|
||||
function GetShortName() { return "REGR"; }
|
||||
function GetDescription() { return "This runs regression-tests on some commands. On the same map the result should always be the same."; }
|
||||
function GetVersion() { return 1; }
|
||||
function GetAPIVersion() { return "1.6"; }
|
||||
function GetAPIVersion() { return "1.7"; }
|
||||
function GetDate() { return "2007-03-18"; }
|
||||
function CreateInstance() { return "Regression"; }
|
||||
}
|
||||
|
||||
@@ -21,12 +21,15 @@ description.el_GR = Ένα πάκετο μουσικής χωρίς πραγμα
|
||||
description.en_AU = A music pack without actual music.
|
||||
description.en_US = A music pack without actual music.
|
||||
description.es_ES = Un conjunto de música vacío.
|
||||
description.es_MX = Paquete de música vacío
|
||||
description.et_EE = Muusikakogu ilma muusikata.
|
||||
description.eu_ES = Musika gabeko musika paketea.
|
||||
description.fi_FI = Musiikkipaketti, jossa ei ole musiikkia.
|
||||
description.fr_FR = Un pack de musiques sans musiques.
|
||||
description.ga_IE = Pacáiste ceoil gan aon cheol iarbhír ann.
|
||||
description.gd_GB = Pacaid ciùil anns nach eil fonn sam bith.
|
||||
description.gl_ES = Un conxunto de músicas sen ningunha música.
|
||||
description.he_IL = אוסף מנגינות ללא מנגינות.
|
||||
description.hr_HR = Glazbeni paket bez ikakve glazbe.
|
||||
description.hu_HU = Zenei alapcsomag zene nélkül.
|
||||
description.id_ID = Paket musik tanpa musik sungguhan.
|
||||
@@ -38,6 +41,7 @@ description.la_VA = Sarcina musicae sine ulla musica.
|
||||
description.lb_LU = E Musikpack ouni aktuell Musik.
|
||||
description.lt_LT = Muzikos pakas be muzikos.
|
||||
description.lv_LV = Mūzikas kopa bez mūzikas
|
||||
description.ms_MY = Pek muzik tanpa muzik sebenar.
|
||||
description.nb_NO = En musikkpakke uten noe musikk.
|
||||
description.nl_NL = Een muziekset zonder muziek.
|
||||
description.nn_NO = Ei musikkpakke utan noko musikk.
|
||||
|
||||
@@ -21,6 +21,7 @@ description.el_GR = Ένα πάκετο ήχων χώρις ήχους.
|
||||
description.en_AU = A sound pack without any sounds.
|
||||
description.en_US = A sound pack without any sounds.
|
||||
description.es_ES = Un conjunto de sonidos vacío.
|
||||
description.es_MX = Paquete de sonidos vacío
|
||||
description.et_EE = Helikogu ilma helideta.
|
||||
description.eu_ES = Soinurik gabeko soinu pakete bat
|
||||
description.fi_FI = Äänipaketti, jossa ei ole ääniä.
|
||||
@@ -28,6 +29,7 @@ description.fr_FR = Un pack de sons sans sons.
|
||||
description.ga_IE = Pacáiste fuaimeanna gan aon fhuaimeanna ann.
|
||||
description.gd_GB = Pacaid fhuaimean anns nach eil fuaim sam bith.
|
||||
description.gl_ES = Un conxunto de sons sen ningún son
|
||||
description.he_IL = אוסף צלילים ללא צלילים.
|
||||
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 suara apapun.
|
||||
@@ -38,6 +40,7 @@ description.ko_KR = 아무런 효과음도 없는 효과음 팩입니다.
|
||||
description.la_VA = Sarcina sonorum sine ullis sonis.
|
||||
description.lb_LU = E Soundpack ouni iergendee Sound.
|
||||
description.lt_LT = Garsų pakas be jokių garsų.
|
||||
description.lv_LV = Skaņu kopa bez skaņas.
|
||||
description.nb_NO = En lydpakke uten noen lyder.
|
||||
description.nl_NL = Een geluidset zonder geluid.
|
||||
description.nn_NO = Ei lydpakke utan nokon lydar.
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -22,12 +22,15 @@ description.el_GR = Αρχικά γραφικά από το Transport Tycoon Del
|
||||
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.es_MX = Gráficos originales de Transport Tycoon Deluxe para DOS.
|
||||
description.et_EE = Algse Transport Tycoon Deluxe DOSi versiooni graafika.
|
||||
description.eu_ES = Transport Tycoon Deluxe originaleko DOS edizioko grafikoak.
|
||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen DOS-version grafiikat.
|
||||
description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version DOS).
|
||||
description.ga_IE = Grafaicí bunaidhTransport Tycoon Deluxe, eagrán 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.he_IL = גרפיקות Transport Tycoon Deluxe המקורי בגרסת 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.
|
||||
@@ -38,6 +41,8 @@ description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에
|
||||
description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe DOS.
|
||||
description.lb_LU = Original Transport Tycoon Deluxe DOS Editioun Grafik.
|
||||
description.lt_LT = Originali Transport Tycoon Deluxe DOS leidimo grafika.
|
||||
description.lv_LV = Oriģinālā Transport Tycoon Deluxe DOS izdevuma grafika.
|
||||
description.ms_MY = Grafik asal Transport Tycoon Deluxe DOS edition.
|
||||
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.
|
||||
@@ -59,21 +64,21 @@ description.zh_CN = 运输大亨DOS豪华版原版图形包.
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版的圖形。
|
||||
|
||||
[files]
|
||||
base = TRG1.GRF
|
||||
logos = TRGI.GRF
|
||||
arctic = TRGC.GRF
|
||||
tropical = TRGH.GRF
|
||||
toyland = TRGT.GRF
|
||||
extra = OPENTTD.GRF
|
||||
base = TRG1.GRF
|
||||
logos = TRGI.GRF
|
||||
arctic = TRGC.GRF
|
||||
tropical = TRGH.GRF
|
||||
toyland = TRGT.GRF
|
||||
extra = ORIG_EXTRA.GRF
|
||||
|
||||
[md5s]
|
||||
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
|
||||
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
||||
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
|
||||
OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc
|
||||
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
|
||||
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
||||
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
|
||||
ORIG_EXTRA.GRF = 0b10a95c0adee710ecca9c3d676be4f3
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
OPENTTD.GRF = This file was part of your OpenTTD installation.
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation.
|
||||
|
||||
@@ -21,12 +21,15 @@ description.el_GR = Αρχικοί ήχοι από το Transport Tycoon Deluxe
|
||||
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.es_MX = Sonidos originales de Transport Tycoon Deluxe para DOS.
|
||||
description.et_EE = Algse Transport Tycoon Deluxe DOSi versiooni helid.
|
||||
description.eu_ES = Transport Tycoon Deluxe originaleko DOS edizioko soinuak.
|
||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen DOS-version äänet.
|
||||
description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version DOS).
|
||||
description.ga_IE = Fuaimeanna bunaidh Transport Tycoon Deluxe, eagrán DOS.
|
||||
description.gd_GB = Fuaimean aig an deasachadh DOS tùsail aig Transport Tycoon Deluxe.
|
||||
description.gl_ES = Sons da edición orixinal de Transport Tycoon Deluxe para DOS.
|
||||
description.he_IL = צלילי Transport Tycoon Deluxe המקורי בגרסת DOS.
|
||||
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.id_ID = Efek suara orisinil Transport Tycoon Deluxe versi DOS.
|
||||
|
||||
@@ -22,12 +22,14 @@ description.el_GR = Αρχικά γραφικά από το Transport Tycoon Del
|
||||
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.es_MX = Gráficos originales de Transport Tycoon Deluxe para DOS (en alemán).
|
||||
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.ga_IE = Grafaicí bunaidhTransport Tycoon Deluxe, eagrán DOS (Gearmánach).
|
||||
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.he_IL = גרפיקות Transport Tycoon Deluxe המקורי בגרסת 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).
|
||||
@@ -38,6 +40,7 @@ description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에
|
||||
description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe DOS (Germanica).
|
||||
description.lb_LU = Original Transport Tycoon Deluxe DOS (Däitsch) Editioun Grafik.
|
||||
description.lt_LT = Originali Transport Tycoon Deluxe DOS (Vokiečių) leidimo grafika.
|
||||
description.lv_LV = Oriģinālā Transport Tycoon Deluxe DOS (vācu) izdevuma grafika.
|
||||
description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for DOS (tysk).
|
||||
description.nl_NL = Originele graphics van de Duitse Transport Tycoon Deluxe DOS-versie.
|
||||
description.nn_NO = Original grafikk frå Transport Tycoon Deluxe for DOS (tysk).
|
||||
@@ -59,21 +62,21 @@ description.zh_CN = 运输大亨DOS豪华德语版原版图形包.
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版 (德國版) 的圖形。
|
||||
|
||||
[files]
|
||||
base = TRG1.GRF
|
||||
logos = TRGI.GRF
|
||||
arctic = TRGC.GRF
|
||||
tropical = TRGH.GRF
|
||||
toyland = TRGT.GRF
|
||||
extra = OPENTTD.GRF
|
||||
base = TRG1.GRF
|
||||
logos = TRGI.GRF
|
||||
arctic = TRGC.GRF
|
||||
tropical = TRGH.GRF
|
||||
toyland = TRGT.GRF
|
||||
extra = ORIG_EXTRA.GRF
|
||||
|
||||
[md5s]
|
||||
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
|
||||
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
||||
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
|
||||
OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc
|
||||
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
|
||||
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
||||
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
|
||||
ORIG_EXTRA.GRF = 0b10a95c0adee710ecca9c3d676be4f3
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
OPENTTD.GRF = This file was part of your OpenTTD installation.
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation.
|
||||
|
||||
BIN
bin/baseset/orig_extra.grf
Normal file
BIN
bin/baseset/orig_extra.grf
Normal file
Binary file not shown.
@@ -22,12 +22,14 @@ description.el_GR = Αρχικά γραφικά από το Transport Tycoon Del
|
||||
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.es_MX = Gráficos originales de Transport Tycoon Deluxe para Windows.
|
||||
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.ga_IE = Grafaicí bunaidhTransport Tycoon Deluxe, eagrán 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.he_IL = גרפיקות Transport Tycoon Deluxe המקורי בגרסת 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.
|
||||
@@ -38,6 +40,8 @@ description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에
|
||||
description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe Windows.
|
||||
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Grafik.
|
||||
description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo grafika.
|
||||
description.lv_LV = Oriģinālā Transport Tycoon Deluxe Windows izdevuma grafika.
|
||||
description.ms_MY = Grafik asal Transport Tycoon Deluxe edisi Windows.
|
||||
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.
|
||||
@@ -59,21 +63,21 @@ description.zh_CN = 运输大亨Windows豪华版原版图形包.
|
||||
description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的圖形。
|
||||
|
||||
[files]
|
||||
base = TRG1R.GRF
|
||||
logos = TRGIR.GRF
|
||||
arctic = TRGCR.GRF
|
||||
tropical = TRGHR.GRF
|
||||
toyland = TRGTR.GRF
|
||||
extra = OPENTTD.GRF
|
||||
base = TRG1R.GRF
|
||||
logos = TRGIR.GRF
|
||||
arctic = TRGCR.GRF
|
||||
tropical = TRGHR.GRF
|
||||
toyland = TRGTR.GRF
|
||||
extra = ORIG_EXTRA.GRF
|
||||
|
||||
[md5s]
|
||||
TRG1R.GRF = b04ce593d8c5016e07473a743d7d3358
|
||||
TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
|
||||
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
|
||||
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
|
||||
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
|
||||
OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc
|
||||
TRG1R.GRF = b04ce593d8c5016e07473a743d7d3358
|
||||
TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
|
||||
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
|
||||
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
|
||||
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
|
||||
ORIG_EXTRA.GRF = 0b10a95c0adee710ecca9c3d676be4f3
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
OPENTTD.GRF = This file was part of your OpenTTD installation.
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation.
|
||||
|
||||
@@ -21,12 +21,14 @@ description.el_GR = Αρχική μουσική από το Transport Tycoon Del
|
||||
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.es_MX = Música original de Transport Tycoon Deluxe para Windows.
|
||||
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.ga_IE = Ceol bunaidh Transport Tycoon Deluxe, eagrán Windows.
|
||||
description.gd_GB = Ceòl aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe.
|
||||
description.gl_ES = Música da edición orixinal de Transport Tycoon Deluxe para Windows.
|
||||
description.he_IL = מנגינות Transport Tycoon Deluxe המקורי בגרסת Windows.
|
||||
description.hr_HR = Originalna glazba 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.
|
||||
@@ -38,6 +40,7 @@ description.la_VA = Musica ex editione originale Transport Tycoon Deluxe Windows
|
||||
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Musik.
|
||||
description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo muzika.
|
||||
description.lv_LV = Oriģinālā Transport Tycoon Deluxe Windows izdevuma mūzika.
|
||||
description.ms_MY = Muzik asal Transport Tycoon Deluxe edisi Windows.
|
||||
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.
|
||||
|
||||
@@ -21,12 +21,15 @@ description.el_GR = Αρχικοί ήχοι από το Transport Tycoon Deluxe
|
||||
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.es_MX = Sonidos originales de Transport Tycoon Deluxe para Windows.
|
||||
description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni helid.
|
||||
description.eu_ES = Transport Tycoon Deluxe originaleko Windows edizioko grafikoak.
|
||||
description.fi_FI = Alkuperäiset Transport Tycoon Deluxen Windows-version äänet.
|
||||
description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version Windows).
|
||||
description.ga_IE = Fuaimeanna bunaidh Transport Tycoon Deluxe, eagrán Windows.
|
||||
description.gd_GB = Fuaimean aig an deasachadh Windows tùsail aig Transport Tycoon Deluxe.
|
||||
description.gl_ES = Sons da edición orixinal de Transport Tycoon Deluxe para Windows.
|
||||
description.he_IL = צלילי Transport Tycoon Deluxe המקורי בגרסת Windows.
|
||||
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.id_ID = Efek suara orisinil Transport Tycoon Deluxe versi Windows.
|
||||
|
||||
@@ -6,3 +6,5 @@
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
GSLog.Info("1.6 API compatibility in effect.");
|
||||
|
||||
8
bin/game/compat_1.7.nut
Normal file
8
bin/game/compat_1.7.nut
Normal file
@@ -0,0 +1,8 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
156
changelog.txt
156
changelog.txt
@@ -1,3 +1,159 @@
|
||||
1.7.2 (2017-12-24)
|
||||
------------------------------------------------------------------------
|
||||
(None)
|
||||
|
||||
|
||||
1.7.2-RC1 (2017-12-11)
|
||||
------------------------------------------------------------------------
|
||||
- Change: When train depots have a horizontal scrollbar, allow scrolling 1 tile beyond the longest train, so you can actually attach a wagon at the end (r27937)
|
||||
- Fix: When moving wagons in the depot, the drag highlight did not exactly match the length of the dragged wagon chain (r27936)
|
||||
- Fix: [Win32] Right mouse scrolling didn't work properly with the Windows 10 Fall Creators Update [FS#6629] (r27935)
|
||||
- Fix: Forest, candyfloss forest and battery farm skipped the first animation frame [FS#6639] (r27932)
|
||||
- Fix: Glyphs in range U+0020 to U+00FF may only be defined in orig_extra.grf, not in openttd.grf [FS#6620] (r27915)
|
||||
- Fix: 'unban' console command was not handling IPv6 adresses properly (r27914, r27913)
|
||||
- Fix: Keep the 'link' between industry chain and smallmap windows whenever possible [FS#6585] (r27905)
|
||||
- Fix: When the last vehicle is removed from a shared orders group, hide the 'Stop sharing' button in the vehicle orders window [FS#6593] (r27904)
|
||||
- Fix: Tooltip of 'increase service interval' said 'decrease' [FS#6606] (r27895)
|
||||
- Fix: Console command parser passed invalid strings to the debug output, if command lines had many parameters [FS#6576] (r27884, r27883)
|
||||
|
||||
|
||||
1.7.1 (2017-06-13)
|
||||
------------------------------------------------------------------------
|
||||
(None)
|
||||
|
||||
|
||||
1.7.1-RC1 (2017-05-04)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: Add missing game script event for ships arriving at a station [FS#6560] (r27859, r27858)
|
||||
- Fix: StringID truncation to 16 bits broke string remapping test [FS#6555] (r27851)
|
||||
- Fix: Infinite loop in pathfinder when checking safe waiting position from a waypoint [FS#5926] (r27846)
|
||||
- Fix: [YAPF] Consider depot as destination before reversing path and applying penalty (r27843)
|
||||
- Fix: Don't consider locks or ship depots as clear water when placing industries (r27841)
|
||||
- Fix: Small news window's fake caption was not sized to fit its text (r27838)
|
||||
- Fix: Black remap did nothing in 8bpp-simple blitter (r27837)
|
||||
- Fix: Misaligned resize icon due to widget bounds being inclusive (r27831)
|
||||
- Fix: Update viewport sign dimensions when changing GUI zoom level (r27827, r27819)
|
||||
- Fix: Vehicle viewport is not user scrollable so flag window as such (r27823)
|
||||
- Fix: Allow dropdown to be drawn above origin widget even with scrollbar (r27820)
|
||||
- Fix: 32bpp-anim blitters assumed that pitch and width of the screen were equal [FS#6545] (r27796)
|
||||
- Fix: Chat text background overflowed due to missing padding [FS#6526] (r27794)
|
||||
- Fix: Failed to load lzo compressed savegames sometimes [FS#6450] (r27793)
|
||||
- Fix: [Win32] Mark OpenTTD as DPI-aware to avoid OS window scaling that breaks mouse input [FS#6366] (r27791, r27790)
|
||||
- Fix: [NewGRF] Get vehicle load amount after executing new cargo trigger [FS#6536] (r27788)
|
||||
- Fix: AI configuration changed incorrect parameter when some parameters are hidden [FS#6479] (r27787, r27786)
|
||||
- Fix: Buoys not always drawn after being placed depending on zoom level [FS#6508] (r27785)
|
||||
- Fix: Allow rail conversion even if ship is on tile [FS#6505] (r27784)
|
||||
|
||||
|
||||
1.7.0 (2017-04-01)
|
||||
------------------------------------------------------------------------
|
||||
(None)
|
||||
|
||||
|
||||
1.7.0-RC1 (2017-03-11)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [NewGRF] Extend the DCxx range to D800-DFFF (r27769)
|
||||
- Feature: [NewGRF, script] Increase the maximum number of GameScript texts to 64k, and NewGRF texts to 512k (r27758)
|
||||
- Feature: [NewGRF] CB 37 results 0x0401 and 0x0800-0BFF for improved control of display of input cargos in the industry GUI (r27751)
|
||||
- Feature: Sprites missing in outdated basesets are now provided by openttd.grf (r27732, r27731, r27730)
|
||||
- Feature: [NewGRF] String command 9A 1E to print the name of a cargo type (r27707, r27706)
|
||||
- Feature: [Debug] Assign descriptive names to threads [FS#6471] (r27674, r27673, r27670)
|
||||
- Feature: [NewGRF] Allow composing vehicles from multiple sprites (r27668)
|
||||
- Change: Enable realistic train and road vehicle acceleration by default (r27760)
|
||||
- Change: Hide the drive-in stops from the tram station picker (r27734)
|
||||
- Change: Do not count static NewGRF when checking for the maximum number of NewGRFs in a game (r27729)
|
||||
- Change: Limit waypoint area by maximum station spread during dragging (r27710)
|
||||
- Change: [Build] Re-enable Wnarrowing for gcc 4.9+ [FS#6532] (r27709, r27703)
|
||||
- Change: List railtype of rail tiles explicitly in the tile info window (r27686)
|
||||
- Change: Re-arrange the autoreplace GUI for trains, and do not filter it by railtype by default (r27683)
|
||||
- Change: Various performance improvements to CargoDist and LinkGraphs (r27682, r27681, r27614, r27613, r27612, r27611)
|
||||
- Change: Improve randomisation of rough land appearance (r27657)
|
||||
- Change: [Build] Enable C++11 for clang 3.3 (r27654)
|
||||
- Fix: Insufficient thread synchronisation when switching blitters lead to crashes [FS#6510] (r27775)
|
||||
- Fix: Enabling palette animation for 32bpp blitters while paused skipped initialisation of the palette and resulted in black windows [FS#5889] (r27774)
|
||||
- Fix: Intro games other than the traditional nightly one would cause townname NewGRFs to not get activated in the game options [FS#5819] (r27772)
|
||||
- Fix: Some variables were not reset between loading old savegames, which made loading them fail [FS#6540] (r27770)
|
||||
- Fix: Removing secondary roadtypes from bridges was factor 2 too cheap [FS#6538] (r27746)
|
||||
- Fix: Extra viewports did not center on the selected tile [FS#6537] (r27743)
|
||||
- Fix: [Build] Building on newer OSX versions with newer SDKs [FS#6295, FS#6502] (r27727, r27675)
|
||||
- Fix: Improve error message when trying to build rail track over a depot (r27726)
|
||||
- Fix: Rescanning NewGRF in-game could break the loaded NewGRF, if very many NewGRF were in use (r27721)
|
||||
- Fix: Text could overflow various GUI elements [FS#6527] (r27713)
|
||||
- Fix: Memory leak when reloading NewGRF (r27690, r27688, r27687)
|
||||
- Fix: When removing objects of bankrupt companies the tiles may revert to canal. In that case also check the ownership of the canal [FS#6511] (r27656)
|
||||
- Fix: Make the console file commands operate independent of the save/load GUI (r27645)
|
||||
- Fix: When dragging vehicles in group or depot GUI, draw the complete articulated vehicle (r27632)
|
||||
- Fix: When dragging multiple vehicles in the depot, make the destination gap as long as the chain instead of just considering the first vehicle (r27629)
|
||||
- Fix: [Build] Change the GCC version detection so that it works with two-digit and truncated versions [FS#6487] (r27623, r27616)
|
||||
- Fix: Do not hide filtered and highlighted industries by overlapping tiles in the zoomed-out smallmap (r27622, r27621, r27620)
|
||||
- Fix: [Script] Kill scripts, when a non-suspendable valuator call takes way too long [FS#6473] (r27594)
|
||||
|
||||
|
||||
1.6.1 (2016-07-01)
|
||||
------------------------------------------------------------------------
|
||||
- Fix: Compilation and optimisation issues with GCC6 (r27606, r27605, r27595)
|
||||
- Fix: Compilation with --disable-network [FS#6481] (r27602)
|
||||
- Fix: [NewGRF] shift-and-add-divide/modulo varadjusts use signed division/modulo (r27600)
|
||||
- Fix: Company 0 could accept engine previews before they were offered (r27598)
|
||||
|
||||
|
||||
1.6.1-RC1 (2016-06-01)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: Mexican Spanish (r27564, r27553, r27552)
|
||||
- Change: Performance improvement for dedicated servers by skipping drawing calls earlier in the process [FS#6402] (r27579)
|
||||
- Fix: Automatic servicing of road vehicles compared path finder costs with tile distances, thus vehicles went to depots which were factor 100 too far away [FS#6410] (r27586)
|
||||
- Fix: Enforce a non-zero load amount for all vehicles, so that vehicles can process their cargo reservations [FS#6437] (r27585, r27584)
|
||||
- Fix: Do not decrease the column width of depot windows when vehicles with high unitnumbers leave [FS#6415] (r27583)
|
||||
- Fix: Button size computation in script configuration window [FS#6461] (r27581)
|
||||
- Fix: [NewGRF] Set date of last service on construction also for wagons and articulated parts [FS#6395] (r27580)
|
||||
- Fix: Vehicles could not be hidden from the purchase list when they were in exclusive preview [FS#6454] (r27578)
|
||||
- Fix: Dock and roadstop picker, client list and town authority window did not auto-resize according to their content when they were positioned at the bottom of the screen [FS#6386] (r27577)
|
||||
- Fix: Various incorrect but uncritical size computations in the content client [FS#6449] (r27576, r27570)
|
||||
- Fix: Memory leak when disabling palette animation [FS#6404] (r27575)
|
||||
- Fix: [NewGRF] The house id as returned by house variable 66 was incorrect when querying neighboured tiles [FS#6432] (r27574)
|
||||
- Fix: [Build] Compilation failure with gcc 6.1 due to headers included after safeguards.h [FS#6467] (r27573)
|
||||
- Fix: Convenience savegame bump to distinguish 1.6 savegames from 1.5 savegames [FS#6442] (r27572)
|
||||
- Fix: [Build] Force sorting to be locale independent, so files are always ordered the same and by that token better diff-able (r27562, r27558)
|
||||
- Fix: Typos in comments and string (r27561, r27560)
|
||||
- Fix: [Build] bashism that caused different CFLAGS with bash vs dash (r27557)
|
||||
- Fix: Use a more appropiate sound effect for convert-rail (r27547)
|
||||
- Fix: Remove SetFill from vehicle GUI buttons, so that the viewport is resized instead of them in case of long window titles (r27546)
|
||||
- Fix: [Script] Generation of API wrappers (r27545, r27544, r27543)
|
||||
- Fix: [Windows] ICU got disabled for Windows builds, breaking RTL support [FS#6427] (r27542)
|
||||
- Fix: [NewGRF] Station spritelayouts did not accept the var10 flag for the palette [FS#6435] (r27534)
|
||||
|
||||
|
||||
1.6.0 (2016-04-01)
|
||||
------------------------------------------------------------------------
|
||||
(None)
|
||||
|
||||
|
||||
1.6.0-RC1 (2016-03-01)
|
||||
------------------------------------------------------------------------
|
||||
- Feature: [NewGRF] Allow custom sound IDs in RV property 0x12, ship property 0x10 and aircraft property 0x12 (r27507)
|
||||
- Feature: When viewing online content of a particular type, hide content of other types unless they have been (auto)selected for download (r27469, r27468, r27444)
|
||||
- Feature: [NewGRF] Move sprite 8 positions in sprite aligner with ctrl+click [FS#6241] (r27451)
|
||||
- Feature: Lower the sell-vehicle and sell-chain buttons in the train depot GUI while dragging a vehicle over it [FS#6391] (r27450, r27446)
|
||||
- Feature: Make the object placement GUI an independent window (r27438, r27397, r27346)
|
||||
- Feature: [Build] Project files and compilation with MSVC2015 (r27385, r27382, r27381, r27380, r27379)
|
||||
- Feature: [NewGRF] Allow railtype NewGRF to define separate sprites for the fences on either track side [FS#6315] (r27354, r27343)
|
||||
- Feature: [NewGRF] Increase the maximum amount of industry types to 128 per NewGRF and 240 in total (r27279)
|
||||
- Feature: Make Ctrl+Remove-Roadstop also remove the road, just like for rail stations [FS#6252] (r27251)
|
||||
- Change: [NewGRF] Allow static NewGRF to enable the second rocky tile set (r27497)
|
||||
- Change: Round loading percentage in loading indicators and conditional orders towards 50%, so that 0% and 100% mean completely empty or full (r27426)
|
||||
- Change: [Build] Rework the configure system to make more use of pkg-config (r27377:r27366, r27361, r27360)
|
||||
- Change: Enable YAPF cache debugging with desync debug level 2 (r27332)
|
||||
- Change: [strgen] Default plural subparameter position for CARGO_xxx string control codes is subparameter 1 (r27295)
|
||||
- Change: [NewGRF] Translate industry variable A6 (r27267)
|
||||
- Change: Do not consider cargo that is already being loaded as waiting cargo wrt. the station rating [FS#6165] (r27256)
|
||||
- Change: Tune down terrain generation to reduce amount of long slopes (r27230)
|
||||
- Change: Generate more detailed curves at the coast (r27229)
|
||||
- Change: Slightly more water in the non-custom sea levels (r27228)
|
||||
- Change: Be more lenient about road stop removal when at least one stop could be removed [FS#6262] (r27225)
|
||||
- Fix: [Win32] Stdin/out/err need to be re-assigned differently if the runtime lib of MSVC2015 is used (r27481)
|
||||
- Fix: [Haiku] On Haiku use the appropriate system variable to obtain the include dir [FS#6401] (r27472)
|
||||
|
||||
|
||||
1.5.3 (2015-12-01)
|
||||
------------------------------------------------------------------------
|
||||
(None)
|
||||
|
||||
69
config.lib
69
config.lib
@@ -1285,7 +1285,7 @@ make_compiler_cflags() {
|
||||
|
||||
# -W alone doesn't enable all warnings enabled by -Wall; on the other hand,
|
||||
# -Weverything enables too many useless warnings that can't be disabled (as of 3.0)
|
||||
flags="$flags -Wall -W"
|
||||
flags="$flags -Wall -W -Wextra"
|
||||
|
||||
# warning: unused parameter '...'
|
||||
flags="$flags -Wno-unused-parameter"
|
||||
@@ -1326,13 +1326,20 @@ make_compiler_cflags() {
|
||||
flags="$flags -Wno-unused-variable"
|
||||
fi
|
||||
|
||||
if [ "$cc_version" -ge "33" ]; then
|
||||
# clang completed C++11 support in version 3.3
|
||||
flags="$flags -std=c++11"
|
||||
fi
|
||||
|
||||
# rdynamic is used to get useful stack traces from crash reports.
|
||||
ldflags="$ldflags -rdynamic"
|
||||
else
|
||||
# Enable some things only for certain GCC versions
|
||||
cc_version=`$1 -dumpversion | cut -c 1,3`
|
||||
# cc_version = major_version * 100 + minor_version
|
||||
# For example: "3.3" -> 303, "4.9.2" -> 409, "6" -> 600, "23.5" -> 2305
|
||||
cc_version=`$1 -dumpversion | $awk -F . '{printf "%d%02d", $1, $2}'`
|
||||
|
||||
if [ $cc_version -lt 33 ]; then
|
||||
if [ $cc_version -lt 303 ]; then
|
||||
log 1 "configure: error: gcc older than 3.3 can't compile OpenTTD because of its poor template support"
|
||||
exit 1
|
||||
fi
|
||||
@@ -1345,20 +1352,20 @@ make_compiler_cflags() {
|
||||
if [ $enable_assert -eq 0 ]; then
|
||||
# Do not warn about unused variables when building without asserts
|
||||
flags="$flags -Wno-unused-variable"
|
||||
if [ $cc_version -ge 46 ]; then
|
||||
if [ $cc_version -ge 406 ]; then
|
||||
# GCC 4.6 gives more warnings, disable them too
|
||||
flags="$flags -Wno-unused-but-set-variable"
|
||||
flags="$flags -Wno-unused-but-set-parameter"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ $cc_version -ge 34 ]; then
|
||||
if [ $cc_version -ge 304 ]; then
|
||||
# Warn when a variable is used to initialise itself:
|
||||
# int a = a;
|
||||
flags="$flags -Winit-self"
|
||||
fi
|
||||
|
||||
if [ $cc_version -ge 40 ]; then
|
||||
if [ $cc_version -ge 400 ]; then
|
||||
# GCC 4.0+ complains about that we break strict-aliasing.
|
||||
# On most places we don't see how to fix it, and it doesn't
|
||||
# break anything. So disable strict-aliasing to make the
|
||||
@@ -1369,7 +1376,7 @@ make_compiler_cflags() {
|
||||
flags="$flags -Wcast-qual"
|
||||
fi
|
||||
|
||||
if [ $cc_version -ge 42 ]; then
|
||||
if [ $cc_version -ge 402 ]; then
|
||||
# GCC 4.2+ automatically assumes that signed overflows do
|
||||
# not occur in signed arithmetics, whereas we are not
|
||||
# sure that they will not happen. It furthermore complains
|
||||
@@ -1380,33 +1387,42 @@ make_compiler_cflags() {
|
||||
flags="$flags -Wnon-virtual-dtor"
|
||||
fi
|
||||
|
||||
if [ $cc_version -ge 43 ]; then
|
||||
if [ $cc_version -ge 403 ] && [ $cc_version -lt 600 ]; then
|
||||
# Use gnu++0x mode so static_assert() is available.
|
||||
# Don't use c++0x, it breaks mingw (with gcc 4.4.0).
|
||||
cxxflags="$cxxflags -std=gnu++0x"
|
||||
fi
|
||||
|
||||
if [ $cc_version -eq 45 ]; then
|
||||
if [ $cc_version -eq 405 ]; then
|
||||
# Prevent optimisation supposing enums are in a range specified by the standard
|
||||
# For details, see http://gcc.gnu.org/PR43680
|
||||
flags="$flags -fno-tree-vrp"
|
||||
fi
|
||||
|
||||
if [ $cc_version -ge 47 ]; then
|
||||
if [ $cc_version -eq 407 ]; then
|
||||
# Disable -Wnarrowing which gives many warnings, such as:
|
||||
# warning: narrowing conversion of '...' from 'unsigned int' to 'int' inside { } [-Wnarrowing]
|
||||
# They are valid according to the C++ standard, but useless.
|
||||
cxxflags="$cxxflags -Wno-narrowing"
|
||||
fi
|
||||
|
||||
if [ $cc_version -ge 407 ]; then
|
||||
# Disable bogus 'attempt to free a non-heap object' warning
|
||||
flags="$flags -Wno-free-nonheap-object"
|
||||
fi
|
||||
|
||||
if [ $cc_version -ge 600 ]; then
|
||||
# -flifetime-dse=2 (default since GCC 6) doesn't play
|
||||
# well with our custom pool item allocator
|
||||
cxxflags="$cxxflags -flifetime-dse=1 -std=gnu++14"
|
||||
fi
|
||||
|
||||
if [ "$enable_lto" != "0" ]; then
|
||||
# GCC 4.5 outputs '%{flto}', GCC 4.6 outputs '%{flto*}'
|
||||
has_lto=`$1 -dumpspecs | grep '\%{flto'`
|
||||
if [ -n "$has_lto" ]; then
|
||||
# Use LTO only if we see LTO exists and is requested
|
||||
if [ $cc_version -lt 46 ]; then
|
||||
if [ $cc_version -lt 406 ]; then
|
||||
flags="$flags -flto"
|
||||
else
|
||||
flags="$flags -flto=jobserver"
|
||||
@@ -1490,7 +1506,7 @@ make_cflags_and_ldflags() {
|
||||
fi
|
||||
|
||||
if [ $enable_debug -le 2 ]; then
|
||||
cc_host_is_gcc=`basename "$cc_host" | grep "gcc" &>/dev/null`
|
||||
cc_host_is_gcc=`basename "$cc_host" | grep "gcc" 2>/dev/null`
|
||||
if [ -n "$cc_host_is_gcc" ]; then
|
||||
# Define only when compiling with GCC. Some GLIBC versions use GNU
|
||||
# extensions in a way that breaks build with at least ICC.
|
||||
@@ -1498,14 +1514,14 @@ make_cflags_and_ldflags() {
|
||||
CFLAGS="$CFLAGS -D_FORTIFY_SOURCE=2"
|
||||
fi
|
||||
|
||||
cc_build_is_gcc=`basename "$cc_build" | grep "gcc" &>/dev/null`
|
||||
cc_build_is_gcc=`basename "$cc_build" | grep "gcc" 2>/dev/null`
|
||||
if [ -n "$cc_build_is_gcc" ]; then
|
||||
# Just add -O1 to the tools needed for building.
|
||||
CFLAGS_BUILD="$CFLAGS_BUILD -D_FORTIFY_SOURCE=2 -O1"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$os" = "OSX" ] && [ $cc_version -eq 40 ]; then
|
||||
if [ "$os" = "OSX" ] && [ $cc_version -eq 400 ]; then
|
||||
# Apple's GCC 4.0 has a compiler bug for x86_64 with (higher) optimization,
|
||||
# wrongly optimizing ^= in loops. This disables the failing optimisation.
|
||||
CFLAGS="$CFLAGS -fno-expensive-optimizations"
|
||||
@@ -1529,7 +1545,7 @@ make_cflags_and_ldflags() {
|
||||
LDFLAGS="$LDFLAGS -mwin32"
|
||||
fi
|
||||
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then
|
||||
if [ $cc_version -lt 46 ]; then
|
||||
if [ $cc_version -lt 406 ]; then
|
||||
flags="$flags -mno-cygwin"
|
||||
LDFLAGS="$LDFLAGS -mno-cygwin"
|
||||
fi
|
||||
@@ -1542,10 +1558,10 @@ make_cflags_and_ldflags() {
|
||||
|
||||
LIBS="$LIBS -lws2_32 -lwinmm -lgdi32 -ldxguid -lole32 -limm32"
|
||||
|
||||
if [ $cc_version -ge 44 ]; then
|
||||
if [ $cc_version -ge 404 ]; then
|
||||
LDFLAGS_BUILD="$LDFLAGS_BUILD -static-libgcc -static-libstdc++"
|
||||
fi
|
||||
if [ $cc_version -ge 47 ]; then
|
||||
if [ $cc_version -ge 407 ]; then
|
||||
CFLAGS="$CFLAGS -mno-ms-bitfields"
|
||||
fi
|
||||
fi
|
||||
@@ -1595,23 +1611,6 @@ make_cflags_and_ldflags() {
|
||||
CFLAGS="$OSX_SYSROOT $CFLAGS"
|
||||
LDFLAGS="$OSX_LD_SYSROOT $LDFLAGS"
|
||||
fi
|
||||
|
||||
if [ "$enable_universal" = "0" ] && [ $cc_version -gt 40 ]; then
|
||||
# Only set the min version when not doing an universal build.
|
||||
# Universal builds set the version elsewhere.
|
||||
if [ "$cpu_type" = "64" ]; then
|
||||
CFLAGS="$CFLAGS -mmacosx-version-min=10.5"
|
||||
else
|
||||
gcc_cpu=`$cc_host -dumpmachine`
|
||||
if [ "`echo $gcc_cpu | cut -c 1-3`" = "ppc" -o "`echo $gcc_cpu | cut -c 1-7`" = "powerpc" ]; then
|
||||
# PowerPC build can run on 10.3
|
||||
CFLAGS="$CFLAGS -mmacosx-version-min=10.3"
|
||||
else
|
||||
# Intel is only available starting from 10.4
|
||||
CFLAGS="$CFLAGS -mmacosx-version-min=10.4"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ]; then
|
||||
@@ -1774,7 +1773,7 @@ make_cflags_and_ldflags() {
|
||||
# GCC 4.0+ doesn't like the DirectX includes (gives tons of
|
||||
# warnings on it we won't be able to fix). For now just
|
||||
# suppress those warnings.
|
||||
if [ $cc_version -ge 40 ]; then
|
||||
if [ $cc_version -ge 400 ]; then
|
||||
CFLAGS="$CFLAGS -Wno-non-virtual-dtor"
|
||||
fi
|
||||
fi
|
||||
|
||||
4
configure
vendored
4
configure
vendored
@@ -127,7 +127,7 @@ AWKCOMMAND='
|
||||
if ($0 == "WINCE" && "'$os'" != "WINCE") { next; }
|
||||
if ($0 == "MSVC" && "'$os'" != "MSVC") { next; }
|
||||
if ($0 == "DIRECTMUSIC" && "'$with_direct_music'" == "0") { next; }
|
||||
if ($0 == "LIBTIMIDITY" && "'$libtimidity'" == "" ) { next; }
|
||||
if ($0 == "LIBTIMIDITY" && "'$libtimidity_config'" == "" ) { next; }
|
||||
if ($0 == "HAVE_THREAD" && "'$with_threads'" == "0") { next; }
|
||||
if ($0 == "SSE" && "'$with_sse'" != "1") { next; }
|
||||
|
||||
@@ -149,7 +149,7 @@ AWKCOMMAND='
|
||||
|
||||
# Read the source.list and process it
|
||||
# Please escape ALL " within ` because e.g. "" terminates the string in some sh implementations
|
||||
SRCS="`< $ROOT_DIR/source.list tr '\r' '\n' | $awk \"$AWKCOMMAND\" | $PIPE_SORT`"
|
||||
SRCS="`< $ROOT_DIR/source.list tr '\r' '\n' | $awk \"$AWKCOMMAND\" | LC_ALL=C $PIPE_SORT`"
|
||||
|
||||
OBJS_C="` echo \"$SRCS\" | $awk ' { ORS = \" \" } /\.c$/ { gsub(\".c$\", \".o\", $0); print $0; }'`"
|
||||
OBJS_CPP="`echo \"$SRCS\" | $awk ' { ORS = \" \" } /\.cpp$/ { gsub(\".cpp$\", \".o\", $0); print $0; }'`"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
OpenTTD's known bugs
|
||||
Last updated: 2015-02-24
|
||||
Release version: 1.5.0-beta2
|
||||
Last updated: 2017-12-24
|
||||
Release version: 1.7.2
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
@@ -11,21 +11,21 @@ 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
|
||||
base = TRG1.GRF
|
||||
logos = TRGI.GRF
|
||||
arctic = TRGC.GRF
|
||||
tropical = TRGH.GRF
|
||||
toyland = TRGT.GRF
|
||||
extra = ORIG_EXTRA.GRF
|
||||
|
||||
[md5s]
|
||||
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
|
||||
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
||||
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
|
||||
OPENTTD.GRF =
|
||||
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
|
||||
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
||||
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
|
||||
ORIG_EXTRA.GRF =
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
OPENTTD.GRF = This file was part of your OpenTTD installation.
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation.
|
||||
|
||||
@@ -11,21 +11,21 @@ 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
|
||||
base = TRG1.GRF
|
||||
logos = TRGI.GRF
|
||||
arctic = TRGC.GRF
|
||||
tropical = TRGH.GRF
|
||||
toyland = TRGT.GRF
|
||||
extra = ORIG_EXTRA.GRF
|
||||
|
||||
[md5s]
|
||||
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
|
||||
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
||||
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
|
||||
OPENTTD.GRF =
|
||||
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
|
||||
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
|
||||
TRGC.GRF = ed446637e034104c5559b32c18afe78d
|
||||
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
|
||||
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
|
||||
ORIG_EXTRA.GRF =
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
OPENTTD.GRF = This file was part of your OpenTTD installation.
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation.
|
||||
|
||||
@@ -11,21 +11,21 @@ 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
|
||||
base = TRG1R.GRF
|
||||
logos = TRGIR.GRF
|
||||
arctic = TRGCR.GRF
|
||||
tropical = TRGHR.GRF
|
||||
toyland = TRGTR.GRF
|
||||
extra = ORIG_EXTRA.GRF
|
||||
|
||||
[md5s]
|
||||
TRG1R.GRF = b04ce593d8c5016e07473a743d7d3358
|
||||
TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
|
||||
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
|
||||
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
|
||||
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
|
||||
OPENTTD.GRF =
|
||||
TRG1R.GRF = b04ce593d8c5016e07473a743d7d3358
|
||||
TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
|
||||
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
|
||||
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
|
||||
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
|
||||
ORIG_EXTRA.GRF =
|
||||
|
||||
[origin]
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
OPENTTD.GRF = This file was part of your OpenTTD installation.
|
||||
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
|
||||
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation.
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
// 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/>.
|
||||
//
|
||||
-1 * 0 0C "Canal graphics by George / PaulC"
|
||||
-1 * 0 0C "Canal graphics by George"
|
||||
-1 * 3 05 08 41
|
||||
// Canal slopes
|
||||
-1 sprites/canal_locks.png 8bpp 66 8 64 23 -31 0 normal
|
||||
@@ -77,95 +77,3 @@
|
||||
-1 sprites/canals.png 8bpp 446 10 24 16 -11 -6 normal
|
||||
// Canal icon
|
||||
-1 sprites/canal_locks.png 8bpp 50 232 20 20 0 0 normal
|
||||
|
||||
// Differentiation for the climates starts here
|
||||
|
||||
// Canal edges (arctic snowy)
|
||||
-1 * 4 01 05 01 \b12
|
||||
-1 sprites/canals.png 8bpp 30 40 45 22 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 94 40 41 21 -8 10 normal
|
||||
-1 sprites/canals.png 8bpp 142 40 42 21 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 190 40 43 22 -31 -1 normal
|
||||
-1 sprites/canals.png 8bpp 238 40 22 22 11 4 normal
|
||||
-1 sprites/canals.png 8bpp 270 40 24 16 -11 15 normal
|
||||
-1 sprites/canals.png 8bpp 302 40 23 23 -31 4 normal
|
||||
-1 sprites/canals.png 8bpp 334 40 24 18 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 366 40 12 11 21 10 normal
|
||||
-1 sprites/canals.png 8bpp 398 40 19 10 -8 21 normal
|
||||
-1 sprites/canals.png 8bpp 430 40 11 10 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 446 40 24 16 -11 -6 normal
|
||||
-1 * 7 02 05 10 01 00 00 00
|
||||
|
||||
// Canal edges (arctic normal)
|
||||
-1 * 4 01 05 01 \b12
|
||||
-1 sprites/canals.png 8bpp 30 70 45 22 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 94 70 41 21 -8 10 normal
|
||||
-1 sprites/canals.png 8bpp 142 70 42 21 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 190 70 43 22 -31 -1 normal
|
||||
-1 sprites/canals.png 8bpp 238 70 22 22 11 4 normal
|
||||
-1 sprites/canals.png 8bpp 270 70 24 16 -11 15 normal
|
||||
-1 sprites/canals.png 8bpp 302 70 23 23 -31 4 normal
|
||||
-1 sprites/canals.png 8bpp 334 70 24 18 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 366 70 12 11 21 10 normal
|
||||
-1 sprites/canals.png 8bpp 398 70 19 10 -8 21 normal
|
||||
-1 sprites/canals.png 8bpp 430 70 11 10 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 446 70 24 16 -11 -6 normal
|
||||
-1 * 7 02 05 11 01 00 00 00
|
||||
// Choose the right arctic canal edges
|
||||
-1 * 14 02 05 12 81 81 00 FF 01 10 00 04 04 11 00
|
||||
-1 * 6 07 83 01 \7! 01 01
|
||||
-1 * 7 03 05 01 02 00 12 00
|
||||
|
||||
// Canal edges (tropic desert)
|
||||
-1 * 4 01 05 01 \b12
|
||||
-1 sprites/canals.png 8bpp 30 100 45 22 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 94 100 41 21 -8 10 normal
|
||||
-1 sprites/canals.png 8bpp 142 100 42 21 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 190 100 43 22 -31 -1 normal
|
||||
-1 sprites/canals.png 8bpp 238 100 22 22 11 4 normal
|
||||
-1 sprites/canals.png 8bpp 270 100 24 16 -11 15 normal
|
||||
-1 sprites/canals.png 8bpp 302 100 23 23 -31 4 normal
|
||||
-1 sprites/canals.png 8bpp 334 100 24 18 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 366 100 12 11 21 10 normal
|
||||
-1 sprites/canals.png 8bpp 398 100 19 10 -8 21 normal
|
||||
-1 sprites/canals.png 8bpp 430 100 11 10 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 446 100 24 16 -11 -6 normal
|
||||
-1 * 7 02 05 13 01 00 00 00
|
||||
|
||||
// Canal edges (tropic rainforest)
|
||||
-1 * 4 01 05 01 \b12
|
||||
-1 sprites/canals.png 8bpp 30 130 45 22 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 94 130 41 21 -8 10 normal
|
||||
-1 sprites/canals.png 8bpp 142 130 42 21 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 190 130 43 22 -31 -1 normal
|
||||
-1 sprites/canals.png 8bpp 238 130 22 22 11 4 normal
|
||||
-1 sprites/canals.png 8bpp 270 130 24 16 -11 15 normal
|
||||
-1 sprites/canals.png 8bpp 302 130 23 23 -31 4 normal
|
||||
-1 sprites/canals.png 8bpp 334 130 24 18 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 366 130 12 11 21 10 normal
|
||||
-1 sprites/canals.png 8bpp 398 130 19 10 -8 21 normal
|
||||
-1 sprites/canals.png 8bpp 430 130 11 10 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 446 130 24 16 -11 -6 normal
|
||||
-1 * 7 02 05 14 01 00 00 00
|
||||
// Choose the right tropic canal edges
|
||||
-1 * 14 02 05 15 81 81 00 FF 01 13 00 01 01 14 00
|
||||
-1 * 6 07 83 01 \7! 02 01
|
||||
-1 * 7 03 05 01 02 00 15 00
|
||||
|
||||
// Canal edges (toyland)
|
||||
-1 * 4 01 05 01 \b12
|
||||
-1 sprites/canals.png 8bpp 30 160 45 22 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 94 160 41 21 -8 10 normal
|
||||
-1 sprites/canals.png 8bpp 142 160 42 21 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 190 160 43 22 -31 -1 normal
|
||||
-1 sprites/canals.png 8bpp 238 160 22 22 11 4 normal
|
||||
-1 sprites/canals.png 8bpp 270 160 24 16 -11 15 normal
|
||||
-1 sprites/canals.png 8bpp 302 160 23 23 -31 4 normal
|
||||
-1 sprites/canals.png 8bpp 334 160 24 18 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 366 160 12 11 21 10 normal
|
||||
-1 sprites/canals.png 8bpp 398 160 19 10 -8 21 normal
|
||||
-1 sprites/canals.png 8bpp 430 160 11 10 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 446 160 24 16 -11 -6 normal
|
||||
-1 * 7 02 05 16 01 00 00 00
|
||||
-1 * 6 07 83 01 \7! 03 01
|
||||
-1 * 7 03 05 01 02 00 16 00
|
||||
|
||||
101
media/extra_grf/canals_extra.nfo
Normal file
101
media/extra_grf/canals_extra.nfo
Normal file
@@ -0,0 +1,101 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// This file is part of OpenTTD.
|
||||
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
-1 * 0 0C "Extra canal graphics by PaulC"
|
||||
|
||||
// Differentiation for the climates starts here
|
||||
|
||||
// Canal edges (arctic snowy)
|
||||
-1 * 4 01 05 01 \b12
|
||||
-1 sprites/canals.png 8bpp 30 40 45 22 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 94 40 41 21 -8 10 normal
|
||||
-1 sprites/canals.png 8bpp 142 40 42 21 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 190 40 43 22 -31 -1 normal
|
||||
-1 sprites/canals.png 8bpp 238 40 22 22 11 4 normal
|
||||
-1 sprites/canals.png 8bpp 270 40 24 16 -11 15 normal
|
||||
-1 sprites/canals.png 8bpp 302 40 23 23 -31 4 normal
|
||||
-1 sprites/canals.png 8bpp 334 40 24 18 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 366 40 12 11 21 10 normal
|
||||
-1 sprites/canals.png 8bpp 398 40 19 10 -8 21 normal
|
||||
-1 sprites/canals.png 8bpp 430 40 11 10 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 446 40 24 16 -11 -6 normal
|
||||
-1 * 7 02 05 10 01 00 00 00
|
||||
|
||||
// Canal edges (arctic normal)
|
||||
-1 * 4 01 05 01 \b12
|
||||
-1 sprites/canals.png 8bpp 30 70 45 22 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 94 70 41 21 -8 10 normal
|
||||
-1 sprites/canals.png 8bpp 142 70 42 21 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 190 70 43 22 -31 -1 normal
|
||||
-1 sprites/canals.png 8bpp 238 70 22 22 11 4 normal
|
||||
-1 sprites/canals.png 8bpp 270 70 24 16 -11 15 normal
|
||||
-1 sprites/canals.png 8bpp 302 70 23 23 -31 4 normal
|
||||
-1 sprites/canals.png 8bpp 334 70 24 18 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 366 70 12 11 21 10 normal
|
||||
-1 sprites/canals.png 8bpp 398 70 19 10 -8 21 normal
|
||||
-1 sprites/canals.png 8bpp 430 70 11 10 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 446 70 24 16 -11 -6 normal
|
||||
-1 * 7 02 05 11 01 00 00 00
|
||||
// Choose the right arctic canal edges
|
||||
-1 * 14 02 05 12 81 81 00 FF 01 10 00 04 04 11 00
|
||||
-1 * 6 07 83 01 \7! 01 01
|
||||
-1 * 7 03 05 01 02 00 12 00
|
||||
|
||||
// Canal edges (tropic desert)
|
||||
-1 * 4 01 05 01 \b12
|
||||
-1 sprites/canals.png 8bpp 30 100 45 22 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 94 100 41 21 -8 10 normal
|
||||
-1 sprites/canals.png 8bpp 142 100 42 21 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 190 100 43 22 -31 -1 normal
|
||||
-1 sprites/canals.png 8bpp 238 100 22 22 11 4 normal
|
||||
-1 sprites/canals.png 8bpp 270 100 24 16 -11 15 normal
|
||||
-1 sprites/canals.png 8bpp 302 100 23 23 -31 4 normal
|
||||
-1 sprites/canals.png 8bpp 334 100 24 18 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 366 100 12 11 21 10 normal
|
||||
-1 sprites/canals.png 8bpp 398 100 19 10 -8 21 normal
|
||||
-1 sprites/canals.png 8bpp 430 100 11 10 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 446 100 24 16 -11 -6 normal
|
||||
-1 * 7 02 05 13 01 00 00 00
|
||||
|
||||
// Canal edges (tropic rainforest)
|
||||
-1 * 4 01 05 01 \b12
|
||||
-1 sprites/canals.png 8bpp 30 130 45 22 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 94 130 41 21 -8 10 normal
|
||||
-1 sprites/canals.png 8bpp 142 130 42 21 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 190 130 43 22 -31 -1 normal
|
||||
-1 sprites/canals.png 8bpp 238 130 22 22 11 4 normal
|
||||
-1 sprites/canals.png 8bpp 270 130 24 16 -11 15 normal
|
||||
-1 sprites/canals.png 8bpp 302 130 23 23 -31 4 normal
|
||||
-1 sprites/canals.png 8bpp 334 130 24 18 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 366 130 12 11 21 10 normal
|
||||
-1 sprites/canals.png 8bpp 398 130 19 10 -8 21 normal
|
||||
-1 sprites/canals.png 8bpp 430 130 11 10 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 446 130 24 16 -11 -6 normal
|
||||
-1 * 7 02 05 14 01 00 00 00
|
||||
// Choose the right tropic canal edges
|
||||
-1 * 14 02 05 15 81 81 00 FF 01 13 00 01 01 14 00
|
||||
-1 * 6 07 83 01 \7! 02 01
|
||||
-1 * 7 03 05 01 02 00 15 00
|
||||
|
||||
// Canal edges (toyland)
|
||||
-1 * 4 01 05 01 \b12
|
||||
-1 sprites/canals.png 8bpp 30 160 45 22 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 94 160 41 21 -8 10 normal
|
||||
-1 sprites/canals.png 8bpp 142 160 42 21 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 190 160 43 22 -31 -1 normal
|
||||
-1 sprites/canals.png 8bpp 238 160 22 22 11 4 normal
|
||||
-1 sprites/canals.png 8bpp 270 160 24 16 -11 15 normal
|
||||
-1 sprites/canals.png 8bpp 302 160 23 23 -31 4 normal
|
||||
-1 sprites/canals.png 8bpp 334 160 24 18 -11 -1 normal
|
||||
-1 sprites/canals.png 8bpp 366 160 12 11 21 10 normal
|
||||
-1 sprites/canals.png 8bpp 398 160 19 10 -8 21 normal
|
||||
-1 sprites/canals.png 8bpp 430 160 11 10 -31 10 normal
|
||||
-1 sprites/canals.png 8bpp 446 160 24 16 -11 -6 normal
|
||||
-1 * 7 02 05 16 01 00 00 00
|
||||
-1 * 6 07 83 01 \7! 03 01
|
||||
-1 * 7 03 05 01 02 00 16 00
|
||||
@@ -8,245 +8,7 @@
|
||||
//
|
||||
-1 * 0 0C "Font characters by PaulC, Bilbo and Jasper Vries"
|
||||
|
||||
// Replace original characters
|
||||
|
||||
-1 * 5 0A 01 02 41 00
|
||||
-1 sprites/chars.png 8bpp 10 10 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 20 10 4 12 0 -1 normal
|
||||
-1 * 5 0A 01 02 86 00
|
||||
-1 sprites/chars.png 8bpp 50 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 70 10 9 12 0 -1 normal
|
||||
-1 * 5 0A 01 01 8A 00
|
||||
-1 sprites/chars.png 8bpp 120 10 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 01 A0 00
|
||||
-1 sprites/chars.png 8bpp 230 10 10 12 0 -1 normal
|
||||
-1 * 5 0A 01 04 A2 00
|
||||
-1 sprites/chars.png 8bpp 260 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 290 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 320 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 350 10 8 12 0 -1 normal
|
||||
-1 * 5 0A 01 06 A7 00
|
||||
-1 sprites/chars.png 8bpp 410 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 440 10 12 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 470 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 480 10 7 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 500 10 7 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 520 10 7 12 0 -1 normal
|
||||
-1 * 5 0A 01 03 AE 00
|
||||
-1 sprites/chars.png 8bpp 560 10 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 570 10 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 580 10 5 12 0 -1 normal
|
||||
-1 * 5 0A 01 05 B3 00
|
||||
-1 sprites/chars.png 8bpp 620 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 640 10 9 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 660 10 9 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 680 10 9 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 700 10 9 12 0 -1 normal
|
||||
-1 * 5 0A 01 03 BB 00
|
||||
-1 sprites/chars.png 8bpp 770 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 10 70 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 30 70 8 12 0 -1 normal
|
||||
-1 * 5 0A 01 01 BF 00
|
||||
-1 sprites/chars.png 8bpp 70 70 9 12 0 -1 normal
|
||||
-1 * 5 0A 01 05 C1 00
|
||||
-1 sprites/chars.png 8bpp 450 70 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 110 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 120 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 130 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 140 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 01 C7 00
|
||||
-1 sprites/chars.png 8bpp 160 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 03 CA 00
|
||||
-1 sprites/chars.png 8bpp 200 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 210 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 220 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 04 CE 00
|
||||
-1 sprites/chars.png 8bpp 230 70 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 240 70 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 250 70 5 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 260 70 5 12 0 -1 normal
|
||||
-1 * 5 0A 01 05 D3 00
|
||||
-1 sprites/chars.png 8bpp 290 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 310 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 320 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 330 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 340 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 03 DB 00
|
||||
-1 sprites/chars.png 8bpp 390 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 400 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 410 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 02 DF 00
|
||||
-1 sprites/chars.png 8bpp 420 70 7 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 430 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 01 22 01
|
||||
-1 sprites/chars.png 8bpp 20 30 2 7 0 0 normal
|
||||
-1 * 5 0A 01 01 7D 01
|
||||
-1 sprites/chars.png 8bpp 220 30 4 7 0 0 normal
|
||||
-1 * 5 0A 01 02 80 01
|
||||
-1 sprites/chars.png 8bpp 230 30 9 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 250 30 3 7 0 0 normal
|
||||
-1 * 5 0A 01 01 89 01
|
||||
-1 sprites/chars.png 8bpp 470 30 3 7 0 0 normal
|
||||
-1 * 5 0A 01 01 9F 01
|
||||
-1 sprites/chars.png 8bpp 70 90 3 7 0 0 normal
|
||||
-1 * 5 0A 01 01 A9 01
|
||||
-1 sprites/chars.png 8bpp 190 90 3 7 0 0 normal
|
||||
-1 * 5 0A 01 02 BF 01
|
||||
-1 sprites/chars.png 8bpp 420 90 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 430 90 3 7 0 0 normal
|
||||
-1 * 5 0A 01 01 02 02
|
||||
-1 sprites/chars.png 8bpp 20 40 4 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 41 02
|
||||
-1 sprites/chars.png 8bpp 30 40 14 21 0 -2 normal
|
||||
-1 * 5 0A 01 06 46 02
|
||||
-1 sprites/chars.png 8bpp 50 40 10 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 70 40 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 90 40 3 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 100 40 13 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 120 40 7 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 130 40 16 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 50 02
|
||||
-1 sprites/chars.png 8bpp 150 40 16 21 0 -2 normal
|
||||
-1 * 5 0A 01 04 52 02
|
||||
-1 sprites/chars.png 8bpp 170 40 8 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 180 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 190 40 6 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 200 40 6 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 5C 02
|
||||
-1 sprites/chars.png 8bpp 210 40 7 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 60 02
|
||||
-1 sprites/chars.png 8bpp 230 40 16 21 0 -2 normal
|
||||
-1 * 5 0A 01 07 62 02
|
||||
-1 sprites/chars.png 8bpp 260 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 290 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 320 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 350 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 380 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 410 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 440 40 24 21 0 -2 normal
|
||||
-1 * 5 0A 01 18 6A 02
|
||||
-1 sprites/chars.png 8bpp 480 40 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 500 40 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 520 40 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 540 40 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 560 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 570 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 580 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 590 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 600 40 17 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 620 40 18 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 640 40 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 660 40 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 680 40 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 700 40 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 720 40 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 740 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 750 40 16 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 770 40 17 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 10 100 17 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 30 100 17 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 50 100 17 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 70 100 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 90 100 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 450 100 14 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 85 02
|
||||
-1 sprites/chars.png 8bpp 140 100 12 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 88 02
|
||||
-1 sprites/chars.png 8bpp 170 100 19 21 0 -2 normal
|
||||
-1 * 5 0A 01 02 92 02
|
||||
-1 sprites/chars.png 8bpp 270 100 11 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 290 100 15 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 97 02
|
||||
-1 sprites/chars.png 8bpp 340 100 11 21 0 -2 normal
|
||||
-1 * 5 0A 01 02 99 02
|
||||
-1 sprites/chars.png 8bpp 360 100 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 370 100 11 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 A0 02
|
||||
-1 sprites/chars.png 8bpp 430 100 14 21 0 -2 normal
|
||||
|
||||
// New characters, all fonts except monospaced
|
||||
|
||||
// U+007B: Left Curly Bracket
|
||||
// U+007C: Vertical Line
|
||||
// U+007D: Right Curly Bracket
|
||||
// U+007E: Tilde
|
||||
-1 * 14 12 03 00 04 7B 00 01 04 7B 00 02 04 7B 00
|
||||
-1 sprites/chars.png 8bpp 10 130 5 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 20 130 3 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 30 130 5 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 50 130 7 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 10 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 20 150 1 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 30 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 50 150 4 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 10 160 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 20 160 3 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 30 160 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 50 160 10 21 0 -2 normal
|
||||
|
||||
// U+007F: No-Break Space
|
||||
-1 * 14 12 03 00 01 7F 00 01 01 7F 00 02 01 7F 00
|
||||
-1 sprites/chars.png 8bpp 70 130 2 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 70 150 1 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 70 160 5 21 0 -2 normal
|
||||
|
||||
// U+00AA: Feminine Ordinal Indicator
|
||||
-1 * 14 12 03 00 01 AA 00 01 01 AA 00 02 01 AA 00
|
||||
-1 sprites/chars.png 8bpp 80 130 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 80 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 80 160 7 21 0 -2 normal
|
||||
|
||||
// U+00AC: Not Sign
|
||||
// U+00AD: Soft Hyphen
|
||||
-1 * 14 12 03 00 02 AC 00 01 02 AC 00 02 02 AC 00
|
||||
-1 sprites/chars.png 8bpp 90 130 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 110 130 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 90 150 4 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 110 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 90 160 12 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 110 160 9 21 0 -2 normal
|
||||
|
||||
// U+00AF: Macron
|
||||
-1 * 14 12 03 00 01 AF 00 01 01 AF 00 02 01 AF 00
|
||||
-1 sprites/chars.png 8bpp 130 130 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 130 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 130 160 12 21 0 -2 normal
|
||||
|
||||
// U+00B4: Acute Accent
|
||||
// U+00B5: Micro Sign
|
||||
// U+00B6: Pilcrow Sign
|
||||
// U+00B7: Middle Dot
|
||||
// U+00B8: Cedilla
|
||||
// U+00B9: Superscript One
|
||||
-1 * 14 12 03 00 06 B4 00 01 06 B4 00 02 06 B4 00
|
||||
-1 sprites/chars.png 8bpp 150 130 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 160 130 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 180 130 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 200 130 3 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 210 130 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 220 130 5 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 150 150 2 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 160 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 180 150 6 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 200 150 1 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 210 150 2 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 220 150 2 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 150 160 4 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 160 160 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 180 160 13 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 200 160 3 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 210 160 5 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 220 160 6 21 0 -2 normal
|
||||
|
||||
// U+00BC: Vulgar Fraction One Quarter
|
||||
// U+00BD: Vulgar Fraction One Half
|
||||
-1 * 14 12 03 00 02 BC 00 01 02 BC 00 02 02 BC 00
|
||||
-1 sprites/chars.png 8bpp 230 130 10 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 250 130 10 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 230 150 9 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 250 150 9 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 230 160 16 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 250 160 16 21 0 -2 normal
|
||||
// Note: Characters in range U+0020..U+00FF may only be defined in chars_orig_extra.nfo.
|
||||
|
||||
// New characters, all fonts
|
||||
|
||||
|
||||
249
media/extra_grf/chars_orig_extra.nfo
Normal file
249
media/extra_grf/chars_orig_extra.nfo
Normal file
@@ -0,0 +1,249 @@
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// This file is part of OpenTTD.
|
||||
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
-1 * 0 0C "Font characters by PaulC, Bilbo and Jasper Vries"
|
||||
|
||||
// Replace original characters
|
||||
|
||||
-1 * 5 0A 01 02 41 00
|
||||
-1 sprites/chars.png 8bpp 10 10 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 20 10 4 12 0 -1 normal
|
||||
-1 * 5 0A 01 02 86 00
|
||||
-1 sprites/chars.png 8bpp 50 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 70 10 9 12 0 -1 normal
|
||||
-1 * 5 0A 01 01 8A 00
|
||||
-1 sprites/chars.png 8bpp 120 10 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 01 A0 00
|
||||
-1 sprites/chars.png 8bpp 230 10 10 12 0 -1 normal
|
||||
-1 * 5 0A 01 04 A2 00
|
||||
-1 sprites/chars.png 8bpp 260 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 290 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 320 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 350 10 8 12 0 -1 normal
|
||||
-1 * 5 0A 01 06 A7 00
|
||||
-1 sprites/chars.png 8bpp 410 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 440 10 12 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 470 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 480 10 7 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 500 10 7 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 520 10 7 12 0 -1 normal
|
||||
-1 * 5 0A 01 03 AE 00
|
||||
-1 sprites/chars.png 8bpp 560 10 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 570 10 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 580 10 5 12 0 -1 normal
|
||||
-1 * 5 0A 01 05 B3 00
|
||||
-1 sprites/chars.png 8bpp 620 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 640 10 9 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 660 10 9 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 680 10 9 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 700 10 9 12 0 -1 normal
|
||||
-1 * 5 0A 01 03 BB 00
|
||||
-1 sprites/chars.png 8bpp 770 10 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 10 70 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 30 70 8 12 0 -1 normal
|
||||
-1 * 5 0A 01 01 BF 00
|
||||
-1 sprites/chars.png 8bpp 70 70 9 12 0 -1 normal
|
||||
-1 * 5 0A 01 05 C1 00
|
||||
-1 sprites/chars.png 8bpp 450 70 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 110 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 120 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 130 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 140 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 01 C7 00
|
||||
-1 sprites/chars.png 8bpp 160 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 03 CA 00
|
||||
-1 sprites/chars.png 8bpp 200 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 210 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 220 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 04 CE 00
|
||||
-1 sprites/chars.png 8bpp 230 70 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 240 70 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 250 70 5 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 260 70 5 12 0 -1 normal
|
||||
-1 * 5 0A 01 05 D3 00
|
||||
-1 sprites/chars.png 8bpp 290 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 310 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 320 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 330 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 340 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 03 DB 00
|
||||
-1 sprites/chars.png 8bpp 390 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 400 70 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 410 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 02 DF 00
|
||||
-1 sprites/chars.png 8bpp 420 70 7 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 430 70 6 12 0 -1 normal
|
||||
-1 * 5 0A 01 01 22 01
|
||||
-1 sprites/chars.png 8bpp 20 30 2 7 0 0 normal
|
||||
-1 * 5 0A 01 01 7D 01
|
||||
-1 sprites/chars.png 8bpp 220 30 4 7 0 0 normal
|
||||
-1 * 5 0A 01 02 80 01
|
||||
-1 sprites/chars.png 8bpp 230 30 9 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 250 30 3 7 0 0 normal
|
||||
-1 * 5 0A 01 01 89 01
|
||||
-1 sprites/chars.png 8bpp 470 30 3 7 0 0 normal
|
||||
-1 * 5 0A 01 01 9F 01
|
||||
-1 sprites/chars.png 8bpp 70 90 3 7 0 0 normal
|
||||
-1 * 5 0A 01 01 A9 01
|
||||
-1 sprites/chars.png 8bpp 190 90 3 7 0 0 normal
|
||||
-1 * 5 0A 01 02 BF 01
|
||||
-1 sprites/chars.png 8bpp 420 90 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 430 90 3 7 0 0 normal
|
||||
-1 * 5 0A 01 01 02 02
|
||||
-1 sprites/chars.png 8bpp 20 40 4 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 41 02
|
||||
-1 sprites/chars.png 8bpp 30 40 14 21 0 -2 normal
|
||||
-1 * 5 0A 01 06 46 02
|
||||
-1 sprites/chars.png 8bpp 50 40 10 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 70 40 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 90 40 3 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 100 40 13 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 120 40 7 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 130 40 16 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 50 02
|
||||
-1 sprites/chars.png 8bpp 150 40 16 21 0 -2 normal
|
||||
-1 * 5 0A 01 04 52 02
|
||||
-1 sprites/chars.png 8bpp 170 40 8 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 180 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 190 40 6 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 200 40 6 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 5C 02
|
||||
-1 sprites/chars.png 8bpp 210 40 7 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 60 02
|
||||
-1 sprites/chars.png 8bpp 230 40 16 21 0 -2 normal
|
||||
-1 * 5 0A 01 07 62 02
|
||||
-1 sprites/chars.png 8bpp 260 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 290 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 320 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 350 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 380 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 410 40 20 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 440 40 24 21 0 -2 normal
|
||||
-1 * 5 0A 01 18 6A 02
|
||||
-1 sprites/chars.png 8bpp 480 40 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 500 40 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 520 40 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 540 40 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 560 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 570 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 580 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 590 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 600 40 17 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 620 40 18 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 640 40 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 660 40 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 680 40 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 700 40 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 720 40 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 740 40 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 750 40 16 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 770 40 17 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 10 100 17 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 30 100 17 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 50 100 17 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 70 100 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 90 100 14 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 450 100 14 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 85 02
|
||||
-1 sprites/chars.png 8bpp 140 100 12 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 88 02
|
||||
-1 sprites/chars.png 8bpp 170 100 19 21 0 -2 normal
|
||||
-1 * 5 0A 01 02 92 02
|
||||
-1 sprites/chars.png 8bpp 270 100 11 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 290 100 15 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 97 02
|
||||
-1 sprites/chars.png 8bpp 340 100 11 21 0 -2 normal
|
||||
-1 * 5 0A 01 02 99 02
|
||||
-1 sprites/chars.png 8bpp 360 100 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 370 100 11 21 0 -2 normal
|
||||
-1 * 5 0A 01 01 A0 02
|
||||
-1 sprites/chars.png 8bpp 430 100 14 21 0 -2 normal
|
||||
|
||||
// New characters, all fonts except monospaced
|
||||
|
||||
// U+007B: Left Curly Bracket
|
||||
// U+007C: Vertical Line
|
||||
// U+007D: Right Curly Bracket
|
||||
// U+007E: Tilde
|
||||
-1 * 14 12 03 00 04 7B 00 01 04 7B 00 02 04 7B 00
|
||||
-1 sprites/chars.png 8bpp 10 130 5 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 20 130 3 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 30 130 5 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 50 130 7 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 10 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 20 150 1 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 30 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 50 150 4 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 10 160 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 20 160 3 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 30 160 9 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 50 160 10 21 0 -2 normal
|
||||
|
||||
// U+007F: No-Break Space
|
||||
-1 * 14 12 03 00 01 7F 00 01 01 7F 00 02 01 7F 00
|
||||
-1 sprites/chars.png 8bpp 70 130 2 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 70 150 1 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 70 160 5 21 0 -2 normal
|
||||
|
||||
// U+00AA: Feminine Ordinal Indicator
|
||||
-1 * 14 12 03 00 01 AA 00 01 01 AA 00 02 01 AA 00
|
||||
-1 sprites/chars.png 8bpp 80 130 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 80 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 80 160 7 21 0 -2 normal
|
||||
|
||||
// U+00AC: Not Sign
|
||||
// U+00AD: Soft Hyphen
|
||||
-1 * 14 12 03 00 02 AC 00 01 02 AC 00 02 02 AC 00
|
||||
-1 sprites/chars.png 8bpp 90 130 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 110 130 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 90 150 4 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 110 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 90 160 12 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 110 160 9 21 0 -2 normal
|
||||
|
||||
// U+00AF: Macron
|
||||
-1 * 14 12 03 00 01 AF 00 01 01 AF 00 02 01 AF 00
|
||||
-1 sprites/chars.png 8bpp 130 130 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 130 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 130 160 12 21 0 -2 normal
|
||||
|
||||
// U+00B4: Acute Accent
|
||||
// U+00B5: Micro Sign
|
||||
// U+00B6: Pilcrow Sign
|
||||
// U+00B7: Middle Dot
|
||||
// U+00B8: Cedilla
|
||||
// U+00B9: Superscript One
|
||||
-1 * 14 12 03 00 06 B4 00 01 06 B4 00 02 06 B4 00
|
||||
-1 sprites/chars.png 8bpp 150 130 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 160 130 6 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 180 130 8 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 200 130 3 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 210 130 4 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 220 130 5 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 150 150 2 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 160 150 3 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 180 150 6 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 200 150 1 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 210 150 2 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 220 150 2 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 150 160 4 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 160 160 15 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 180 160 13 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 200 160 3 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 210 160 5 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 220 160 6 21 0 -2 normal
|
||||
|
||||
// U+00BC: Vulgar Fraction One Quarter
|
||||
// U+00BD: Vulgar Fraction One Half
|
||||
-1 * 14 12 03 00 02 BC 00 01 02 BC 00 02 02 BC 00
|
||||
-1 sprites/chars.png 8bpp 230 130 10 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 250 130 10 12 0 -1 normal
|
||||
-1 sprites/chars.png 8bpp 230 150 9 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 250 150 9 7 0 0 normal
|
||||
-1 sprites/chars.png 8bpp 230 160 16 21 0 -2 normal
|
||||
-1 sprites/chars.png 8bpp 250 160 16 21 0 -2 normal
|
||||
@@ -60,10 +60,11 @@
|
||||
00
|
||||
|
||||
// GRF ID, must start with FF so it gets ignored
|
||||
-1 * 0 08 08 FF "OTT"
|
||||
//@@WARNING DISABLE 101
|
||||
-1 * 0 08 08 FF FF FF FE
|
||||
|
||||
// Name of the GRF
|
||||
"OpenTTD's base graphics " 00
|
||||
"OpenTTD's default and fallback extra graphics" 00
|
||||
|
||||
// Description of the GRF.
|
||||
"License: GNU General Public License version 2" 0D
|
||||
@@ -86,7 +87,6 @@
|
||||
#include "canals.nfo"
|
||||
#include "oneway.nfo"
|
||||
#include "tramtracks.nfo"
|
||||
#include "shore.nfo"
|
||||
#include "sloped_tracks.nfo"
|
||||
#include "airports.nfo"
|
||||
#include "roadstops.nfo"
|
||||
@@ -97,11 +97,5 @@
|
||||
#include "airport_preview.nfo"
|
||||
#include "chars.nfo"
|
||||
#include "mono.nfo"
|
||||
#include "fix_graphics.nfo"
|
||||
#include "rivers/rapids.nfo"
|
||||
#include "rivers/temperate.nfo"
|
||||
#include "rivers/arctic.nfo"
|
||||
#include "rivers/tropic.nfo"
|
||||
#include "rivers/toyland.nfo"
|
||||
#include "tunnel_portals.nfo"
|
||||
#include "palette.nfo"
|
||||
|
||||
86
media/extra_grf/orig_extra.nfo
Normal file
86
media/extra_grf/orig_extra.nfo
Normal file
@@ -0,0 +1,86 @@
|
||||
// Automatically generated by GRFCODEC. Do not modify!
|
||||
// (Info version 32)
|
||||
// Format: spritenum imagefile depth xpos ypos xsize ysize xrel yrel zoom flags
|
||||
//
|
||||
// $Id$
|
||||
//
|
||||
// This file is part of OpenTTD.
|
||||
// OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
// OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
// See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// Sources for extra graphics to complement the original graphics.
|
||||
// Checks whether the correct version of OpenTTD is used before
|
||||
// allowing it to be used.
|
||||
//
|
||||
|
||||
//
|
||||
// Number of sprites, it is wrong, but GRFcodec automagically gets it right.
|
||||
//
|
||||
0 * 4 00 00 00 00
|
||||
|
||||
|
||||
//
|
||||
// Check whether we are running OTTD or not.
|
||||
//
|
||||
-1 * 0 07 9D 04 \7= 01 00 00 00 01
|
||||
-1 * 0 0B 03 7F FF 80 " is not for TTDPatch. Use ttdpatch(w).grf." 00
|
||||
|
||||
|
||||
//
|
||||
// Check for OTTD's version number
|
||||
//
|
||||
|
||||
// First step... Variable A1 might not exist. If that's the case it always
|
||||
// skips. As we do not want to skip out of the whole testing, we skip over
|
||||
// the real version check.
|
||||
-1 * 0 07 A1 04 \7= FF FF FF FF 02
|
||||
|
||||
// Real version check.
|
||||
-1 * 0 07 A1 04 \7> \w20304 01 01 03
|
||||
|
||||
// If the version check is supported, the string is translateable via OpenTTD
|
||||
// itself. Use it!.
|
||||
|
||||
-1 * 0 0B 03 7F 06 "1.1 (or trunk r20304)" 00
|
||||
|
||||
// Some OTTD versions before r11130 did support Action B, so use the English
|
||||
// phrase there
|
||||
-1 * 0 0B 03 7F FF "Requires OpenTTD version 1.1 (or trunk r20304) or better." 00
|
||||
|
||||
// Final fallback. No Action B support, just skip to the end of the file.
|
||||
-1 * 0 07 A1 04 \7= FF FF FF FF 00
|
||||
|
||||
// We are a DOS paletted NewGRF, so tell OpenTTD that. Then it can actually
|
||||
// do the right thing. Yay for that feature as that means no duplicate NewGRF!
|
||||
-1 * 0 14
|
||||
"C" "INFO"
|
||||
"B" "PALS" \w1 "D"
|
||||
00
|
||||
00
|
||||
|
||||
// GRF ID, must start with FF so it gets ignored
|
||||
//@@WARNING DISABLE 101
|
||||
-1 * 0 08 08 FF "OTT"
|
||||
|
||||
// Name of the GRF
|
||||
"Original baseset extra graphics" 00
|
||||
|
||||
// Description of the GRF.
|
||||
"License: GNU General Public License version 2" 0D
|
||||
"Andrew Parkhouse: rivers" 0D
|
||||
"Addi and PaulC: original graphics fixes" 0D
|
||||
"OpenTTD developers: other graphics" 00
|
||||
|
||||
//
|
||||
// The real data of the GRF is acquired from several subfiles.
|
||||
//
|
||||
#include "chars_orig_extra.nfo"
|
||||
#include "shore.nfo"
|
||||
#include "fix_graphics.nfo"
|
||||
#include "canals_extra.nfo"
|
||||
#include "rivers/rapids.nfo"
|
||||
#include "rivers/temperate.nfo"
|
||||
#include "rivers/arctic.nfo"
|
||||
#include "rivers/tropic.nfo"
|
||||
#include "rivers/toyland.nfo"
|
||||
@@ -1,3 +1,63 @@
|
||||
openttd (1.7.2-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.7.2
|
||||
|
||||
-- OpenTTD <info@openttd.org> Sun, 24 Dec 2017 14:00:00 +0100
|
||||
|
||||
openttd (1.7.2~RC1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.7.2-RC1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Mon, 11 Dec 2017 21:30:00 +0100
|
||||
|
||||
openttd (1.7.1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.7.1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Tue, 13 Jun 2017 21:00:00 +0200
|
||||
|
||||
openttd (1.7.1~RC1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.7.1-RC1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Thu, 04 Mai 2017 21:00:00 +0200
|
||||
|
||||
openttd (1.7.0-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.7.0
|
||||
|
||||
-- OpenTTD <info@openttd.org> Sat, 01 Apr 2017 19:00:00 +0200
|
||||
|
||||
openttd (1.7.0~RC1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.7.0-RC1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Sat, 11 Mar 2017 22:30:00 +0100
|
||||
|
||||
openttd (1.6.1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.6.1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Fri, 01 Jul 2016 00:00:00 +0200
|
||||
|
||||
openttd (1.6.1~RC1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.6.1-RC1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Wed, 01 Jun 2016 21:00:00 +0200
|
||||
|
||||
openttd (1.6.0-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.6.0
|
||||
|
||||
-- OpenTTD <info@openttd.org> Fri, 01 Apr 2016 21:00:00 +0200
|
||||
|
||||
openttd (1.6.0~RC1-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.6.0-RC1
|
||||
|
||||
-- OpenTTD <info@openttd.org> Tue, 01 Mar 2016 21:00:00 +0100
|
||||
|
||||
openttd (1.5.3-0) unstable; urgency=low
|
||||
|
||||
* New upstream release 1.5.3
|
||||
|
||||
@@ -5,7 +5,7 @@ Source: http://www.openttd.org
|
||||
|
||||
|
||||
Files: *
|
||||
Copyright: © 2004-2012 Ludvig Strigeous and others.
|
||||
Copyright: © 2004-2017 Ludvig Strigeous and others.
|
||||
License: GPL-2.0
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License version 2.0 as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
@echo off
|
||||
|
||||
set OPENTTD_VERSION=1.6.0
|
||||
set OPENTTD_VERSION=1.7.0
|
||||
set OPENSFX_VERSION=0.8.0
|
||||
set NOSOUND_VERSION=0.8.0
|
||||
set OPENGFX_VERSION=1.2.0
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
# spec file for package openttd
|
||||
#
|
||||
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
# Copyright (c) 2007-2012 The OpenTTD developers
|
||||
# Copyright (c) 2007-2017 The OpenTTD developers
|
||||
#
|
||||
# All modifications and additions to the file contributed by third parties
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@@ -17,9 +17,9 @@
|
||||
#
|
||||
|
||||
Name: openttd
|
||||
Version: 1.6.beta1
|
||||
Version: 1.7.beta1
|
||||
Release: 0
|
||||
%define srcver 1.6.0-beta1
|
||||
%define srcver 1.7.0-beta1
|
||||
Summary: An open source reimplementation of Chris Sawyer's Transport Tycoon Deluxe
|
||||
License: GPL-2.0
|
||||
Group: Amusements/Games/Strategy/Other
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Version numbers to update
|
||||
!define APPV_MAJOR 1
|
||||
!define APPV_MINOR 6
|
||||
!define APPV_MAINT 0
|
||||
!define APPV_BUILD 0
|
||||
!define APPV_EXTRA "-beta1"
|
||||
!define APPV_MINOR 7
|
||||
!define APPV_MAINT 2
|
||||
!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
|
||||
@@ -408,6 +408,7 @@ Section "Uninstall"
|
||||
; Baseset files
|
||||
Delete "$INSTDIR\baseset\opntitle.dat"
|
||||
Delete "$INSTDIR\baseset\openttd.grf"
|
||||
Delete "$INSTDIR\baseset\orig_extra.grf"
|
||||
Delete "$INSTDIR\baseset\orig_win.obg"
|
||||
Delete "$INSTDIR\baseset\orig_dos.obg"
|
||||
Delete "$INSTDIR\baseset\orig_dos_de.obg"
|
||||
|
||||
7
projects/dpi_aware.manifest
Normal file
7
projects/dpi_aware.manifest
Normal file
@@ -0,0 +1,7 @@
|
||||
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" >
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
|
||||
<dpiAware>True/PM</dpiAware>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
</assembly>
|
||||
@@ -317,6 +317,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\slovenian.lng;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\spanish_MX.txt">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating spanish_MX 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\spanish_MX.lng;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\spanish.txt">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating spanish language file</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"</Command>
|
||||
|
||||
@@ -142,6 +142,9 @@
|
||||
<CustomBuild Include="..\src\lang\slovenian.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\spanish_MX.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\spanish.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
|
||||
@@ -317,6 +317,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\slovenian.lng;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\spanish_MX.txt">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating spanish_MX 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\spanish_MX.lng;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\spanish.txt">
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Generating spanish language file</Message>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"</Command>
|
||||
|
||||
@@ -142,6 +142,9 @@
|
||||
<CustomBuild Include="..\src\lang\slovenian.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\spanish_MX.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="..\src\lang\spanish.txt">
|
||||
<Filter>Translations</Filter>
|
||||
</CustomBuild>
|
||||
|
||||
@@ -738,6 +738,21 @@
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\spanish_MX.txt"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating spanish_MX 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\spanish_MX.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\spanish.txt"
|
||||
>
|
||||
|
||||
@@ -739,6 +739,21 @@
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\spanish_MX.txt"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating spanish_MX 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\spanish_MX.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\spanish.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_SSE;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_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>Sync</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
@@ -145,6 +145,9 @@
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
</Link>
|
||||
<Manifest>
|
||||
<AdditionalManifestFiles>dpi_aware.manifest</AdditionalManifestFiles>
|
||||
</Manifest>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Midl>
|
||||
@@ -156,7 +159,7 @@
|
||||
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;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>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@@ -188,6 +191,9 @@
|
||||
</DataExecutionPrevention>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
<Manifest>
|
||||
<AdditionalManifestFiles>dpi_aware.manifest</AdditionalManifestFiles>
|
||||
</Manifest>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Midl>
|
||||
@@ -204,7 +210,7 @@
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_SSE;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_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>Sync</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
@@ -244,6 +250,9 @@
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
</Link>
|
||||
<Manifest>
|
||||
<AdditionalManifestFiles>dpi_aware.manifest</AdditionalManifestFiles>
|
||||
</Manifest>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Midl>
|
||||
@@ -256,7 +265,7 @@
|
||||
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WITH_SSE;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>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@@ -289,6 +298,9 @@
|
||||
<StackCommitSize>1048576</StackCommitSize>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
<Manifest>
|
||||
<AdditionalManifestFiles>dpi_aware.manifest</AdditionalManifestFiles>
|
||||
</Manifest>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\src\airport.cpp" />
|
||||
|
||||
@@ -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_SSE;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_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>Sync</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
@@ -145,6 +145,9 @@
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
</Link>
|
||||
<Manifest>
|
||||
<AdditionalManifestFiles>dpi_aware.manifest</AdditionalManifestFiles>
|
||||
</Manifest>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Midl>
|
||||
@@ -156,7 +159,7 @@
|
||||
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;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>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@@ -188,6 +191,9 @@
|
||||
</DataExecutionPrevention>
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
</Link>
|
||||
<Manifest>
|
||||
<AdditionalManifestFiles>dpi_aware.manifest</AdditionalManifestFiles>
|
||||
</Manifest>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Midl>
|
||||
@@ -204,7 +210,7 @@
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_SSE;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_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>Sync</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
@@ -244,6 +250,9 @@
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
</Link>
|
||||
<Manifest>
|
||||
<AdditionalManifestFiles>dpi_aware.manifest</AdditionalManifestFiles>
|
||||
</Manifest>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Midl>
|
||||
@@ -256,7 +265,7 @@
|
||||
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WITH_SSE;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>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@@ -289,6 +298,9 @@
|
||||
<StackCommitSize>1048576</StackCommitSize>
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
</Link>
|
||||
<Manifest>
|
||||
<AdditionalManifestFiles>dpi_aware.manifest</AdditionalManifestFiles>
|
||||
</Manifest>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
!!FILES!!
|
||||
|
||||
@@ -105,7 +105,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_SSE;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_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>Sync</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
@@ -151,6 +151,9 @@
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<MinimumRequiredVersion>5.01</MinimumRequiredVersion>
|
||||
</Link>
|
||||
<Manifest>
|
||||
<EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
|
||||
</Manifest>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Midl>
|
||||
@@ -163,7 +166,7 @@
|
||||
<Optimization>Disabled</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;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>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@@ -198,6 +201,9 @@
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<MinimumRequiredVersion>5.01</MinimumRequiredVersion>
|
||||
</Link>
|
||||
<Manifest>
|
||||
<EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
|
||||
</Manifest>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Midl>
|
||||
@@ -214,7 +220,7 @@
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_SSE;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_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>Sync</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
@@ -257,6 +263,9 @@
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<MinimumRequiredVersion>5.02</MinimumRequiredVersion>
|
||||
</Link>
|
||||
<Manifest>
|
||||
<EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
|
||||
</Manifest>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Midl>
|
||||
@@ -270,7 +279,7 @@
|
||||
<Optimization>Disabled</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WITH_SSE;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>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@@ -306,6 +315,9 @@
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
<MinimumRequiredVersion>5.02</MinimumRequiredVersion>
|
||||
</Link>
|
||||
<Manifest>
|
||||
<EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
|
||||
</Manifest>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\src\airport.cpp" />
|
||||
|
||||
@@ -105,7 +105,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_SSE;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_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>Sync</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
@@ -151,6 +151,9 @@
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<MinimumRequiredVersion>5.01</MinimumRequiredVersion>
|
||||
</Link>
|
||||
<Manifest>
|
||||
<EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
|
||||
</Manifest>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Midl>
|
||||
@@ -163,7 +166,7 @@
|
||||
<Optimization>Disabled</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;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>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@@ -198,6 +201,9 @@
|
||||
<TargetMachine>MachineX86</TargetMachine>
|
||||
<MinimumRequiredVersion>5.01</MinimumRequiredVersion>
|
||||
</Link>
|
||||
<Manifest>
|
||||
<EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
|
||||
</Manifest>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Midl>
|
||||
@@ -214,7 +220,7 @@
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<OmitFramePointers>true</OmitFramePointers>
|
||||
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_SSE;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_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<StringPooling>true</StringPooling>
|
||||
<ExceptionHandling>Sync</ExceptionHandling>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
@@ -257,6 +263,9 @@
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<MinimumRequiredVersion>5.02</MinimumRequiredVersion>
|
||||
</Link>
|
||||
<Manifest>
|
||||
<EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
|
||||
</Manifest>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Midl>
|
||||
@@ -270,7 +279,7 @@
|
||||
<Optimization>Disabled</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WITH_SSE;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>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<PrecompiledHeader>
|
||||
@@ -306,6 +315,9 @@
|
||||
<TargetMachine>MachineX64</TargetMachine>
|
||||
<MinimumRequiredVersion>5.02</MinimumRequiredVersion>
|
||||
</Link>
|
||||
<Manifest>
|
||||
<EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
|
||||
</Manifest>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
!!FILES!!
|
||||
|
||||
@@ -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_SSE;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_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -156,7 +156,7 @@
|
||||
AdditionalOptions="/MP"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;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="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="0"
|
||||
@@ -257,7 +257,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;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_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64;WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -362,7 +362,7 @@
|
||||
AdditionalOptions="/MP"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_SSE;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="WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="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_SSE;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_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -156,7 +156,7 @@
|
||||
AdditionalOptions="/MP"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;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="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="0"
|
||||
@@ -257,7 +257,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;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_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64;WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -362,7 +362,7 @@
|
||||
AdditionalOptions="/MP"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_SSE;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="WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="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_SSE;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_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -155,7 +155,7 @@
|
||||
AdditionalOptions="/MP"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;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="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="0"
|
||||
@@ -255,7 +255,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;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_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64;WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -359,7 +359,7 @@
|
||||
AdditionalOptions="/MP"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_SSE;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="WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="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_SSE;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_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -155,7 +155,7 @@
|
||||
AdditionalOptions="/MP"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;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="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="0"
|
||||
@@ -255,7 +255,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;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_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64;WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -359,7 +359,7 @@
|
||||
AdditionalOptions="/MP"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_SSE;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="WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="0"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
Last updated: 2015-02-24
|
||||
Release version: 1.5.0-beta2
|
||||
Last updated: 2017-12-24
|
||||
Release version: 1.7.2
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
diff --git a/src/rev.cpp.in b/src/rev.cpp.in
|
||||
index 506e641..3300664 100644
|
||||
--- a/src/rev.cpp.in
|
||||
+++ b/src/rev.cpp.in
|
||||
@@ -70,7 +70,7 @@ const byte _openttd_revision_modified = !!MODIFIED!!;
|
||||
* final release will always have a lower version number than the released
|
||||
* version, thus making comparisons on specific revisions easy.
|
||||
*/
|
||||
-const uint32 _openttd_newgrf_version = 1 << 28 | 5 << 24 | 0 << 20 | 0 << 19 | (!!REVISION!! & ((1 << 19) - 1));
|
||||
+const uint32 _openttd_newgrf_version = 1 << 28 | 5 << 24 | 0 << 20 | 1 << 19 | (!!REVISION!! & ((1 << 19) - 1));
|
||||
|
||||
#ifdef __MORPHOS__
|
||||
/**
|
||||
@@ -144,6 +144,7 @@ base_media_func.h
|
||||
base_station_base.h
|
||||
bmp.h
|
||||
bridge.h
|
||||
build_confirmation_func.h
|
||||
cargo_type.h
|
||||
cargoaction.h
|
||||
cargomonitor.h
|
||||
@@ -453,6 +454,7 @@ airport_gui.cpp
|
||||
autoreplace_gui.cpp
|
||||
bootstrap_gui.cpp
|
||||
bridge_gui.cpp
|
||||
build_confirmation_gui.cpp
|
||||
build_vehicle_gui.cpp
|
||||
cheat_gui.cpp
|
||||
company_gui.cpp
|
||||
@@ -1121,7 +1123,10 @@ music/null_m.cpp
|
||||
#else
|
||||
#if MORPHOS
|
||||
#else
|
||||
music/extmidi.cpp
|
||||
#if LIBTIMIDITY
|
||||
#else
|
||||
music/extmidi.cpp
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
|
||||
4
src/3rdparty/squirrel/sqstdlib/sqstdaux.cpp
vendored
4
src/3rdparty/squirrel/sqstdlib/sqstdaux.cpp
vendored
@@ -119,10 +119,10 @@ static SQInteger _sqstd_aux_printerror(HSQUIRRELVM v)
|
||||
const SQChar *sErr = 0;
|
||||
if(sq_gettop(v)>=1) {
|
||||
if(SQ_SUCCEEDED(sq_getstring(v,2,&sErr))) {
|
||||
pf(v,"\nAN ERROR HAS OCCURED [%s]\n",sErr);
|
||||
pf(v,"\nAN ERROR HAS OCCURRED [%s]\n",sErr);
|
||||
}
|
||||
else{
|
||||
pf(v,"\nAN ERROR HAS OCCURED [unknown]\n");
|
||||
pf(v,"\nAN ERROR HAS OCCURRED [unknown]\n");
|
||||
}
|
||||
sqstd_printcallstack(v);
|
||||
}
|
||||
|
||||
3
src/3rdparty/squirrel/squirrel/sqapi.cpp
vendored
3
src/3rdparty/squirrel/squirrel/sqapi.cpp
vendored
@@ -798,7 +798,8 @@ SQRESULT sq_setdelegate(HSQUIRRELVM v,SQInteger idx)
|
||||
switch(type) {
|
||||
case OT_TABLE:
|
||||
if(type(mt) == OT_TABLE) {
|
||||
if(!_table(self)->SetDelegate(_table(mt))) return sq_throwerror(v, "delagate cycle"); v->Pop();}
|
||||
if(!_table(self)->SetDelegate(_table(mt))) return sq_throwerror(v, "delagate cycle");
|
||||
v->Pop();}
|
||||
else if(type(mt)==OT_NULL) {
|
||||
_table(self)->SetDelegate(NULL); v->Pop(); }
|
||||
else return sq_aux_invalidtype(v,type);
|
||||
|
||||
2
src/3rdparty/squirrel/squirrel/sqdebug.cpp
vendored
2
src/3rdparty/squirrel/squirrel/sqdebug.cpp
vendored
@@ -105,7 +105,7 @@ void SQVM::Raise_IdxError(const SQObject &o)
|
||||
void SQVM::Raise_CompareError(const SQObject &o1, const SQObject &o2)
|
||||
{
|
||||
SQObjectPtr oval1 = PrintObjVal(o1), oval2 = PrintObjVal(o2);
|
||||
Raise_Error("comparsion between '%.50s' and '%.50s'", _stringval(oval1), _stringval(oval2));
|
||||
Raise_Error("comparison between '%.50s' and '%.50s'", _stringval(oval1), _stringval(oval2));
|
||||
}
|
||||
|
||||
|
||||
|
||||
1
src/3rdparty/squirrel/squirrel/sqobject.h
vendored
1
src/3rdparty/squirrel/squirrel/sqobject.h
vendored
@@ -2,6 +2,7 @@
|
||||
#ifndef _SQOBJECT_H_
|
||||
#define _SQOBJECT_H_
|
||||
|
||||
#include <limits>
|
||||
#include "squtils.h"
|
||||
|
||||
#define SQ_CLOSURESTREAM_HEAD (('S'<<24)|('Q'<<16)|('I'<<8)|('R'))
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "../widgets/dropdown_type.h"
|
||||
#include "../widgets/dropdown_func.h"
|
||||
#include "../hotkeys.h"
|
||||
#include "../core/geometry_func.hpp"
|
||||
|
||||
#include "ai.hpp"
|
||||
#include "ai_gui.hpp"
|
||||
@@ -305,7 +306,6 @@ struct AISettingsWindow : public Window {
|
||||
timeout(0)
|
||||
{
|
||||
this->ai_config = GetConfig(slot);
|
||||
this->RebuildVisibleSettings();
|
||||
|
||||
this->CreateNestedTree();
|
||||
this->vscroll = this->GetScrollbar(WID_AIS_SCROLLBAR);
|
||||
@@ -313,7 +313,7 @@ struct AISettingsWindow : public Window {
|
||||
|
||||
this->SetWidgetDisabledState(WID_AIS_RESET, _game_mode != GM_MENU && Company::IsValidID(this->slot));
|
||||
|
||||
this->vscroll->SetCount((int)this->visible_settings.size());
|
||||
this->RebuildVisibleSettings();
|
||||
}
|
||||
|
||||
virtual void SetStringParameters(int widget) const
|
||||
@@ -341,6 +341,8 @@ struct AISettingsWindow : public Window {
|
||||
visible_settings.push_back(&(*it));
|
||||
}
|
||||
}
|
||||
|
||||
this->vscroll->SetCount((int)this->visible_settings.size());
|
||||
}
|
||||
|
||||
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
|
||||
@@ -529,21 +531,23 @@ struct AISettingsWindow : public Window {
|
||||
virtual void OnQueryTextFinished(char *str)
|
||||
{
|
||||
if (StrEmpty(str)) return;
|
||||
ScriptConfigItemList::const_iterator it = this->ai_config->GetConfigList()->begin();
|
||||
VisibleSettingsList::const_iterator it = this->visible_settings.begin();
|
||||
for (int i = 0; i < this->clicked_row; i++) it++;
|
||||
if (_game_mode == GM_NORMAL && ((this->slot == OWNER_DEITY) || Company::IsValidID(this->slot)) && (it->flags & SCRIPTCONFIG_INGAME) == 0) return;
|
||||
const ScriptConfigItem config_item = **it;
|
||||
if (_game_mode == GM_NORMAL && ((this->slot == OWNER_DEITY) || Company::IsValidID(this->slot)) && (config_item.flags & SCRIPTCONFIG_INGAME) == 0) return;
|
||||
int32 value = atoi(str);
|
||||
this->ai_config->SetSetting((*it).name, value);
|
||||
this->ai_config->SetSetting(config_item.name, value);
|
||||
this->SetDirty();
|
||||
}
|
||||
|
||||
virtual void OnDropdownSelect(int widget, int index)
|
||||
{
|
||||
assert(this->clicked_dropdown);
|
||||
ScriptConfigItemList::const_iterator it = this->ai_config->GetConfigList()->begin();
|
||||
VisibleSettingsList::const_iterator it = this->visible_settings.begin();
|
||||
for (int i = 0; i < this->clicked_row; i++) it++;
|
||||
if (_game_mode == GM_NORMAL && ((this->slot == OWNER_DEITY) || Company::IsValidID(this->slot)) && (it->flags & SCRIPTCONFIG_INGAME) == 0) return;
|
||||
this->ai_config->SetSetting((*it).name, index);
|
||||
const ScriptConfigItem config_item = **it;
|
||||
if (_game_mode == GM_NORMAL && ((this->slot == OWNER_DEITY) || Company::IsValidID(this->slot)) && (config_item.flags & SCRIPTCONFIG_INGAME) == 0) return;
|
||||
this->ai_config->SetSetting(config_item.name, index);
|
||||
this->SetDirty();
|
||||
}
|
||||
|
||||
@@ -767,6 +771,22 @@ struct AIConfigWindow : public Window {
|
||||
this->line_height = GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM);
|
||||
size->height = 8 * this->line_height;
|
||||
break;
|
||||
|
||||
case WID_AIC_CHANGE: {
|
||||
SetDParam(0, STR_AI_CONFIG_CHANGE_GAMESCRIPT);
|
||||
Dimension dim = GetStringBoundingBox(STR_AI_CONFIG_CHANGE);
|
||||
|
||||
SetDParam(0, STR_AI_CONFIG_CHANGE_NONE);
|
||||
dim = maxdim(dim, GetStringBoundingBox(STR_AI_CONFIG_CHANGE));
|
||||
|
||||
SetDParam(0, STR_AI_CONFIG_CHANGE_AI);
|
||||
dim = maxdim(dim, GetStringBoundingBox(STR_AI_CONFIG_CHANGE));
|
||||
|
||||
dim.width += padding.width;
|
||||
dim.height += padding.height;
|
||||
*size = maxdim(*size, dim);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ static bool CheckAPIVersion(const char *api_version)
|
||||
{
|
||||
return strcmp(api_version, "0.7") == 0 || strcmp(api_version, "1.0") == 0 || strcmp(api_version, "1.1") == 0 ||
|
||||
strcmp(api_version, "1.2") == 0 || strcmp(api_version, "1.3") == 0 || strcmp(api_version, "1.4") == 0 ||
|
||||
strcmp(api_version, "1.5") == 0 || strcmp(api_version, "1.6") == 0;
|
||||
strcmp(api_version, "1.5") == 0 || strcmp(api_version, "1.6") == 0 || strcmp(api_version, "1.7") == 0;
|
||||
}
|
||||
|
||||
#if defined(WIN32)
|
||||
|
||||
@@ -93,7 +93,7 @@ struct Aircraft FINAL : public SpecializedVehicle<Aircraft, VEH_AIRCRAFT> {
|
||||
void UpdateDeltaXY(Direction direction);
|
||||
ExpensesType GetExpenseType(bool income) const { return income ? EXPENSES_AIRCRAFT_INC : EXPENSES_AIRCRAFT_RUN; }
|
||||
bool IsPrimaryVehicle() const { return this->IsNormalAircraft(); }
|
||||
SpriteID GetImage(Direction direction, EngineImageType image_type) const;
|
||||
void GetImage(Direction direction, EngineImageType image_type, VehicleSpriteSeq *result) const;
|
||||
int GetDisplaySpeed() const { return this->cur_speed; }
|
||||
int GetDisplayMaxSpeed() const { return this->vcache.cached_max_speed; }
|
||||
int GetSpeedOldUnits() const { return this->vcache.cached_max_speed * 10 / 128; }
|
||||
@@ -141,7 +141,7 @@ struct Aircraft FINAL : public SpecializedVehicle<Aircraft, VEH_AIRCRAFT> {
|
||||
*/
|
||||
#define FOR_ALL_AIRCRAFT(var) FOR_ALL_VEHICLES_OF_TYPE(Aircraft, var)
|
||||
|
||||
SpriteID GetRotorImage(const Aircraft *v, EngineImageType image_type);
|
||||
void GetRotorImage(const Aircraft *v, EngineImageType image_type, VehicleSpriteSeq *result);
|
||||
|
||||
Station *GetTargetAirportIfValid(const Aircraft *v);
|
||||
|
||||
|
||||
@@ -152,64 +152,69 @@ static StationID FindNearestHangar(const Aircraft *v)
|
||||
return index;
|
||||
}
|
||||
|
||||
SpriteID Aircraft::GetImage(Direction direction, EngineImageType image_type) const
|
||||
void Aircraft::GetImage(Direction direction, EngineImageType image_type, VehicleSpriteSeq *result) const
|
||||
{
|
||||
uint8 spritenum = this->spritenum;
|
||||
|
||||
if (is_custom_sprite(spritenum)) {
|
||||
SpriteID sprite = GetCustomVehicleSprite(this, direction, image_type);
|
||||
if (sprite != 0) return sprite;
|
||||
GetCustomVehicleSprite(this, direction, image_type, result);
|
||||
if (result->IsValid()) return;
|
||||
|
||||
spritenum = this->GetEngine()->original_image_index;
|
||||
}
|
||||
|
||||
assert(IsValidImageIndex<VEH_AIRCRAFT>(spritenum));
|
||||
return direction + _aircraft_sprite[spritenum];
|
||||
result->Set(direction + _aircraft_sprite[spritenum]);
|
||||
}
|
||||
|
||||
SpriteID GetRotorImage(const Aircraft *v, EngineImageType image_type)
|
||||
void GetRotorImage(const Aircraft *v, EngineImageType image_type, VehicleSpriteSeq *result)
|
||||
{
|
||||
assert(v->subtype == AIR_HELICOPTER);
|
||||
|
||||
const Aircraft *w = v->Next()->Next();
|
||||
if (is_custom_sprite(v->spritenum)) {
|
||||
SpriteID sprite = GetCustomRotorSprite(v, false, image_type);
|
||||
if (sprite != 0) return sprite;
|
||||
GetCustomRotorSprite(v, false, image_type, result);
|
||||
if (result->IsValid()) return;
|
||||
}
|
||||
|
||||
/* Return standard rotor sprites if there are no custom sprites for this helicopter */
|
||||
return SPR_ROTOR_STOPPED + w->state;
|
||||
result->Set(SPR_ROTOR_STOPPED + w->state);
|
||||
}
|
||||
|
||||
static SpriteID GetAircraftIcon(EngineID engine, EngineImageType image_type)
|
||||
static void GetAircraftIcon(EngineID engine, EngineImageType image_type, VehicleSpriteSeq *result)
|
||||
{
|
||||
const Engine *e = Engine::Get(engine);
|
||||
uint8 spritenum = e->u.air.image_index;
|
||||
|
||||
if (is_custom_sprite(spritenum)) {
|
||||
SpriteID sprite = GetCustomVehicleIcon(engine, DIR_W, image_type);
|
||||
if (sprite != 0) return sprite;
|
||||
GetCustomVehicleIcon(engine, DIR_W, image_type, result);
|
||||
if (result->IsValid()) return;
|
||||
|
||||
spritenum = e->original_image_index;
|
||||
}
|
||||
|
||||
assert(IsValidImageIndex<VEH_AIRCRAFT>(spritenum));
|
||||
return DIR_W + _aircraft_sprite[spritenum];
|
||||
result->Set(DIR_W + _aircraft_sprite[spritenum]);
|
||||
}
|
||||
|
||||
void DrawAircraftEngine(int left, int right, int preferred_x, int y, EngineID engine, PaletteID pal, EngineImageType image_type)
|
||||
{
|
||||
SpriteID sprite = GetAircraftIcon(engine, image_type);
|
||||
const Sprite *real_sprite = GetSprite(sprite, ST_NORMAL);
|
||||
VehicleSpriteSeq seq;
|
||||
GetAircraftIcon(engine, image_type, &seq);
|
||||
|
||||
Rect rect;
|
||||
seq.GetBounds(&rect);
|
||||
preferred_x = Clamp(preferred_x,
|
||||
left - UnScaleGUI(real_sprite->x_offs),
|
||||
right - UnScaleGUI(real_sprite->width) - UnScaleGUI(real_sprite->x_offs));
|
||||
DrawSprite(sprite, pal, preferred_x, y);
|
||||
left - UnScaleGUI(rect.left),
|
||||
right - UnScaleGUI(rect.right));
|
||||
|
||||
seq.Draw(preferred_x, y, pal, pal == PALETTE_CRASH);
|
||||
|
||||
if (!(AircraftVehInfo(engine)->subtype & AIR_CTOL)) {
|
||||
SpriteID rotor_sprite = GetCustomRotorIcon(engine, image_type);
|
||||
if (rotor_sprite == 0) rotor_sprite = SPR_ROTOR_STOPPED;
|
||||
DrawSprite(rotor_sprite, PAL_NONE, preferred_x, y - ScaleGUITrad(5));
|
||||
VehicleSpriteSeq rotor_seq;
|
||||
GetCustomRotorIcon(engine, image_type, &rotor_seq);
|
||||
if (!rotor_seq.IsValid()) rotor_seq.Set(SPR_ROTOR_STOPPED);
|
||||
rotor_seq.Draw(preferred_x, y - ScaleGUITrad(5), PAL_NONE, false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -224,12 +229,16 @@ void DrawAircraftEngine(int left, int right, int preferred_x, int y, EngineID en
|
||||
*/
|
||||
void GetAircraftSpriteSize(EngineID engine, uint &width, uint &height, int &xoffs, int &yoffs, EngineImageType image_type)
|
||||
{
|
||||
const Sprite *spr = GetSprite(GetAircraftIcon(engine, image_type), ST_NORMAL);
|
||||
VehicleSpriteSeq seq;
|
||||
GetAircraftIcon(engine, image_type, &seq);
|
||||
|
||||
width = UnScaleGUI(spr->width);
|
||||
height = UnScaleGUI(spr->height);
|
||||
xoffs = UnScaleGUI(spr->x_offs);
|
||||
yoffs = UnScaleGUI(spr->y_offs);
|
||||
Rect rect;
|
||||
seq.GetBounds(&rect);
|
||||
|
||||
width = UnScaleGUI(rect.right - rect.left + 1);
|
||||
height = UnScaleGUI(rect.bottom - rect.top + 1);
|
||||
xoffs = UnScaleGUI(rect.left);
|
||||
yoffs = UnScaleGUI(rect.top);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -317,7 +326,8 @@ CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, const Engine *
|
||||
v->date_of_last_service = _date;
|
||||
v->build_year = u->build_year = _cur_year;
|
||||
|
||||
v->cur_image = u->cur_image = SPR_IMG_QUERY;
|
||||
v->sprite_seq.Set(SPR_IMG_QUERY);
|
||||
u->sprite_seq.Set(SPR_IMG_QUERY);
|
||||
|
||||
v->random_bits = VehicleRandomBits();
|
||||
u->random_bits = VehicleRandomBits();
|
||||
@@ -349,7 +359,7 @@ CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, const Engine *
|
||||
w->vehstatus = VS_HIDDEN | VS_UNCLICKABLE;
|
||||
w->spritenum = 0xFF;
|
||||
w->subtype = AIR_ROTOR;
|
||||
w->cur_image = SPR_ROTOR_STOPPED;
|
||||
w->sprite_seq.Set(SPR_ROTOR_STOPPED);
|
||||
w->random_bits = VehicleRandomBits();
|
||||
/* Use rotor's air.state to store the rotor animation frame */
|
||||
w->state = HRS_ROTOR_STOPPED;
|
||||
@@ -468,21 +478,21 @@ static void HelicopterTickHandler(Aircraft *v)
|
||||
int tick = ++u->tick_counter;
|
||||
int spd = u->cur_speed >> 4;
|
||||
|
||||
SpriteID img;
|
||||
VehicleSpriteSeq seq;
|
||||
if (spd == 0) {
|
||||
u->state = HRS_ROTOR_STOPPED;
|
||||
img = GetRotorImage(v, EIT_ON_MAP);
|
||||
if (u->cur_image == img) return;
|
||||
GetRotorImage(v, EIT_ON_MAP, &seq);
|
||||
if (u->sprite_seq == seq) return;
|
||||
} else if (tick >= spd) {
|
||||
u->tick_counter = 0;
|
||||
u->state++;
|
||||
if (u->state > HRS_ROTOR_MOVING_3) u->state = HRS_ROTOR_MOVING_1;
|
||||
img = GetRotorImage(v, EIT_ON_MAP);
|
||||
GetRotorImage(v, EIT_ON_MAP, &seq);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
|
||||
u->cur_image = img;
|
||||
u->sprite_seq = seq;
|
||||
|
||||
u->UpdatePositionAndViewport();
|
||||
}
|
||||
@@ -502,7 +512,9 @@ void SetAircraftPosition(Aircraft *v, int x, int y, int z)
|
||||
|
||||
v->UpdatePosition();
|
||||
v->UpdateViewport(true, false);
|
||||
if (v->subtype == AIR_HELICOPTER) v->Next()->Next()->cur_image = GetRotorImage(v, EIT_ON_MAP);
|
||||
if (v->subtype == AIR_HELICOPTER) {
|
||||
GetRotorImage(v, EIT_ON_MAP, &v->Next()->Next()->sprite_seq);
|
||||
}
|
||||
|
||||
Aircraft *u = v->Next();
|
||||
|
||||
@@ -513,7 +525,7 @@ void SetAircraftPosition(Aircraft *v, int x, int y, int z)
|
||||
|
||||
safe_y = Clamp(u->y_pos, 0, MapMaxY() * TILE_SIZE);
|
||||
u->z_pos = GetSlopePixelZ(safe_x, safe_y);
|
||||
u->cur_image = v->cur_image;
|
||||
u->sprite_seq.CopyWithoutPalette(v->sprite_seq); // the shadow is never coloured
|
||||
|
||||
u->UpdatePositionAndViewport();
|
||||
|
||||
@@ -1237,7 +1249,9 @@ void Aircraft::MarkDirty()
|
||||
{
|
||||
this->colourmap = PAL_NONE;
|
||||
this->UpdateViewport(true, false);
|
||||
if (this->subtype == AIR_HELICOPTER) this->Next()->Next()->cur_image = GetRotorImage(this, EIT_ON_MAP);
|
||||
if (this->subtype == AIR_HELICOPTER) {
|
||||
GetRotorImage(this, EIT_ON_MAP, &this->Next()->Next()->sprite_seq);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -83,11 +83,14 @@ void DrawAircraftImage(const Vehicle *v, int left, int right, int y, VehicleID s
|
||||
{
|
||||
bool rtl = _current_text_dir == TD_RTL;
|
||||
|
||||
SpriteID sprite = v->GetImage(rtl ? DIR_E : DIR_W, image_type);
|
||||
const Sprite *real_sprite = GetSprite(sprite, ST_NORMAL);
|
||||
VehicleSpriteSeq seq;
|
||||
v->GetImage(rtl ? DIR_E : DIR_W, image_type, &seq);
|
||||
|
||||
int width = UnScaleGUI(real_sprite->width);
|
||||
int x_offs = UnScaleGUI(real_sprite->x_offs);
|
||||
Rect rect;
|
||||
seq.GetBounds(&rect);
|
||||
|
||||
int width = UnScaleGUI(rect.right - rect.left + 1);
|
||||
int x_offs = UnScaleGUI(rect.left);
|
||||
int x = rtl ? right - width - x_offs : left - x_offs;
|
||||
bool helicopter = v->subtype == AIR_HELICOPTER;
|
||||
|
||||
@@ -95,17 +98,18 @@ void DrawAircraftImage(const Vehicle *v, int left, int right, int y, VehicleID s
|
||||
int heli_offs = 0;
|
||||
|
||||
PaletteID pal = (v->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(v);
|
||||
DrawSprite(sprite, pal, x, y + y_offs);
|
||||
seq.Draw(x, y + y_offs, pal, (v->vehstatus & VS_CRASHED) != 0);
|
||||
if (helicopter) {
|
||||
const Aircraft *a = Aircraft::From(v);
|
||||
SpriteID rotor_sprite = GetCustomRotorSprite(a, true, image_type);
|
||||
if (rotor_sprite == 0) rotor_sprite = SPR_ROTOR_STOPPED;
|
||||
VehicleSpriteSeq rotor_seq;
|
||||
GetCustomRotorSprite(a, true, image_type, &rotor_seq);
|
||||
if (!rotor_seq.IsValid()) rotor_seq.Set(SPR_ROTOR_STOPPED);
|
||||
heli_offs = ScaleGUITrad(5);
|
||||
DrawSprite(rotor_sprite, PAL_NONE, x, y + y_offs - heli_offs);
|
||||
rotor_seq.Draw(x, y + y_offs - heli_offs, PAL_NONE, false);
|
||||
}
|
||||
if (v->index == selection) {
|
||||
x += x_offs;
|
||||
y += UnScaleGUI(real_sprite->y_offs) + y_offs - heli_offs;
|
||||
DrawFrameRect(x - 1, y - 1, x + width + 1, y + UnScaleGUI(real_sprite->height) + heli_offs + 1, COLOUR_WHITE, FR_BORDERONLY);
|
||||
y += UnScaleGUI(rect.top) + y_offs - heli_offs;
|
||||
DrawFrameRect(x - 1, y - 1, x + width + 1, y + UnScaleGUI(rect.bottom - rect.top + 1) + heli_offs + 1, COLOUR_WHITE, FR_BORDERONLY);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include "vehicle_func.h"
|
||||
#include "gui.h"
|
||||
#include "command_func.h"
|
||||
#include "build_confirmation_func.h"
|
||||
|
||||
#include "widgets/airport_widget.h"
|
||||
|
||||
@@ -74,7 +75,7 @@ struct BuildAirToolbarWindow : Window {
|
||||
BuildAirToolbarWindow(WindowDesc *desc, WindowNumber window_number) : Window(desc)
|
||||
{
|
||||
this->InitNested(window_number);
|
||||
if (_settings_client.gui.link_terraform_toolbar) ShowTerraformToolbar(this);
|
||||
if (_settings_client.gui.link_terraform_toolbar || _settings_client.gui.compact_vertical_toolbar) ShowTerraformToolbar();
|
||||
this->last_user_action = WIDGET_LIST_END;
|
||||
}
|
||||
|
||||
@@ -120,7 +121,6 @@ struct BuildAirToolbarWindow : Window {
|
||||
switch (this->last_user_action) {
|
||||
case WID_AT_AIRPORT: {
|
||||
VpStartPlaceSizing(tile, VPM_SINGLE_TILE, DDSP_BUILD_STATION);
|
||||
MoveAllWindowsOffScreen();
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -130,6 +130,7 @@ struct BuildAirToolbarWindow : Window {
|
||||
|
||||
default: NOT_REACHED();
|
||||
}
|
||||
MoveAllWindowsOffScreen();
|
||||
}
|
||||
|
||||
virtual void OnPlaceDrag(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt)
|
||||
@@ -140,10 +141,10 @@ struct BuildAirToolbarWindow : Window {
|
||||
virtual void OnPlaceMouseUp(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt, TileIndex start_tile, TileIndex end_tile)
|
||||
{
|
||||
if (pt.x == -1) return;
|
||||
MoveAllHiddenWindowsBackToScreen();
|
||||
switch (select_proc) {
|
||||
case DDSP_BUILD_STATION:
|
||||
assert(start_tile == end_tile);
|
||||
MoveAllHiddenWindowsBackToScreen();
|
||||
PlaceAirport(end_tile);
|
||||
break;
|
||||
case DDSP_DEMOLISH_AREA:
|
||||
@@ -155,10 +156,12 @@ struct BuildAirToolbarWindow : Window {
|
||||
|
||||
virtual void OnPlaceObjectAbort()
|
||||
{
|
||||
MoveAllHiddenWindowsBackToScreen();
|
||||
this->RaiseButtons();
|
||||
|
||||
DeleteWindowById(WC_BUILD_STATION, TRANSPORT_AIR);
|
||||
DeleteWindowById(WC_SELECT_STATION, 0);
|
||||
if (!ConfirmationWindowShown()) {
|
||||
DeleteWindowById(WC_BUILD_STATION, TRANSPORT_AIR);
|
||||
DeleteWindowById(WC_SELECT_STATION, 0);
|
||||
}
|
||||
ResetObjectToPlace();
|
||||
}
|
||||
|
||||
|
||||
@@ -433,6 +433,7 @@ void AddArticulatedParts(Vehicle *first)
|
||||
v->x_pos = first->x_pos;
|
||||
v->y_pos = first->y_pos;
|
||||
v->z_pos = first->z_pos;
|
||||
v->date_of_last_service = first->date_of_last_service;
|
||||
v->build_year = first->build_year;
|
||||
v->vehstatus = first->vehstatus & ~VS_STOPPED;
|
||||
|
||||
@@ -440,7 +441,7 @@ void AddArticulatedParts(Vehicle *first)
|
||||
v->max_age = 0;
|
||||
v->engine_type = engine_type;
|
||||
v->value = 0;
|
||||
v->cur_image = SPR_IMG_QUERY;
|
||||
v->sprite_seq.Set(SPR_IMG_QUERY);
|
||||
v->random_bits = VehicleRandomBits();
|
||||
|
||||
if (flip_image) v->spritenum++;
|
||||
|
||||
@@ -88,7 +88,7 @@ class ReplaceVehicleWindow : public Window {
|
||||
byte sort_criteria; ///< Criteria of sorting vehicles.
|
||||
bool descending_sort_order; ///< Order of sorting vehicles.
|
||||
bool show_hidden_engines; ///< Whether to show the hidden engines.
|
||||
RailType sel_railtype; ///< Type of rail tracks selected.
|
||||
RailType sel_railtype; ///< Type of rail tracks selected. #INVALID_RAILTYPE to show all.
|
||||
Scrollbar *vscroll[2];
|
||||
|
||||
/**
|
||||
@@ -105,7 +105,7 @@ class ReplaceVehicleWindow : public Window {
|
||||
/* Ensure that the wagon/engine selection fits the engine. */
|
||||
if ((rvi->railveh_type == RAILVEH_WAGON) == show_engines) return false;
|
||||
|
||||
if (draw_left && show_engines) {
|
||||
if (draw_left && this->sel_railtype != INVALID_RAILTYPE) {
|
||||
/* Ensure that the railtype is specific to the selected one */
|
||||
if (rvi->railtype != this->sel_railtype) return false;
|
||||
}
|
||||
@@ -212,24 +212,7 @@ class ReplaceVehicleWindow : public Window {
|
||||
public:
|
||||
ReplaceVehicleWindow(WindowDesc *desc, VehicleType vehicletype, GroupID id_g) : Window(desc)
|
||||
{
|
||||
if (vehicletype == VEH_TRAIN) {
|
||||
/* For rail vehicles find the most used vehicle type, which is usually
|
||||
* better than 'just' the first/previous vehicle type. */
|
||||
uint type_count[RAILTYPE_END];
|
||||
memset(type_count, 0, sizeof(type_count));
|
||||
|
||||
const Engine *e;
|
||||
FOR_ALL_ENGINES_OF_TYPE(e, VEH_TRAIN) {
|
||||
if (e->u.rail.railveh_type == RAILVEH_WAGON) continue;
|
||||
type_count[e->u.rail.railtype] += GetGroupNumEngines(_local_company, id_g, e->index);
|
||||
}
|
||||
|
||||
this->sel_railtype = RAILTYPE_BEGIN;
|
||||
for (RailType rt = RAILTYPE_BEGIN; rt < RAILTYPE_END; rt++) {
|
||||
if (type_count[this->sel_railtype] < type_count[rt]) this->sel_railtype = rt;
|
||||
}
|
||||
}
|
||||
|
||||
this->sel_railtype = INVALID_RAILTYPE;
|
||||
this->replace_engines = true; // start with locomotives (all other vehicles will not read this bool)
|
||||
this->engines[0].ForceRebuild();
|
||||
this->engines[1].ForceRebuild();
|
||||
@@ -269,7 +252,7 @@ public:
|
||||
case WID_RV_LEFT_MATRIX:
|
||||
case WID_RV_RIGHT_MATRIX:
|
||||
resize->height = GetEngineListHeight((VehicleType)this->window_number);
|
||||
size->height = (widget == WID_RV_RIGHT_MATRIX ? 3 : 4) * resize->height;
|
||||
size->height = (widget == WID_RV_LEFT_MATRIX ? 3 : 4) * resize->height;
|
||||
break;
|
||||
|
||||
case WID_RV_LEFT_DETAILS:
|
||||
@@ -289,12 +272,9 @@ public:
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_RV_TRAIN_ENGINEWAGON_TOGGLE: {
|
||||
StringID str = this->GetWidget<NWidgetCore>(widget)->widget_data;
|
||||
SetDParam(0, STR_REPLACE_ENGINES);
|
||||
Dimension d = GetStringBoundingBox(str);
|
||||
SetDParam(0, STR_REPLACE_WAGONS);
|
||||
d = maxdim(d, GetStringBoundingBox(str));
|
||||
case WID_RV_TRAIN_ENGINEWAGON_DROPDOWN: {
|
||||
Dimension d = GetStringBoundingBox(STR_REPLACE_ENGINES);
|
||||
d = maxdim(d, GetStringBoundingBox(STR_REPLACE_WAGONS));
|
||||
d.width += padding.width;
|
||||
d.height += padding.height;
|
||||
*size = maxdim(*size, d);
|
||||
@@ -370,7 +350,7 @@ public:
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_RV_TRAIN_ENGINEWAGON_TOGGLE:
|
||||
case WID_RV_TRAIN_ENGINEWAGON_DROPDOWN:
|
||||
SetDParam(0, this->replace_engines ? STR_REPLACE_ENGINES : STR_REPLACE_WAGONS);
|
||||
break;
|
||||
}
|
||||
@@ -435,12 +415,8 @@ public:
|
||||
this->SetWidgetDisabledState(WID_RV_STOP_REPLACE, this->sel_engine[0] == INVALID_ENGINE || !EngineHasReplacementForCompany(c, this->sel_engine[0], this->sel_group));
|
||||
|
||||
if (this->window_number == VEH_TRAIN) {
|
||||
/* sets the colour of that art thing */
|
||||
this->GetWidget<NWidgetCore>(WID_RV_TRAIN_FLUFF_LEFT)->colour = _company_colours[_local_company];
|
||||
this->GetWidget<NWidgetCore>(WID_RV_TRAIN_FLUFF_RIGHT)->colour = _company_colours[_local_company];
|
||||
|
||||
/* Show the selected railtype in the pulldown menu */
|
||||
this->GetWidget<NWidgetCore>(WID_RV_TRAIN_RAILTYPE_DROPDOWN)->widget_data = GetRailTypeInfo(sel_railtype)->strings.replace_text;
|
||||
this->GetWidget<NWidgetCore>(WID_RV_TRAIN_RAILTYPE_DROPDOWN)->widget_data = sel_railtype == INVALID_RAILTYPE ? STR_REPLACE_ALL_RAILTYPE : GetRailTypeInfo(sel_railtype)->strings.replace_text;
|
||||
}
|
||||
|
||||
this->DrawWidgets();
|
||||
@@ -486,15 +462,16 @@ public:
|
||||
DisplayVehicleSortDropDown(this, static_cast<VehicleType>(this->window_number), this->sort_criteria, WID_RV_SORT_DROPDOWN);
|
||||
break;
|
||||
|
||||
case WID_RV_TRAIN_ENGINEWAGON_TOGGLE:
|
||||
this->replace_engines = !(this->replace_engines);
|
||||
this->engines[0].ForceRebuild();
|
||||
this->reset_sel_engine = true;
|
||||
this->SetDirty();
|
||||
case WID_RV_TRAIN_ENGINEWAGON_DROPDOWN: {
|
||||
DropDownList *list = new DropDownList();
|
||||
*list->Append() = new DropDownListStringItem(STR_REPLACE_ENGINES, 1, false);
|
||||
*list->Append() = new DropDownListStringItem(STR_REPLACE_WAGONS, 0, false);
|
||||
ShowDropDownList(this, list, this->replace_engines ? 1 : 0, WID_RV_TRAIN_ENGINEWAGON_DROPDOWN);
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_RV_TRAIN_RAILTYPE_DROPDOWN: // Railtype selection dropdown menu
|
||||
ShowDropDownList(this, GetRailTypeDropDownList(true), sel_railtype, WID_RV_TRAIN_RAILTYPE_DROPDOWN);
|
||||
ShowDropDownList(this, GetRailTypeDropDownList(true, true), sel_railtype, WID_RV_TRAIN_RAILTYPE_DROPDOWN);
|
||||
break;
|
||||
|
||||
case WID_RV_TRAIN_WAGONREMOVE_TOGGLE: // toggle renew_keep_length
|
||||
@@ -569,6 +546,14 @@ public:
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_RV_TRAIN_ENGINEWAGON_DROPDOWN: {
|
||||
this->replace_engines = index != 0;
|
||||
this->engines[0].ForceRebuild();
|
||||
this->reset_sel_engine = true;
|
||||
this->SetDirty();
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_RV_START_REPLACE:
|
||||
this->ReplaceClick_StartReplace(index != 0);
|
||||
break;
|
||||
@@ -615,6 +600,11 @@ static const NWidgetPart _nested_replace_rail_vehicle_widgets[] = {
|
||||
EndContainer(),
|
||||
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
|
||||
NWidget(NWID_VERTICAL),
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_RV_TRAIN_RAILTYPE_DROPDOWN), SetMinimalSize(136, 12), SetDataTip(0x0, STR_REPLACE_HELP_RAILTYPE), SetFill(1, 0), SetResize(1, 0),
|
||||
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_RV_TRAIN_ENGINEWAGON_DROPDOWN), SetDataTip(STR_BLACK_STRING, STR_REPLACE_ENGINE_WAGON_SELECT_HELP),
|
||||
EndContainer(),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_RV_TRAIN_WAGONREMOVE_TOGGLE), SetMinimalSize(138, 12), SetDataTip(STR_REPLACE_REMOVE_WAGON, STR_REPLACE_REMOVE_WAGON_HELP), SetFill(1, 0), SetResize(1, 0),
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(WWT_MATRIX, COLOUR_GREY, WID_RV_LEFT_MATRIX), SetMinimalSize(216, 0), SetFill(1, 1), SetMatrixDataTip(1, 0, STR_REPLACE_HELP_LEFT_ARRAY), SetResize(1, 1), SetScrollbar(WID_RV_LEFT_SCROLLBAR),
|
||||
NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_RV_LEFT_SCROLLBAR),
|
||||
@@ -631,7 +621,9 @@ static const NWidgetPart _nested_replace_rail_vehicle_widgets[] = {
|
||||
NWidget(WWT_MATRIX, COLOUR_GREY, WID_RV_RIGHT_MATRIX), SetMinimalSize(216, 0), SetFill(1, 1), SetMatrixDataTip(1, 0, STR_REPLACE_HELP_RIGHT_ARRAY), SetResize(1, 1), SetScrollbar(WID_RV_RIGHT_SCROLLBAR),
|
||||
NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_RV_RIGHT_SCROLLBAR),
|
||||
EndContainer(),
|
||||
NWidget(WWT_PANEL, COLOUR_GREY, WID_RV_RIGHT_DETAILS), SetMinimalSize(240, 122), SetResize(1, 0), EndContainer(),
|
||||
NWidget(NWID_VERTICAL),
|
||||
NWidget(WWT_PANEL, COLOUR_GREY, WID_RV_RIGHT_DETAILS), SetMinimalSize(240, 122), SetResize(1, 0), EndContainer(),
|
||||
EndContainer(),
|
||||
EndContainer(),
|
||||
EndContainer(),
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
@@ -639,13 +631,6 @@ static const NWidgetPart _nested_replace_rail_vehicle_widgets[] = {
|
||||
NWidget(WWT_PANEL, COLOUR_GREY, WID_RV_INFO_TAB), SetMinimalSize(167, 12), SetDataTip(0x0, STR_REPLACE_HELP_REPLACE_INFO_TAB), SetResize(1, 0),
|
||||
EndContainer(),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_RV_STOP_REPLACE), SetMinimalSize(150, 12), SetDataTip(STR_REPLACE_VEHICLES_STOP, STR_REPLACE_HELP_STOP_BUTTON),
|
||||
EndContainer(),
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_RV_TRAIN_ENGINEWAGON_TOGGLE), SetMinimalSize(139, 12), SetDataTip(STR_REPLACE_ENGINE_WAGON_SELECT, STR_REPLACE_ENGINE_WAGON_SELECT_HELP),
|
||||
NWidget(WWT_PANEL, COLOUR_GREY, WID_RV_TRAIN_FLUFF_LEFT), SetMinimalSize(15, 12), EndContainer(),
|
||||
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_RV_TRAIN_RAILTYPE_DROPDOWN), SetMinimalSize(136, 12), SetDataTip(0x0, STR_REPLACE_HELP_RAILTYPE), SetResize(1, 0),
|
||||
NWidget(WWT_PANEL, COLOUR_GREY, WID_RV_TRAIN_FLUFF_RIGHT), SetMinimalSize(16, 12), EndContainer(),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_RV_TRAIN_WAGONREMOVE_TOGGLE), SetMinimalSize(138, 12), SetDataTip(STR_REPLACE_REMOVE_WAGON, STR_REPLACE_REMOVE_WAGON_HELP),
|
||||
NWidget(WWT_RESIZEBOX, COLOUR_GREY),
|
||||
EndContainer(),
|
||||
};
|
||||
|
||||
@@ -20,6 +20,11 @@
|
||||
/** Instantiation of the 32bpp with animation blitter factory. */
|
||||
static FBlitter_32bppAnim iFBlitter_32bppAnim;
|
||||
|
||||
Blitter_32bppAnim::~Blitter_32bppAnim()
|
||||
{
|
||||
free(this->anim_buf);
|
||||
}
|
||||
|
||||
template <BlitterMode mode>
|
||||
inline void Blitter_32bppAnim::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom)
|
||||
{
|
||||
@@ -34,13 +39,14 @@ inline void Blitter_32bppAnim::Draw(const Blitter::BlitterParams *bp, ZoomLevel
|
||||
}
|
||||
|
||||
Colour *dst = (Colour *)bp->dst + bp->top * bp->pitch + bp->left;
|
||||
uint16 *anim = this->anim_buf + ((uint32 *)bp->dst - (uint32 *)_screen.dst_ptr) + bp->top * this->anim_buf_width + bp->left;
|
||||
assert(_screen.pitch == this->anim_buf_pitch); // precondition for translating 'bp->dst' into an 'anim_buf' offset below.
|
||||
uint16 *anim = this->anim_buf + ((uint32 *)bp->dst - (uint32 *)_screen.dst_ptr) + bp->top * this->anim_buf_pitch + bp->left;
|
||||
|
||||
const byte *remap = bp->remap; // store so we don't have to access it via bp everytime
|
||||
|
||||
for (int y = 0; y < bp->height; y++) {
|
||||
Colour *dst_ln = dst + bp->pitch;
|
||||
uint16 *anim_ln = anim + this->anim_buf_width;
|
||||
uint16 *anim_ln = anim + this->anim_buf_pitch;
|
||||
|
||||
const Colour *src_px_ln = (const Colour *)((const byte *)src_px + *(const uint32 *)src_px);
|
||||
src_px++;
|
||||
@@ -274,9 +280,8 @@ void Blitter_32bppAnim::DrawColourMappingRect(void *dst, int width, int height,
|
||||
}
|
||||
|
||||
Colour *udst = (Colour *)dst;
|
||||
uint16 *anim;
|
||||
|
||||
anim = this->anim_buf + ((uint32 *)dst - (uint32 *)_screen.dst_ptr);
|
||||
assert(_screen.pitch == this->anim_buf_pitch); // precondition for translating 'dst' into an 'anim_buf' offset below.
|
||||
uint16 *anim = this->anim_buf + ((uint32 *)dst - (uint32 *)_screen.dst_ptr);
|
||||
|
||||
if (pal == PALETTE_TO_TRANSPARENT) {
|
||||
do {
|
||||
@@ -287,7 +292,7 @@ void Blitter_32bppAnim::DrawColourMappingRect(void *dst, int width, int height,
|
||||
anim++;
|
||||
}
|
||||
udst = udst - width + _screen.pitch;
|
||||
anim = anim - width + this->anim_buf_width;
|
||||
anim = anim - width + this->anim_buf_pitch;
|
||||
} while (--height);
|
||||
return;
|
||||
}
|
||||
@@ -300,7 +305,7 @@ void Blitter_32bppAnim::DrawColourMappingRect(void *dst, int width, int height,
|
||||
anim++;
|
||||
}
|
||||
udst = udst - width + _screen.pitch;
|
||||
anim = anim - width + this->anim_buf_width;
|
||||
anim = anim - width + this->anim_buf_pitch;
|
||||
} while (--height);
|
||||
return;
|
||||
}
|
||||
@@ -314,7 +319,8 @@ void Blitter_32bppAnim::SetPixel(void *video, int x, int y, uint8 colour)
|
||||
|
||||
/* Set the colour in the anim-buffer too, if we are rendering to the screen */
|
||||
if (_screen_disable_anim) return;
|
||||
this->anim_buf[((uint32 *)video - (uint32 *)_screen.dst_ptr) + x + y * this->anim_buf_width] = colour | (DEFAULT_BRIGHTNESS << 8);
|
||||
assert(_screen.pitch == this->anim_buf_pitch); // precondition for translating 'video' into an 'anim_buf' offset below.
|
||||
this->anim_buf[((uint32 *)video - (uint32 *)_screen.dst_ptr) + x + y * this->anim_buf_pitch] = colour | (DEFAULT_BRIGHTNESS << 8);
|
||||
}
|
||||
|
||||
void Blitter_32bppAnim::DrawRect(void *video, int width, int height, uint8 colour)
|
||||
@@ -326,9 +332,8 @@ void Blitter_32bppAnim::DrawRect(void *video, int width, int height, uint8 colou
|
||||
}
|
||||
|
||||
Colour colour32 = LookupColourInPalette(colour);
|
||||
uint16 *anim_line;
|
||||
|
||||
anim_line = ((uint32 *)video - (uint32 *)_screen.dst_ptr) + this->anim_buf;
|
||||
assert(_screen.pitch == this->anim_buf_pitch); // precondition for translating 'video' into an 'anim_buf' offset below.
|
||||
uint16 *anim_line = ((uint32 *)video - (uint32 *)_screen.dst_ptr) + this->anim_buf;
|
||||
|
||||
do {
|
||||
Colour *dst = (Colour *)video;
|
||||
@@ -342,7 +347,7 @@ void Blitter_32bppAnim::DrawRect(void *video, int width, int height, uint8 colou
|
||||
anim++;
|
||||
}
|
||||
video = (uint32 *)video + _screen.pitch;
|
||||
anim_line += this->anim_buf_width;
|
||||
anim_line += this->anim_buf_pitch;
|
||||
} while (--height);
|
||||
}
|
||||
|
||||
@@ -352,6 +357,7 @@ void Blitter_32bppAnim::CopyFromBuffer(void *video, const void *src, int width,
|
||||
assert(video >= _screen.dst_ptr && video <= (uint32 *)_screen.dst_ptr + _screen.width + _screen.height * _screen.pitch);
|
||||
Colour *dst = (Colour *)video;
|
||||
const uint32 *usrc = (const uint32 *)src;
|
||||
assert(_screen.pitch == this->anim_buf_pitch); // precondition for translating 'video' into an 'anim_buf' offset below.
|
||||
uint16 *anim_line = ((uint32 *)video - (uint32 *)_screen.dst_ptr) + this->anim_buf;
|
||||
|
||||
for (; height > 0; height--) {
|
||||
@@ -365,7 +371,7 @@ void Blitter_32bppAnim::CopyFromBuffer(void *video, const void *src, int width,
|
||||
/* Copy back the anim-buffer */
|
||||
memcpy(anim_line, usrc, width * sizeof(uint16));
|
||||
usrc = (const uint32 *)((const uint16 *)usrc + width);
|
||||
anim_line += this->anim_buf_width;
|
||||
anim_line += this->anim_buf_pitch;
|
||||
|
||||
/* Okay, it is *very* likely that the image we stored is using
|
||||
* the wrong palette animated colours. There are two things we
|
||||
@@ -392,11 +398,11 @@ void Blitter_32bppAnim::CopyToBuffer(const void *video, void *dst, int width, in
|
||||
assert(video >= _screen.dst_ptr && video <= (uint32 *)_screen.dst_ptr + _screen.width + _screen.height * _screen.pitch);
|
||||
uint32 *udst = (uint32 *)dst;
|
||||
const uint32 *src = (const uint32 *)video;
|
||||
const uint16 *anim_line;
|
||||
|
||||
if (this->anim_buf == NULL) return;
|
||||
|
||||
anim_line = ((const uint32 *)video - (uint32 *)_screen.dst_ptr) + this->anim_buf;
|
||||
assert(_screen.pitch == this->anim_buf_pitch); // precondition for translating 'video' into an 'anim_buf' offset below.
|
||||
const uint16 *anim_line = ((const uint32 *)video - (uint32 *)_screen.dst_ptr) + this->anim_buf;
|
||||
|
||||
for (; height > 0; height--) {
|
||||
memcpy(udst, src, width * sizeof(uint32));
|
||||
@@ -405,7 +411,7 @@ void Blitter_32bppAnim::CopyToBuffer(const void *video, void *dst, int width, in
|
||||
/* Copy the anim-buffer */
|
||||
memcpy(udst, anim_line, width * sizeof(uint16));
|
||||
udst = (uint32 *)((uint16 *)udst + width);
|
||||
anim_line += this->anim_buf_width;
|
||||
anim_line += this->anim_buf_pitch;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -417,8 +423,8 @@ void Blitter_32bppAnim::ScrollBuffer(void *video, int &left, int &top, int &widt
|
||||
|
||||
/* We need to scroll the anim-buffer too */
|
||||
if (scroll_y > 0) {
|
||||
dst = this->anim_buf + left + (top + height - 1) * this->anim_buf_width;
|
||||
src = dst - scroll_y * this->anim_buf_width;
|
||||
dst = this->anim_buf + left + (top + height - 1) * this->anim_buf_pitch;
|
||||
src = dst - scroll_y * this->anim_buf_pitch;
|
||||
|
||||
/* Adjust left & width */
|
||||
if (scroll_x >= 0) {
|
||||
@@ -431,13 +437,13 @@ void Blitter_32bppAnim::ScrollBuffer(void *video, int &left, int &top, int &widt
|
||||
uint th = height - scroll_y;
|
||||
for (; th > 0; th--) {
|
||||
memcpy(dst, src, tw * sizeof(uint16));
|
||||
src -= this->anim_buf_width;
|
||||
dst -= this->anim_buf_width;
|
||||
src -= this->anim_buf_pitch;
|
||||
dst -= this->anim_buf_pitch;
|
||||
}
|
||||
} else {
|
||||
/* Calculate pointers */
|
||||
dst = this->anim_buf + left + top * this->anim_buf_width;
|
||||
src = dst - scroll_y * this->anim_buf_width;
|
||||
dst = this->anim_buf + left + top * this->anim_buf_pitch;
|
||||
src = dst - scroll_y * this->anim_buf_pitch;
|
||||
|
||||
/* Adjust left & width */
|
||||
if (scroll_x >= 0) {
|
||||
@@ -452,8 +458,8 @@ void Blitter_32bppAnim::ScrollBuffer(void *video, int &left, int &top, int &widt
|
||||
uint th = height + scroll_y;
|
||||
for (; th > 0; th--) {
|
||||
memmove(dst, src, tw * sizeof(uint16));
|
||||
src += this->anim_buf_width;
|
||||
dst += this->anim_buf_width;
|
||||
src += this->anim_buf_pitch;
|
||||
dst += this->anim_buf_pitch;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -490,6 +496,7 @@ void Blitter_32bppAnim::PaletteAnimate(const Palette &palette)
|
||||
anim++;
|
||||
}
|
||||
dst += _screen.pitch - this->anim_buf_width;
|
||||
anim += this->anim_buf_pitch - this->anim_buf_width;
|
||||
}
|
||||
|
||||
/* Make sure the backend redraws the whole screen */
|
||||
@@ -503,11 +510,13 @@ Blitter::PaletteAnimation Blitter_32bppAnim::UsePaletteAnimation()
|
||||
|
||||
void Blitter_32bppAnim::PostResize()
|
||||
{
|
||||
if (_screen.width != this->anim_buf_width || _screen.height != this->anim_buf_height) {
|
||||
if (_screen.width != this->anim_buf_width || _screen.height != this->anim_buf_height ||
|
||||
_screen.pitch != this->anim_buf_pitch) {
|
||||
/* The size of the screen changed; we can assume we can wipe all data from our buffer */
|
||||
free(this->anim_buf);
|
||||
this->anim_buf = CallocT<uint16>(_screen.width * _screen.height);
|
||||
this->anim_buf_width = _screen.width;
|
||||
this->anim_buf_height = _screen.height;
|
||||
this->anim_buf_pitch = _screen.pitch;
|
||||
this->anim_buf = CallocT<uint16>(this->anim_buf_height * this->anim_buf_pitch);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,14 +20,20 @@ protected:
|
||||
uint16 *anim_buf; ///< In this buffer we keep track of the 8bpp indexes so we can do palette animation
|
||||
int anim_buf_width; ///< The width of the animation buffer.
|
||||
int anim_buf_height; ///< The height of the animation buffer.
|
||||
int anim_buf_pitch; ///< The pitch of the animation buffer.
|
||||
Palette palette; ///< The current palette.
|
||||
|
||||
public:
|
||||
Blitter_32bppAnim() :
|
||||
anim_buf(NULL),
|
||||
anim_buf_width(0),
|
||||
anim_buf_height(0)
|
||||
{}
|
||||
anim_buf_height(0),
|
||||
anim_buf_pitch(0)
|
||||
{
|
||||
this->palette = _cur_palette;
|
||||
}
|
||||
|
||||
~Blitter_32bppAnim();
|
||||
|
||||
/* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
|
||||
/* virtual */ void DrawColourMappingRect(void *dst, int width, int height, PaletteID pal);
|
||||
|
||||
@@ -35,7 +35,8 @@ inline void Blitter_32bppSSE4_Anim::Draw(const Blitter::BlitterParams *bp, ZoomL
|
||||
{
|
||||
const byte * const remap = bp->remap;
|
||||
Colour *dst_line = (Colour *) bp->dst + bp->top * bp->pitch + bp->left;
|
||||
uint16 *anim_line = this->anim_buf + ((uint32 *)bp->dst - (uint32 *)_screen.dst_ptr) + bp->top * this->anim_buf_width + bp->left;
|
||||
assert(_screen.pitch == this->anim_buf_pitch); // precondition for translating 'bp->dst' into an 'anim_buf' offset below.
|
||||
uint16 *anim_line = this->anim_buf + ((uint32 *)bp->dst - (uint32 *)_screen.dst_ptr) + bp->top * this->anim_buf_pitch + bp->left;
|
||||
int effective_width = bp->width;
|
||||
|
||||
/* Find where to start reading in the source sprite. */
|
||||
@@ -353,7 +354,7 @@ next_line:
|
||||
if (mode != BM_TRANSPARENT) src_mv_line += si->sprite_width;
|
||||
src_rgba_line = (const Colour*) ((const byte*) src_rgba_line + si->sprite_line_size);
|
||||
dst_line += bp->pitch;
|
||||
anim_line += this->anim_buf_width;
|
||||
anim_line += this->anim_buf_pitch;
|
||||
}
|
||||
}
|
||||
IGNORE_UNINITIALIZED_WARNING_STOP
|
||||
|
||||
@@ -48,7 +48,7 @@ void Blitter_8bppSimple::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Zoom
|
||||
break;
|
||||
|
||||
case BM_BLACK_REMAP:
|
||||
colour = 0;
|
||||
if (*src != 0) *dst = 0;
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
@@ -199,6 +199,7 @@ public:
|
||||
sprite_dim.height++; // Sprite is rendered one pixel down in the matrix field.
|
||||
text_dim.height++; // Allowing the bottom row pixels to be rendered on the edge of the matrix field.
|
||||
resize->height = max(sprite_dim.height, text_dim.height) + 2; // Max of both sizes + account for matrix edges.
|
||||
resize->height = GetMinSizing(NWST_STEP, resize->height);
|
||||
|
||||
this->bridgetext_offset = WD_MATRIX_LEFT + sprite_dim.width + 1; // Left edge of text, 1 pixel distance from the sprite.
|
||||
size->width = this->bridgetext_offset + text_dim.width + WD_MATRIX_RIGHT;
|
||||
|
||||
27
src/build_confirmation_func.h
Normal file
27
src/build_confirmation_func.h
Normal file
@@ -0,0 +1,27 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file build_confirmation_func.h Transparent confirmation dialog for building anything on the map. */
|
||||
|
||||
#ifndef BUILD_CONFIRMATION_FUNC_H
|
||||
#define BUILD_CONFIRMATION_FUNC_H
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "window_func.h"
|
||||
#include "widget_type.h"
|
||||
|
||||
|
||||
void ShowBuildConfirmationWindow();
|
||||
void HideBuildConfirmationWindow();
|
||||
bool ConfirmationWindowShown();
|
||||
bool BuildConfirmationWindowProcessViewportClick();
|
||||
bool ConfirmationWindowEstimatingCost();
|
||||
void ConfirmationWindowSetEstimatedCost(Money cost);
|
||||
|
||||
#endif /* BUILD_CONFIRMATION_FUNC_H */
|
||||
310
src/build_confirmation_gui.cpp
Normal file
310
src/build_confirmation_gui.cpp
Normal file
@@ -0,0 +1,310 @@
|
||||
/* $Id$ */
|
||||
|
||||
/*
|
||||
* This file is part of OpenTTD.
|
||||
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
|
||||
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/** @file build_confirmation_gui.cpp Transparent confirmation dialog for building anything on the map. */
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "string_func.h"
|
||||
#include "strings_func.h"
|
||||
#include "window_func.h"
|
||||
#include "widget_type.h"
|
||||
#include "window_gui.h"
|
||||
#include "gfx_func.h"
|
||||
#include "tilehighlight_func.h"
|
||||
#include "viewport_func.h"
|
||||
#include "zoom_func.h"
|
||||
#include "settings_type.h"
|
||||
#include "station_gui.h"
|
||||
#include "error.h"
|
||||
#include "build_confirmation_func.h"
|
||||
#include "widgets/build_confirmation_widget.h"
|
||||
#include "widgets/misc_widget.h"
|
||||
|
||||
#include "table/strings.h"
|
||||
|
||||
#include "safeguards.h"
|
||||
|
||||
static const NWidgetPart _nested_build_info_widgets[] = {
|
||||
NWidget(WWT_PANEL, COLOUR_GREY, WID_TT_BACKGROUND), SetMinimalSize(200, 32), EndContainer(),
|
||||
};
|
||||
|
||||
static WindowDesc _build_info_desc(
|
||||
WDP_MANUAL, NULL, 0, 0, // Coordinates and sizes are not used,
|
||||
WC_TOOLTIPS, WC_NONE,
|
||||
WDF_NO_FOCUS,
|
||||
_nested_build_info_widgets, lengthof(_nested_build_info_widgets)
|
||||
);
|
||||
|
||||
/** Window for displaying accepted goods for a station. */
|
||||
struct BuildInfoWindow : public Window
|
||||
{
|
||||
StationCoverageType sct;
|
||||
bool station;
|
||||
static Money cost;
|
||||
|
||||
static void show()
|
||||
{
|
||||
bool station = _settings_client.gui.station_show_coverage; // Station info is inaccurate when station coverage area option is disabled
|
||||
StationCoverageType sct = SCT_ALL;
|
||||
if (FindWindowByClass(WC_BUILD_STATION) != NULL) sct = SCT_ALL;
|
||||
else if (FindWindowByClass(WC_BUS_STATION) != NULL) sct = SCT_PASSENGERS_ONLY;
|
||||
else if (FindWindowByClass(WC_TRUCK_STATION) != NULL) sct = SCT_NON_PASSENGERS_ONLY;
|
||||
else station = false;
|
||||
new BuildInfoWindow(station, sct);
|
||||
}
|
||||
|
||||
BuildInfoWindow(bool station, StationCoverageType sct) : Window(&_build_info_desc)
|
||||
{
|
||||
this->station = station;
|
||||
this->sct = sct;
|
||||
this->InitNested();
|
||||
|
||||
CLRBITS(this->flags, WF_WHITE_BORDER);
|
||||
}
|
||||
|
||||
virtual Point OnInitialPosition(int16 sm_width, int16 sm_height, int window_number)
|
||||
{
|
||||
Point pt;
|
||||
pt.y = GetMainViewTop();
|
||||
pt.x = _screen.width - sm_width - FindWindowById(WC_MAIN_TOOLBAR, 0)->width;
|
||||
return pt;
|
||||
}
|
||||
|
||||
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
|
||||
{
|
||||
size->width = GetStringBoundingBox(STR_STATION_BUILD_COVERAGE_AREA_TITLE).width * 2.5;
|
||||
size->height = GetStringHeight(STR_STATION_BUILD_COVERAGE_AREA_TITLE, size->width) * (this->station ? 3 : 1);
|
||||
|
||||
/* Increase slightly to have some space around the box. */
|
||||
size->width += 2 + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT;
|
||||
size->height += 2 + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
|
||||
}
|
||||
|
||||
virtual void DrawWidget(const Rect &r, int widget) const
|
||||
{
|
||||
/* There is only one widget. */
|
||||
GfxFillRect(r.left, r.top, r.right, r.bottom, PC_BLACK);
|
||||
GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, PC_LIGHT_YELLOW);
|
||||
|
||||
int top = r.top + WD_FRAMERECT_TOP;
|
||||
Money cost = BuildInfoWindow::cost;
|
||||
StringID msg = STR_MESSAGE_ESTIMATED_COST;
|
||||
SetDParam(0, cost);
|
||||
if (cost < 0) {
|
||||
msg = STR_MESSAGE_ESTIMATED_INCOME;
|
||||
SetDParam(0, -cost);
|
||||
}
|
||||
top = DrawStringMultiLine(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, top, INT32_MAX, msg);
|
||||
|
||||
if (!this->station) return;
|
||||
|
||||
top = DrawStationCoverageAreaText(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, top, sct, _thd.outersize.x / TILE_SIZE / 2, false);
|
||||
if (top - r.top <= GetStringHeight(STR_STATION_BUILD_COVERAGE_AREA_TITLE, r.right - r.left) * 1.5) {
|
||||
DrawStationCoverageAreaText(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, top, sct, _thd.outersize.x / TILE_SIZE / 2, true);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Money BuildInfoWindow::cost = 0;
|
||||
|
||||
/** GUI for confirming building actions. */
|
||||
struct BuildConfirmationWindow : Window {
|
||||
|
||||
// TODO: show estimated price
|
||||
static bool shown; ///< Just to speed up window hiding, HideBuildConfirmationWindow() is called very often.
|
||||
static bool estimating_cost; ///< Calculate action cost instead of executing action.
|
||||
Point selstart; ///< The selection start on the viewport.
|
||||
Point selend; ///< The selection end on the viewport.
|
||||
|
||||
BuildConfirmationWindow(WindowDesc *desc) : Window(desc)
|
||||
{
|
||||
// Save tile selection points, they will be reset by subsequent code, and we must keep them
|
||||
selstart = _thd.selstart;
|
||||
selend = _thd.selend;
|
||||
|
||||
this->InitNested(0);
|
||||
|
||||
Point pt;
|
||||
const Window *w = FindWindowById(WC_MAIN_WINDOW, 0);
|
||||
NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(WID_BC_OK);
|
||||
|
||||
pt.x = w->viewport->scrollpos_x + ScaleByZoom(_cursor.pos.x - nvp->current_x / 2, w->viewport->zoom);
|
||||
pt.y = w->viewport->scrollpos_y + ScaleByZoom(_cursor.pos.y - nvp->current_y / 4, w->viewport->zoom);
|
||||
|
||||
nvp->InitializeViewport(this, 0, w->viewport->zoom);
|
||||
nvp->disp_flags |= ND_SHADE_DIMMED;
|
||||
|
||||
this->viewport->scrollpos_x = pt.x;
|
||||
this->viewport->scrollpos_y = pt.y;
|
||||
this->viewport->dest_scrollpos_x = this->viewport->scrollpos_x;
|
||||
this->viewport->dest_scrollpos_y = this->viewport->scrollpos_y;
|
||||
|
||||
BuildConfirmationWindow::shown = true;
|
||||
BuildConfirmationWindow::estimating_cost = true;
|
||||
ConfirmationWindowSetEstimatedCost(0); // Clear old value, just in case
|
||||
// This is a hack - we invoke the build command with estimating_cost flag, which is equal to _shift_pressed,
|
||||
// then we select last build tool, restore viewport selection, and hide all windows, which pop up when command is invoked,
|
||||
// and all that just to get cost estimate value.
|
||||
ConfirmPlacingObject();
|
||||
ToolbarSelectLastTool();
|
||||
_thd.selstart = selstart;
|
||||
_thd.selend = selend;
|
||||
BuildConfirmationWindow::estimating_cost = false;
|
||||
MoveAllWindowsOffScreen();
|
||||
}
|
||||
|
||||
~BuildConfirmationWindow()
|
||||
{
|
||||
BuildConfirmationWindow::shown = false;
|
||||
}
|
||||
|
||||
void OnClick(Point pt, int widget, int click_count)
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_BC_OK:
|
||||
if (pt.y <= (int)GetWidget<NWidgetViewport>(WID_BC_OK)->current_y / 2) {
|
||||
_thd.selstart = selstart;
|
||||
_thd.selend = selend;
|
||||
ConfirmPlacingObject();
|
||||
ToolbarSelectLastTool();
|
||||
} else {
|
||||
ResetObjectToPlace();
|
||||
DeleteWindowByClass(WC_BUILD_BRIDGE);
|
||||
//ClearErrorMessages();
|
||||
Window *w = FindWindowById(WC_ERRMSG, 0);
|
||||
if (w != NULL) delete w;
|
||||
}
|
||||
break;
|
||||
}
|
||||
HideBuildConfirmationWindow(); // this == NULL after this call
|
||||
}
|
||||
|
||||
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
|
||||
{
|
||||
switch (widget) {
|
||||
case WID_BC_OK:
|
||||
size->width = GetMinSizing(NWST_BUTTON) * 2;
|
||||
size->height = GetMinSizing(NWST_BUTTON) * 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
virtual void OnPaint()
|
||||
{
|
||||
this->DrawWidgets();
|
||||
|
||||
DrawButtonFrame(0, 0, this->width - 1, this->height / 2 - 2, STR_BUTTON_OK);
|
||||
DrawButtonFrame(0, this->height / 2, this->width - 1, this->height / 2 - 1, STR_BUTTON_CANCEL);
|
||||
}
|
||||
|
||||
void DrawButtonFrame(int x, int y, int w, int h, int str)
|
||||
{
|
||||
DrawFrameRect(x, y, x + w, y + h, COLOUR_GREY, FR_BORDERONLY);
|
||||
Dimension d = GetStringBoundingBox(str);
|
||||
DrawFrameRect(x + w / 2 - d.width / 2 - 1,
|
||||
Center(y, h) - 2,
|
||||
x + w / 2 + d.width / 2 + 1,
|
||||
Center(y, h) + d.height,
|
||||
COLOUR_GREY, FR_NONE);
|
||||
DrawString(x, x + w, Center(y, h), str, TC_FROMSTRING, SA_HOR_CENTER);
|
||||
}
|
||||
};
|
||||
|
||||
bool BuildConfirmationWindow::shown = false;
|
||||
bool BuildConfirmationWindow::estimating_cost = false;
|
||||
|
||||
static const NWidgetPart _nested_build_confirmation_widgets[] = {
|
||||
NWidget(WWT_PANEL, COLOUR_GREY, WID_BC_PANEL),
|
||||
NWidget(NWID_VIEWPORT, INVALID_COLOUR, WID_BC_OK), SetSizingType(NWST_VIEWPORT), SetResize(1, 1), SetFill(1, 1), //SetPadding(2, 2, 2, 2),
|
||||
EndContainer(),
|
||||
};
|
||||
|
||||
static WindowDesc _build_confirmation_desc(
|
||||
WDP_MANUAL, "build_confirmation", 0, 0,
|
||||
WC_BUILD_CONFIRMATION, WC_NONE,
|
||||
0,
|
||||
_nested_build_confirmation_widgets, lengthof(_nested_build_confirmation_widgets)
|
||||
);
|
||||
|
||||
/**
|
||||
* Show build confirmation window under the mouse cursor
|
||||
*/
|
||||
void ShowBuildConfirmationWindow()
|
||||
{
|
||||
if (ConfirmationWindowEstimatingCost()) return; // Special case, ignore recursive call
|
||||
|
||||
HideBuildConfirmationWindow();
|
||||
|
||||
if (!_settings_client.gui.build_confirmation || _shift_pressed) {
|
||||
ConfirmPlacingObject();
|
||||
return;
|
||||
}
|
||||
|
||||
BuildConfirmationWindow *w = new BuildConfirmationWindow(&_build_confirmation_desc);
|
||||
|
||||
int old_left = w->left;
|
||||
int old_top = w->top;
|
||||
w->left = _cursor.pos.x - w->width / 2;
|
||||
w->top = _cursor.pos.y - w->height / 4;
|
||||
w->viewport->left += w->left - old_left;
|
||||
w->viewport->top += w->top - old_top;
|
||||
w->SetDirty();
|
||||
SetDirtyBlocks(0, 0, _screen.width, _screen.height); // I don't know what does this do, but it looks important
|
||||
|
||||
BuildInfoWindow::show();
|
||||
}
|
||||
|
||||
/**
|
||||
* Destroy build confirmation window, this does not cancel current action
|
||||
*/
|
||||
void HideBuildConfirmationWindow()
|
||||
{
|
||||
if (ConfirmationWindowEstimatingCost()) return; // Special case, ignore recursive call
|
||||
|
||||
if (!BuildConfirmationWindow::shown) return;
|
||||
|
||||
DeleteWindowById(WC_BUILD_CONFIRMATION, 0);
|
||||
DeleteWindowById(WC_TOOLTIPS, 0);
|
||||
}
|
||||
|
||||
bool ConfirmationWindowShown()
|
||||
{
|
||||
return BuildConfirmationWindow::shown;
|
||||
}
|
||||
|
||||
bool BuildConfirmationWindowProcessViewportClick()
|
||||
{
|
||||
if (!BuildConfirmationWindow::shown) return false;
|
||||
Window *w = FindWindowById(WC_BUILD_CONFIRMATION, 0);
|
||||
if (w != NULL && IsInsideBS(_cursor.pos.x, w->left, w->width) && IsInsideBS(_cursor.pos.y, w->top, w->height)) {
|
||||
if (_settings_client.gui.windows_titlebars || !_left_button_down) {
|
||||
Point pt;
|
||||
pt.x = _cursor.pos.x - w->left;
|
||||
pt.y = _cursor.pos.y - w->top;
|
||||
w->OnClick(pt, WID_BC_OK, 1);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
HideBuildConfirmationWindow();
|
||||
|
||||
_thd.new_outersize = _thd.outersize; // Revert station catchment area highlight, which is getting set to zero inside drawing funcs
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool ConfirmationWindowEstimatingCost()
|
||||
{
|
||||
return BuildConfirmationWindow::estimating_cost;
|
||||
}
|
||||
|
||||
void ConfirmationWindowSetEstimatedCost(Money cost)
|
||||
{
|
||||
BuildInfoWindow::cost = cost;
|
||||
}
|
||||
@@ -60,14 +60,23 @@ static const NWidgetPart _nested_build_vehicle_widgets[] = {
|
||||
EndContainer(),
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(NWID_VERTICAL),
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_BV_SORT_ASCENDING_DESCENDING), SetSizingType(NWST_STEP), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER),
|
||||
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_BV_SORT_DROPDOWN), SetSizingType(NWST_STEP), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_SORT_CRITERIA),
|
||||
NWidget(WWT_PANEL, COLOUR_GREY),
|
||||
NWidget(NWID_VERTICAL),
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_BV_SORT_ASCENDING_DESCENDING), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER), SetSizingType(NWST_STEP),
|
||||
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_BV_SORT_DROPDOWN), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_SORT_CRITERIA), SetSizingType(NWST_STEP),
|
||||
EndContainer(),
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BV_SHOW_HIDDEN_ENGINES), SetSizingType(NWST_STEP),
|
||||
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_BV_CARGO_FILTER_DROPDOWN), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_FILTER_CRITERIA), SetSizingType(NWST_STEP),
|
||||
EndContainer(),
|
||||
NWidget(NWID_SPACER), SetFill(1, 1),
|
||||
EndContainer(),
|
||||
EndContainer(),
|
||||
/* Vehicle list. */
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BV_SHOW_HIDDEN_ENGINES),
|
||||
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_BV_CARGO_FILTER_DROPDOWN), SetSizingType(NWST_STEP), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_FILTER_CRITERIA),
|
||||
NWidget(WWT_MATRIX, COLOUR_GREY, WID_BV_LIST), SetResize(1, 1), SetFill(1, 0), SetMatrixDataTip(1, 0, STR_NULL), SetScrollbar(WID_BV_SCROLLBAR),
|
||||
NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_BV_SCROLLBAR),
|
||||
EndContainer(),
|
||||
EndContainer(),
|
||||
/* Panel with details. */
|
||||
|
||||
@@ -56,7 +56,7 @@ void DrawHillyLandTile(const TileInfo *ti)
|
||||
if (ti->tileh != SLOPE_FLAT) {
|
||||
DrawGroundSprite(SPR_FLAT_ROUGH_LAND + SlopeToSpriteOffset(ti->tileh), PAL_NONE);
|
||||
} else {
|
||||
DrawGroundSprite(_landscape_clear_sprites_rough[GB(ti->x ^ ti->y, 4, 3)], PAL_NONE);
|
||||
DrawGroundSprite(_landscape_clear_sprites_rough[GB(TileHash(ti->x, ti->y), 0, 3)], PAL_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "object_base.h"
|
||||
#include "string_func.h"
|
||||
#include "tilehighlight_func.h"
|
||||
#include "build_confirmation_func.h"
|
||||
|
||||
#include "table/strings.h"
|
||||
|
||||
@@ -553,11 +554,18 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallbac
|
||||
* However, in case of incoming network commands,
|
||||
* map generation or the pause button we do want
|
||||
* to execute. */
|
||||
bool estimate_only = _shift_pressed && IsLocalCompany() &&
|
||||
bool estimate_only = (_shift_pressed || ConfirmationWindowEstimatingCost()) &&
|
||||
IsLocalCompany() &&
|
||||
!_generating_world &&
|
||||
!(cmd & CMD_NETWORK_COMMAND) &&
|
||||
(cmd & CMD_ID_MASK) != CMD_PAUSE;
|
||||
|
||||
if (ConfirmationWindowEstimatingCost() && !estimate_only) {
|
||||
// We cannot estimate cost, so abort the command - it will be repeated by confirmation dialog later
|
||||
ShowEstimatedCostOrIncome(0, 0, 0);
|
||||
return false;
|
||||
}
|
||||
|
||||
/* We're only sending the command, so don't do
|
||||
* fancy things for 'success'. */
|
||||
bool only_sending = _networking && !(cmd & CMD_NETWORK_COMMAND);
|
||||
|
||||
@@ -81,7 +81,7 @@ CommandCallback CcBuildBridge;
|
||||
|
||||
/* dock_gui.cpp */
|
||||
CommandCallback CcBuildDocks;
|
||||
CommandCallback CcBuildCanal;
|
||||
CommandCallback CcPlaySound_SPLAT_WATER;
|
||||
|
||||
/* depot_gui.cpp */
|
||||
CommandCallback CcCloneVehicle;
|
||||
@@ -97,19 +97,19 @@ CommandCallback CcAddVehicleNewGroup;
|
||||
CommandCallback CcBuildIndustry;
|
||||
|
||||
/* main_gui.cpp */
|
||||
CommandCallback CcPlaySound10;
|
||||
CommandCallback CcPlaySound_EXPLOSION;
|
||||
CommandCallback CcPlaceSign;
|
||||
CommandCallback CcTerraform;
|
||||
CommandCallback CcGiveMoney;
|
||||
|
||||
/* rail_gui.cpp */
|
||||
CommandCallback CcPlaySound1E;
|
||||
CommandCallback CcPlaySound_SPLAT_RAIL;
|
||||
CommandCallback CcRailDepot;
|
||||
CommandCallback CcStation;
|
||||
CommandCallback CcBuildRailTunnel;
|
||||
|
||||
/* road_gui.cpp */
|
||||
CommandCallback CcPlaySound1D;
|
||||
CommandCallback CcPlaySound_SPLAT_OTHER;
|
||||
CommandCallback CcBuildRoadTunnel;
|
||||
CommandCallback CcRoadDepot;
|
||||
CommandCallback CcRoadStop;
|
||||
|
||||
@@ -52,10 +52,10 @@ extern CompanyPool _company_pool;
|
||||
/** Statically loadable part of Company pool item */
|
||||
struct CompanyProperties {
|
||||
uint32 name_2; ///< Parameter of #name_1.
|
||||
uint16 name_1; ///< Name of the company if the user did not change it.
|
||||
StringID name_1; ///< Name of the company if the user did not change it.
|
||||
char *name; ///< Name of the company if the user changed it.
|
||||
|
||||
uint16 president_name_1; ///< Name of the president if the user did not change it.
|
||||
StringID president_name_1; ///< Name of the president if the user did not change it.
|
||||
uint32 president_name_2; ///< Parameter of #president_name_1
|
||||
char *president_name; ///< Name of the president if the user changed it.
|
||||
|
||||
|
||||
@@ -219,7 +219,7 @@ static const NWidgetPart _nested_company_finances_widgets[] = {
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(WWT_CLOSEBOX, COLOUR_GREY),
|
||||
NWidget(WWT_CAPTION, COLOUR_GREY, WID_CF_CAPTION), SetDataTip(STR_FINANCES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
|
||||
NWidget(WWT_IMGBTN, COLOUR_GREY, WID_CF_TOGGLE_SIZE), SetDataTip(SPR_LARGE_SMALL_WINDOW, STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW),
|
||||
//NWidget(WWT_IMGBTN, COLOUR_GREY, WID_CF_TOGGLE_SIZE), SetDataTip(SPR_LARGE_SMALL_WINDOW, STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW),
|
||||
NWidget(WWT_SHADEBOX, COLOUR_GREY),
|
||||
NWidget(WWT_STICKYBOX, COLOUR_GREY),
|
||||
EndContainer(),
|
||||
@@ -908,7 +908,7 @@ static const NWidgetPart _nested_select_company_manager_face_widgets[] = {
|
||||
NWidget(NWID_HORIZONTAL),
|
||||
NWidget(WWT_CLOSEBOX, COLOUR_GREY),
|
||||
NWidget(WWT_CAPTION, COLOUR_GREY, WID_SCMF_CAPTION), SetDataTip(STR_FACE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
|
||||
NWidget(WWT_IMGBTN, COLOUR_GREY, WID_SCMF_TOGGLE_LARGE_SMALL), SetDataTip(SPR_LARGE_SMALL_WINDOW, STR_FACE_ADVANCED_TOOLTIP),
|
||||
//NWidget(WWT_IMGBTN, COLOUR_GREY, WID_SCMF_TOGGLE_LARGE_SMALL), SetDataTip(SPR_LARGE_SMALL_WINDOW, STR_FACE_ADVANCED_TOOLTIP),
|
||||
EndContainer(),
|
||||
NWidget(WWT_PANEL, COLOUR_GREY, WID_SCMF_SELECT_FACE),
|
||||
NWidget(NWID_SPACER), SetMinimalSize(0, 2),
|
||||
|
||||
@@ -434,7 +434,10 @@ void IConsoleCmdExec(const char *cmdstr)
|
||||
* 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;
|
||||
if (tstream_i >= lengthof(tokenstream)) {
|
||||
IConsoleError("command line too long");
|
||||
return;
|
||||
}
|
||||
|
||||
switch (*cmdptr) {
|
||||
case ' ': // Token separator
|
||||
@@ -452,6 +455,10 @@ void IConsoleCmdExec(const char *cmdstr)
|
||||
case '"': // Tokens enclosed in "" are one token
|
||||
longtoken = !longtoken;
|
||||
if (!foundtoken) {
|
||||
if (t_index >= lengthof(tokens)) {
|
||||
IConsoleError("command line too long");
|
||||
return;
|
||||
}
|
||||
tokens[t_index++] = &tokenstream[tstream_i];
|
||||
foundtoken = true;
|
||||
}
|
||||
@@ -466,6 +473,10 @@ void IConsoleCmdExec(const char *cmdstr)
|
||||
tokenstream[tstream_i++] = *cmdptr;
|
||||
|
||||
if (!foundtoken) {
|
||||
if (t_index >= lengthof(tokens)) {
|
||||
IConsoleError("command line too long");
|
||||
return;
|
||||
}
|
||||
tokens[t_index++] = &tokenstream[tstream_i - 1];
|
||||
foundtoken = true;
|
||||
}
|
||||
@@ -473,7 +484,7 @@ void IConsoleCmdExec(const char *cmdstr)
|
||||
}
|
||||
}
|
||||
|
||||
for (uint i = 0; tokens[i] != NULL; i++) {
|
||||
for (uint i = 0; i < lengthof(tokens) && tokens[i] != NULL; i++) {
|
||||
DEBUG(console, 8, "Token %d is: '%s'", i, tokens[i]);
|
||||
}
|
||||
|
||||
|
||||
@@ -45,6 +45,38 @@
|
||||
/* scriptfile handling */
|
||||
static bool _script_running; ///< Script is running (used to abort execution when #ConReturn is encountered).
|
||||
|
||||
/** File list storage for the console, for caching the last 'ls' command. */
|
||||
class ConsoleFileList : public FileList {
|
||||
public:
|
||||
ConsoleFileList() : FileList()
|
||||
{
|
||||
this->file_list_valid = false;
|
||||
}
|
||||
|
||||
/** Declare the file storage cache as being invalid, also clears all stored files. */
|
||||
void InvalidateFileList()
|
||||
{
|
||||
this->Clear();
|
||||
this->file_list_valid = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* (Re-)validate the file storage cache. Only makes a change if the storage was invalid, or if \a force_reload.
|
||||
* @param Always reload the file storage cache.
|
||||
*/
|
||||
void ValidateFileList(bool force_reload = false)
|
||||
{
|
||||
if (force_reload || !this->file_list_valid) {
|
||||
this->BuildFileList(FT_SAVEGAME, SLO_LOAD);
|
||||
this->file_list_valid = true;
|
||||
}
|
||||
}
|
||||
|
||||
bool file_list_valid; ///< If set, the file list is valid.
|
||||
};
|
||||
|
||||
static ConsoleFileList _console_file_list; ///< File storage cache for the console.
|
||||
|
||||
/* console command defines */
|
||||
#define DEF_CONSOLE_CMD(function) static bool function(byte argc, char *argv[])
|
||||
#define DEF_CONSOLE_HOOK(function) static ConsoleHookResult function(bool echo)
|
||||
@@ -286,7 +318,7 @@ DEF_CONSOLE_CMD(ConSave)
|
||||
char *filename = str_fmt("%s.sav", argv[1]);
|
||||
IConsolePrint(CC_DEFAULT, "Saving map...");
|
||||
|
||||
if (SaveOrLoad(filename, SL_SAVE, SAVE_DIR) != SL_OK) {
|
||||
if (SaveOrLoad(filename, SLO_SAVE, DFT_GAME_FILE, SAVE_DIR) != SL_OK) {
|
||||
IConsolePrint(CC_ERROR, "Saving map failed");
|
||||
} else {
|
||||
IConsolePrintF(CC_DEFAULT, "Map successfully saved to %s", filename);
|
||||
@@ -315,42 +347,6 @@ DEF_CONSOLE_CMD(ConSaveConfig)
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get savegame file informations.
|
||||
* @param file The savegame filename to return information about. Can be the actual name
|
||||
* or a numbered entry into the filename list.
|
||||
* @return FiosItem The information on the file.
|
||||
*/
|
||||
static const FiosItem *GetFiosItem(const char *file)
|
||||
{
|
||||
_saveload_mode = SLD_LOAD_GAME;
|
||||
BuildFileList();
|
||||
|
||||
for (const FiosItem *item = _fios_items.Begin(); item != _fios_items.End(); item++) {
|
||||
if (strcmp(file, item->name) == 0) return item;
|
||||
if (strcmp(file, item->title) == 0) return item;
|
||||
}
|
||||
|
||||
/* If no name matches, try to parse it as number */
|
||||
char *endptr;
|
||||
int i = strtol(file, &endptr, 10);
|
||||
if (file == endptr || *endptr != '\0') i = -1;
|
||||
|
||||
if (IsInsideMM(i, 0, _fios_items.Length())) return _fios_items.Get(i);
|
||||
|
||||
/* As a last effort assume it is an OpenTTD savegame and
|
||||
* that the ".sav" part was not given. */
|
||||
char long_file[MAX_PATH];
|
||||
seprintf(long_file, lastof(long_file), "%s.sav", file);
|
||||
for (const FiosItem *item = _fios_items.Begin(); item != _fios_items.End(); item++) {
|
||||
if (strcmp(long_file, item->name) == 0) return item;
|
||||
if (strcmp(long_file, item->title) == 0) return item;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
DEF_CONSOLE_CMD(ConLoad)
|
||||
{
|
||||
if (argc == 0) {
|
||||
@@ -361,24 +357,21 @@ DEF_CONSOLE_CMD(ConLoad)
|
||||
if (argc != 2) return false;
|
||||
|
||||
const char *file = argv[1];
|
||||
const FiosItem *item = GetFiosItem(file);
|
||||
_console_file_list.ValidateFileList();
|
||||
const FiosItem *item = _console_file_list.FindItem(file);
|
||||
if (item != NULL) {
|
||||
switch (item->type) {
|
||||
case FIOS_TYPE_FILE: case FIOS_TYPE_OLDFILE: {
|
||||
_switch_mode = SM_LOAD_GAME;
|
||||
SetFiosType(item->type);
|
||||
|
||||
strecpy(_file_to_saveload.name, FiosBrowseTo(item), lastof(_file_to_saveload.name));
|
||||
strecpy(_file_to_saveload.title, item->title, lastof(_file_to_saveload.title));
|
||||
break;
|
||||
}
|
||||
default: IConsolePrintF(CC_ERROR, "%s: Not a savegame.", file);
|
||||
if (GetAbstractFileType(item->type) == FT_SAVEGAME) {
|
||||
_switch_mode = SM_LOAD_GAME;
|
||||
_file_to_saveload.SetMode(item->type);
|
||||
_file_to_saveload.SetName(FiosBrowseTo(item));
|
||||
_file_to_saveload.SetTitle(item->title);
|
||||
} else {
|
||||
IConsolePrintF(CC_ERROR, "%s: Not a savegame.", file);
|
||||
}
|
||||
} else {
|
||||
IConsolePrintF(CC_ERROR, "%s: No such file or directory.", file);
|
||||
}
|
||||
|
||||
FiosFreeSavegameList();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -393,7 +386,8 @@ DEF_CONSOLE_CMD(ConRemove)
|
||||
if (argc != 2) return false;
|
||||
|
||||
const char *file = argv[1];
|
||||
const FiosItem *item = GetFiosItem(file);
|
||||
_console_file_list.ValidateFileList();
|
||||
const FiosItem *item = _console_file_list.FindItem(file);
|
||||
if (item != NULL) {
|
||||
if (!FiosDelete(item->name)) {
|
||||
IConsolePrintF(CC_ERROR, "%s: Failed to delete file", file);
|
||||
@@ -402,7 +396,7 @@ DEF_CONSOLE_CMD(ConRemove)
|
||||
IConsolePrintF(CC_ERROR, "%s: No such file or directory.", file);
|
||||
}
|
||||
|
||||
FiosFreeSavegameList();
|
||||
_console_file_list.InvalidateFileList();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -415,13 +409,11 @@ DEF_CONSOLE_CMD(ConListFiles)
|
||||
return true;
|
||||
}
|
||||
|
||||
BuildFileList();
|
||||
|
||||
for (uint i = 0; i < _fios_items.Length(); i++) {
|
||||
IConsolePrintF(CC_DEFAULT, "%d) %s", i, _fios_items[i].title);
|
||||
_console_file_list.ValidateFileList(true);
|
||||
for (uint i = 0; i < _console_file_list.Length(); i++) {
|
||||
IConsolePrintF(CC_DEFAULT, "%d) %s", i, _console_file_list[i].title);
|
||||
}
|
||||
|
||||
FiosFreeSavegameList();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -450,7 +442,8 @@ DEF_CONSOLE_CMD(ConChangeDirectory)
|
||||
if (argc != 2) return false;
|
||||
|
||||
const char *file = argv[1];
|
||||
const FiosItem *item = GetFiosItem(file);
|
||||
_console_file_list.ValidateFileList(true);
|
||||
const FiosItem *item = _console_file_list.FindItem(file);
|
||||
if (item != NULL) {
|
||||
switch (item->type) {
|
||||
case FIOS_TYPE_DIR: case FIOS_TYPE_DRIVE: case FIOS_TYPE_PARENT:
|
||||
@@ -462,7 +455,7 @@ DEF_CONSOLE_CMD(ConChangeDirectory)
|
||||
IConsolePrintF(CC_ERROR, "%s: No such file or directory.", file);
|
||||
}
|
||||
|
||||
FiosFreeSavegameList();
|
||||
_console_file_list.InvalidateFileList();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -476,8 +469,8 @@ DEF_CONSOLE_CMD(ConPrintWorkingDirectory)
|
||||
}
|
||||
|
||||
/* XXX - Workaround for broken file handling */
|
||||
FiosGetSavegameList(SLD_LOAD_GAME);
|
||||
FiosFreeSavegameList();
|
||||
_console_file_list.ValidateFileList(true);
|
||||
_console_file_list.InvalidateFileList();
|
||||
|
||||
FiosGetDescText(&path, NULL);
|
||||
IConsolePrint(CC_DEFAULT, path);
|
||||
@@ -574,29 +567,36 @@ DEF_CONSOLE_CMD(ConBan)
|
||||
|
||||
DEF_CONSOLE_CMD(ConUnBan)
|
||||
{
|
||||
|
||||
if (argc == 0) {
|
||||
IConsoleHelp("Unban a client from a network game. Usage: 'unban <ip | client-id>'");
|
||||
IConsoleHelp("Unban a client from a network game. Usage: 'unban <ip | banlist-index>'");
|
||||
IConsoleHelp("For a list of banned IP's, see the command 'banlist'");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (argc != 2) return false;
|
||||
|
||||
uint index = (strchr(argv[1], '.') == NULL) ? atoi(argv[1]) : 0;
|
||||
index--;
|
||||
uint i = 0;
|
||||
|
||||
for (char **iter = _network_ban_list.Begin(); iter != _network_ban_list.End(); iter++, i++) {
|
||||
if (strcmp(_network_ban_list[i], argv[1]) == 0 || index == i) {
|
||||
free(_network_ban_list[i]);
|
||||
_network_ban_list.Erase(iter);
|
||||
IConsolePrint(CC_DEFAULT, "IP unbanned.");
|
||||
return true;
|
||||
}
|
||||
/* Try by IP. */
|
||||
uint index;
|
||||
for (index = 0; index < _network_ban_list.Length(); index++) {
|
||||
if (strcmp(_network_ban_list[index], argv[1]) == 0) break;
|
||||
}
|
||||
|
||||
/* Try by index. */
|
||||
if (index >= _network_ban_list.Length()) {
|
||||
index = atoi(argv[1]) - 1U; // let it wrap
|
||||
}
|
||||
|
||||
if (index < _network_ban_list.Length()) {
|
||||
char msg[64];
|
||||
seprintf(msg, lastof(msg), "Unbanned %s", _network_ban_list[index]);
|
||||
IConsolePrint(CC_DEFAULT, msg);
|
||||
free(_network_ban_list[index]);
|
||||
_network_ban_list.Erase(_network_ban_list.Get(index));
|
||||
} else {
|
||||
IConsolePrint(CC_DEFAULT, "Invalid list index or IP not in ban-list.");
|
||||
IConsolePrint(CC_DEFAULT, "For a list of banned IP's, see the command 'banlist'");
|
||||
}
|
||||
|
||||
IConsolePrint(CC_DEFAULT, "IP not in ban-list.");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -28,19 +28,6 @@
|
||||
}
|
||||
|
||||
|
||||
/** Some enums need to have cycling through values */
|
||||
#define DECLARE_CYCLE(type, min_val, max_val) \
|
||||
inline type CycleUp(type e) \
|
||||
{ \
|
||||
assert(!((int)e < min_val || (int)e > max_val)); \
|
||||
return e == max_val ? (type)min_val : (type)((int)e + 1); \
|
||||
} \
|
||||
inline type CycleDown(type e) \
|
||||
{ \
|
||||
assert(!((int)e < min_val || (int)e > max_val)); \
|
||||
return e == min_val ? (type)max_val : (type)((int)e - 1); \
|
||||
}
|
||||
|
||||
|
||||
/** Operators to allow to work with enum as with type safe bit set in C++ */
|
||||
# define DECLARE_ENUM_AS_BIT_SET(mask_t) \
|
||||
|
||||
@@ -256,6 +256,8 @@ public:
|
||||
|
||||
/**
|
||||
* Get the number of items in the list.
|
||||
*
|
||||
* @return The number of items in the list.
|
||||
*/
|
||||
inline uint Length() const
|
||||
{
|
||||
|
||||
@@ -36,6 +36,38 @@
|
||||
|
||||
#include <time.h>
|
||||
|
||||
#ifdef WITH_ALLEGRO
|
||||
# include <allegro.h>
|
||||
#endif /* WITH_ALLEGRO */
|
||||
#ifdef WITH_FONTCONFIG
|
||||
# include <fontconfig/fontconfig.h>
|
||||
#endif /* WITH_FONTCONFIG */
|
||||
#ifdef WITH_PNG
|
||||
/* pngconf.h, included by png.h doesn't like something in the
|
||||
* freetype headers. As such it's not alphabetically sorted. */
|
||||
# include <png.h>
|
||||
#endif /* WITH_PNG */
|
||||
#ifdef WITH_FREETYPE
|
||||
# include <ft2build.h>
|
||||
# include FT_FREETYPE_H
|
||||
#endif /* WITH_FREETYPE */
|
||||
#if defined(WITH_ICU_LAYOUT) || defined(WITH_ICU_SORT)
|
||||
# include <unicode/uversion.h>
|
||||
#endif /* WITH_ICU_SORT || WITH_ICU_LAYOUT */
|
||||
#ifdef WITH_LZMA
|
||||
# include <lzma.h>
|
||||
#endif
|
||||
#ifdef WITH_LZO
|
||||
#include <lzo/lzo1x.h>
|
||||
#endif
|
||||
#ifdef WITH_SDL
|
||||
# include "sdl.h"
|
||||
# include <SDL.h>
|
||||
#endif /* WITH_SDL */
|
||||
#ifdef WITH_ZLIB
|
||||
# include <zlib.h>
|
||||
#endif
|
||||
|
||||
#include "safeguards.h"
|
||||
|
||||
/* static */ const char *CrashLog::message = NULL;
|
||||
@@ -180,39 +212,6 @@ char *CrashLog::LogConfiguration(char *buffer, const char *last) const
|
||||
return buffer;
|
||||
}
|
||||
|
||||
/* Include these here so it's close to where it's actually used. */
|
||||
#ifdef WITH_ALLEGRO
|
||||
# include <allegro.h>
|
||||
#endif /* WITH_ALLEGRO */
|
||||
#ifdef WITH_FONTCONFIG
|
||||
# include <fontconfig/fontconfig.h>
|
||||
#endif /* WITH_FONTCONFIG */
|
||||
#ifdef WITH_PNG
|
||||
/* pngconf.h, included by png.h doesn't like something in the
|
||||
* freetype headers. As such it's not alphabetically sorted. */
|
||||
# include <png.h>
|
||||
#endif /* WITH_PNG */
|
||||
#ifdef WITH_FREETYPE
|
||||
# include <ft2build.h>
|
||||
# include FT_FREETYPE_H
|
||||
#endif /* WITH_FREETYPE */
|
||||
#if defined(WITH_ICU_LAYOUT) || defined(WITH_ICU_SORT)
|
||||
# include <unicode/uversion.h>
|
||||
#endif /* WITH_ICU_SORT || WITH_ICU_LAYOUT */
|
||||
#ifdef WITH_LZMA
|
||||
# include <lzma.h>
|
||||
#endif
|
||||
#ifdef WITH_LZO
|
||||
#include <lzo/lzo1x.h>
|
||||
#endif
|
||||
#ifdef WITH_SDL
|
||||
# include "sdl.h"
|
||||
# include <SDL.h>
|
||||
#endif /* WITH_SDL */
|
||||
#ifdef WITH_ZLIB
|
||||
# include <zlib.h>
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Writes information (versions) of the used libraries.
|
||||
* @param buffer The begin where to write at.
|
||||
@@ -389,7 +388,7 @@ bool CrashLog::WriteSavegame(char *filename, const char *filename_last) const
|
||||
seprintf(filename, filename_last, "%scrash.sav", _personal_dir);
|
||||
|
||||
/* Don't do a threaded saveload. */
|
||||
return SaveOrLoad(filename, SL_SAVE, NO_DIRECTORY, false) == SL_OK;
|
||||
return SaveOrLoad(filename, SLO_SAVE, DFT_GAME_FILE, NO_DIRECTORY, false) == SL_OK;
|
||||
} catch (...) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -507,15 +507,12 @@ struct DepotWindow : Window {
|
||||
this->sel = INVALID_VEHICLE;
|
||||
TrainDepotMoveVehicle(v, sel, gdvp.head);
|
||||
} else if (v != NULL) {
|
||||
bool rtl = _current_text_dir == TD_RTL;
|
||||
int image = v->GetImage(rtl ? DIR_E : DIR_W, EIT_IN_DEPOT);
|
||||
SetObjectToPlaceWnd(image, GetVehiclePalette(v), HT_DRAG, this);
|
||||
SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, HT_DRAG, this);
|
||||
SetMouseCursorVehicle(v, EIT_IN_DEPOT);
|
||||
_cursor.vehchain = _ctrl_pressed;
|
||||
|
||||
this->sel = v->index;
|
||||
this->SetDirty();
|
||||
|
||||
_cursor.short_vehicle_offset = v->IsGroundVehicle() ? (16 - v->GetGroundVehicleCache()->cached_veh_length * 2) * (rtl ? -1 : 1) : 0;
|
||||
_cursor.vehchain = _ctrl_pressed;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -666,7 +663,8 @@ struct DepotWindow : Window {
|
||||
DepotSortList(&this->vehicle_list);
|
||||
|
||||
uint new_unitnumber_digits = GetUnitNumberDigits(this->vehicle_list);
|
||||
if (this->unitnumber_digits != new_unitnumber_digits) {
|
||||
/* Only increase the size; do not decrease to prevent constant changes */
|
||||
if (this->unitnumber_digits < new_unitnumber_digits) {
|
||||
this->unitnumber_digits = new_unitnumber_digits;
|
||||
this->ReInit();
|
||||
}
|
||||
@@ -684,7 +682,8 @@ struct DepotWindow : Window {
|
||||
}
|
||||
/* Always have 1 empty row, so people can change the setting of the train */
|
||||
this->vscroll->SetCount(this->vehicle_list.Length() + this->wagon_list.Length() + 1);
|
||||
this->hscroll->SetCount(max_width);
|
||||
/* Always make it longer than the longest train, so you can attach vehicles at the end */
|
||||
this->hscroll->SetCount(max_width + ScaleGUITrad(2 * VEHICLEINFO_FULL_VEHICLE_WIDTH + 1));
|
||||
} else {
|
||||
this->vscroll->SetCount(CeilDiv(this->vehicle_list.Length(), this->num_columns));
|
||||
}
|
||||
|
||||
@@ -112,7 +112,7 @@ void DisasterVehicle::UpdateImage()
|
||||
{
|
||||
SpriteID img = this->image_override;
|
||||
if (img == 0) img = _disaster_images[this->subtype][this->direction];
|
||||
this->cur_image = img;
|
||||
this->sprite_seq.Set(img);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -499,7 +499,8 @@ static bool DisasterTick_Helicopter_Rotors(DisasterVehicle *v)
|
||||
v->tick_counter++;
|
||||
if (HasBit(v->tick_counter, 0)) return true;
|
||||
|
||||
if (++v->cur_image > SPR_ROTOR_MOVING_3) v->cur_image = SPR_ROTOR_MOVING_1;
|
||||
SpriteID &cur_image = v->sprite_seq.seq[0].sprite;
|
||||
if (++cur_image > SPR_ROTOR_MOVING_3) cur_image = SPR_ROTOR_MOVING_1;
|
||||
|
||||
v->UpdatePositionAndViewport();
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#include "hotkeys.h"
|
||||
#include "gui.h"
|
||||
#include "zoom_func.h"
|
||||
#include "build_confirmation_func.h"
|
||||
|
||||
#include "widgets/dock_widget.h"
|
||||
|
||||
@@ -48,7 +49,7 @@ void CcBuildDocks(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p
|
||||
if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace();
|
||||
}
|
||||
|
||||
void CcBuildCanal(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
void CcPlaySound_SPLAT_WATER(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
|
||||
{
|
||||
if (result.Succeeded() && _settings_client.sound.confirm) SndPlayTileFx(SND_02_SPLAT_WATER, tile);
|
||||
}
|
||||
@@ -100,7 +101,7 @@ struct BuildDocksToolbarWindow : Window {
|
||||
this->last_clicked_widget = WID_DT_INVALID;
|
||||
this->InitNested(window_number);
|
||||
this->OnInvalidateData();
|
||||
if (_settings_client.gui.link_terraform_toolbar) ShowTerraformToolbar(this);
|
||||
if (_settings_client.gui.link_terraform_toolbar || _settings_client.gui.compact_vertical_toolbar) ShowTerraformToolbar();
|
||||
}
|
||||
|
||||
~BuildDocksToolbarWindow()
|
||||
@@ -190,9 +191,10 @@ struct BuildDocksToolbarWindow : Window {
|
||||
PlaceProc_DemolishArea(tile);
|
||||
break;
|
||||
|
||||
case WID_DT_STATION: // Build station button
|
||||
case WID_DT_STATION: { // Build station button
|
||||
VpStartPlaceSizing(tile, VPM_SINGLE_TILE, DDSP_BUILD_STATION);
|
||||
break;
|
||||
}
|
||||
|
||||
case WID_DT_DEPOT: // Build depot button
|
||||
case WID_DT_BUOY: // Build buoy button
|
||||
@@ -209,6 +211,7 @@ struct BuildDocksToolbarWindow : Window {
|
||||
|
||||
default: NOT_REACHED();
|
||||
}
|
||||
MoveAllWindowsOffScreen();
|
||||
}
|
||||
|
||||
virtual void OnPlaceDrag(ViewportPlaceMethod select_method, ViewportDragDropSelectionProcess select_proc, Point pt)
|
||||
@@ -233,10 +236,10 @@ struct BuildDocksToolbarWindow : Window {
|
||||
GUIPlaceProcDragXY(select_proc, start_tile, end_tile);
|
||||
break;
|
||||
case DDSP_CREATE_WATER:
|
||||
DoCommandP(end_tile, start_tile, (_game_mode == GM_EDITOR && _ctrl_pressed) ? WATER_CLASS_SEA : WATER_CLASS_CANAL, CMD_BUILD_CANAL | CMD_MSG(STR_ERROR_CAN_T_BUILD_CANALS), CcBuildCanal);
|
||||
DoCommandP(end_tile, start_tile, (_game_mode == GM_EDITOR && _ctrl_pressed) ? WATER_CLASS_SEA : WATER_CLASS_CANAL, CMD_BUILD_CANAL | CMD_MSG(STR_ERROR_CAN_T_BUILD_CANALS), CcPlaySound_SPLAT_WATER);
|
||||
break;
|
||||
case DDSP_CREATE_RIVER:
|
||||
DoCommandP(end_tile, start_tile, WATER_CLASS_RIVER, CMD_BUILD_CANAL | CMD_MSG(STR_ERROR_CAN_T_PLACE_RIVERS), CcBuildCanal);
|
||||
DoCommandP(end_tile, start_tile, WATER_CLASS_RIVER, CMD_BUILD_CANAL | CMD_MSG(STR_ERROR_CAN_T_PLACE_RIVERS), CcPlaySound_SPLAT_WATER);
|
||||
break;
|
||||
case DDSP_BUILD_STATION: {
|
||||
uint32 p2 = (uint32)INVALID_STATION << 16; // no station to join
|
||||
@@ -277,17 +280,19 @@ struct BuildDocksToolbarWindow : Window {
|
||||
|
||||
default: break;
|
||||
}
|
||||
MoveAllHiddenWindowsBackToScreen();
|
||||
}
|
||||
}
|
||||
|
||||
virtual void OnPlaceObjectAbort()
|
||||
{
|
||||
MoveAllHiddenWindowsBackToScreen();
|
||||
this->RaiseButtons();
|
||||
|
||||
if (ConfirmationWindowShown() && _ctrl_pressed) return;
|
||||
DeleteWindowById(WC_BUILD_STATION, TRANSPORT_WATER);
|
||||
DeleteWindowById(WC_BUILD_DEPOT, TRANSPORT_WATER);
|
||||
DeleteWindowById(WC_SELECT_STATION, 0);
|
||||
DeleteWindowByClass(WC_BUILD_BRIDGE);
|
||||
}
|
||||
|
||||
virtual void SelectLastTool()
|
||||
@@ -479,7 +484,7 @@ public:
|
||||
* Never make the window smaller to avoid oscillating if the size change affects the acceptance.
|
||||
* (This is the case, if making the window bigger moves the mouse into the window.) */
|
||||
if (top > bottom) {
|
||||
ResizeWindow(this, 0, top - bottom);
|
||||
ResizeWindow(this, 0, top - bottom, false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1317,7 +1317,8 @@ static uint GetLoadAmount(Vehicle *v)
|
||||
/* Scale load amount the same as capacity */
|
||||
if (HasBit(e->info.misc_flags, EF_NO_DEFAULT_CARGO_MULTIPLIER) && !air_mail) load_amount = CeilDiv(load_amount * CargoSpec::Get(v->cargo_type)->multiplier, 0x100);
|
||||
|
||||
return load_amount;
|
||||
/* Zero load amount breaks a lot of things. */
|
||||
return max(1u, load_amount);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1642,15 +1643,14 @@ static void LoadUnloadVehicle(Vehicle *front)
|
||||
if (v->cargo_cap == 0) continue;
|
||||
artic_part++;
|
||||
|
||||
uint load_amount = GetLoadAmount(v);
|
||||
|
||||
GoodsEntry *ge = &st->goods[v->cargo_type];
|
||||
|
||||
if (HasBit(v->vehicle_flags, VF_CARGO_UNLOADING) && (front->current_order.GetUnloadType() & OUFB_NO_UNLOAD) == 0) {
|
||||
uint cargo_count = v->cargo.UnloadCount();
|
||||
uint amount_unloaded = _settings_game.order.gradual_loading ? min(cargo_count, load_amount) : cargo_count;
|
||||
uint amount_unloaded = _settings_game.order.gradual_loading ? min(cargo_count, GetLoadAmount(v)) : cargo_count;
|
||||
bool remaining = false; // Are there cargo entities in this vehicle that can still be unloaded here?
|
||||
|
||||
assert(payment != NULL);
|
||||
payment->SetCargo(v->cargo_type);
|
||||
|
||||
if (!HasBit(ge->status, GoodsEntry::GES_ACCEPTANCE) && v->cargo.ActionCount(VehicleCargoList::MTA_DELIVER) > 0) {
|
||||
@@ -1690,7 +1690,9 @@ static void LoadUnloadVehicle(Vehicle *front)
|
||||
}
|
||||
}
|
||||
|
||||
amount_unloaded = v->cargo.Unload(amount_unloaded, &ge->cargo, payment);
|
||||
if (payment != NULL) {
|
||||
amount_unloaded = v->cargo.Unload(amount_unloaded, &ge->cargo, payment);
|
||||
}
|
||||
remaining = v->cargo.UnloadCount() > 0;
|
||||
if (amount_unloaded > 0) {
|
||||
dirty_vehicle = true;
|
||||
@@ -1752,8 +1754,8 @@ static void LoadUnloadVehicle(Vehicle *front)
|
||||
* has capacity for it, load it on the vehicle. */
|
||||
uint cap_left = v->cargo_cap - v->cargo.StoredCount();
|
||||
if (cap_left > 0 && (v->cargo.ActionCount(VehicleCargoList::MTA_LOAD) > 0 || ge->cargo.AvailableCount() > 0)) {
|
||||
if (_settings_game.order.gradual_loading) cap_left = min(cap_left, load_amount);
|
||||
if (v->cargo.StoredCount() == 0) TriggerVehicle(v, VEHICLE_TRIGGER_NEW_CARGO);
|
||||
if (_settings_game.order.gradual_loading) cap_left = min(cap_left, GetLoadAmount(v));
|
||||
|
||||
uint loaded = ge->cargo.Load(cap_left, &v->cargo, st->xy, next_station);
|
||||
if (v->cargo.ActionCount(VehicleCargoList::MTA_LOAD) > 0) {
|
||||
|
||||
@@ -22,10 +22,26 @@
|
||||
#include "safeguards.h"
|
||||
|
||||
|
||||
/**
|
||||
* Increment the sprite unless it has reached the end of the animation.
|
||||
* @param v Vehicle to increment sprite of.
|
||||
* @param last Last sprite of animation.
|
||||
* @return true if the sprite was incremented, false if the end was reached.
|
||||
*/
|
||||
static bool IncrementSprite(EffectVehicle *v, SpriteID last)
|
||||
{
|
||||
if (v->sprite_seq.seq[0].sprite != last) {
|
||||
v->sprite_seq.seq[0].sprite++;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
static void ChimneySmokeInit(EffectVehicle *v)
|
||||
{
|
||||
uint32 r = Random();
|
||||
v->cur_image = SPR_CHIMNEY_SMOKE_0 + GB(r, 0, 3);
|
||||
v->sprite_seq.Set(SPR_CHIMNEY_SMOKE_0 + GB(r, 0, 3));
|
||||
v->progress = GB(r, 16, 3);
|
||||
}
|
||||
|
||||
@@ -40,10 +56,8 @@ static bool ChimneySmokeTick(EffectVehicle *v)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (v->cur_image != SPR_CHIMNEY_SMOKE_7) {
|
||||
v->cur_image++;
|
||||
} else {
|
||||
v->cur_image = SPR_CHIMNEY_SMOKE_0;
|
||||
if (!IncrementSprite(v, SPR_CHIMNEY_SMOKE_7)) {
|
||||
v->sprite_seq.Set(SPR_CHIMNEY_SMOKE_0);
|
||||
}
|
||||
v->progress = 7;
|
||||
v->UpdatePositionAndViewport();
|
||||
@@ -54,7 +68,7 @@ static bool ChimneySmokeTick(EffectVehicle *v)
|
||||
|
||||
static void SteamSmokeInit(EffectVehicle *v)
|
||||
{
|
||||
v->cur_image = SPR_STEAM_SMOKE_0;
|
||||
v->sprite_seq.Set(SPR_STEAM_SMOKE_0);
|
||||
v->progress = 12;
|
||||
}
|
||||
|
||||
@@ -70,9 +84,7 @@ static bool SteamSmokeTick(EffectVehicle *v)
|
||||
}
|
||||
|
||||
if ((v->progress & 0xF) == 4) {
|
||||
if (v->cur_image != SPR_STEAM_SMOKE_4) {
|
||||
v->cur_image++;
|
||||
} else {
|
||||
if (!IncrementSprite(v, SPR_STEAM_SMOKE_4)) {
|
||||
delete v;
|
||||
return false;
|
||||
}
|
||||
@@ -86,7 +98,7 @@ static bool SteamSmokeTick(EffectVehicle *v)
|
||||
|
||||
static void DieselSmokeInit(EffectVehicle *v)
|
||||
{
|
||||
v->cur_image = SPR_DIESEL_SMOKE_0;
|
||||
v->sprite_seq.Set(SPR_DIESEL_SMOKE_0);
|
||||
v->progress = 0;
|
||||
}
|
||||
|
||||
@@ -98,13 +110,11 @@ static bool DieselSmokeTick(EffectVehicle *v)
|
||||
v->z_pos++;
|
||||
v->UpdatePositionAndViewport();
|
||||
} else if ((v->progress & 7) == 1) {
|
||||
if (v->cur_image != SPR_DIESEL_SMOKE_5) {
|
||||
v->cur_image++;
|
||||
v->UpdatePositionAndViewport();
|
||||
} else {
|
||||
if (!IncrementSprite(v, SPR_DIESEL_SMOKE_5)) {
|
||||
delete v;
|
||||
return false;
|
||||
}
|
||||
v->UpdatePositionAndViewport();
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -112,7 +122,7 @@ static bool DieselSmokeTick(EffectVehicle *v)
|
||||
|
||||
static void ElectricSparkInit(EffectVehicle *v)
|
||||
{
|
||||
v->cur_image = SPR_ELECTRIC_SPARK_0;
|
||||
v->sprite_seq.Set(SPR_ELECTRIC_SPARK_0);
|
||||
v->progress = 1;
|
||||
}
|
||||
|
||||
@@ -122,13 +132,12 @@ static bool ElectricSparkTick(EffectVehicle *v)
|
||||
v->progress++;
|
||||
} else {
|
||||
v->progress = 0;
|
||||
if (v->cur_image != SPR_ELECTRIC_SPARK_5) {
|
||||
v->cur_image++;
|
||||
v->UpdatePositionAndViewport();
|
||||
} else {
|
||||
|
||||
if (!IncrementSprite(v, SPR_ELECTRIC_SPARK_5)) {
|
||||
delete v;
|
||||
return false;
|
||||
}
|
||||
v->UpdatePositionAndViewport();
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -136,7 +145,7 @@ static bool ElectricSparkTick(EffectVehicle *v)
|
||||
|
||||
static void SmokeInit(EffectVehicle *v)
|
||||
{
|
||||
v->cur_image = SPR_SMOKE_0;
|
||||
v->sprite_seq.Set(SPR_SMOKE_0);
|
||||
v->progress = 12;
|
||||
}
|
||||
|
||||
@@ -152,9 +161,7 @@ static bool SmokeTick(EffectVehicle *v)
|
||||
}
|
||||
|
||||
if ((v->progress & 0xF) == 4) {
|
||||
if (v->cur_image != SPR_SMOKE_4) {
|
||||
v->cur_image++;
|
||||
} else {
|
||||
if (!IncrementSprite(v, SPR_SMOKE_4)) {
|
||||
delete v;
|
||||
return false;
|
||||
}
|
||||
@@ -168,7 +175,7 @@ static bool SmokeTick(EffectVehicle *v)
|
||||
|
||||
static void ExplosionLargeInit(EffectVehicle *v)
|
||||
{
|
||||
v->cur_image = SPR_EXPLOSION_LARGE_0;
|
||||
v->sprite_seq.Set(SPR_EXPLOSION_LARGE_0);
|
||||
v->progress = 0;
|
||||
}
|
||||
|
||||
@@ -176,13 +183,11 @@ static bool ExplosionLargeTick(EffectVehicle *v)
|
||||
{
|
||||
v->progress++;
|
||||
if ((v->progress & 3) == 0) {
|
||||
if (v->cur_image != SPR_EXPLOSION_LARGE_F) {
|
||||
v->cur_image++;
|
||||
v->UpdatePositionAndViewport();
|
||||
} else {
|
||||
if (!IncrementSprite(v, SPR_EXPLOSION_LARGE_F)) {
|
||||
delete v;
|
||||
return false;
|
||||
}
|
||||
v->UpdatePositionAndViewport();
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -190,7 +195,7 @@ static bool ExplosionLargeTick(EffectVehicle *v)
|
||||
|
||||
static void BreakdownSmokeInit(EffectVehicle *v)
|
||||
{
|
||||
v->cur_image = SPR_BREAKDOWN_SMOKE_0;
|
||||
v->sprite_seq.Set(SPR_BREAKDOWN_SMOKE_0);
|
||||
v->progress = 0;
|
||||
}
|
||||
|
||||
@@ -198,10 +203,8 @@ static bool BreakdownSmokeTick(EffectVehicle *v)
|
||||
{
|
||||
v->progress++;
|
||||
if ((v->progress & 7) == 0) {
|
||||
if (v->cur_image != SPR_BREAKDOWN_SMOKE_3) {
|
||||
v->cur_image++;
|
||||
} else {
|
||||
v->cur_image = SPR_BREAKDOWN_SMOKE_0;
|
||||
if (!IncrementSprite(v, SPR_BREAKDOWN_SMOKE_3)) {
|
||||
v->sprite_seq.Set(SPR_BREAKDOWN_SMOKE_0);
|
||||
}
|
||||
v->UpdatePositionAndViewport();
|
||||
}
|
||||
@@ -217,7 +220,7 @@ static bool BreakdownSmokeTick(EffectVehicle *v)
|
||||
|
||||
static void ExplosionSmallInit(EffectVehicle *v)
|
||||
{
|
||||
v->cur_image = SPR_EXPLOSION_SMALL_0;
|
||||
v->sprite_seq.Set(SPR_EXPLOSION_SMALL_0);
|
||||
v->progress = 0;
|
||||
}
|
||||
|
||||
@@ -225,13 +228,11 @@ static bool ExplosionSmallTick(EffectVehicle *v)
|
||||
{
|
||||
v->progress++;
|
||||
if ((v->progress & 3) == 0) {
|
||||
if (v->cur_image != SPR_EXPLOSION_SMALL_B) {
|
||||
v->cur_image++;
|
||||
v->UpdatePositionAndViewport();
|
||||
} else {
|
||||
if (!IncrementSprite(v, SPR_EXPLOSION_SMALL_B)) {
|
||||
delete v;
|
||||
return false;
|
||||
}
|
||||
v->UpdatePositionAndViewport();
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -239,7 +240,7 @@ static bool ExplosionSmallTick(EffectVehicle *v)
|
||||
|
||||
static void BulldozerInit(EffectVehicle *v)
|
||||
{
|
||||
v->cur_image = SPR_BULLDOZER_NE;
|
||||
v->sprite_seq.Set(SPR_BULLDOZER_NE);
|
||||
v->progress = 0;
|
||||
v->animation_state = 0;
|
||||
v->animation_substate = 0;
|
||||
@@ -290,7 +291,7 @@ static bool BulldozerTick(EffectVehicle *v)
|
||||
if ((v->progress & 7) == 0) {
|
||||
const BulldozerMovement *b = &_bulldozer_movement[v->animation_state];
|
||||
|
||||
v->cur_image = SPR_BULLDOZER_NE + b->image;
|
||||
v->sprite_seq.Set(SPR_BULLDOZER_NE + b->image);
|
||||
|
||||
v->x_pos += _inc_by_dir[b->direction].x;
|
||||
v->y_pos += _inc_by_dir[b->direction].y;
|
||||
@@ -312,7 +313,7 @@ static bool BulldozerTick(EffectVehicle *v)
|
||||
|
||||
static void BubbleInit(EffectVehicle *v)
|
||||
{
|
||||
v->cur_image = SPR_BUBBLE_GENERATE_0;
|
||||
v->sprite_seq.Set(SPR_BUBBLE_GENERATE_0);
|
||||
v->spritenum = 0;
|
||||
v->progress = 0;
|
||||
}
|
||||
@@ -475,8 +476,8 @@ static bool BubbleTick(EffectVehicle *v)
|
||||
if ((v->progress & 3) != 0) return true;
|
||||
|
||||
if (v->spritenum == 0) {
|
||||
v->cur_image++;
|
||||
if (v->cur_image < SPR_BUBBLE_GENERATE_3) {
|
||||
v->sprite_seq.seq[0].sprite++;
|
||||
if (v->sprite_seq.seq[0].sprite < SPR_BUBBLE_GENERATE_3) {
|
||||
v->UpdatePositionAndViewport();
|
||||
return true;
|
||||
}
|
||||
@@ -521,7 +522,7 @@ static bool BubbleTick(EffectVehicle *v)
|
||||
v->x_pos += b->x;
|
||||
v->y_pos += b->y;
|
||||
v->z_pos += b->z;
|
||||
v->cur_image = SPR_BUBBLE_0 + b->image;
|
||||
v->sprite_seq.Set(SPR_BUBBLE_0 + b->image);
|
||||
|
||||
v->UpdatePositionAndViewport();
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@ static TrackBits GetRailTrackBitsUniversal(TileIndex t, byte *override)
|
||||
{
|
||||
switch (GetTileType(t)) {
|
||||
case MP_RAILWAY:
|
||||
if (!HasCatenary(GetRailType(t))) return TRACK_BIT_NONE;
|
||||
if (!HasRailCatenary(GetRailType(t))) return TRACK_BIT_NONE;
|
||||
switch (GetRailTileType(t)) {
|
||||
case RAIL_TILE_NORMAL: case RAIL_TILE_SIGNALS:
|
||||
return GetTrackBits(t);
|
||||
@@ -99,7 +99,7 @@ static TrackBits GetRailTrackBitsUniversal(TileIndex t, byte *override)
|
||||
break;
|
||||
|
||||
case MP_TUNNELBRIDGE:
|
||||
if (!HasCatenary(GetRailType(t))) return TRACK_BIT_NONE;
|
||||
if (!HasRailCatenary(GetRailType(t))) return TRACK_BIT_NONE;
|
||||
if (override != NULL && (IsTunnel(t) || GetTunnelBridgeLength(t, GetOtherBridgeEnd(t)) > 0)) {
|
||||
*override = 1 << GetTunnelBridgeDirection(t);
|
||||
}
|
||||
@@ -107,12 +107,12 @@ static TrackBits GetRailTrackBitsUniversal(TileIndex t, byte *override)
|
||||
|
||||
case MP_ROAD:
|
||||
if (!IsLevelCrossing(t)) return TRACK_BIT_NONE;
|
||||
if (!HasCatenary(GetRailType(t))) return TRACK_BIT_NONE;
|
||||
if (!HasRailCatenary(GetRailType(t))) return TRACK_BIT_NONE;
|
||||
return GetCrossingRailBits(t);
|
||||
|
||||
case MP_STATION:
|
||||
if (!HasStationRail(t)) return TRACK_BIT_NONE;
|
||||
if (!HasCatenary(GetRailType(t))) return TRACK_BIT_NONE;
|
||||
if (!HasRailCatenary(GetRailType(t))) return TRACK_BIT_NONE;
|
||||
return TrackToTrackBits(GetRailStationTrack(t));
|
||||
|
||||
default:
|
||||
@@ -135,7 +135,7 @@ static TrackBits MaskWireBits(TileIndex t, TrackBits tracks)
|
||||
* axis that still display wires to preserve visual continuity. */
|
||||
TileIndex next_tile = TileAddByDiagDir(t, d);
|
||||
RailType rt = GetTileRailType(next_tile);
|
||||
if (rt == INVALID_RAILTYPE || !HasCatenary(rt) ||
|
||||
if (rt == INVALID_RAILTYPE || !HasRailCatenary(rt) ||
|
||||
((TrackStatusToTrackBits(GetTileTrackStatus(next_tile, TRANSPORT_RAIL, 0)) & DiagdirReachesTracks(d)) == TRACK_BIT_NONE &&
|
||||
(!HasStationTileRail(next_tile) || GetRailStationAxis(next_tile) != DiagDirToAxis(d) || !CanStationTileHaveWires(next_tile)))) {
|
||||
neighbour_tdb |= DiagdirReachesTrackdirs(ReverseDiagDir(d));
|
||||
@@ -241,7 +241,7 @@ static int GetPCPElevation(TileIndex tile, DiagDirection PCPpos)
|
||||
*
|
||||
* @param ti The Tileinfo to draw the tile for
|
||||
*/
|
||||
void DrawCatenaryOnTunnel(const TileInfo *ti)
|
||||
void DrawRailCatenaryOnTunnel(const TileInfo *ti)
|
||||
{
|
||||
/* xmin, ymin, xmax + 1, ymax + 1 of BB */
|
||||
static const int _tunnel_wire_BB[4][4] = {
|
||||
@@ -255,7 +255,7 @@ void DrawCatenaryOnTunnel(const TileInfo *ti)
|
||||
|
||||
SpriteID wire_base = GetWireBase(ti->tile);
|
||||
|
||||
const SortableSpriteStruct *sss = &CatenarySpriteData_Tunnel[dir];
|
||||
const SortableSpriteStruct *sss = &RailCatenarySpriteData_Tunnel[dir];
|
||||
const int *BB_data = _tunnel_wire_BB[dir];
|
||||
AddSortableSpriteToDraw(
|
||||
wire_base + sss->image_offset, PAL_NONE, ti->x + sss->x_offset, ti->y + sss->y_offset,
|
||||
@@ -270,7 +270,7 @@ void DrawCatenaryOnTunnel(const TileInfo *ti)
|
||||
* Draws wires and, if required, pylons on a given tile
|
||||
* @param ti The Tileinfo to draw the tile for
|
||||
*/
|
||||
static void DrawCatenaryRailway(const TileInfo *ti)
|
||||
static void DrawRailCatenaryRailway(const TileInfo *ti)
|
||||
{
|
||||
/* Pylons are placed on a tile edge, so we need to take into account
|
||||
* the track configuration of 2 adjacent tiles. trackconfig[0] stores the
|
||||
@@ -379,7 +379,7 @@ static void DrawCatenaryRailway(const TileInfo *ti)
|
||||
if (IsTileType(neighbour, MP_STATION) || IsTileType(neighbour, MP_ROAD)) tileh[TS_NEIGHBOUR] = SLOPE_FLAT;
|
||||
|
||||
/* Read the foundations if they are present, and adjust the tileh */
|
||||
if (trackconfig[TS_NEIGHBOUR] != TRACK_BIT_NONE && IsTileType(neighbour, MP_RAILWAY) && HasCatenary(GetRailType(neighbour))) foundation = GetRailFoundation(tileh[TS_NEIGHBOUR], trackconfig[TS_NEIGHBOUR]);
|
||||
if (trackconfig[TS_NEIGHBOUR] != TRACK_BIT_NONE && IsTileType(neighbour, MP_RAILWAY) && HasRailCatenary(GetRailType(neighbour))) foundation = GetRailFoundation(tileh[TS_NEIGHBOUR], trackconfig[TS_NEIGHBOUR]);
|
||||
if (IsBridgeTile(neighbour)) {
|
||||
foundation = GetBridgeFoundation(tileh[TS_NEIGHBOUR], DiagDirToAxis(GetTunnelBridgeDirection(neighbour)));
|
||||
}
|
||||
@@ -442,7 +442,7 @@ static void DrawCatenaryRailway(const TileInfo *ti)
|
||||
}
|
||||
}
|
||||
|
||||
/* The wire above the tunnel is drawn together with the tunnel-roof (see DrawCatenaryOnTunnel()) */
|
||||
/* The wire above the tunnel is drawn together with the tunnel-roof (see DrawRailCatenaryOnTunnel()) */
|
||||
if (IsTunnelTile(ti->tile)) return;
|
||||
|
||||
/* Don't draw a wire under a low bridge */
|
||||
@@ -478,7 +478,7 @@ static void DrawCatenaryRailway(const TileInfo *ti)
|
||||
|
||||
assert(PCPconfig != 0); // We have a pylon on neither end of the wire, that doesn't work (since we have no sprites for that)
|
||||
assert(!IsSteepSlope(tileh[TS_HOME]));
|
||||
sss = &CatenarySpriteData[Wires[tileh_selector][t][PCPconfig]];
|
||||
sss = &RailCatenarySpriteData[Wires[tileh_selector][t][PCPconfig]];
|
||||
|
||||
/*
|
||||
* The "wire"-sprite position is inside the tile, i.e. 0 <= sss->?_offset < TILE_SIZE.
|
||||
@@ -498,7 +498,7 @@ static void DrawCatenaryRailway(const TileInfo *ti)
|
||||
*
|
||||
* @param ti The Tileinfo to draw the tile for
|
||||
*/
|
||||
void DrawCatenaryOnBridge(const TileInfo *ti)
|
||||
void DrawRailCatenaryOnBridge(const TileInfo *ti)
|
||||
{
|
||||
TileIndex end = GetSouthernBridgeEnd(ti->tile);
|
||||
TileIndex start = GetOtherBridgeEnd(end);
|
||||
@@ -511,15 +511,15 @@ void DrawCatenaryOnBridge(const TileInfo *ti)
|
||||
Axis axis = GetBridgeAxis(ti->tile);
|
||||
TLG tlg = GetTLG(ti->tile);
|
||||
|
||||
CatenarySprite offset = (CatenarySprite)(axis == AXIS_X ? 0 : WIRE_Y_FLAT_BOTH - WIRE_X_FLAT_BOTH);
|
||||
RailCatenarySprite offset = (RailCatenarySprite)(axis == AXIS_X ? 0 : WIRE_Y_FLAT_BOTH - WIRE_X_FLAT_BOTH);
|
||||
|
||||
if ((length % 2) && num == length) {
|
||||
/* Draw the "short" wire on the southern end of the bridge
|
||||
* only needed if the length of the bridge is odd */
|
||||
sss = &CatenarySpriteData[WIRE_X_FLAT_BOTH + offset];
|
||||
sss = &RailCatenarySpriteData[WIRE_X_FLAT_BOTH + offset];
|
||||
} else {
|
||||
/* Draw "long" wires on all other tiles of the bridge (one pylon every two tiles) */
|
||||
sss = &CatenarySpriteData[WIRE_X_FLAT_SW + (num % 2) + offset];
|
||||
sss = &RailCatenarySpriteData[WIRE_X_FLAT_SW + (num % 2) + offset];
|
||||
}
|
||||
|
||||
height = GetBridgePixelHeight(end);
|
||||
@@ -558,14 +558,14 @@ void DrawCatenaryOnBridge(const TileInfo *ti)
|
||||
/**
|
||||
* Draws overhead wires and pylons for electric railways.
|
||||
* @param ti The TileInfo struct of the tile being drawn
|
||||
* @see DrawCatenaryRailway
|
||||
* @see DrawRailCatenaryRailway
|
||||
*/
|
||||
void DrawCatenary(const TileInfo *ti)
|
||||
void DrawRailCatenary(const TileInfo *ti)
|
||||
{
|
||||
switch (GetTileType(ti->tile)) {
|
||||
case MP_RAILWAY:
|
||||
if (IsRailDepot(ti->tile)) {
|
||||
const SortableSpriteStruct *sss = &CatenarySpriteData_Depot[GetRailDepotDirection(ti->tile)];
|
||||
const SortableSpriteStruct *sss = &RailCatenarySpriteData_Depot[GetRailDepotDirection(ti->tile)];
|
||||
|
||||
SpriteID wire_base = GetWireBase(ti->tile);
|
||||
|
||||
@@ -587,7 +587,7 @@ void DrawCatenary(const TileInfo *ti)
|
||||
|
||||
default: return;
|
||||
}
|
||||
DrawCatenaryRailway(ti);
|
||||
DrawRailCatenaryRailway(ti);
|
||||
}
|
||||
|
||||
bool SettingsDisableElrail(int32 p1)
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
* Test if a rail type has catenary
|
||||
* @param rt Rail type to test
|
||||
*/
|
||||
static inline bool HasCatenary(RailType rt)
|
||||
static inline bool HasRailCatenary(RailType rt)
|
||||
{
|
||||
return HasBit(GetRailTypeInfo(rt)->flags, RTF_CATENARY);
|
||||
}
|
||||
@@ -29,14 +29,14 @@ static inline bool HasCatenary(RailType rt)
|
||||
* Test if we should draw rail catenary
|
||||
* @param rt Rail type to test
|
||||
*/
|
||||
static inline bool HasCatenaryDrawn(RailType rt)
|
||||
static inline bool HasRailCatenaryDrawn(RailType rt)
|
||||
{
|
||||
return HasCatenary(rt) && !IsInvisibilitySet(TO_CATENARY) && !_settings_game.vehicle.disable_elrails;
|
||||
return HasRailCatenary(rt) && !IsInvisibilitySet(TO_CATENARY) && !_settings_game.vehicle.disable_elrails;
|
||||
}
|
||||
|
||||
void DrawCatenary(const TileInfo *ti);
|
||||
void DrawCatenaryOnTunnel(const TileInfo *ti);
|
||||
void DrawCatenaryOnBridge(const TileInfo *ti);
|
||||
void DrawRailCatenary(const TileInfo *ti);
|
||||
void DrawRailCatenaryOnTunnel(const TileInfo *ti);
|
||||
void DrawRailCatenaryOnBridge(const TileInfo *ti);
|
||||
|
||||
bool SettingsDisableElrail(int32 p1); ///< _settings_game.disable_elrail callback
|
||||
|
||||
|
||||
@@ -48,11 +48,6 @@ EngineOverrideManager _engine_mngr;
|
||||
*/
|
||||
static Year _year_engine_aging_stops;
|
||||
|
||||
/**
|
||||
* The railtypes that have been or never will be introduced, or
|
||||
* an inverse bitmap of rail types that have to be introduced. */
|
||||
static uint16 _introduced_railtypes;
|
||||
|
||||
/** Number of engines of each vehicle type in original engine data */
|
||||
const uint8 _engine_counts[4] = {
|
||||
lengthof(_orig_rail_vehicle_info),
|
||||
@@ -85,6 +80,7 @@ Engine::Engine(VehicleType type, EngineID base)
|
||||
this->type = type;
|
||||
this->grf_prop.local_id = base;
|
||||
this->list_position = base;
|
||||
this->preview_company = INVALID_COMPANY;
|
||||
|
||||
/* Check if this base engine is within the original engine data range */
|
||||
if (base >= _engine_counts[type]) {
|
||||
@@ -542,29 +538,6 @@ void SetupEngines()
|
||||
const Engine *e = new Engine(eid->type, eid->internal_id);
|
||||
assert(e->index == index);
|
||||
}
|
||||
|
||||
_introduced_railtypes = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the railtypes should be introduced.
|
||||
*/
|
||||
static void CheckRailIntroduction()
|
||||
{
|
||||
/* All railtypes have been introduced. */
|
||||
if (_introduced_railtypes == UINT16_MAX || Company::GetPoolSize() == 0) return;
|
||||
|
||||
/* We need to find the railtypes that are known to all companies. */
|
||||
RailTypes rts = (RailTypes)UINT16_MAX;
|
||||
|
||||
/* We are at, or past the introduction date of the rail. */
|
||||
Company *c;
|
||||
FOR_ALL_COMPANIES(c) {
|
||||
c->avail_railtypes = AddDateIntroducedRailTypes(c->avail_railtypes, _date);
|
||||
rts &= c->avail_railtypes;
|
||||
}
|
||||
|
||||
_introduced_railtypes |= rts;
|
||||
}
|
||||
|
||||
void ShowEnginePreviewWindow(EngineID engine);
|
||||
@@ -710,19 +683,6 @@ void StartupEngines()
|
||||
c->avail_roadtypes = GetCompanyRoadtypes(c->index);
|
||||
}
|
||||
|
||||
/* Rail types that are invalid or never introduced are marked as
|
||||
* being introduced upon start. That way we can easily check whether
|
||||
* there is any date related introduction that is still going to
|
||||
* happen somewhere in the future. */
|
||||
for (RailType rt = RAILTYPE_BEGIN; rt != RAILTYPE_END; rt++) {
|
||||
const RailtypeInfo *rti = GetRailTypeInfo(rt);
|
||||
if (rti->label != 0 && IsInsideMM(rti->introduction_date, 0, MAX_DAY)) continue;
|
||||
|
||||
SetBit(_introduced_railtypes, rt);
|
||||
}
|
||||
|
||||
CheckRailIntroduction();
|
||||
|
||||
/* Invalidate any open purchase lists */
|
||||
InvalidateWindowClassesData(WC_BUILD_VEHICLE);
|
||||
}
|
||||
@@ -819,7 +779,10 @@ static bool IsVehicleTypeDisabled(VehicleType type, bool ai)
|
||||
/** Daily check to offer an exclusive engine preview to the companies. */
|
||||
void EnginesDailyLoop()
|
||||
{
|
||||
CheckRailIntroduction();
|
||||
Company *c;
|
||||
FOR_ALL_COMPANIES(c) {
|
||||
c->avail_railtypes = AddDateIntroducedRailTypes(c->avail_railtypes, _date);
|
||||
}
|
||||
|
||||
if (_cur_year >= _year_engine_aging_stops) return;
|
||||
|
||||
@@ -879,7 +842,7 @@ CommandCost CmdSetVehicleVisibility(TileIndex tile, DoCommandFlag flags, uint32
|
||||
{
|
||||
Engine *e = Engine::GetIfValid(GB(p2, 0, 31));
|
||||
if (e == NULL || _current_company >= MAX_COMPANIES) return CMD_ERROR;
|
||||
if ((e->flags & ENGINE_AVAILABLE) == 0 || !HasBit(e->company_avail, _current_company)) return CMD_ERROR;
|
||||
if (!IsEngineBuildable(e->index, e->type, _current_company)) return CMD_ERROR;
|
||||
|
||||
if ((flags & DC_EXEC) != 0) {
|
||||
SB(e->company_hidden, _current_company, 1, GB(p2, 31, 1));
|
||||
@@ -902,7 +865,7 @@ CommandCost CmdSetVehicleVisibility(TileIndex tile, DoCommandFlag flags, uint32
|
||||
CommandCost CmdWantEnginePreview(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
|
||||
{
|
||||
Engine *e = Engine::GetIfValid(p1);
|
||||
if (e == NULL || e->preview_company != _current_company) return CMD_ERROR;
|
||||
if (e == NULL || !(e->flags & ENGINE_EXCLUSIVE_PREVIEW) || e->preview_company != _current_company) return CMD_ERROR;
|
||||
|
||||
if (flags & DC_EXEC) AcceptEnginePreview(p1, _current_company);
|
||||
|
||||
|
||||
@@ -158,6 +158,7 @@ enum EngineMiscFlags {
|
||||
EF_AUTO_REFIT = 4, ///< Automatic refitting is allowed
|
||||
EF_NO_DEFAULT_CARGO_MULTIPLIER = 5, ///< Use the new capacity algorithm. The default cargotype of the vehicle does not affect capacity multipliers. CB 15 is also called in purchase list.
|
||||
EF_NO_BREAKDOWN_SMOKE = 6, ///< Do not show black smoke during a breakdown.
|
||||
EF_SPRITE_STACK = 7, ///< Draw vehicle by stacking multiple sprites.
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user