1
0
mirror of https://github.com/OpenTTD/OpenTTD.git synced 2025-08-26 16:09:10 +00:00

Compare commits

..

14 Commits

Author SHA1 Message Date
frosch
4627d5c28f (svn r27609) -Release: 1.6.1 2016-06-30 21:15:30 +00:00
frosch
1329c2bf7e (svn r27608) [1.6] -Update: Documentation 2016-06-30 21:13:14 +00:00
frosch
c271eb89d8 (svn r27607) [1.6] -Backport from trunk:
- 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)
2016-06-30 18:36:01 +00:00
frosch
4b508ccbe8 (svn r27596) [1.6] -Update: Documentation 2016-06-01 18:35:24 +00:00
frosch
f4b7f4b162 (svn r27593) [1.6] -Backport: language updates from trunk 2016-05-29 19:11:48 +00:00
frosch
a68d0d430c (svn r27592) [1.6] -Backport from trunk:
- 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)
2016-05-29 19:08:01 +00:00
frosch
4b4e8f0a1e (svn r27591) [1.6] -Backport from trunk:
- Change: Performance improvement for dedicated servers by skipping drawing calls earlier in the process [FS#6402] (r27579)
- 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)
2016-05-29 19:05:11 +00:00
frosch
8b5936c224 (svn r27590) [1.6] -Backport from trunk:
- 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)
2016-05-29 19:01:50 +00:00
frosch
d0d4a62f8d (svn r27589) [1.6] -Backport from trunk:
- Feature: Mexican Spanish (r27564, r27553, r27552)
2016-05-29 18:59:03 +00:00
frosch
476c55ed3f (svn r27588) [1.6] -Backport from trunk:
- 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)
2016-05-29 18:56:42 +00:00
frosch
df885ee66c (svn r27587) [1.6] -Backport from trunk:
- 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)
2016-05-29 18:52:56 +00:00
frosch
235e714eee (svn r27531) [1.6] -Update: Documentation 2016-04-01 18:27:37 +00:00
frosch
0989010748 (svn r27519) [1.6] -Update: Documentation 2016-03-01 20:06:23 +00:00
frosch
d1104cc515 (svn r27517) [1.6] -Branch: for incrementing numbers 2016-03-01 19:49:40 +00:00
275 changed files with 4015 additions and 5520 deletions

1
.gitignore vendored
View File

@@ -7,7 +7,6 @@ bin/ai/*
bin/baseset/* bin/baseset/*
!bin/baseset/openttd.grf !bin/baseset/openttd.grf
!bin/baseset/opntitle.dat !bin/baseset/opntitle.dat
!bin/baseset/orig_extra.grf
!bin/baseset/orig_*.obg !bin/baseset/orig_*.obg
!bin/baseset/orig_*.obs !bin/baseset/orig_*.obs
!bin/baseset/no_sound.obs !bin/baseset/no_sound.obs

View File

@@ -44,18 +44,22 @@ PNG_FILES := $(GRF_DIR)/*.png $(GRF_DIR)/rivers/*.png
# Build the GRF. # Build the GRF.
ifdef GRFCODEC ifdef GRFCODEC
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 all: $(BIN_DIR)/openttd.grf $(BIN_DIR)/orig_dos.obg $(BIN_DIR)/orig_dos_de.obg $(BIN_DIR)/orig_win.obg $(BIN_DIR)/orig_dos.obs $(BIN_DIR)/orig_win.obs $(BIN_DIR)/no_sound.obs $(BIN_DIR)/orig_win.obm $(BIN_DIR)/no_music.obm
else else
all: all:
endif endif
# Make sure the sprites directory exists.
$(OBJS_DIR)/sprites:
$(Q)-mkdir "$@"
$(OBJS_DIR)/langfiles.tmp: $(LANG_DIR)/*.txt $(OBJS_DIR)/langfiles.tmp: $(LANG_DIR)/*.txt
$(E) '$(STAGE) Collecting baseset translations' $(E) '$(STAGE) Collecting baseset translations'
$(Q) cat $^ > $@ $(Q) cat $^ > $@
$(BIN_DIR)/%.obg: $(BASESET_DIR)/%.obg $(BIN_DIR)/orig_extra.grf $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/translations.awk $(BIN_DIR)/%.obg: $(BASESET_DIR)/%.obg $(BIN_DIR)/openttd.grf $(OBJS_DIR)/langfiles.tmp $(BASESET_DIR)/translations.awk
$(E) '$(STAGE) Updating $(notdir $@)' $(E) '$(STAGE) Updating $(notdir $@)'
$(Q) sed 's/^ORIG_EXTRA.GRF = *[0-9a-f]*$$/ORIG_EXTRA.GRF = '`$(MD5SUM) $(BIN_DIR)/orig_extra.grf | sed 's@ .*@@'`'/' $< > $@.tmp $(Q) sed 's/^OPENTTD.GRF = *[0-9a-f]*$$/OPENTTD.GRF = '`$(MD5SUM) $(BIN_DIR)/openttd.grf | sed 's@ .*@@'`'/' $< > $@.tmp
$(Q) awk -v langfiles='$(OBJS_DIR)/langfiles.tmp' -f $(BASESET_DIR)/translations.awk $@.tmp >$@ $(Q) awk -v langfiles='$(OBJS_DIR)/langfiles.tmp' -f $(BASESET_DIR)/translations.awk $@.tmp >$@
$(Q) rm $@.tmp $(Q) rm $@.tmp
@@ -68,9 +72,8 @@ $(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 $< >$@ $(Q) awk -v langfiles='$(OBJS_DIR)/langfiles.tmp' -f $(BASESET_DIR)/translations.awk $< >$@
# Compile extra grf # Compile extra grf
$(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(GRF_DIR)/assemble_nfo.awk $(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(OBJS_DIR)/sprites $(GRF_DIR)/assemble_nfo.awk
$(E) '$(STAGE) Assembling openttd.nfo' $(E) '$(STAGE) Assembling openttd.nfo'
$(Q)-mkdir -p $(OBJS_DIR)/sprites
$(Q)-cp $(PNG_FILES) $(OBJS_DIR)/sprites 2> /dev/null $(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) awk -f $(GRF_DIR)/assemble_nfo.awk $(GRF_DIR)/openttd.nfo > $(OBJS_DIR)/sprites/openttd.nfo
$(Q) $(NFORENUM) -s $(OBJS_DIR)/sprites/openttd.nfo $(Q) $(NFORENUM) -s $(OBJS_DIR)/sprites/openttd.nfo
@@ -78,17 +81,6 @@ $(BIN_DIR)/openttd.grf: $(PNG_FILES) $(NFO_FILES) $(GRF_DIR)/assemble_nfo.awk
$(Q) $(GRFCODEC) -n -s -e -p1 $(OBJS_DIR)/openttd.grf $(Q) $(GRFCODEC) -n -s -e -p1 $(OBJS_DIR)/openttd.grf
$(Q)cp $(OBJS_DIR)/openttd.grf $(BIN_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 up temporary files.
clean: clean:
$(Q)rm -f *.bak *.grf $(Q)rm -f *.bak *.grf

View File

@@ -152,7 +152,7 @@ mrproper:
distclean: mrproper distclean: mrproper
maintainer-clean: distclean maintainer-clean: distclean
$(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 $(Q)rm -f $(BIN_DIR)/baseset/openttd.grf $(BIN_DIR)/baseset/*.obg $(BIN_DIR)/baseset/*.obs $(BIN_DIR)/baseset/*.obm
depend: depend:
@for dir in $(SRC_DIRS); do \ @for dir in $(SRC_DIRS); do \

View File

@@ -6,5 +6,3 @@
* 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. * 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/>. * 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.");

View File

@@ -1,8 +0,0 @@
/* $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/>.
*/

View File

@@ -6,7 +6,7 @@ class Regression extends AIInfo {
function GetShortName() { return "REGR"; } 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 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 GetVersion() { return 1; }
function GetAPIVersion() { return "1.7"; } function GetAPIVersion() { return "1.6"; }
function GetDate() { return "2007-03-18"; } function GetDate() { return "2007-03-18"; }
function CreateInstance() { return "Regression"; } function CreateInstance() { return "Regression"; }
} }

View File

@@ -23,7 +23,6 @@ description.en_US = A music pack without actual music.
description.es_ES = Un conjunto de música vacío. description.es_ES = Un conjunto de música vacío.
description.es_MX = Paquete de música vacío description.es_MX = Paquete de música vacío
description.et_EE = Muusikakogu ilma muusikata. description.et_EE = Muusikakogu ilma muusikata.
description.eu_ES = Musika gabeko musika paketea.
description.fi_FI = Musiikkipaketti, jossa ei ole musiikkia. description.fi_FI = Musiikkipaketti, jossa ei ole musiikkia.
description.fr_FR = Un pack de musiques sans musiques. description.fr_FR = Un pack de musiques sans musiques.
description.ga_IE = Pacáiste ceoil gan aon cheol iarbhír ann. description.ga_IE = Pacáiste ceoil gan aon cheol iarbhír ann.
@@ -41,7 +40,6 @@ description.la_VA = Sarcina musicae sine ulla musica.
description.lb_LU = E Musikpack ouni aktuell Musik. description.lb_LU = E Musikpack ouni aktuell Musik.
description.lt_LT = Muzikos pakas be muzikos. description.lt_LT = Muzikos pakas be muzikos.
description.lv_LV = Mūzikas kopa bez mūzikas 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.nb_NO = En musikkpakke uten noe musikk.
description.nl_NL = Een muziekset zonder muziek. description.nl_NL = Een muziekset zonder muziek.
description.nn_NO = Ei musikkpakke utan noko musikk. description.nn_NO = Ei musikkpakke utan noko musikk.

View File

@@ -40,7 +40,6 @@ description.ko_KR = 아무런 효과음도 없는 효과음 팩입니다.
description.la_VA = Sarcina sonorum sine ullis sonis. description.la_VA = Sarcina sonorum sine ullis sonis.
description.lb_LU = E Soundpack ouni iergendee Sound. description.lb_LU = E Soundpack ouni iergendee Sound.
description.lt_LT = Garsų pakas be jokių garsų. 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.nb_NO = En lydpakke uten noen lyder.
description.nl_NL = Een geluidset zonder geluid. description.nl_NL = Een geluidset zonder geluid.
description.nn_NO = Ei lydpakke utan nokon lydar. description.nn_NO = Ei lydpakke utan nokon lydar.

Binary file not shown.

Binary file not shown.

View File

@@ -24,7 +24,6 @@ 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_ES = Gráficos originales de Transport Tycoon Deluxe versión DOS.
description.es_MX = Gráficos originales de Transport Tycoon Deluxe para DOS. description.es_MX = Gráficos originales de Transport Tycoon Deluxe para DOS.
description.et_EE = Algse Transport Tycoon Deluxe DOSi versiooni graafika. 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.fi_FI = Alkuperäiset Transport Tycoon Deluxen DOS-version grafiikat.
description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version DOS). description.fr_FR = Graphiques originaux de Transport Tycoon Deluxe (version DOS).
description.ga_IE = Grafaicí bunaidhTransport Tycoon Deluxe, eagrán DOS. description.ga_IE = Grafaicí bunaidhTransport Tycoon Deluxe, eagrán DOS.
@@ -41,7 +40,6 @@ description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에
description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe DOS. description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe DOS.
description.lb_LU = Original Transport Tycoon Deluxe DOS Editioun Grafik. description.lb_LU = Original Transport Tycoon Deluxe DOS Editioun Grafik.
description.lt_LT = Originali Transport Tycoon Deluxe DOS leidimo grafika. 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.ms_MY = Grafik asal Transport Tycoon Deluxe DOS edition.
description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for DOS. description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for DOS.
description.nl_NL = Originele graphics van de Transport Tycoon Deluxe DOS-versie. description.nl_NL = Originele graphics van de Transport Tycoon Deluxe DOS-versie.
@@ -64,21 +62,21 @@ description.zh_CN = 运输大亨DOS豪华版原版图形包.
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版的圖形。 description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版的圖形。
[files] [files]
base = TRG1.GRF base = TRG1.GRF
logos = TRGI.GRF logos = TRGI.GRF
arctic = TRGC.GRF arctic = TRGC.GRF
tropical = TRGH.GRF tropical = TRGH.GRF
toyland = TRGT.GRF toyland = TRGT.GRF
extra = ORIG_EXTRA.GRF extra = OPENTTD.GRF
[md5s] [md5s]
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192 TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8 TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9 TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6 TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
ORIG_EXTRA.GRF = 73b921a42814c47a84945b7e9add5d9f OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc
[origin] [origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM. default = You can find it on your Transport Tycoon Deluxe CD-ROM.
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation. OPENTTD.GRF = This file was part of your OpenTTD installation.

View File

@@ -23,7 +23,6 @@ description.en_US = Original Transport Tycoon Deluxe DOS edition sounds.
description.es_ES = Sonidos originales de Transport Tycoon Deluxe versión DOS. description.es_ES = Sonidos originales de Transport Tycoon Deluxe versión DOS.
description.es_MX = Sonidos originales de Transport Tycoon Deluxe para DOS. description.es_MX = Sonidos originales de Transport Tycoon Deluxe para DOS.
description.et_EE = Algse Transport Tycoon Deluxe DOSi versiooni helid. 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.fi_FI = Alkuperäiset Transport Tycoon Deluxen DOS-version äänet.
description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version DOS). description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version DOS).
description.ga_IE = Fuaimeanna bunaidh Transport Tycoon Deluxe, eagrán DOS. description.ga_IE = Fuaimeanna bunaidh Transport Tycoon Deluxe, eagrán DOS.

View File

@@ -40,7 +40,6 @@ description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 도스 에
description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe DOS (Germanica). 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.lb_LU = Original Transport Tycoon Deluxe DOS (Däitsch) Editioun Grafik.
description.lt_LT = Originali Transport Tycoon Deluxe DOS (Vokiečių) leidimo grafika. 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.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.nl_NL = Originele graphics van de Duitse Transport Tycoon Deluxe DOS-versie.
description.nn_NO = Original grafikk frå Transport Tycoon Deluxe for DOS (tysk). description.nn_NO = Original grafikk frå Transport Tycoon Deluxe for DOS (tysk).
@@ -62,21 +61,21 @@ description.zh_CN = 运输大亨DOS豪华德语版原版图形包.
description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版 (德國版) 的圖形。 description.zh_TW = 原版 Transport Tycoon Deluxe DOS 版 (德國版) 的圖形。
[files] [files]
base = TRG1.GRF base = TRG1.GRF
logos = TRGI.GRF logos = TRGI.GRF
arctic = TRGC.GRF arctic = TRGC.GRF
tropical = TRGH.GRF tropical = TRGH.GRF
toyland = TRGT.GRF toyland = TRGT.GRF
extra = ORIG_EXTRA.GRF extra = OPENTTD.GRF
[md5s] [md5s]
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192 TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8 TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9 TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
ORIG_EXTRA.GRF = 73b921a42814c47a84945b7e9add5d9f OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc
[origin] [origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM. default = You can find it on your Transport Tycoon Deluxe CD-ROM.
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation. OPENTTD.GRF = This file was part of your OpenTTD installation.

Binary file not shown.

View File

@@ -40,7 +40,6 @@ description.ko_KR = 오리지널 트랜스포트 타이쿤 디럭스 윈도 에
description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe Windows. description.la_VA = Graphica ex editione originale Transport Tycoon Deluxe Windows.
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Grafik. description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Grafik.
description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo grafika. 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.ms_MY = Grafik asal Transport Tycoon Deluxe edisi Windows.
description.nb_NO = Original grafikk fra Transport Tycoon Deluxe for 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.nl_NL = Originele graphics van de Transport Tycoon Deluxe Windows-versie.
@@ -63,21 +62,21 @@ description.zh_CN = 运输大亨Windows豪华版原版图形包.
description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的圖形。 description.zh_TW = 原版 Transport Tycoon Deluxe Windows 版的圖形。
[files] [files]
base = TRG1R.GRF base = TRG1R.GRF
logos = TRGIR.GRF logos = TRGIR.GRF
arctic = TRGCR.GRF arctic = TRGCR.GRF
tropical = TRGHR.GRF tropical = TRGHR.GRF
toyland = TRGTR.GRF toyland = TRGTR.GRF
extra = ORIG_EXTRA.GRF extra = OPENTTD.GRF
[md5s] [md5s]
TRG1R.GRF = b04ce593d8c5016e07473a743d7d3358 TRG1R.GRF = b04ce593d8c5016e07473a743d7d3358
TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32 TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1 TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8 TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
ORIG_EXTRA.GRF = 73b921a42814c47a84945b7e9add5d9f OPENTTD.GRF = 505d96061556d3bb5cec6234096ec5bc
[origin] [origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM. default = You can find it on your Transport Tycoon Deluxe CD-ROM.
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation. OPENTTD.GRF = This file was part of your OpenTTD installation.

View File

@@ -40,7 +40,6 @@ description.la_VA = Musica ex editione originale Transport Tycoon Deluxe Windows
description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Musik. description.lb_LU = Original Transport Tycoon Deluxe Windows Editioun Musik.
description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo muzika. description.lt_LT = Originali Transport Tycoon Deluxe Windows leidimo muzika.
description.lv_LV = Oriģinālā Transport Tycoon Deluxe Windows izdevuma mūzika. 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.nb_NO = Original musikk fra Transport Tycoon Deluxe for Windows.
description.nl_NL = Originele muziek van de Transport Tycoon Deluxe Windows-versie. description.nl_NL = Originele muziek van de Transport Tycoon Deluxe Windows-versie.
description.nn_NO = Original musikk frå Transport Tycoon Deluxe for Windows. description.nn_NO = Original musikk frå Transport Tycoon Deluxe for Windows.

View File

@@ -23,7 +23,6 @@ description.en_US = Original Transport Tycoon Deluxe Windows edition sounds.
description.es_ES = Sonidos originales de Transport Tycoon Deluxe versión Windows. description.es_ES = Sonidos originales de Transport Tycoon Deluxe versión Windows.
description.es_MX = Sonidos originales de Transport Tycoon Deluxe para Windows. description.es_MX = Sonidos originales de Transport Tycoon Deluxe para Windows.
description.et_EE = Algse Transport Tycoon Deluxe Windowsi versiooni helid. 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.fi_FI = Alkuperäiset Transport Tycoon Deluxen Windows-version äänet.
description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version Windows). description.fr_FR = Sons originaux de Transport Tycoon Deluxe (version Windows).
description.ga_IE = Fuaimeanna bunaidh Transport Tycoon Deluxe, eagrán Windows. description.ga_IE = Fuaimeanna bunaidh Transport Tycoon Deluxe, eagrán Windows.

View File

@@ -6,5 +6,3 @@
* 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. * 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/>. * 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.");

View File

@@ -1,8 +0,0 @@
/* $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/>.
*/

View File

@@ -1,70 +1,3 @@
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) 1.6.1 (2016-07-01)
------------------------------------------------------------------------ ------------------------------------------------------------------------
- Fix: Compilation and optimisation issues with GCC6 (r27606, r27605, r27595) - Fix: Compilation and optimisation issues with GCC6 (r27606, r27605, r27595)

View File

@@ -58,8 +58,8 @@ set_default() {
enable_translator="0" enable_translator="0"
enable_unicode="1" enable_unicode="1"
enable_console="1"; enable_console="1";
enable_assert="1" enable_assert="0"
enable_strip="0" enable_strip="1"
enable_universal="0" enable_universal="0"
enable_osx_g5="0" enable_osx_g5="0"
enable_cocoa_quartz="1" enable_cocoa_quartz="1"
@@ -1285,7 +1285,7 @@ make_compiler_cflags() {
# -W alone doesn't enable all warnings enabled by -Wall; on the other hand, # -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) # -Weverything enables too many useless warnings that can't be disabled (as of 3.0)
flags="$flags -Wall -W -Wextra" flags="$flags -Wall -W"
# warning: unused parameter '...' # warning: unused parameter '...'
flags="$flags -Wno-unused-parameter" flags="$flags -Wno-unused-parameter"
@@ -1326,20 +1326,13 @@ make_compiler_cflags() {
flags="$flags -Wno-unused-variable" flags="$flags -Wno-unused-variable"
fi 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. # rdynamic is used to get useful stack traces from crash reports.
ldflags="$ldflags -rdynamic" ldflags="$ldflags -rdynamic"
else else
# Enable some things only for certain GCC versions # Enable some things only for certain GCC versions
# cc_version = major_version * 100 + minor_version cc_version=`$1 -dumpversion | cut -c 1,3`
# 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 303 ]; then if [ $cc_version -lt 33 ]; then
log 1 "configure: error: gcc older than 3.3 can't compile OpenTTD because of its poor template support" log 1 "configure: error: gcc older than 3.3 can't compile OpenTTD because of its poor template support"
exit 1 exit 1
fi fi
@@ -1352,20 +1345,20 @@ make_compiler_cflags() {
if [ $enable_assert -eq 0 ]; then if [ $enable_assert -eq 0 ]; then
# Do not warn about unused variables when building without asserts # Do not warn about unused variables when building without asserts
flags="$flags -Wno-unused-variable" flags="$flags -Wno-unused-variable"
if [ $cc_version -ge 406 ]; then if [ $cc_version -ge 46 ]; then
# GCC 4.6 gives more warnings, disable them too # GCC 4.6 gives more warnings, disable them too
flags="$flags -Wno-unused-but-set-variable" flags="$flags -Wno-unused-but-set-variable"
flags="$flags -Wno-unused-but-set-parameter" flags="$flags -Wno-unused-but-set-parameter"
fi fi
fi fi
if [ $cc_version -ge 304 ]; then if [ $cc_version -ge 34 ]; then
# Warn when a variable is used to initialise itself: # Warn when a variable is used to initialise itself:
# int a = a; # int a = a;
flags="$flags -Winit-self" flags="$flags -Winit-self"
fi fi
if [ $cc_version -ge 400 ]; then if [ $cc_version -ge 40 ]; then
# GCC 4.0+ complains about that we break strict-aliasing. # 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 # On most places we don't see how to fix it, and it doesn't
# break anything. So disable strict-aliasing to make the # break anything. So disable strict-aliasing to make the
@@ -1376,7 +1369,7 @@ make_compiler_cflags() {
flags="$flags -Wcast-qual" flags="$flags -Wcast-qual"
fi fi
if [ $cc_version -ge 402 ]; then if [ $cc_version -ge 42 ]; then
# GCC 4.2+ automatically assumes that signed overflows do # GCC 4.2+ automatically assumes that signed overflows do
# not occur in signed arithmetics, whereas we are not # not occur in signed arithmetics, whereas we are not
# sure that they will not happen. It furthermore complains # sure that they will not happen. It furthermore complains
@@ -1387,31 +1380,28 @@ make_compiler_cflags() {
flags="$flags -Wnon-virtual-dtor" flags="$flags -Wnon-virtual-dtor"
fi fi
if [ $cc_version -ge 403 ] && [ $cc_version -lt 600 ]; then if [ $cc_version -ge 43 ] && [ $cc_version -lt 60 ]; then
# Use gnu++0x mode so static_assert() is available. # Use gnu++0x mode so static_assert() is available.
# Don't use c++0x, it breaks mingw (with gcc 4.4.0). # Don't use c++0x, it breaks mingw (with gcc 4.4.0).
cxxflags="$cxxflags -std=gnu++0x" cxxflags="$cxxflags -std=gnu++0x"
fi fi
if [ $cc_version -eq 405 ]; then if [ $cc_version -eq 45 ]; then
# Prevent optimisation supposing enums are in a range specified by the standard # Prevent optimisation supposing enums are in a range specified by the standard
# For details, see http://gcc.gnu.org/PR43680 # For details, see http://gcc.gnu.org/PR43680
flags="$flags -fno-tree-vrp" flags="$flags -fno-tree-vrp"
fi fi
if [ $cc_version -eq 407 ]; then if [ $cc_version -ge 47 ]; then
# Disable -Wnarrowing which gives many warnings, such as: # Disable -Wnarrowing which gives many warnings, such as:
# warning: narrowing conversion of '...' from 'unsigned int' to 'int' inside { } [-Wnarrowing] # warning: narrowing conversion of '...' from 'unsigned int' to 'int' inside { } [-Wnarrowing]
# They are valid according to the C++ standard, but useless. # They are valid according to the C++ standard, but useless.
cxxflags="$cxxflags -Wno-narrowing" cxxflags="$cxxflags -Wno-narrowing"
fi
if [ $cc_version -ge 407 ]; then
# Disable bogus 'attempt to free a non-heap object' warning # Disable bogus 'attempt to free a non-heap object' warning
flags="$flags -Wno-free-nonheap-object" flags="$flags -Wno-free-nonheap-object"
fi fi
if [ $cc_version -ge 600 ]; then if [ $cc_version -ge 60 ]; then
# -flifetime-dse=2 (default since GCC 6) doesn't play # -flifetime-dse=2 (default since GCC 6) doesn't play
# well with our custom pool item allocator # well with our custom pool item allocator
cxxflags="$cxxflags -flifetime-dse=1 -std=gnu++14" cxxflags="$cxxflags -flifetime-dse=1 -std=gnu++14"
@@ -1422,7 +1412,7 @@ make_compiler_cflags() {
has_lto=`$1 -dumpspecs | grep '\%{flto'` has_lto=`$1 -dumpspecs | grep '\%{flto'`
if [ -n "$has_lto" ]; then if [ -n "$has_lto" ]; then
# Use LTO only if we see LTO exists and is requested # Use LTO only if we see LTO exists and is requested
if [ $cc_version -lt 406 ]; then if [ $cc_version -lt 46 ]; then
flags="$flags -flto" flags="$flags -flto"
else else
flags="$flags -flto=jobserver" flags="$flags -flto=jobserver"
@@ -1521,7 +1511,7 @@ make_cflags_and_ldflags() {
fi fi
fi fi
if [ "$os" = "OSX" ] && [ $cc_version -eq 400 ]; then if [ "$os" = "OSX" ] && [ $cc_version -eq 40 ]; then
# Apple's GCC 4.0 has a compiler bug for x86_64 with (higher) optimization, # Apple's GCC 4.0 has a compiler bug for x86_64 with (higher) optimization,
# wrongly optimizing ^= in loops. This disables the failing optimisation. # wrongly optimizing ^= in loops. This disables the failing optimisation.
CFLAGS="$CFLAGS -fno-expensive-optimizations" CFLAGS="$CFLAGS -fno-expensive-optimizations"
@@ -1545,7 +1535,7 @@ make_cflags_and_ldflags() {
LDFLAGS="$LDFLAGS -mwin32" LDFLAGS="$LDFLAGS -mwin32"
fi fi
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then
if [ $cc_version -lt 406 ]; then if [ $cc_version -lt 46 ]; then
flags="$flags -mno-cygwin" flags="$flags -mno-cygwin"
LDFLAGS="$LDFLAGS -mno-cygwin" LDFLAGS="$LDFLAGS -mno-cygwin"
fi fi
@@ -1558,10 +1548,10 @@ make_cflags_and_ldflags() {
LIBS="$LIBS -lws2_32 -lwinmm -lgdi32 -ldxguid -lole32 -limm32" LIBS="$LIBS -lws2_32 -lwinmm -lgdi32 -ldxguid -lole32 -limm32"
if [ $cc_version -ge 404 ]; then if [ $cc_version -ge 44 ]; then
LDFLAGS_BUILD="$LDFLAGS_BUILD -static-libgcc -static-libstdc++" LDFLAGS_BUILD="$LDFLAGS_BUILD -static-libgcc -static-libstdc++"
fi fi
if [ $cc_version -ge 407 ]; then if [ $cc_version -ge 47 ]; then
CFLAGS="$CFLAGS -mno-ms-bitfields" CFLAGS="$CFLAGS -mno-ms-bitfields"
fi fi
fi fi
@@ -1611,6 +1601,23 @@ make_cflags_and_ldflags() {
CFLAGS="$OSX_SYSROOT $CFLAGS" CFLAGS="$OSX_SYSROOT $CFLAGS"
LDFLAGS="$OSX_LD_SYSROOT $LDFLAGS" LDFLAGS="$OSX_LD_SYSROOT $LDFLAGS"
fi 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 fi
if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ]; then if [ "$os" = "BEOS" ] || [ "$os" = "HAIKU" ]; then
@@ -1773,7 +1780,7 @@ make_cflags_and_ldflags() {
# GCC 4.0+ doesn't like the DirectX includes (gives tons of # 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 # warnings on it we won't be able to fix). For now just
# suppress those warnings. # suppress those warnings.
if [ $cc_version -ge 400 ]; then if [ $cc_version -ge 40 ]; then
CFLAGS="$CFLAGS -Wno-non-virtual-dtor" CFLAGS="$CFLAGS -Wno-non-virtual-dtor"
fi fi
fi fi

View File

@@ -1,6 +1,6 @@
OpenTTD's known bugs OpenTTD's known bugs
Last updated: 2017-05-04 Last updated: 2016-07-01
Release version: 1.7.1-RC1 Release version: 1.6.1
------------------------------------------------------------------------ ------------------------------------------------------------------------

View File

@@ -11,21 +11,21 @@ palette = DOS
!! description STR_BASEGRAPHICS_DOS_DESCRIPTION !! description STR_BASEGRAPHICS_DOS_DESCRIPTION
[files] [files]
base = TRG1.GRF base = TRG1.GRF
logos = TRGI.GRF logos = TRGI.GRF
arctic = TRGC.GRF arctic = TRGC.GRF
tropical = TRGH.GRF tropical = TRGH.GRF
toyland = TRGT.GRF toyland = TRGT.GRF
extra = ORIG_EXTRA.GRF extra = OPENTTD.GRF
[md5s] [md5s]
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192 TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8 TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9 TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6 TRGT.GRF = e30e8a398ae86c03dc534a8ac7dfb3b6
ORIG_EXTRA.GRF = OPENTTD.GRF =
[origin] [origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM. default = You can find it on your Transport Tycoon Deluxe CD-ROM.
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation. OPENTTD.GRF = This file was part of your OpenTTD installation.

View File

@@ -11,21 +11,21 @@ palette = DOS
!! description STR_BASEGRAPHICS_DOS_DE_DESCRIPTION !! description STR_BASEGRAPHICS_DOS_DE_DESCRIPTION
[files] [files]
base = TRG1.GRF base = TRG1.GRF
logos = TRGI.GRF logos = TRGI.GRF
arctic = TRGC.GRF arctic = TRGC.GRF
tropical = TRGH.GRF tropical = TRGH.GRF
toyland = TRGT.GRF toyland = TRGT.GRF
extra = ORIG_EXTRA.GRF extra = OPENTTD.GRF
[md5s] [md5s]
TRG1.GRF = 9311676280e5b14077a8ee41c1b42192 TRG1.GRF = 9311676280e5b14077a8ee41c1b42192
TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8 TRGI.GRF = da6a6c9dcc451eec88d79211437b76a8
TRGC.GRF = ed446637e034104c5559b32c18afe78d TRGC.GRF = ed446637e034104c5559b32c18afe78d
TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9 TRGH.GRF = ee6616fb0e6ef6b24892c58c93d86fc9
TRGT.GRF = fcde1d7e8a74197d72a62695884b909e TRGT.GRF = fcde1d7e8a74197d72a62695884b909e
ORIG_EXTRA.GRF = OPENTTD.GRF =
[origin] [origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM. default = You can find it on your Transport Tycoon Deluxe CD-ROM.
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation. OPENTTD.GRF = This file was part of your OpenTTD installation.

View File

@@ -11,21 +11,21 @@ palette = Windows
!! description STR_BASEGRAPHICS_WIN_DESCRIPTION !! description STR_BASEGRAPHICS_WIN_DESCRIPTION
[files] [files]
base = TRG1R.GRF base = TRG1R.GRF
logos = TRGIR.GRF logos = TRGIR.GRF
arctic = TRGCR.GRF arctic = TRGCR.GRF
tropical = TRGHR.GRF tropical = TRGHR.GRF
toyland = TRGTR.GRF toyland = TRGTR.GRF
extra = ORIG_EXTRA.GRF extra = OPENTTD.GRF
[md5s] [md5s]
TRG1R.GRF = b04ce593d8c5016e07473a743d7d3358 TRG1R.GRF = b04ce593d8c5016e07473a743d7d3358
TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32 TRGIR.GRF = 0c2484ff6be49fc63a83be6ab5c38f32
TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b TRGCR.GRF = 3668f410c761a050b5e7095a2b14879b
TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1 TRGHR.GRF = 06bf2b7a31766f048baac2ebe43457b1
TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8 TRGTR.GRF = de53650517fe661ceaa3138c6edb0eb8
ORIG_EXTRA.GRF = OPENTTD.GRF =
[origin] [origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM. default = You can find it on your Transport Tycoon Deluxe CD-ROM.
ORIG_EXTRA.GRF = This file was part of your OpenTTD installation. OPENTTD.GRF = This file was part of your OpenTTD installation.

View File

@@ -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. // 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/>. // 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" -1 * 0 0C "Canal graphics by George / PaulC"
-1 * 3 05 08 41 -1 * 3 05 08 41
// Canal slopes // Canal slopes
-1 sprites/canal_locks.png 8bpp 66 8 64 23 -31 0 normal -1 sprites/canal_locks.png 8bpp 66 8 64 23 -31 0 normal
@@ -77,3 +77,95 @@
-1 sprites/canals.png 8bpp 446 10 24 16 -11 -6 normal -1 sprites/canals.png 8bpp 446 10 24 16 -11 -6 normal
// Canal icon // Canal icon
-1 sprites/canal_locks.png 8bpp 50 232 20 20 0 0 normal -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

View File

@@ -1,101 +0,0 @@
//
// $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

View File

@@ -60,11 +60,10 @@
00 00
// GRF ID, must start with FF so it gets ignored // GRF ID, must start with FF so it gets ignored
//@@WARNING DISABLE 101 -1 * 0 08 08 FF "OTT"
-1 * 0 08 08 FF FF FF FE
// Name of the GRF // Name of the GRF
"OpenTTD's default and fallback extra graphics" 00 "OpenTTD's base graphics " 00
// Description of the GRF. // Description of the GRF.
"License: GNU General Public License version 2" 0D "License: GNU General Public License version 2" 0D
@@ -87,6 +86,7 @@
#include "canals.nfo" #include "canals.nfo"
#include "oneway.nfo" #include "oneway.nfo"
#include "tramtracks.nfo" #include "tramtracks.nfo"
#include "shore.nfo"
#include "sloped_tracks.nfo" #include "sloped_tracks.nfo"
#include "airports.nfo" #include "airports.nfo"
#include "roadstops.nfo" #include "roadstops.nfo"
@@ -97,5 +97,11 @@
#include "airport_preview.nfo" #include "airport_preview.nfo"
#include "chars.nfo" #include "chars.nfo"
#include "mono.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 "tunnel_portals.nfo"
#include "palette.nfo" #include "palette.nfo"

View File

@@ -1,85 +0,0 @@
// 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 "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"

View File

@@ -1,21 +1,3 @@
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 openttd (1.6.1-0) unstable; urgency=low
* New upstream release 1.6.1 * New upstream release 1.6.1

View File

@@ -5,7 +5,7 @@ Source: http://www.openttd.org
Files: * Files: *
Copyright: © 2004-2017 Ludvig Strigeous and others. Copyright: © 2004-2012 Ludvig Strigeous and others.
License: GPL-2.0 License: GPL-2.0
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License version 2.0 as

View File

@@ -1,6 +1,6 @@
@echo off @echo off
set OPENTTD_VERSION=1.7.0 set OPENTTD_VERSION=1.6.0
set OPENSFX_VERSION=0.8.0 set OPENSFX_VERSION=0.8.0
set NOSOUND_VERSION=0.8.0 set NOSOUND_VERSION=0.8.0
set OPENGFX_VERSION=1.2.0 set OPENGFX_VERSION=1.2.0

View File

@@ -2,7 +2,7 @@
# spec file for package openttd # spec file for package openttd
# #
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany. # Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2007-2017 The OpenTTD developers # Copyright (c) 2007-2012 The OpenTTD developers
# #
# All modifications and additions to the file contributed by third parties # All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed # remain the property of their copyright owners, unless otherwise agreed
@@ -17,9 +17,9 @@
# #
Name: openttd Name: openttd
Version: 1.7.beta1 Version: 1.6.beta1
Release: 0 Release: 0
%define srcver 1.7.0-beta1 %define srcver 1.6.0-beta1
Summary: An open source reimplementation of Chris Sawyer's Transport Tycoon Deluxe Summary: An open source reimplementation of Chris Sawyer's Transport Tycoon Deluxe
License: GPL-2.0 License: GPL-2.0
Group: Amusements/Games/Strategy/Other Group: Amusements/Games/Strategy/Other

View File

@@ -1,9 +1,9 @@
# Version numbers to update # Version numbers to update
!define APPV_MAJOR 1 !define APPV_MAJOR 1
!define APPV_MINOR 7 !define APPV_MINOR 6
!define APPV_MAINT 1 !define APPV_MAINT 1
!define APPV_BUILD 0 !define APPV_BUILD 1
!define APPV_EXTRA "-RC1" !define APPV_EXTRA ""
!define APPNAME "OpenTTD" ; Define application name !define APPNAME "OpenTTD" ; Define application name
!define APPVERSION "${APPV_MAJOR}.${APPV_MINOR}.${APPV_MAINT}${APPV_EXTRA}" ; Define application version !define APPVERSION "${APPV_MAJOR}.${APPV_MINOR}.${APPV_MAINT}${APPV_EXTRA}" ; Define application version
@@ -408,7 +408,6 @@ Section "Uninstall"
; Baseset files ; Baseset files
Delete "$INSTDIR\baseset\opntitle.dat" Delete "$INSTDIR\baseset\opntitle.dat"
Delete "$INSTDIR\baseset\openttd.grf" Delete "$INSTDIR\baseset\openttd.grf"
Delete "$INSTDIR\baseset\orig_extra.grf"
Delete "$INSTDIR\baseset\orig_win.obg" Delete "$INSTDIR\baseset\orig_win.obg"
Delete "$INSTDIR\baseset\orig_dos.obg" Delete "$INSTDIR\baseset\orig_dos.obg"
Delete "$INSTDIR\baseset\orig_dos_de.obg" Delete "$INSTDIR\baseset\orig_dos_de.obg"

View File

@@ -1,7 +0,0 @@
<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>

View File

@@ -102,7 +102,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed> <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers> <OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <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_SORT;WITH_ICU_LAYOUT;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";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -145,9 +145,6 @@
<TargetMachine>MachineX86</TargetMachine> <TargetMachine>MachineX86</TargetMachine>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link> </Link>
<Manifest>
<AdditionalManifestFiles>dpi_aware.manifest</AdditionalManifestFiles>
</Manifest>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Midl> <Midl>
@@ -191,9 +188,6 @@
</DataExecutionPrevention> </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine> <TargetMachine>MachineX86</TargetMachine>
</Link> </Link>
<Manifest>
<AdditionalManifestFiles>dpi_aware.manifest</AdditionalManifestFiles>
</Manifest>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Midl> <Midl>
@@ -210,7 +204,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed> <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers> <OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <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_SORT;WITH_ICU_LAYOUT;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;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -250,9 +244,6 @@
<TargetMachine>MachineX64</TargetMachine> <TargetMachine>MachineX64</TargetMachine>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link> </Link>
<Manifest>
<AdditionalManifestFiles>dpi_aware.manifest</AdditionalManifestFiles>
</Manifest>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Midl> <Midl>
@@ -298,9 +289,6 @@
<StackCommitSize>1048576</StackCommitSize> <StackCommitSize>1048576</StackCommitSize>
<TargetMachine>MachineX64</TargetMachine> <TargetMachine>MachineX64</TargetMachine>
</Link> </Link>
<Manifest>
<AdditionalManifestFiles>dpi_aware.manifest</AdditionalManifestFiles>
</Manifest>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\src\airport.cpp" /> <ClCompile Include="..\src\airport.cpp" />

View File

@@ -102,7 +102,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed> <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers> <OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <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_SORT;WITH_ICU_LAYOUT;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";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -145,9 +145,6 @@
<TargetMachine>MachineX86</TargetMachine> <TargetMachine>MachineX86</TargetMachine>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link> </Link>
<Manifest>
<AdditionalManifestFiles>dpi_aware.manifest</AdditionalManifestFiles>
</Manifest>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Midl> <Midl>
@@ -191,9 +188,6 @@
</DataExecutionPrevention> </DataExecutionPrevention>
<TargetMachine>MachineX86</TargetMachine> <TargetMachine>MachineX86</TargetMachine>
</Link> </Link>
<Manifest>
<AdditionalManifestFiles>dpi_aware.manifest</AdditionalManifestFiles>
</Manifest>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Midl> <Midl>
@@ -210,7 +204,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed> <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers> <OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <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_SORT;WITH_ICU_LAYOUT;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;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -250,9 +244,6 @@
<TargetMachine>MachineX64</TargetMachine> <TargetMachine>MachineX64</TargetMachine>
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
</Link> </Link>
<Manifest>
<AdditionalManifestFiles>dpi_aware.manifest</AdditionalManifestFiles>
</Manifest>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Midl> <Midl>
@@ -298,9 +289,6 @@
<StackCommitSize>1048576</StackCommitSize> <StackCommitSize>1048576</StackCommitSize>
<TargetMachine>MachineX64</TargetMachine> <TargetMachine>MachineX64</TargetMachine>
</Link> </Link>
<Manifest>
<AdditionalManifestFiles>dpi_aware.manifest</AdditionalManifestFiles>
</Manifest>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
!!FILES!! !!FILES!!

View File

@@ -105,7 +105,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed> <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers> <OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <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_SORT;WITH_ICU_LAYOUT;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";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -151,9 +151,6 @@
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<MinimumRequiredVersion>5.01</MinimumRequiredVersion> <MinimumRequiredVersion>5.01</MinimumRequiredVersion>
</Link> </Link>
<Manifest>
<EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
</Manifest>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Midl> <Midl>
@@ -201,9 +198,6 @@
<TargetMachine>MachineX86</TargetMachine> <TargetMachine>MachineX86</TargetMachine>
<MinimumRequiredVersion>5.01</MinimumRequiredVersion> <MinimumRequiredVersion>5.01</MinimumRequiredVersion>
</Link> </Link>
<Manifest>
<EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
</Manifest>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Midl> <Midl>
@@ -220,7 +214,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed> <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers> <OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <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_SORT;WITH_ICU_LAYOUT;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;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -263,9 +257,6 @@
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<MinimumRequiredVersion>5.02</MinimumRequiredVersion> <MinimumRequiredVersion>5.02</MinimumRequiredVersion>
</Link> </Link>
<Manifest>
<EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
</Manifest>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Midl> <Midl>
@@ -315,9 +306,6 @@
<TargetMachine>MachineX64</TargetMachine> <TargetMachine>MachineX64</TargetMachine>
<MinimumRequiredVersion>5.02</MinimumRequiredVersion> <MinimumRequiredVersion>5.02</MinimumRequiredVersion>
</Link> </Link>
<Manifest>
<EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
</Manifest>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="..\src\airport.cpp" /> <ClCompile Include="..\src\airport.cpp" />

View File

@@ -105,7 +105,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed> <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers> <OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <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_SORT;WITH_ICU_LAYOUT;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";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -151,9 +151,6 @@
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<MinimumRequiredVersion>5.01</MinimumRequiredVersion> <MinimumRequiredVersion>5.01</MinimumRequiredVersion>
</Link> </Link>
<Manifest>
<EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
</Manifest>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Midl> <Midl>
@@ -201,9 +198,6 @@
<TargetMachine>MachineX86</TargetMachine> <TargetMachine>MachineX86</TargetMachine>
<MinimumRequiredVersion>5.01</MinimumRequiredVersion> <MinimumRequiredVersion>5.01</MinimumRequiredVersion>
</Link> </Link>
<Manifest>
<EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
</Manifest>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<Midl> <Midl>
@@ -220,7 +214,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed> <FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers> <OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <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_SORT;WITH_ICU_LAYOUT;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;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling> <ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary> <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -263,9 +257,6 @@
<EnableCOMDATFolding>true</EnableCOMDATFolding> <EnableCOMDATFolding>true</EnableCOMDATFolding>
<MinimumRequiredVersion>5.02</MinimumRequiredVersion> <MinimumRequiredVersion>5.02</MinimumRequiredVersion>
</Link> </Link>
<Manifest>
<EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
</Manifest>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<Midl> <Midl>
@@ -315,9 +306,6 @@
<TargetMachine>MachineX64</TargetMachine> <TargetMachine>MachineX64</TargetMachine>
<MinimumRequiredVersion>5.02</MinimumRequiredVersion> <MinimumRequiredVersion>5.02</MinimumRequiredVersion>
</Link> </Link>
<Manifest>
<EnableDpiAwareness>PerMonitorHighDPIAware</EnableDpiAwareness>
</Manifest>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
!!FILES!! !!FILES!!

View File

@@ -52,7 +52,7 @@
FavorSizeOrSpeed="2" FavorSizeOrSpeed="2"
OmitFramePointers="true" OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" 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_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;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=\&quot;OpenTTD\&quot;"
StringPooling="true" StringPooling="true"
ExceptionHandling="1" ExceptionHandling="1"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -257,7 +257,7 @@
FavorSizeOrSpeed="2" FavorSizeOrSpeed="2"
OmitFramePointers="true" OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" 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_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_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=\&quot;OpenTTD\&quot;;_SQ64"
StringPooling="true" StringPooling="true"
ExceptionHandling="1" ExceptionHandling="1"
RuntimeLibrary="0" RuntimeLibrary="0"

View File

@@ -52,7 +52,7 @@
FavorSizeOrSpeed="2" FavorSizeOrSpeed="2"
OmitFramePointers="true" OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" 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_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;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=\&quot;OpenTTD\&quot;"
StringPooling="true" StringPooling="true"
ExceptionHandling="1" ExceptionHandling="1"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -257,7 +257,7 @@
FavorSizeOrSpeed="2" FavorSizeOrSpeed="2"
OmitFramePointers="true" OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" 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_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_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=\&quot;OpenTTD\&quot;;_SQ64"
StringPooling="true" StringPooling="true"
ExceptionHandling="1" ExceptionHandling="1"
RuntimeLibrary="0" RuntimeLibrary="0"

View File

@@ -53,7 +53,7 @@
FavorSizeOrSpeed="2" FavorSizeOrSpeed="2"
OmitFramePointers="true" OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" 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_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;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=\&quot;OpenTTD\&quot;"
StringPooling="true" StringPooling="true"
ExceptionHandling="1" ExceptionHandling="1"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -255,7 +255,7 @@
FavorSizeOrSpeed="2" FavorSizeOrSpeed="2"
OmitFramePointers="true" OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" 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_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_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=\&quot;OpenTTD\&quot;;_SQ64"
StringPooling="true" StringPooling="true"
ExceptionHandling="1" ExceptionHandling="1"
RuntimeLibrary="0" RuntimeLibrary="0"

View File

@@ -53,7 +53,7 @@
FavorSizeOrSpeed="2" FavorSizeOrSpeed="2"
OmitFramePointers="true" OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" 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_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;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=\&quot;OpenTTD\&quot;"
StringPooling="true" StringPooling="true"
ExceptionHandling="1" ExceptionHandling="1"
RuntimeLibrary="0" RuntimeLibrary="0"
@@ -255,7 +255,7 @@
FavorSizeOrSpeed="2" FavorSizeOrSpeed="2"
OmitFramePointers="true" OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include" 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_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_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=\&quot;OpenTTD\&quot;;_SQ64"
StringPooling="true" StringPooling="true"
ExceptionHandling="1" ExceptionHandling="1"
RuntimeLibrary="0" RuntimeLibrary="0"

View File

@@ -1,5 +1,5 @@
Last updated: 2017-05-04 Last updated: 2016-07-01
Release version: 1.7.1-RC1 Release version: 1.6.1
------------------------------------------------------------------------ ------------------------------------------------------------------------

View File

@@ -306,6 +306,7 @@ struct AISettingsWindow : public Window {
timeout(0) timeout(0)
{ {
this->ai_config = GetConfig(slot); this->ai_config = GetConfig(slot);
this->RebuildVisibleSettings();
this->CreateNestedTree(); this->CreateNestedTree();
this->vscroll = this->GetScrollbar(WID_AIS_SCROLLBAR); this->vscroll = this->GetScrollbar(WID_AIS_SCROLLBAR);
@@ -313,7 +314,7 @@ struct AISettingsWindow : public Window {
this->SetWidgetDisabledState(WID_AIS_RESET, _game_mode != GM_MENU && Company::IsValidID(this->slot)); this->SetWidgetDisabledState(WID_AIS_RESET, _game_mode != GM_MENU && Company::IsValidID(this->slot));
this->RebuildVisibleSettings(); this->vscroll->SetCount((int)this->visible_settings.size());
} }
virtual void SetStringParameters(int widget) const virtual void SetStringParameters(int widget) const
@@ -341,8 +342,6 @@ struct AISettingsWindow : public Window {
visible_settings.push_back(&(*it)); 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) virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
@@ -532,23 +531,21 @@ struct AISettingsWindow : public Window {
virtual void OnQueryTextFinished(char *str) virtual void OnQueryTextFinished(char *str)
{ {
if (StrEmpty(str)) return; if (StrEmpty(str)) return;
VisibleSettingsList::const_iterator it = this->visible_settings.begin(); ScriptConfigItemList::const_iterator it = this->ai_config->GetConfigList()->begin();
for (int i = 0; i < this->clicked_row; i++) it++; for (int i = 0; i < this->clicked_row; i++) it++;
const ScriptConfigItem config_item = **it; if (_game_mode == GM_NORMAL && ((this->slot == OWNER_DEITY) || Company::IsValidID(this->slot)) && (it->flags & SCRIPTCONFIG_INGAME) == 0) return;
if (_game_mode == GM_NORMAL && ((this->slot == OWNER_DEITY) || Company::IsValidID(this->slot)) && (config_item.flags & SCRIPTCONFIG_INGAME) == 0) return;
int32 value = atoi(str); int32 value = atoi(str);
this->ai_config->SetSetting(config_item.name, value); this->ai_config->SetSetting((*it).name, value);
this->SetDirty(); this->SetDirty();
} }
virtual void OnDropdownSelect(int widget, int index) virtual void OnDropdownSelect(int widget, int index)
{ {
assert(this->clicked_dropdown); assert(this->clicked_dropdown);
VisibleSettingsList::const_iterator it = this->visible_settings.begin(); ScriptConfigItemList::const_iterator it = this->ai_config->GetConfigList()->begin();
for (int i = 0; i < this->clicked_row; i++) it++; for (int i = 0; i < this->clicked_row; i++) it++;
const ScriptConfigItem config_item = **it; if (_game_mode == GM_NORMAL && ((this->slot == OWNER_DEITY) || Company::IsValidID(this->slot)) && (it->flags & SCRIPTCONFIG_INGAME) == 0) return;
if (_game_mode == GM_NORMAL && ((this->slot == OWNER_DEITY) || Company::IsValidID(this->slot)) && (config_item.flags & SCRIPTCONFIG_INGAME) == 0) return; this->ai_config->SetSetting((*it).name, index);
this->ai_config->SetSetting(config_item.name, index);
this->SetDirty(); this->SetDirty();
} }

View File

@@ -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 || 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.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.7") == 0; strcmp(api_version, "1.5") == 0 || strcmp(api_version, "1.6") == 0;
} }
#if defined(WIN32) #if defined(WIN32)

View File

@@ -93,7 +93,7 @@ struct Aircraft FINAL : public SpecializedVehicle<Aircraft, VEH_AIRCRAFT> {
void UpdateDeltaXY(Direction direction); void UpdateDeltaXY(Direction direction);
ExpensesType GetExpenseType(bool income) const { return income ? EXPENSES_AIRCRAFT_INC : EXPENSES_AIRCRAFT_RUN; } ExpensesType GetExpenseType(bool income) const { return income ? EXPENSES_AIRCRAFT_INC : EXPENSES_AIRCRAFT_RUN; }
bool IsPrimaryVehicle() const { return this->IsNormalAircraft(); } bool IsPrimaryVehicle() const { return this->IsNormalAircraft(); }
void GetImage(Direction direction, EngineImageType image_type, VehicleSpriteSeq *result) const; SpriteID GetImage(Direction direction, EngineImageType image_type) const;
int GetDisplaySpeed() const { return this->cur_speed; } int GetDisplaySpeed() const { return this->cur_speed; }
int GetDisplayMaxSpeed() const { return this->vcache.cached_max_speed; } int GetDisplayMaxSpeed() const { return this->vcache.cached_max_speed; }
int GetSpeedOldUnits() const { return this->vcache.cached_max_speed * 10 / 128; } 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) #define FOR_ALL_AIRCRAFT(var) FOR_ALL_VEHICLES_OF_TYPE(Aircraft, var)
void GetRotorImage(const Aircraft *v, EngineImageType image_type, VehicleSpriteSeq *result); SpriteID GetRotorImage(const Aircraft *v, EngineImageType image_type);
Station *GetTargetAirportIfValid(const Aircraft *v); Station *GetTargetAirportIfValid(const Aircraft *v);

View File

@@ -152,69 +152,64 @@ static StationID FindNearestHangar(const Aircraft *v)
return index; return index;
} }
void Aircraft::GetImage(Direction direction, EngineImageType image_type, VehicleSpriteSeq *result) const SpriteID Aircraft::GetImage(Direction direction, EngineImageType image_type) const
{ {
uint8 spritenum = this->spritenum; uint8 spritenum = this->spritenum;
if (is_custom_sprite(spritenum)) { if (is_custom_sprite(spritenum)) {
GetCustomVehicleSprite(this, direction, image_type, result); SpriteID sprite = GetCustomVehicleSprite(this, direction, image_type);
if (result->IsValid()) return; if (sprite != 0) return sprite;
spritenum = this->GetEngine()->original_image_index; spritenum = this->GetEngine()->original_image_index;
} }
assert(IsValidImageIndex<VEH_AIRCRAFT>(spritenum)); assert(IsValidImageIndex<VEH_AIRCRAFT>(spritenum));
result->Set(direction + _aircraft_sprite[spritenum]); return direction + _aircraft_sprite[spritenum];
} }
void GetRotorImage(const Aircraft *v, EngineImageType image_type, VehicleSpriteSeq *result) SpriteID GetRotorImage(const Aircraft *v, EngineImageType image_type)
{ {
assert(v->subtype == AIR_HELICOPTER); assert(v->subtype == AIR_HELICOPTER);
const Aircraft *w = v->Next()->Next(); const Aircraft *w = v->Next()->Next();
if (is_custom_sprite(v->spritenum)) { if (is_custom_sprite(v->spritenum)) {
GetCustomRotorSprite(v, false, image_type, result); SpriteID sprite = GetCustomRotorSprite(v, false, image_type);
if (result->IsValid()) return; if (sprite != 0) return sprite;
} }
/* Return standard rotor sprites if there are no custom sprites for this helicopter */ /* Return standard rotor sprites if there are no custom sprites for this helicopter */
result->Set(SPR_ROTOR_STOPPED + w->state); return SPR_ROTOR_STOPPED + w->state;
} }
static void GetAircraftIcon(EngineID engine, EngineImageType image_type, VehicleSpriteSeq *result) static SpriteID GetAircraftIcon(EngineID engine, EngineImageType image_type)
{ {
const Engine *e = Engine::Get(engine); const Engine *e = Engine::Get(engine);
uint8 spritenum = e->u.air.image_index; uint8 spritenum = e->u.air.image_index;
if (is_custom_sprite(spritenum)) { if (is_custom_sprite(spritenum)) {
GetCustomVehicleIcon(engine, DIR_W, image_type, result); SpriteID sprite = GetCustomVehicleIcon(engine, DIR_W, image_type);
if (result->IsValid()) return; if (sprite != 0) return sprite;
spritenum = e->original_image_index; spritenum = e->original_image_index;
} }
assert(IsValidImageIndex<VEH_AIRCRAFT>(spritenum)); assert(IsValidImageIndex<VEH_AIRCRAFT>(spritenum));
result->Set(DIR_W + _aircraft_sprite[spritenum]); return DIR_W + _aircraft_sprite[spritenum];
} }
void DrawAircraftEngine(int left, int right, int preferred_x, int y, EngineID engine, PaletteID pal, EngineImageType image_type) void DrawAircraftEngine(int left, int right, int preferred_x, int y, EngineID engine, PaletteID pal, EngineImageType image_type)
{ {
VehicleSpriteSeq seq; SpriteID sprite = GetAircraftIcon(engine, image_type);
GetAircraftIcon(engine, image_type, &seq); const Sprite *real_sprite = GetSprite(sprite, ST_NORMAL);
Rect rect;
seq.GetBounds(&rect);
preferred_x = Clamp(preferred_x, preferred_x = Clamp(preferred_x,
left - UnScaleGUI(rect.left), left - UnScaleGUI(real_sprite->x_offs),
right - UnScaleGUI(rect.right)); right - UnScaleGUI(real_sprite->width) - UnScaleGUI(real_sprite->x_offs));
DrawSprite(sprite, pal, preferred_x, y);
seq.Draw(preferred_x, y, pal, pal == PALETTE_CRASH);
if (!(AircraftVehInfo(engine)->subtype & AIR_CTOL)) { if (!(AircraftVehInfo(engine)->subtype & AIR_CTOL)) {
VehicleSpriteSeq rotor_seq; SpriteID rotor_sprite = GetCustomRotorIcon(engine, image_type);
GetCustomRotorIcon(engine, image_type, &rotor_seq); if (rotor_sprite == 0) rotor_sprite = SPR_ROTOR_STOPPED;
if (!rotor_seq.IsValid()) rotor_seq.Set(SPR_ROTOR_STOPPED); DrawSprite(rotor_sprite, PAL_NONE, preferred_x, y - ScaleGUITrad(5));
rotor_seq.Draw(preferred_x, y - ScaleGUITrad(5), PAL_NONE, false);
} }
} }
@@ -229,16 +224,12 @@ 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) void GetAircraftSpriteSize(EngineID engine, uint &width, uint &height, int &xoffs, int &yoffs, EngineImageType image_type)
{ {
VehicleSpriteSeq seq; const Sprite *spr = GetSprite(GetAircraftIcon(engine, image_type), ST_NORMAL);
GetAircraftIcon(engine, image_type, &seq);
Rect rect; width = UnScaleGUI(spr->width);
seq.GetBounds(&rect); height = UnScaleGUI(spr->height);
xoffs = UnScaleGUI(spr->x_offs);
width = UnScaleGUI(rect.right - rect.left + 1); yoffs = UnScaleGUI(spr->y_offs);
height = UnScaleGUI(rect.bottom - rect.top + 1);
xoffs = UnScaleGUI(rect.left);
yoffs = UnScaleGUI(rect.top);
} }
/** /**
@@ -326,8 +317,7 @@ CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, const Engine *
v->date_of_last_service = _date; v->date_of_last_service = _date;
v->build_year = u->build_year = _cur_year; v->build_year = u->build_year = _cur_year;
v->sprite_seq.Set(SPR_IMG_QUERY); v->cur_image = u->cur_image = SPR_IMG_QUERY;
u->sprite_seq.Set(SPR_IMG_QUERY);
v->random_bits = VehicleRandomBits(); v->random_bits = VehicleRandomBits();
u->random_bits = VehicleRandomBits(); u->random_bits = VehicleRandomBits();
@@ -359,7 +349,7 @@ CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, const Engine *
w->vehstatus = VS_HIDDEN | VS_UNCLICKABLE; w->vehstatus = VS_HIDDEN | VS_UNCLICKABLE;
w->spritenum = 0xFF; w->spritenum = 0xFF;
w->subtype = AIR_ROTOR; w->subtype = AIR_ROTOR;
w->sprite_seq.Set(SPR_ROTOR_STOPPED); w->cur_image = SPR_ROTOR_STOPPED;
w->random_bits = VehicleRandomBits(); w->random_bits = VehicleRandomBits();
/* Use rotor's air.state to store the rotor animation frame */ /* Use rotor's air.state to store the rotor animation frame */
w->state = HRS_ROTOR_STOPPED; w->state = HRS_ROTOR_STOPPED;
@@ -478,21 +468,21 @@ static void HelicopterTickHandler(Aircraft *v)
int tick = ++u->tick_counter; int tick = ++u->tick_counter;
int spd = u->cur_speed >> 4; int spd = u->cur_speed >> 4;
VehicleSpriteSeq seq; SpriteID img;
if (spd == 0) { if (spd == 0) {
u->state = HRS_ROTOR_STOPPED; u->state = HRS_ROTOR_STOPPED;
GetRotorImage(v, EIT_ON_MAP, &seq); img = GetRotorImage(v, EIT_ON_MAP);
if (u->sprite_seq == seq) return; if (u->cur_image == img) return;
} else if (tick >= spd) { } else if (tick >= spd) {
u->tick_counter = 0; u->tick_counter = 0;
u->state++; u->state++;
if (u->state > HRS_ROTOR_MOVING_3) u->state = HRS_ROTOR_MOVING_1; if (u->state > HRS_ROTOR_MOVING_3) u->state = HRS_ROTOR_MOVING_1;
GetRotorImage(v, EIT_ON_MAP, &seq); img = GetRotorImage(v, EIT_ON_MAP);
} else { } else {
return; return;
} }
u->sprite_seq = seq; u->cur_image = img;
u->UpdatePositionAndViewport(); u->UpdatePositionAndViewport();
} }
@@ -512,9 +502,7 @@ void SetAircraftPosition(Aircraft *v, int x, int y, int z)
v->UpdatePosition(); v->UpdatePosition();
v->UpdateViewport(true, false); v->UpdateViewport(true, false);
if (v->subtype == AIR_HELICOPTER) { if (v->subtype == AIR_HELICOPTER) v->Next()->Next()->cur_image = GetRotorImage(v, EIT_ON_MAP);
GetRotorImage(v, EIT_ON_MAP, &v->Next()->Next()->sprite_seq);
}
Aircraft *u = v->Next(); Aircraft *u = v->Next();
@@ -525,7 +513,7 @@ void SetAircraftPosition(Aircraft *v, int x, int y, int z)
safe_y = Clamp(u->y_pos, 0, MapMaxY() * TILE_SIZE); safe_y = Clamp(u->y_pos, 0, MapMaxY() * TILE_SIZE);
u->z_pos = GetSlopePixelZ(safe_x, safe_y); u->z_pos = GetSlopePixelZ(safe_x, safe_y);
u->sprite_seq.CopyWithoutPalette(v->sprite_seq); // the shadow is never coloured u->cur_image = v->cur_image;
u->UpdatePositionAndViewport(); u->UpdatePositionAndViewport();
@@ -1249,9 +1237,7 @@ void Aircraft::MarkDirty()
{ {
this->colourmap = PAL_NONE; this->colourmap = PAL_NONE;
this->UpdateViewport(true, false); this->UpdateViewport(true, false);
if (this->subtype == AIR_HELICOPTER) { if (this->subtype == AIR_HELICOPTER) this->Next()->Next()->cur_image = GetRotorImage(this, EIT_ON_MAP);
GetRotorImage(this, EIT_ON_MAP, &this->Next()->Next()->sprite_seq);
}
} }

View File

@@ -83,14 +83,11 @@ void DrawAircraftImage(const Vehicle *v, int left, int right, int y, VehicleID s
{ {
bool rtl = _current_text_dir == TD_RTL; bool rtl = _current_text_dir == TD_RTL;
VehicleSpriteSeq seq; SpriteID sprite = v->GetImage(rtl ? DIR_E : DIR_W, image_type);
v->GetImage(rtl ? DIR_E : DIR_W, image_type, &seq); const Sprite *real_sprite = GetSprite(sprite, ST_NORMAL);
Rect rect; int width = UnScaleGUI(real_sprite->width);
seq.GetBounds(&rect); int x_offs = UnScaleGUI(real_sprite->x_offs);
int width = UnScaleGUI(rect.right - rect.left + 1);
int x_offs = UnScaleGUI(rect.left);
int x = rtl ? right - width - x_offs : left - x_offs; int x = rtl ? right - width - x_offs : left - x_offs;
bool helicopter = v->subtype == AIR_HELICOPTER; bool helicopter = v->subtype == AIR_HELICOPTER;
@@ -98,18 +95,17 @@ void DrawAircraftImage(const Vehicle *v, int left, int right, int y, VehicleID s
int heli_offs = 0; int heli_offs = 0;
PaletteID pal = (v->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(v); PaletteID pal = (v->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(v);
seq.Draw(x, y + y_offs, pal, (v->vehstatus & VS_CRASHED) != 0); DrawSprite(sprite, pal, x, y + y_offs);
if (helicopter) { if (helicopter) {
const Aircraft *a = Aircraft::From(v); const Aircraft *a = Aircraft::From(v);
VehicleSpriteSeq rotor_seq; SpriteID rotor_sprite = GetCustomRotorSprite(a, true, image_type);
GetCustomRotorSprite(a, true, image_type, &rotor_seq); if (rotor_sprite == 0) rotor_sprite = SPR_ROTOR_STOPPED;
if (!rotor_seq.IsValid()) rotor_seq.Set(SPR_ROTOR_STOPPED);
heli_offs = ScaleGUITrad(5); heli_offs = ScaleGUITrad(5);
rotor_seq.Draw(x, y + y_offs - heli_offs, PAL_NONE, false); DrawSprite(rotor_sprite, PAL_NONE, x, y + y_offs - heli_offs);
} }
if (v->index == selection) { if (v->index == selection) {
x += x_offs; x += x_offs;
y += UnScaleGUI(rect.top) + y_offs - heli_offs; y += UnScaleGUI(real_sprite->y_offs) + 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); DrawFrameRect(x - 1, y - 1, x + width + 1, y + UnScaleGUI(real_sprite->height) + heli_offs + 1, COLOUR_WHITE, FR_BORDERONLY);
} }
} }

View File

@@ -441,7 +441,7 @@ void AddArticulatedParts(Vehicle *first)
v->max_age = 0; v->max_age = 0;
v->engine_type = engine_type; v->engine_type = engine_type;
v->value = 0; v->value = 0;
v->sprite_seq.Set(SPR_IMG_QUERY); v->cur_image = SPR_IMG_QUERY;
v->random_bits = VehicleRandomBits(); v->random_bits = VehicleRandomBits();
if (flip_image) v->spritenum++; if (flip_image) v->spritenum++;

View File

@@ -87,7 +87,7 @@ class ReplaceVehicleWindow : public Window {
byte sort_criteria; ///< Criteria of sorting vehicles. byte sort_criteria; ///< Criteria of sorting vehicles.
bool descending_sort_order; ///< Order of sorting vehicles. bool descending_sort_order; ///< Order of sorting vehicles.
bool show_hidden_engines; ///< Whether to show the hidden engines. bool show_hidden_engines; ///< Whether to show the hidden engines.
RailType sel_railtype; ///< Type of rail tracks selected. #INVALID_RAILTYPE to show all. RailType sel_railtype; ///< Type of rail tracks selected.
Scrollbar *vscroll[2]; Scrollbar *vscroll[2];
/** /**
@@ -104,7 +104,7 @@ class ReplaceVehicleWindow : public Window {
/* Ensure that the wagon/engine selection fits the engine. */ /* Ensure that the wagon/engine selection fits the engine. */
if ((rvi->railveh_type == RAILVEH_WAGON) == show_engines) return false; if ((rvi->railveh_type == RAILVEH_WAGON) == show_engines) return false;
if (draw_left && this->sel_railtype != INVALID_RAILTYPE) { if (draw_left && show_engines) {
/* Ensure that the railtype is specific to the selected one */ /* Ensure that the railtype is specific to the selected one */
if (rvi->railtype != this->sel_railtype) return false; if (rvi->railtype != this->sel_railtype) return false;
} }
@@ -211,7 +211,24 @@ class ReplaceVehicleWindow : public Window {
public: public:
ReplaceVehicleWindow(WindowDesc *desc, VehicleType vehicletype, GroupID id_g) : Window(desc) ReplaceVehicleWindow(WindowDesc *desc, VehicleType vehicletype, GroupID id_g) : Window(desc)
{ {
this->sel_railtype = INVALID_RAILTYPE; 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->replace_engines = true; // start with locomotives (all other vehicles will not read this bool) this->replace_engines = true; // start with locomotives (all other vehicles will not read this bool)
this->engines[0].ForceRebuild(); this->engines[0].ForceRebuild();
this->engines[1].ForceRebuild(); this->engines[1].ForceRebuild();
@@ -271,9 +288,12 @@ public:
break; break;
} }
case WID_RV_TRAIN_ENGINEWAGON_DROPDOWN: { case WID_RV_TRAIN_ENGINEWAGON_TOGGLE: {
Dimension d = GetStringBoundingBox(STR_REPLACE_ENGINES); StringID str = this->GetWidget<NWidgetCore>(widget)->widget_data;
d = maxdim(d, GetStringBoundingBox(STR_REPLACE_WAGONS)); SetDParam(0, STR_REPLACE_ENGINES);
Dimension d = GetStringBoundingBox(str);
SetDParam(0, STR_REPLACE_WAGONS);
d = maxdim(d, GetStringBoundingBox(str));
d.width += padding.width; d.width += padding.width;
d.height += padding.height; d.height += padding.height;
*size = maxdim(*size, d); *size = maxdim(*size, d);
@@ -347,7 +367,7 @@ public:
break; break;
} }
case WID_RV_TRAIN_ENGINEWAGON_DROPDOWN: case WID_RV_TRAIN_ENGINEWAGON_TOGGLE:
SetDParam(0, this->replace_engines ? STR_REPLACE_ENGINES : STR_REPLACE_WAGONS); SetDParam(0, this->replace_engines ? STR_REPLACE_ENGINES : STR_REPLACE_WAGONS);
break; break;
} }
@@ -412,8 +432,12 @@ public:
this->SetWidgetDisabledState(WID_RV_STOP_REPLACE, this->sel_engine[0] == INVALID_ENGINE || !EngineHasReplacementForCompany(c, this->sel_engine[0], this->sel_group)); 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) { 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 */ /* Show the selected railtype in the pulldown menu */
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->GetWidget<NWidgetCore>(WID_RV_TRAIN_RAILTYPE_DROPDOWN)->widget_data = GetRailTypeInfo(sel_railtype)->strings.replace_text;
} }
this->DrawWidgets(); this->DrawWidgets();
@@ -459,16 +483,15 @@ public:
DisplayVehicleSortDropDown(this, static_cast<VehicleType>(this->window_number), this->sort_criteria, WID_RV_SORT_DROPDOWN); DisplayVehicleSortDropDown(this, static_cast<VehicleType>(this->window_number), this->sort_criteria, WID_RV_SORT_DROPDOWN);
break; break;
case WID_RV_TRAIN_ENGINEWAGON_DROPDOWN: { case WID_RV_TRAIN_ENGINEWAGON_TOGGLE:
DropDownList *list = new DropDownList(); this->replace_engines = !(this->replace_engines);
*list->Append() = new DropDownListStringItem(STR_REPLACE_ENGINES, 1, false); this->engines[0].ForceRebuild();
*list->Append() = new DropDownListStringItem(STR_REPLACE_WAGONS, 0, false); this->reset_sel_engine = true;
ShowDropDownList(this, list, this->replace_engines ? 1 : 0, WID_RV_TRAIN_ENGINEWAGON_DROPDOWN); this->SetDirty();
break; break;
}
case WID_RV_TRAIN_RAILTYPE_DROPDOWN: // Railtype selection dropdown menu case WID_RV_TRAIN_RAILTYPE_DROPDOWN: // Railtype selection dropdown menu
ShowDropDownList(this, GetRailTypeDropDownList(true, true), sel_railtype, WID_RV_TRAIN_RAILTYPE_DROPDOWN); ShowDropDownList(this, GetRailTypeDropDownList(true), sel_railtype, WID_RV_TRAIN_RAILTYPE_DROPDOWN);
break; break;
case WID_RV_TRAIN_WAGONREMOVE_TOGGLE: // toggle renew_keep_length case WID_RV_TRAIN_WAGONREMOVE_TOGGLE: // toggle renew_keep_length
@@ -543,14 +566,6 @@ public:
break; 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: case WID_RV_START_REPLACE:
this->ReplaceClick_StartReplace(index != 0); this->ReplaceClick_StartReplace(index != 0);
break; break;
@@ -596,13 +611,7 @@ static const NWidgetPart _nested_replace_rail_vehicle_widgets[] = {
EndContainer(), EndContainer(),
EndContainer(), EndContainer(),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(NWID_VERTICAL), NWidget(WWT_PANEL, COLOUR_GREY), SetResize(1, 0), EndContainer(),
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_PANEL, COLOUR_GREY), SetResize(1, 0), EndContainer(),
EndContainer(),
NWidget(NWID_VERTICAL), NWidget(NWID_VERTICAL),
NWidget(NWID_HORIZONTAL), NWidget(NWID_HORIZONTAL),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_RV_SORT_ASCENDING_DESCENDING), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER), SetFill(1, 1), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_RV_SORT_ASCENDING_DESCENDING), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER), SetFill(1, 1),
@@ -622,16 +631,20 @@ static const NWidgetPart _nested_replace_rail_vehicle_widgets[] = {
EndContainer(), EndContainer(),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(WWT_PANEL, COLOUR_GREY, WID_RV_LEFT_DETAILS), SetMinimalSize(240, 122), SetResize(1, 0), EndContainer(), NWidget(WWT_PANEL, COLOUR_GREY, WID_RV_LEFT_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(),
NWidget(WWT_PANEL, COLOUR_GREY, WID_RV_RIGHT_DETAILS), SetMinimalSize(240, 122), SetResize(1, 0), 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),
EndContainer(),
EndContainer(), EndContainer(),
NWidget(NWID_HORIZONTAL), NWidget(NWID_HORIZONTAL),
NWidget(NWID_PUSHBUTTON_DROPDOWN, COLOUR_GREY, WID_RV_START_REPLACE), SetMinimalSize(139, 12), SetDataTip(STR_REPLACE_VEHICLES_START, STR_REPLACE_HELP_START_BUTTON), NWidget(NWID_PUSHBUTTON_DROPDOWN, COLOUR_GREY, WID_RV_START_REPLACE), SetMinimalSize(139, 12), SetDataTip(STR_REPLACE_VEHICLES_START, STR_REPLACE_HELP_START_BUTTON),
NWidget(WWT_PANEL, COLOUR_GREY, WID_RV_INFO_TAB), SetMinimalSize(167, 12), SetDataTip(0x0, STR_REPLACE_HELP_REPLACE_INFO_TAB), SetResize(1, 0), NWidget(WWT_PANEL, COLOUR_GREY, WID_RV_INFO_TAB), SetMinimalSize(167, 12), SetDataTip(0x0, STR_REPLACE_HELP_REPLACE_INFO_TAB), SetResize(1, 0),
EndContainer(), EndContainer(),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_RV_STOP_REPLACE), SetMinimalSize(150, 12), SetDataTip(STR_REPLACE_VEHICLES_STOP, STR_REPLACE_HELP_STOP_BUTTON), 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), NWidget(WWT_RESIZEBOX, COLOUR_GREY),
EndContainer(), EndContainer(),
}; };

View File

@@ -39,14 +39,13 @@ inline void Blitter_32bppAnim::Draw(const Blitter::BlitterParams *bp, ZoomLevel
} }
Colour *dst = (Colour *)bp->dst + bp->top * bp->pitch + bp->left; Colour *dst = (Colour *)bp->dst + bp->top * bp->pitch + 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_width + bp->left;
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 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++) { for (int y = 0; y < bp->height; y++) {
Colour *dst_ln = dst + bp->pitch; Colour *dst_ln = dst + bp->pitch;
uint16 *anim_ln = anim + this->anim_buf_pitch; uint16 *anim_ln = anim + this->anim_buf_width;
const Colour *src_px_ln = (const Colour *)((const byte *)src_px + *(const uint32 *)src_px); const Colour *src_px_ln = (const Colour *)((const byte *)src_px + *(const uint32 *)src_px);
src_px++; src_px++;
@@ -280,8 +279,9 @@ void Blitter_32bppAnim::DrawColourMappingRect(void *dst, int width, int height,
} }
Colour *udst = (Colour *)dst; Colour *udst = (Colour *)dst;
assert(_screen.pitch == this->anim_buf_pitch); // precondition for translating 'dst' into an 'anim_buf' offset below. uint16 *anim;
uint16 *anim = this->anim_buf + ((uint32 *)dst - (uint32 *)_screen.dst_ptr);
anim = this->anim_buf + ((uint32 *)dst - (uint32 *)_screen.dst_ptr);
if (pal == PALETTE_TO_TRANSPARENT) { if (pal == PALETTE_TO_TRANSPARENT) {
do { do {
@@ -292,7 +292,7 @@ void Blitter_32bppAnim::DrawColourMappingRect(void *dst, int width, int height,
anim++; anim++;
} }
udst = udst - width + _screen.pitch; udst = udst - width + _screen.pitch;
anim = anim - width + this->anim_buf_pitch; anim = anim - width + this->anim_buf_width;
} while (--height); } while (--height);
return; return;
} }
@@ -305,7 +305,7 @@ void Blitter_32bppAnim::DrawColourMappingRect(void *dst, int width, int height,
anim++; anim++;
} }
udst = udst - width + _screen.pitch; udst = udst - width + _screen.pitch;
anim = anim - width + this->anim_buf_pitch; anim = anim - width + this->anim_buf_width;
} while (--height); } while (--height);
return; return;
} }
@@ -319,8 +319,7 @@ 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 */ /* Set the colour in the anim-buffer too, if we are rendering to the screen */
if (_screen_disable_anim) return; if (_screen_disable_anim) return;
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_width] = colour | (DEFAULT_BRIGHTNESS << 8);
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) void Blitter_32bppAnim::DrawRect(void *video, int width, int height, uint8 colour)
@@ -332,8 +331,9 @@ void Blitter_32bppAnim::DrawRect(void *video, int width, int height, uint8 colou
} }
Colour colour32 = LookupColourInPalette(colour); Colour colour32 = LookupColourInPalette(colour);
assert(_screen.pitch == this->anim_buf_pitch); // precondition for translating 'video' into an 'anim_buf' offset below. uint16 *anim_line;
uint16 *anim_line = ((uint32 *)video - (uint32 *)_screen.dst_ptr) + this->anim_buf;
anim_line = ((uint32 *)video - (uint32 *)_screen.dst_ptr) + this->anim_buf;
do { do {
Colour *dst = (Colour *)video; Colour *dst = (Colour *)video;
@@ -347,7 +347,7 @@ void Blitter_32bppAnim::DrawRect(void *video, int width, int height, uint8 colou
anim++; anim++;
} }
video = (uint32 *)video + _screen.pitch; video = (uint32 *)video + _screen.pitch;
anim_line += this->anim_buf_pitch; anim_line += this->anim_buf_width;
} while (--height); } while (--height);
} }
@@ -357,7 +357,6 @@ 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); assert(video >= _screen.dst_ptr && video <= (uint32 *)_screen.dst_ptr + _screen.width + _screen.height * _screen.pitch);
Colour *dst = (Colour *)video; Colour *dst = (Colour *)video;
const uint32 *usrc = (const uint32 *)src; 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; uint16 *anim_line = ((uint32 *)video - (uint32 *)_screen.dst_ptr) + this->anim_buf;
for (; height > 0; height--) { for (; height > 0; height--) {
@@ -371,7 +370,7 @@ void Blitter_32bppAnim::CopyFromBuffer(void *video, const void *src, int width,
/* Copy back the anim-buffer */ /* Copy back the anim-buffer */
memcpy(anim_line, usrc, width * sizeof(uint16)); memcpy(anim_line, usrc, width * sizeof(uint16));
usrc = (const uint32 *)((const uint16 *)usrc + width); usrc = (const uint32 *)((const uint16 *)usrc + width);
anim_line += this->anim_buf_pitch; anim_line += this->anim_buf_width;
/* Okay, it is *very* likely that the image we stored is using /* Okay, it is *very* likely that the image we stored is using
* the wrong palette animated colours. There are two things we * the wrong palette animated colours. There are two things we
@@ -398,11 +397,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); assert(video >= _screen.dst_ptr && video <= (uint32 *)_screen.dst_ptr + _screen.width + _screen.height * _screen.pitch);
uint32 *udst = (uint32 *)dst; uint32 *udst = (uint32 *)dst;
const uint32 *src = (const uint32 *)video; const uint32 *src = (const uint32 *)video;
const uint16 *anim_line;
if (this->anim_buf == NULL) return; if (this->anim_buf == NULL) return;
assert(_screen.pitch == this->anim_buf_pitch); // precondition for translating 'video' into an 'anim_buf' offset below. anim_line = ((const uint32 *)video - (uint32 *)_screen.dst_ptr) + this->anim_buf;
const uint16 *anim_line = ((const uint32 *)video - (uint32 *)_screen.dst_ptr) + this->anim_buf;
for (; height > 0; height--) { for (; height > 0; height--) {
memcpy(udst, src, width * sizeof(uint32)); memcpy(udst, src, width * sizeof(uint32));
@@ -411,7 +410,7 @@ void Blitter_32bppAnim::CopyToBuffer(const void *video, void *dst, int width, in
/* Copy the anim-buffer */ /* Copy the anim-buffer */
memcpy(udst, anim_line, width * sizeof(uint16)); memcpy(udst, anim_line, width * sizeof(uint16));
udst = (uint32 *)((uint16 *)udst + width); udst = (uint32 *)((uint16 *)udst + width);
anim_line += this->anim_buf_pitch; anim_line += this->anim_buf_width;
} }
} }
@@ -423,8 +422,8 @@ void Blitter_32bppAnim::ScrollBuffer(void *video, int &left, int &top, int &widt
/* We need to scroll the anim-buffer too */ /* We need to scroll the anim-buffer too */
if (scroll_y > 0) { if (scroll_y > 0) {
dst = this->anim_buf + left + (top + height - 1) * this->anim_buf_pitch; dst = this->anim_buf + left + (top + height - 1) * this->anim_buf_width;
src = dst - scroll_y * this->anim_buf_pitch; src = dst - scroll_y * this->anim_buf_width;
/* Adjust left & width */ /* Adjust left & width */
if (scroll_x >= 0) { if (scroll_x >= 0) {
@@ -437,13 +436,13 @@ void Blitter_32bppAnim::ScrollBuffer(void *video, int &left, int &top, int &widt
uint th = height - scroll_y; uint th = height - scroll_y;
for (; th > 0; th--) { for (; th > 0; th--) {
memcpy(dst, src, tw * sizeof(uint16)); memcpy(dst, src, tw * sizeof(uint16));
src -= this->anim_buf_pitch; src -= this->anim_buf_width;
dst -= this->anim_buf_pitch; dst -= this->anim_buf_width;
} }
} else { } else {
/* Calculate pointers */ /* Calculate pointers */
dst = this->anim_buf + left + top * this->anim_buf_pitch; dst = this->anim_buf + left + top * this->anim_buf_width;
src = dst - scroll_y * this->anim_buf_pitch; src = dst - scroll_y * this->anim_buf_width;
/* Adjust left & width */ /* Adjust left & width */
if (scroll_x >= 0) { if (scroll_x >= 0) {
@@ -458,8 +457,8 @@ void Blitter_32bppAnim::ScrollBuffer(void *video, int &left, int &top, int &widt
uint th = height + scroll_y; uint th = height + scroll_y;
for (; th > 0; th--) { for (; th > 0; th--) {
memmove(dst, src, tw * sizeof(uint16)); memmove(dst, src, tw * sizeof(uint16));
src += this->anim_buf_pitch; src += this->anim_buf_width;
dst += this->anim_buf_pitch; dst += this->anim_buf_width;
} }
} }
@@ -496,7 +495,6 @@ void Blitter_32bppAnim::PaletteAnimate(const Palette &palette)
anim++; anim++;
} }
dst += _screen.pitch - this->anim_buf_width; dst += _screen.pitch - this->anim_buf_width;
anim += this->anim_buf_pitch - this->anim_buf_width;
} }
/* Make sure the backend redraws the whole screen */ /* Make sure the backend redraws the whole screen */
@@ -510,13 +508,11 @@ Blitter::PaletteAnimation Blitter_32bppAnim::UsePaletteAnimation()
void Blitter_32bppAnim::PostResize() 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 */ /* The size of the screen changed; we can assume we can wipe all data from our buffer */
free(this->anim_buf); free(this->anim_buf);
this->anim_buf = CallocT<uint16>(_screen.width * _screen.height);
this->anim_buf_width = _screen.width; this->anim_buf_width = _screen.width;
this->anim_buf_height = _screen.height; 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);
} }
} }

View File

@@ -20,18 +20,14 @@ protected:
uint16 *anim_buf; ///< In this buffer we keep track of the 8bpp indexes so we can do palette animation 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_width; ///< The width of the animation buffer.
int anim_buf_height; ///< The height 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. Palette palette; ///< The current palette.
public: public:
Blitter_32bppAnim() : Blitter_32bppAnim() :
anim_buf(NULL), anim_buf(NULL),
anim_buf_width(0), anim_buf_width(0),
anim_buf_height(0), anim_buf_height(0)
anim_buf_pitch(0) {}
{
this->palette = _cur_palette;
}
~Blitter_32bppAnim(); ~Blitter_32bppAnim();

View File

@@ -35,8 +35,7 @@ inline void Blitter_32bppSSE4_Anim::Draw(const Blitter::BlitterParams *bp, ZoomL
{ {
const byte * const remap = bp->remap; const byte * const remap = bp->remap;
Colour *dst_line = (Colour *) bp->dst + bp->top * bp->pitch + bp->left; Colour *dst_line = (Colour *) bp->dst + bp->top * bp->pitch + 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_width + bp->left;
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; int effective_width = bp->width;
/* Find where to start reading in the source sprite. */ /* Find where to start reading in the source sprite. */
@@ -354,7 +353,7 @@ next_line:
if (mode != BM_TRANSPARENT) src_mv_line += si->sprite_width; if (mode != BM_TRANSPARENT) src_mv_line += si->sprite_width;
src_rgba_line = (const Colour*) ((const byte*) src_rgba_line + si->sprite_line_size); src_rgba_line = (const Colour*) ((const byte*) src_rgba_line + si->sprite_line_size);
dst_line += bp->pitch; dst_line += bp->pitch;
anim_line += this->anim_buf_pitch; anim_line += this->anim_buf_width;
} }
} }
IGNORE_UNINITIALIZED_WARNING_STOP IGNORE_UNINITIALIZED_WARNING_STOP

View File

@@ -48,7 +48,7 @@ void Blitter_8bppSimple::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Zoom
break; break;
case BM_BLACK_REMAP: case BM_BLACK_REMAP:
if (*src != 0) *dst = 0; colour = 0;
break; break;
default: default:

View File

@@ -56,7 +56,7 @@ void DrawHillyLandTile(const TileInfo *ti)
if (ti->tileh != SLOPE_FLAT) { if (ti->tileh != SLOPE_FLAT) {
DrawGroundSprite(SPR_FLAT_ROUGH_LAND + SlopeToSpriteOffset(ti->tileh), PAL_NONE); DrawGroundSprite(SPR_FLAT_ROUGH_LAND + SlopeToSpriteOffset(ti->tileh), PAL_NONE);
} else { } else {
DrawGroundSprite(_landscape_clear_sprites_rough[GB(TileHash(ti->x, ti->y), 0, 3)], PAL_NONE); DrawGroundSprite(_landscape_clear_sprites_rough[GB(ti->x ^ ti->y, 4, 3)], PAL_NONE);
} }
} }

View File

@@ -81,7 +81,7 @@ CommandCallback CcBuildBridge;
/* dock_gui.cpp */ /* dock_gui.cpp */
CommandCallback CcBuildDocks; CommandCallback CcBuildDocks;
CommandCallback CcPlaySound_SPLAT_WATER; CommandCallback CcBuildCanal;
/* depot_gui.cpp */ /* depot_gui.cpp */
CommandCallback CcCloneVehicle; CommandCallback CcCloneVehicle;
@@ -97,19 +97,19 @@ CommandCallback CcAddVehicleNewGroup;
CommandCallback CcBuildIndustry; CommandCallback CcBuildIndustry;
/* main_gui.cpp */ /* main_gui.cpp */
CommandCallback CcPlaySound_EXPLOSION; CommandCallback CcPlaySound10;
CommandCallback CcPlaceSign; CommandCallback CcPlaceSign;
CommandCallback CcTerraform; CommandCallback CcTerraform;
CommandCallback CcGiveMoney; CommandCallback CcGiveMoney;
/* rail_gui.cpp */ /* rail_gui.cpp */
CommandCallback CcPlaySound_SPLAT_RAIL; CommandCallback CcPlaySound1E;
CommandCallback CcRailDepot; CommandCallback CcRailDepot;
CommandCallback CcStation; CommandCallback CcStation;
CommandCallback CcBuildRailTunnel; CommandCallback CcBuildRailTunnel;
/* road_gui.cpp */ /* road_gui.cpp */
CommandCallback CcPlaySound_SPLAT_OTHER; CommandCallback CcPlaySound1D;
CommandCallback CcBuildRoadTunnel; CommandCallback CcBuildRoadTunnel;
CommandCallback CcRoadDepot; CommandCallback CcRoadDepot;
CommandCallback CcRoadStop; CommandCallback CcRoadStop;

View File

@@ -52,10 +52,10 @@ extern CompanyPool _company_pool;
/** Statically loadable part of Company pool item */ /** Statically loadable part of Company pool item */
struct CompanyProperties { struct CompanyProperties {
uint32 name_2; ///< Parameter of #name_1. uint32 name_2; ///< Parameter of #name_1.
StringID name_1; ///< Name of the company if the user did not change it. uint16 name_1; ///< Name of the company if the user did not change it.
char *name; ///< Name of the company if the user changed it. char *name; ///< Name of the company if the user changed it.
StringID president_name_1; ///< Name of the president if the user did not change it. uint16 president_name_1; ///< Name of the president if the user did not change it.
uint32 president_name_2; ///< Parameter of #president_name_1 uint32 president_name_2; ///< Parameter of #president_name_1
char *president_name; ///< Name of the president if the user changed it. char *president_name; ///< Name of the president if the user changed it.

View File

@@ -45,38 +45,6 @@
/* scriptfile handling */ /* scriptfile handling */
static bool _script_running; ///< Script is running (used to abort execution when #ConReturn is encountered). 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 */ /* console command defines */
#define DEF_CONSOLE_CMD(function) static bool function(byte argc, char *argv[]) #define DEF_CONSOLE_CMD(function) static bool function(byte argc, char *argv[])
#define DEF_CONSOLE_HOOK(function) static ConsoleHookResult function(bool echo) #define DEF_CONSOLE_HOOK(function) static ConsoleHookResult function(bool echo)
@@ -318,7 +286,7 @@ DEF_CONSOLE_CMD(ConSave)
char *filename = str_fmt("%s.sav", argv[1]); char *filename = str_fmt("%s.sav", argv[1]);
IConsolePrint(CC_DEFAULT, "Saving map..."); IConsolePrint(CC_DEFAULT, "Saving map...");
if (SaveOrLoad(filename, SLO_SAVE, DFT_GAME_FILE, SAVE_DIR) != SL_OK) { if (SaveOrLoad(filename, SL_SAVE, SAVE_DIR) != SL_OK) {
IConsolePrint(CC_ERROR, "Saving map failed"); IConsolePrint(CC_ERROR, "Saving map failed");
} else { } else {
IConsolePrintF(CC_DEFAULT, "Map successfully saved to %s", filename); IConsolePrintF(CC_DEFAULT, "Map successfully saved to %s", filename);
@@ -347,6 +315,42 @@ DEF_CONSOLE_CMD(ConSaveConfig)
return true; 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) DEF_CONSOLE_CMD(ConLoad)
{ {
if (argc == 0) { if (argc == 0) {
@@ -357,21 +361,24 @@ DEF_CONSOLE_CMD(ConLoad)
if (argc != 2) return false; if (argc != 2) return false;
const char *file = argv[1]; const char *file = argv[1];
_console_file_list.ValidateFileList(); const FiosItem *item = GetFiosItem(file);
const FiosItem *item = _console_file_list.FindItem(file);
if (item != NULL) { if (item != NULL) {
if (GetAbstractFileType(item->type) == FT_SAVEGAME) { switch (item->type) {
_switch_mode = SM_LOAD_GAME; case FIOS_TYPE_FILE: case FIOS_TYPE_OLDFILE: {
_file_to_saveload.SetMode(item->type); _switch_mode = SM_LOAD_GAME;
_file_to_saveload.SetName(FiosBrowseTo(item)); SetFiosType(item->type);
_file_to_saveload.SetTitle(item->title);
} else { strecpy(_file_to_saveload.name, FiosBrowseTo(item), lastof(_file_to_saveload.name));
IConsolePrintF(CC_ERROR, "%s: Not a savegame.", file); strecpy(_file_to_saveload.title, item->title, lastof(_file_to_saveload.title));
break;
}
default: IConsolePrintF(CC_ERROR, "%s: Not a savegame.", file);
} }
} else { } else {
IConsolePrintF(CC_ERROR, "%s: No such file or directory.", file); IConsolePrintF(CC_ERROR, "%s: No such file or directory.", file);
} }
FiosFreeSavegameList();
return true; return true;
} }
@@ -386,8 +393,7 @@ DEF_CONSOLE_CMD(ConRemove)
if (argc != 2) return false; if (argc != 2) return false;
const char *file = argv[1]; const char *file = argv[1];
_console_file_list.ValidateFileList(); const FiosItem *item = GetFiosItem(file);
const FiosItem *item = _console_file_list.FindItem(file);
if (item != NULL) { if (item != NULL) {
if (!FiosDelete(item->name)) { if (!FiosDelete(item->name)) {
IConsolePrintF(CC_ERROR, "%s: Failed to delete file", file); IConsolePrintF(CC_ERROR, "%s: Failed to delete file", file);
@@ -396,7 +402,7 @@ DEF_CONSOLE_CMD(ConRemove)
IConsolePrintF(CC_ERROR, "%s: No such file or directory.", file); IConsolePrintF(CC_ERROR, "%s: No such file or directory.", file);
} }
_console_file_list.InvalidateFileList(); FiosFreeSavegameList();
return true; return true;
} }
@@ -409,11 +415,13 @@ DEF_CONSOLE_CMD(ConListFiles)
return true; return true;
} }
_console_file_list.ValidateFileList(true); BuildFileList();
for (uint i = 0; i < _console_file_list.Length(); i++) {
IConsolePrintF(CC_DEFAULT, "%d) %s", i, _console_file_list[i].title); for (uint i = 0; i < _fios_items.Length(); i++) {
IConsolePrintF(CC_DEFAULT, "%d) %s", i, _fios_items[i].title);
} }
FiosFreeSavegameList();
return true; return true;
} }
@@ -428,8 +436,7 @@ DEF_CONSOLE_CMD(ConChangeDirectory)
if (argc != 2) return false; if (argc != 2) return false;
const char *file = argv[1]; const char *file = argv[1];
_console_file_list.ValidateFileList(true); const FiosItem *item = GetFiosItem(file);
const FiosItem *item = _console_file_list.FindItem(file);
if (item != NULL) { if (item != NULL) {
switch (item->type) { switch (item->type) {
case FIOS_TYPE_DIR: case FIOS_TYPE_DRIVE: case FIOS_TYPE_PARENT: case FIOS_TYPE_DIR: case FIOS_TYPE_DRIVE: case FIOS_TYPE_PARENT:
@@ -441,7 +448,7 @@ DEF_CONSOLE_CMD(ConChangeDirectory)
IConsolePrintF(CC_ERROR, "%s: No such file or directory.", file); IConsolePrintF(CC_ERROR, "%s: No such file or directory.", file);
} }
_console_file_list.InvalidateFileList(); FiosFreeSavegameList();
return true; return true;
} }
@@ -455,8 +462,8 @@ DEF_CONSOLE_CMD(ConPrintWorkingDirectory)
} }
/* XXX - Workaround for broken file handling */ /* XXX - Workaround for broken file handling */
_console_file_list.ValidateFileList(true); FiosGetSavegameList(SLD_LOAD_GAME);
_console_file_list.InvalidateFileList(); FiosFreeSavegameList();
FiosGetDescText(&path, NULL); FiosGetDescText(&path, NULL);
IConsolePrint(CC_DEFAULT, path); IConsolePrint(CC_DEFAULT, path);

View File

@@ -256,8 +256,6 @@ public:
/** /**
* Get the number of items in the list. * Get the number of items in the list.
*
* @return The number of items in the list.
*/ */
inline uint Length() const inline uint Length() const
{ {

View File

@@ -388,7 +388,7 @@ bool CrashLog::WriteSavegame(char *filename, const char *filename_last) const
seprintf(filename, filename_last, "%scrash.sav", _personal_dir); seprintf(filename, filename_last, "%scrash.sav", _personal_dir);
/* Don't do a threaded saveload. */ /* Don't do a threaded saveload. */
return SaveOrLoad(filename, SLO_SAVE, DFT_GAME_FILE, NO_DIRECTORY, false) == SL_OK; return SaveOrLoad(filename, SL_SAVE, NO_DIRECTORY, false) == SL_OK;
} catch (...) { } catch (...) {
return false; return false;
} }

View File

@@ -505,12 +505,15 @@ struct DepotWindow : Window {
this->sel = INVALID_VEHICLE; this->sel = INVALID_VEHICLE;
TrainDepotMoveVehicle(v, sel, gdvp.head); TrainDepotMoveVehicle(v, sel, gdvp.head);
} else if (v != NULL) { } else if (v != NULL) {
SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, HT_DRAG, this); bool rtl = _current_text_dir == TD_RTL;
SetMouseCursorVehicle(v, EIT_IN_DEPOT); int image = v->GetImage(rtl ? DIR_E : DIR_W, EIT_IN_DEPOT);
_cursor.vehchain = _ctrl_pressed; SetObjectToPlaceWnd(image, GetVehiclePalette(v), HT_DRAG, this);
this->sel = v->index; this->sel = v->index;
this->SetDirty(); this->SetDirty();
_cursor.short_vehicle_offset = v->IsGroundVehicle() ? (16 - v->GetGroundVehicleCache()->cached_veh_length * 2) * (rtl ? -1 : 1) : 0;
_cursor.vehchain = _ctrl_pressed;
} }
break; break;
} }

View File

@@ -112,7 +112,7 @@ void DisasterVehicle::UpdateImage()
{ {
SpriteID img = this->image_override; SpriteID img = this->image_override;
if (img == 0) img = _disaster_images[this->subtype][this->direction]; if (img == 0) img = _disaster_images[this->subtype][this->direction];
this->sprite_seq.Set(img); this->cur_image = img;
} }
/** /**
@@ -499,8 +499,7 @@ static bool DisasterTick_Helicopter_Rotors(DisasterVehicle *v)
v->tick_counter++; v->tick_counter++;
if (HasBit(v->tick_counter, 0)) return true; if (HasBit(v->tick_counter, 0)) return true;
SpriteID &cur_image = v->sprite_seq.seq[0].sprite; if (++v->cur_image > SPR_ROTOR_MOVING_3) v->cur_image = SPR_ROTOR_MOVING_1;
if (++cur_image > SPR_ROTOR_MOVING_3) cur_image = SPR_ROTOR_MOVING_1;
v->UpdatePositionAndViewport(); v->UpdatePositionAndViewport();

View File

@@ -48,7 +48,7 @@ void CcBuildDocks(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p
if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace(); if (!_settings_client.gui.persistent_buildingtools) ResetObjectToPlace();
} }
void CcPlaySound_SPLAT_WATER(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2) void CcBuildCanal(const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
{ {
if (result.Succeeded() && _settings_client.sound.confirm) SndPlayTileFx(SND_02_SPLAT_WATER, tile); if (result.Succeeded() && _settings_client.sound.confirm) SndPlayTileFx(SND_02_SPLAT_WATER, tile);
} }
@@ -235,10 +235,10 @@ struct BuildDocksToolbarWindow : Window {
GUIPlaceProcDragXY(select_proc, start_tile, end_tile); GUIPlaceProcDragXY(select_proc, start_tile, end_tile);
break; break;
case DDSP_CREATE_WATER: 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), CcPlaySound_SPLAT_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);
break; break;
case DDSP_CREATE_RIVER: case DDSP_CREATE_RIVER:
DoCommandP(end_tile, start_tile, WATER_CLASS_RIVER, CMD_BUILD_CANAL | CMD_MSG(STR_ERROR_CAN_T_PLACE_RIVERS), CcPlaySound_SPLAT_WATER); DoCommandP(end_tile, start_tile, WATER_CLASS_RIVER, CMD_BUILD_CANAL | CMD_MSG(STR_ERROR_CAN_T_PLACE_RIVERS), CcBuildCanal);
break; break;
default: break; default: break;

View File

@@ -1643,11 +1643,13 @@ static void LoadUnloadVehicle(Vehicle *front)
if (v->cargo_cap == 0) continue; if (v->cargo_cap == 0) continue;
artic_part++; artic_part++;
uint load_amount = GetLoadAmount(v);
GoodsEntry *ge = &st->goods[v->cargo_type]; GoodsEntry *ge = &st->goods[v->cargo_type];
if (HasBit(v->vehicle_flags, VF_CARGO_UNLOADING) && (front->current_order.GetUnloadType() & OUFB_NO_UNLOAD) == 0) { if (HasBit(v->vehicle_flags, VF_CARGO_UNLOADING) && (front->current_order.GetUnloadType() & OUFB_NO_UNLOAD) == 0) {
uint cargo_count = v->cargo.UnloadCount(); uint cargo_count = v->cargo.UnloadCount();
uint amount_unloaded = _settings_game.order.gradual_loading ? min(cargo_count, GetLoadAmount(v)) : cargo_count; uint amount_unloaded = _settings_game.order.gradual_loading ? min(cargo_count, load_amount) : cargo_count;
bool remaining = false; // Are there cargo entities in this vehicle that can still be unloaded here? bool remaining = false; // Are there cargo entities in this vehicle that can still be unloaded here?
assert(payment != NULL); assert(payment != NULL);
@@ -1752,8 +1754,8 @@ static void LoadUnloadVehicle(Vehicle *front)
* has capacity for it, load it on the vehicle. */ * has capacity for it, load it on the vehicle. */
uint cap_left = v->cargo_cap - v->cargo.StoredCount(); 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 (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 (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); uint loaded = ge->cargo.Load(cap_left, &v->cargo, st->xy, next_station);
if (v->cargo.ActionCount(VehicleCargoList::MTA_LOAD) > 0) { if (v->cargo.ActionCount(VehicleCargoList::MTA_LOAD) > 0) {

View File

@@ -22,26 +22,10 @@
#include "safeguards.h" #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) static void ChimneySmokeInit(EffectVehicle *v)
{ {
uint32 r = Random(); uint32 r = Random();
v->sprite_seq.Set(SPR_CHIMNEY_SMOKE_0 + GB(r, 0, 3)); v->cur_image = SPR_CHIMNEY_SMOKE_0 + GB(r, 0, 3);
v->progress = GB(r, 16, 3); v->progress = GB(r, 16, 3);
} }
@@ -56,8 +40,10 @@ static bool ChimneySmokeTick(EffectVehicle *v)
return false; return false;
} }
if (!IncrementSprite(v, SPR_CHIMNEY_SMOKE_7)) { if (v->cur_image != SPR_CHIMNEY_SMOKE_7) {
v->sprite_seq.Set(SPR_CHIMNEY_SMOKE_0); v->cur_image++;
} else {
v->cur_image = SPR_CHIMNEY_SMOKE_0;
} }
v->progress = 7; v->progress = 7;
v->UpdatePositionAndViewport(); v->UpdatePositionAndViewport();
@@ -68,7 +54,7 @@ static bool ChimneySmokeTick(EffectVehicle *v)
static void SteamSmokeInit(EffectVehicle *v) static void SteamSmokeInit(EffectVehicle *v)
{ {
v->sprite_seq.Set(SPR_STEAM_SMOKE_0); v->cur_image = SPR_STEAM_SMOKE_0;
v->progress = 12; v->progress = 12;
} }
@@ -84,7 +70,9 @@ static bool SteamSmokeTick(EffectVehicle *v)
} }
if ((v->progress & 0xF) == 4) { if ((v->progress & 0xF) == 4) {
if (!IncrementSprite(v, SPR_STEAM_SMOKE_4)) { if (v->cur_image != SPR_STEAM_SMOKE_4) {
v->cur_image++;
} else {
delete v; delete v;
return false; return false;
} }
@@ -98,7 +86,7 @@ static bool SteamSmokeTick(EffectVehicle *v)
static void DieselSmokeInit(EffectVehicle *v) static void DieselSmokeInit(EffectVehicle *v)
{ {
v->sprite_seq.Set(SPR_DIESEL_SMOKE_0); v->cur_image = SPR_DIESEL_SMOKE_0;
v->progress = 0; v->progress = 0;
} }
@@ -110,11 +98,13 @@ static bool DieselSmokeTick(EffectVehicle *v)
v->z_pos++; v->z_pos++;
v->UpdatePositionAndViewport(); v->UpdatePositionAndViewport();
} else if ((v->progress & 7) == 1) { } else if ((v->progress & 7) == 1) {
if (!IncrementSprite(v, SPR_DIESEL_SMOKE_5)) { if (v->cur_image != SPR_DIESEL_SMOKE_5) {
v->cur_image++;
v->UpdatePositionAndViewport();
} else {
delete v; delete v;
return false; return false;
} }
v->UpdatePositionAndViewport();
} }
return true; return true;
@@ -122,7 +112,7 @@ static bool DieselSmokeTick(EffectVehicle *v)
static void ElectricSparkInit(EffectVehicle *v) static void ElectricSparkInit(EffectVehicle *v)
{ {
v->sprite_seq.Set(SPR_ELECTRIC_SPARK_0); v->cur_image = SPR_ELECTRIC_SPARK_0;
v->progress = 1; v->progress = 1;
} }
@@ -132,12 +122,13 @@ static bool ElectricSparkTick(EffectVehicle *v)
v->progress++; v->progress++;
} else { } else {
v->progress = 0; v->progress = 0;
if (v->cur_image != SPR_ELECTRIC_SPARK_5) {
if (!IncrementSprite(v, SPR_ELECTRIC_SPARK_5)) { v->cur_image++;
v->UpdatePositionAndViewport();
} else {
delete v; delete v;
return false; return false;
} }
v->UpdatePositionAndViewport();
} }
return true; return true;
@@ -145,7 +136,7 @@ static bool ElectricSparkTick(EffectVehicle *v)
static void SmokeInit(EffectVehicle *v) static void SmokeInit(EffectVehicle *v)
{ {
v->sprite_seq.Set(SPR_SMOKE_0); v->cur_image = SPR_SMOKE_0;
v->progress = 12; v->progress = 12;
} }
@@ -161,7 +152,9 @@ static bool SmokeTick(EffectVehicle *v)
} }
if ((v->progress & 0xF) == 4) { if ((v->progress & 0xF) == 4) {
if (!IncrementSprite(v, SPR_SMOKE_4)) { if (v->cur_image != SPR_SMOKE_4) {
v->cur_image++;
} else {
delete v; delete v;
return false; return false;
} }
@@ -175,7 +168,7 @@ static bool SmokeTick(EffectVehicle *v)
static void ExplosionLargeInit(EffectVehicle *v) static void ExplosionLargeInit(EffectVehicle *v)
{ {
v->sprite_seq.Set(SPR_EXPLOSION_LARGE_0); v->cur_image = SPR_EXPLOSION_LARGE_0;
v->progress = 0; v->progress = 0;
} }
@@ -183,11 +176,13 @@ static bool ExplosionLargeTick(EffectVehicle *v)
{ {
v->progress++; v->progress++;
if ((v->progress & 3) == 0) { if ((v->progress & 3) == 0) {
if (!IncrementSprite(v, SPR_EXPLOSION_LARGE_F)) { if (v->cur_image != SPR_EXPLOSION_LARGE_F) {
v->cur_image++;
v->UpdatePositionAndViewport();
} else {
delete v; delete v;
return false; return false;
} }
v->UpdatePositionAndViewport();
} }
return true; return true;
@@ -195,7 +190,7 @@ static bool ExplosionLargeTick(EffectVehicle *v)
static void BreakdownSmokeInit(EffectVehicle *v) static void BreakdownSmokeInit(EffectVehicle *v)
{ {
v->sprite_seq.Set(SPR_BREAKDOWN_SMOKE_0); v->cur_image = SPR_BREAKDOWN_SMOKE_0;
v->progress = 0; v->progress = 0;
} }
@@ -203,8 +198,10 @@ static bool BreakdownSmokeTick(EffectVehicle *v)
{ {
v->progress++; v->progress++;
if ((v->progress & 7) == 0) { if ((v->progress & 7) == 0) {
if (!IncrementSprite(v, SPR_BREAKDOWN_SMOKE_3)) { if (v->cur_image != SPR_BREAKDOWN_SMOKE_3) {
v->sprite_seq.Set(SPR_BREAKDOWN_SMOKE_0); v->cur_image++;
} else {
v->cur_image = SPR_BREAKDOWN_SMOKE_0;
} }
v->UpdatePositionAndViewport(); v->UpdatePositionAndViewport();
} }
@@ -220,7 +217,7 @@ static bool BreakdownSmokeTick(EffectVehicle *v)
static void ExplosionSmallInit(EffectVehicle *v) static void ExplosionSmallInit(EffectVehicle *v)
{ {
v->sprite_seq.Set(SPR_EXPLOSION_SMALL_0); v->cur_image = SPR_EXPLOSION_SMALL_0;
v->progress = 0; v->progress = 0;
} }
@@ -228,11 +225,13 @@ static bool ExplosionSmallTick(EffectVehicle *v)
{ {
v->progress++; v->progress++;
if ((v->progress & 3) == 0) { if ((v->progress & 3) == 0) {
if (!IncrementSprite(v, SPR_EXPLOSION_SMALL_B)) { if (v->cur_image != SPR_EXPLOSION_SMALL_B) {
v->cur_image++;
v->UpdatePositionAndViewport();
} else {
delete v; delete v;
return false; return false;
} }
v->UpdatePositionAndViewport();
} }
return true; return true;
@@ -240,7 +239,7 @@ static bool ExplosionSmallTick(EffectVehicle *v)
static void BulldozerInit(EffectVehicle *v) static void BulldozerInit(EffectVehicle *v)
{ {
v->sprite_seq.Set(SPR_BULLDOZER_NE); v->cur_image = SPR_BULLDOZER_NE;
v->progress = 0; v->progress = 0;
v->animation_state = 0; v->animation_state = 0;
v->animation_substate = 0; v->animation_substate = 0;
@@ -291,7 +290,7 @@ static bool BulldozerTick(EffectVehicle *v)
if ((v->progress & 7) == 0) { if ((v->progress & 7) == 0) {
const BulldozerMovement *b = &_bulldozer_movement[v->animation_state]; const BulldozerMovement *b = &_bulldozer_movement[v->animation_state];
v->sprite_seq.Set(SPR_BULLDOZER_NE + b->image); v->cur_image = SPR_BULLDOZER_NE + b->image;
v->x_pos += _inc_by_dir[b->direction].x; v->x_pos += _inc_by_dir[b->direction].x;
v->y_pos += _inc_by_dir[b->direction].y; v->y_pos += _inc_by_dir[b->direction].y;
@@ -313,7 +312,7 @@ static bool BulldozerTick(EffectVehicle *v)
static void BubbleInit(EffectVehicle *v) static void BubbleInit(EffectVehicle *v)
{ {
v->sprite_seq.Set(SPR_BUBBLE_GENERATE_0); v->cur_image = SPR_BUBBLE_GENERATE_0;
v->spritenum = 0; v->spritenum = 0;
v->progress = 0; v->progress = 0;
} }
@@ -476,8 +475,8 @@ static bool BubbleTick(EffectVehicle *v)
if ((v->progress & 3) != 0) return true; if ((v->progress & 3) != 0) return true;
if (v->spritenum == 0) { if (v->spritenum == 0) {
v->sprite_seq.seq[0].sprite++; v->cur_image++;
if (v->sprite_seq.seq[0].sprite < SPR_BUBBLE_GENERATE_3) { if (v->cur_image < SPR_BUBBLE_GENERATE_3) {
v->UpdatePositionAndViewport(); v->UpdatePositionAndViewport();
return true; return true;
} }
@@ -522,7 +521,7 @@ static bool BubbleTick(EffectVehicle *v)
v->x_pos += b->x; v->x_pos += b->x;
v->y_pos += b->y; v->y_pos += b->y;
v->z_pos += b->z; v->z_pos += b->z;
v->sprite_seq.Set(SPR_BUBBLE_0 + b->image); v->cur_image = SPR_BUBBLE_0 + b->image;
v->UpdatePositionAndViewport(); v->UpdatePositionAndViewport();

View File

@@ -89,7 +89,7 @@ static TrackBits GetRailTrackBitsUniversal(TileIndex t, byte *override)
{ {
switch (GetTileType(t)) { switch (GetTileType(t)) {
case MP_RAILWAY: case MP_RAILWAY:
if (!HasRailCatenary(GetRailType(t))) return TRACK_BIT_NONE; if (!HasCatenary(GetRailType(t))) return TRACK_BIT_NONE;
switch (GetRailTileType(t)) { switch (GetRailTileType(t)) {
case RAIL_TILE_NORMAL: case RAIL_TILE_SIGNALS: case RAIL_TILE_NORMAL: case RAIL_TILE_SIGNALS:
return GetTrackBits(t); return GetTrackBits(t);
@@ -99,7 +99,7 @@ static TrackBits GetRailTrackBitsUniversal(TileIndex t, byte *override)
break; break;
case MP_TUNNELBRIDGE: case MP_TUNNELBRIDGE:
if (!HasRailCatenary(GetRailType(t))) return TRACK_BIT_NONE; if (!HasCatenary(GetRailType(t))) return TRACK_BIT_NONE;
if (override != NULL && (IsTunnel(t) || GetTunnelBridgeLength(t, GetOtherBridgeEnd(t)) > 0)) { if (override != NULL && (IsTunnel(t) || GetTunnelBridgeLength(t, GetOtherBridgeEnd(t)) > 0)) {
*override = 1 << GetTunnelBridgeDirection(t); *override = 1 << GetTunnelBridgeDirection(t);
} }
@@ -107,12 +107,12 @@ static TrackBits GetRailTrackBitsUniversal(TileIndex t, byte *override)
case MP_ROAD: case MP_ROAD:
if (!IsLevelCrossing(t)) return TRACK_BIT_NONE; if (!IsLevelCrossing(t)) return TRACK_BIT_NONE;
if (!HasRailCatenary(GetRailType(t))) return TRACK_BIT_NONE; if (!HasCatenary(GetRailType(t))) return TRACK_BIT_NONE;
return GetCrossingRailBits(t); return GetCrossingRailBits(t);
case MP_STATION: case MP_STATION:
if (!HasStationRail(t)) return TRACK_BIT_NONE; if (!HasStationRail(t)) return TRACK_BIT_NONE;
if (!HasRailCatenary(GetRailType(t))) return TRACK_BIT_NONE; if (!HasCatenary(GetRailType(t))) return TRACK_BIT_NONE;
return TrackToTrackBits(GetRailStationTrack(t)); return TrackToTrackBits(GetRailStationTrack(t));
default: default:
@@ -135,7 +135,7 @@ static TrackBits MaskWireBits(TileIndex t, TrackBits tracks)
* axis that still display wires to preserve visual continuity. */ * axis that still display wires to preserve visual continuity. */
TileIndex next_tile = TileAddByDiagDir(t, d); TileIndex next_tile = TileAddByDiagDir(t, d);
RailType rt = GetTileRailType(next_tile); RailType rt = GetTileRailType(next_tile);
if (rt == INVALID_RAILTYPE || !HasRailCatenary(rt) || if (rt == INVALID_RAILTYPE || !HasCatenary(rt) ||
((TrackStatusToTrackBits(GetTileTrackStatus(next_tile, TRANSPORT_RAIL, 0)) & DiagdirReachesTracks(d)) == TRACK_BIT_NONE && ((TrackStatusToTrackBits(GetTileTrackStatus(next_tile, TRANSPORT_RAIL, 0)) & DiagdirReachesTracks(d)) == TRACK_BIT_NONE &&
(!HasStationTileRail(next_tile) || GetRailStationAxis(next_tile) != DiagDirToAxis(d) || !CanStationTileHaveWires(next_tile)))) { (!HasStationTileRail(next_tile) || GetRailStationAxis(next_tile) != DiagDirToAxis(d) || !CanStationTileHaveWires(next_tile)))) {
neighbour_tdb |= DiagdirReachesTrackdirs(ReverseDiagDir(d)); 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 * @param ti The Tileinfo to draw the tile for
*/ */
void DrawRailCatenaryOnTunnel(const TileInfo *ti) void DrawCatenaryOnTunnel(const TileInfo *ti)
{ {
/* xmin, ymin, xmax + 1, ymax + 1 of BB */ /* xmin, ymin, xmax + 1, ymax + 1 of BB */
static const int _tunnel_wire_BB[4][4] = { static const int _tunnel_wire_BB[4][4] = {
@@ -255,7 +255,7 @@ void DrawRailCatenaryOnTunnel(const TileInfo *ti)
SpriteID wire_base = GetWireBase(ti->tile); SpriteID wire_base = GetWireBase(ti->tile);
const SortableSpriteStruct *sss = &RailCatenarySpriteData_Tunnel[dir]; const SortableSpriteStruct *sss = &CatenarySpriteData_Tunnel[dir];
const int *BB_data = _tunnel_wire_BB[dir]; const int *BB_data = _tunnel_wire_BB[dir];
AddSortableSpriteToDraw( AddSortableSpriteToDraw(
wire_base + sss->image_offset, PAL_NONE, ti->x + sss->x_offset, ti->y + sss->y_offset, wire_base + sss->image_offset, PAL_NONE, ti->x + sss->x_offset, ti->y + sss->y_offset,
@@ -270,7 +270,7 @@ void DrawRailCatenaryOnTunnel(const TileInfo *ti)
* Draws wires and, if required, pylons on a given tile * Draws wires and, if required, pylons on a given tile
* @param ti The Tileinfo to draw the tile for * @param ti The Tileinfo to draw the tile for
*/ */
static void DrawRailCatenaryRailway(const TileInfo *ti) static void DrawCatenaryRailway(const TileInfo *ti)
{ {
/* Pylons are placed on a tile edge, so we need to take into account /* 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 * the track configuration of 2 adjacent tiles. trackconfig[0] stores the
@@ -379,7 +379,7 @@ static void DrawRailCatenaryRailway(const TileInfo *ti)
if (IsTileType(neighbour, MP_STATION) || IsTileType(neighbour, MP_ROAD)) tileh[TS_NEIGHBOUR] = SLOPE_FLAT; 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 */ /* Read the foundations if they are present, and adjust the tileh */
if (trackconfig[TS_NEIGHBOUR] != TRACK_BIT_NONE && IsTileType(neighbour, MP_RAILWAY) && HasRailCatenary(GetRailType(neighbour))) foundation = GetRailFoundation(tileh[TS_NEIGHBOUR], trackconfig[TS_NEIGHBOUR]); if (trackconfig[TS_NEIGHBOUR] != TRACK_BIT_NONE && IsTileType(neighbour, MP_RAILWAY) && HasCatenary(GetRailType(neighbour))) foundation = GetRailFoundation(tileh[TS_NEIGHBOUR], trackconfig[TS_NEIGHBOUR]);
if (IsBridgeTile(neighbour)) { if (IsBridgeTile(neighbour)) {
foundation = GetBridgeFoundation(tileh[TS_NEIGHBOUR], DiagDirToAxis(GetTunnelBridgeDirection(neighbour))); foundation = GetBridgeFoundation(tileh[TS_NEIGHBOUR], DiagDirToAxis(GetTunnelBridgeDirection(neighbour)));
} }
@@ -442,7 +442,7 @@ static void DrawRailCatenaryRailway(const TileInfo *ti)
} }
} }
/* The wire above the tunnel is drawn together with the tunnel-roof (see DrawRailCatenaryOnTunnel()) */ /* The wire above the tunnel is drawn together with the tunnel-roof (see DrawCatenaryOnTunnel()) */
if (IsTunnelTile(ti->tile)) return; if (IsTunnelTile(ti->tile)) return;
/* Don't draw a wire under a low bridge */ /* Don't draw a wire under a low bridge */
@@ -478,7 +478,7 @@ static void DrawRailCatenaryRailway(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(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])); assert(!IsSteepSlope(tileh[TS_HOME]));
sss = &RailCatenarySpriteData[Wires[tileh_selector][t][PCPconfig]]; sss = &CatenarySpriteData[Wires[tileh_selector][t][PCPconfig]];
/* /*
* The "wire"-sprite position is inside the tile, i.e. 0 <= sss->?_offset < TILE_SIZE. * The "wire"-sprite position is inside the tile, i.e. 0 <= sss->?_offset < TILE_SIZE.
@@ -498,7 +498,7 @@ static void DrawRailCatenaryRailway(const TileInfo *ti)
* *
* @param ti The Tileinfo to draw the tile for * @param ti The Tileinfo to draw the tile for
*/ */
void DrawRailCatenaryOnBridge(const TileInfo *ti) void DrawCatenaryOnBridge(const TileInfo *ti)
{ {
TileIndex end = GetSouthernBridgeEnd(ti->tile); TileIndex end = GetSouthernBridgeEnd(ti->tile);
TileIndex start = GetOtherBridgeEnd(end); TileIndex start = GetOtherBridgeEnd(end);
@@ -511,15 +511,15 @@ void DrawRailCatenaryOnBridge(const TileInfo *ti)
Axis axis = GetBridgeAxis(ti->tile); Axis axis = GetBridgeAxis(ti->tile);
TLG tlg = GetTLG(ti->tile); TLG tlg = GetTLG(ti->tile);
RailCatenarySprite offset = (RailCatenarySprite)(axis == AXIS_X ? 0 : WIRE_Y_FLAT_BOTH - WIRE_X_FLAT_BOTH); CatenarySprite offset = (CatenarySprite)(axis == AXIS_X ? 0 : WIRE_Y_FLAT_BOTH - WIRE_X_FLAT_BOTH);
if ((length % 2) && num == length) { if ((length % 2) && num == length) {
/* Draw the "short" wire on the southern end of the bridge /* Draw the "short" wire on the southern end of the bridge
* only needed if the length of the bridge is odd */ * only needed if the length of the bridge is odd */
sss = &RailCatenarySpriteData[WIRE_X_FLAT_BOTH + offset]; sss = &CatenarySpriteData[WIRE_X_FLAT_BOTH + offset];
} else { } else {
/* Draw "long" wires on all other tiles of the bridge (one pylon every two tiles) */ /* Draw "long" wires on all other tiles of the bridge (one pylon every two tiles) */
sss = &RailCatenarySpriteData[WIRE_X_FLAT_SW + (num % 2) + offset]; sss = &CatenarySpriteData[WIRE_X_FLAT_SW + (num % 2) + offset];
} }
height = GetBridgePixelHeight(end); height = GetBridgePixelHeight(end);
@@ -558,14 +558,14 @@ void DrawRailCatenaryOnBridge(const TileInfo *ti)
/** /**
* Draws overhead wires and pylons for electric railways. * Draws overhead wires and pylons for electric railways.
* @param ti The TileInfo struct of the tile being drawn * @param ti The TileInfo struct of the tile being drawn
* @see DrawRailCatenaryRailway * @see DrawCatenaryRailway
*/ */
void DrawRailCatenary(const TileInfo *ti) void DrawCatenary(const TileInfo *ti)
{ {
switch (GetTileType(ti->tile)) { switch (GetTileType(ti->tile)) {
case MP_RAILWAY: case MP_RAILWAY:
if (IsRailDepot(ti->tile)) { if (IsRailDepot(ti->tile)) {
const SortableSpriteStruct *sss = &RailCatenarySpriteData_Depot[GetRailDepotDirection(ti->tile)]; const SortableSpriteStruct *sss = &CatenarySpriteData_Depot[GetRailDepotDirection(ti->tile)];
SpriteID wire_base = GetWireBase(ti->tile); SpriteID wire_base = GetWireBase(ti->tile);
@@ -587,7 +587,7 @@ void DrawRailCatenary(const TileInfo *ti)
default: return; default: return;
} }
DrawRailCatenaryRailway(ti); DrawCatenaryRailway(ti);
} }
bool SettingsDisableElrail(int32 p1) bool SettingsDisableElrail(int32 p1)

View File

@@ -20,7 +20,7 @@
* Test if a rail type has catenary * Test if a rail type has catenary
* @param rt Rail type to test * @param rt Rail type to test
*/ */
static inline bool HasRailCatenary(RailType rt) static inline bool HasCatenary(RailType rt)
{ {
return HasBit(GetRailTypeInfo(rt)->flags, RTF_CATENARY); return HasBit(GetRailTypeInfo(rt)->flags, RTF_CATENARY);
} }
@@ -29,14 +29,14 @@ static inline bool HasRailCatenary(RailType rt)
* Test if we should draw rail catenary * Test if we should draw rail catenary
* @param rt Rail type to test * @param rt Rail type to test
*/ */
static inline bool HasRailCatenaryDrawn(RailType rt) static inline bool HasCatenaryDrawn(RailType rt)
{ {
return HasRailCatenary(rt) && !IsInvisibilitySet(TO_CATENARY) && !_settings_game.vehicle.disable_elrails; return HasCatenary(rt) && !IsInvisibilitySet(TO_CATENARY) && !_settings_game.vehicle.disable_elrails;
} }
void DrawRailCatenary(const TileInfo *ti); void DrawCatenary(const TileInfo *ti);
void DrawRailCatenaryOnTunnel(const TileInfo *ti); void DrawCatenaryOnTunnel(const TileInfo *ti);
void DrawRailCatenaryOnBridge(const TileInfo *ti); void DrawCatenaryOnBridge(const TileInfo *ti);
bool SettingsDisableElrail(int32 p1); ///< _settings_game.disable_elrail callback bool SettingsDisableElrail(int32 p1); ///< _settings_game.disable_elrail callback

View File

@@ -48,6 +48,11 @@ EngineOverrideManager _engine_mngr;
*/ */
static Year _year_engine_aging_stops; 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 */ /** Number of engines of each vehicle type in original engine data */
const uint8 _engine_counts[4] = { const uint8 _engine_counts[4] = {
lengthof(_orig_rail_vehicle_info), lengthof(_orig_rail_vehicle_info),
@@ -538,6 +543,29 @@ void SetupEngines()
const Engine *e = new Engine(eid->type, eid->internal_id); const Engine *e = new Engine(eid->type, eid->internal_id);
assert(e->index == index); 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); void ShowEnginePreviewWindow(EngineID engine);
@@ -683,6 +711,19 @@ void StartupEngines()
c->avail_roadtypes = GetCompanyRoadtypes(c->index); 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 */ /* Invalidate any open purchase lists */
InvalidateWindowClassesData(WC_BUILD_VEHICLE); InvalidateWindowClassesData(WC_BUILD_VEHICLE);
} }
@@ -779,10 +820,7 @@ static bool IsVehicleTypeDisabled(VehicleType type, bool ai)
/** Daily check to offer an exclusive engine preview to the companies. */ /** Daily check to offer an exclusive engine preview to the companies. */
void EnginesDailyLoop() void EnginesDailyLoop()
{ {
Company *c; CheckRailIntroduction();
FOR_ALL_COMPANIES(c) {
c->avail_railtypes = AddDateIntroducedRailTypes(c->avail_railtypes, _date);
}
if (_cur_year >= _year_engine_aging_stops) return; if (_cur_year >= _year_engine_aging_stops) return;

View File

@@ -158,7 +158,6 @@ enum EngineMiscFlags {
EF_AUTO_REFIT = 4, ///< Automatic refitting is allowed 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_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_NO_BREAKDOWN_SMOKE = 6, ///< Do not show black smoke during a breakdown.
EF_SPRITE_STACK = 7, ///< Draw vehicle by stacking multiple sprites.
}; };
/** /**

View File

@@ -14,96 +14,6 @@
#include "core/enum_type.hpp" #include "core/enum_type.hpp"
/** The different abstract types of files that the system knows about. */
enum AbstractFileType {
FT_NONE, ///< nothing to do
FT_SAVEGAME, ///< old or new savegame
FT_SCENARIO, ///< old or new scenario
FT_HEIGHTMAP, ///< heightmap file
FT_INVALID = 7, ///< Invalid or unknown file type.
FT_NUMBITS = 3, ///< Number of bits required for storing a #AbstractFileType value.
FT_MASK = (1 << FT_NUMBITS) - 1, ///< Bitmask for extracting an abstract file type.
};
/** Kinds of files in each #AbstractFileType. */
enum DetailedFileType {
/* Save game and scenario files. */
DFT_OLD_GAME_FILE, ///< Old save game or scenario file.
DFT_GAME_FILE, ///< Save game or scenario file.
/* Heightmap files. */
DFT_HEIGHTMAP_BMP, ///< BMP file.
DFT_HEIGHTMAP_PNG, ///< PNG file.
/* fios 'files' */
DFT_FIOS_DRIVE, ///< A drive (letter) entry.
DFT_FIOS_PARENT, ///< A parent directory entry.
DFT_FIOS_DIR, ///< A directory entry.
DFT_FIOS_DIRECT, ///< Direct filename.
DFT_INVALID = 255, ///< Unknown or invalid file.
};
/** Operation performed on the file. */
enum SaveLoadOperation {
SLO_CHECK, ///< Load file for checking and/or preview.
SLO_LOAD, ///< File is being loaded.
SLO_SAVE, ///< File is being saved.
SLO_INVALID, ///< Unknown file operation.
};
/**
* Construct an enum value for #FiosType as a combination of an abstract and a detailed file type.
* @param abstract Abstract file type (one of #AbstractFileType).
* @param detailed Detailed file type (one of #DetailedFileType).
*/
#define MAKE_FIOS_TYPE(abstract, detailed) ((abstract) | ((detailed) << FT_NUMBITS))
/**
* Elements of a file system that are recognized.
* Values are a combination of #AbstractFileType and #DetailedFileType.
* @see GetAbstractFileType GetDetailedFileType
*/
enum FiosType {
FIOS_TYPE_DRIVE = MAKE_FIOS_TYPE(FT_NONE, DFT_FIOS_DRIVE),
FIOS_TYPE_PARENT = MAKE_FIOS_TYPE(FT_NONE, DFT_FIOS_PARENT),
FIOS_TYPE_DIR = MAKE_FIOS_TYPE(FT_NONE, DFT_FIOS_DIR),
FIOS_TYPE_DIRECT = MAKE_FIOS_TYPE(FT_NONE, DFT_FIOS_DIRECT),
FIOS_TYPE_FILE = MAKE_FIOS_TYPE(FT_SAVEGAME, DFT_GAME_FILE),
FIOS_TYPE_OLDFILE = MAKE_FIOS_TYPE(FT_SAVEGAME, DFT_OLD_GAME_FILE),
FIOS_TYPE_SCENARIO = MAKE_FIOS_TYPE(FT_SCENARIO, DFT_GAME_FILE),
FIOS_TYPE_OLD_SCENARIO = MAKE_FIOS_TYPE(FT_SCENARIO, DFT_OLD_GAME_FILE),
FIOS_TYPE_PNG = MAKE_FIOS_TYPE(FT_HEIGHTMAP, DFT_HEIGHTMAP_PNG),
FIOS_TYPE_BMP = MAKE_FIOS_TYPE(FT_HEIGHTMAP, DFT_HEIGHTMAP_BMP),
FIOS_TYPE_INVALID = MAKE_FIOS_TYPE(FT_INVALID, DFT_INVALID),
};
#undef MAKE_FIOS_TYPE
/**
* Extract the abstract file type from a #FiosType.
* @param fios_type Type to query.
* @return The Abstract file type of the \a fios_type.
*/
inline AbstractFileType GetAbstractFileType(FiosType fios_type)
{
return static_cast<AbstractFileType>(fios_type & FT_MASK);
}
/**
* Extract the detailed file type from a #FiosType.
* @param fios_type Type to query.
* @return The Detailed file type of the \a fios_type.
*/
inline DetailedFileType GetDetailedFileType(FiosType fios_type)
{
return static_cast<DetailedFileType>(fios_type >> FT_NUMBITS);
}
/** /**
* The different kinds of subdirectories OpenTTD uses * The different kinds of subdirectories OpenTTD uses
*/ */

View File

@@ -29,15 +29,17 @@
#include "safeguards.h" #include "safeguards.h"
/* Variables to display file lists */ /* Variables to display file lists */
SmallVector<FiosItem, 32> _fios_items;
static char *_fios_path; static char *_fios_path;
static const char *_fios_path_last; static const char *_fios_path_last;
SmallFiosItem _file_to_saveload;
SortingBits _savegame_sort_order = SORT_BY_DATE | SORT_DESCENDING; SortingBits _savegame_sort_order = SORT_BY_DATE | SORT_DESCENDING;
/* OS-specific functions are taken from their respective files (win32/unix/os2 .c) */ /* OS-specific functions are taken from their respective files (win32/unix/os2 .c) */
extern bool FiosIsRoot(const char *path); extern bool FiosIsRoot(const char *path);
extern bool FiosIsValidFile(const char *path, const struct dirent *ent, struct stat *sb); extern bool FiosIsValidFile(const char *path, const struct dirent *ent, struct stat *sb);
extern bool FiosIsHiddenFile(const struct dirent *ent); extern bool FiosIsHiddenFile(const struct dirent *ent);
extern void FiosGetDrives(FileList &file_list); extern void FiosGetDrives();
extern bool FiosGetDiskFreeSpace(const char *path, uint64 *tot); extern bool FiosGetDiskFreeSpace(const char *path, uint64 *tot);
/* get the name of an oldstyle savegame */ /* get the name of an oldstyle savegame */
@@ -63,72 +65,11 @@ int CDECL CompareFiosItems(const FiosItem *da, const FiosItem *db)
return r; return r;
} }
FileList::~FileList() /** Free the list of savegames. */
void FiosFreeSavegameList()
{ {
this->Clear(); _fios_items.Clear();
} _fios_items.Compact();
/**
* Construct a file list with the given kind of files, for the stated purpose.
* @param abstract_filetype Kind of files to collect.
* @param fop Purpose of the collection, either #SLO_LOAD or #SLO_SAVE.
*/
void FileList::BuildFileList(AbstractFileType abstract_filetype, SaveLoadOperation fop)
{
this->Clear();
assert(fop == SLO_LOAD || SLO_SAVE);
switch (abstract_filetype) {
case FT_NONE:
break;
case FT_SAVEGAME:
FiosGetSavegameList(fop, *this);
break;
case FT_SCENARIO:
FiosGetScenarioList(fop, *this);
break;
case FT_HEIGHTMAP:
FiosGetHeightmapList(fop, *this);
break;
default:
NOT_REACHED();
}
}
/**
* Find file information of a file by its name from the file list.
* @param file The filename to return information about. Can be the actual name
* or a numbered entry into the filename list.
* @return The information on the file, or \c NULL if the file is not available.
*/
const FiosItem *FileList::FindItem(const char *file)
{
for (const FiosItem *item = this->Begin(); item != this->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, this->Length())) return this->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 = this->Begin(); item != this->End(); item++) {
if (strcmp(long_file, item->name) == 0) return item;
if (strcmp(long_file, item->title) == 0) return item;
}
return NULL;
} }
/** /**
@@ -274,24 +215,23 @@ bool FiosDelete(const char *name)
return unlink(filename) == 0; return unlink(filename) == 0;
} }
typedef FiosType fios_getlist_callback_proc(SaveLoadOperation fop, const char *filename, const char *ext, char *title, const char *last); typedef FiosType fios_getlist_callback_proc(SaveLoadDialogMode mode, const char *filename, const char *ext, char *title, const char *last);
/** /**
* Scanner to scan for a particular type of FIOS file. * Scanner to scan for a particular type of FIOS file.
*/ */
class FiosFileScanner : public FileScanner { class FiosFileScanner : public FileScanner {
SaveLoadOperation fop; ///< The kind of file we are looking for. SaveLoadDialogMode mode; ///< The mode we want to search for
fios_getlist_callback_proc *callback_proc; ///< Callback to check whether the file may be added fios_getlist_callback_proc *callback_proc; ///< Callback to check whether the file may be added
FileList &file_list; ///< Destination of the found files.
public: public:
/** /**
* Create the scanner * Create the scanner
* @param fop Purpose of collecting the list. * @param mode The mode we are in. Some modes don't allow 'parent'.
* @param callback_proc The function that is called where you need to do the filtering. * @param callback_proc The function that is called where you need to do the filtering.
* @param file_list Destination of the found files.
*/ */
FiosFileScanner(SaveLoadOperation fop, fios_getlist_callback_proc *callback_proc, FileList &file_list) : FiosFileScanner(SaveLoadDialogMode mode, fios_getlist_callback_proc *callback_proc) :
fop(fop), callback_proc(callback_proc), file_list(file_list) mode(mode),
callback_proc(callback_proc)
{} {}
/* virtual */ bool AddFile(const char *filename, size_t basepath_length, const char *tar_filename); /* virtual */ bool AddFile(const char *filename, size_t basepath_length, const char *tar_filename);
@@ -311,14 +251,14 @@ bool FiosFileScanner::AddFile(const char *filename, size_t basepath_length, cons
char fios_title[64]; char fios_title[64];
fios_title[0] = '\0'; // reset the title; fios_title[0] = '\0'; // reset the title;
FiosType type = this->callback_proc(this->fop, filename, ext, fios_title, lastof(fios_title)); FiosType type = this->callback_proc(this->mode, filename, ext, fios_title, lastof(fios_title));
if (type == FIOS_TYPE_INVALID) return false; if (type == FIOS_TYPE_INVALID) return false;
for (const FiosItem *fios = file_list.Begin(); fios != file_list.End(); fios++) { for (const FiosItem *fios = _fios_items.Begin(); fios != _fios_items.End(); fios++) {
if (strcmp(fios->name, filename) == 0) return false; if (strcmp(fios->name, filename) == 0) return false;
} }
FiosItem *fios = file_list.Append(); FiosItem *fios = _fios_items.Append();
#ifdef WIN32 #ifdef WIN32
struct _stat sb; struct _stat sb;
if (_tstat(OTTD2FS(filename), &sb) == 0) { if (_tstat(OTTD2FS(filename), &sb) == 0) {
@@ -349,12 +289,11 @@ bool FiosFileScanner::AddFile(const char *filename, size_t basepath_length, cons
/** /**
* Fill the list of the files in a directory, according to some arbitrary rule. * Fill the list of the files in a directory, according to some arbitrary rule.
* @param fop Purpose of collecting the list. * @param mode The mode we are in. Some modes don't allow 'parent'.
* @param callback_proc The function that is called where you need to do the filtering. * @param callback_proc The function that is called where you need to do the filtering.
* @param subdir The directory from where to start (global) searching. * @param subdir The directory from where to start (global) searching.
* @param file_list Destination of the found files.
*/ */
static void FiosGetFileList(SaveLoadOperation fop, fios_getlist_callback_proc *callback_proc, Subdirectory subdir, FileList &file_list) static void FiosGetFileList(SaveLoadDialogMode mode, fios_getlist_callback_proc *callback_proc, Subdirectory subdir)
{ {
struct stat sb; struct stat sb;
struct dirent *dirent; struct dirent *dirent;
@@ -363,11 +302,11 @@ static void FiosGetFileList(SaveLoadOperation fop, fios_getlist_callback_proc *c
int sort_start; int sort_start;
char d_name[sizeof(fios->name)]; char d_name[sizeof(fios->name)];
file_list.Clear(); _fios_items.Clear();
/* A parent directory link exists if we are not in the root directory */ /* A parent directory link exists if we are not in the root directory */
if (!FiosIsRoot(_fios_path)) { if (!FiosIsRoot(_fios_path)) {
fios = file_list.Append(); fios = _fios_items.Append();
fios->type = FIOS_TYPE_PARENT; fios->type = FIOS_TYPE_PARENT;
fios->mtime = 0; fios->mtime = 0;
strecpy(fios->name, "..", lastof(fios->name)); strecpy(fios->name, "..", lastof(fios->name));
@@ -383,7 +322,7 @@ static void FiosGetFileList(SaveLoadOperation fop, fios_getlist_callback_proc *c
if (FiosIsValidFile(_fios_path, dirent, &sb) && S_ISDIR(sb.st_mode) && if (FiosIsValidFile(_fios_path, dirent, &sb) && S_ISDIR(sb.st_mode) &&
(!FiosIsHiddenFile(dirent) || strncasecmp(d_name, PERSONAL_DIR, strlen(d_name)) == 0) && (!FiosIsHiddenFile(dirent) || strncasecmp(d_name, PERSONAL_DIR, strlen(d_name)) == 0) &&
strcmp(d_name, ".") != 0 && strcmp(d_name, "..") != 0) { strcmp(d_name, ".") != 0 && strcmp(d_name, "..") != 0) {
fios = file_list.Append(); fios = _fios_items.Append();
fios->type = FIOS_TYPE_DIR; fios->type = FIOS_TYPE_DIR;
fios->mtime = 0; fios->mtime = 0;
strecpy(fios->name, d_name, lastof(fios->name)); strecpy(fios->name, d_name, lastof(fios->name));
@@ -398,27 +337,27 @@ static void FiosGetFileList(SaveLoadOperation fop, fios_getlist_callback_proc *c
{ {
SortingBits order = _savegame_sort_order; SortingBits order = _savegame_sort_order;
_savegame_sort_order = SORT_BY_NAME | SORT_ASCENDING; _savegame_sort_order = SORT_BY_NAME | SORT_ASCENDING;
QSortT(file_list.files.Begin(), file_list.files.Length(), CompareFiosItems); QSortT(_fios_items.Begin(), _fios_items.Length(), CompareFiosItems);
_savegame_sort_order = order; _savegame_sort_order = order;
} }
/* This is where to start sorting for the filenames */ /* This is where to start sorting for the filenames */
sort_start = file_list.Length(); sort_start = _fios_items.Length();
/* Show files */ /* Show files */
FiosFileScanner scanner(fop, callback_proc, file_list); FiosFileScanner scanner(mode, callback_proc);
if (subdir == NO_DIRECTORY) { if (subdir == NO_DIRECTORY) {
scanner.Scan(NULL, _fios_path, false); scanner.Scan(NULL, _fios_path, false);
} else { } else {
scanner.Scan(NULL, subdir, true, true); scanner.Scan(NULL, subdir, true, true);
} }
QSortT(file_list.Get(sort_start), file_list.Length() - sort_start, CompareFiosItems); QSortT(_fios_items.Get(sort_start), _fios_items.Length() - sort_start, CompareFiosItems);
/* Show drives */ /* Show drives */
FiosGetDrives(file_list); FiosGetDrives();
file_list.Compact(); _fios_items.Compact();
} }
/** /**
@@ -447,7 +386,7 @@ static void GetFileTitle(const char *file, char *title, const char *last, Subdir
/** /**
* Callback for FiosGetFileList. It tells if a file is a savegame or not. * Callback for FiosGetFileList. It tells if a file is a savegame or not.
* @param fop Purpose of collecting the list. * @param mode Save/load mode.
* @param file Name of the file to check. * @param file Name of the file to check.
* @param ext A pointer to the extension identifier inside file * @param ext A pointer to the extension identifier inside file
* @param title Buffer if a callback wants to lookup the title of the file; NULL to skip the lookup * @param title Buffer if a callback wants to lookup the title of the file; NULL to skip the lookup
@@ -456,7 +395,7 @@ static void GetFileTitle(const char *file, char *title, const char *last, Subdir
* @see FiosGetFileList * @see FiosGetFileList
* @see FiosGetSavegameList * @see FiosGetSavegameList
*/ */
FiosType FiosGetSavegameListCallback(SaveLoadOperation fop, const char *file, const char *ext, char *title, const char *last) FiosType FiosGetSavegameListCallback(SaveLoadDialogMode mode, const char *file, const char *ext, char *title, const char *last)
{ {
/* Show savegame files /* Show savegame files
* .SAV OpenTTD saved game * .SAV OpenTTD saved game
@@ -472,7 +411,7 @@ FiosType FiosGetSavegameListCallback(SaveLoadOperation fop, const char *file, co
return FIOS_TYPE_FILE; return FIOS_TYPE_FILE;
} }
if (fop == SLO_LOAD) { if (mode == SLD_LOAD_GAME || mode == SLD_LOAD_SCENARIO) {
if (strcasecmp(ext, ".ss1") == 0 || strcasecmp(ext, ".sv1") == 0 || if (strcasecmp(ext, ".ss1") == 0 || strcasecmp(ext, ".sv1") == 0 ||
strcasecmp(ext, ".sv2") == 0) { strcasecmp(ext, ".sv2") == 0) {
if (title != NULL) GetOldSaveGameName(file, title, last); if (title != NULL) GetOldSaveGameName(file, title, last);
@@ -485,11 +424,10 @@ FiosType FiosGetSavegameListCallback(SaveLoadOperation fop, const char *file, co
/** /**
* Get a list of savegames. * Get a list of savegames.
* @param fop Purpose of collecting the list. * @param mode Save/load mode.
* @param file_list Destination of the found files.
* @see FiosGetFileList * @see FiosGetFileList
*/ */
void FiosGetSavegameList(SaveLoadOperation fop, FileList &file_list) void FiosGetSavegameList(SaveLoadDialogMode mode)
{ {
static char *fios_save_path = NULL; static char *fios_save_path = NULL;
static char *fios_save_path_last = NULL; static char *fios_save_path_last = NULL;
@@ -503,12 +441,12 @@ void FiosGetSavegameList(SaveLoadOperation fop, FileList &file_list)
_fios_path = fios_save_path; _fios_path = fios_save_path;
_fios_path_last = fios_save_path_last; _fios_path_last = fios_save_path_last;
FiosGetFileList(fop, &FiosGetSavegameListCallback, NO_DIRECTORY, file_list); FiosGetFileList(mode, &FiosGetSavegameListCallback, NO_DIRECTORY);
} }
/** /**
* Callback for FiosGetFileList. It tells if a file is a scenario or not. * Callback for FiosGetFileList. It tells if a file is a scenario or not.
* @param fop Purpose of collecting the list. * @param mode Save/load mode.
* @param file Name of the file to check. * @param file Name of the file to check.
* @param ext A pointer to the extension identifier inside file * @param ext A pointer to the extension identifier inside file
* @param title Buffer if a callback wants to lookup the title of the file * @param title Buffer if a callback wants to lookup the title of the file
@@ -517,7 +455,7 @@ void FiosGetSavegameList(SaveLoadOperation fop, FileList &file_list)
* @see FiosGetFileList * @see FiosGetFileList
* @see FiosGetScenarioList * @see FiosGetScenarioList
*/ */
static FiosType FiosGetScenarioListCallback(SaveLoadOperation fop, const char *file, const char *ext, char *title, const char *last) static FiosType FiosGetScenarioListCallback(SaveLoadDialogMode mode, const char *file, const char *ext, char *title, const char *last)
{ {
/* Show scenario files /* Show scenario files
* .SCN OpenTTD style scenario file * .SCN OpenTTD style scenario file
@@ -528,7 +466,7 @@ static FiosType FiosGetScenarioListCallback(SaveLoadOperation fop, const char *f
return FIOS_TYPE_SCENARIO; return FIOS_TYPE_SCENARIO;
} }
if (fop == SLO_LOAD) { if (mode == SLD_LOAD_GAME || mode == SLD_LOAD_SCENARIO) {
if (strcasecmp(ext, ".sv0") == 0 || strcasecmp(ext, ".ss0") == 0 ) { if (strcasecmp(ext, ".sv0") == 0 || strcasecmp(ext, ".ss0") == 0 ) {
GetOldSaveGameName(file, title, last); GetOldSaveGameName(file, title, last);
return FIOS_TYPE_OLD_SCENARIO; return FIOS_TYPE_OLD_SCENARIO;
@@ -540,11 +478,10 @@ static FiosType FiosGetScenarioListCallback(SaveLoadOperation fop, const char *f
/** /**
* Get a list of scenarios. * Get a list of scenarios.
* @param fop Purpose of collecting the list. * @param mode Save/load mode.
* @param file_list Destination of the found files.
* @see FiosGetFileList * @see FiosGetFileList
*/ */
void FiosGetScenarioList(SaveLoadOperation fop, FileList &file_list) void FiosGetScenarioList(SaveLoadDialogMode mode)
{ {
static char *fios_scn_path = NULL; static char *fios_scn_path = NULL;
static char *fios_scn_path_last = NULL; static char *fios_scn_path_last = NULL;
@@ -562,11 +499,10 @@ void FiosGetScenarioList(SaveLoadOperation fop, FileList &file_list)
char base_path[MAX_PATH]; char base_path[MAX_PATH];
FioGetDirectory(base_path, lastof(base_path), SCENARIO_DIR); FioGetDirectory(base_path, lastof(base_path), SCENARIO_DIR);
Subdirectory subdir = (fop == SLO_LOAD && strcmp(base_path, _fios_path) == 0) ? SCENARIO_DIR : NO_DIRECTORY; FiosGetFileList(mode, &FiosGetScenarioListCallback, (mode == SLD_LOAD_SCENARIO && strcmp(base_path, _fios_path) == 0) ? SCENARIO_DIR : NO_DIRECTORY);
FiosGetFileList(fop, &FiosGetScenarioListCallback, subdir, file_list);
} }
static FiosType FiosGetHeightmapListCallback(SaveLoadOperation fop, const char *file, const char *ext, char *title, const char *last) static FiosType FiosGetHeightmapListCallback(SaveLoadDialogMode mode, const char *file, const char *ext, char *title, const char *last)
{ {
/* Show heightmap files /* Show heightmap files
* .PNG PNG Based heightmap files * .PNG PNG Based heightmap files
@@ -612,10 +548,9 @@ static FiosType FiosGetHeightmapListCallback(SaveLoadOperation fop, const char *
/** /**
* Get a list of heightmaps. * Get a list of heightmaps.
* @param fop Purpose of collecting the list. * @param mode Save/load mode.
* @param file_list Destination of the found files.
*/ */
void FiosGetHeightmapList(SaveLoadOperation fop, FileList &file_list) void FiosGetHeightmapList(SaveLoadDialogMode mode)
{ {
static char *fios_hmap_path = NULL; static char *fios_hmap_path = NULL;
static char *fios_hmap_path_last = NULL; static char *fios_hmap_path_last = NULL;
@@ -632,8 +567,7 @@ void FiosGetHeightmapList(SaveLoadOperation fop, FileList &file_list)
char base_path[MAX_PATH]; char base_path[MAX_PATH];
FioGetDirectory(base_path, lastof(base_path), HEIGHTMAP_DIR); FioGetDirectory(base_path, lastof(base_path), HEIGHTMAP_DIR);
Subdirectory subdir = strcmp(base_path, _fios_path) == 0 ? HEIGHTMAP_DIR : NO_DIRECTORY; FiosGetFileList(mode, &FiosGetHeightmapListCallback, strcmp(base_path, _fios_path) == 0 ? HEIGHTMAP_DIR : NO_DIRECTORY);
FiosGetFileList(fop, &FiosGetHeightmapListCallback, subdir, file_list);
} }
/** /**

View File

@@ -81,17 +81,52 @@ extern LoadCheckData _load_check_data;
enum FileSlots { enum FileSlots {
/** /**
* Slot used for the GRF scanning and such. * Slot used for the GRF scanning and such. This slot cannot be reused
* This slot is used for all temporary accesses to files when scanning/testing files, * as it will otherwise cause issues when pressing "rescan directories".
* and thus cannot be used for files, which are continuously accessed during a game. * It can furthermore not be larger than LAST_GRF_SLOT as that complicates
* the testing for "too much NewGRFs".
*/ */
CONFIG_SLOT = 0, CONFIG_SLOT = 0,
/** Slot for the sound. */ /** Slot for the sound. */
SOUND_SLOT = 1, SOUND_SLOT = 1,
/** First slot usable for (New)GRFs used during the game. */ /** First slot usable for (New)GRFs used during the game. */
FIRST_GRF_SLOT = 2, FIRST_GRF_SLOT = 2,
/** Last slot usable for (New)GRFs used during the game. */
LAST_GRF_SLOT = 63,
/** Maximum number of slots. */ /** Maximum number of slots. */
MAX_FILE_SLOTS = 128, MAX_FILE_SLOTS = 64
};
/** Mode of the file dialogue window. */
enum SaveLoadDialogMode {
SLD_LOAD_GAME, ///< Load a game.
SLD_LOAD_SCENARIO, ///< Load a scenario.
SLD_SAVE_GAME, ///< Save a game.
SLD_SAVE_SCENARIO, ///< Save a scenario.
SLD_LOAD_HEIGHTMAP, ///< Load a heightmap.
SLD_SAVE_HEIGHTMAP, ///< Save a heightmap.
};
/** The different types of files that the system knows about. */
enum FileType {
FT_NONE, ///< nothing to do
FT_SAVEGAME, ///< old or new savegame
FT_SCENARIO, ///< old or new scenario
FT_HEIGHTMAP, ///< heightmap file
};
enum FiosType {
FIOS_TYPE_DRIVE,
FIOS_TYPE_PARENT,
FIOS_TYPE_DIR,
FIOS_TYPE_FILE,
FIOS_TYPE_OLDFILE,
FIOS_TYPE_SCENARIO,
FIOS_TYPE_OLD_SCENARIO,
FIOS_TYPE_DIRECT,
FIOS_TYPE_PNG,
FIOS_TYPE_BMP,
FIOS_TYPE_INVALID = 255,
}; };
/** Deals with finding savegames */ /** Deals with finding savegames */
@@ -102,95 +137,12 @@ struct FiosItem {
char name[MAX_PATH]; char name[MAX_PATH];
}; };
/** List of file information. */ /** Deals with the type of the savegame, independent of extension */
class FileList { struct SmallFiosItem {
public: int mode; ///< savegame/scenario type (old, new)
~FileList(); FileType filetype; ///< what type of file are we dealing with
char name[MAX_PATH]; ///< name
/** char title[255]; ///< internal name of the game
* Construct a new entry in the file list.
* @return Pointer to the new items to be initialized.
*/
inline FiosItem *Append()
{
return this->files.Append();
}
/**
* Get the number of files in the list.
* @return The number of files stored in the list.
*/
inline uint Length() const
{
return this->files.Length();
}
/**
* Get a pointer to the first file information.
* @return Address of the first file information.
*/
inline const FiosItem *Begin() const
{
return this->files.Begin();
}
/**
* Get a pointer behind the last file information.
* @return Address behind the last file information.
*/
inline const FiosItem *End() const
{
return this->files.End();
}
/**
* Get a pointer to the indicated file information. File information must exist.
* @return Address of the indicated existing file information.
*/
inline const FiosItem *Get(uint index) const
{
return this->files.Get(index);
}
/**
* Get a pointer to the indicated file information. File information must exist.
* @return Address of the indicated existing file information.
*/
inline FiosItem *Get(uint index)
{
return this->files.Get(index);
}
inline const FiosItem &operator[](uint index) const
{
return this->files[index];
}
/**
* Get a reference to the indicated file information. File information must exist.
* @return The requested file information.
*/
inline FiosItem &operator[](uint index)
{
return this->files[index];
}
/** Remove all items from the list. */
inline void Clear()
{
this->files.Clear();
}
/** Compact the list down to the smallest block size boundary. */
inline void Compact()
{
this->files.Compact();
}
void BuildFileList(AbstractFileType abstract_filetype, SaveLoadOperation fop);
const FiosItem *FindItem(const char *file);
SmallVector<FiosItem, 32> files; ///< The list of files.
}; };
enum SortingBits { enum SortingBits {
@@ -202,14 +154,18 @@ enum SortingBits {
DECLARE_ENUM_AS_BIT_SET(SortingBits) DECLARE_ENUM_AS_BIT_SET(SortingBits)
/* Variables to display file lists */ /* Variables to display file lists */
extern SmallVector<FiosItem, 32> _fios_items;
extern SmallFiosItem _file_to_saveload;
extern SaveLoadDialogMode _saveload_mode;
extern SortingBits _savegame_sort_order; extern SortingBits _savegame_sort_order;
void ShowSaveLoadDialog(AbstractFileType abstract_filetype, SaveLoadOperation fop); void ShowSaveLoadDialog(SaveLoadDialogMode mode);
void FiosGetSavegameList(SaveLoadOperation fop, FileList &file_list); void FiosGetSavegameList(SaveLoadDialogMode mode);
void FiosGetScenarioList(SaveLoadOperation fop, FileList &file_list); void FiosGetScenarioList(SaveLoadDialogMode mode);
void FiosGetHeightmapList(SaveLoadOperation fop, FileList &file_list); void FiosGetHeightmapList(SaveLoadDialogMode mode);
void FiosFreeSavegameList();
const char *FiosBrowseTo(const FiosItem *item); const char *FiosBrowseTo(const FiosItem *item);
StringID FiosGetDescText(const char **path, uint64 *total_free); StringID FiosGetDescText(const char **path, uint64 *total_free);
@@ -217,8 +173,13 @@ bool FiosDelete(const char *name);
void FiosMakeHeightmapName(char *buf, const char *name, const char *last); void FiosMakeHeightmapName(char *buf, const char *name, const char *last);
void FiosMakeSavegameName(char *buf, const char *name, const char *last); void FiosMakeSavegameName(char *buf, const char *name, const char *last);
FiosType FiosGetSavegameListCallback(SaveLoadOperation fop, const char *file, const char *ext, char *title, const char *last); FiosType FiosGetSavegameListCallback(SaveLoadDialogMode mode, const char *file, const char *ext, char *title, const char *last);
int CDECL CompareFiosItems(const FiosItem *a, const FiosItem *b); int CDECL CompareFiosItems(const FiosItem *a, const FiosItem *b);
extern const TextColour _fios_colours[];
void BuildFileList();
void SetFiosType(const byte fiostype);
#endif /* FIOS_H */ #endif /* FIOS_H */

View File

@@ -36,6 +36,7 @@
#include "safeguards.h" #include "safeguards.h"
SaveLoadDialogMode _saveload_mode;
LoadCheckData _load_check_data; ///< Data loaded from save during SL_LOAD_CHECK. LoadCheckData _load_check_data; ///< Data loaded from save during SL_LOAD_CHECK.
static bool _fios_path_changed; static bool _fios_path_changed;
@@ -186,24 +187,33 @@ static const NWidgetPart _nested_save_dialog_widgets[] = {
EndContainer(), EndContainer(),
}; };
/** Text colours of #DetailedFileType fios entries in the window. */ /** Colours for fios types, indexed by #FiosType. */
static const TextColour _fios_colours[] = { const TextColour _fios_colours[] = {
TC_LIGHT_BROWN, // DFT_OLD_GAME_FILE TC_LIGHT_BLUE, TC_DARK_GREEN, TC_DARK_GREEN, TC_ORANGE, TC_LIGHT_BROWN,
TC_ORANGE, // DFT_GAME_FILE TC_ORANGE, TC_LIGHT_BROWN, TC_ORANGE, TC_ORANGE, TC_YELLOW
TC_YELLOW, // DFT_HEIGHTMAP_BMP
TC_ORANGE, // DFT_HEIGHTMAP_PNG
TC_LIGHT_BLUE, // DFT_FIOS_DRIVE
TC_DARK_GREEN, // DFT_FIOS_PARENT
TC_DARK_GREEN, // DFT_FIOS_DIR
TC_ORANGE, // DFT_FIOS_DIRECT
}; };
void BuildFileList()
{
_fios_path_changed = true;
FiosFreeSavegameList();
/** switch (_saveload_mode) {
* Sort the collected list save games prior to displaying it in the save/load gui. case SLD_LOAD_SCENARIO:
* @param [inout] file_list List of save game files found in the directory. case SLD_SAVE_SCENARIO:
*/ FiosGetScenarioList(_saveload_mode); break;
static void SortSaveGameList(FileList &file_list) case SLD_SAVE_HEIGHTMAP:
case SLD_LOAD_HEIGHTMAP:
FiosGetHeightmapList(_saveload_mode); break;
default: FiosGetSavegameList(_saveload_mode); break;
}
/* Invalidate saveload window */
InvalidateWindowData(WC_SAVELOAD, 0, 2, true);
}
static void MakeSortedSaveGameList()
{ {
uint sort_start = 0; uint sort_start = 0;
uint sort_end = 0; uint sort_end = 0;
@@ -212,7 +222,7 @@ static void SortSaveGameList(FileList &file_list)
* Drives (A:\ (windows only) are always under the files (FIOS_TYPE_DRIVE) * Drives (A:\ (windows only) are always under the files (FIOS_TYPE_DRIVE)
* Only sort savegames/scenarios, not directories * Only sort savegames/scenarios, not directories
*/ */
for (const FiosItem *item = file_list.Begin(); item != file_list.End(); item++) { for (const FiosItem *item = _fios_items.Begin(); item != _fios_items.End(); item++) {
switch (item->type) { switch (item->type) {
case FIOS_TYPE_DIR: sort_start++; break; case FIOS_TYPE_DIR: sort_start++; break;
case FIOS_TYPE_PARENT: sort_start++; break; case FIOS_TYPE_PARENT: sort_start++; break;
@@ -221,18 +231,15 @@ static void SortSaveGameList(FileList &file_list)
} }
} }
uint s_amount = file_list.Length() - sort_start - sort_end; uint s_amount = _fios_items.Length() - sort_start - sort_end;
QSortT(file_list.Get(sort_start), s_amount, CompareFiosItems); QSortT(_fios_items.Get(sort_start), s_amount, CompareFiosItems);
} }
struct SaveLoadWindow : public Window { struct SaveLoadWindow : public Window {
private: private:
QueryString filename_editbox; ///< Filename editbox. QueryString filename_editbox; ///< Filename editbox.
AbstractFileType abstract_filetype; /// Type of file to select.
SaveLoadOperation fop; ///< File operation to perform.
FileList fios_items; ///< Save game list.
FiosItem o_dir; FiosItem o_dir;
const FiosItem *selected; ///< Selected game in #fios_items, or \c NULL. const FiosItem *selected;
Scrollbar *vscroll; Scrollbar *vscroll;
public: public:
@@ -243,56 +250,35 @@ public:
this->filename_editbox.text.UpdateSize(); this->filename_editbox.text.UpdateSize();
} }
SaveLoadWindow(WindowDesc *desc, AbstractFileType abstract_filetype, SaveLoadOperation fop) SaveLoadWindow(WindowDesc *desc, SaveLoadDialogMode mode) : Window(desc), filename_editbox(64)
: Window(desc), filename_editbox(64), abstract_filetype(abstract_filetype), fop(fop)
{ {
assert(this->fop == SLO_SAVE || this->fop == SLO_LOAD); static const StringID saveload_captions[] = {
STR_SAVELOAD_LOAD_CAPTION,
STR_SAVELOAD_LOAD_SCENARIO,
STR_SAVELOAD_SAVE_CAPTION,
STR_SAVELOAD_SAVE_SCENARIO,
STR_SAVELOAD_LOAD_HEIGHTMAP,
STR_SAVELOAD_SAVE_HEIGHTMAP,
};
assert((uint)mode < lengthof(saveload_captions));
/* For saving, construct an initial file name. */ /* Use an array to define what will be the current file type being handled
if (this->fop == SLO_SAVE) { * by current file mode */
switch (this->abstract_filetype) { switch (mode) {
case FT_SAVEGAME: case SLD_SAVE_GAME: this->GenerateFileName(); break;
this->GenerateFileName(); case SLD_SAVE_HEIGHTMAP:
break; case SLD_SAVE_SCENARIO: this->filename_editbox.text.Assign("UNNAMED"); break;
default: break;
case FT_SCENARIO:
case FT_HEIGHTMAP:
this->filename_editbox.text.Assign("UNNAMED");
break;
default:
NOT_REACHED();
}
} }
this->querystrings[WID_SL_SAVE_OSK_TITLE] = &this->filename_editbox; this->querystrings[WID_SL_SAVE_OSK_TITLE] = &this->filename_editbox;
this->filename_editbox.ok_button = WID_SL_SAVE_GAME; this->filename_editbox.ok_button = WID_SL_SAVE_GAME;
this->CreateNestedTree(true); this->CreateNestedTree(true);
if (this->fop == SLO_LOAD && this->abstract_filetype == FT_SAVEGAME) { if (mode == SLD_LOAD_GAME) this->GetWidget<NWidgetStacked>(WID_SL_CONTENT_DOWNLOAD_SEL)->SetDisplayedPlane(SZSP_HORIZONTAL);
this->GetWidget<NWidgetStacked>(WID_SL_CONTENT_DOWNLOAD_SEL)->SetDisplayedPlane(SZSP_HORIZONTAL); this->GetWidget<NWidgetCore>(WID_SL_CAPTION)->widget_data = saveload_captions[mode];
}
/* Select caption string of the window. */
StringID caption_string;
switch (this->abstract_filetype) {
case FT_SAVEGAME:
caption_string = (this->fop == SLO_SAVE) ? STR_SAVELOAD_SAVE_CAPTION : STR_SAVELOAD_LOAD_CAPTION;
break;
case FT_SCENARIO:
caption_string = (this->fop == SLO_SAVE) ? STR_SAVELOAD_SAVE_SCENARIO : STR_SAVELOAD_LOAD_SCENARIO;
break;
case FT_HEIGHTMAP:
caption_string = (this->fop == SLO_SAVE) ? STR_SAVELOAD_SAVE_HEIGHTMAP : STR_SAVELOAD_LOAD_HEIGHTMAP;
break;
default:
NOT_REACHED();
}
this->GetWidget<NWidgetCore>(WID_SL_CAPTION)->widget_data = caption_string;
this->vscroll = this->GetScrollbar(WID_SL_SCROLLBAR); this->vscroll = this->GetScrollbar(WID_SL_SCROLLBAR);
this->FinishInitNested(0); this->FinishInitNested(0);
this->LowerWidget(WID_SL_DRIVES_DIRECTORIES_LIST); this->LowerWidget(WID_SL_DRIVES_DIRECTORIES_LIST);
@@ -308,18 +294,20 @@ public:
ResetObjectToPlace(); ResetObjectToPlace();
/* Select the initial directory. */
o_dir.type = FIOS_TYPE_DIRECT; o_dir.type = FIOS_TYPE_DIRECT;
switch (this->abstract_filetype) { switch (_saveload_mode) {
case FT_SAVEGAME: case SLD_SAVE_GAME:
case SLD_LOAD_GAME:
FioGetDirectory(o_dir.name, lastof(o_dir.name), SAVE_DIR); FioGetDirectory(o_dir.name, lastof(o_dir.name), SAVE_DIR);
break; break;
case FT_SCENARIO: case SLD_SAVE_SCENARIO:
case SLD_LOAD_SCENARIO:
FioGetDirectory(o_dir.name, lastof(o_dir.name), SCENARIO_DIR); FioGetDirectory(o_dir.name, lastof(o_dir.name), SCENARIO_DIR);
break; break;
case FT_HEIGHTMAP: case SLD_SAVE_HEIGHTMAP:
case SLD_LOAD_HEIGHTMAP:
FioGetDirectory(o_dir.name, lastof(o_dir.name), HEIGHTMAP_DIR); FioGetDirectory(o_dir.name, lastof(o_dir.name), HEIGHTMAP_DIR);
break; break;
@@ -328,7 +316,9 @@ public:
} }
/* Focus the edit box by default in the save windows */ /* Focus the edit box by default in the save windows */
if (this->fop == SLO_SAVE) this->SetFocusedWidget(WID_SL_SAVE_OSK_TITLE); if (_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO || _saveload_mode == SLD_SAVE_HEIGHTMAP) {
this->SetFocusedWidget(WID_SL_SAVE_OSK_TITLE);
}
} }
virtual ~SaveLoadWindow() virtual ~SaveLoadWindow()
@@ -337,6 +327,7 @@ public:
if (!_networking && _game_mode != GM_EDITOR && _game_mode != GM_MENU) { if (!_networking && _game_mode != GM_EDITOR && _game_mode != GM_MENU) {
DoCommandP(0, PM_PAUSED_SAVELOAD, 0, CMD_PAUSE); DoCommandP(0, PM_PAUSED_SAVELOAD, 0, CMD_PAUSE);
} }
FiosFreeSavegameList();
} }
virtual void DrawWidget(const Rect &r, int widget) const virtual void DrawWidget(const Rect &r, int widget) const
@@ -369,13 +360,13 @@ public:
GfxFillRect(r.left + 1, r.top + 1, r.right, r.bottom, PC_BLACK); GfxFillRect(r.left + 1, r.top + 1, r.right, r.bottom, PC_BLACK);
uint y = r.top + WD_FRAMERECT_TOP; uint y = r.top + WD_FRAMERECT_TOP;
for (uint pos = this->vscroll->GetPosition(); pos < this->fios_items.Length(); pos++) { for (uint pos = this->vscroll->GetPosition(); pos < _fios_items.Length(); pos++) {
const FiosItem *item = this->fios_items.Get(pos); const FiosItem *item = _fios_items.Get(pos);
if (item == this->selected) { if (item == this->selected) {
GfxFillRect(r.left + 1, y, r.right, y + this->resize.step_height, PC_DARK_BLUE); GfxFillRect(r.left + 1, y, r.right, y + this->resize.step_height, PC_DARK_BLUE);
} }
DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, item->title, _fios_colours[GetDetailedFileType(item->type)]); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, item->title, _fios_colours[item->type]);
y += this->resize.step_height; y += this->resize.step_height;
if (y >= this->vscroll->GetCapacity() * this->resize.step_height + r.top + WD_FRAMERECT_TOP) break; if (y >= this->vscroll->GetCapacity() * this->resize.step_height + r.top + WD_FRAMERECT_TOP) break;
} }
@@ -430,7 +421,7 @@ public:
if (y > y_max) break; if (y > y_max) break;
/* Hide current date for scenarios */ /* Hide current date for scenarios */
if (this->abstract_filetype != FT_SCENARIO) { if (_saveload_mode != SLD_LOAD_SCENARIO && _saveload_mode != SLD_SAVE_SCENARIO) {
/* Current date */ /* Current date */
SetDParam(0, _load_check_data.current_date); SetDParam(0, _load_check_data.current_date);
DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_NETWORK_SERVER_LIST_CURRENT_DATE); DrawString(r.left + WD_FRAMERECT_LEFT, r.right - WD_FRAMERECT_RIGHT, y, STR_NETWORK_SERVER_LIST_CURRENT_DATE);
@@ -438,7 +429,7 @@ public:
} }
/* Hide the NewGRF stuff when saving. We also hide the button. */ /* Hide the NewGRF stuff when saving. We also hide the button. */
if (this->fop == SLO_LOAD && (this->abstract_filetype == FT_SAVEGAME || this->abstract_filetype == FT_SCENARIO)) { if (_saveload_mode == SLD_LOAD_GAME || _saveload_mode == SLD_LOAD_SCENARIO) {
y += WD_PAR_VSEP_NORMAL; y += WD_PAR_VSEP_NORMAL;
if (y > y_max) break; if (y > y_max) break;
@@ -451,7 +442,7 @@ public:
if (y > y_max) break; if (y > y_max) break;
/* Hide the company stuff for scenarios */ /* Hide the company stuff for scenarios */
if (this->abstract_filetype != FT_SCENARIO) { if (_saveload_mode != SLD_LOAD_SCENARIO && _saveload_mode != SLD_SAVE_SCENARIO) {
y += FONT_HEIGHT_NORMAL; y += FONT_HEIGHT_NORMAL;
if (y > y_max) break; if (y > y_max) break;
@@ -504,10 +495,10 @@ public:
{ {
if (_savegame_sort_dirty) { if (_savegame_sort_dirty) {
_savegame_sort_dirty = false; _savegame_sort_dirty = false;
SortSaveGameList(this->fios_items); MakeSortedSaveGameList();
} }
this->vscroll->SetCount(this->fios_items.Length()); this->vscroll->SetCount(_fios_items.Length());
this->DrawWidgets(); this->DrawWidgets();
} }
@@ -536,14 +527,14 @@ public:
case WID_SL_LOAD_BUTTON: case WID_SL_LOAD_BUTTON:
if (this->selected != NULL && !_load_check_data.HasErrors()) { if (this->selected != NULL && !_load_check_data.HasErrors()) {
const char *name = FiosBrowseTo(this->selected); const char *name = FiosBrowseTo(this->selected);
_file_to_saveload.SetMode(this->selected->type); SetFiosType(this->selected->type);
_file_to_saveload.SetName(name);
_file_to_saveload.SetTitle(this->selected->title);
if (this->abstract_filetype == FT_HEIGHTMAP) { strecpy(_file_to_saveload.name, name, lastof(_file_to_saveload.name));
strecpy(_file_to_saveload.title, this->selected->title, lastof(_file_to_saveload.title));
if (_saveload_mode == SLD_LOAD_HEIGHTMAP) {
delete this; delete this;
ShowHeightmapLoad(); ShowHeightmapLoad();
} else if (!_load_check_data.HasNewGrfs() || _load_check_data.grf_compatibility != GLC_NOT_FOUND || _settings_client.gui.UserIsAllowedToChangeNewGRFs()) { } else if (!_load_check_data.HasNewGrfs() || _load_check_data.grf_compatibility != GLC_NOT_FOUND || _settings_client.gui.UserIsAllowedToChangeNewGRFs()) {
_switch_mode = (_game_mode == GM_EDITOR) ? SM_LOAD_SCENARIO : SM_LOAD_GAME; _switch_mode = (_game_mode == GM_EDITOR) ? SM_LOAD_SCENARIO : SM_LOAD_GAME;
ClearErrorMessages(); ClearErrorMessages();
@@ -572,7 +563,7 @@ public:
int y = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_SL_DRIVES_DIRECTORIES_LIST, WD_FRAMERECT_TOP); int y = this->vscroll->GetScrolledRowFromWidget(pt.y, this, WID_SL_DRIVES_DIRECTORIES_LIST, WD_FRAMERECT_TOP);
if (y == INT_MAX) return; if (y == INT_MAX) return;
const FiosItem *file = this->fios_items.Get(y); const FiosItem *file = _fios_items.Get(y);
const char *name = FiosBrowseTo(file); const char *name = FiosBrowseTo(file);
if (name != NULL) { if (name != NULL) {
@@ -581,32 +572,28 @@ public:
this->selected = file; this->selected = file;
_load_check_data.Clear(); _load_check_data.Clear();
if (GetDetailedFileType(file->type) == DFT_GAME_FILE) { if (file->type == FIOS_TYPE_FILE || file->type == FIOS_TYPE_SCENARIO) {
/* Other detailed file types cannot be checked before. */ SaveOrLoad(name, SL_LOAD_CHECK, NO_DIRECTORY, false);
SaveOrLoad(name, SLO_CHECK, DFT_GAME_FILE, NO_DIRECTORY, false);
} }
this->InvalidateData(1); this->InvalidateData(1);
} }
if (this->fop == SLO_SAVE) { if (_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO || _saveload_mode == SLD_SAVE_HEIGHTMAP) {
/* Copy clicked name to editbox */ /* Copy clicked name to editbox */
this->filename_editbox.text.Assign(file->title); this->filename_editbox.text.Assign(file->title);
this->SetWidgetDirty(WID_SL_SAVE_OSK_TITLE); this->SetWidgetDirty(WID_SL_SAVE_OSK_TITLE);
} }
} else if (!_load_check_data.HasErrors()) { } else if (!_load_check_data.HasErrors()) {
this->selected = file; this->selected = file;
if (this->fop == SLO_LOAD) { if (_saveload_mode == SLD_LOAD_GAME || _saveload_mode == SLD_LOAD_SCENARIO) {
if (this->abstract_filetype == FT_SAVEGAME || this->abstract_filetype == FT_SCENARIO) { this->OnClick(pt, WID_SL_LOAD_BUTTON, 1);
this->OnClick(pt, WID_SL_LOAD_BUTTON, 1); } else if (_saveload_mode == SLD_LOAD_HEIGHTMAP) {
} else { SetFiosType(file->type);
assert(this->abstract_filetype == FT_HEIGHTMAP); strecpy(_file_to_saveload.name, name, lastof(_file_to_saveload.name));
_file_to_saveload.SetMode(file->type); strecpy(_file_to_saveload.title, file->title, lastof(_file_to_saveload.title));
_file_to_saveload.SetName(name);
_file_to_saveload.SetTitle(file->title);
delete this; delete this;
ShowHeightmapLoad(); ShowHeightmapLoad();
}
} }
} }
} else { } else {
@@ -621,11 +608,10 @@ public:
ShowErrorMessage(STR_NETWORK_ERROR_NOTAVAILABLE, INVALID_STRING_ID, WL_ERROR); ShowErrorMessage(STR_NETWORK_ERROR_NOTAVAILABLE, INVALID_STRING_ID, WL_ERROR);
} else { } else {
#if defined(ENABLE_NETWORK) #if defined(ENABLE_NETWORK)
assert(this->fop == SLO_LOAD); switch (_saveload_mode) {
switch (this->abstract_filetype) {
default: NOT_REACHED(); default: NOT_REACHED();
case FT_SCENARIO: ShowNetworkContentListWindow(NULL, CONTENT_TYPE_SCENARIO); break; case SLD_LOAD_SCENARIO: ShowNetworkContentListWindow(NULL, CONTENT_TYPE_SCENARIO); break;
case FT_HEIGHTMAP: ShowNetworkContentListWindow(NULL, CONTENT_TYPE_HEIGHTMAP); break; case SLD_LOAD_HEIGHTMAP: ShowNetworkContentListWindow(NULL, CONTENT_TYPE_HEIGHTMAP); break;
} }
#endif #endif
} }
@@ -653,8 +639,9 @@ public:
virtual void OnTimeout() virtual void OnTimeout()
{ {
/* Widgets WID_SL_DELETE_SELECTION and WID_SL_SAVE_GAME only exist when saving to a file. */ /* This test protects against using widgets 11 and 12 which are only available
if (this->fop != SLO_SAVE) return; * in those saveload modes. */
if (!(_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO || _saveload_mode == SLD_SAVE_HEIGHTMAP)) return;
if (this->IsWidgetLowered(WID_SL_DELETE_SELECTION)) { // Delete button clicked if (this->IsWidgetLowered(WID_SL_DELETE_SELECTION)) { // Delete button clicked
if (!FiosDelete(this->filename_editbox.text.buf)) { if (!FiosDelete(this->filename_editbox.text.buf)) {
@@ -662,10 +649,10 @@ public:
} else { } else {
this->InvalidateData(); this->InvalidateData();
/* Reset file name to current date on successful delete */ /* Reset file name to current date on successful delete */
if (this->abstract_filetype == FT_SAVEGAME) GenerateFileName(); if (_saveload_mode == SLD_SAVE_GAME) GenerateFileName();
} }
} else if (this->IsWidgetLowered(WID_SL_SAVE_GAME)) { // Save button clicked } else if (this->IsWidgetLowered(WID_SL_SAVE_GAME)) { // Save button clicked
if (this->abstract_filetype == FT_SAVEGAME || this->abstract_filetype == FT_SCENARIO) { if (_saveload_mode == SLD_SAVE_GAME || _saveload_mode == SLD_SAVE_SCENARIO) {
_switch_mode = SM_SAVE_GAME; _switch_mode = SM_SAVE_GAME;
FiosMakeSavegameName(_file_to_saveload.name, this->filename_editbox.text.buf, lastof(_file_to_saveload.name)); FiosMakeSavegameName(_file_to_saveload.name, this->filename_editbox.text.buf, lastof(_file_to_saveload.name));
} else { } else {
@@ -696,40 +683,28 @@ public:
this->selected = NULL; this->selected = NULL;
_load_check_data.Clear(); _load_check_data.Clear();
if (!gui_scope) break; if (!gui_scope) break;
BuildFileList();
_fios_path_changed = true;
this->fios_items.BuildFileList(this->abstract_filetype, this->fop);
this->vscroll->SetCount(this->fios_items.Length());
this->selected = NULL;
_load_check_data.Clear();
/* FALL THROUGH */ /* FALL THROUGH */
case 1: case 1:
/* Selection changes */ /* Selection changes */
if (!gui_scope) break; if (!gui_scope) break;
if (_saveload_mode == SLD_LOAD_HEIGHTMAP) {
if (this->fop != SLO_LOAD) break; this->SetWidgetDisabledState(WID_SL_LOAD_BUTTON, this->selected == NULL || _load_check_data.HasErrors());
switch (this->abstract_filetype) {
case FT_HEIGHTMAP:
this->SetWidgetDisabledState(WID_SL_LOAD_BUTTON, this->selected == NULL || _load_check_data.HasErrors());
break;
case FT_SAVEGAME:
case FT_SCENARIO: {
bool disabled = this->selected == NULL || _load_check_data.HasErrors();
if (!_settings_client.gui.UserIsAllowedToChangeNewGRFs()) {
disabled |= _load_check_data.HasNewGrfs() && _load_check_data.grf_compatibility == GLC_NOT_FOUND;
}
this->SetWidgetDisabledState(WID_SL_LOAD_BUTTON, disabled);
this->SetWidgetDisabledState(WID_SL_NEWGRF_INFO, !_load_check_data.HasNewGrfs());
this->SetWidgetDisabledState(WID_SL_MISSING_NEWGRFS,
!_load_check_data.HasNewGrfs() || _load_check_data.grf_compatibility == GLC_ALL_GOOD);
break;
}
default:
NOT_REACHED();
} }
if (_saveload_mode == SLD_LOAD_GAME || _saveload_mode == SLD_LOAD_SCENARIO) {
this->SetWidgetDisabledState(WID_SL_LOAD_BUTTON,
this->selected == NULL || _load_check_data.HasErrors() || !(!_load_check_data.HasNewGrfs() || _load_check_data.grf_compatibility != GLC_NOT_FOUND || _settings_client.gui.UserIsAllowedToChangeNewGRFs()));
this->SetWidgetDisabledState(WID_SL_NEWGRF_INFO,
!_load_check_data.HasNewGrfs());
this->SetWidgetDisabledState(WID_SL_MISSING_NEWGRFS,
!_load_check_data.HasNewGrfs() || _load_check_data.grf_compatibility == GLC_ALL_GOOD);
}
break;
case 2:
/* _fios_items changed */
this->vscroll->SetCount(_fios_items.Length());
this->selected = NULL;
_load_check_data.Clear();
break; break;
} }
} }
@@ -760,23 +735,69 @@ static WindowDesc _save_dialog_desc(
); );
/** /**
* Launch save/load dialog in the given mode. * These values are used to convert the file/operations mode into a corresponding file type.
* @param abstract_filetype Kind of file to handle. * So each entry, as expressed by the related comment, is based on the enum
* @param fop File operation to perform (load or save).
*/ */
void ShowSaveLoadDialog(AbstractFileType abstract_filetype, SaveLoadOperation fop) static const FileType _file_modetotype[] = {
FT_SAVEGAME, // used for SLD_LOAD_GAME
FT_SCENARIO, // used for SLD_LOAD_SCENARIO
FT_SAVEGAME, // used for SLD_SAVE_GAME
FT_SCENARIO, // used for SLD_SAVE_SCENARIO
FT_HEIGHTMAP, // used for SLD_LOAD_HEIGHTMAP
FT_HEIGHTMAP, // used for SLD_SAVE_HEIGHTMAP
};
/**
* Launch save/load dialog in the given mode.
* @param mode Save/load mode.
*/
void ShowSaveLoadDialog(SaveLoadDialogMode mode)
{ {
DeleteWindowById(WC_SAVELOAD, 0); DeleteWindowById(WC_SAVELOAD, 0);
WindowDesc *sld; WindowDesc *sld;
if (fop == SLO_SAVE) { switch (mode) {
sld = &_save_dialog_desc; case SLD_SAVE_GAME:
} else { case SLD_SAVE_SCENARIO:
/* Dialogue for loading a file. */ case SLD_SAVE_HEIGHTMAP:
sld = (abstract_filetype == FT_HEIGHTMAP) ? &_load_heightmap_dialog_desc : &_load_dialog_desc; sld = &_save_dialog_desc; break;
case SLD_LOAD_HEIGHTMAP:
sld = &_load_heightmap_dialog_desc; break;
default:
sld = &_load_dialog_desc; break;
} }
_file_to_saveload.abstract_ftype = abstract_filetype; _saveload_mode = mode;
_file_to_saveload.filetype = _file_modetotype[mode];
new SaveLoadWindow(sld, abstract_filetype, fop); new SaveLoadWindow(sld, mode);
}
void SetFiosType(const byte fiostype)
{
switch (fiostype) {
case FIOS_TYPE_FILE:
case FIOS_TYPE_SCENARIO:
_file_to_saveload.mode = SL_LOAD;
break;
case FIOS_TYPE_OLDFILE:
case FIOS_TYPE_OLD_SCENARIO:
_file_to_saveload.mode = SL_OLD_LOAD;
break;
#ifdef WITH_PNG
case FIOS_TYPE_PNG:
_file_to_saveload.mode = SL_PNG;
break;
#endif /* WITH_PNG */
case FIOS_TYPE_BMP:
_file_to_saveload.mode = SL_BMP;
break;
default:
_file_to_saveload.mode = SL_INVALID;
break;
}
} }

View File

@@ -25,7 +25,7 @@
static bool CheckAPIVersion(const char *api_version) static bool CheckAPIVersion(const char *api_version)
{ {
return strcmp(api_version, "1.2") == 0 || strcmp(api_version, "1.3") == 0 || strcmp(api_version, "1.4") == 0 || return 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.7") == 0; strcmp(api_version, "1.5") == 0 || strcmp(api_version, "1.6") == 0;
} }
#if defined(WIN32) #if defined(WIN32)

View File

@@ -14,6 +14,9 @@
#include "../core/smallvec_type.hpp" #include "../core/smallvec_type.hpp"
/** The tab we place our strings in. */
static const uint GAME_TEXT_TAB = 18;
const char *GetGameStringPtr(uint id); const char *GetGameStringPtr(uint id);
void RegisterGameTranslation(class Squirrel *engine); void RegisterGameTranslation(class Squirrel *engine);
void ReconsiderGameScriptLanguage(); void ReconsiderGameScriptLanguage();

View File

@@ -77,7 +77,7 @@ static void CleanupGeneration()
{ {
_generating_world = false; _generating_world = false;
SetMouseCursorBusy(false); if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE);
/* Show all vital windows again, because we have hidden them */ /* Show all vital windows again, because we have hidden them */
if (_gw.threaded && _game_mode != GM_MENU) ShowVitalWindows(); if (_gw.threaded && _game_mode != GM_MENU) ShowVitalWindows();
SetModalProgress(false); SetModalProgress(false);
@@ -204,7 +204,7 @@ static void _GenerateWorld(void *)
if (_debug_desync_level > 0) { if (_debug_desync_level > 0) {
char name[MAX_PATH]; char name[MAX_PATH];
seprintf(name, lastof(name), "dmp_cmds_%08x_%08x.sav", _settings_game.game_creation.generation_seed, _date); seprintf(name, lastof(name), "dmp_cmds_%08x_%08x.sav", _settings_game.game_creation.generation_seed, _date);
SaveOrLoad(name, SLO_SAVE, DFT_GAME_FILE, AUTOSAVE_DIR, false); SaveOrLoad(name, SL_SAVE, AUTOSAVE_DIR, false);
} }
} catch (...) { } catch (...) {
BasePersistentStorageArray::SwitchMode(PSM_LEAVE_GAMELOOP, true); BasePersistentStorageArray::SwitchMode(PSM_LEAVE_GAMELOOP, true);
@@ -331,7 +331,7 @@ void GenerateWorld(GenWorldMode mode, uint size_x, uint size_y, bool reset_setti
_gw.thread = NULL; _gw.thread = NULL;
} }
if (!VideoDriver::GetInstance()->HasGUI() || !ThreadObject::New(&_GenerateWorld, NULL, &_gw.thread, "ottd:genworld")) { if (!VideoDriver::GetInstance()->HasGUI() || !ThreadObject::New(&_GenerateWorld, NULL, &_gw.thread)) {
DEBUG(misc, 1, "Cannot create genworld thread, reverting to single-threaded mode"); DEBUG(misc, 1, "Cannot create genworld thread, reverting to single-threaded mode");
_gw.threaded = false; _gw.threaded = false;
_modal_progress_work_mutex->EndCritical(); _modal_progress_work_mutex->EndCritical();

View File

@@ -26,7 +26,6 @@
#include "town.h" #include "town.h"
#include "core/geometry_func.hpp" #include "core/geometry_func.hpp"
#include "core/random_func.hpp" #include "core/random_func.hpp"
#include "saveload/saveload.h"
#include "progress.h" #include "progress.h"
#include "error.h" #include "error.h"
@@ -833,7 +832,7 @@ static void _ShowGenerateLandscape(GenerateLandscapeWindowMode mode)
if (mode == GLWM_HEIGHTMAP) { if (mode == GLWM_HEIGHTMAP) {
/* If the function returns negative, it means there was a problem loading the heightmap */ /* If the function returns negative, it means there was a problem loading the heightmap */
if (!GetHeightmapDimensions(_file_to_saveload.detail_ftype, _file_to_saveload.name, &x, &y)) return; if (!GetHeightmapDimensions(_file_to_saveload.name, &x, &y)) return;
} }
WindowDesc *desc = (mode == GLWM_HEIGHTMAP) ? &_heightmap_load_desc : &_generate_landscape_desc; WindowDesc *desc = (mode == GLWM_HEIGHTMAP) ? &_heightmap_load_desc : &_generate_landscape_desc;
@@ -1191,7 +1190,7 @@ struct GenerateProgressWindow : public Window {
{ {
switch (widget) { switch (widget) {
case WID_GP_ABORT: case WID_GP_ABORT:
SetMouseCursorBusy(false); if (_cursor.sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE);
ShowQuery( ShowQuery(
STR_GENERATION_ABORT_CAPTION, STR_GENERATION_ABORT_CAPTION,
STR_GENERATION_ABORT_MESSAGE, STR_GENERATION_ABORT_MESSAGE,

View File

@@ -1223,6 +1223,10 @@ void DrawMouseCursor()
if (_screen.dst_ptr == NULL) return; if (_screen.dst_ptr == NULL) return;
Blitter *blitter = BlitterFactory::GetCurrentBlitter(); Blitter *blitter = BlitterFactory::GetCurrentBlitter();
int x;
int y;
int w;
int h;
/* Redraw mouse cursor but only when it's inside the window */ /* Redraw mouse cursor but only when it's inside the window */
if (!_cursor.in_window) return; if (!_cursor.in_window) return;
@@ -1233,44 +1237,36 @@ void DrawMouseCursor()
UndrawMouseCursor(); UndrawMouseCursor();
} }
/* Determine visible area */ w = _cursor.size.x;
int left = _cursor.pos.x + _cursor.total_offs.x; x = _cursor.pos.x + _cursor.offs.x + _cursor.short_vehicle_offset;
int width = _cursor.total_size.x; if (x < 0) {
if (left < 0) { w += x;
width += left; x = 0;
left = 0;
} }
if (left + width > _screen.width) { if (w > _screen.width - x) w = _screen.width - x;
width = _screen.width - left; if (w <= 0) return;
} _cursor.draw_pos.x = x;
if (width <= 0) return; _cursor.draw_size.x = w;
int top = _cursor.pos.y + _cursor.total_offs.y; h = _cursor.size.y;
int height = _cursor.total_size.y; y = _cursor.pos.y + _cursor.offs.y;
if (top < 0) { if (y < 0) {
height += top; h += y;
top = 0; y = 0;
} }
if (top + height > _screen.height) { if (h > _screen.height - y) h = _screen.height - y;
height = _screen.height - top; if (h <= 0) return;
} _cursor.draw_pos.y = y;
if (height <= 0) return; _cursor.draw_size.y = h;
_cursor.draw_pos.x = left; uint8 *buffer = _cursor_backup.Allocate(blitter->BufferSize(w, h));
_cursor.draw_pos.y = top;
_cursor.draw_size.x = width;
_cursor.draw_size.y = height;
uint8 *buffer = _cursor_backup.Allocate(blitter->BufferSize(_cursor.draw_size.x, _cursor.draw_size.y));
/* Make backup of stuff below cursor */ /* Make backup of stuff below cursor */
blitter->CopyToBuffer(blitter->MoveTo(_screen.dst_ptr, _cursor.draw_pos.x, _cursor.draw_pos.y), buffer, _cursor.draw_size.x, _cursor.draw_size.y); blitter->CopyToBuffer(blitter->MoveTo(_screen.dst_ptr, _cursor.draw_pos.x, _cursor.draw_pos.y), buffer, _cursor.draw_size.x, _cursor.draw_size.y);
/* Draw cursor on screen */ /* Draw cursor on screen */
_cur_dpi = &_screen; _cur_dpi = &_screen;
for (uint i = 0; i < _cursor.sprite_count; ++i) { DrawSprite(_cursor.sprite, _cursor.pal, _cursor.pos.x + _cursor.short_vehicle_offset, _cursor.pos.y);
DrawSprite(_cursor.sprite_seq[i].sprite, _cursor.sprite_seq[i].pal, _cursor.pos.x + _cursor.sprite_pos[i].x, _cursor.pos.y + _cursor.sprite_pos[i].y);
}
VideoDriver::GetInstance()->MakeDirty(_cursor.draw_pos.x, _cursor.draw_pos.y, _cursor.draw_size.x, _cursor.draw_size.y); VideoDriver::GetInstance()->MakeDirty(_cursor.draw_pos.x, _cursor.draw_pos.y, _cursor.draw_size.x, _cursor.draw_size.y);
@@ -1529,33 +1525,15 @@ bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int heigh
*/ */
void UpdateCursorSize() void UpdateCursorSize()
{ {
/* Ignore setting any cursor before the sprites are loaded. */ CursorVars *cv = &_cursor;
if (GetMaxSpriteID() == 0) return; const Sprite *p = GetSprite(GB(cv->sprite, 0, SPRITE_WIDTH), ST_NORMAL);
assert_compile(lengthof(_cursor.sprite_seq) == lengthof(_cursor.sprite_pos)); cv->size.y = UnScaleGUI(p->height);
assert(_cursor.sprite_count <= lengthof(_cursor.sprite_seq)); cv->size.x = UnScaleGUI(p->width);
for (uint i = 0; i < _cursor.sprite_count; ++i) { cv->offs.x = UnScaleGUI(p->x_offs);
const Sprite *p = GetSprite(GB(_cursor.sprite_seq[i].sprite, 0, SPRITE_WIDTH), ST_NORMAL); cv->offs.y = UnScaleGUI(p->y_offs);
Point offs, size;
offs.x = UnScaleGUI(p->x_offs) + _cursor.sprite_pos[i].x;
offs.y = UnScaleGUI(p->y_offs) + _cursor.sprite_pos[i].y;
size.x = UnScaleGUI(p->width);
size.y = UnScaleGUI(p->height);
if (i == 0) { cv->dirty = true;
_cursor.total_offs = offs;
_cursor.total_size = size;
} else {
int right = max(_cursor.total_offs.x + _cursor.total_size.x, offs.x + size.x);
int bottom = max(_cursor.total_offs.y + _cursor.total_size.y, offs.y + size.y);
if (offs.x < _cursor.total_offs.x) _cursor.total_offs.x = offs.x;
if (offs.y < _cursor.total_offs.y) _cursor.total_offs.y = offs.y;
_cursor.total_size.x = right - _cursor.total_offs.x;
_cursor.total_size.y = bottom - _cursor.total_offs.y;
}
}
_cursor.dirty = true;
} }
/** /**
@@ -1565,15 +1543,14 @@ void UpdateCursorSize()
*/ */
static void SetCursorSprite(CursorID cursor, PaletteID pal) static void SetCursorSprite(CursorID cursor, PaletteID pal)
{ {
if (_cursor.sprite_count == 1 && _cursor.sprite_seq[0].sprite == cursor && _cursor.sprite_seq[0].pal == pal) return; CursorVars *cv = &_cursor;
if (cv->sprite == cursor) return;
_cursor.sprite_count = 1;
_cursor.sprite_seq[0].sprite = cursor;
_cursor.sprite_seq[0].pal = pal;
_cursor.sprite_pos[0].x = 0;
_cursor.sprite_pos[0].y = 0;
cv->sprite = cursor;
cv->pal = pal;
UpdateCursorSize(); UpdateCursorSize();
cv->short_vehicle_offset = 0;
} }
static void SwitchAnimatedCursor() static void SwitchAnimatedCursor()
@@ -1582,7 +1559,7 @@ static void SwitchAnimatedCursor()
if (cur == NULL || cur->sprite == AnimCursor::LAST) cur = _cursor.animate_list; if (cur == NULL || cur->sprite == AnimCursor::LAST) cur = _cursor.animate_list;
SetCursorSprite(cur->sprite, _cursor.sprite_seq[0].pal); SetCursorSprite(cur->sprite, _cursor.pal);
_cursor.animate_timeout = cur->display_time; _cursor.animate_timeout = cur->display_time;
_cursor.animate_cur = cur + 1; _cursor.animate_cur = cur + 1;
@@ -1595,19 +1572,6 @@ void CursorTick()
} }
} }
/**
* Set or unset the ZZZ cursor.
* @param busy Whether to show the ZZZ cursor.
*/
void SetMouseCursorBusy(bool busy)
{
if (busy) {
if (_cursor.sprite_seq[0].sprite == SPR_CURSOR_MOUSE) SetMouseCursor(SPR_CURSOR_ZZZ, PAL_NONE);
} else {
if (_cursor.sprite_seq[0].sprite == SPR_CURSOR_ZZZ) SetMouseCursor(SPR_CURSOR_MOUSE, PAL_NONE);
}
}
/** /**
* Assign a single non-animated sprite to the cursor. * Assign a single non-animated sprite to the cursor.
* @param sprite Sprite to draw for the cursor. * @param sprite Sprite to draw for the cursor.
@@ -1631,7 +1595,7 @@ void SetAnimatedMouseCursor(const AnimCursor *table)
{ {
_cursor.animate_list = table; _cursor.animate_list = table;
_cursor.animate_cur = NULL; _cursor.animate_cur = NULL;
_cursor.sprite_seq[0].pal = PAL_NONE; _cursor.pal = PAL_NONE;
SwitchAnimatedCursor(); SwitchAnimatedCursor();
} }

View File

@@ -145,7 +145,6 @@ bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int heigh
/* window.cpp */ /* window.cpp */
void DrawOverlappedWindowForAll(int left, int top, int right, int bottom); void DrawOverlappedWindowForAll(int left, int top, int right, int bottom);
void SetMouseCursorBusy(bool busy);
void SetMouseCursor(CursorID cursor, PaletteID pal); void SetMouseCursor(CursorID cursor, PaletteID pal);
void SetAnimatedMouseCursor(const AnimCursor *table); void SetAnimatedMouseCursor(const AnimCursor *table);
void CursorTick(); void CursorTick();
@@ -161,16 +160,16 @@ void GetBroadestDigit(uint *front, uint *next, FontSize size = FS_NORMAL);
int GetCharacterHeight(FontSize size); int GetCharacterHeight(FontSize size);
/** Height of characters in the small (#FS_SMALL) font. @note Some characters may be oversized. */ /** Height of characters in the small (#FS_SMALL) font. */
#define FONT_HEIGHT_SMALL (GetCharacterHeight(FS_SMALL)) #define FONT_HEIGHT_SMALL (GetCharacterHeight(FS_SMALL))
/** Height of characters in the normal (#FS_NORMAL) font. @note Some characters may be oversized. */ /** Height of characters in the normal (#FS_NORMAL) font. */
#define FONT_HEIGHT_NORMAL (GetCharacterHeight(FS_NORMAL)) #define FONT_HEIGHT_NORMAL (GetCharacterHeight(FS_NORMAL))
/** Height of characters in the large (#FS_LARGE) font. @note Some characters may be oversized. */ /** Height of characters in the large (#FS_LARGE) font. */
#define FONT_HEIGHT_LARGE (GetCharacterHeight(FS_LARGE)) #define FONT_HEIGHT_LARGE (GetCharacterHeight(FS_LARGE))
/** Height of characters in the large (#FS_MONO) font. @note Some characters may be oversized. */ /** Height of characters in the large (#FS_MONO) font. */
#define FONT_HEIGHT_MONO (GetCharacterHeight(FS_MONO)) #define FONT_HEIGHT_MONO (GetCharacterHeight(FS_MONO))
extern DrawPixelInfo *_cur_dpi; extern DrawPixelInfo *_cur_dpi;

View File

@@ -115,35 +115,29 @@ struct AnimCursor {
/** Collection of variables for cursor-display and -animation */ /** Collection of variables for cursor-display and -animation */
struct CursorVars { struct CursorVars {
/* Logical mouse position */ Point pos, size, offs, delta; ///< position, size, offset from top-left, and movement
Point pos; ///< logical mouse position Point draw_pos, draw_size; ///< position and size bounding-box for drawing
Point delta; ///< relative mouse movement in this tick int short_vehicle_offset; ///< offset of the X for short vehicles
int wheel; ///< mouse wheel movement CursorID sprite; ///< current image of cursor
bool fix_at; ///< mouse is moving, but cursor is not (used for scrolling) PaletteID pal;
int wheel; ///< mouse wheel movement
/* We need two different vars to keep track of how far the scrollwheel moved. /* We need two different vars to keep track of how far the scrollwheel moved.
* OSX uses this for scrolling around the map. */ * OSX uses this for scrolling around the map. */
int v_wheel; int v_wheel;
int h_wheel; int h_wheel;
/* Mouse appearance */
PalSpriteID sprite_seq[16]; ///< current image of cursor
Point sprite_pos[16]; ///< relative position of individual sprites
uint sprite_count; ///< number of sprites to draw
Point total_offs, total_size; ///< union of sprite properties
Point draw_pos, draw_size; ///< position and size bounding-box for drawing
const AnimCursor *animate_list; ///< in case of animated cursor, list of frames const AnimCursor *animate_list; ///< in case of animated cursor, list of frames
const AnimCursor *animate_cur; ///< in case of animated cursor, current frame const AnimCursor *animate_cur; ///< in case of animated cursor, current frame
uint animate_timeout; ///< in case of animated cursor, number of ticks to show the current cursor uint animate_timeout; ///< in case of animated cursor, number of ticks to show the current cursor
bool visible; ///< cursor is visible bool visible; ///< cursor is visible
bool dirty; ///< the rect occupied by the mouse is dirty (redraw) bool dirty; ///< the rect occupied by the mouse is dirty (redraw)
bool in_window; ///< mouse inside this window, determines drawing logic bool fix_at; ///< mouse is moving, but cursor is not (used for scrolling)
bool in_window; ///< mouse inside this window, determines drawing logic
/* Drag data */ bool vehchain; ///< vehicle chain is dragged
bool vehchain; ///< vehicle chain is dragged
bool UpdateCursorPosition(int x, int y, bool queued_warp); bool UpdateCursorPosition(int x, int y, bool queued_warp);

View File

@@ -197,49 +197,31 @@ static void LoadSpriteTables()
InitializeUnicodeGlyphMap(); InitializeUnicodeGlyphMap();
/* /*
* Load the base and extra NewGRF with OTTD required graphics as first NewGRF. * Load the base NewGRF with OTTD required graphics as first NewGRF.
* However, we do not want it to show up in the list of used NewGRFs, * However, we do not want it to show up in the list of used NewGRFs,
* so we have to manually add it, and then remove it later. * so we have to manually add it, and then remove it later.
*/ */
GRFConfig *top = _grfconfig; GRFConfig *top = _grfconfig;
GRFConfig *master = new GRFConfig(used_set->files[GFT_EXTRA].filename);
/* Default extra graphics */
GRFConfig *master = new GRFConfig("OPENTTD.GRF");
master->palette |= GRFP_GRF_DOS;
FillGRFDetails(master, false, BASESET_DIR);
ClrBit(master->flags, GCF_INIT_ONLY);
/* Baseset extra graphics */
GRFConfig *extra = new GRFConfig(used_set->files[GFT_EXTRA].filename);
/* We know the palette of the base set, so if the base NewGRF is not /* We know the palette of the base set, so if the base NewGRF is not
* setting one, use the palette of the base set and not the global * setting one, use the palette of the base set and not the global
* one which might be the wrong palette for this base NewGRF. * one which might be the wrong palette for this base NewGRF.
* The value set here might be overridden via action14 later. */ * The value set here might be overridden via action14 later. */
switch (used_set->palette) { switch (used_set->palette) {
case PAL_DOS: extra->palette |= GRFP_GRF_DOS; break; case PAL_DOS: master->palette |= GRFP_GRF_DOS; break;
case PAL_WINDOWS: extra->palette |= GRFP_GRF_WINDOWS; break; case PAL_WINDOWS: master->palette |= GRFP_GRF_WINDOWS; break;
default: break; default: break;
} }
FillGRFDetails(extra, false, BASESET_DIR); FillGRFDetails(master, false, BASESET_DIR);
ClrBit(extra->flags, GCF_INIT_ONLY);
extra->next = top; ClrBit(master->flags, GCF_INIT_ONLY);
master->next = extra; master->next = top;
_grfconfig = master; _grfconfig = master;
LoadNewGRF(SPR_NEWGRFS_BASE, i, 2); LoadNewGRF(SPR_NEWGRFS_BASE, i);
uint total_extra_graphics = SPR_NEWGRFS_BASE - SPR_OPENTTD_BASE;
_missing_extra_graphics = GetSpriteCountForSlot(i, SPR_OPENTTD_BASE, SPR_NEWGRFS_BASE);
DEBUG(sprite, 1, "%u extra sprites, %u from baseset, %u from fallback", total_extra_graphics, total_extra_graphics - _missing_extra_graphics, _missing_extra_graphics);
/* The original baseset extra graphics intentionally make use of the fallback graphics.
* Let's say everything which provides less than 500 sprites misses the rest intentionally. */
if (500 + _missing_extra_graphics > total_extra_graphics) _missing_extra_graphics = 0;
/* Free and remove the top element. */ /* Free and remove the top element. */
delete extra;
delete master; delete master;
_grfconfig = top; _grfconfig = top;
} }
@@ -290,8 +272,6 @@ static bool SwitchNewGRFBlitter()
const bool animation_wanted = HasBit(_display_opt, DO_FULL_ANIMATION); const bool animation_wanted = HasBit(_display_opt, DO_FULL_ANIMATION);
const char *cur_blitter = BlitterFactory::GetCurrentBlitter()->GetName(); const char *cur_blitter = BlitterFactory::GetCurrentBlitter()->GetName();
VideoDriver::GetInstance()->AcquireBlitterLock();
for (uint i = 0; i < lengthof(replacement_blitters); i++) { for (uint i = 0; i < lengthof(replacement_blitters); i++) {
if (animation_wanted && (replacement_blitters[i].animation == 0)) continue; if (animation_wanted && (replacement_blitters[i].animation == 0)) continue;
if (!animation_wanted && (replacement_blitters[i].animation == 1)) continue; if (!animation_wanted && (replacement_blitters[i].animation == 1)) continue;
@@ -300,10 +280,7 @@ static bool SwitchNewGRFBlitter()
if (!IsInsideMM(depth_wanted_by_grf, replacement_blitters[i].min_grf_depth, replacement_blitters[i].max_grf_depth + 1)) continue; if (!IsInsideMM(depth_wanted_by_grf, replacement_blitters[i].min_grf_depth, replacement_blitters[i].max_grf_depth + 1)) continue;
const char *repl_blitter = replacement_blitters[i].name; const char *repl_blitter = replacement_blitters[i].name;
if (strcmp(repl_blitter, cur_blitter) == 0) { if (strcmp(repl_blitter, cur_blitter) == 0) return false;
VideoDriver::GetInstance()->ReleaseBlitterLock();
return false;
}
if (BlitterFactory::GetBlitterFactory(repl_blitter) == NULL) continue; if (BlitterFactory::GetBlitterFactory(repl_blitter) == NULL) continue;
DEBUG(misc, 1, "Switching blitter from '%s' to '%s'... ", cur_blitter, repl_blitter); DEBUG(misc, 1, "Switching blitter from '%s' to '%s'... ", cur_blitter, repl_blitter);
@@ -318,8 +295,6 @@ static bool SwitchNewGRFBlitter()
if (BlitterFactory::SelectBlitter(cur_blitter) == NULL || !VideoDriver::GetInstance()->AfterBlitterChange()) usererror("Failed to reinitialize video driver. Specify a fixed blitter in the config"); if (BlitterFactory::SelectBlitter(cur_blitter) == NULL || !VideoDriver::GetInstance()->AfterBlitterChange()) usererror("Failed to reinitialize video driver. Specify a fixed blitter in the config");
} }
VideoDriver::GetInstance()->ReleaseBlitterLock();
return true; return true;
} }

View File

@@ -627,8 +627,8 @@ public:
this->vehicle_sel = v->index; this->vehicle_sel = v->index;
SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, HT_DRAG, this); int image = v->GetImage(_current_text_dir == TD_RTL ? DIR_E : DIR_W, EIT_IN_LIST);
SetMouseCursorVehicle(v, EIT_IN_LIST); SetObjectToPlaceWnd(image, GetVehiclePalette(v), HT_DRAG, this);
_cursor.vehchain = true; _cursor.vehchain = true;
this->SetDirty(); this->SetDirty();

View File

@@ -102,7 +102,7 @@ static void ReadHeightmapPNGImageData(byte *map, png_structp png_ptr, png_infop
* If map == NULL only the size of the PNG is read, otherwise a map * If map == NULL only the size of the PNG is read, otherwise a map
* with grayscale pixels is allocated and assigned to *map. * with grayscale pixels is allocated and assigned to *map.
*/ */
static bool ReadHeightmapPNG(const char *filename, uint *x, uint *y, byte **map) static bool ReadHeightmapPNG(char *filename, uint *x, uint *y, byte **map)
{ {
FILE *fp; FILE *fp;
png_structp png_ptr = NULL; png_structp png_ptr = NULL;
@@ -232,7 +232,7 @@ static void ReadHeightmapBMPImageData(byte *map, BmpInfo *info, BmpData *data)
* If map == NULL only the size of the BMP is read, otherwise a map * If map == NULL only the size of the BMP is read, otherwise a map
* with grayscale pixels is allocated and assigned to *map. * with grayscale pixels is allocated and assigned to *map.
*/ */
static bool ReadHeightmapBMP(const char *filename, uint *x, uint *y, byte **map) static bool ReadHeightmapBMP(char *filename, uint *x, uint *y, byte **map)
{ {
FILE *f; FILE *f;
BmpInfo info; BmpInfo info;
@@ -444,56 +444,45 @@ void FixSlopes()
} }
/** /**
* Reads the heightmap with the correct file reader. * Reads the heightmap with the correct file reader
* @param dft Type of image file.
* @param filename Name of the file to load.
* @param [out] x Length of the image.
* @param [out] y Height of the image.
* @param [inout] map If not \c NULL, destination to store the loaded block of image data.
* @return Whether loading was successful.
*/ */
static bool ReadHeightMap(DetailedFileType dft, const char *filename, uint *x, uint *y, byte **map) static bool ReadHeightMap(char *filename, uint *x, uint *y, byte **map)
{ {
switch (dft) { switch (_file_to_saveload.mode) {
default: default: NOT_REACHED();
NOT_REACHED();
#ifdef WITH_PNG #ifdef WITH_PNG
case DFT_HEIGHTMAP_PNG: case SL_PNG:
return ReadHeightmapPNG(filename, x, y, map); return ReadHeightmapPNG(filename, x, y, map);
#endif /* WITH_PNG */ #endif /* WITH_PNG */
case SL_BMP:
case DFT_HEIGHTMAP_BMP:
return ReadHeightmapBMP(filename, x, y, map); return ReadHeightmapBMP(filename, x, y, map);
} }
} }
/** /**
* Get the dimensions of a heightmap. * Get the dimensions of a heightmap.
* @param dft Type of image file.
* @param filename to query * @param filename to query
* @param x dimension x * @param x dimension x
* @param y dimension y * @param y dimension y
* @return Returns false if loading of the image failed. * @return Returns false if loading of the image failed.
*/ */
bool GetHeightmapDimensions(DetailedFileType dft, const char *filename, uint *x, uint *y) bool GetHeightmapDimensions(char *filename, uint *x, uint *y)
{ {
return ReadHeightMap(dft, filename, x, y, NULL); return ReadHeightMap(filename, x, y, NULL);
} }
/** /**
* Load a heightmap from file and change the map in his current dimensions * Load a heightmap from file and change the map in his current dimensions
* to a landscape representing the heightmap. * to a landscape representing the heightmap.
* It converts pixels to height. The brighter, the higher. * It converts pixels to height. The brighter, the higher.
* @param dft Type of image file.
* @param filename of the heightmap file to be imported * @param filename of the heightmap file to be imported
*/ */
void LoadHeightmap(DetailedFileType dft, const char *filename) void LoadHeightmap(char *filename)
{ {
uint x, y; uint x, y;
byte *map = NULL; byte *map = NULL;
if (!ReadHeightMap(dft, filename, &x, &y, &map)) { if (!ReadHeightMap(filename, &x, &y, &map)) {
free(map); free(map);
return; return;
} }

View File

@@ -12,8 +12,6 @@
#ifndef HEIGHTMAP_H #ifndef HEIGHTMAP_H
#define HEIGHTMAP_H #define HEIGHTMAP_H
#include "fileio_type.h"
/** /**
* Order of these enums has to be the same as in lang/english.txt * Order of these enums has to be the same as in lang/english.txt
* Otherwise you will get inconsistent behaviour. * Otherwise you will get inconsistent behaviour.
@@ -23,8 +21,8 @@ enum HeightmapRotation {
HM_CLOCKWISE, ///< Rotate the map clockwise 45 degrees HM_CLOCKWISE, ///< Rotate the map clockwise 45 degrees
}; };
bool GetHeightmapDimensions(DetailedFileType dft, const char *filename, uint *x, uint *y); bool GetHeightmapDimensions(char *filename, uint *x, uint *y);
void LoadHeightmap(DetailedFileType dft, const char *filename); void LoadHeightmap(char *filename);
void FlatEmptyWorld(byte tile_height); void FlatEmptyWorld(byte tile_height);
void FixSlopes(); void FixSlopes();

View File

@@ -1383,7 +1383,7 @@ static CommandCost CheckIfIndustryTilesAreFree(TileIndex tile, const IndustryTil
} }
if (gfx == GFX_WATERTILE_SPECIALCHECK) { if (gfx == GFX_WATERTILE_SPECIALCHECK) {
if (!IsWaterTile(cur_tile) || if (!IsTileType(cur_tile, MP_WATER) ||
!IsTileFlat(cur_tile)) { !IsTileFlat(cur_tile)) {
return_cmd_error(STR_ERROR_SITE_UNSUITABLE); return_cmd_error(STR_ERROR_SITE_UNSUITABLE);
} }

View File

@@ -56,20 +56,6 @@ enum CargoSuffixType {
CST_DIR, ///< Industry-directory window CST_DIR, ///< Industry-directory window
}; };
/** Ways of displaying the cargo. */
enum CargoSuffixDisplay {
CSD_CARGO, ///< Display the cargo without sub-type (cb37 result 401).
CSD_CARGO_AMOUNT, ///< Display the cargo and amount (if useful), but no sub-type (cb37 result 400 or fail).
CSD_CARGO_TEXT, ///< Display then cargo and supplied string (cb37 result 800-BFF).
CSD_CARGO_AMOUNT_TEXT, ///< Display then cargo, amount, and string (cb37 result 000-3FF).
};
/** Transfer storage of cargo suffix information. */
struct CargoSuffix {
CargoSuffixDisplay display; ///< How to display the cargo and text.
char text[512]; ///< Cargo suffix text.
};
static void ShowIndustryCargoesWindow(IndustryType id); static void ShowIndustryCargoesWindow(IndustryType id);
/** /**
@@ -85,51 +71,20 @@ static void ShowIndustryCargoesWindow(IndustryType id);
* @param ind_type the industry type * @param ind_type the industry type
* @param indspec the industry spec * @param indspec the industry spec
* @param suffix is filled with the string to display * @param suffix is filled with the string to display
* @param suffix_last lastof(suffix)
*/ */
static void GetCargoSuffix(uint cargo, CargoSuffixType cst, const Industry *ind, IndustryType ind_type, const IndustrySpec *indspec, CargoSuffix &suffix) static void GetCargoSuffix(uint cargo, CargoSuffixType cst, const Industry *ind, IndustryType ind_type, const IndustrySpec *indspec, char *suffix, const char *suffix_last)
{ {
suffix.text[0] = '\0'; suffix[0] = '\0';
suffix.display = CSD_CARGO_AMOUNT;
if (HasBit(indspec->callback_mask, CBM_IND_CARGO_SUFFIX)) { if (HasBit(indspec->callback_mask, CBM_IND_CARGO_SUFFIX)) {
TileIndex t = (cst != CST_FUND) ? ind->location.tile : INVALID_TILE; uint16 callback = GetIndustryCallback(CBID_INDUSTRY_CARGO_SUFFIX, 0, (cst << 8) | cargo, const_cast<Industry *>(ind), ind_type, (cst != CST_FUND) ? ind->location.tile : INVALID_TILE);
uint16 callback = GetIndustryCallback(CBID_INDUSTRY_CARGO_SUFFIX, 0, (cst << 8) | cargo, const_cast<Industry *>(ind), ind_type, t); if (callback == CALLBACK_FAILED || callback == 0x400) return;
if (callback == CALLBACK_FAILED) return; if (callback > 0x400) {
if (indspec->grf_prop.grffile->grf_version < 8) {
if (GB(callback, 0, 8) == 0xFF) return;
if (callback < 0x400) {
StartTextRefStackUsage(indspec->grf_prop.grffile, 6);
GetString(suffix.text, GetGRFStringID(indspec->grf_prop.grffile->grfid, 0xD000 + callback), lastof(suffix.text));
StopTextRefStackUsage();
suffix.display = CSD_CARGO_AMOUNT_TEXT;
return;
}
ErrorUnknownCallbackResult(indspec->grf_prop.grffile->grfid, CBID_INDUSTRY_CARGO_SUFFIX, callback); ErrorUnknownCallbackResult(indspec->grf_prop.grffile->grfid, CBID_INDUSTRY_CARGO_SUFFIX, callback);
return; } else if (indspec->grf_prop.grffile->grf_version >= 8 || GB(callback, 0, 8) != 0xFF) {
StartTextRefStackUsage(indspec->grf_prop.grffile, 6);
} else { // GRF version 8 or higher. GetString(suffix, GetGRFStringID(indspec->grf_prop.grffile->grfid, 0xD000 + callback), suffix_last);
if (callback == 0x400) return; StopTextRefStackUsage();
if (callback == 0x401) {
suffix.display = CSD_CARGO;
return;
}
if (callback < 0x400) {
StartTextRefStackUsage(indspec->grf_prop.grffile, 6);
GetString(suffix.text, GetGRFStringID(indspec->grf_prop.grffile->grfid, 0xD000 + callback), lastof(suffix.text));
StopTextRefStackUsage();
suffix.display = CSD_CARGO_AMOUNT_TEXT;
return;
}
if (callback >= 0x800 && callback < 0xC00) {
StartTextRefStackUsage(indspec->grf_prop.grffile, 6);
GetString(suffix.text, GetGRFStringID(indspec->grf_prop.grffile->grfid, 0xD000 - 0x800 + callback), lastof(suffix.text));
StopTextRefStackUsage();
suffix.display = CSD_CARGO_TEXT;
return;
}
ErrorUnknownCallbackResult(indspec->grf_prop.grffile->grfid, CBID_INDUSTRY_CARGO_SUFFIX, callback);
return;
} }
} }
} }
@@ -150,9 +105,9 @@ static inline void GetAllCargoSuffixes(uint cb_offset, CargoSuffixType cst, cons
assert_compile(lengthof(cargoes) <= lengthof(suffixes)); assert_compile(lengthof(cargoes) <= lengthof(suffixes));
for (uint j = 0; j < lengthof(cargoes); j++) { for (uint j = 0; j < lengthof(cargoes); j++) {
if (cargoes[j] != CT_INVALID) { if (cargoes[j] != CT_INVALID) {
GetCargoSuffix(cb_offset + j, cst, ind, ind_type, indspec, suffixes[j]); GetCargoSuffix(cb_offset + j, cst, ind, ind_type, indspec, suffixes[j], lastof(suffixes[j]));
} else { } else {
suffixes[j].text[0] = '\0'; suffixes[j][0] = '\0';
} }
} }
} }
@@ -358,7 +313,7 @@ public:
const IndustrySpec *indsp = GetIndustrySpec(this->index[i]); const IndustrySpec *indsp = GetIndustrySpec(this->index[i]);
CargoSuffix cargo_suffix[3]; char cargo_suffix[3][512];
GetAllCargoSuffixes(0, CST_FUND, NULL, this->index[i], indsp, indsp->accepts_cargo, cargo_suffix); GetAllCargoSuffixes(0, CST_FUND, NULL, this->index[i], indsp, indsp->accepts_cargo, cargo_suffix);
StringID str = STR_INDUSTRY_VIEW_REQUIRES_CARGO; StringID str = STR_INDUSTRY_VIEW_REQUIRES_CARGO;
byte p = 0; byte p = 0;
@@ -368,7 +323,7 @@ public:
if (indsp->accepts_cargo[j] == CT_INVALID) continue; if (indsp->accepts_cargo[j] == CT_INVALID) continue;
if (p > 0) str++; if (p > 0) str++;
SetDParam(p++, CargoSpec::Get(indsp->accepts_cargo[j])->name); SetDParam(p++, CargoSpec::Get(indsp->accepts_cargo[j])->name);
SetDParamStr(p++, cargo_suffix[j].text); SetDParamStr(p++, cargo_suffix[j]);
} }
d = maxdim(d, GetStringBoundingBox(str)); d = maxdim(d, GetStringBoundingBox(str));
@@ -382,7 +337,7 @@ public:
if (indsp->produced_cargo[j] == CT_INVALID) continue; if (indsp->produced_cargo[j] == CT_INVALID) continue;
if (p > 0) str++; if (p > 0) str++;
SetDParam(p++, CargoSpec::Get(indsp->produced_cargo[j])->name); SetDParam(p++, CargoSpec::Get(indsp->produced_cargo[j])->name);
SetDParamStr(p++, cargo_suffix[j].text); SetDParamStr(p++, cargo_suffix[j]);
} }
d = maxdim(d, GetStringBoundingBox(str)); d = maxdim(d, GetStringBoundingBox(str));
} }
@@ -477,7 +432,7 @@ public:
} }
/* Draw the accepted cargoes, if any. Otherwise, will print "Nothing". */ /* Draw the accepted cargoes, if any. Otherwise, will print "Nothing". */
CargoSuffix cargo_suffix[3]; char cargo_suffix[3][512];
GetAllCargoSuffixes(0, CST_FUND, NULL, this->selected_type, indsp, indsp->accepts_cargo, cargo_suffix); GetAllCargoSuffixes(0, CST_FUND, NULL, this->selected_type, indsp, indsp->accepts_cargo, cargo_suffix);
StringID str = STR_INDUSTRY_VIEW_REQUIRES_CARGO; StringID str = STR_INDUSTRY_VIEW_REQUIRES_CARGO;
byte p = 0; byte p = 0;
@@ -487,7 +442,7 @@ public:
if (indsp->accepts_cargo[j] == CT_INVALID) continue; if (indsp->accepts_cargo[j] == CT_INVALID) continue;
if (p > 0) str++; if (p > 0) str++;
SetDParam(p++, CargoSpec::Get(indsp->accepts_cargo[j])->name); SetDParam(p++, CargoSpec::Get(indsp->accepts_cargo[j])->name);
SetDParamStr(p++, cargo_suffix[j].text); SetDParamStr(p++, cargo_suffix[j]);
} }
DrawString(left, right, y, str); DrawString(left, right, y, str);
y += FONT_HEIGHT_NORMAL; y += FONT_HEIGHT_NORMAL;
@@ -502,7 +457,7 @@ public:
if (indsp->produced_cargo[j] == CT_INVALID) continue; if (indsp->produced_cargo[j] == CT_INVALID) continue;
if (p > 0) str++; if (p > 0) str++;
SetDParam(p++, CargoSpec::Get(indsp->produced_cargo[j])->name); SetDParam(p++, CargoSpec::Get(indsp->produced_cargo[j])->name);
SetDParamStr(p++, cargo_suffix[j].text); SetDParamStr(p++, cargo_suffix[j]);
} }
DrawString(left, right, y, str); DrawString(left, right, y, str);
y += FONT_HEIGHT_NORMAL; y += FONT_HEIGHT_NORMAL;
@@ -758,57 +713,44 @@ public:
int y = top + WD_FRAMERECT_TOP; int y = top + WD_FRAMERECT_TOP;
bool first = true; bool first = true;
bool has_accept = false; bool has_accept = false;
char cargo_suffix[3][512];
if (i->prod_level == PRODLEVEL_CLOSURE) { if (i->prod_level == PRODLEVEL_CLOSURE) {
DrawString(left + WD_FRAMERECT_LEFT, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE); DrawString(left + WD_FRAMERECT_LEFT, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE);
y += 2 * FONT_HEIGHT_NORMAL; y += 2 * FONT_HEIGHT_NORMAL;
} }
CargoSuffix cargo_suffix[3]; if (HasBit(ind->callback_mask, CBM_IND_PRODUCTION_CARGO_ARRIVAL) || HasBit(ind->callback_mask, CBM_IND_PRODUCTION_256_TICKS)) {
GetAllCargoSuffixes(0, CST_VIEW, i, i->type, ind, i->accepts_cargo, cargo_suffix); GetAllCargoSuffixes(0, CST_VIEW, i, i->type, ind, i->accepts_cargo, cargo_suffix);
bool stockpiling = HasBit(ind->callback_mask, CBM_IND_PRODUCTION_CARGO_ARRIVAL) || HasBit(ind->callback_mask, CBM_IND_PRODUCTION_256_TICKS); for (byte j = 0; j < lengthof(i->accepts_cargo); j++) {
if (i->accepts_cargo[j] == CT_INVALID) continue;
uint left_side = left + WD_FRAMERECT_LEFT * 4; // Indent accepted cargoes. has_accept = true;
for (byte j = 0; j < lengthof(i->accepts_cargo); j++) { if (first) {
if (i->accepts_cargo[j] == CT_INVALID) continue; DrawString(left + WD_FRAMERECT_LEFT, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING);
has_accept = true; y += FONT_HEIGHT_NORMAL;
if (first) { first = false;
DrawString(left + WD_FRAMERECT_LEFT, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_REQUIRES); }
SetDParam(0, i->accepts_cargo[j]);
SetDParam(1, i->incoming_cargo_waiting[j]);
SetDParamStr(2, cargo_suffix[j]);
DrawString(left + WD_FRAMETEXT_LEFT, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO);
y += FONT_HEIGHT_NORMAL; y += FONT_HEIGHT_NORMAL;
first = false;
} }
switch (cargo_suffix[j].display) { } else {
case CSD_CARGO_AMOUNT: GetAllCargoSuffixes(0, CST_VIEW, i, i->type, ind, i->accepts_cargo, cargo_suffix);
if (stockpiling) { StringID str = STR_INDUSTRY_VIEW_REQUIRES_CARGO;
SetDParam(0, i->accepts_cargo[j]); byte p = 0;
SetDParam(1, i->incoming_cargo_waiting[j]); for (byte j = 0; j < lengthof(i->accepts_cargo); j++) {
DrawString(left_side, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT); if (i->accepts_cargo[j] == CT_INVALID) continue;
break; has_accept = true;
} if (p > 0) str++;
/* FALL THROUGH */ SetDParam(p++, CargoSpec::Get(i->accepts_cargo[j])->name);
SetDParamStr(p++, cargo_suffix[j]);
case CSD_CARGO: }
SetDParam(0, CargoSpec::Get(i->accepts_cargo[j])->name); if (has_accept) {
DrawString(left_side, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_ACCEPT_CARGO); DrawString(left + WD_FRAMERECT_LEFT, right - WD_FRAMERECT_RIGHT, y, str);
break; y += FONT_HEIGHT_NORMAL;
case CSD_CARGO_TEXT:
SetDParam(0, CargoSpec::Get(i->accepts_cargo[j])->name);
SetDParamStr(1, cargo_suffix[j].text);
DrawString(left_side, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT);
break;
case CSD_CARGO_AMOUNT_TEXT:
SetDParam(0, i->accepts_cargo[j]);
SetDParam(1, i->incoming_cargo_waiting[j]);
SetDParamStr(2, cargo_suffix[j].text);
DrawString(left_side, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT);
break;
default:
NOT_REACHED();
} }
y += FONT_HEIGHT_NORMAL;
} }
GetAllCargoSuffixes(3, CST_VIEW, i, i->type, ind, i->produced_cargo, cargo_suffix); GetAllCargoSuffixes(3, CST_VIEW, i, i->type, ind, i->produced_cargo, cargo_suffix);
@@ -825,7 +767,7 @@ public:
SetDParam(0, i->produced_cargo[j]); SetDParam(0, i->produced_cargo[j]);
SetDParam(1, i->last_month_production[j]); SetDParam(1, i->last_month_production[j]);
SetDParamStr(2, cargo_suffix[j].text); SetDParamStr(2, cargo_suffix[j]);
SetDParam(3, ToPercent8(i->last_month_pct_transported[j])); SetDParam(3, ToPercent8(i->last_month_pct_transported[j]));
uint x = left + WD_FRAMETEXT_LEFT + (this->editable == EA_RATE ? SETTING_BUTTON_WIDTH + 10 : 0); uint x = left + WD_FRAMETEXT_LEFT + (this->editable == EA_RATE ? SETTING_BUTTON_WIDTH + 10 : 0);
DrawString(x, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_TRANSPORTED); DrawString(x, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_TRANSPORTED);
@@ -1262,7 +1204,7 @@ protected:
/* Industry name */ /* Industry name */
SetDParam(p++, i->index); SetDParam(p++, i->index);
static CargoSuffix cargo_suffix[lengthof(i->produced_cargo)]; static char cargo_suffix[lengthof(i->produced_cargo)][512];
GetAllCargoSuffixes(3, CST_DIR, i, i->type, indsp, i->produced_cargo, cargo_suffix); GetAllCargoSuffixes(3, CST_DIR, i, i->type, indsp, i->produced_cargo, cargo_suffix);
/* Industry productions */ /* Industry productions */
@@ -1270,7 +1212,7 @@ protected:
if (i->produced_cargo[j] == CT_INVALID) continue; if (i->produced_cargo[j] == CT_INVALID) continue;
SetDParam(p++, i->produced_cargo[j]); SetDParam(p++, i->produced_cargo[j]);
SetDParam(p++, i->last_month_production[j]); SetDParam(p++, i->last_month_production[j]);
SetDParamStr(p++, cargo_suffix[j].text); SetDParamStr(p++, cargo_suffix[j]);
} }
/* Transported productions */ /* Transported productions */

View File

@@ -60,21 +60,13 @@ struct SelectGameWindow : public Window {
virtual void OnInit() virtual void OnInit()
{ {
bool missing_sprites = _missing_extra_graphics > 0 && !IsReleasedVersion(); bool missing = _current_language->missing >= _settings_client.gui.missing_strings_threshold && !IsReleasedVersion();
this->GetWidget<NWidgetStacked>(WID_SGI_BASESET_SELECTION)->SetDisplayedPlane(missing_sprites ? 0 : SZSP_NONE); this->GetWidget<NWidgetStacked>(WID_SGI_TRANSLATION_SELECTION)->SetDisplayedPlane(missing ? 0 : SZSP_NONE);
bool missing_lang = _current_language->missing >= _settings_client.gui.missing_strings_threshold && !IsReleasedVersion();
this->GetWidget<NWidgetStacked>(WID_SGI_TRANSLATION_SELECTION)->SetDisplayedPlane(missing_lang ? 0 : SZSP_NONE);
} }
virtual void DrawWidget(const Rect &r, int widget) const virtual void DrawWidget(const Rect &r, int widget) const
{ {
switch (widget) { switch (widget) {
case WID_SGI_BASESET:
SetDParam(0, _missing_extra_graphics);
DrawStringMultiLine(r.left, r.right, r.top, r.bottom, STR_INTRO_BASESET, TC_FROMSTRING, SA_CENTER);
break;
case WID_SGI_TRANSLATION: case WID_SGI_TRANSLATION:
SetDParam(0, _current_language->missing); SetDParam(0, _current_language->missing);
DrawStringMultiLine(r.left, r.right, r.top, r.bottom, STR_INTRO_TRANSLATION, TC_FROMSTRING, SA_CENTER); DrawStringMultiLine(r.left, r.right, r.top, r.bottom, STR_INTRO_TRANSLATION, TC_FROMSTRING, SA_CENTER);
@@ -84,29 +76,20 @@ struct SelectGameWindow : public Window {
virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
{ {
StringID str = 0;
switch (widget) { switch (widget) {
case WID_SGI_BASESET: case WID_SGI_TRANSLATION: {
SetDParam(0, _missing_extra_graphics);
str = STR_INTRO_BASESET;
break;
case WID_SGI_TRANSLATION:
SetDParam(0, _current_language->missing); SetDParam(0, _current_language->missing);
str = STR_INTRO_TRANSLATION; int height = GetStringHeight(STR_INTRO_TRANSLATION, size->width);
if (height > 3 * FONT_HEIGHT_NORMAL) {
/* Don't let the window become too high. */
Dimension textdim = GetStringBoundingBox(STR_INTRO_TRANSLATION);
textdim.height *= 3;
textdim.width -= textdim.width / 2;
*size = maxdim(*size, textdim);
} else {
size->height = height + padding.height;
}
break; break;
}
if (str != 0) {
int height = GetStringHeight(str, size->width);
if (height > 3 * FONT_HEIGHT_NORMAL) {
/* Don't let the window become too high. */
Dimension textdim = GetStringBoundingBox(str);
textdim.height *= 3;
textdim.width -= textdim.width / 2;
*size = maxdim(*size, textdim);
} else {
size->height = height + padding.height;
} }
} }
} }
@@ -128,9 +111,9 @@ struct SelectGameWindow : public Window {
} }
break; break;
case WID_SGI_LOAD_GAME: ShowSaveLoadDialog(FT_SAVEGAME, SLO_LOAD); break; case WID_SGI_LOAD_GAME: ShowSaveLoadDialog(SLD_LOAD_GAME); break;
case WID_SGI_PLAY_SCENARIO: ShowSaveLoadDialog(FT_SCENARIO, SLO_LOAD); break; case WID_SGI_PLAY_SCENARIO: ShowSaveLoadDialog(SLD_LOAD_SCENARIO); break;
case WID_SGI_PLAY_HEIGHTMAP: ShowSaveLoadDialog(FT_HEIGHTMAP,SLO_LOAD); break; case WID_SGI_PLAY_HEIGHTMAP: ShowSaveLoadDialog(SLD_LOAD_HEIGHTMAP); break;
case WID_SGI_EDIT_SCENARIO: StartScenarioEditor(); break; case WID_SGI_EDIT_SCENARIO: StartScenarioEditor(); break;
case WID_SGI_PLAY_NETWORK: case WID_SGI_PLAY_NETWORK:
@@ -216,11 +199,6 @@ static const NWidgetPart _nested_select_game_widgets[] = {
EndContainer(), EndContainer(),
NWidget(NWID_SPACER), SetMinimalSize(0, 7), NWidget(NWID_SPACER), SetMinimalSize(0, 7),
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_SGI_BASESET_SELECTION),
NWidget(NWID_VERTICAL),
NWidget(WWT_EMPTY, COLOUR_ORANGE, WID_SGI_BASESET), SetMinimalSize(316, 12), SetFill(1, 0), SetPadding(0, 10, 7, 10),
EndContainer(),
EndContainer(),
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_SGI_TRANSLATION_SELECTION), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_SGI_TRANSLATION_SELECTION),
NWidget(NWID_VERTICAL), NWidget(NWID_VERTICAL),
NWidget(WWT_EMPTY, COLOUR_ORANGE, WID_SGI_TRANSLATION), SetMinimalSize(316, 12), SetFill(1, 0), SetPadding(0, 10, 7, 10), NWidget(WWT_EMPTY, COLOUR_ORANGE, WID_SGI_TRANSLATION), SetMinimalSize(316, 12), SetFill(1, 0), SetPadding(0, 10, 7, 10),

View File

@@ -31,7 +31,6 @@
#include "object_base.h" #include "object_base.h"
#include "company_func.h" #include "company_func.h"
#include "pathfinder/npf/aystar.h" #include "pathfinder/npf/aystar.h"
#include "saveload/saveload.h"
#include <list> #include <list>
#include <set> #include <set>
@@ -1222,7 +1221,7 @@ void GenerateLandscape(byte mode)
if (mode == GWM_HEIGHTMAP) { if (mode == GWM_HEIGHTMAP) {
SetGeneratingWorldProgress(GWP_LANDSCAPE, steps + GLS_HEIGHTMAP); SetGeneratingWorldProgress(GWP_LANDSCAPE, steps + GLS_HEIGHTMAP);
LoadHeightmap(_file_to_saveload.detail_ftype, _file_to_saveload.name); LoadHeightmap(_file_to_saveload.name);
IncreaseGeneratingWorldProgress(GWP_LANDSCAPE); IncreaseGeneratingWorldProgress(GWP_LANDSCAPE);
} else if (_settings_game.game_creation.land_generator == LG_TERRAGENESIS) { } else if (_settings_game.game_creation.land_generator == LG_TERRAGENESIS) {
SetGeneratingWorldProgress(GWP_LANDSCAPE, steps + GLS_TERRAGENESIS); SetGeneratingWorldProgress(GWP_LANDSCAPE, steps + GLS_TERRAGENESIS);

View File

@@ -2602,29 +2602,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :Velde
STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Sneeu-bedekte land STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Sneeu-bedekte land
STR_LAI_CLEAR_DESCRIPTION_DESERT :Woestyn STR_LAI_CLEAR_DESCRIPTION_DESERT :Woestyn
STR_LAI_RAIL_DESCRIPTION_TRACK :Spoorweg spoor STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} spoor
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Spoorweg spoor met blok seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} spoor met blok seine
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Spoorweg spoor met voor-seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} spoor met voor-seine
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Spoorweg spoor met uitgang-seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} spoor met uitgang-seine
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Spoorweg spoor met kombinasie-seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} spoor met kombinasie-seine
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Spoorweg spoor met roete seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} spoor met roete seine
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Spoorweg spoor met een-rigting pad seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} spoor met een-rigting pad seine
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Spoorweg spoor met blok en voor-seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} spoor met blok en voor-seine
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Spoorweg spoor met blok en uitgang-seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} spoor met blok en uitgang-seine
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Spoorweg spoor met blok en kombinasie-seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} spoor met blok en kombinasie-seine
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Spoorweg spoor met blok en pad seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} spoor met blok en pad seine
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Spoorweg spoor met blok en een-rigting pad seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} spoor met blok en een-rigting pad seine
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Spoorweg spoor met voor en uitgang seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} spoor met voor en uitgang seine
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Spoorweg spoor met voor en kombinasie-seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} spoor met voor en kombinasie-seine
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Spoorweg spoor met voor en pad-seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} spoor met voor en pad-seine
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Spoorweg spoor met voor en een-rigting pad seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} spoor met voor en een-rigting pad seine
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Spoorweg spoor met uitgang en kombinasie-seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} spoor met uitgang en kombinasie-seine
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Spoorweg spoor met uitgang en pad-seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} spoor met uitgang en pad-seine
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Spoorweg spoor met uitgang en een-rigting pad seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} spoor met uitgang en een-rigting pad seine
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Spoorweg spoor met kombinasie en pad seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} spoor met kombinasie en pad seine
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Spoorweg spoor met kombinasie en eenrigting-pad seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} spoor met kombinasie en eenrigting-pad seine
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Spoorweg spoor met pad en een-rigting pad seine STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} spoor met pad en een-rigting pad seine
STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Spoorweg trein diensstasie STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} trein diensstasie
STR_LAI_ROAD_DESCRIPTION_ROAD :Pad STR_LAI_ROAD_DESCRIPTION_ROAD :Pad
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Pad met straatligte STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Pad met straatligte
@@ -2688,7 +2688,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Maatskappy-besi
STR_ABOUT_OPENTTD :{WHITE}Oor OpenTTD STR_ABOUT_OPENTTD :{WHITE}Oor OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Oorspronklike kopiereg {COPYRIGHT} 1995 Chris Sawyer, Alle regte voorbehou STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Oorspronklike kopiereg {COPYRIGHT} 1995 Chris Sawyer, Alle regte voorbehou
STR_ABOUT_VERSION :{BLACK}OpenTTD uitgawe {REV} STR_ABOUT_VERSION :{BLACK}OpenTTD uitgawe {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Die OpenTTD span STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2016 Die OpenTTD span
# Save/load game/scenario # Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spaar Spel STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spaar Spel
@@ -2907,6 +2907,8 @@ STR_NEWGRF_ERROR_INVALID_ID :Poging on 'n on
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} bevat 'n korrupte prent. Korrupte prente sal as 'n rooi vraagteken gewys word (?) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} bevat 'n korrupte prent. Korrupte prente sal as 'n rooi vraagteken gewys word (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Bevat veelvoudige Aksie 8 inskrywings (sprite {3:NUM}) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Bevat veelvoudige Aksie 8 inskrywings (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Lees verby die einde van die pseudo-sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Lees verby die einde van die pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :WHITE}Die huidige basis-grafikastel ontbreek sommige sprites.{}Opdateer die basis-grafikastel.
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Die huidige basis-grafikastel ontbreek sommige sprites.{}Opdateer die basis-grafikastel.{}Aangesien jy 'n {YELLOW}ontwikkelingsweergawe van OpenTTD{WHITE} het, mag jy dalk 'n {YELLOW}ontwikkelingsweergawe{WHITE} van die basis-grafikastel benodig{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Aangevraagde GRF hulpbronne is nie beskikbaar nie (sprite {3:NUM}) STR_NEWGRF_ERROR_GRM_FAILED :Aangevraagde GRF hulpbronne is nie beskikbaar nie (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} was gedeaktiveer deur {2:STRING} STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} was gedeaktiveer deur {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ongeldige/onbekende sprite uitleg formaat (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ongeldige/onbekende sprite uitleg formaat (sprite {3:NUM})
@@ -3293,8 +3295,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Vereis:
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Vereis: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Vereis: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends ############ range for requires ends
############ range for produces starts ############ range for produces starts
STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Vrag wag om geprosesseer te word:
STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK}
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produseer: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produseer: {YELLOW}{STRING}{STRING}
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produseer: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produseer: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
############ range for produces ends ############ range for produces ends
@@ -3555,6 +3558,7 @@ STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} waneer
STR_REPLACE_VEHICLES_STOP :{BLACK}Staak vervanging STR_REPLACE_VEHICLES_STOP :{BLACK}Staak vervanging
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Druk om die vervanging van die linker gekose enjin tipe te stop STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Druk om die vervanging van die linker gekose enjin tipe te stop
STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Vervang: {ORANGE}{STRING}
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Skakel tussen enjin en wa vervang vensters STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Skakel tussen enjin en wa vervang vensters
STR_REPLACE_ENGINES :Enjin STR_REPLACE_ENGINES :Enjin
STR_REPLACE_WAGONS :Waens STR_REPLACE_WAGONS :Waens

View File

@@ -942,8 +942,8 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}دقة
STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}اختر دقة الشاشة STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}اختر دقة الشاشة
STR_GAME_OPTIONS_RESOLUTION_OTHER :اخرى STR_GAME_OPTIONS_RESOLUTION_OTHER :اخرى
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}حجم اللوحة STR_GAME_OPTIONS_GUI_ZOOM_FRAME :حجم اللوحة
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}حدد العنصر المطلوب STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :حدد العنصر المطلوب
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :تقريب عادي STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :تقريب عادي
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :تقريب ×2 STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :تقريب ×2
@@ -1051,9 +1051,9 @@ STR_CITY_APPROVAL_HOSTILE :معاد
STR_WARNING_NO_SUITABLE_AI :{WHITE}لايوجد ذكاء اصطناعي متاح ...{}تستطيع تجميل العديد من الذكاء الاصطناعي عن طريق اللانترنت STR_WARNING_NO_SUITABLE_AI :{WHITE}لايوجد ذكاء اصطناعي متاح ...{}تستطيع تجميل العديد من الذكاء الاصطناعي عن طريق اللانترنت
# Settings tree window # Settings tree window
STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}الإعدادات STR_CONFIG_SETTING_TREE_CAPTION :الإعدادات
STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}مدد الكل STR_CONFIG_SETTING_EXPAND_ALL :مدد الكل
STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}إسحب الكل STR_CONFIG_SETTING_COLLAPSE_ALL :إسحب الكل
STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK} فئة: STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK} فئة:
STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}نوع: STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}نوع:
@@ -1408,7 +1408,7 @@ STR_INTRO_MULTIPLAYER :{BLACK}لعب
STR_INTRO_GAME_OPTIONS :{BLACK}إعدادات اللعبه STR_INTRO_GAME_OPTIONS :{BLACK}إعدادات اللعبه
STR_INTRO_HIGHSCORE :{BLACK}قائمه المتفوقين STR_INTRO_HIGHSCORE :{BLACK}قائمه المتفوقين
STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}الاعدادات STR_INTRO_CONFIG_SETTINGS_TREE :الاعدادات
STR_INTRO_NEWGRF_SETTINGS :{BLACK} اعدادات NewGRF STR_INTRO_NEWGRF_SETTINGS :{BLACK} اعدادات NewGRF
STR_INTRO_ONLINE_CONTENT :{BLACK} إبحث عن المحتوى عبر الشبكه العنكبوتيه STR_INTRO_ONLINE_CONTENT :{BLACK} إبحث عن المحتوى عبر الشبكه العنكبوتيه
STR_INTRO_SCRIPT_SETTINGS :{BLACK}إعدادات الذكاء الصناعى STR_INTRO_SCRIPT_SETTINGS :{BLACK}إعدادات الذكاء الصناعى
@@ -1427,7 +1427,7 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}اختي
STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}اختيار نمط الألعاب STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}اختيار نمط الألعاب
STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}عرض خيارات اللعبة STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}عرض خيارات اللعبة
STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}إعدادات العرض STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :إعدادات العرض
STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}عرض إعدادات اﻹضافات STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}عرض إعدادات اﻹضافات
STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK} ابحث عن محتوى جديد او تحديث STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK} ابحث عن محتوى جديد او تحديث
STR_INTRO_TOOLTIP_QUIT :{BLACK}اغلاق'OpenTTD' STR_INTRO_TOOLTIP_QUIT :{BLACK}اغلاق'OpenTTD'
@@ -2234,29 +2234,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :حقول
STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :ارض ثلجية STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :ارض ثلجية
STR_LAI_CLEAR_DESCRIPTION_DESERT :صحراء STR_LAI_CLEAR_DESCRIPTION_DESERT :صحراء
STR_LAI_RAIL_DESCRIPTION_TRACK :سكة حديد مسار STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} مسار
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :سكة حديد مسار مع اشارة اغلاق STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} مسار مع اشارة اغلاق
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :سكة حديد مسار مع اشارة مبتدئة STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} مسار مع اشارة مبتدئة
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :سكة حديد سكة حديد مع اشارة خروج STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} سكة حديد مع اشارة خروج
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :سكة حديد سكة حديد مع اشارة مزدوجة STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} سكة حديد مع اشارة مزدوجة
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :سكة حديد سكة حديد مع اشارة طريق STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} سكة حديد مع اشارة طريق
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :سكة حديد سكة حديد مع اشارة اتجاة واحد STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} سكة حديد مع اشارة اتجاة واحد
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :سكة حديد سكة حديد مع اشارة توقف و اشارة مبتدئة STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} سكة حديد مع اشارة توقف و اشارة مبتدئة
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :سكة حديد سكة حديد مع اشارة توقف و خروج STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} سكة حديد مع اشارة توقف و خروج
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :سكة حديد سكة حديد مع اشارة توقف و مزدوجة STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} سكة حديد مع اشارة توقف و مزدوجة
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :سكة حديد سكة حديد مع اشارة اغلاق و طريق STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} سكة حديد مع اشارة اغلاق و طريق
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :سكة حديد سكة حديد مع اشارة اغلاق و طريق باتجاة واحد STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} سكة حديد مع اشارة اغلاق و طريق باتجاة واحد
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :سكة حديد سكة حديد مع اشارة مبدئية و اشارة خروج STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} سكة حديد مع اشارة مبدئية و اشارة خروج
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :سكة حديد سكة حديد مع اشارة مبدئية و اشارة مزدوجة STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} سكة حديد مع اشارة مبدئية و اشارة مزدوجة
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :سكة حديد سكة حديد مع اشارة مبدئية و طريق STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} سكة حديد مع اشارة مبدئية و طريق
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :سكة حديد سكة حديد مع اشارة مبدئية و اتجاة و احد STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} سكة حديد مع اشارة مبدئية و اتجاة و احد
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :سكة حديد سكة حديد مع اشارة خروج و مزدوجة STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} سكة حديد مع اشارة خروج و مزدوجة
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :سكة حديد سكة حديد مع اشارة خروج و طريق STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} سكة حديد مع اشارة خروج و طريق
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :سكة حديد سكة حديد مع اشارة خروج و اتجاة واحد STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} سكة حديد مع اشارة خروج و اتجاة واحد
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :سكة حديد سكة حديد مع اشارة مزدوجة و طريق STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} سكة حديد مع اشارة مزدوجة و طريق
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :سكة حديد سكة حديد مع اشارة مزدوجة و طريق باتجاه واحد STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} سكة حديد مع اشارة مزدوجة و طريق باتجاه واحد
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :سكة حديد سكة حديد مع اشارة طريق و اتجاة و احد STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} سكة حديد مع اشارة طريق و اتجاة و احد
STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :سكة حديد مستودع صيانة قطارات STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} مستودع صيانة قطارات
STR_LAI_ROAD_DESCRIPTION_ROAD :طريق STR_LAI_ROAD_DESCRIPTION_ROAD :طريق
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :طريق مضاء STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :طريق مضاء
@@ -2320,7 +2320,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :ارض مملو
STR_ABOUT_OPENTTD :{WHITE}حول النسخة المفتوحة STR_ABOUT_OPENTTD :{WHITE}حول النسخة المفتوحة
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}الحقوق الاصلية {COPYRIGHT} كريس سوير 1995 , جميع الحقوق محفوظة STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}الحقوق الاصلية {COPYRIGHT} كريس سوير 1995 , جميع الحقوق محفوظة
STR_ABOUT_VERSION :{BLACK}النسخة المفتوحة رقم {REV} STR_ABOUT_VERSION :{BLACK}النسخة المفتوحة رقم {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النسخة المفتوحة {COPYRIGHT}2002-2017 فريق النسخة المفتوحة STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النسخة المفتوحة {COPYRIGHT}2002-2016 فريق النسخة المفتوحة
# Save/load game/scenario # Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}حفظ اللعبة STR_SAVELOAD_SAVE_CAPTION :{WHITE}حفظ اللعبة
@@ -2383,7 +2383,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}اسم
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}الحجم: STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}الحجم:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} * {NUM} STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} * {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}تغيير أعلى ارتفاع للخريطة STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :تغيير أعلى ارتفاع للخريطة
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}غير مستوى خط الثلج STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}غير مستوى خط الثلج
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}غير سنة البداية STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}غير سنة البداية
@@ -2463,7 +2463,7 @@ STR_NEWGRF_SETTINGS_DISABLED :{RED}معطل
STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}متعارض مع هذا اللإصدار من Openttd STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}متعارض مع هذا اللإصدار من Openttd
# NewGRF save preset window # NewGRF save preset window
STR_SAVE_PRESET_CAPTION :{WHITE}حفظ الإعداد المسبق STR_SAVE_PRESET_CAPTION :{BLACK}حفظ الإعداد المسبق
STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}لائحة الإعدادات المسبقة. اختر واحدة لنسخها للإسم المحفوظ بالإسفل STR_SAVE_PRESET_LIST_TOOLTIP :{BLACK}لائحة الإعدادات المسبقة. اختر واحدة لنسخها للإسم المحفوظ بالإسفل
STR_SAVE_PRESET_TITLE :{BLACK}أدخل اسم للإعداد المسبق STR_SAVE_PRESET_TITLE :{BLACK}أدخل اسم للإعداد المسبق
STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}الإسم المختار لحفظ الإعداد المسبق STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}الإسم المختار لحفظ الإعداد المسبق
@@ -2524,6 +2524,7 @@ STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :تم تصميم
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :العديد من NewGRF تم تحميلها STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :العديد من NewGRF تم تحميلها
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :تحميل {1:STRING}كملف ثابت مع NewGRF {STRING}قد يتسبب بمشكلة توافق. STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :تحميل {1:STRING}كملف ثابت مع NewGRF {STRING}قد يتسبب بمشكلة توافق.
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} يحتوي على خصائص غير صالحة. جميع الخصائص الغير صالحة سوف يشار لها بعلامة استفهام حمراء. STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} يحتوي على خصائص غير صالحة. جميع الخصائص الغير صالحة سوف يشار لها بعلامة استفهام حمراء.
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}ملف الرسوم المستخدم حاليا يفتقد لبعض الرسوم الاساسية.{}الرجاء حدث ملف الرسوم.
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING}تم تعطيلة بواسطة{STRING} STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING}تم تعطيلة بواسطة{STRING}
# NewGRF related 'general' warnings # NewGRF related 'general' warnings
@@ -2818,8 +2819,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}يحتا
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}يحتاج: {YELLOW}{STRING}{STRING}, {STRING}{STRING} , {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}يحتاج: {YELLOW}{STRING}{STRING}, {STRING}{STRING} , {STRING}{STRING}
############ range for requires ends ############ range for requires ends
############ range for produces starts ############ range for produces starts
STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}البضاعة تنتظر التعامل معها:
STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK}
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}ينتج: {YELLOW}{STRING} {STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}ينتج: {YELLOW}{STRING} {STRING}
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}ينتج: {YELLOW}{STRING} {STRING}, {STRING} {STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}ينتج: {YELLOW}{STRING} {STRING}, {STRING} {STRING}
############ range for produces ends ############ range for produces ends
@@ -3058,6 +3060,7 @@ STR_REPLACE_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}لم ي
STR_REPLACE_VEHICLES_STOP :{BLACK} اوقف تبديل العربات STR_REPLACE_VEHICLES_STOP :{BLACK} اوقف تبديل العربات
STR_REPLACE_HELP_STOP_BUTTON :{BLACK} اضغط لايقاف تبديل المحركات المختارة في اليسار STR_REPLACE_HELP_STOP_BUTTON :{BLACK} اضغط لايقاف تبديل المحركات المختارة في اليسار
STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK} تبديل: {ORANGE}{STRING}
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK} بدل بين نافذة استبدال المحركات و العربات STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK} بدل بين نافذة استبدال المحركات و العربات
STR_REPLACE_ENGINES :محركات STR_REPLACE_ENGINES :محركات
STR_REPLACE_WAGONS :عربات STR_REPLACE_WAGONS :عربات
@@ -3871,7 +3874,7 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}لا ي
STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... العربة تحطمت STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... العربة تحطمت
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}لن تتوافر اى وسائل نقل على اﻹطلاق STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}لن تتوافر اى وسائل نقل على اﻹطلاق
STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}لا تتوافر اى آليه نقل بعد STR_ERROR_NO_VEHICLES_AVAILABLE_YET :لا تتوافر اى آليه نقل بعد
# Specific vehicle errors # Specific vehicle errors
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}لا يمكن السماح للقطار بالعبور من الاشارة في وضع الخطر STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}لا يمكن السماح للقطار بالعبور من الاشارة في وضع الخطر

View File

@@ -319,7 +319,6 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Subsidio
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Erakutsi konpainien geltokien zerrenda STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Erakutsi konpainien geltokien zerrenda
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Erakutsi konpaniaren finantza informazioa STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Erakutsi konpaniaren finantza informazioa
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Erakutsi konpaniaren informazio generala STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Erakutsi konpaniaren informazio generala
STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Helburu zerrenda erakutsi
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Grafikoak erakutsi STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Grafikoak erakutsi
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Erakutsi konpanien ligako taula STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Erakutsi konpanien ligako taula
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Eraiki industria berria edo industri guztien zerrenda erakutsi STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Eraiki industria berria edo industri guztien zerrenda erakutsi
@@ -1098,8 +1097,6 @@ STR_CONFIG_SETTING_RESTRICT_ALL :Aditua (ezarpen
STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Ezarpenak lehenetsitakoen balio ezberdinarekin STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Ezarpenak lehenetsitakoen balio ezberdinarekin
STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Balio ezberdinak dituzten ezarpenak zure joko berriaren ezarpenekin alderatuta STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Balio ezberdinak dituzten ezarpenak zure joko berriaren ezarpenekin alderatuta
STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Bezero ezarpenak (ez dira partidatan gordetzen; joko guztiei eragiten die)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Enpresa ezarpenak (partidan gordeta; bakarrik uneko enpresari eragiten dio)
STR_CONFIG_SETTINGS_NONE :{WHITE}- Ezer ez - STR_CONFIG_SETTINGS_NONE :{WHITE}- Ezer ez -
STR_CONFIG_SETTING_OFF :Itzalita STR_CONFIG_SETTING_OFF :Itzalita
@@ -1265,7 +1262,6 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Grafikoen marre
STR_CONFIG_SETTING_LAND_GENERATOR :Lur sortzailea: {STRING} STR_CONFIG_SETTING_LAND_GENERATOR :Lur sortzailea: {STRING}
STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Jatorrizkoa STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Jatorrizkoa
STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis
STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis bakarrik) Maparen menditsutasuna
STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industria dentsitatea: {STRING} STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industria dentsitatea: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Petroleo findegietatik maparen ertzera dagoen gehienezko distantzia: {STRING} STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Petroleo findegietatik maparen ertzera dagoen gehienezko distantzia: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Petroleo findegiak bakarrik maparen ertzatik hurbil eraiki daitezke, kostan irla mapetan STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Petroleo findegiak bakarrik maparen ertzatik hurbil eraiki daitezke, kostan irla mapetan
@@ -1282,7 +1278,6 @@ STR_CONFIG_SETTING_TREE_PLACER_NONE :Ezer ez
STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Jatorrizkoa STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Jatorrizkoa
STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Hobetua STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Hobetua
STR_CONFIG_SETTING_ROAD_SIDE :Errepideko garraioak: {STRING} STR_CONFIG_SETTING_ROAD_SIDE :Errepideko garraioak: {STRING}
STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Gidatzeko aldea aukeratu
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Garaiera maparen norabidea: {STRING} STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Garaiera maparen norabidea: {STRING}
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Erlojuko orratzen kontrara STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Erlojuko orratzen kontrara
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Erlojuko orratzen erara STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Erlojuko orratzen erara
@@ -1338,7 +1333,6 @@ STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Saguaren ezkerr
STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Gaitu mapatik zehar mugitzea saguaren ezkerreko botoia mapan arrastratzerakoan. Oso erabilgarria da ukipen pantailak erabiltzerakoan STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Gaitu mapatik zehar mugitzea saguaren ezkerreko botoia mapan arrastratzerakoan. Oso erabilgarria da ukipen pantailak erabiltzerakoan
STR_CONFIG_SETTING_AUTOSAVE :Auto-gordea: {STRING} STR_CONFIG_SETTING_AUTOSAVE :Auto-gordea: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Partida gordetze automatikoaren bitartea aukeratu
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Gordetako jokoen izenetan {STRING} data fomatua erabili STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Gordetako jokoen izenetan {STRING} data fomatua erabili
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Gordetako fitxeroen dataren formatoa STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :Gordetako fitxeroen dataren formatoa
@@ -1379,9 +1373,7 @@ STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Konpainiako gas
STR_CONFIG_SETTING_SOUND_NEWS :Periodikoa: {STRING} STR_CONFIG_SETTING_SOUND_NEWS :Periodikoa: {STRING}
STR_CONFIG_SETTING_SOUND_NEW_YEAR :Amaiera urtea: {STRING} STR_CONFIG_SETTING_SOUND_NEW_YEAR :Amaiera urtea: {STRING}
STR_CONFIG_SETTING_SOUND_CONFIRM :Eraikuntza: {STRING} STR_CONFIG_SETTING_SOUND_CONFIRM :Eraikuntza: {STRING}
STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Eraikuntza arrakastatsua edo beste akzioekin soinu bat egin
STR_CONFIG_SETTING_SOUND_DISASTER :Desastreak/istripuak: {STRING} STR_CONFIG_SETTING_SOUND_DISASTER :Desastreak/istripuak: {STRING}
STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Istripu edo desastreen soinu efektuak aktibatu
STR_CONFIG_SETTING_SOUND_VEHICLE :Garraioak: {STRING} STR_CONFIG_SETTING_SOUND_VEHICLE :Garraioak: {STRING}
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Azpiturak eraikitzea debekatu ibilgailu egokiak ez daudenean eskuragarri: {STRING} STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Azpiturak eraikitzea debekatu ibilgailu egokiak ez daudenean eskuragarri: {STRING}
@@ -2113,7 +2105,6 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Egunerak
STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Haukeratu dituzun edukiak berrituko dituzten edukiak deskargatuak izateko STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Haukeratu dituzun edukiak berrituko dituzten edukiak deskargatuak izateko
STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Guztia desmarkatu STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Guztia desmarkatu
STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Dekargatuak izango ez diren eduki guztiak markatu STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Dekargatuak izango ez diren eduki guztiak markatu
STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Kanpoko webguneak bilatu
STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}OpenTTD uzten zaude! STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}OpenTTD uzten zaude!
STR_CONTENT_FILTER_TITLE :{BLACK}Etiketa/izen iragazkia: STR_CONTENT_FILTER_TITLE :{BLACK}Etiketa/izen iragazkia:
STR_CONTENT_OPEN_URL :{BLACK}Webgunera joan STR_CONTENT_OPEN_URL :{BLACK}Webgunera joan
@@ -2493,7 +2484,6 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Aireport
STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Onartutako zama: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Onartutako zama: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Errail mota: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Trenbidearen abiadura muga: {LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Trenbidearen abiadura muga: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Bideko abiadura muga: {LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Bideko abiadura muga: {LTBLUE}{VELOCITY}
@@ -2506,29 +2496,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :Eremuak
STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Elurrez estalitako paisaia STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Elurrez estalitako paisaia
STR_LAI_CLEAR_DESCRIPTION_DESERT :Desertua STR_LAI_CLEAR_DESCRIPTION_DESERT :Desertua
STR_LAI_RAIL_DESCRIPTION_TRACK :Trenbidea STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} Trenbidea
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Trenbidea Trenbidea blokeo seinalearekin STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} Trenbidea blokeo seinalearekin
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Trenbidea trenbidea aurre-seinalekin STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} trenbidea aurre-seinalekin
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Trenbidea trenbidea irteera seinaleekin STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} trenbidea irteera seinaleekin
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Konbo-seinaledun trenbidea STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} trenbidea konbo seinaleekin
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Trenbidea trenbidea bide seinaleekin STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} trenbidea bide seinaleekin
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Trenbidea trenbidea norabide bakarreko bide seinaleekin STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} trenbidea norabide bakarreko bide seinaleekin
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Trenbidea trenbidea blokeo seinale eta aurre-seinaleekin STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} trenbidea blokeo seinale eta aurre-seinaleekin
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Trenbidea trenbidea blokeo seinale eta irteera seinaleekin STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} trenbidea blokeo seinale eta irteera seinaleekin
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Trenbidea trenbidea blokeo seinalea eta konbo seinaleekin STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} trenbidea blokeo seinalea eta konbo seinaleekin
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Trenbidea trenbidea blokeo seinaleekin eta bide seinaleekin STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} trenbidea blokeo seinaleekin eta bide seinaleekin
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Trenbidea Trenbidea blokeo eta norabide bakarreko bide seinaleekin STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} Trenbidea blokeo eta norabide bakarreko bide seinaleekin
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Trenbidea trenbidea aurre-seinale eta irteera seinaleekin STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} trenbidea aurre-seinale eta irteera seinaleekin
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Trenbidea trenbidea aurre-seinale eta konbo seinaleekin STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} trenbidea aurre-seinale eta konbo seinaleekin
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Trenbidea trenbidea aurre-seinale eta bide seinaleekin STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} trenbidea aurre-seinale eta bide seinaleekin
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Trenbidea trenbidea aurre-seinale eta norabide bakarreko bide seinaleekin STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} trenbidea aurre-seinale eta norabide bakarreko bide seinaleekin
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Trenbidea trenbidea irteera seinale eta konbo seinaleekin STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} trenbidea irteera seinale eta konbo seinaleekin
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Trenbidea trenbidea irteera seinale eta bide seinaleekin STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} trenbidea irteera seinale eta bide seinaleekin
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Trenbidea trenbidea irteera seinale eta norabide bakarreko bide seinaleekin STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} trenbidea irteera seinale eta norabide bakarreko bide seinaleekin
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Trenbidea trenbidea konbo seinale eta bide seinaleekin STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} trenbidea konbo seinale eta bide seinaleekin
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Konbo-seinale eta norabide bakarreko bide seinaledun trenbidea STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} trenbide konbo seinale eta norabide bakarreko bide seinaleekin
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Trenbidea trenbidea bide seinale eta norabide bakarreko seinaleekina STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} trenbidea bide seinale eta norabide bakarreko seinaleekina
STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Trenbidea tren gordailua STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} tren gordailua
STR_LAI_ROAD_DESCRIPTION_ROAD :errepidea STR_LAI_ROAD_DESCRIPTION_ROAD :errepidea
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Errepidea farolekin STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Errepidea farolekin
@@ -2592,7 +2582,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Konpainia jabe
STR_ABOUT_OPENTTD :{WHITE}OpenTTD-ri buruz STR_ABOUT_OPENTTD :{WHITE}OpenTTD-ri buruz
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
STR_ABOUT_VERSION :{BLACK}OpenTTD bertsioa {REV} STR_ABOUT_VERSION :{BLACK}OpenTTD bertsioa {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 The OpenTTD team STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2016 The OpenTTD team
# Save/load game/scenario # Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gordetako jokoa STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gordetako jokoa
@@ -2734,7 +2724,6 @@ STR_NEWGRF_SETTINGS_DISABLED :{RED}Desgaitua
STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}OpenTTD-ren bertsio honekin bateraezina STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}OpenTTD-ren bertsio honekin bateraezina
# NewGRF save preset window # NewGRF save preset window
STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Ez aldatu berezko balioa
# NewGRF parameters window # NewGRF parameters window
STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}NewGRF parametroak aldatu STR_NEWGRF_PARAMETERS_CAPTION :{WHITE}NewGRF parametroak aldatu
@@ -2797,6 +2786,8 @@ STR_NEWGRF_ERROR_INVALID_ID :Identifikazio b
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} sprite baliogabea dauka. Sprite baliogabeak galdera ikur gorria bezala ikusiko dira (?) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} sprite baliogabea dauka. Sprite baliogabeak galdera ikur gorria bezala ikusiko dira (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Action 8 sarrera asko ditu (sprite {3:NUM}) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Action 8 sarrera asko ditu (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Pseudo spritea baino hurrunago irakurri (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Pseudo spritea baino hurrunago irakurri (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Aukeratuta daukazun oinarrizko grafiko paketean "sprite" batzuk falta dira.{}Mesedez eguneratu oinarrizko grafiko paketea
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Erabiltzen ari den grafiko baseari sprite batzuk falta zaizkio.{}Mesedez zure grafiko basea eguneratu ezazu.{}OpenTTD-ren {YELLOW}garapen bertsio bat erabiltzen ari zarenez{WHITE}, grafiko basearen {YELLOW}garapen bertsio bat behar izango duzu{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Eskatutako GRFa ez dago eskuragarri (sprite {3:NUM}) STR_NEWGRF_ERROR_GRM_FAILED :Eskatutako GRFa ez dago eskuragarri (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} desgaitua izan da {STRING}(en)gatik STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} desgaitua izan da {STRING}(en)gatik
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Grafiko deseinu formatu ezezaguna/baliogabea (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Grafiko deseinu formatu ezezaguna/baliogabea (sprite {3:NUM})
@@ -2995,7 +2986,6 @@ STR_STATION_LIST_NO_WAITING_CARGO :{BLACK}Ez dago
STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES} STR_STATION_VIEW_CAPTION :{WHITE}{STATION} {STATION_FEATURES}
STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG} STR_STATION_VIEW_WAITING_CARGO :{WHITE}{CARGO_LONG}
STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} {STATION}-(e)tik garraiatua) STR_STATION_VIEW_EN_ROUTE_FROM :{YELLOW}({CARGO_SHORT} {STATION}-(e)tik garraiatua)
STR_STATION_VIEW_RESERVED :{YELLOW}({CARGO_SHORT} kargarako erreserbatua)
STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Onartu STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}Onartu
STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Onartzen diren zamen zerrenda STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}Onartzen diren zamen zerrenda
@@ -3178,8 +3168,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Beharrez
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Beharrezkoa du: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Beharrezkoa du: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends ############ range for requires ends
############ range for produces starts ############ range for produces starts
STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Prosezatzeko zain dagoen zama:
STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK}
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Ekoizpena: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Ekoizpena: {YELLOW}{STRING}{STRING}
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Ekoizpena: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Ekoizpena: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
############ range for produces ends ############ range for produces ends
@@ -3433,6 +3424,7 @@ STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} zaharr
STR_REPLACE_VEHICLES_STOP :{BLACK}Ibilgailuak ordezkatzen gelditu STR_REPLACE_VEHICLES_STOP :{BLACK}Ibilgailuak ordezkatzen gelditu
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Klikatu ezkerrean aukeratutako motore motaren ordezkapena gelditzeko STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Klikatu ezkerrean aukeratutako motore motaren ordezkapena gelditzeko
STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Ordezkatzen: {ORANGE}{STRING}
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Aldatu motore pantaila eta bagoi paintailaren artean STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Aldatu motore pantaila eta bagoi paintailaren artean
STR_REPLACE_ENGINES :Motoreak STR_REPLACE_ENGINES :Motoreak
STR_REPLACE_WAGONS :Bagoiak STR_REPLACE_WAGONS :Bagoiak
@@ -4061,7 +4053,6 @@ STR_ERROR_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}... Baso
STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... bakarrik elur garaieratik gora eraiki daiteke STR_ERROR_CAN_ONLY_BE_BUILT_ABOVE_SNOW_LINE :{WHITE}... bakarrik elur garaieratik gora eraiki daiteke
STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... bakarrik elur garaieratik behera eraiki daiteke STR_ERROR_CAN_ONLY_BE_BUILT_BELOW_SNOW_LINE :{WHITE}... bakarrik elur garaieratik behera eraiki daiteke
STR_ERROR_NO_SUITABLE_PLACES_FOR_INDUSTRIES :{WHITE}Ez dago leku aproposik '{STRING}' industriarako
# Station construction related errors # Station construction related errors
STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Ezin da tren gordailua hemen eraiki... STR_ERROR_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Ezin da tren gordailua hemen eraiki...
@@ -4327,11 +4318,7 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Ezin da
STR_DESKTOP_SHORTCUT_COMMENT :Transport Tycoon Deluxe-ren simulazio bat STR_DESKTOP_SHORTCUT_COMMENT :Transport Tycoon Deluxe-ren simulazio bat
# Translatable descriptions in media/baseset/*.ob* files # Translatable descriptions in media/baseset/*.ob* files
STR_BASEGRAPHICS_DOS_DESCRIPTION :Transport Tycoon Deluxe originaleko DOS edizioko grafikoak.
STR_BASESOUNDS_DOS_DESCRIPTION :Transport Tycoon Deluxe originaleko DOS edizioko soinuak.
STR_BASESOUNDS_WIN_DESCRIPTION :Transport Tycoon Deluxe originaleko Windows edizioko grafikoak.
STR_BASESOUNDS_NONE_DESCRIPTION :Soinurik gabeko soinu pakete bat STR_BASESOUNDS_NONE_DESCRIPTION :Soinurik gabeko soinu pakete bat
STR_BASEMUSIC_NONE_DESCRIPTION :Musika gabeko musika paketea.
##id 0x2000 ##id 0x2000
# Town building names # Town building names

View File

@@ -1432,7 +1432,7 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Наладкі
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Наладкі кампаніі (запісваюцца ў захаваньні; уплываюць толькі на новыя гульні) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Наладкі кампаніі (запісваюцца ў захаваньні; уплываюць толькі на новыя гульні)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Наладкі кампаніі (запісваюцца ў захаваньне; уплываюць толькі на бягучую кампанію) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Наладкі кампаніі (запісваюцца ў захаваньне; уплываюць толькі на бягучую кампанію)
STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Паказаць усе вынікі пошуку па наладках{}{SILVER}Катэґорыя {BLACK}да {WHITE}{STRING} STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Паказаць усе вынікі пошуку па наладках{}{SILVER}Катэґорыя {BLACK}да {WHITE}{STRING}
STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Паказаць усе вынікі пошуку па наладках{}{SILVER}Тып {BLACK}да {WHITE}Усе тыпы наладак STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Паказаць усе вынікі пошуку па наладках{}{SILVER}Тып BLACK}да {WHITE}Усе тыпы наладак
STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Паказаць усе вынікі пошуку па наладках{}{SILVER}Катэґорыя {BLACK}да {WHITE}{STRING} {BLACK}і {SILVER}Тып {BLACK}да {WHITE}Усе тыпы наладак STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Паказаць усе вынікі пошуку па наладках{}{SILVER}Катэґорыя {BLACK}да {WHITE}{STRING} {BLACK}і {SILVER}Тып {BLACK}да {WHITE}Усе тыпы наладак
STR_CONFIG_SETTINGS_NONE :{WHITE}- Няма - STR_CONFIG_SETTINGS_NONE :{WHITE}- Няма -
@@ -2934,29 +2934,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :Палi
STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Засьнежаная зямля STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Засьнежаная зямля
STR_LAI_CLEAR_DESCRIPTION_DESERT :Пустэльня STR_LAI_CLEAR_DESCRIPTION_DESERT :Пустэльня
STR_LAI_RAIL_DESCRIPTION_TRACK :Чыгунка рэйкi STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} рэйкi
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Чыгунка рэйкi са звычайнымі сыґналамi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} рэйкi са звычайнымі сыґналамi
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Чыгунка рэйкi з уваходнымі прэсыґналамi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} рэйкi з уваходнымі прэсыґналамi
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Чыгунка рэйкi з выхаднымi сыґналамi (прэсыґналамі) STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} рэйкi з выхаднымi сыґналамi (прэсыґналамі)
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Чыгунка рэйкi з камбаванымi сыґналамi (прэсыґналамі) STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} рэйкi з камбаванымi сыґналамi (прэсыґналамі)
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Чыгунка рэйкi з маршрутнымi (PMS) сыґналамi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} рэйкi з маршрутнымi (PMS) сыґналамi
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Чыгунка рэйкi з аднабаковымi маршрутнымi (PMS) сыґналамi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} рэйкi з аднабаковымi маршрутнымi (PMS) сыґналамi
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Чыгунка рэйкi са звычайнымi й уваходнымі прэсыґналамi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} рэйкi са звычайнымi й уваходнымі прэсыґналамi
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Чыгунка рэйкi са звычайнымi й выхаднымi сыґналамi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} рэйкi са звычайнымi й выхаднымi сыґналамi
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Чыгунка рэйкi са звычайнымi й камбаванымi сыґналамi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} рэйкi са звычайнымi й камбаванымi сыґналамi
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Чыгунка рэйкi са звычайнымi й маршрутнымi (PMS) сыґналамi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} рэйкi са звычайнымi й маршрутнымi (PMS) сыґналамi
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Чыгунка рэйкi са звычайнымi й аднабаковымi маршрутнымi (PMS) сыґналамi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} рэйкi са звычайнымi й аднабаковымi маршрутнымi (PMS) сыґналамi
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Чыгунка рэйкi з уваходнымi (прэcыгналамi) ды выхаднымi сыґналамi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} рэйкi з уваходнымi (прэcыгналамi) ды выхаднымi сыґналамi
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Чыгунка рэйкi з уваходнымi (прэсыґналамi) ды камбаванымi сыґналамi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} рэйкi з уваходнымi (прэсыґналамi) ды камбаванымi сыґналамi
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Чыгунка рэйкi з уваходнымi (прэсыґналамi) ды маршрутнымi (PMS) сыґналамi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} рэйкi з уваходнымi (прэсыґналамi) ды маршрутнымi (PMS) сыґналамi
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Чыгунка рэйкi з уваходнымi (прэсыґналамi) ды аднабаковымi маршрутнымi (PMS) сыґналамi STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} рэйкi з уваходнымi (прэсыґналамi) ды аднабаковымi маршрутнымi (PMS) сыґналамi
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Чыгунка рэйкi з выхаднымi й камбінаванымі прэсыґналамі STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} рэйкi з выхаднымi й камбінаванымі прэсыґналамі
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Чыгунка рэйкі з выхаднымі (прэсыґналамі) ды маршрутнымі (PMS) сыґналамі STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} рэйкі з выхаднымі (прэсыґналамі) ды маршрутнымі (PMS) сыґналамі
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Чыгунка рэйкі з выхаднымі (прэсыґналамі) ды аднабаковымі маршрутнымі (PMS) сыґналамі STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} рэйкі з выхаднымі (прэсыґналамі) ды аднабаковымі маршрутнымі (PMS) сыґналамі
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Чыгунка рэйкі з камбінаванымі (прэсыґналамі) ды маршрутнымі (PMS) сыґналамі STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} рэйкі з камбінаванымі (прэсыґналамі) ды маршрутнымі (PMS) сыґналамі
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Чыгунка рэйкі з камбінаванымі (прэсыґналамі) ды аднабаковымі маршрутнымі (PMS) сыґналамі STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} рэйкі з камбінаванымі (прэсыґналамі) ды аднабаковымі маршрутнымі (PMS) сыґналамі
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Чыгунка рэйкі з маршрутнымі (PMS) ды аднабаковымі маршрутнымі сыґналамі STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} рэйкі з маршрутнымі (PMS) ды аднабаковымі маршрутнымі сыґналамі
STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Чыгунка чыгуначнае дэпо STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} чыгуначнае дэпо
STR_LAI_ROAD_DESCRIPTION_ROAD :Дарога STR_LAI_ROAD_DESCRIPTION_ROAD :Дарога
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Дарога з вулічным асьвятленьнем STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Дарога з вулічным асьвятленьнем
@@ -3020,7 +3020,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Зямля на
STR_ABOUT_OPENTTD :{WHITE}Аб OpenTTD STR_ABOUT_OPENTTD :{WHITE}Аб OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Арыґінальныя аўтарскія правы {COPYRIGHT} 1995 Chris Sawyer. Усе правы абароненыя. STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Арыґінальныя аўтарскія правы {COPYRIGHT} 1995 Chris Sawyer. Усе правы абароненыя.
STR_ABOUT_VERSION :{BLACK}OpenTTD вэрсія {REV} STR_ABOUT_VERSION :{BLACK}OpenTTD вэрсія {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 20022017 Каманда распрацоўнікаў OpenTTD STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 20022016 Каманда распрацоўнікаў OpenTTD
# Save/load game/scenario # Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Захаваць гульню STR_SAVELOAD_SAVE_CAPTION :{WHITE}Захаваць гульню
@@ -3239,6 +3239,8 @@ STR_NEWGRF_ERROR_INVALID_ID :Спроба в
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} утрымлiвае пашкоджаны спрайт. Усе пашкоджаныя спрайты будуць паказаны чырвоным знакам пытаньня (?). STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} утрымлiвае пашкоджаны спрайт. Усе пашкоджаныя спрайты будуць паказаны чырвоным знакам пытаньня (?).
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Утрымлiвае некалькі блёкаў «Action 8» (спрайт {3:NUM}) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Утрымлiвае некалькі блёкаў «Action 8» (спрайт {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Чытаньне па-за канцом псэўда-спрайту (спрайт {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Чытаньне па-за канцом псэўда-спрайту (спрайт {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}У бягучым наборы базавай ґрафікі адсутнічаюць выявы некаторых аб'ектаў.{}Калі ласка, абнавіце модуль базавай ґрафікі.
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}У выкарыстаным наборы базавай ґрафікі адсутнічаюць некаторыя малюнкі.{}Калі ласка, абнавіце набор малюнкаў.{}Вам можа спатрэбіцца {YELLOW}тэставая вэрсія ґрафічнага набору{WHITE}, таму што ў вас {YELLOW}тэставая вэрсія OpenTTD{WHITE}.
STR_NEWGRF_ERROR_GRM_FAILED :Запытаныя рэсурсы GRF недаступныя (спрайт {3:NUM}) STR_NEWGRF_ERROR_GRM_FAILED :Запытаныя рэсурсы GRF недаступныя (спрайт {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} быў адключаны з-за {2:STRING} STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} быў адключаны з-за {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Недапушчальны/невядомы фармат размяшчэньня спрайтаў (спрайт {3:NUM}) STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Недапушчальны/невядомы фармат размяшчэньня спрайтаў (спрайт {3:NUM})
@@ -3625,8 +3627,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Патр
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Патрабуецца: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Патрабуецца: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends ############ range for requires ends
############ range for produces starts ############ range for produces starts
STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Груз, які чакае перапрацоўкі:
STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK}
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Вырабляе: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Вырабляе: {YELLOW}{STRING}{STRING}
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Вырабляе: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Вырабляе: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
############ range for produces ends ############ range for produces ends
@@ -3907,6 +3910,7 @@ STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} кал
STR_REPLACE_VEHICLES_STOP :{BLACK}Спыніць замену STR_REPLACE_VEHICLES_STOP :{BLACK}Спыніць замену
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Спыніць замену транспарту STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Спыніць замену транспарту
STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Замяняем: {ORANGE}{STRING}
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Пераключэньне паміж вокнамі замены лякаматываў і ваґонаў STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Пераключэньне паміж вокнамі замены лякаматываў і ваґонаў
STR_REPLACE_ENGINES :Лякаматывы STR_REPLACE_ENGINES :Лякаматывы
STR_REPLACE_WAGONS :Ваґоны STR_REPLACE_WAGONS :Ваґоны

View File

@@ -2602,29 +2602,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :Campos
STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Neve STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Neve
STR_LAI_CLEAR_DESCRIPTION_DESERT :Deserto STR_LAI_CLEAR_DESCRIPTION_DESERT :Deserto
STR_LAI_RAIL_DESCRIPTION_TRACK :Trilho de Ferrovia STR_LAI_RAIL_DESCRIPTION_TRACK :Trilho de {STRING}
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Trilho de Ferrovia com sinais normais STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Trilho de {STRING} com sinais normais
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Trilho de Ferrovia com pré-sinais STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Trilho de {STRING} com pré-sinais
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Trilho de Ferrovia com sinais de saída STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Trilho de {STRING} com sinais de saída
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Trilho de Ferrovia com sinais-combo STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Trilho de {STRING} com sinais-combo
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Trilho de Ferrovia com sinais avançados STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Trilho de {STRING} com sinais avançados
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Trilhos de Ferrovia com sinais avançados de mão única STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Trilhos de {STRING} com sinais avançados de mão única
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Trilho de Ferrovia com sinais normais e pré-sinais STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Trilho de {STRING} com sinais normais e pré-sinais
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Trilho de Ferrovia com sinais normais e pré-sinais STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Trilho de {STRING} com sinais normais e pré-sinais
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Trilho de Ferrovia com sinais normais e sinais-combo STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Trilho de {STRING} com sinais normais e sinais-combo
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Trilho de Ferrovia com sinais normais e avançados STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Trilho de {STRING} com sinais normais e avançados
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Trilho de Ferrovia com sinais normais e avançados de mão única STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Trilho de {STRING} com sinais normais e avançados de mão única
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Trilho de Ferrovia com pré-sinais e de saída STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Trilho de {STRING} com pré-sinais e de saída
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Trilho de Ferrovia com pré-sinais e sinais-combo STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Trilho de {STRING} com pré-sinais e sinais-combo
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Trilho de Ferrovia com pré-sinais e sinais avançados STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Trilho de {STRING} com pré-sinais e sinais avançados
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Trilho de Ferrovia com pré-sinais e avançados de mão única STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Trilho de {STRING} com pré-sinais e avançados de mão única
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Trilho de Ferrovia com sinais de saída e sinais-combo STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Trilho de {STRING} com sinais de saída e sinais-combo
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Trilho de Ferrovia com sinais de saída e avançados STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Trilho de {STRING} com sinais de saída e avançados
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Trilho de Ferrovia com sinais de saída e avançados de mão única STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Trilho de {STRING} com sinais de saída e avançados de mão única
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Trilho de Ferrovia com sinais-combo e avançados STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Trilho de {STRING} com sinais-combo e avançados
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Trilho de Ferrovia com sinais-combo e avançados de mão única STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Trilho de {STRING} com sinais-combo e avançados de mão única
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Trilho de Ferrovia com sinais avançados e avançados de mão única STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Trilho de {STRING} com sinais avançados e avançados de mão única
STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Depósito de Ferrovia STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Depósito de {STRING}
STR_LAI_ROAD_DESCRIPTION_ROAD :Rodovia STR_LAI_ROAD_DESCRIPTION_ROAD :Rodovia
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Rodovia iluminada STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Rodovia iluminada
@@ -2688,7 +2688,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :O terreno é pr
STR_ABOUT_OPENTTD :{WHITE}Sobre o OpenTTD... STR_ABOUT_OPENTTD :{WHITE}Sobre o OpenTTD...
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Todos os direitos reservados STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Todos os direitos reservados
STR_ABOUT_VERSION :{BLACK}OpenTTD versão {REV} STR_ABOUT_VERSION :{BLACK}OpenTTD versão {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 A equipe do OpenTTD STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2016 A equipe do OpenTTD
# Save/load game/scenario # Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvar Jogo STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvar Jogo
@@ -2907,6 +2907,8 @@ STR_NEWGRF_ERROR_INVALID_ID :Tentativa de us
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} contém um sprite corrupto. Todos os sprites corruptos serão exibidos como um "?" vermelho STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} contém um sprite corrupto. Todos os sprites corruptos serão exibidos como um "?" vermelho
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contém multiplas entradas de Ação 8 (sprite {3:NUM}) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contém multiplas entradas de Ação 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Leitura após o final do pseudo-sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Leitura após o final do pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Estão faltando alguns sprites na base de gráficos em uso.{}Por favor atualize a base de gráficos
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}O pacote de gráficos base atuais está faltando alguns sprites.{}Favor atualizar o pacote de gráficos base.{}Já que você está usando um {YELLOW}snapshot em desenvolvimento do OpenTTD{WHITE}, você também precisa do {YELLOW}Snapshot do pacote de gráficos base em desenvolvimento{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Recursos GRF requeridos indisponíveis (sprite {3:NUM}) STR_NEWGRF_ERROR_GRM_FAILED :Recursos GRF requeridos indisponíveis (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} foi desativado por {STRING} STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} foi desativado por {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Formato de layout de sprite inválido/desconhecido (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Formato de layout de sprite inválido/desconhecido (sprite {3:NUM})
@@ -3293,8 +3295,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Requer:
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Requer: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Requer: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends ############ range for requires ends
############ range for produces starts ############ range for produces starts
STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Carga aguardando processamento
STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK}
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produz: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produz: {YELLOW}{STRING}{STRING}
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produz: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produz: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
############ range for produces ends ############ range for produces ends
@@ -3555,6 +3558,7 @@ STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} quando
STR_REPLACE_VEHICLES_STOP :{BLACK}Parar Substituição STR_REPLACE_VEHICLES_STOP :{BLACK}Parar Substituição
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Pressione para parar a subsituição do tipo de motor que selecionou à esquerda STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Pressione para parar a subsituição do tipo de motor que selecionou à esquerda
STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Substituindo: {ORANGE}{STRING}
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Troca entre substituir máquinas e substituir vagões STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Troca entre substituir máquinas e substituir vagões
STR_REPLACE_ENGINES :Motores STR_REPLACE_ENGINES :Motores
STR_REPLACE_WAGONS :Vagões STR_REPLACE_WAGONS :Vagões

View File

@@ -2540,29 +2540,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :Поля
STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Заснежена земя STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Заснежена земя
STR_LAI_CLEAR_DESCRIPTION_DESERT :Пустиня STR_LAI_CLEAR_DESCRIPTION_DESERT :Пустиня
STR_LAI_RAIL_DESCRIPTION_TRACK :ЖП път линия STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} линия
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :ЖП път линия с блокиращи сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} линия с блокиращи сигнали
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :ЖП път линия с пре-сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} линия с пре-сигнали
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :ЖП път линия с изходни сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} линия с изходни сигнали
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :ЖП път линия с комбо сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} линия с комбо сигнали
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :ЖП път линия с насочващи сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} линия с насочващи сигнали
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :ЖП път линия с еднопосочни сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} линия с еднопосочни сигнали
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :ЖП път линия с блокиращи и пре-сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} линия с блокиращи и пре-сигнали
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :ЖП път линия с блокиращи и изходни сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} линия с блокиращи и изходни сигнали
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :ЖП път линия с блокиращи и комбо сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} линия с блокиращи и комбо сигнали
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :ЖП път линия с блокиращи и насочващи сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} линия с блокиращи и насочващи сигнали
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :ЖП път линия с блокиращи и еднопосочни сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} линия с блокиращи и еднопосочни сигнали
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :ЖП път линия с пред и изходни сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} линия с пред и изходни сигнали
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :ЖП път линя с пред и комбо сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} линя с пред и комбо сигнали
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :ЖП път линия с пред и насочващи сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} линия с пред и насочващи сигнали
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :ЖП път линия с пред и еднопосочни сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} линия с пред и еднопосочни сигнали
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :ЖП път линия с изходни и комбо сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} линия с изходни и комбо сигнали
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :ЖП път линия с изходни и насочващи сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} линия с изходни и насочващи сигнали
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :ЖП път линия с изходни и еднопосочни сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} линия с изходни и еднопосочни сигнали
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :ЖП път линия с комбо и насочващи сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} линия с комбо и насочващи сигнали
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :ЖП път линия с комбо и еднопосочни сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} линия с комбо и еднопосочни сигнали
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :ЖП път линия с насочващи и еднопосочни сигнали STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} линия с насочващи и еднопосочни сигнали
STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :ЖП път влаково депо STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} влаково депо
STR_LAI_ROAD_DESCRIPTION_ROAD :път STR_LAI_ROAD_DESCRIPTION_ROAD :път
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Асфалтов път с улично осветление STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Асфалтов път с улично осветление
@@ -2626,7 +2626,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Земя, пр
STR_ABOUT_OPENTTD :{WHITE}Относно OpenTTD STR_ABOUT_OPENTTD :{WHITE}Относно OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Авторски права {COPYRIGHT} 1995 Крис Сойер (Chris Sawyer), Всички права са запазени STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Авторски права {COPYRIGHT} 1995 Крис Сойер (Chris Sawyer), Всички права са запазени
STR_ABOUT_VERSION :{BLACK}OpenTTD версия {REV} STR_ABOUT_VERSION :{BLACK}OpenTTD версия {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2017 The OpenTTD team STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2016 The OpenTTD team
# Save/load game/scenario # Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Запази играта STR_SAVELOAD_SAVE_CAPTION :{WHITE}Запази играта
@@ -2776,7 +2776,7 @@ STR_NEWGRF_SETTINGS_INCOMPATIBLE :{G=n}{RED}Не
# NewGRF save preset window # NewGRF save preset window
STR_SAVE_PRESET_TITLE :{BLACK}Въведи име за шаблона STR_SAVE_PRESET_TITLE :{BLACK}Въведи име за шаблона
STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Текущо избраното име за именуване на шаблона STR_SAVE_PRESET_EDITBOX_TOOLTIP :{BLACK}Текущо избраното име за именуване на шаблона
STR_SAVE_PRESET_CANCEL :{BLACK}Отказ STR_SAVE_PRESET_CANCEL :Отказ
STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Не променяй шаблона STR_SAVE_PRESET_CANCEL_TOOLTIP :{BLACK}Не променяй шаблона
STR_SAVE_PRESET_SAVE :{BLACK}Запис STR_SAVE_PRESET_SAVE :{BLACK}Запис
STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Запази шаблона за текущо избраното име STR_SAVE_PRESET_SAVE_TOOLTIP :{BLACK}Запази шаблона за текущо избраното име
@@ -2838,6 +2838,8 @@ STR_NEWGRF_ERROR_INVALID_ID :Опит за
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} съдържа повреден обект. Вскички повредени обекти ще бъдат показани като червена въпросителна (?). STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} съдържа повреден обект. Вскички повредени обекти ще бъдат показани като червена въпросителна (?).
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contains multiple Action 8 entries (sprite {3:NUM}) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Contains multiple Action 8 entries (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Read past end of pseudo-sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Read past end of pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Текущите основни графики имат празни картинки.{}Моля обновете си основните графики.
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Текущо използвания графичен сет има липсващи спрайтове.{}Моля обновете графичния сет.{}Тъй като играете {YELLOW}версия на OpenTTD в процес на разработка{WHITE}, може да се нуждаете и от {YELLOW}версията на графичния сет, която е в разработка{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Изискваните GRF resources не са на разположение (sprite {3:NUM}) STR_NEWGRF_ERROR_GRM_FAILED :Изискваните GRF resources не са на разположение (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} беше изключено от {2:STRING} STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} беше изключено от {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Invalid/unknown sprite layout format (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Invalid/unknown sprite layout format (sprite {3:NUM})
@@ -3214,8 +3216,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Нужд
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Нуждае се от: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Нуждае се от: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends ############ range for requires ends
############ range for produces starts ############ range for produces starts
STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Товар чакащ до бъде преработен:
STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK}
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Произвежда: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Произвежда: {YELLOW}{STRING}{STRING}
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Произвежда: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Произвежда: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
############ range for produces ends ############ range for produces ends
@@ -3474,6 +3477,7 @@ STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} ког
STR_REPLACE_VEHICLES_STOP :{BLACK}Спиране на замяната STR_REPLACE_VEHICLES_STOP :{BLACK}Спиране на замяната
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Натиснете за спиране подновяването на избрания в ляво двигател STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Натиснете за спиране подновяването на избрания в ляво двигател
STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Замяна: {ORANGE}{STRING}
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Превключване между замяна на локомотиви и вагони STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Превключване между замяна на локомотиви и вагони
STR_REPLACE_ENGINES :Двигатели STR_REPLACE_ENGINES :Двигатели
STR_REPLACE_WAGONS :Вагони STR_REPLACE_WAGONS :Вагони

View File

@@ -975,7 +975,7 @@ STR_GAME_OPTIONS_LANGUAGE :{BLACK}Idioma
STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Selecciona l'idioma de la interfície STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Selecciona l'idioma de la interfície
STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Pantalla completa STR_GAME_OPTIONS_FULLSCREEN :{BLACK}Pantalla completa
STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Marqueu la casella per mostrar l'OpenTTD a pantalla completa. STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Marca la casella per tenir l'OpenTTD en pantalla completa
STR_GAME_OPTIONS_RESOLUTION :{BLACK}Resolució de pantalla STR_GAME_OPTIONS_RESOLUTION :{BLACK}Resolució de pantalla
STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Selecciona la resolució de pantalla STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Selecciona la resolució de pantalla
@@ -1119,9 +1119,9 @@ STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Paràmetres de
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Paràmetres de la partida (emmagatzemats a la partida actual; només afecten la partida actual) STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Paràmetres de la partida (emmagatzemats a la partida actual; només afecten la partida actual)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Paràmetres de la companyia (emmagatzemats a les partides desades; només afectaran les partides noves) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_MENU :Paràmetres de la companyia (emmagatzemats a les partides desades; només afectaran les partides noves)
STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Paràmetres de la companyia (emmagatzemats a la partida actual; només afecten la companyia actual) STR_CONFIG_SETTING_TYPE_DROPDOWN_COMPANY_INGAME :Paràmetres de la companyia (emmagatzemats a la partida actual; només afecten la companyia actual)
STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Mostra tots els resultats establint {SILVER}«Categoria» {BLACK}a {WHITE}«{STRING}»{BLACK}. STR_CONFIG_SETTING_CATEGORY_HIDES :{BLACK}Mostra tots els resultats de la cerca filtrada de {WHITE}{STRING}
STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Mostrar tots els resultats de la cerca filtrada amb {WHITE}tots els tipus de paràmetres STR_CONFIG_SETTING_TYPE_HIDES :{BLACK}Mostrar tots els resultats de la cerca filtrada amb {WHITE}tots els tipus de paràmetres
STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Mostra tots els resultats de la cerca establint {SILVER}«Categoria» {BLACK}a {WHITE}«{STRING}» {BLACK}i {SILVER}«Tipus» {BLACK}a {WHITE}«Tots els paràmetres»{BLACK}. STR_CONFIG_SETTING_CATEGORY_AND_TYPE_HIDES :{BLACK}Mostra tots els resultats de la cerca filtrada de {WHITE}{STRING} {BLACK}i {WHITE}tots els tipus d'ajustaments
STR_CONFIG_SETTINGS_NONE :{WHITE}- Cap - STR_CONFIG_SETTINGS_NONE :{WHITE}- Cap -
STR_CONFIG_SETTING_OFF :Inactiu STR_CONFIG_SETTING_OFF :Inactiu
@@ -1129,8 +1129,8 @@ STR_CONFIG_SETTING_ON :Actiu
STR_CONFIG_SETTING_DISABLED :Desactivat STR_CONFIG_SETTING_DISABLED :Desactivat
STR_CONFIG_SETTING_COMPANIES_OFF :Inactiu STR_CONFIG_SETTING_COMPANIES_OFF :Inactiu
STR_CONFIG_SETTING_COMPANIES_OWN :Només de la companyia pròpia STR_CONFIG_SETTING_COMPANIES_OWN :Pròpia companyia
STR_CONFIG_SETTING_COMPANIES_ALL :De totes les companyies STR_CONFIG_SETTING_COMPANIES_ALL :Totes les companyies
STR_CONFIG_SETTING_NONE :Cap STR_CONFIG_SETTING_NONE :Cap
STR_CONFIG_SETTING_ORIGINAL :Original STR_CONFIG_SETTING_ORIGINAL :Original
@@ -1160,16 +1160,16 @@ STR_CONFIG_SETTING_TRAIN_REVERSING :No permetis que
STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Si està actiu, els trens no canviaran de sentit a les estacions no-finals, inclús si hi ha un camí més curt al seu proper destí en cas de canviar de sentit. STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Si està actiu, els trens no canviaran de sentit a les estacions no-finals, inclús si hi ha un camí més curt al seu proper destí en cas de canviar de sentit.
STR_CONFIG_SETTING_DISASTERS :Catàstrofes: {STRING} STR_CONFIG_SETTING_DISASTERS :Catàstrofes: {STRING}
STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Permet o no que passin catàstrofes que puguin bloquejar o destruir ocasionalment vehicles o infraestructures STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Permet o no que passin catàstrofes que puguin bloquejar o destruir ocasionalment vehicles o infraestructures
STR_CONFIG_SETTING_CITY_APPROVAL :Actitud de l'alcaldia de la població enfront les reestructuracions a la zona: {STRING} STR_CONFIG_SETTING_CITY_APPROVAL :Actitud de l'alcaldia de la població davant de reestructuracions a la zona: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Establiu com afecta al prestigi de les companyies el soroll i els danys ambientals que provoquen. Aquest prestigi influirà en la futura acceptació o denegació d'accions de construcció a la zona. STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Estableix quin nivell de soroll i de danys ambientals fets per les companyies afecten al seu prestigi davant de la població i futures accions de construcció a la zona
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Alçada màxima del mapa: {STRING} STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Alçada màxima del mapa: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Estableix l'alçada màxima permesa del terreny en el mapa STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Estableix l'alçada màxima permesa del terreny en el mapa
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}No es pot escollir aquesta alçada màxima del mapa: hi ha alguna zona del mapa actual que és més alta. STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}No es pot escollir aquesta alçada màxima del mapa: hi ha alguna zona del mapa actual que és més alta.
STR_CONFIG_SETTING_AUTOSLOPE :Permet la modificació del terreny sota edificis, rails, etc.: {STRING} STR_CONFIG_SETTING_AUTOSLOPE :Permet la modificació del terreny sota edificis, rails, etc.: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permet modelar el terreny sota les vies, els edificis i altres elements sense eliminar-los. STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permet modelar el terreny sota edificis i rails, sense eliminar-los
STR_CONFIG_SETTING_CATCHMENT :Estableix una mida més real de l'àrea d'influència: {STRING} STR_CONFIG_SETTING_CATCHMENT :Estableix una mida més real de l'àrea d'influència: {STRING}
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Permet tenir diferents mides de zones de captació de càrrega per diferents tipus d'estacions (aeroports, estacions de tren, etc.). STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Permet tenir diferents mides de zones de captació per a diferents tipus d'estacions i aeroports
STR_CONFIG_SETTING_EXTRADYNAMITE :Permet l'esborrat de carreteres, ponts i túnels propietat de les poblacions: {STRING} STR_CONFIG_SETTING_EXTRADYNAMITE :Permet l'esborrat de carreteres, ponts i túnels propietat de les poblacions: {STRING}
STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Aquesta opció permet fer més fàcil l'esborrat d'infraestructures i construccions propietat de la població STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Aquesta opció permet fer més fàcil l'esborrat d'infraestructures i construccions propietat de la població
STR_CONFIG_SETTING_TRAIN_LENGTH :Longitud màxima dels trens: {STRING} STR_CONFIG_SETTING_TRAIN_LENGTH :Longitud màxima dels trens: {STRING}
@@ -1214,7 +1214,7 @@ STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :Al costat de co
STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :A la dreta STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :A la dreta
STR_CONFIG_SETTING_SHOWFINANCES :Mostra la finestra de balanç al finalitzar cada any: {STRING} STR_CONFIG_SETTING_SHOWFINANCES :Mostra la finestra de balanç al finalitzar cada any: {STRING}
STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Si el paràmetre està activat, la finestra de finances apareix al final de cada any per permetre una inspecció fàcil de l'estat financer de la companyia. STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Si el paràmetre està activat, la finestra de finances apareix al final de cada any per permetre una inspecció fàcil de l'estat financer de la companyia.
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :«Sense parada» per defecte a les ordres noves: {STRING} STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :«Sense parada» per defecte a les noves ordres : {STRING}
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalment, un vehicle para a cada estació per la que passa. Activant aquest paràmetre, no pararà a cap estació fins arribar al seu destí. Nota: aquest paràmetre només defineix el valor predeterminat per a les noves ordres. Un cop creada una ordre, aquesta es pot establir manualment al comportament desitjat. STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalment, un vehicle para a cada estació per la que passa. Activant aquest paràmetre, no pararà a cap estació fins arribar al seu destí. Nota: aquest paràmetre només defineix el valor predeterminat per a les noves ordres. Un cop creada una ordre, aquesta es pot establir manualment al comportament desitjat.
STR_CONFIG_SETTING_STOP_LOCATION :Noves ordres de trens: parar per defecte {STRING} de la plataforma STR_CONFIG_SETTING_STOP_LOCATION :Noves ordres de trens: parar per defecte {STRING} de la plataforma
STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Estableix en quin lloc de la plataforma els trens pararan per defecte. «Extrem més proper» significa a prop del punt d'entrada, «Al mig» significa al mig de la plataforma, i «Extrem més llunyà» significa lluny del punt d'entrada. Nota: aquest paràmetre només defineix el valor predeterminat per les noves ordres. Un cop creada una ordre, es pot modificar el comportament de forma manual. STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Estableix en quin lloc de la plataforma els trens pararan per defecte. «Extrem més proper» significa a prop del punt d'entrada, «Al mig» significa al mig de la plataforma, i «Extrem més llunyà» significa lluny del punt d'entrada. Nota: aquest paràmetre només defineix el valor predeterminat per les noves ordres. Un cop creada una ordre, es pot modificar el comportament de forma manual.
@@ -1222,7 +1222,7 @@ STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :A l'extrem més
STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :Al mig STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :Al mig
STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :A l'extrem més llunyà STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :A l'extrem més llunyà
STR_CONFIG_SETTING_AUTOSCROLL :Desplaça la finestra quan el ratolí sigui prop de la vora: {STRING} STR_CONFIG_SETTING_AUTOSCROLL :Desplaça la finestra quan el ratolí sigui prop de la vora: {STRING}
STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Si s'activa aquesta opció, l'àrea de visualització començarà a desplaçar-se quan el ratolí sigui prop de la vora de la finestra. STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :Quan està activat, l'àrea de visualització començarà a desplaçar-se quan el ratolí sigui prop de la vora de la finestra.
STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Desactivat STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Desactivat
STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Vista principal (només pantalla completa) STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Vista principal (només pantalla completa)
STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Vista principal STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Vista principal
@@ -1385,12 +1385,12 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Posa en pausa automàticament quan comenci una nova partida: {STRING} STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Posa en pausa automàticament quan comenci una nova partida: {STRING}
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Quan està activat, el joc es posa en pausa automàticament quan es comenci una partida nova, permetent a l'usuari estudiar el mapa més detalladament STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Quan està activat, el joc es posa en pausa automàticament quan es comenci una partida nova, permetent a l'usuari estudiar el mapa més detalladament
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Accions permeses mentre s'està fent una pausa a la partida: {STRING} STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Quan s'estigui en pausa permet: {STRING}
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Seleccioneu quines accions es poden realitzar mentre s'està fent una pausa a la partida. STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Selecciona quines accions poden fer-se quan la partida està en pausa
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Cap STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Sense accions
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Totes, excepte les de construcció STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Totes les accions no-constructores
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Totes, excepte les que modifiquen el paisatge STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Tot menys les accions modificadores del paisatge
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Totes STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_ACTIONS :Totes les accions
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Mostra els grups en el llistat de vehicles de la companyia: {STRING} STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Mostra els grups en el llistat de vehicles de la companyia: {STRING}
STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Activa la utilització de llistes avançades de vehicles per agrupar vehicles. STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Activa la utilització de llistes avançades de vehicles per agrupar vehicles.
STR_CONFIG_SETTING_LOADING_INDICATORS :Utilitza indicadors de càrrega: {STRING} STR_CONFIG_SETTING_LOADING_INDICATORS :Utilitza indicadors de càrrega: {STRING}
@@ -1407,7 +1407,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :El més antic d
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :El més modern disponible STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :El més modern disponible
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :El més utilitzat disponible STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :El més utilitzat disponible
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Mostra els camins reservats: {STRING} STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Mostra els camins reservats: {STRING}
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Dóna a les vies reservades un color diferent per visualitzar problemes d'encaminament de trens STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Dóna a les vies reservades un color diferent per ajudar en problemes de trens que refusen entrar en blocs basats en camí
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Mantingues les eines de construcció actives després del seu ús: {STRING} STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Mantingues les eines de construcció actives després del seu ús: {STRING}
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Mantingues les eines de construcció pels ponts, túnels, etc. obertes després d'utilitzar-les STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Mantingues les eines de construcció pels ponts, túnels, etc. obertes després d'utilitzar-les
STR_CONFIG_SETTING_EXPENSES_LAYOUT :Agrupa les despeses a la finestra de finances de la companyia: {STRING} STR_CONFIG_SETTING_EXPENSES_LAYOUT :Agrupa les despeses a la finestra de finances de la companyia: {STRING}
@@ -1516,7 +1516,7 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Resum
STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Complet STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Complet
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Les notícies en color apareixen el: {STRING} STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Les notícies en color apareixen el: {STRING}
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Any en què els diaris comencen a fer anuncis en color. Abans d'aquest any, imprimiran en blanc i negre. STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Any en què els diaris comencen a fer els anunciaments impresos en color. Abans d'aquest any, s'utilitza el blanc i negre
STR_CONFIG_SETTING_STARTING_YEAR :Any d'inici: {STRING} STR_CONFIG_SETTING_STARTING_YEAR :Any d'inici: {STRING}
STR_CONFIG_SETTING_SMOOTH_ECONOMY :Activa economia suau (més canvis però més petits): {STRING} STR_CONFIG_SETTING_SMOOTH_ECONOMY :Activa economia suau (més canvis però més petits): {STRING}
STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Quan està activat, els canvis de producció de la indústria són més habituals, i en passos més petits. Aquest paràmetre usualment no té efecte, si el tipus d'indústria estan proveïts per un NewGRF STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Quan està activat, els canvis de producció de la indústria són més habituals, i en passos més petits. Aquest paràmetre usualment no té efecte, si el tipus d'indústria estan proveïts per un NewGRF
@@ -1603,7 +1603,7 @@ STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Proporció de p
STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 de cada {COMMA} STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 de cada {COMMA}
STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Cap STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Cap
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicador de mida inicial de ciutats: {STRING} STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicador de mida inicial de ciutats: {STRING}
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :La grandària mitjana de les ciutats en relació als pobles a l'inici de la partida. STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :La grandària mitjana de les ciutats en relació als pobles a l'inici de la partida
STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Actualitza el graf de distribució cada {STRING}{NBSP}di{P 0:2 a es} STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Actualitza el graf de distribució cada {STRING}{NBSP}di{P 0:2 a es}
STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Temps entre recàlculs successius del graf de distribució. Cada recàlcul calcula els plans per un component del graf. Això significa que un valor X per aquest paràmetre no implica que tot el graf serà actualitzat cada X dies. Només alguns components ho seran. Com més curt el valor, més temps de processador es requerirà per calcular-ho. Com més llarg, més temps passarà fins que la distribució de càrregues comenci en noves rutes. STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Temps entre recàlculs successius del graf de distribució. Cada recàlcul calcula els plans per un component del graf. Això significa que un valor X per aquest paràmetre no implica que tot el graf serà actualitzat cada X dies. Només alguns components ho seran. Com més curt el valor, més temps de processador es requerirà per calcular-ho. Com més llarg, més temps passarà fins que la distribució de càrregues comenci en noves rutes.
@@ -1760,14 +1760,13 @@ STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Mostra l
STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Mostra la configuració de les extensions NewGRF STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Mostra la configuració de les extensions NewGRF
STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Comprova si hi ha continguts nous i actualitzats per a descarregar STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Comprova si hi ha continguts nous i actualitzats per a descarregar
STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Mostra els paràmetres de les IA/Script de la partida STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Mostra els paràmetres de les IA/Script de la partida
STR_INTRO_TOOLTIP_QUIT :{BLACK}Surt de l'OpenTTD. STR_INTRO_TOOLTIP_QUIT :{BLACK}Surt d'OpenTTD
STR_INTRO_BASESET :{WHITE}Al joc de gràfics base seleccionat li falten {NUM} sprite{P "" s}.{}Si us plau, comproveu-ne si hi ha actualitzacions disponibles. STR_INTRO_TRANSLATION :{BLACK}A aquesta traducció li falten {NUM} caden{P a es}. Si us plau ajuda a fer millor OpenTTD unint-te com a traductor. Veure readme.txt per més detalls.
STR_INTRO_TRANSLATION :{BLACK}A aquesta traducció li falten {NUM} caden{P a es}. Si us plau, ajudeu a fer millor l'OpenTTD unint-vos com a traductor. Vegeu el fitxer readme.txt per més detalls.
# Quit window # Quit window
STR_QUIT_CAPTION :{WHITE}Surt STR_QUIT_CAPTION :{WHITE}Surt
STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Esteu segur que voleu abandonar aquesta partida i tornar a {STRING}? STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Estàs segur que vols abandonar aquesta partida i tornar a {STRING}?
STR_QUIT_YES :{BLACK}Sí STR_QUIT_YES :{BLACK}Sí
STR_QUIT_NO :{BLACK}No STR_QUIT_NO :{BLACK}No
@@ -1861,7 +1860,7 @@ STR_FACE_SIMPLE :{BLACK}Simple
STR_FACE_SIMPLE_TOOLTIP :{BLACK}Selecció de cara simple STR_FACE_SIMPLE_TOOLTIP :{BLACK}Selecció de cara simple
STR_FACE_LOAD :{BLACK}Carrega STR_FACE_LOAD :{BLACK}Carrega
STR_FACE_LOAD_TOOLTIP :{BLACK}Carrega la cara preferida STR_FACE_LOAD_TOOLTIP :{BLACK}Carrega la cara preferida
STR_FACE_LOAD_DONE :{WHITE}S'ha carregat la cara personalitzada des de l'arxiu de configuració de l'OpenTTD. STR_FACE_LOAD_DONE :{WHITE}S'ha carregat la cara personalitzada des de l'arxiu de configuració de l'OpenTTD
STR_FACE_FACECODE :{BLACK}Número de la cara STR_FACE_FACECODE :{BLACK}Número de la cara
STR_FACE_FACECODE_TOOLTIP :{BLACK}Veure i/o assigna el número de la cara del president STR_FACE_FACECODE_TOOLTIP :{BLACK}Veure i/o assigna el número de la cara del president
STR_FACE_FACECODE_CAPTION :{WHITE}Veure i/o assigna el número de la cara del president STR_FACE_FACECODE_CAPTION :{WHITE}Veure i/o assigna el número de la cara del president
@@ -1869,7 +1868,7 @@ STR_FACE_FACECODE_SET :{WHITE}El núme
STR_FACE_FACECODE_ERR :{WHITE}No s'ha pogut assignar el número de cara del president - ha de ser un nombre entre 0 i 4,294,967,295! STR_FACE_FACECODE_ERR :{WHITE}No s'ha pogut assignar el número de cara del president - ha de ser un nombre entre 0 i 4,294,967,295!
STR_FACE_SAVE :{BLACK}Desa STR_FACE_SAVE :{BLACK}Desa
STR_FACE_SAVE_TOOLTIP :{BLACK}Desa la cara preferida STR_FACE_SAVE_TOOLTIP :{BLACK}Desa la cara preferida
STR_FACE_SAVE_DONE :{WHITE}Es desarà aquesta cara personalitzada a l'arxiu de configuració de l'OpenTTD. STR_FACE_SAVE_DONE :{WHITE}Es desarà aquesta cara personalitzada a l'arxiu de configuració de l'OpenTTD
STR_FACE_EUROPEAN :{BLACK}Europea STR_FACE_EUROPEAN :{BLACK}Europea
STR_FACE_SELECT_EUROPEAN :{BLACK}Selecciona cares europees STR_FACE_SELECT_EUROPEAN :{BLACK}Selecciona cares europees
STR_FACE_AFRICAN :{BLACK}Africana STR_FACE_AFRICAN :{BLACK}Africana
@@ -2207,9 +2206,9 @@ STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Marca to
STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Deselecciona tot STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Deselecciona tot
STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marca tots els continguts a no ser descarregats STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Marca tots els continguts a no ser descarregats
STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Cerca en webs externes STR_CONTENT_SEARCH_EXTERNAL :{BLACK}Cerca en webs externes
STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Cerca contingut no disponible al servei de continguts de l'OpenTTD en webs no associades. STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Cerca contingut no disponible al servei de continguts d'OpenTTD en webs no associades amb OpenTTD
STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Esteu sortint de l'OpenTTD. STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Estàs sortint de l'OpenTTD!
STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Els termes i condicions per descarregar contingut des de webs externes varia.{}Haureu d'adreçar-vos a les webs externes per trobar instruccions sobre com instal·lar contingut a l'OpenTTD.{}Voleu continuar? STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Els termes i condicions per descarregar contingut des de webs externes varia.{}Hauràs d'adreçar-te a les webs externes per trobar instruccions sobre com instal·lar contingut a OpenTTD.{}Vols continuar?
STR_CONTENT_FILTER_TITLE :{BLACK}Marca/anomena filtre: STR_CONTENT_FILTER_TITLE :{BLACK}Marca/anomena filtre:
STR_CONTENT_OPEN_URL :{BLACK}Visita la web STR_CONTENT_OPEN_URL :{BLACK}Visita la web
STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Visita la web per accedir a aquest contingut STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Visita la web per accedir a aquest contingut
@@ -2262,9 +2261,9 @@ STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... no e
STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}No s'han pogut descomprimir els arxius descarregats STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}No s'han pogut descomprimir els arxius descarregats
STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Gràfics que falten STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Gràfics que falten
STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}L'OpenTTD necessita gràfics per funcionar, però no se n'han trobat. Voleu permetre a l'OpenTTD descarregar i instal·lar aquests gràfics? STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD necessita gràfics per funcionar però no se n'ha trobat cap. Vols permetre a OpenTTD descarregar i instal·lar aquests gràfics?
STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Sí, descarregar els gràfics STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Sí, descarregar els gràfics
STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}No, surt de l'OpenTTD. STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}No, surt d'OpenTTD
# Transparency settings window # Transparency settings window
STR_TRANSPARENCY_CAPTION :{WHITE}Opcions de transparència STR_TRANSPARENCY_CAPTION :{WHITE}Opcions de transparència
@@ -2591,7 +2590,6 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Nom de l
STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Càrrega acceptada: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Càrrega acceptada: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Tipus de via: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Límit de velocitat de la via: {LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Límit de velocitat de la via: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Límit de velocitat de la carretera: {LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Límit de velocitat de la carretera: {LTBLUE}{VELOCITY}
@@ -2604,29 +2602,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :Camps de conreu
STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Terreny nevat STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Terreny nevat
STR_LAI_CLEAR_DESCRIPTION_DESERT :Desert STR_LAI_CLEAR_DESCRIPTION_DESERT :Desert
STR_LAI_RAIL_DESCRIPTION_TRACK :Via ferroviària STR_LAI_RAIL_DESCRIPTION_TRACK :Via de {STRING}
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Via ferroviària amb senyals de secció STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} via amb senyals de bloc
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Via ferroviària amb senyals d'entrada STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} via amb pre-senyals
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Via ferroviària amb senyals de sortida STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} via amb senyals de sortida
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Via ferroviària amb senyals combinats STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} via amb senyals combinats
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Ferrocarril via amb senyals de ruta STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} via amb senyals de camí
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Via ferroviària amb senyals de ruta d'un sentit STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} via amb senyals de camí d'un sentit
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Via ferroviària amb senyals de secció i d'entrada STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING}via amb senyals de bloc i pre-senyals
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Via ferroviària amb senyals de secció i de sortida STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} via amb senyals de bloc i de sortida
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Via ferroviària amb senyals de secció i combinats STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} via amb senyals de bloc i combinats
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Via ferroviària amb senyals de secció i de ruta STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} via amb senyals de bloc i de camí
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Via ferroviària amb senyals de secció i de ruta d'un sentit STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} via amb senyals de bloc i de camí d'un sentit
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Via ferroviària amb senyals d'entrada i de sortida STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} via amb pre-senyals i senyals de sortida
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Via ferroviària amb senyals d'entrada i combinats STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} via amb pre-senyals i senyals combinats
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Via ferroviària amb senyals d'entrada i senyals de ruta STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} via amb pre-senyals i senyals de camí
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Via ferroviària amb senyals d'entrada i de ruta d'un sentit STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} via amb pre-senyals i senyals de camí d'un sentit
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Via ferroviària amb senyals combinats i de sortida STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} via amb senyals de sortida i combinats
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Via ferroviària amb senyals de sortida i de ruta STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} via amb senyals de sortida i de camí
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Via ferroviària amb senyals de sortida i de ruta d'un sentit STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} via amb senyals de sortida i de camí d'un sentit
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Via ferroviària amb senyals combinats i de ruta STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} via amb senyals combinats i de camí
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Via ferroviària amb senyals combinats i de ruta d'un sentit STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} via amb senyals combinats i de camí d'un sentit
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Via ferroviària amb senyals de ruta i de ruta d'un sentit STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} via amb senyals de camí i de camí d'un sentit
STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Cotxeres de vehicles ferroviaris STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} cotxeres de tren
STR_LAI_ROAD_DESCRIPTION_ROAD :Carretera STR_LAI_ROAD_DESCRIPTION_ROAD :Carretera
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Carretera amb fanals STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Carretera amb fanals
@@ -2689,8 +2687,8 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :terreny propiet
# About OpenTTD window # About OpenTTD window
STR_ABOUT_OPENTTD :{WHITE}Quant a l'OpenTTD STR_ABOUT_OPENTTD :{WHITE}Quant a l'OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer. Tots els drets reservats. STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer. Tots els drets reservats.
STR_ABOUT_VERSION :{BLACK}Versió {REV} de l'OpenTTD STR_ABOUT_VERSION :{BLACK}OpenTTD versió {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 L'equip de l'OpenTTD STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2016 L'equip de l'OpenTTD
# Save/load game/scenario # Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Desa la Partida STR_SAVELOAD_SAVE_CAPTION :{WHITE}Desa la Partida
@@ -2836,7 +2834,7 @@ STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Paràmet
STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}No hi ha informació disponible STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}No hi ha informació disponible
STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}No s'ha trobat cap arxiu coincident STR_NEWGRF_SETTINGS_NOT_FOUND :{RED}No s'ha trobat cap arxiu coincident
STR_NEWGRF_SETTINGS_DISABLED :{RED}Desactivat STR_NEWGRF_SETTINGS_DISABLED :{RED}Desactivat
STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Versió incompatible amb aquesta versió de l'OpenTTD. STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Versió incompatible amb aquesta versió de OpenTTD
# NewGRF save preset window # NewGRF save preset window
STR_SAVE_PRESET_CAPTION :{WHITE}Guardar configuració NewGRF STR_SAVE_PRESET_CAPTION :{WHITE}Guardar configuració NewGRF
@@ -2909,13 +2907,15 @@ STR_NEWGRF_ERROR_INVALID_ID :Intent d'utilit
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} conté un sprite corrupte. Tots els sprites corruptes seran mostrats amb un interrogant vermell (?) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} conté un sprite corrupte. Tots els sprites corruptes seran mostrats amb un interrogant vermell (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Conté múltiples entrades d'acció 8 (sprite {3:NUM}) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Conté múltiples entrades d'acció 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :S'ha llegit després del final d'un pseudo-sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :S'ha llegit després del final d'un pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Al joc de gràfics base establert actualment li falten un nombre de sprites.{}Si us plau, actualitzeu el joc de gràfics base.
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Als gràfics base actualment utilitzats els hi falta un nombre de sprites.{}Si us plau, actualitzeu el conjunt de gràfics base.{}Com que esteu jugant amb una {YELLOW}versió de desenvolupament de l'OpenTTD{WHITE}, pot ser que necessiteu una {YELLOW}versió de desenvolupament dels gràfics base{WHITE}.
STR_NEWGRF_ERROR_GRM_FAILED :Els recursos GRF demanats no estan disponibles (sprite {3:NUM}) STR_NEWGRF_ERROR_GRM_FAILED :Els recursos GRF demanats no estan disponibles (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} ha estat desactivat per {STRING} STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} ha estat desactivat per {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Format de disposició de sprite no vàlid o desconegut (sprite {3:NUM}). STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Format de disposició de sprite no vàlid o desconegut (sprite {3:NUM}).
# NewGRF related 'general' warnings # NewGRF related 'general' warnings
STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Alerta! STR_NEWGRF_POPUP_CAUTION_CAPTION :{WHITE}Alerta!
STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Esteu a punt de fer canvis en una partida activa que poden fer que l'OpenTTD falli. No envieu cap informe d'error produït després d'efectuar aquests canvis crítics.{}Esteu completament segur que voleu fer-los? STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Esteu a punt de fer canvis en una partida activa. Això pot fer que l'OpenTTD falli. No envieu cap informe d'error sobre això.{}Esteu completament segur que voleu fer-los?
STR_NEWGRF_DUPLICATE_GRFID :{WHITE}No es pot afegir l'arxiu: ID GRF duplicada STR_NEWGRF_DUPLICATE_GRFID :{WHITE}No es pot afegir l'arxiu: ID GRF duplicada
STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}No s'ha trobat un arxiu coincident (els GRF compatibles s'han carregat) STR_NEWGRF_COMPATIBLE_LOADED :{ORANGE}No s'ha trobat un arxiu coincident (els GRF compatibles s'han carregat)
@@ -2937,7 +2937,7 @@ STR_NEWGRF_BROKEN :{WHITE}El compo
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Un vehicle '{1:ENGINE}' ha canviat el seu estat de vagó amb potència mentre estava fora de la cotxera STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}Un vehicle '{1:ENGINE}' ha canviat el seu estat de vagó amb potència mentre estava fora de la cotxera
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Un vehicle '{1:ENGINE}' ha canviat la seva llargada mentre estava fora del dipòsit STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}Un vehicle '{1:ENGINE}' ha canviat la seva llargada mentre estava fora del dipòsit
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Un vehicle '{1:ENGINE}' ha canviat la seva capacitat mentre estava fora del dipòsit o no s'estava canviant el tipus de càrrega a transportar STR_NEWGRF_BROKEN_CAPACITY :{WHITE}Un vehicle '{1:ENGINE}' ha canviat la seva capacitat mentre estava fora del dipòsit o no s'estava canviant el tipus de càrrega a transportar
STR_BROKEN_VEHICLE_LENGTH :{WHITE}El tren «{VEHICLE}» propietat de «{COMPANY}» té una llargada invàlida, probablement a causa de problemes amb els NewGRF. La partida podria dessincronitzar-se o fallar. STR_BROKEN_VEHICLE_LENGTH :{WHITE}El tren '{VEHICLE}' de '{COMPANY}' té una llargada invàlida, probablement a causa de problemes amb els NewGRF. La partida podria dessincronitzar-se o fallar.
STR_NEWGRF_BUGGY :{WHITE}El NewGRF '{0:STRING}' està donant informació incorrecta STR_NEWGRF_BUGGY :{WHITE}El NewGRF '{0:STRING}' està donant informació incorrecta
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}La informació de càrrega/remodelació per '{1:ENGINE}' no encaixa amb la llista de compres després de la construcció. Això podria causar un mal funcionament de autorenova/-substitueix STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}La informació de càrrega/remodelació per '{1:ENGINE}' no encaixa amb la llista de compres després de la construcció. Això podria causar un mal funcionament de autorenova/-substitueix
@@ -3295,13 +3295,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Necessit
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Necessita: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Necessita: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends ############ range for requires ends
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Necessita
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}esperant
STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
############ range for produces starts ############ range for produces starts
STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Càrrega en espera de ser processada:
STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK}
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produeix: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produeix: {YELLOW}{STRING}{STRING}
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produeix: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produeix: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
############ range for produces ends ############ range for produces ends
@@ -3396,7 +3392,7 @@ STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Capacita
STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Vagons Automotrius: {GOLD}+{POWER}{BLACK} Pes: {GOLD}+{WEIGHT_SHORT} STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Vagons Automotrius: {GOLD}+{POWER}{BLACK} Pes: {GOLD}+{WEIGHT_SHORT}
STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Remodelable a: {GOLD}{STRING} STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Remodelable a: {GOLD}{STRING}
STR_PURCHASE_INFO_ALL_TYPES :Totes les càrregues STR_PURCHASE_INFO_ALL_TYPES :Totes les càrregues
STR_PURCHASE_INFO_ALL_BUT :Qualsevol excepte {CARGO_LIST} STR_PURCHASE_INFO_ALL_BUT :Tots menys {CARGO_LIST}
STR_PURCHASE_INFO_MAX_TE :{BLACK}Esforç de tracció màxim: {GOLD}{FORCE} STR_PURCHASE_INFO_MAX_TE :{BLACK}Esforç de tracció màxim: {GOLD}{FORCE}
STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Abast: {GOLD}{COMMA} cel·les STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Abast: {GOLD}{COMMA} cel·les
@@ -3562,10 +3558,10 @@ STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} quan s
STR_REPLACE_VEHICLES_STOP :{BLACK}Para de substituir STR_REPLACE_VEHICLES_STOP :{BLACK}Para de substituir
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Prem per aturar el reemplaçament del model seleccionat a l'esquerra STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Prem per aturar el reemplaçament del model seleccionat a l'esquerra
STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Substituint: {ORANGE}{STRING}
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Canvia entre finestres de substitució de vagons i de motors STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Canvia entre finestres de substitució de vagons i de motors
STR_REPLACE_ENGINES :Motors STR_REPLACE_ENGINES :Motors
STR_REPLACE_WAGONS :Vagons STR_REPLACE_WAGONS :Vagons
STR_REPLACE_ALL_RAILTYPE :Tots els vehicles ferroviaris
STR_REPLACE_HELP_RAILTYPE :{BLACK}Tria el tipus de via dels models de vehicle que vols substituir STR_REPLACE_HELP_RAILTYPE :{BLACK}Tria el tipus de via dels models de vehicle que vols substituir
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Mostra quin model dels seleccionats a l'esquerra es substitueix, si n'hi ha STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Mostra quin model dels seleccionats a l'esquerra es substitueix, si n'hi ha
@@ -3888,7 +3884,7 @@ STR_ORDER_CONDITIONAL_UNCONDITIONAL :salta a l'ordre
STR_ORDER_CONDITIONAL_NUM :Salta a l'ordre {COMMA} quan {STRING} {STRING} {COMMA} STR_ORDER_CONDITIONAL_NUM :Salta a l'ordre {COMMA} quan {STRING} {STRING} {COMMA}
STR_ORDER_CONDITIONAL_TRUE_FALSE :Salta a l'ordre {COMMA} quan {STRING} {STRING} STR_ORDER_CONDITIONAL_TRUE_FALSE :Salta a l'ordre {COMMA} quan {STRING} {STRING}
STR_INVALID_ORDER :{RED} (Ordre incorrecta) STR_INVALID_ORDER :{RED} (Ordre incorrecte)
# Time table window # Time table window
STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Horari) STR_TIMETABLE_TITLE :{WHITE}{VEHICLE} (Horari)

View File

@@ -1857,7 +1857,6 @@ STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Provjeri
STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Prikaži postavke UI-ja/Skripte igre STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Prikaži postavke UI-ja/Skripte igre
STR_INTRO_TOOLTIP_QUIT :{BLACK}Izzađi it 'OpenTTD'-a STR_INTRO_TOOLTIP_QUIT :{BLACK}Izzađi it 'OpenTTD'-a
STR_INTRO_BASESET :{BLACK}Trenutno odabranom osnovnom grafičkom setu nedostaje {NUM} sprite{P "" a a}. Potražite nadogradnju grafičkog seta.
STR_INTRO_TRANSLATION :{BLACK}Ovom prijevodu nedostaje {NUM} slijed. Molimo, pomognite učiniti OpenTTD boljim tako da se prijavite kao prevoditelj. Pogledajte readme.txt za detalje. STR_INTRO_TRANSLATION :{BLACK}Ovom prijevodu nedostaje {NUM} slijed. Molimo, pomognite učiniti OpenTTD boljim tako da se prijavite kao prevoditelj. Pogledajte readme.txt za detalje.
# Quit window # Quit window
@@ -2686,7 +2685,6 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Naziv po
STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Prihvaćeni teret: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Prihvaćeni teret: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Vrsta željeznice: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Najveća brzina željeznice: {LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Najveća brzina željeznice: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Ograničenje brzine na cesti: {LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Ograničenje brzine na cesti: {LTBLUE}{VELOCITY}
@@ -2699,29 +2697,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :Polja
STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Zemlja pokrivena snijegom STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Zemlja pokrivena snijegom
STR_LAI_CLEAR_DESCRIPTION_DESERT :Pustinja STR_LAI_CLEAR_DESCRIPTION_DESERT :Pustinja
STR_LAI_RAIL_DESCRIPTION_TRACK :Pruga STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} pruga
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Pruga sa blok-signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} pruga sa blok-signalima
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Pruga sa pred-signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} pruga sa pred-signalima
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Pruga sa izlaznim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} pruga sa izlaznim signalima
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Pruga sa kombiniranim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} pruga sa kombiniranim signalima
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Pruga sa putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} pruga sa putnim signalima
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Pruga sa jednosmjernim putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} pruga sa jednosmjernim putnim signalima
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Pruga sa blok-signalima i pred-signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} pruga sa blok-signalima i pred-signalima
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Pruga sa blok-signalima i izlaznim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} pruga sa blok-signalima i izlaznim signalima
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Pruga sa blok-signalima i kombiniranim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} pruga sa blok-signalima i kombiniranim signalima
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Pruga sa blok-signalima i putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} pruga sa blok-signalima i putnim signalima
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Pruga sa blok-signalima i jednosmjernim putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} pruga sa blok-signalima i jednosmjernim putnim signalima
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Pruga sa pred-signalima i izlaznim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} pruga sa pred-signalima i izlaznim signalima
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Pruga sa pred-signalima i kombiniranim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} pruga sa pred-signalima i kombiniranim signalima
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Pruga sa pred-signalima i putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} pruga sa pred-signalima i putnim signalima
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Pruga sa pred-signalima i jednosmjernim putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} pruga sa pred-signalima i jednosmjernim putnim signalima
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Pruga sa izlaznim i kombiniranim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} pruga sa izlaznim i kombiniranim signalima
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Pruga sa izlaznim i putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} pruga sa izlaznim i putnim signalima
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Pruga sa izlaznim i jednosmjernim putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} pruga sa izlaznim i jednosmjernim putnim signalima
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Pruga sa kombiniranim i putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} pruga sa kombiniranim i putnim signalima
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Pruga sa kombiniranim i jednosmjernim putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} pruga sa kombiniranim i jednosmjernim putnim signalima
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Pruga sa putnim i jednosmjernim putnim signalima STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} pruga sa putnim i jednosmjernim putnim signalima
STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Spremište vlakova STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} spremište vlaka
STR_LAI_ROAD_DESCRIPTION_ROAD :Cesta STR_LAI_ROAD_DESCRIPTION_ROAD :Cesta
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Cesta s javnom rasvjetom STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Cesta s javnom rasvjetom
@@ -2785,7 +2783,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Zemlja u posjed
STR_ABOUT_OPENTTD :{WHITE}O OpenTTD-u STR_ABOUT_OPENTTD :{WHITE}O OpenTTD-u
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Izvorno autorsko pravo {COPYRIGHT} 1995 Chris Sawyer, sva prava pridržana STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Izvorno autorsko pravo {COPYRIGHT} 1995 Chris Sawyer, sva prava pridržana
STR_ABOUT_VERSION :{BLACK}OpenTTD verzija {REV} STR_ABOUT_VERSION :{BLACK}OpenTTD verzija {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD tim STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2016 OpenTTD tim
# Save/load game/scenario # Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spremi igru STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spremi igru
@@ -3004,6 +3002,8 @@ STR_NEWGRF_ERROR_INVALID_ID :Pokušaj koriš
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} sadrži neispravan sprite. Svi neispravni grafički znakovi bit će pokazani kao crveni upitnik (?). STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} sadrži neispravan sprite. Svi neispravni grafički znakovi bit će pokazani kao crveni upitnik (?).
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Sadrži višestruke unose za Action 8 (sprite {3:NUM}) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Sadrži višestruke unose za Action 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Pročitaj nakon kraja od pseudo-sprite (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Pročitaj nakon kraja od pseudo-sprite (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Baznom grafičkom setu u uporabi nedostaju neki spriteovi.{}Ažurirajte bazni grafički set
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Trenutno korištenom osnovnom grafičkom setu nedostaju pojedini crteži.{}Molimo da nadogradite osnovni grafički set.{}Pošto igrate {YELLOW}razvojnu inačicu OpenTTD-a{WHITE}, možda će vam trebati i {YELLOW}razvojna inačica osnovnog grafičkog seta{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Zatraženi GRF resursi nisu dostupni (sprite {3:NUM}) STR_NEWGRF_ERROR_GRM_FAILED :Zatraženi GRF resursi nisu dostupni (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} je isključen od strane {STRING} STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} je isključen od strane {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Pogrešan/nepoznat format raspored sprite-a (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Pogrešan/nepoznat format raspored sprite-a (sprite {3:NUM})
@@ -3390,13 +3390,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Treba: {
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Treba: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Treba: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends ############ range for requires ends
STR_INDUSTRY_VIEW_REQUIRES :{BLACK}Treba
STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{CARGO_LONG} {BLACK}čeka
STR_INDUSTRY_VIEW_ACCEPT_CARGO_TEXT :{YELLOW}{STRING}{STRING}
STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT_TEXT :{YELLOW}{CARGO_LONG}{STRING}
############ range for produces starts ############ range for produces starts
STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Teret koji čeka obradu:
STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK}
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Proizvodi: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Proizvodi: {YELLOW}{STRING}{STRING}
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Proizvodi: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Proizvodi: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
############ range for produces ends ############ range for produces ends
@@ -3657,10 +3653,10 @@ STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} kada j
STR_REPLACE_VEHICLES_STOP :{BLACK}Prestani zamijenjivati vozila STR_REPLACE_VEHICLES_STOP :{BLACK}Prestani zamijenjivati vozila
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Klikni za zaustavljanje zamjene lijevo odabrane vrste lokomotive STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Klikni za zaustavljanje zamjene lijevo odabrane vrste lokomotive
STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Zamjenjujem:{ORANGE}{STRING}
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Prebaci između prozora za izmjenu lokomotiva i vagona STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Prebaci između prozora za izmjenu lokomotiva i vagona
STR_REPLACE_ENGINES :Lokomotive STR_REPLACE_ENGINES :Lokomotive
STR_REPLACE_WAGONS :Vagoni STR_REPLACE_WAGONS :Vagoni
STR_REPLACE_ALL_RAILTYPE :Sva pružna vozila
STR_REPLACE_HELP_RAILTYPE :{BLACK}Odaberite vrstu željeznice za koju želite zamijeniti lokomotive STR_REPLACE_HELP_RAILTYPE :{BLACK}Odaberite vrstu željeznice za koju želite zamijeniti lokomotive
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Prikazuje sa kojom se lokomotivom zamjenjuje lijevo odabrana lokomotiva, ako postoji koji STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Prikazuje sa kojom se lokomotivom zamjenjuje lijevo odabrana lokomotiva, ako postoji koji

View File

@@ -1848,7 +1848,6 @@ STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Ukázat,
STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Zobrazit nastavení AI a hry STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Zobrazit nastavení AI a hry
STR_INTRO_TOOLTIP_QUIT :{BLACK}Ukončit 'OpenTTD' STR_INTRO_TOOLTIP_QUIT :{BLACK}Ukončit 'OpenTTD'
STR_INTRO_BASESET :{BLACK}V aktuálně zvolené základní sadě grafiky chybí {NUM} sprit{P "" y ů}. Zkuste, prosím, vyhledat aktualizovanou základní sadu.
STR_INTRO_TRANSLATION :{BLACK}Tento překlad postrádá {NUM} řetěz{P ec ce ců}. Prosím pomozte OpenTTD udělat lepším a přihlaste se jako překladatel. Pro více informací, čtěte readme.txt. STR_INTRO_TRANSLATION :{BLACK}Tento překlad postrádá {NUM} řetěz{P ec ce ců}. Prosím pomozte OpenTTD udělat lepším a přihlaste se jako překladatel. Pro více informací, čtěte readme.txt.
# Quit window # Quit window
@@ -1884,7 +1883,7 @@ STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magick
STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunely se mohou křížit: {ORANGE}{STRING} STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunely se mohou křížit: {ORANGE}{STRING}
STR_CHEAT_NO_JETCRASH :{LTBLUE}Letadla nebudou na malých letištích havarovat (tak často): {ORANGE}{STRING} STR_CHEAT_NO_JETCRASH :{LTBLUE}Letadla nebudou na malých letištích havarovat (tak často): {ORANGE}{STRING}
STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Upravit maximální výšku mapy: {ORANGE}{NUM} STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Upravit maximální výšku mapy: {ORANGE}{NUM}
STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Upravit maximální výšku hor na mapě STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{BLACK}Upravit maximální výšku hor na mapě
STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :krajina mírného pásma STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :krajina mírného pásma
STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :subarktická krajina STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :subarktická krajina
STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :subtropická kraina STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :subtropická kraina
@@ -2683,7 +2682,6 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Název d
STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Přijímané zboží: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Přijímané zboží: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Druh kolejí: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Rychlostní omezení tratě: {LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Rychlostní omezení tratě: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Rychlostní omezení silnice: {LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Rychlostní omezení silnice: {LTBLUE}{VELOCITY}
@@ -2696,29 +2694,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :Pole
STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Zasněžená země STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Zasněžená země
STR_LAI_CLEAR_DESCRIPTION_DESERT :Poušť STR_LAI_CLEAR_DESCRIPTION_DESERT :Poušť
STR_LAI_RAIL_DESCRIPTION_TRACK :Železniční trať STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} trať
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Železniční trať s obyčejnými návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} trať s obyčejným návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Železniční trať s vjezdovými návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} trať s vjezdovým návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Železniční trať s odjezdovými návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} trať s jezdovým návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Železniční trať s kombinovanými návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} trať s kombinovaným návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Železniční trať s dokonalejšími (PBS) návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} trať s dokonalejším (PBS) návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Železniční trať s jednosměrnými cestovými návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} trať s dokonalejším (PBS) jednosměrným návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Železniční trať s obyčejnými a vjezdovými návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} trať s obyčejným a vjezdovým návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Železniční trať s obyčejnými a odjezdovými návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} trať s obyčejným a odjezdovým návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Železniční trať s obyčejnými a kombinovanými návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} trať s obyčejným a kombinovaným návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Železniční trať s obyčejnými a cestovými návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} trať s obyčejným a cestovým návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Železniční trať s obyčejnými a jednosměrnými cestovými návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} trať s obyčejným a jednosměrným cestovým návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Železniční trať s vjezdovými a odjezdovými návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} trať s vjezdovým a odjezdovým návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Železniční trať s vjezdovými a kombinovanými návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} trať s vjezdovým a kombinovaným návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Železniční trať s vjezdovými a cestovými návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} trať s vjezdovým a cestovým návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Železniční trať s vjezdovými a jednosměrnými cestovými návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} trať s vjezdovým a jednosměrným cestovým návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Železniční trať s odjezdovými a kombinovanými návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} trať s jezdovým a kombinovaným návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Železniční trať s odjezdovými a cestovými návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} trať s jezdovým a cestovým návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Železniční trať s odjezdovými a jednosměrnými cestovými návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} trať s jezdovým a jednosměrným cestovým návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Železniční trať s kombinovanými a cestovými návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} trať s kombinovaným a cestovým návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Železniční trať s kombinovanými a jednosměrnými cestovými návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} trať s kombinovaným a jednosměrným cestovým návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Železniční trať s cestovými a jednosměrnými cestovými návěstidly STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} trať s cestovým a jednosměrným cestovým návěstidlem
STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Železniční depo STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} železniční depo
STR_LAI_ROAD_DESCRIPTION_ROAD :Silnice STR_LAI_ROAD_DESCRIPTION_ROAD :Silnice
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Silnice s pouličním osvětlením STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Silnice s pouličním osvětlením
@@ -2782,7 +2780,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Půda vlastněn
STR_ABOUT_OPENTTD :{WHITE}O OpenTTD STR_ABOUT_OPENTTD :{WHITE}O OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Původní copyright: {COPYRIGHT} 1995 Chris Sawyer, všechna práva vyhrazena STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Původní copyright: {COPYRIGHT} 1995 Chris Sawyer, všechna práva vyhrazena
STR_ABOUT_VERSION :{BLACK}OpenTTD verze {REV} STR_ABOUT_VERSION :{BLACK}OpenTTD verze {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Tým OpenTTD STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2016 Tým OpenTTD
# Save/load game/scenario # Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Uložit hru STR_SAVELOAD_SAVE_CAPTION :{WHITE}Uložit hru
@@ -3001,6 +2999,8 @@ STR_NEWGRF_ERROR_INVALID_ID :Pokus o použit
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} obsahuje poškozený sprite. Všechny takové se zobrazí jako červený otazník (?) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} obsahuje poškozený sprite. Všechny takové se zobrazí jako červený otazník (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Obsahuje vícero Akce 8 záznamů (sprite {3:NUM}) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Obsahuje vícero Akce 8 záznamů (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Čtení konce pseudo-spritu (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Čtení konce pseudo-spritu (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Právě používanému základnímu grafickému setu chybí obrázky.{}Prosím, updatujte ho
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Aktuálnímu grafickému setu chybí nějaké části.{}Aktualizuj prosím grafický set.{}Pokud hraješ{YELLOW}vývojovou verzi OpenTTD{WHITE}, možná potřebuješ {YELLOW}vývojovou verzi základních grafik{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :Požadované zdroje GRF nejsou dostupné (sprite {3:NUM}) STR_NEWGRF_ERROR_GRM_FAILED :Požadované zdroje GRF nejsou dostupné (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} byla vypnuta {STRING} STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} byla vypnuta {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Neplatný/neznámý sprite layout formát (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Neplatný/neznámý sprite layout formát (sprite {3:NUM})
@@ -3225,7 +3225,7 @@ STR_STATION_VIEW_VIA :{YELLOW}{CARGO_
STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} do {STATION} STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} do {STATION}
STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} z neznámé stanice STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} z neznámé stanice
STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} do kterékoliv stanice STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} do kterékoliv stanice
STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} přes jakoukoliv stanici STR_STATION_VIEW_VIA_ANY :{GREEN}{CARGO_SHORT} přes jakoukoliv stanici
STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} z této stanice STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} z této stanice
STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} zastavuje v této stanici STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} zastavuje v této stanici
STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} do této stanice STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} do této stanice
@@ -3387,8 +3387,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Vyžaduj
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Vyžaduje: {YELLOW}{STRING.acc}{STRING}, {STRING.acc}{STRING}, {STRING.acc}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Vyžaduje: {YELLOW}{STRING.acc}{STRING}, {STRING.acc}{STRING}, {STRING.acc}{STRING}
############ range for requires ends ############ range for requires ends
############ range for produces starts ############ range for produces starts
STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Náklad čekající na zpracování:
STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK}
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produkuje: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produkuje: {YELLOW}{STRING}{STRING}
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produkuje: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produkuje: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
############ range for produces ends ############ range for produces ends
@@ -3652,10 +3653,10 @@ STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} když
STR_REPLACE_VEHICLES_STOP :{BLACK}Vypnout vyměňování STR_REPLACE_VEHICLES_STOP :{BLACK}Vypnout vyměňování
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Zmáčkni toto tlačítko, když nechceš vyměňovat typ lokomotivy vybraný v levém seznamu STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Zmáčkni toto tlačítko, když nechceš vyměňovat typ lokomotivy vybraný v levém seznamu
STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Vyměňování: {ORANGE}{STRING}
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Přepne mezi okny na výměnu lokomotiv a vagonů STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Přepne mezi okny na výměnu lokomotiv a vagonů
STR_REPLACE_ENGINES :lokomotivy STR_REPLACE_ENGINES :lokomotivy
STR_REPLACE_WAGONS :vagony STR_REPLACE_WAGONS :vagony
STR_REPLACE_ALL_RAILTYPE :Všechna drážní vozidla
STR_REPLACE_HELP_RAILTYPE :{BLACK}Vyber typ kolejí, pro které chceš měnit lokomotivy STR_REPLACE_HELP_RAILTYPE :{BLACK}Vyber typ kolejí, pro které chceš měnit lokomotivy
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Tady je zobrazeno, za jakou lokomotivu se ta v levém seznamu vyměňuje STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Tady je zobrazeno, za jakou lokomotivu se ta v levém seznamu vyměňuje
@@ -4188,7 +4189,7 @@ STR_ERROR_BMPMAP_IMAGE_TYPE :{WHITE}... nelz
STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... obrázek je příliš velký STR_ERROR_HEIGHTMAP_TOO_LARGE :{WHITE}... obrázek je příliš velký
STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Varování kvůli velikosti STR_WARNING_HEIGHTMAP_SCALE_CAPTION :{WHITE}Varování kvůli velikosti
STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Tak velká změna velikosti zdrojové mapy není doporučena. Pokračovat v generování? STR_WARNING_HEIGHTMAP_SCALE_MESSAGE :{YELLOW}Tak velká zmena velikosti zdrojové mapy není doporučena. Pokračovat s generováním?
# Soundset messages # Soundset messages
STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Byl nalezen pouze nouzový zvukový soubor. Pokud chcete zvuky, nainstalujte prosim zvukové soubory skrze systém stahování obsahu STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Byl nalezen pouze nouzový zvukový soubor. Pokud chcete zvuky, nainstalujte prosim zvukové soubory skrze systém stahování obsahu

View File

@@ -2601,29 +2601,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :Marker
STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Snedækket land STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Snedækket land
STR_LAI_CLEAR_DESCRIPTION_DESERT :Ørken STR_LAI_CLEAR_DESCRIPTION_DESERT :Ørken
STR_LAI_RAIL_DESCRIPTION_TRACK :Jernbane spor STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} spor
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Jernbane spor med bloksignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} spor med bloksignaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Jernbane spor med with pre-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} spor med with pre-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Jernbane spor med udgangssignaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} spor med udgangssignaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Jernbane spor med kombinerede signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} spor med kombinerede signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Jernbane spor med rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} spor med rute-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Jernbane spor med en-vejs-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} spor med en-vejs-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Jernbane spor med blok- og pre-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} spor med blok- og pre-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Jernbane spor med blok- og udgangs-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} spor med blok- og udgangs-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Jernbane spor med blok og kombinerede signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} spor med blok og kombinerede signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Jernbane spor med blok- og rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} spor med blok- og rute-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Jernbane spor med blok og en-vejs rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} spor med blok og en-vejs rute-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Jernbane spor med pre- og udgangs-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} spor med pre- og udgangs-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Jernbane spor med pre- og kombinerede signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} spor med pre- og kombinerede signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Jernbane spor med pre- og rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} spor med pre- og rute-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Jernbane spor med pre- og en-vejs rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} spor med pre- og en-vejs rute-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Jernbane spor med udgangs- og kombinerede signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} spor med udgangs- og kombinerede signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Jernbane spor med udgangs- og rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} spor med udgangs- og rute-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Jernbane spor med udgangs- og en-vejs rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} spor med udgangs- og en-vejs rute-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Jernbane spor med kombinerede og rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} spor med kombinerede og rute-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Jernbane spor med kombinerede og en-vejs rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} spor med kombinerede og en-vejs rute-signaler
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Jernbane spor med rute- og en-vejs rute-signaler STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} spor med rute- og en-vejs rute-signaler
STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Jernbane togdepot STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} togdepot
STR_LAI_ROAD_DESCRIPTION_ROAD :Vej STR_LAI_ROAD_DESCRIPTION_ROAD :Vej
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Vej med gadelygter STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Vej med gadelygter
@@ -2687,7 +2687,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Land ejet af se
STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, Alle rettigheder reserveret STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, Alle rettigheder reserveret
STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV} STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 OpenTTD teamet STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2016 OpenTTD teamet
# Save/load game/scenario # Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gem spil STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gem spil
@@ -2874,7 +2874,7 @@ STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Gå til
STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Tidligere grafikelement STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Tidligere grafikelement
STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Fortsæt til den forrige normal sprite, springe over nogen pseudo / recolour / FONT sprites og indpakning rundt fra den første sprite til det sidste STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Fortsæt til den forrige normal sprite, springe over nogen pseudo / recolour / FONT sprites og indpakning rundt fra den første sprite til det sidste
STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Repræsentation af den markerede sprite. Justeringen ignoreres når denne sprite tegnes. STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Repræsentation af den markerede sprite. Justeringen ignoreres når denne sprite tegnes.
STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Flyt spriten rundt for at ændre X- og Y-forskydningen. Ctrl+Klik for at flytte spriten otte enheder af gangen STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Flyt spriten rundt for at ændre X- og Y-forskydningen
STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Nulstil relativ STR_SPRITE_ALIGNER_RESET_BUTTON :{BLACK}Nulstil relativ
STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Nulstil den nuværende relative forskydning STR_SPRITE_ALIGNER_RESET_TOOLTIP :{BLACK}Nulstil den nuværende relative forskydning
STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X-forskydning: {NUM}, Y-forskydning: {NUM} (Absolut) STR_SPRITE_ALIGNER_OFFSETS_ABS :{BLACK}X-forskydning: {NUM}, Y-forskydning: {NUM} (Absolut)
@@ -2906,6 +2906,8 @@ STR_NEWGRF_ERROR_INVALID_ID :Forsøg på at
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} indeholder en ødelagt sprite. Alle ødelagte sprites vil blive vist som et rødt spørgsmålstegn (?). STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} indeholder en ødelagt sprite. Alle ødelagte sprites vil blive vist som et rødt spørgsmålstegn (?).
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Indeholder adskillige handling 8 indgange (grafikelement {3:NUM}) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Indeholder adskillige handling 8 indgange (grafikelement {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Læs forbi slutningen af pseudo-grafikelement (grafikelement {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Læs forbi slutningen af pseudo-grafikelement (grafikelement {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}Det brugte basis grafiksæt mangler en række elementer.{}Opdater venligst grafiksættet.
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}Den grafikpakke som bruges er ufuldstændig.{}Opdater venligst grafikpakken.{}eftersom du spiller et{YELLOW} development snapshot of OpenTTD{WHITE},får du måske også brug for er{YELLOW}development snapshot of the base graphics{WHITE}
STR_NEWGRF_ERROR_GRM_FAILED :De ønskede GRF ressourcer er ikke tilgængelige (grafikelement {3:NUM}) STR_NEWGRF_ERROR_GRM_FAILED :De ønskede GRF ressourcer er ikke tilgængelige (grafikelement {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} blev deaktiveret af {2:STRING} STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} blev deaktiveret af {2:STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ugyldigt / ukendt grafikelement layoutformat (grafikelement {3:NUM}) STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ugyldigt / ukendt grafikelement layoutformat (grafikelement {3:NUM})
@@ -3292,8 +3294,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Kræver:
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Kræver: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Kræver: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends ############ range for requires ends
############ range for produces starts ############ range for produces starts
STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Fragt der venter på forarbejdning:
STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK}
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Producerer: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Producerer: {YELLOW}{STRING}{STRING}
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Producerer: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Producerer: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
############ range for produces ends ############ range for produces ends
@@ -3554,6 +3557,7 @@ STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} når d
STR_REPLACE_VEHICLES_STOP :{BLACK}Stop udskiftning STR_REPLACE_VEHICLES_STOP :{BLACK}Stop udskiftning
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Tryk for at stoppe udskiftningen at den køretøjstype, som du har valgt til venstre STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Tryk for at stoppe udskiftningen at den køretøjstype, som du har valgt til venstre
STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Udskifter: {ORANGE}{STRING}
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Skift imellem lokomotiv- og vognudskiftningsvindue STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Skift imellem lokomotiv- og vognudskiftningsvindue
STR_REPLACE_ENGINES :Lokomotiver STR_REPLACE_ENGINES :Lokomotiver
STR_REPLACE_WAGONS :Vogne STR_REPLACE_WAGONS :Vogne

View File

@@ -255,7 +255,7 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}Toon ver
STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Toon verborgen STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Toon verborgen
STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Door het inschakelen van deze knop, worden de verborgen treinen ook weergegeven STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}Door het inschakelen van deze knop, worden de verborgen treinen ook weergegeven
STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}Door het inschakelen van deze knop, worden de verborgen wegvoertuigen ook weergegeven STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :Door het inschakelen van deze knop, worden de verborgen wegvoertuigen ook weergegeven
STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Door het inschakelen van deze knop, worden de verborgen schepen ook weergegeven STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Door het inschakelen van deze knop, worden de verborgen schepen ook weergegeven
STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Door het inschakelen van deze knop, worden de verborgen vliegtuig ook weergegeven STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Door het inschakelen van deze knop, worden de verborgen vliegtuig ook weergegeven
@@ -1761,7 +1761,6 @@ STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Zoeken n
STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Toon AI/Game script instellingen STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Toon AI/Game script instellingen
STR_INTRO_TOOLTIP_QUIT :{BLACK}Verlaat 'OpenTTD' STR_INTRO_TOOLTIP_QUIT :{BLACK}Verlaat 'OpenTTD'
STR_INTRO_BASESET :{BLACK}De huidige gekozen graphics set mist {NUM} afbeelding{P "" en}. Controleer of er updates zijn voor deze basisset.
STR_INTRO_TRANSLATION :{BLACK}Deze vertaling mist {NUM} tekst{P "" en}. Help aub om OpenTTD beter te maken door je al vertaler aan te melden. Zie readme.txt voor details. STR_INTRO_TRANSLATION :{BLACK}Deze vertaling mist {NUM} tekst{P "" en}. Help aub om OpenTTD beter te maken door je al vertaler aan te melden. Zie readme.txt voor details.
# Quit window # Quit window
@@ -2590,7 +2589,6 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Vliegvel
STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING} STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Geaccepteerde vracht: {LTBLUE} STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Geaccepteerde vracht: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING}) STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Rail type: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Spoor snelheidslimiet: {LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Spoor snelheidslimiet: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Snelheidslimiet weg: {LTBLUE}{VELOCITY} STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Snelheidslimiet weg: {LTBLUE}{VELOCITY}
@@ -2603,29 +2601,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :Akkers
STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Sneeuw STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Sneeuw
STR_LAI_CLEAR_DESCRIPTION_DESERT :Woestijn STR_LAI_CLEAR_DESCRIPTION_DESERT :Woestijn
STR_LAI_RAIL_DESCRIPTION_TRACK :Spoorweg spoor STR_LAI_RAIL_DESCRIPTION_TRACK :{STRING} spoor
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Spoorweg spoor met blokseinen STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :{STRING} spoor met blokseinen
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Spoorweg spoor met voorseinen STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :{STRING} spoor met voorseinen
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Spoorweg spoor met exitseinen STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :{STRING} spoor met exitseinen
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Spoorweg spoor met combo-seinen STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :{STRING} spoor met combo-seinen
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Spoorweg spoor met routeseinen STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :{STRING} spoor met routeseinen
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Spoorweg spoor met eenrichtingsseinen STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :{STRING} spoor met eenrichtingsseinen
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Spoorweg spoor met blok en voorseinen STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :{STRING} spoor met blok en voorseinen
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Spoorweg spoor met blok en exitseinen STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :{STRING} spoor met blok en exitseinen
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Spoorweg spoor met blok en combo-seinen STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :{STRING} spoor met blok en combo-seinen
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Spoorweg spoor met blok en routeseinen STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :{STRING} spoor met blok en routeseinen
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Spoorweg spoor met blok en eenrichtingsseinen STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :{STRING} spoor met blok en eenrichtingsseinen
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Spoorweg spoor met voor- en exitseinen STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :{STRING} spoor met voor- en exitseinen
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Spoorweg spoor met voor- en combo-seinen STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :{STRING} spoor met voor- en combo-seinen
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Spoorweg spoor met voor- en routeseinen STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :{STRING} spoor met voor- en routeseinen
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Spoorweg spoor met voor- en eenrichtingsseinen STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :{STRING} spoor met voor- en eenrichtingsseinen
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Spoorweg spoor met exit- en combo-seinen STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :{STRING} spoor met exit- en combo-seinen
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Spoorweg spoor met exit- en routeseinen STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :{STRING} spoor em exit- en routeseinen
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Spoorweg spoor met exit- en eenrichtingsseinen STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :{STRING} spoor met exit- en eenrichtingsseinen
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Spoorweg spoor met combo- en routeseinen STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :{STRING} spoor met combo- en routeseinen
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Spoorweg Spoor met combo- en eenrichtingssein STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :{STRING} Spoor met combo- en eenrichtingssein
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Spoorweg spoor met route en eenrichtingssein STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :{STRING} spoor met route en eenrichtingssein
STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Spoorweg trein depot STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :{STRING} trein depot
STR_LAI_ROAD_DESCRIPTION_ROAD :Weg STR_LAI_ROAD_DESCRIPTION_ROAD :Weg
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Weg met straatlantaarns STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Weg met straatlantaarns
@@ -2689,7 +2687,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terrein in bedr
STR_ABOUT_OPENTTD :{WHITE}Over OpenTTD STR_ABOUT_OPENTTD :{WHITE}Over OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Originele copyright {COPYRIGHT} 1995 Chris Sawyer, alle rechten voorbehouden STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Originele copyright {COPYRIGHT} 1995 Chris Sawyer, alle rechten voorbehouden
STR_ABOUT_VERSION :{BLACK}OpenTTD versie {REV} STR_ABOUT_VERSION :{BLACK}OpenTTD versie {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2017 Het OpenTTD team STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2016 Het OpenTTD team
# Save/load game/scenario # Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spel Opslaan STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spel Opslaan
@@ -2908,6 +2906,8 @@ STR_NEWGRF_ERROR_INVALID_ID :Poging om ongel
STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} bevat een ongeldige afbeelding. Alle ongeldige afbeeldingen worden getoond als een rood vraagteken (?) STR_NEWGRF_ERROR_CORRUPT_SPRITE :{YELLOW}{STRING} bevat een ongeldige afbeelding. Alle ongeldige afbeeldingen worden getoond als een rood vraagteken (?)
STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Bevat meerdere acties 8 (sprite {3:NUM}) STR_NEWGRF_ERROR_MULTIPLE_ACTION_8 :Bevat meerdere acties 8 (sprite {3:NUM})
STR_NEWGRF_ERROR_READ_BOUNDS :Voorbij het einde van pseudo-sprite gelezen (sprite {3:NUM}) STR_NEWGRF_ERROR_READ_BOUNDS :Voorbij het einde van pseudo-sprite gelezen (sprite {3:NUM})
STR_NEWGRF_ERROR_MISSING_SPRITES :{WHITE}De huidige basis graphics-set mist een aantal sprites..{}Werk de graphics-set bij aub
STR_NEWGRF_ERROR_MISSING_SPRITES_UNSTABLE :{WHITE}De momenteel gebruikte basis graphics set mist een aantal sprites.{} Werk de ingestelde basis graphics bij.{} Aangezien u een {YELLOW} ontwikkeling momentopname van OpenTTD{WHITE} speelt, heeft u ook een {YELLOW} ontwikkeling snapshot van de basis graphics set{WHITE} nodig
STR_NEWGRF_ERROR_GRM_FAILED :Gevraagde GRF middelen niet beschikbaar (sprite {3:NUM}) STR_NEWGRF_ERROR_GRM_FAILED :Gevraagde GRF middelen niet beschikbaar (sprite {3:NUM})
STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} is uitgeschakeld door {STRING} STR_NEWGRF_ERROR_FORCEFULLY_DISABLED :{1:STRING} is uitgeschakeld door {STRING}
STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ongeldig/onbekend sprite lay-out-formaat (sprite {3:NUM}) STR_NEWGRF_ERROR_INVALID_SPRITE_LAYOUT :Ongeldig/onbekend sprite lay-out-formaat (sprite {3:NUM})
@@ -3294,8 +3294,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Vereist:
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Vereist: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Vereist: {YELLOW}{STRING}{STRING}, {STRING}{STRING}, {STRING}{STRING}
############ range for requires ends ############ range for requires ends
############ range for produces starts ############ range for produces starts
STR_INDUSTRY_VIEW_WAITING_FOR_PROCESSING :{BLACK}Vracht klaar om te worden verwerkt:
STR_INDUSTRY_VIEW_WAITING_STOCKPILE_CARGO :{YELLOW}{CARGO_LONG}{STRING}{BLACK}
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produceert: {YELLOW}{STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Produceert: {YELLOW}{STRING}{STRING}
STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produceert: {YELLOW}{STRING}{STRING}, {STRING}{STRING} STR_INDUSTRY_VIEW_PRODUCES_CARGO_CARGO :{BLACK}Produceert: {YELLOW}{STRING}{STRING}, {STRING}{STRING}
############ range for produces ends ############ range for produces ends
@@ -3556,10 +3557,10 @@ STR_REPLACE_REPLACING_WHEN_OLD :{ENGINE} als ou
STR_REPLACE_VEHICLES_STOP :{BLACK}Stop het vervangen STR_REPLACE_VEHICLES_STOP :{BLACK}Stop het vervangen
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Klik op deze knop als je de aan de linkerkant geselecteerde locomotief niet wilt vervangen STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Klik op deze knop als je de aan de linkerkant geselecteerde locomotief niet wilt vervangen
STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Aan het vervangen: {ORANGE}{STRING}
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Wissel tussen locomotief- en wagonvervangvensters STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Wissel tussen locomotief- en wagonvervangvensters
STR_REPLACE_ENGINES :Motoren STR_REPLACE_ENGINES :Motoren
STR_REPLACE_WAGONS :Wagons STR_REPLACE_WAGONS :Wagons
STR_REPLACE_ALL_RAILTYPE :Alle railvoertuigen
STR_REPLACE_HELP_RAILTYPE :{BLACK}Selecteer een spoortype waar je locomotieven voor wilt vervangen STR_REPLACE_HELP_RAILTYPE :{BLACK}Selecteer een spoortype waar je locomotieven voor wilt vervangen
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Dit geeft weer waarmee de aan de linkerkant geselecteerde locomotief vervangen wordt STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Dit geeft weer waarmee de aan de linkerkant geselecteerde locomotief vervangen wordt

Some files were not shown because too many files have changed in this diff Show More