diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index d77071e669..2c7ce528c9 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -107,7 +107,7 @@ git clone https://github.com/OpenTTD/OpenTTD-git-hooks.git openttd_hooks
cd openttd
git remote add upstream https://github.com/OpenTTD/OpenTTD.git
cd .git/hooks
-ln -s -t . ../../../openttd_hooks/hooks/*
+ln -s ../../../openttd_hooks/hooks/* .
```
2. If you cloned a while ago, get the latest changes from upstream:
@@ -149,6 +149,16 @@ git push
**IMPORTANT**: By submitting a patch, you agree to the [License](#license).
+### Privacy Notice
+
+We would like to make you aware that contributing to OpenTTD via git will permanently store the name and email address you provide as well as the actual changes and the time and date you made it inside git's version history.
+
+This is inevitable, because it is a main feature of git. If you are concerned about your privacy, we strongly recommend to use "Anonymous <anonymous@openttd.org>" as the git commit author. We might refuse anonymous contributions if malicious intent is suspected.
+
+Please note that the contributor identity, once given, is used for copyright verification and to provide proof should a malicious commit be made. As such, the [EU GDPR](https://www.eugdpr.org/key-changes.html) "right to be forgotten" does not apply, as this is an overriding legitimate interest.
+
+Please also note that your commit is public and as such will potentially be processed by many third-parties. Git's distributed nature makes it impossible to track where exactly your commit, and thus your personal data, will be stored and be processed. If you would not like to accept this risk, please do either commit anonymously or refrain from contributing to the OpenTTD project.
+
### Pull request validation
Continuous integration (CI) tools monitor pull requests, and help us identify build and code quality issues.
@@ -168,3 +178,4 @@ By contributing your code, you agree to license your contribution under the [GPL
### Attribution of this Contributing Guide
This contributing guide is adapted from [Bootstrap](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md) under the [Creative Commons Attribution 3.0 Unported License](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE) terms for Bootstrap documentation.
+The GDPR notice is adapted from [rsyslog](https://github.com/rsyslog/rsyslog/blob/master/CONTRIBUTING.md) under the [GNU General Public License](https://github.com/rsyslog/rsyslog/blob/master/COPYING).
diff --git a/Makefile.lang.in b/Makefile.lang.in
index fbed06b790..7ce331913d 100644
--- a/Makefile.lang.in
+++ b/Makefile.lang.in
@@ -6,7 +6,6 @@
# 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 .
STRGEN = !!STRGEN!!
-ENDIAN_CHECK = !!ENDIAN_CHECK!!
SRC_DIR = !!SRC_DIR!!
LANG_DIR = !!LANG_DIR!!
BIN_DIR = !!BIN_DIR!!
@@ -25,11 +24,6 @@ ifeq ($(LANG_SUPPRESS), yes)
LANG_ERRORS = >/dev/null 2>&1
endif
-# Make sure endian_host.h is reachable as if it was in the src/ dir
-CFLAGS_BUILD += -I $(LANG_OBJS_DIR)
-
-ENDIAN_TARGETS := endian_host.h endian_target.h $(ENDIAN_CHECK)
-
# Check if we want to show what we are doing
ifdef VERBOSE
Q =
@@ -43,19 +37,19 @@ RES := $(shell mkdir -p $(BIN_DIR)/lang )
all: table/strings.h $(LANGS)
-strgen_base.o: $(SRC_DIR)/strgen/strgen_base.cpp $(SRC_DIR)/strgen/strgen.h endian_host.h $(SRC_DIR)/table/control_codes.h $(SRC_DIR)/table/strgen_tables.h $(SRC_DIR)/safeguards.h
+strgen_base.o: $(SRC_DIR)/strgen/strgen_base.cpp $(SRC_DIR)/strgen/strgen.h $(SRC_DIR)/table/control_codes.h $(SRC_DIR)/table/strgen_tables.h $(SRC_DIR)/safeguards.h
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $<
-strgen.o: $(SRC_DIR)/strgen/strgen.cpp $(SRC_DIR)/strgen/strgen.h endian_host.h $(SRC_DIR)/table/control_codes.h $(SRC_DIR)/table/strgen_tables.h $(SRC_DIR)/safeguards.h
+strgen.o: $(SRC_DIR)/strgen/strgen.cpp $(SRC_DIR)/strgen/strgen.h $(SRC_DIR)/table/control_codes.h $(SRC_DIR)/table/strgen_tables.h $(SRC_DIR)/safeguards.h
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $<
-string.o: $(SRC_DIR)/string.cpp endian_host.h $(SRC_DIR)/safeguards.h
+string.o: $(SRC_DIR)/string.cpp $(SRC_DIR)/safeguards.h
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $<
-alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp endian_host.h $(SRC_DIR)/safeguards.h
+alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp $(SRC_DIR)/safeguards.h
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSTRGEN -c -o $@ $<
@@ -80,21 +74,11 @@ $(LANGS): %.lng: $(LANG_DIR)/%.txt $(STRGEN) lang/english.txt
$(E) '$(STAGE) Compiling language $(*F)'
$(Q)./$(STRGEN) $(STRGEN_FLAGS) -s $(LANG_DIR) -d $(LANG_OBJS_DIR) $< $(LANG_ERRORS) && cp $@ $(BIN_DIR)/lang || true # Do not fail all languages when one fails
-# The targets to compile the endian-code
-
-endian_host.h: $(ENDIAN_CHECK)
- $(E) '$(STAGE) Testing endianness for host'
- $(Q)./$(ENDIAN_CHECK) > $@
-
-$(ENDIAN_CHECK): $(SRC_DIR)/endian_check.cpp
- $(E) '$(STAGE) Compiling and Linking $@'
- $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) $(LDFLAGS_BUILD) $< -o $@
-
depend:
clean:
$(E) '$(STAGE) Cleaning up language files'
- $(Q)rm -f strgen.o string.o alloc_func.o getoptdata.o table/strings.h $(STRGEN) $(LANGS) $(LANGS:%=$(BIN_DIR)/lang/%) lang/english.* $(ENDIAN_TARGETS)
+ $(Q)rm -f strgen.o string.o alloc_func.o getoptdata.o table/strings.h $(STRGEN) $(LANGS) $(LANGS:%=$(BIN_DIR)/lang/%) lang/english.*
mrproper: clean
$(Q)rm -rf $(BIN_DIR)/lang
diff --git a/Makefile.setting.in b/Makefile.setting.in
index d89501d21b..656de05723 100644
--- a/Makefile.setting.in
+++ b/Makefile.setting.in
@@ -6,7 +6,6 @@
# 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 .
SETTINGSGEN = !!SETTINGSGEN!!
-ENDIAN_CHECK = !!ENDIAN_CHECK!!
SRC_DIR = !!SRC_DIR!!
CXX_BUILD = !!CXX_BUILD!!
CFLAGS_BUILD = !!CFLAGS_BUILD!!
@@ -15,8 +14,6 @@ LDFLAGS_BUILD = !!LDFLAGS_BUILD!!
STAGE = !!STAGE!!
SETTING_OBJS_DIR = !!SETTING_OBJS_DIR!!
-ENDIAN_TARGETS := endian_host.h endian_target.h $(ENDIAN_CHECK)
-
# Check if we want to show what we are doing
ifdef VERBOSE
Q =
@@ -32,7 +29,7 @@ settingsgen.o: $(SRC_DIR)/settingsgen/settingsgen.cpp $(SRC_DIR)/string_func.h $
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $<
-alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp endian_host.h $(SRC_DIR)/safeguards.h
+alloc_func.o: $(SRC_DIR)/core/alloc_func.cpp $(SRC_DIR)/safeguards.h
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $<
@@ -40,7 +37,7 @@ getoptdata.o: $(SRC_DIR)/misc/getoptdata.cpp $(SRC_DIR)/misc/getoptdata.h $(SRC_
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/misc/%.cpp=%.cpp)'
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $<
-string.o: $(SRC_DIR)/string.cpp endian_host.h $(SRC_DIR)/safeguards.h
+string.o: $(SRC_DIR)/string.cpp $(SRC_DIR)/safeguards.h
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) -DSETTINGSGEN -c -o $@ $<
@@ -57,21 +54,11 @@ table/settings.h: $(SETTINGSGEN) $(SRC_DIR)/table/settings.h.preamble $(SRC_DIR)
@mkdir -p table
$(Q)./$(SETTINGSGEN) -o table/settings.h -b $(SRC_DIR)/table/settings.h.preamble -a $(SRC_DIR)/table/settings.h.postamble $(SRC_DIR)/table/*.ini
-# The targets to compile the endian-code
-
-endian_host.h: $(ENDIAN_CHECK)
- $(E) '$(STAGE) Testing endianness for host'
- $(Q)./$(ENDIAN_CHECK) > $@
-
-$(ENDIAN_CHECK): $(SRC_DIR)/endian_check.cpp
- $(E) '$(STAGE) Compiling and Linking $@'
- $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) $(LDFLAGS_BUILD) $< -o $@
-
depend:
clean:
$(E) '$(STAGE) Cleaning up settings files'
- $(Q)rm -f settingsgen.o alloc_func.o getoptdata.o ini_load.o $(SETTINGSGEN) $(ENDIAN_TARGETS) table/settings.h
+ $(Q)rm -f settingsgen.o alloc_func.o getoptdata.o ini_load.o $(SETTINGSGEN) table/settings.h
mrproper: clean
diff --git a/Makefile.src.in b/Makefile.src.in
index d92fa59c24..3317aa7fe6 100644
--- a/Makefile.src.in
+++ b/Makefile.src.in
@@ -29,9 +29,7 @@ SCRIPT_SRC_DIR = !!SCRIPT_SRC_DIR!!
MEDIA_DIR = !!MEDIA_DIR!!
TTD = !!TTD!!
STRGEN = !!STRGEN!!
-ENDIAN_CHECK = !!ENDIAN_CHECK!!
DEPEND = !!DEPEND!!
-ENDIAN_FORCE = !!ENDIAN_FORCE!!
OS = !!OS!!
STAGE = !!STAGE!!
MAKEDEPEND = !!MAKEDEPEND!!
@@ -41,7 +39,6 @@ AWK = !!AWK!!
CONFIGURE_INVOCATION = !!CONFIGURE_INVOCATION!!
CONFIG_CACHE_COMPILER = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_COMPILER!!
CONFIG_CACHE_LINKER = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_LINKER!!
-CONFIG_CACHE_ENDIAN = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_ENDIAN!!
CONFIG_CACHE_SOURCE = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_SOURCE!!
CONFIG_CACHE_VERSION = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_VERSION!!
CONFIG_CACHE_INVOCATION = $(SRC_OBJS_DIR)/!!CONFIG_CACHE_INVOCATION!!
@@ -54,19 +51,16 @@ OBJS := $(OBJS_C) $(OBJS_CPP) $(OBJS_MM) $(OBJS_RC)
SRCS := !!SRCS!!
# All C-files depend on those 3 files
-FILE_DEP := $(CONFIG_CACHE_COMPILER) endian_target.h
+FILE_DEP := $(CONFIG_CACHE_COMPILER)
# Create all dirs and subdirs
RES := $(shell mkdir -p $(BIN_DIR) $(sort $(dir $(OBJS))))
-# Make sure endian_target.h is reasable as if it was in the src/ dir
CFLAGS += -I $(SRC_OBJS_DIR) -I $(LANG_OBJS_DIR) -I $(SETTING_OBJS_DIR)
CFLAGS_MAKEDEP += -I $(SRC_OBJS_DIR) -I $(LANG_OBJS_DIR) -I $(SETTING_OBJS_DIR)
ifdef SCRIPT_SRC_DIR
CFLAGS_MAKEDEP += -I $(SCRIPT_SRC_DIR)
endif
-ENDIAN_TARGETS := endian_target.h $(ENDIAN_CHECK)
-
# Check if we want to show what we are doing
ifdef VERBOSE
Q =
@@ -110,7 +104,6 @@ endif
# This helps to recompile if flags change
RES := $(shell if [ "`cat $(CONFIG_CACHE_COMPILER) 2>/dev/null`" != "$(CFLAGS) $(CXXFLAGS)" ]; then echo "$(CFLAGS) $(CXXFLAGS)" > $(CONFIG_CACHE_COMPILER); fi )
RES := $(shell if [ "`cat $(CONFIG_CACHE_LINKER) 2>/dev/null`" != "$(LDFLAGS) $(LIBS)" ]; then echo "$(LDFLAGS) $(LIBS)" > $(CONFIG_CACHE_LINKER); fi )
-RES := $(shell if [ "`cat $(CONFIG_CACHE_ENDIAN) 2>/dev/null`" != "$(ENDIAN_FORCE)" ]; then echo "$(ENDIAN_FORCE)" > $(CONFIG_CACHE_ENDIAN); fi )
# If there is a change in the source-file-list, make sure we recheck the deps
RES := $(shell if [ "`cat $(CONFIG_CACHE_SOURCE) 2>/dev/null`" != "$(SRCS)" ]; then echo "$(SRCS)" > $(CONFIG_CACHE_SOURCE); fi )
@@ -125,7 +118,7 @@ DEP_MASK := %.d
DEPS := $(OBJS:%.o=%.d)
# Only include the deps if we are compiling everything
-ifeq ($(filter $(ENDIAN_TARGETS) %.o clean mrproper, $(MAKECMDGOALS)),)
+ifeq ($(filter %.o clean mrproper, $(MAKECMDGOALS)),)
-include $(DEPS)
else
# In case we want to compile a single target, include the .d file for it
@@ -159,7 +152,7 @@ DEP_MASK :=
DEPS := Makefile.dep
# Only include the deps if we are not cleaning
-ifeq ($(filter $(ENDIAN_TARGETS) depend clean mrproper, $(MAKECMDGOALS)),)
+ifeq ($(filter depend clean mrproper, $(MAKECMDGOALS)),)
-include Makefile.dep
endif
@@ -268,14 +261,7 @@ endif
$(TTD): $(OBJS) $(CONFIG_CACHE_LINKER)
$(E) '$(STAGE) Linking $@'
-ifeq ($(OS), PSP)
- # Because of a bug in the PSP GCC tools, linking via CXX results
- # in total chaos and more problems then you can handle. So we need
- # CC to link OpenTTD for PSP
- $(Q)+$(CC_HOST) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
-else
$(Q)+$(CXX_HOST) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
-endif
ifdef STRIP
$(Q)$(STRIP) $@
endif
@@ -284,16 +270,6 @@ ifeq ($(OS), DOS)
$(Q)$(ROOT_DIR)/os/dos/make_dos_binary_selfcontained.sh $(SRC_OBJS_DIR)/$@
endif
-# The targets to compile the endian-code
-
-endian_target.h: $(ENDIAN_CHECK) $(CONFIG_CACHE_ENDIAN)
- $(E) '$(STAGE) Testing endianness for target'
- $(Q)./$(ENDIAN_CHECK) $(ENDIAN_FORCE) > $@
-
-$(ENDIAN_CHECK): $(SRC_DIR)/endian_check.cpp
- $(E) '$(STAGE) Compiling and Linking $@'
- $(Q)$(CXX_BUILD) $(CFLAGS_BUILD) $(CXXFLAGS_BUILD) $(LDFLAGS_BUILD) $< -o $@
-
# Revision files
$(SRC_DIR)/rev.cpp: $(CONFIG_CACHE_VERSION) $(CONFIG_CACHE_INVOCATION) $(SRC_DIR)/rev.cpp.in
@@ -308,7 +284,7 @@ depend: $(DEPS)
clean:
$(E) '$(STAGE) Cleaning up object files'
- $(Q)rm -f $(DEPS) $(OBJS) $(TTD) $(DEPEND) $(TTD:%=$(BIN_DIR)/%) $(BIN_DIR)/baseset/openttd.32.bmp $(CONFIG_CACHE_COMPILER) $(CONFIG_CACHE_LINKER) $(CONFIG_CACHE_ENDIAN) $(CONFIG_CACHE_SOURCE) $(ENDIAN_TARGETS)
+ $(Q)rm -f $(DEPS) $(OBJS) $(TTD) $(DEPEND) $(TTD:%=$(BIN_DIR)/%) $(BIN_DIR)/baseset/openttd.32.bmp $(CONFIG_CACHE_COMPILER) $(CONFIG_CACHE_LINKER) $(CONFIG_CACHE_SOURCE)
mrproper: clean
$(Q)rm -f $(SRC_DIR)/rev.cpp $(SRC_DIR)/os/windows/ottdres.rc
diff --git a/README.md b/README.md
index f8773ec25b..7ab63c9f4c 100644
--- a/README.md
+++ b/README.md
@@ -14,6 +14,7 @@
- 4.4) [Files in tar (archives)](#44-files-in-tar-archives)
- 5.0) [OpenTTD features](#50-openttd-features)
- 5.1) [Logging of potentially dangerous actions](#51-logging-of-potentially-dangerous-actions)
+ - 5.2) [Frame rate and performance metrics](#52-frame-rate-and-performance-metrics)
- 6.0) [Configuration file](#60-configuration-file)
- 7.0) [Compiling](#70-compiling)
- 7.1) [Required/optional libraries](#71-requiredoptional-libraries)
@@ -42,9 +43,10 @@ The easiest way to contact the OpenTTD team is by submitting bug reports or
posting comments in our forums. You can also chat with us on IRC (#openttd
on irc.oftc.net).
-The OpenTTD homepage is [http://www.openttd.org/](http://www.openttd.org/).
+The OpenTTD homepage is https://www.openttd.org.
-You can also find the OpenTTD forums at [http://forum.openttd.org/](http://forum.openttd.org/).
+You can also find the OpenTTD forums at
+[https://www.tt-forums.net](https://www.tt-forums.net/viewforum.php?f=55).
### 2.1) Reporting bugs
@@ -52,12 +54,12 @@ First of all, check whether the bug is not already known. Do this by looking
through the file called 'known-bugs.txt' which is distributed with OpenTTD
like this readme.
-For tracking our bugs we are using Githubs issue tracker. You can find
-the tracker at [https://github.com/OpenTTD/OpenTTD/issues](https://github.com/OpenTTD/OpenTTD/issues). Before actually reporting take a look
-through the already reported bugs there to see if the bug is already known.
-The 'known-bugs.txt' file might be a bit outdated at the moment you are
-reading it as only bugs known before the release are documented there. Also
-look through the recently closed bugs.
+For tracking our bugs we are using GitHub's issue tracker. You can find
+the tracker at https://github.com/OpenTTD/OpenTTD/issues. Before actually
+reporting take a look through the already reported bugs there to see if
+the bug is already known. The 'known-bugs.txt' file might be a bit outdated
+at the moment you are reading it as only bugs known before the release
+are documented there. Also look through the recently closed bugs.
When you are sure it is not already reported you should:
@@ -80,8 +82,8 @@ following information in your bug report:
- Bug details, including instructions how to reproduce it
- Platform (Windows, Linux, FreeBSD, …) and compiler (including version) if
you compiled OpenTTD yourself.
-- The processor architecture of your OS (32 bits Windows, 64 bits Windows,
- Linux on an ARM, Mac OS X on a PowerPC, …)
+- The processor architecture of your OS (32-bit Windows, 64-bit Windows,
+ Linux on an ARM, Mac OS X on a PowerPC, etc.)
- Attach a saved game **and** a screenshot if possible
- If this bug only occurred recently please note the last version without
the bug and the first version including the bug. That way we can fix it
@@ -154,7 +156,7 @@ platforms are:
- DOS (Allegro)
- FreeBSD (SDL)
- Linux (SDL or Allegro)
-- MacOS X (universal) (Cocoa video and sound drivers)
+- macOS (universal) (Cocoa video and sound drivers)
- MorphOS (SDL)
- OpenBSD (SDL)
- OS/2 (SDL)
@@ -210,9 +212,9 @@ when using other versions of the game.
The free data files, split into OpenGFX for graphics, OpenSFX for sounds and
OpenMSX for music can be found at:
-- [http://www.openttd.org/download-opengfx](http://www.openttd.org/download-opengfx) for OpenGFX
-- [http://www.openttd.org/download-opensfx](http://www.openttd.org/download-opensfx) for OpenSFX
-- [http://www.openttd.org/download-openmsx](http://www.openttd.org/download-openmsx) for OpenMSX
+- https://www.openttd.org/download-opengfx for OpenGFX
+- https://www.openttd.org/download-opensfx for OpenSFX
+- https://www.openttd.org/download-openmsx for OpenMSX
Please follow the readme of these packages about the installation procedure.
The Windows installer can optionally download and install these packages.
@@ -224,7 +226,6 @@ have to copy the data files from the CD-ROM into the baseset/ directory. It
does not matter whether you copy them from the DOS or Windows version of
Transport Tycoon Deluxe. The Windows install can optionally copy these files.
You need to copy the following files:
-
- sample.cat
- trg1r.grf or TRG1.GRF
- trgcr.grf or TRGC.GRF
@@ -234,11 +235,11 @@ You need to copy the following files:
#### 4.1.3) Original Transport Tycoon Deluxe music
-If you want the Transport Tycoon Deluxe music, copy the files from the gm/
-folder from the Windows version of Transport Tycoon Deluxe to the baseset
-folder in your OpenTTD folder (also explained in the following sections).
-The music from the DOS version as well as the original Transport Tycoon does
-not work.
+If you want the Transport Tycoon Deluxe music, copy the appropriate files from
+the original game into the baseset folder.
+- TTD for Windows: All files in the gm/ folder (gm_tt00.gm up to gm_tt21.gm)
+- TTD for DOS: The GM.CAT file
+- Transport Tycoon Original: The GM.CAT file, but rename it to GM-TTO.CAT
#### 4.1.4) AIs
@@ -247,10 +248,9 @@ not possible or you want to use an AI that has not been uploaded to the content
download system download the tar file and place it in the ai/ directory. If the
AI needs libraries you will have to download those too and put them in the
ai/library/ directory. All AIs and AI Libraries that have been uploaded to
-the content download system can be found at http://noai.openttd.org/downloads/
+the content download system can be found at https://noai.openttd.org/downloads.
The AIs and libraries can be found their in the form of .tar.gz packages.
-OpenTTD can read inside tar files but it does not extract .tar.gz files by
-itself.
+OpenTTD can read inside tar files but it does not extract .tar.gz files by itself.
To figure out which libraries you need for an AI you have to start the AI and
wait for an error message to pop up. The error message will tell you
@@ -278,47 +278,50 @@ The main OpenTTD directories can be found in various locations, depending on
your operating system:
1. The current working directory (from where you started OpenTTD)
- For non-Windows operating systems OpenTTD will not scan for files in this
- directory if it is your personal directory, i.e. '~/', or when it is the
- root directory, i.e. '/'.
+
+ For non-Windows operating systems OpenTTD will not scan for files in this
+ directory if it is your personal directory, i.e. '~/', or when it is the
+ root directory, i.e. '/'.
+
2. Your personal directory
- Windows:
- `C:\My Documents\OpenTTD` (95, 98, ME)
- `C:\Documents and Settings\\My Documents\OpenTTD` (2000, XP)
- - `C:\Users\\Documents\OpenTTD` (Vista, 7)
- - Mac OSX: `~/Documents/OpenTTD`
+ - `C:\Users\\Documents\OpenTTD` (Vista, 7, 8.1, 10)
+ - macOS: `~/Documents/OpenTTD`
- Linux: `$XDG_DATA_HOME/openttd` which is usually `~/.local/share/openttd`
- when built with XDG base directory support, otherwise `~/.openttd`
+ when built with XDG base directory support, otherwise `~/.openttd`
3. The shared directory
- Windows:
- `C:\Documents and Settings\All Users\Shared Documents\OpenTTD` (2000, XP)
- - `C:\Users\Public\Documents\OpenTTD` (Vista, 7)
- - Mac OSX: `/Library/Application Support/OpenTTD`
+ - `C:\Users\Public\Documents\OpenTTD` (Vista, 7, 8.1, 10)
+ - macOS: `/Library/Application Support/OpenTTD`
- Linux: not available
4. The binary directory (where the OpenTTD executable is)
- Windows: `C:\Program Files\OpenTTD`
- Linux: `/usr/games`
5. The installation directory (Linux only)
- Linux: `/usr/share/games/openttd`
-6. The application bundle (Mac OSX only)
- It includes the OpenTTD files (grf+lng) and it will work as long as they
- are not touched
+6. The application bundle (macOS only)
+
+ It includes the OpenTTD files (grf+lng) and it will work as long as they
+ are not touched
Different types of data or extensions go into different subdirectories of the
chosen main OpenTTD directory:
-| data type | directory | additional info |
+| data type | directory | additional info |
| --- | --- | --- |
| Config File | (no subdirectory) | |
| Screenshots | screenshot | |
-| Base Graphics | baseset| (or a subdirectory thereof) |
-| Sound Sets | baseset| (or a subdirectory thereof) |
-| NewGRFs | newgrf| (or a subdirectory thereof) |
-| 32bpp Sets | newgrf| (or a subdirectory thereof) |
-| Music Sets | baseset| (or a subdirectory thereof) |
-| AIs | ai| (or a subdirectory thereof) |
-| AI Libraries | ai/library| (or a subdirectory thereof) |
-| Game Scripts (GS) | game| (or a subdirectory thereof) |
+| Base Graphics | baseset | (or a subdirectory thereof) |
+| Sound Sets | baseset | (or a subdirectory thereof) |
+| NewGRFs | newgrf | (or a subdirectory thereof) |
+| 32bpp Sets | newgrf | (or a subdirectory thereof) |
+| Music Sets | baseset | (or a subdirectory thereof) |
+| AIs | ai | (or a subdirectory thereof) |
+| AI Libraries | ai/library | (or a subdirectory thereof) |
+| Game Scripts (GS) | game | (or a subdirectory thereof) |
| GS Libraries | game/library | (or a subdirectory thereof) |
| Savegames | save | |
| Automatic Savegames | save/autosave | |
@@ -330,16 +333,16 @@ use and no files should be added to it or its subdirectories manually.
#### Notes:
- Linux in the previous list means .deb, but most paths should be similar for
- others.
+ others.
- The previous search order is also used for NewGRFs and openttd.cfg.
- If openttd.cfg is not found, then it will be created using the 2, 4, 1, 3,
- 5 order. When built with XDG base directory support, openttd.cfg will be
- created in $XDG_CONFIG_HOME/openttd which is usually ~/.config/openttd.
+ 5 order. When built with XDG base directory support, openttd.cfg will be
+ created in $XDG_CONFIG_HOME/openttd which is usually ~/.config/openttd.
- Savegames will be relative to the config file only if there is no save/
- directory in paths with higher priority than the config file path, but
- autosaves and screenshots will always be relative to the config file.
- Unless the configuration file is in $XDG_CONFIG_HOME/openttd, then all
- other files will be saved under $XDG_DATA_HOME/openttd.
+ directory in paths with higher priority than the config file path, but
+ autosaves and screenshots will always be relative to the config file.
+ Unless the configuration file is in $XDG_CONFIG_HOME/openttd, then all
+ other files will be saved under $XDG_DATA_HOME/openttd.
#### The preferred setup:
@@ -389,19 +392,18 @@ OpenTTD has a lot of features going beyond the original Transport Tycoon Deluxe
emulation. Unfortunately, there is currently no comprehensive list of features,
but there is a basic features list on the web, and some optional features can be
controlled through the Advanced Settings dialog. We also implement some
-features known from [TTDPatch](http://www.ttdpatch.net/).
+features known from [TTDPatch](https://www.ttdpatch.net).
Several important non-standard controls:
- Ctrl modifies many commands and makes them more powerful. For example Ctrl
- clicking on signals with the build signal tool changes their behaviour, holding
- Ctrl while the track build tool is activated changes it to the track removal
- tool, and so on. See [http://wiki.openttd.org/Hidden_features](http://wiki.openttd.org/Hidden_features)
- for a non-comprehensive list or look at the tooltips.
-- Ingame console. More information at
- [http://wiki.openttd.org/index.php/Console](http://wiki.openttd.org/index.php/Console)
+ clicking on signals with the build signal tool changes their behaviour,
+ holding Ctrl while the track build tool is activated changes it to the track
+ removal tool, and so on. See https://wiki.openttd.org/Hidden_features
+ for a non-comprehensive list or look at the tooltips.
+- Ingame console. More information at https://wiki.openttd.org/Console
- Hovering over a GUI element shows tooltips. This can be changed to right click
- via the advanced settings.
+ via the advanced settings.
### 5.1) Logging of potentially dangerous actions
@@ -422,7 +424,7 @@ Information logged:
- Changing NewGRF parameters, loading compatible NewGRF
- Changing game mode (scenario editor <-> normal game)
- Loading game saved in a different OpenTTD / TTDPatch / Transport Tycoon Deluxe /
- original Transport Tycoon version
+ original Transport Tycoon version
- Running a modified OpenTTD build
- Changing settings affecting NewGRF behaviour (non-network-safe settings)
- Triggering NewGRF bugs
@@ -432,6 +434,70 @@ No personal information is stored.
You can show the game log by typing 'gamelog' in the console or by running
OpenTTD in debug mode.
+### 5.2) Frame rate and performance metrics
+
+The Help menu in-game has a function to open the Frame rate window. This
+window shows various real-time performance statistics, measuring what parts
+of the game require the most processing power currently.
+
+A summary of the statistics can also be retrieved from the console with the
+`fps` command. This is especially useful on dedicated servers, where the
+administrator might want to determine what's limiting performance in a slow
+game.
+
+The frame rate is given as two figures, the simulation rate and the graphics
+frame rate. Usually these are identical, as the screen is rendered exactly
+once per simulated tick, but in the future there might be support for graphics
+and simulation running at different rates. When the game is paused, the
+simulation rate drops to zero.
+
+In addition to the simulation rate, a game speed factor is also calculated.
+This is based on the target simulation speed, which is 30 milliseconds per
+game tick. At that speed, the expected frame rate is 33.33 frames/second, and
+the game speed factor is how close to that target the actual rate is. When
+the game is in fast forward mode, the game speed factor shows how much
+speed up is achieved.
+
+The lower part of the window shows timing statistics for individual parts of
+the game. The times shown are short-term and long-term averages of how long
+it takes to process one tick of game time, all figures are in milliseconds.
+
+Clicking a line in the lower part of the window opens a graph window, giving
+detailed readings on each tick simulated by the game.
+
+The following is an explanation of the different statistics:
+
+- *Game loop* - Total processing time used per simulated "tick" in the game.
+ This includes all pathfinding, world updates, and economy handling.
+- *Cargo handling* - Time spent loading/unloading cargo at stations, and
+ industries and towns sending/retrieving cargo from stations.
+- *Train ticks*, *Road vehicle ticks*, *Ship ticks*, *Aircraft ticks* -
+ Time spent on pathfinding and other processing for each player vehicle type.
+- *World ticks* - Time spent on other world/landscape processing. This
+ includes towns growing, building animations, updates of farmland and trees,
+ and station rating updates.
+- *Link graph delay* - Time overruns of the cargo distribution link graph
+ update thread. Usually the link graph is updated in a background thread,
+ but these updates need to synchronise with the main game loop occasionally,
+ if the time spent on link graph updates is longer than the time taken to
+ otherwise simulate the game while it was updating, these delays are counted
+ in this figure.
+- *Graphics rendering* - Total time spent rendering all graphics, including
+ both GUI and world viewports. This typically spikes when panning the view
+ around, and when more things are happening on screen at once.
+- *World viewport rendering* - Isolated time spent rendering just world
+ viewports. If this figure is significantly lower than the total graphics
+ rendering time, most time is spent rendering GUI than rendering world.
+- *Video output* - Speed of copying the rendered graphics to the display
+ adapter. Usually this should be very fast (in the range of 0-3 ms), large
+ values for this can indicate a graphics driver problem.
+- *Sound mixing* - Speed of mixing active audio samples together. Usually
+ this should be very fast (in the range of 0-3 ms), if it is slow, consider
+ switching to the NoSound set.
+
+If the frame rate window is shaded, the title bar will instead show just the
+current simulation rate and the game speed factor.
+
## 6.0) Configuration file
The configuration file for OpenTTD (openttd.cfg) is in a simple Windows-like
@@ -451,7 +517,7 @@ you need to add WITH_SDL to the project settings.
PNG (WITH_PNG) and ZLIB (WITH_ZLIB) support is enabled by default. For these
to work you need their development files. For best results, download the
-openttd-useful.zip file from [http://www.openttd.org/download-openttd-useful](http://www.openttd.org/download-openttd-useful)
+openttd-useful.zip file from https://www.openttd.org/download-openttd-useful.
Put the header files into your compiler's include/ directory and the
library (.lib) files into the lib/ directory.
For more help with VS see docs/Readme_Windows_MSVC.txt.
@@ -468,7 +534,7 @@ Use '`gmake`', but do a '`./configure`' before the first build.
OpenTTD can be built with GNU '`make`'. On non-GNU systems it is called '`gmake`'.
However, for the first build one has to do a '`./configure`' first.
-### MacOS X:
+### macOS:
Use '`make`' or Xcode (which will then call make for you)
This will give you a binary for your CPU type (PPC/Intel)
@@ -509,19 +575,19 @@ The following libraries are used by OpenTTD for:
- libSDL/liballegro: hardware access (video, sound, mouse)
- zlib: (de)compressing of old (0.3.0-1.0.5) savegames, content downloads,
- heightmaps
+ heightmaps
- liblzo2: (de)compressing of old (pre 0.3.0) savegames
- liblzma: (de)compressing of savegames (1.1.0 and later)
- libpng: making screenshots and loading heightmaps
- libfreetype: loading generic fonts and rendering them
- libfontconfig: searching for fonts, resolving font names to actual fonts
- libicu: handling of right-to-left scripts (e.g. Arabic and Persian) and
- natural sorting of strings.
+ natural sorting of strings.
OpenTTD does not require any of the libraries to be present, but without
liblzma you cannot open most recent savegames and without zlib you cannot
open most older savegames or use the content downloading system.
-Without libSDL/liballegro on non-Windows and non-MacOS X machines you have
+Without libSDL/liballegro on non-Windows and non-macOS machines you have
no graphical user interface; you would be building a dedicated server.
### 7.2) Supported compilers
@@ -529,25 +595,25 @@ no graphical user interface; you would be building a dedicated server.
The following compilers are known to compile OpenTTD:
- Microsoft Visual C++ (MSVC) 2005, 2008 and 2010.
- Version 2005 gives bogus warnings about scoping issues.
+ Version 2005 gives bogus warnings about scoping issues.
- GNU Compiler Collection (GCC) 3.3 - 4.4, 4.6 - 4.8.
- Versions 4.1 and earlier give bogus warnings about uninitialised variables.
- Versions 4.4, 4.6 give bogus warnings about freeing non-heap objects.
- Versions 4.6 and later give invalid warnings when lto is enabled.
- Intel C++ Compiler (ICC) 12.0.
- Clang/LLVM 2.9 - 3.0
- Version 2.9 gives bogus warnings about code nonconformity.
+ Version 2.9 gives bogus warnings about code nonconformity.
The following compilers are known not to compile OpenTTD:
- Microsoft Visual C++ (MSVC) 2003 and earlier.
- GNU Compiler Collection (GCC) 3.2 and earlier.
- These old versions fail due to OpenTTD's template usage.
+ These old versions fail due to OpenTTD's template usage.
- GNU Compiler Collection (GCC) 4.5. It optimizes enums too aggressively.
- See http://bugs.openttd.org/task/5513 and references therein.
+ See https://github.com/OpenTTD/OpenTTD/issues/5513 and references therein.
- Intel C++ Compiler (ICC) 11.1 and earlier.
- Version 10.0 and earlier fail a configure check and fail with recent
- system headers.
+ system headers.
- Version 10.1 fails to compile station_gui.cpp.
- Version 11.1 fails with an internal error when compiling network.cpp.
- Clang/LLVM 2.8 and earlier.
@@ -560,7 +626,7 @@ Patches to support more compilers are welcome.
To recompile the extra graphics needed to play with the original Transport
Tycoon Deluxe graphics you need GRFCodec (which includes NFORenum) as well.
-GRFCodec can be found at: [http://www.openttd.org/download-grfcodec](http://www.openttd.org/download-grfcodec)
+GRFCodec can be found at https://www.openttd.org/download-grfcodec.
The compilation of these extra graphics does generally not happen, unless
you remove the graphics file using '`make maintainer-clean`'.
@@ -573,17 +639,16 @@ modification of the base set files by the build process.
## 8.0) Translating
-See [http://www.openttd.org/development](http://www.openttd.org/development) for up-to-date information.
+See https://www.openttd.org/development for up-to-date information.
The use of the online Translator service, located at
-[http://translator.openttd.org/](http://translator.openttd.org/), is highly
-encouraged. For getting an account simply follow the guidelines in the FAQ of
-the translator website.
+https://translator.openttd.org, is highly encouraged. For getting an account
+simply follow the guidelines in the FAQ of the translator website.
If for some reason the website is down for a longer period of time, the
information below might be of help.
-Please contact the translations manager ([http://www.openttd.org/contact](http://www.openttd.org/contact))
+Please contact the translations manager (https://www.openttd.org/contact)
before beginning the translation process! This avoids double work, as
someone else may have already started translating to the same language.
@@ -602,8 +667,8 @@ Note: Do not alter the following parts of the file:
- String identifiers (the first word on each line)
- Parts of the strings which are in curly braces (such as {STRING})
-- Lines beginning with ## (such as ##id), other than the first two lines of
- the file
+- Lines beginning with ## (such as ##id), other than the first two lines
+ of the file
### 8.2) Previewing
@@ -635,7 +700,7 @@ If the game is acting strange and you feel adventurous you can try the
debugging output. The 'name' variable can help you to display only some type of
debugging messages. This is mostly undocumented so best is to look in the
source code file debug.c for the various debugging types. For more information
-look at [http://wiki.openttd.org/index.php/Command_line](http://wiki.openttd.org/index.php/Command_line).
+look at https://wiki.openttd.org/Command_line.
The most frequent problem is missing data files. Please install OpenGFX and
possibly OpenSFX and OpenMSX. See section 4.1.1 for more information.
@@ -659,16 +724,16 @@ and add a suitable font for the small, medium and / or large font, e.g.:
You should use a font name like 'Tahoma' or a path to the desired font.
-Any NewGRF file used in a game is stored inside the savegame and will refuse
-to load if you do not have that NewGRF file available. A list of missing files
-can be viewed in the NewGRF window accessible from the file load dialogue window.
+Any NewGRF file used in a game is stored inside the savegame and will refuse to
+load if you do not have that NewGRF file available. A list of missing files can
+be viewed in the NewGRF window accessible from the file load dialogue window.
You can try to obtain the missing files from that NewGRF dialogue or – if they
-are not available online – you can search manually through our [forum's graphics
-development section](http://www.tt-forums.net/viewforum.php?f=66) or GrfCrawler
-(http://grfcrawler.tt-forums.net/). Put the NewGRF files in OpenTTD's newgrf folder
-(see section 4.2 'OpenTTD directories') and rescan the list of available NewGRFs.
-Once you have all missing files, you are set to go.
+are not available online – you can search manually through our
+[forum's graphics development section](https://www.tt-forums.net/viewforum.php?f=66)
+or [GRFCrawler](https://grfcrawler.tt-forums.net). Put the NewGRF files in
+OpenTTD's newgrf folder (see section 4.2 'OpenTTD directories') and rescan the
+list of available NewGRFs. Once you have all missing files, you are set to go.
## 10.0) Licensing
@@ -697,8 +762,14 @@ os/dos/exe2coff/copying.dj for the exact licensing terms.
The CWSDPMI implementation in os/dos/cwsdpmi is distributed under a
custom binary-only license that prohibits modification. The exact
licensing terms can be found in os/dos/cwsdpmi/cwsdpmi.txt. The sources
-for these files can be downloaded at its author site, at:
-[http://homer.rice.edu/~sandmann/cwsdpmi/csdpmi5s.zip](http://homer.rice.edu/~sandmann/cwsdpmi/csdpmi5s.zip)
+for these files can be downloaded at its author site, at
+http://homer.rice.edu/~sandmann/cwsdpmi/csdpmi5s.zip.
+
+CONTRIBUTING.md is adapted from
+[Bootstrap](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md)
+under the [Creative Commons Attribution 3.0 Unported
+License](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE)
+terms for Bootstrap documentation.
## X.X) Credits
@@ -721,7 +792,7 @@ for these files can be downloaded at its author site, at:
### Inactive Developers:
- Jean-François Claeys (Belugas) - GUI, newindustries and more (0.4.5 - 1.0)
-- Bjarni Corfitzen (Bjarni) - MacOSX port, coder and vehicles (0.3 - 0.7)
+- Bjarni Corfitzen (Bjarni) - macOS port, coder and vehicles (0.3 - 0.7)
- Victor Fischer (Celestar) - Programming everywhere you need him to (0.3 - 0.6)
- Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;) (0.4.5 - 0.6)
- Jonathan Coome (Maedhros) - High priest of the NewGRF Temple (0.5 - 0.6)
@@ -735,10 +806,10 @@ for these files can be downloaded at its author site, at:
- Tamás Faragó (Darkvater) - Ex-Lead coder (0.3 - 0.5)
- Dominik Scherer (dominik81) - Lead programmer, GUI expert (0.3 - 0.3)
-- Emil Djupfeld (egladil) - MacOSX port (0.4 - 0.6)
+- Emil Djupfeld (egladil) - macOS port (0.4 - 0.6)
- Simon Sasburg (HackyKid) - Bug fixer (0.4 - 0.4.5)
- Ludvig Strigeus (ludde) - Original author of OpenTTD, main coder (0.1 - 0.3)
-- Cian Duffy (MYOB) - BeOS port / manual writing (0.1 - 0.3)
+- Cian Duffy (MYOB) - BeOS port / manual writing (0.1 - 0.3)
- Petr Baudiš (pasky) - Many patches, newgrf support, etc. (0.3 - 0.3)
- Benedikt Brüggemeier (skidd13) - Bug fixer and code reworker (0.6 - 0.7)
- Serge Paquet (vurlix) - 2nd contributor after ludde (0.1 - 0.3)
@@ -760,4 +831,3 @@ for these files can be downloaded at its author site, at:
- All Translators - For their support to make OpenTTD a truly international game
- Bug Reporters - Thanks for all bug reports
- Chris Sawyer - For an amazing game!
-
diff --git a/bin/baseset/orig_dos.obm b/bin/baseset/orig_dos.obm
new file mode 100644
index 0000000000..cdacc8e7f5
--- /dev/null
+++ b/bin/baseset/orig_dos.obm
@@ -0,0 +1,76 @@
+; $Id$
+;
+; This represents the original music as on the Transport
+; Tycoon Deluxe for DOS CD.
+;
+[metadata]
+name = original_dos
+shortname = TTDD
+version = 1
+description = Original Transport Tycoon Deluxe DOS edition music.
+
+[files]
+theme = gm.cat
+old_0 = gm.cat
+old_1 = gm.cat
+old_2 = gm.cat
+old_3 = gm.cat
+old_4 = gm.cat
+old_5 = gm.cat
+old_6 = gm.cat
+old_7 = gm.cat
+old_8 =
+old_9 =
+new_0 = gm.cat
+new_1 = gm.cat
+new_2 = gm.cat
+new_3 = gm.cat
+new_4 = gm.cat
+new_5 = gm.cat
+new_6 = gm.cat
+new_7 =
+new_8 =
+new_9 =
+ezy_0 = gm.cat
+ezy_1 = gm.cat
+ezy_2 = gm.cat
+ezy_3 = gm.cat
+ezy_4 = gm.cat
+ezy_5 = gm.cat
+ezy_6 =
+ezy_7 =
+ezy_8 =
+ezy_9 =
+
+[md5s]
+gm.cat = 7a29d2d0c4f7d2e03091ffa9b2bdfffb
+
+[catindex]
+theme = 0
+old_0 = 1
+old_1 = 8
+old_2 = 2
+old_3 = 9
+old_4 = 14
+old_5 = 15
+old_6 = 19
+old_7 = 13
+new_0 = 6
+new_1 = 11
+new_2 = 10
+new_3 = 17
+new_4 = 21
+new_5 = 18
+new_6 = 5
+ezy_0 = 12
+ezy_1 = 7
+ezy_2 = 16
+ezy_3 = 3
+ezy_4 = 20
+ezy_5 = 4
+
+[names]
+; Names get read from the CAT file
+
+[origin]
+default = You can find it on your Transport Tycoon Deluxe CD-ROM.
diff --git a/bin/baseset/orig_tto.obm b/bin/baseset/orig_tto.obm
new file mode 100644
index 0000000000..13b3efb110
--- /dev/null
+++ b/bin/baseset/orig_tto.obm
@@ -0,0 +1,71 @@
+; $Id$
+;
+; This represents the original music as on the Transport
+; Tycoon (with World Editor) for DOS CD.
+;
+[metadata]
+name = original_tto
+shortname = TTOD
+version = 1
+description = Original Transport Tycoon (Original/World Editor) music.
+
+[files]
+theme = gm-tto.cat
+old_0 = gm-tto.cat
+old_1 = gm-tto.cat
+old_2 = gm-tto.cat
+old_3 = gm-tto.cat
+old_4 = gm-tto.cat
+old_5 = gm-tto.cat
+old_6 = gm-tto.cat
+old_7 = gm-tto.cat
+old_8 =
+old_9 =
+new_0 = gm-tto.cat
+new_1 = gm-tto.cat
+new_2 = gm-tto.cat
+new_3 = gm-tto.cat
+new_4 = gm-tto.cat
+new_5 = gm-tto.cat
+new_6 = gm-tto.cat
+new_7 = gm-tto.cat
+new_8 =
+new_9 =
+ezy_0 =
+ezy_1 =
+ezy_2 =
+ezy_3 =
+ezy_4 =
+ezy_5 =
+ezy_6 =
+ezy_7 =
+ezy_8 =
+ezy_9 =
+
+[catindex]
+theme = 0
+old_0 = 1
+old_1 = 6
+old_2 = 2
+old_3 = 7
+old_4 = 11
+old_5 = 12
+old_6 = 15
+old_7 = 10
+new_0 = 4
+new_1 = 5
+new_2 = 9
+new_3 = 8
+new_4 = 13
+new_5 = 16
+new_6 = 14
+new_7 = 3
+
+[md5s]
+gm-tto.cat = 26e85ff84b0063aa5da05dd4698fc76e
+
+[names]
+; Names get read from the CAT file
+
+[origin]
+default = You can find it on your Transport Tycoon CD-ROM.
diff --git a/bin/baseset/orig_win.obm b/bin/baseset/orig_win.obm
index 8e2053e043..c8c4923e0e 100644
--- a/bin/baseset/orig_win.obm
+++ b/bin/baseset/orig_win.obm
@@ -142,5 +142,17 @@ GM_TT19.GM = Funk Central
GM_TT20.GM = Jammit
GM_TT21.GM = Movin' On
+; MIDI timecodes where the playback should attemp to start and stop short.
+; This is to allow fixing undesired silences in original MIDI files.
+; However not all music drivers may support this.
+[timingtrim]
+; Theme has two beats silence at the beginning which prevents clean looping.
+GM_TT00.GM = 768:53760
+; Can't Get There From Here from the Windows version has a long silence at the end,
+; followed by a solo repeat. This isn't in the original DOS version music and is likely
+; unintentional from the people who converted the music from the DOS version.
+; Actual song ends after measure 152.
+GM_TT10.GM = 0:235008
+
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
diff --git a/changelog.txt b/changelog.txt
index 8edba15fb4..5e1540a1e0 100644
--- a/changelog.txt
+++ b/changelog.txt
@@ -1,3 +1,44 @@
+1.8.0 (2018-04-01)
+------------------------------------------------------------------------
+(None)
+
+
+1.8.0-RC1 (2018-03-21)
+------------------------------------------------------------------------
+- Feature: [GFX] Climate-specific Action5 extra airport sprites [FS#6664] (r27976)
+- Feature: Draw vertical separators at tile distance in the train depot GUI (r27938, r27899)
+- Feature: [Build] MSVC 2017 project file generator. Most noticeable, std:c++latest is enabled (r27920, r27919, r27918, r27917)
+- Feature: [Build] Project file generator for kdevelop 4/5 [FS#6577] (r27897)
+- Feature: Add option to close windows with right click [FS#4950] (r27826, r27825)
+- Feature: Vehicle Group Info: Add profits and occupancy display to group vehicle list (r27822)
+- Feature: Display aircraft type in vehicle preview/purchase/detail windows (r27802, r27799, r27797)
+- Change: [NewGRF] Various performance improvements to resolving VA2 (r27989, r27985, r27984, r27983, r27982)
+- Change: [NewGRF] Increase maximum allowed vehicle sprite size to reduce clipping of ships (r27987)
+- Change: Check companies for bankruptcy before subtracting reoccuring monthly costs [FS#6679] (r27981)
+- Change: [GFX] Replace the office building sprite on various toyland airports with a better fitting sprite [FS#6664] (r27977)
+- Change: [GFX] The switch-toolbar icon contained pixels from the fire cycle. Replace the whole icon with a new version [FS#6654] (r27961)
+- Change: Reword texts in industry view, when stockpiling is used (r27952)
+- Change: Remove the gap between windows when positioning them after opening [FS#6568] (r27934, r27900)
+- Change: [Build] Enable usage of static_assert for MSVC (r27916)
+- Change: [Build] Preserve PKG_CONFIG_PATH and PKG_CONFIG_LIBDIR environment variables in config.cache file [FS#6614] (r27902)
+- Change: Do not cancel headquarter construction and engine-preview-query when shift-clicking (r27889)
+- Change: Parse extmidi command string for parameters to pass on (r27834)
+- Change: Draw images in centre of buttons (r27829, r27821)
+- Fix: Store the map variety setting in the savegame like the other mapgen settings, so restarting maps considers it [FS#6673] (r27978)
+- Fix: Hair selection was missing one option [FS#6642] (r27975)
+- Fix: Avoid tile operations outside map border when building lock [FS#6662] (r27973)
+- Fix: Catenary sprites got mixed up for depots [FS#6670] (r27972)
+- Fix: Make automatic window-positioning RTL-aware (r27934, r27900)
+- Fix: Automatic window-positioning now uses GUI-scale/style dependent sizes/distances instead of fixed pixel values (r27934, r27900)
+- Fix: [NewGRF] While executing random triggers, var 5F should include the new triggers (r27928)
+- Fix: [NewGRF] Reset used random triggers only after all A123 chains have been resolved, so that all RA2 in all chains can test the shared triggers (r27928)
+- Fix: [NewGRF] Industry random triggers are stored per tile, even when randomising the shared random bits of the parent industry (r27928)
+- Fix: [NPF] Reserved track bits were not accounted for when trying to find any safe position (r27912)
+- Fix: Do not modify argv[0] [FS#6575] (r27886)
+- Fix: Do not search directories when opening ini files as we already have their full path [FS#6421] (r27816)
+- Fix: Road tunnel/bridge heads have no trackbits wrt. catenary drawing (r27812)
+
+
1.7.2 (2017-12-24)
------------------------------------------------------------------------
(None)
diff --git a/config.lib b/config.lib
index f5852ea944..8de43ae929 100644
--- a/config.lib
+++ b/config.lib
@@ -31,7 +31,6 @@ set_default() {
awk="awk"
pkg_config="pkg-config"
os="DETECT"
- endian="AUTO"
cpu_type="DETECT"
config_log="config.log"
prefix_dir="/usr/local"
@@ -78,6 +77,7 @@ set_default() {
enable_builtin_depend="1"
with_makedepend="0"
with_direct_music="1"
+ with_xaudio2="1"
with_sort="1"
with_iconv="1"
with_midi=""
@@ -88,7 +88,7 @@ set_default() {
with_icu_layout="1"
with_icu_sort="1"
static_icu="0"
- with_psp_config="1"
+ with_uniscribe="1"
with_threads="1"
with_distcc="1"
with_ccache="1"
@@ -112,7 +112,6 @@ set_default() {
awk
pkg_config
os
- endian
cpu_type
config_log
prefix_dir
@@ -158,6 +157,7 @@ set_default() {
enable_builtin_depend
with_makedepend
with_direct_music
+ with_xaudio2
with_sort
with_iconv
with_midi
@@ -168,7 +168,7 @@ set_default() {
with_icu_layout
with_icu_sort
static_icu
- with_psp_config
+ with_uniscribe
with_threads
with_distcc
with_ccache
@@ -230,9 +230,6 @@ detect_params() {
--lipo) prev_p="lipo";;
--lipo=*) lipo="$optarg";;
- --endian) prev_p="endian";;
- --endian=*) endian="$optarg";;
-
# Alias --prefix with --prefix-dir, for compatibility with GNU autotools
@@ -412,9 +409,9 @@ detect_params() {
--static-libicu) static_icu="1";;
--static-libicu=*) static_icu="$optarg";;
- --with-psp-config) with_psp_config="2";;
- --without-psp-config) with_psp_config="0";;
- --with-psp-config=*) with_psp_config="$optarg";;
+ --with-uniscribe) with_uniscribe="2";;
+ --without-uniscribe) with_uniscribe="0";;
+ --with-uniscribe=*) with_uniscribe="$optarg";;
--disable-builtin-depend) enable_builtin_depend="0";;
--enable-builtin-depend) enable_builtin_depend="2";;
@@ -428,6 +425,10 @@ detect_params() {
--without-direct-music) with_direct_music="0";;
--with-direct-music=*) with_direct_music="$optarg";;
+ --with-xaudio2) with_xaudio2="2";;
+ --without-xaudio2) with_xaudio2="0";;
+ --with-xaudio2=*) with_xaudio2="$optarg";;
+
--with-sort) with_sort="2";;
--without-sort) with_sort="0";;
--with-sort=*) with_sort="$optarg";;
@@ -561,7 +562,6 @@ check_params() {
# Some params want to be in full uppercase, else they might not work as
# expected.. fix that here
- endian=`echo $endian | tr '[a-z]' '[A-Z]'`
os=`echo $os | tr '[a-z]' '[A-Z]'`
cpu_type=`echo $cpu_type | tr '[a-z]' '[A-Z]'`
@@ -577,21 +577,10 @@ check_params() {
# Check if all params have valid values
- # Endian only allows AUTO, LE and, BE
- if [ -z "`echo $endian | egrep '^(AUTO|LE|BE|PREPROCESSOR)$'`" ]; then
- log 1 "configure: error: invalid option --endian=$endian"
- log 1 " Available options are: --endian=[AUTO|LE|BE]"
- exit 1
- fi
- if [ "$endian" = "PREPROCESSOR" ] && [ "$os" != "OSX" ]; then
- log 1 "configure: error: invalid option --endian=$endian"
- log 1 " PREPROCESSOR is only available for OSX"
- exit 1
- fi
- # OS only allows DETECT, UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP
- if [ -z "`echo $os | egrep '^(DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP)$'`" ]; then
+ # OS only allows DETECT, UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, and DOS
+ if [ -z "`echo $os | egrep '^(DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS)$'`" ]; then
log 1 "configure: error: invalid option --os=$os"
- log 1 " Available options are: --os=[DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS|WINCE|PSP]"
+ log 1 " Available options are: --os=[DETECT|UNIX|OSX|FREEBSD|DRAGONFLY|OPENBSD|NETBSD|HPUX|MORPHOS|BEOS|HAIKU|SUNOS|CYGWIN|MINGW|OS2|DOS]"
exit 1
fi
# cpu_type can be either 32 or 64
@@ -790,13 +779,13 @@ check_params() {
exit 1
fi
else
- if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
+ if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then
log 1 "checking GDI video driver... found"
else
log 1 "checking GDI video driver... not Windows, skipping"
fi
- if [ -z "$allegro_config" ] && [ -z "$sdl_config" ] && [ "$with_cocoa" = 0 ] && [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
+ if [ -z "$allegro_config" ] && [ -z "$sdl_config" ] && [ "$with_cocoa" = 0 ] && [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
log 1 "configure: error: no video driver development files found"
log 1 " If you want a dedicated server use --enable-dedicated as parameter"
exit 1
@@ -896,13 +885,34 @@ check_params() {
fi
fi
+ if [ "$with_uniscribe" != "0" ]; then
+ if [ "$os" != "MINGW" ]; then
+ if [ "$with_uniscribe" != "1" ]; then
+ log 1 "configure: error: Uniscribe is only supported on native Win32 targets"
+ exit 1
+ fi
+ with_uniscribe="0"
+
+ log 1 "checking Uniscribe text layout... not Windows, skipping"
+ else
+ log 1 "checking Uniscribe text layout... found"
+
+ # Don't use ICU unless forced.
+ if [ "$with_icu_layout" = "1" ]; then
+ with_icu_layout="0"
+ fi
+ if [ "$with_icu_sort" = "1" ]; then
+ with_icu_sort="0"
+ fi
+ fi
+ fi
+
detect_xdg_basedir
detect_png
detect_freetype
detect_fontconfig
detect_icu_layout
detect_icu_sort
- detect_pspconfig
detect_libtimidity
if [ "$with_direct_music" != "0" ]; then
@@ -919,13 +929,21 @@ check_params() {
fi
fi
- detect_sort
+ if [ "$with_xaudio2" != "0" ]; then
+ if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
+ if [ "$with_xaudio2" != "1" ]; then
+ log 1 "configure: error: xaudio2 is only supported on Win32 targets"
+ exit 1
+ fi
+ with_xaudio2="0"
- if [ "$os" = "OSX" ] && [ "$endian" = "AUTO" ]; then
- endian="PREPROCESSOR"
+ log 1 "checking xaudio2... not Windows, skipping"
+ else
+ check_xaudio2
+ fi
fi
- log 1 "checking endianness... $endian"
+ detect_sort
# Suppress language errors when there is a version defined, indicating a release
# It just isn't pretty if any release produces warnings in the languages.
@@ -1137,7 +1155,7 @@ check_params() {
fi
if [ "$personal_dir" = "1" ]; then
- if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ] || [ "$os" = "DOS" ] || [ "$os" = "HAIKU" ]; then
+ if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "DOS" ] || [ "$os" = "HAIKU" ]; then
personal_dir="OpenTTD"
elif [ "$os" = "OSX" ]; then
personal_dir="Documents/OpenTTD"
@@ -1235,14 +1253,14 @@ make_compiler_cflags() {
# $5 - name of the features variable
# Get the compiler to tell us who it is
- compiler="`$1 --version | head -n1 | cut -d' ' -f1`"
+ version_line="`$1 --version | head -n1`"
eval eval "flags=\\\$$2"
eval eval "cxxflags=\\\$$3"
eval eval "ldflags=\\\$$4"
eval eval "features=\\\$$5"
- if [ "$compiler" = "icc" ]; then
+ if [ `echo "$version_line" | cut -d' ' -f1` = "icc" ]; then
# Enable some things only for certain ICC versions
cc_version=`$1 -dumpversion | cut -c 1-4 | sed s@\\\.@@g`
@@ -1334,7 +1352,7 @@ make_compiler_cflags() {
features="$features lto"
fi
fi
- elif [ "$compiler" = "clang" ]; then
+ elif echo "$version_line" | grep -q "clang"; then
# Enable some things only for certain clang versions
cc_version="`$1 -v 2>&1 | head -n 1 | sed s@[^0-9]@@g | cut -c 1-2`"
@@ -1591,9 +1609,6 @@ make_cflags_and_ldflags() {
# Each debug level reduces the optimization by a bit
if [ $enable_debug -ge 1 ]; then
CFLAGS="$CFLAGS -g -D_DEBUG"
- if [ "$os" = "PSP" ]; then
- CFLAGS="$CFLAGS -G0"
- fi
fi
if [ $enable_debug -ge 2 ]; then
CFLAGS="$CFLAGS -fno-inline"
@@ -1670,7 +1685,7 @@ make_cflags_and_ldflags() {
fi
fi
- if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then
+ if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "OPENBSD" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "OS2" ]; then
LIBS="$LIBS -lpthread"
fi
if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ] && [ "$os" != "MORPHOS" ] && [ "$os" != "OSX" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ] && [ "$os" != "PSP" ] && [ "$os" != "OS2" ]; then
@@ -1881,19 +1896,9 @@ EOL
fi
fi
- if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ] && [ "$os" != "DOS" ] && [ "$os" != "WINCE" ]; then
+ if [ "$os" != "CYGWIN" ] && [ "$os" != "HAIKU" ] && [ "$os" != "MINGW" ] && [ "$os" != "DOS" ]; then
LIBS="$LIBS -lc"
fi
- if [ "$os" = "WINCE" ]; then
- LIBS="$LIBS -lcoredll -lcorelibc -laygshell -lws2 -e WinMainCRTStartup"
- fi
- if [ "$os" = "PSP" ]; then
- CFLAGS="$CFLAGS -I`$psp_config -p`/include"
- LDFLAGS="$LDFLAGS -L`$psp_config -p`/lib"
-
- CFLAGS="$CFLAGS -fno-exceptions -fno-rtti -D_PSP_FW_VERSION=150"
- LIBS="$LIBS -D_PSP_FW_VERSION=150 -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lpspnet -lpspnet_inet -lpspnet_apctl -lpspnet_resolver -lpsputility -lpspuser -lpspkernel -lm"
- fi
if [ "$os" = "MORPHOS" ]; then
# -Wstrict-prototypes generates much noise because of system headers
@@ -1932,14 +1937,14 @@ EOL
CFLAGS="$CFLAGS -DUNIX"
fi
# And others like Windows
- if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
+ if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then
CFLAGS="$CFLAGS -DWIN"
fi
if [ -n "$allegro_config" ]; then
CFLAGS="$CFLAGS -DWITH_ALLEGRO"
CFLAGS="$CFLAGS `$allegro_config --cflags`"
- if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
+ if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
if [ "$enable_static" != "0" ]; then
LIBS="$LIBS `$allegro_config --static --libs`"
else
@@ -1952,7 +1957,7 @@ EOL
CFLAGS="$CFLAGS -DWITH_SDL"
# SDL must not add _GNU_SOURCE as it breaks many platforms
CFLAGS="$CFLAGS `$sdl_config --cflags | sed 's@-D_GNU_SOURCE[^ ]*@@'`"
- if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ] && [ "$os" != "WINCE" ]; then
+ if [ "$os" != "MINGW" ] && [ "$os" != "CYGWIN" ]; then
if [ "$enable_static" != "0" ]; then
LIBS="$LIBS `$sdl_config --static-libs`"
else
@@ -2049,7 +2054,7 @@ EOL
CFLAGS="$CFLAGS `$freetype_config --cflags | tr '\n\r' ' '`"
if [ "$enable_static" != "0" ]; then
- LIBS="$LIBS `$freetype_config --libs --static | tr '\n\r' ' '`"
+ LIBS="$LIBS `$freetype_config --libs --static | tr '\n\r' ' '` -lfreetype"
else
LIBS="$LIBS `$freetype_config --libs | tr '\n\r' ' '`"
fi
@@ -2077,6 +2082,10 @@ EOL
fi
fi
+ if [ "$with_uniscribe" != "0" ]; then
+ CFLAGS="$CFLAGS -DWITH_UNISCRIBE"
+ LIBS="$LIBS -lusp10"
+ fi
if [ "$with_direct_music" != "0" ]; then
CFLAGS="$CFLAGS -DWIN32_ENABLE_DIRECTMUSIC_SUPPORT"
@@ -2088,6 +2097,10 @@ EOL
fi
fi
+ if [ "$with_xaudio2" != "0" ]; then
+ CFLAGS="$CFLAGS -DWITH_XAUDIO2"
+ fi
+
if [ -n "$libtimidity_config" ]; then
CFLAGS="$CFLAGS -DLIBTIMIDITY"
CFLAGS="$CFLAGS `$libtimidity_config --cflags | tr '\n\r' ' '`"
@@ -2388,7 +2401,7 @@ check_cxx_host() {
}
check_windres() {
- if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
+ if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then
check_compiler "host windres" "windres" "$host" "$windres" "$WINDRES" "windres" "windres" "2" "-V"
fi
}
@@ -2455,9 +2468,7 @@ check_direct_music() {
echo "
#include
#include
- #include
#include
- #include
int main(int argc, char *argv[]) { }" > direct_music.test.c
$cxx_host $CFLAGS direct_music.test.c -o direct_music.test 2> /dev/null
res=$?
@@ -2476,6 +2487,35 @@ check_direct_music() {
fi
}
+check_xaudio2() {
+ echo "
+ #include
+
+ #undef NTDDI_VERSION
+ #undef _WIN32_WINNT
+
+ #define NTDDI_VERSION NTDDI_WIN8
+ #define _WIN32_WINNT _WIN32_WINNT_WIN8
+
+ #include
+ int main(int argc, char *argv[]) { }" > xaudio2.test.c
+ $cxx_host $CFLAGS xaudio2.test.c -o xaudio2.test 2> /dev/null
+ res=$?
+ rm -f xaudio2.test.c xaudio2.test
+
+ if [ "$res" != "0" ]; then
+ if [ "$with_xaudio2" != "1" ]; then
+ log 1 "configure: error: xaudio2 is not available on this system"
+ exit 1
+ fi
+ with_xaudio2="0"
+
+ log 1 "checking xaudio2... not found"
+ else
+ log 1 "checking xaudio2... found"
+ fi
+}
+
check_makedepend() {
if [ "$enable_builtin_depend" != "0" ]; then
with_makedepend="0"
@@ -2594,7 +2634,7 @@ detect_awk() {
detect_os() {
if [ "$os" = "DETECT" ]; then
- # Detect UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, HPUX, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP
+ # Detect UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, HPUX, MORPHOS, BEOS, SUNOS, CYGWIN, MINGW, OS2, and DOS
# Try first via dumpmachine, then via uname
os=`echo "$host" | tr '[A-Z]' '[a-z]' | $awk '
@@ -2614,8 +2654,6 @@ detect_os() {
/mingw/ { print "MINGW"; exit}
/os2/ { print "OS2"; exit}
/dos/ { print "DOS"; exit}
- /wince/ { print "WINCE"; exit}
- /psp/ { print "PSP"; exit}
'`
if [ -z "$os" ]; then
@@ -2641,7 +2679,7 @@ detect_os() {
if [ -z "$os" ]; then
log 1 "detecting OS... none detected"
log 1 "I couldn't detect your OS. Please use --os=OS to force one"
- log 1 "Allowed values are: UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, HPUX, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, DOS, WINCE, and PSP"
+ log 1 "Allowed values are: UNIX, OSX, FREEBSD, DRAGONFLY, OPENBSD, NETBSD, MORPHOS, HPUX, BEOS, HAIKU, SUNOS, CYGWIN, MINGW, OS2, and DOS"
exit 1
fi
@@ -2900,6 +2938,11 @@ detect_library() {
eval "res=\$$2"
if [ -z "$res" ]; then
log 2 " trying /mingw/include/$4$5... no"
+ eval "$2=`ls -1 /mingw$cpu_type/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
+ fi
+ eval "res=\$$2"
+ if [ -z "$res" ]; then
+ log 2 " trying /mingw$cpu_type/include/$4$5... no"
eval "$2=`ls -1 /opt/local/include/$4*.h 2>/dev/null | egrep \"\/$5\$\"`"
fi
eval "res=\$$2"
@@ -2948,6 +2991,11 @@ detect_library() {
eval "res=\$$2"
if [ -z "$res" ]; then
log 2 " trying /mingw/lib/$3... no"
+ eval "$2=`ls /mingw$cpu_type/lib/*.a 2>/dev/null | egrep \"\/$3\$\"`"
+ fi
+ eval "res=\$$2"
+ if [ -z "$res" ]; then
+ log 2 " trying /mingw$cpu_type/lib/$3... no"
log 1 "configure: error: $2 couldn't be found"
log 1 "configure: error: you requested a static link, but I can't find $3"
@@ -3084,7 +3132,7 @@ detect_fontconfig() {
fontconfig_config=""
return 0
fi
- if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "WINCE" ]; then
+ if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ]; then
log 1 "checking libfontconfig... WIN32, skipping"
fontconfig_config=""
return 0
@@ -3107,55 +3155,6 @@ detect_icu_sort() {
detect_pkg_config "$with_icu_sort" "icu-i18n" "icu_sort_config" "4.8" "1"
}
-detect_pspconfig() {
- # 0 means no, 1 is auto-detect, 2 is force
- if [ "$with_psp_config" = "0" ]; then
- log 1 "checking psp-config... disabled"
-
- psp_config=""
- return 0
- fi
-
- if [ "$with_psp_config" = "1" ] && [ "$os" != "PSP" ]; then
- log 1 "checking psp-config... not PSP, skipping"
-
- psp_config="";
- return 0
- fi
-
- if [ "$os" != "PSP" ]; then
- log 1 "checking psp-config... not PSP"
-
- log 1 "configure: error: psp-config is only supported for PSP"
- exit 1
- fi
-
- if [ "$with_psp_config" = "1" ] || [ "$with_psp_config" = "" ] || [ "$with_psp_config" = "2" ]; then
- psp_config="psp-config"
- else
- psp_config="$with_psp_config"
- fi
-
- version=`$psp_config -p 2>/dev/null`
- ret=$?
- log 2 "executing $psp_config -p"
- log 2 " returned $version"
- log 2 " exit code $ret"
-
- if [ -z "$version" ] || [ "$ret" != "0" ]; then
- log 1 "checking psp-config... not found"
- log 1 "configure: error: psp-config couldn't be found"
-
- # It was forced, so it should be found.
- if [ "$with_psp_config" != "1" ]; then
- log 1 "configure: error: you supplied '$with_psp_config', but it seems invalid"
- fi
- exit 1
- fi
-
- log 1 "checking psp-config... found"
-}
-
detect_iconv() {
# 0 means no, 1 is auto-detect, 2 is force
if [ "$with_iconv" = "0" ]; then
@@ -3521,17 +3520,14 @@ make_sed() {
s@!!INSTALL_DIR!!@$install_dir@g;
s@!!BINARY_NAME!!@$binary_name@g;
s@!!STRGEN!!@$STRGEN@g;
- s@!!ENDIAN_CHECK!!@$ENDIAN_CHECK@g;
s@!!DEPEND!!@$DEPEND@g;
s@!!SETTINGSGEN!!@$SETTINGSGEN@g;
- s@!!ENDIAN_FORCE!!@$endian@g;
s@!!STAGE!!@$STAGE@g;
s@!!MAKEDEPEND!!@$makedepend@g;
s@!!CFLAGS_MAKEDEP!!@$cflags_makedep@g;
s@!!SORT!!@$sort@g;
s@!!CONFIG_CACHE_COMPILER!!@config.cache.compiler@g;
s@!!CONFIG_CACHE_LINKER!!@config.cache.linker@g;
- s@!!CONFIG_CACHE_ENDIAN!!@config.cache.endian@g;
s@!!CONFIG_CACHE_SOURCE!!@config.cache.source@g;
s@!!CONFIG_CACHE_VERSION!!@config.cache.version@g;
s@!!CONFIG_CACHE_SOURCE_LIST!!@config.cache.source.list@g;
@@ -3767,8 +3763,7 @@ showhelp() {
echo " --os=OS the OS we are compiling for [DETECT]"
echo " DETECT/UNIX/OSX/FREEBSD/DRAGONFLY/OPENBSD/"
echo " NETBSD/MORPHOS/HPUX/BEOS/SUNOS/CYGWIN/"
- echo " MINGW/OS2/DOS/WINCE/PSP/HAIKU"
- echo " --endian=ENDIAN set the endian of the HOST (AUTO/LE/BE)"
+ echo " MINGW/OS2/DOS/HAIKU"
echo ""
echo "Paths:"
echo " --prefix-dir=dir specifies the prefix for all installed"
@@ -3864,7 +3859,6 @@ showhelp() {
echo " --static-icu try to link statically (libsicu instead of"
echo " libicu; can fail as the new name is guessed)"
echo " --with-iconv[=iconv-path] enables iconv support"
- echo " --with-psp-config[=psp-config] enables psp-config support (PSP ONLY)"
echo " --disable-builtin-depend disable use of builtin deps finder"
echo " --with-makedepend[=makedepend] enables makedepend support"
echo " --with-ccache enables ccache support"
diff --git a/configure b/configure
index 5edbca1867..7ca36480d3 100755
--- a/configure
+++ b/configure
@@ -75,13 +75,12 @@ save_params
make_cflags_and_ldflags
EXE=""
-if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "OS2" ] || [ "$os" = "DOS" ] || [ "$os" = "WINCE" ]; then
+if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "OS2" ] || [ "$os" = "DOS" ]; then
EXE=".exe"
fi
TTD="openttd$EXE"
STRGEN="strgen$EXE"
-ENDIAN_CHECK="endian_check$EXE"
DEPEND="depend$EXE"
SETTINGSGEN="settings_gen$EXE"
@@ -114,7 +113,6 @@ AWKCOMMAND='
if ($0 == "PNG" && "'$png_config'" == "") { next; }
if ($0 == "OSX" && "'$os'" != "OSX") { next; }
if ($0 == "OS2" && "'$os'" != "OS2") { next; }
- if ($0 == "PSP" && "'$os'" != "PSP") { next; }
if ($0 == "DEDICATED" && "'$enable_dedicated'" != "1") { next; }
if ($0 == "AI" && "'$enable_ai'" == "0") { next; }
if ($0 == "COCOA" && "'$with_cocoa'" == "0") { next; }
@@ -124,7 +122,6 @@ AWKCOMMAND='
if ($0 == "WIN32" && "'$os'" != "MINGW" &&
"'$os'" != "CYGWIN" && "'$os'" != "MSVC") { next; }
if ($0 == "MORPHOS" && "'$os'" != "MORPHOS") { next; }
- if ($0 == "WINCE" && "'$os'" != "WINCE") { next; }
if ($0 == "MSVC" && "'$os'" != "MSVC") { next; }
if ($0 == "DIRECTMUSIC" && "'$with_direct_music'" == "0") { next; }
if ($0 == "LIBTIMIDITY" && "'$libtimidity'" == "" ) { next; }
diff --git a/docs/Readme_Windows_MSVC.txt b/docs/Readme_Windows_MSVC.txt
index 65701e0e86..00896f00b9 100644
--- a/docs/Readme_Windows_MSVC.txt
+++ b/docs/Readme_Windows_MSVC.txt
@@ -1,27 +1,24 @@
Compiling OpenTTD using Microsoft Visual C++
-Last updated: 2010-01-03
+Last updated: 2018-03-21
--------------------------------------------
PLEASE READ THE ENTIRE DOCUMENT BEFORE DOING ANY ACTUAL CHANGES!!
SUPPORTED MSVC COMPILERS
------------------------
-OpenTTD includes projects for MSVC 2005.NET and MSVC 2008.NET. Both will
-compile out of the box, providing you have the required libraries/headers;
-which ones, see below. There is no support for VS6 or MSVC 2002, or
-MSVC 2003.NET. You are therefore strongly encouraged to either upgrade to
-MSVC 2008 Express (free) or use GCC.
+OpenTTD includes projects for Microsoft Visual Studio 2005 and later.
+This is the earliest compiler supported, Visual C++ 2003, Visual C++ 6.0,
+or earlier, will not compile OpenTTD.
+You can download the free Visual Studio Community Edition from Microsoft.
1) REQUIRED FILES
-----------------
You might already have some of the files already installed, so check before
-downloading; mostly because the DirectX SDK and Platform SDK are about
-500MB each.
+downloading; mostly because the Platform SDK is about 500MB.
Download the following files:
* openttd-useful.zip (http://binaries.openttd.org/extra/openttd-useful/)
- * DirectX 8.1 SDK (http://neuron.tuke.sk/~mizanin/eng/Dx81sdk-include-lib.rar) (or alternatively the latest DirectX SDK from Microsoft)
* MS Windows Platform SDK (http://www.microsoft.com/downloads/details.aspx?FamilyId=A55B6B43-E24F-4EA3-A93E-40C0EC4F68E5&displaylang=en)
* afxres.h (http://www-d0.fnal.gov/d0dist/dist/packages/d0ve/devel/windows/AFXRES.H)
@@ -81,12 +78,16 @@ See section 4.1 of README.md for the required 3rdparty files and how to install
4) COMPILING
------------
-Open trunk/openttd_vs[89]0.sln
+Open the appropriate "sln" (Solution) file for your version of Visual Studio:
+ - VS 2005: projects/openttd_vs80.sln
+ - VS 2008: projects/openttd_vs90.sln
+ - VS 2010: projects/openttd_vs100.sln
+ - VS 2015: projects/openttd_vs140.sln
Set the build mode to 'Release' in
Build > Configuration manager > Active solution configuration > select "Release"
Compile...
-If everything works well the binary should be in trunk/objs/Win[32|64]/Release/openttd.exe
+If everything works well the binary should be in objs/Win[32|64]/Release/openttd.exe
5) EDITING, CHANGING SOURCE CODE
diff --git a/docs/landscape.html b/docs/landscape.html
index f60e859fc3..a345128ea4 100644
--- a/docs/landscape.html
+++ b/docs/landscape.html
@@ -226,7 +226,7 @@
diff --git a/docs/landscape_grid.html b/docs/landscape_grid.html
index d34fe9840c..b801b334dd 100644
--- a/docs/landscape_grid.html
+++ b/docs/landscape_grid.html
@@ -37,6 +37,7 @@ the array so you can quickly see what is used and what is not.
m5 - 8 bits in size, is used for general storage
m6 - 8 bits in size, is used for general storage
m7 - 8 bits in size, is used for general storage
+
m8 - 16 bits in size, is used for general storage
@@ -52,6 +53,7 @@ the array so you can quickly see what is used and what is not.
m5 (8)
m6 (8)
m7 (8)
+
m8 (16)
bits
@@ -64,6 +66,7 @@ the array so you can quickly see what is used and what is not.
7654 3210
7654 3210
7654 3210
+
FEDC BA98 7654 3210
0
@@ -77,6 +80,7 @@ the array so you can quickly see what is used and what is not.
XXXX XXXX
OOOX XXOO
OOOO OOOO
+
OOOO OOOO OOOO OOOO
farmland
@@ -89,6 +93,7 @@ the array so you can quickly see what is used and what is not.
-inherit-
OOOX XXOO
OOOO OOOO
+
-inherit-
1
@@ -97,11 +102,12 @@ the array so you can quickly see what is used and what is not.
XXXX XXXX
OOOX XXXX
OOOO XXXX OOOO OOOO
-
OOOO XXXX
+
OOOO OOOO
OOOO XXXX
XXXX XXXX
OOOO OOOO
OOOO OOOO
+
OOOO OOOO OOXX XXXX
rail with signals
@@ -109,11 +115,12 @@ the array so you can quickly see what is used and what is not.
-inherit-
-inherit-
OOOO XXXX XXXX XXXX
-
XXXX XXXX
+
XXXX OOOO
XXXX XXXX
-inherit-
OOOO OOOO
OOOO OOOO
+
-inherit-
depot
@@ -121,11 +128,12 @@ the array so you can quickly see what is used and what is not.
-inherit-
-inherit-
XXXX XXXX XXXX XXXX
-
OOOO XXXX
+
-inherit-
OOOO XXXX
XXOX OOXX
OOOO OOOO
OOOO OOOO
+
-inherit-
2
@@ -139,6 +147,7 @@ the array so you can quickly see what is used and what is not.
XXXX XXXX
OOXX XOOO
XXXO XXXX
+
OOOO OOOO OOOO OOOO
level crossing
@@ -146,11 +155,12 @@ the array so you can quickly see what is used and what is not.
-inherit-
-inherit-
-inherit-
-
XXXX XXXX
+
XXXX OOOO
-inherit-
-
XXXX OOOX
+
XXXX OOOX
OOXX XOOO
XXXX XXXX
+
OOOO OOOO OOXX XXXX
road depot
@@ -163,6 +173,7 @@ the array so you can quickly see what is used and what is not.
XXOO OOXX
OOOO OOOO
XXXO XXXX
+
-inherit-
3
@@ -176,6 +187,7 @@ the array so you can quickly see what is used and what is not.
XXXX XXXX
XXXX XXOO
XXXX XXXX
+
OOOO OOOO OOOO OOOO
4
@@ -189,6 +201,7 @@ the array so you can quickly see what is used and what is not.
XXOO OXXX
OOOO OOOO
OOOO OOOO
+
OOOO OOOO OOOO OOOO
5
@@ -197,11 +210,12 @@ the array so you can quickly see what is used and what is not.
XXXX XXXX
OXXX XXXX
XXXX XXXX XXXX XXXX
-
XXXX XXXX
+
XXXX OOOO
XXXX XXXX
XXXX XXXX
OOXX XXOO
XXXX XXXX
+
OOOO OOOO OOXX XXXX
rail waypoint
@@ -214,6 +228,7 @@ the array so you can quickly see what is used and what is not.
-inherit-
-inherit-
-inherit-
+
-inherit-
road stop
@@ -226,6 +241,7 @@ the array so you can quickly see what is used and what is not.
~~~~ ~XXX
OOXX XOOO
XXOX XXXX
+
-inherit-
dock
@@ -238,6 +254,7 @@ the array so you can quickly see what is used and what is not.
~~~~ ~XXX
OOXX XOOO
OOOO OOOO
+
-inherit-
airport
@@ -250,6 +267,7 @@ the array so you can quickly see what is used and what is not.
XXXX XXXX
OOXX XOOO
XXXX XXXX
+
-inherit-
buoy
@@ -262,6 +280,7 @@ the array so you can quickly see what is used and what is not.
~~~~ ~~~~
OOXX XOOO
OOOO OOOO
+
-inherit-
oilrig
@@ -274,6 +293,7 @@ the array so you can quickly see what is used and what is not.
~~~~ ~~~~
OOXX XOOO
OOOO OOOO
+
-inherit-
6
@@ -287,6 +307,7 @@ the array so you can quickly see what is used and what is not.
X~~X XXXX
OOOO OOOO
OOOO OOOO
+
OOOO OOOO OOOO OOOO
canal, river
@@ -299,6 +320,7 @@ the array so you can quickly see what is used and what is not.
-inherit-
OOOO OOOO
OOOO OOOO
+
-inherit-
shipdepot
@@ -311,6 +333,7 @@ the array so you can quickly see what is used and what is not.
-inherit-
OOOO OOOO
OOOO OOOO
+
-inherit-
8
@@ -324,6 +347,7 @@ the array so you can quickly see what is used and what is not.
XXXX XXXX
OOXX XXOO
XXXX XXXX
+
OOOO OOOO OOOO OOOO
9
@@ -332,11 +356,12 @@ the array so you can quickly see what is used and what is not.
XXXX XXXX
OOOX XXXX
OOOO OOOO OOOO OOOO
-
XXXX XXXX
+
XXXX OOOO
OOOO OOOO
XOOX XXXX
OOOO OOOO
XXXX XXXX
+
OOOO OOOO OOXX XXXX
bridge ramp
@@ -349,6 +374,7 @@ the array so you can quickly see what is used and what is not.
-inherit-
OOXX XXOO
-inherit-
+
-inherit-
A
@@ -362,6 +388,7 @@ the array so you can quickly see what is used and what is not.
XXXX XXXX
OOOO OOOO
XXXX XXXX
+
OOOO OOOO OOOO OOOO
diff --git a/docs/obm_format.txt b/docs/obm_format.txt
index 40f829a522..45fe5f879e 100644
--- a/docs/obm_format.txt
+++ b/docs/obm_format.txt
@@ -45,12 +45,15 @@ description.en_US = howdie
; The file names are case sensitive.
; You can have empty file names; in that case no song will be loaded
; for that 'entry'.
+; If you want to load music from the MPS DOS music driver "cat" format,
+; specify just the name of the .cat file the song is located in, then
+; fill out the "catindex" section.
[files]
; The theme song for OpenTTD
theme = THEME_SONG.GM
; The songs in the 'old style' category
-old_0 =
-old_1 =
+old_0 = GM.CAT
+old_1 = GM.CAT
old_2 =
old_3 =
old_4 =
@@ -86,9 +89,17 @@ ezy_9 =
; Note that the list of files is case sensitive. Each file listed in the
; files section must be listed here with it's song name, otherwise you
; will get a lot of warnings when starting OpenTTD.
+; You don't need to fill this out for "cat" format music, the song names
+; are loaded directly from the file in that case.
[names]
THEME_SONG.GM = Tycoon DELUXE Theme
+; If you are loading music from the DOS version "cat" format, specify
+; which index into the file the song has.
+[catindex]
+old_0 = 1
+old_1 = 3
+
; The md5s section lists the MD5 checksum for the files that replace them.
; Note that the list of files is case sensitive. Each file listed in the
; files section must be listed here with it's MD5 checksum, otherwise you
@@ -96,6 +107,13 @@ THEME_SONG.GM = Tycoon DELUXE Theme
[md5s]
THEME_SONG.GM = 45cfec1b9d8c7a0ad45e755833cbf221
+; If a song needs to have parts of the start or end cut off to avoid long
+; silences, you can specify MIDI tick codes for start:end of the actual
+; music part for each file here.
+; Not all music drivers might support this feature.
+[timingtrim]
+THEME_SONG.GM = 768:53760
+
; The origin section provides the possibility to put and extra line into
; the warning that a file is missing/corrupt. This can be used to tell
; them where to find it. It works on the filename specified in the
diff --git a/known-bugs.txt b/known-bugs.txt
index e76229e722..e12e0a19fe 100644
--- a/known-bugs.txt
+++ b/known-bugs.txt
@@ -17,7 +17,7 @@ that are the same as these. If you do, do not act surprised, because
we WILL flame you!!
The current list of known bugs that we intend to fix can be found in our
-bug tracking system at: http://bugs.openttd.org
+bug tracking system at: https://github.com/OpenTTD/OpenTTD/issues
Also check the closed bugs when searching for your bug in this system as
we might have fixed the bug in the mean time.
diff --git a/media/baseset/orig_dos.obm b/media/baseset/orig_dos.obm
new file mode 100644
index 0000000000..9920bfdbe1
--- /dev/null
+++ b/media/baseset/orig_dos.obm
@@ -0,0 +1,76 @@
+; $Id$
+;
+; This represents the original music as on the Transport
+; Tycoon Deluxe for DOS CD.
+;
+[metadata]
+name = original_dos
+shortname = TTDD
+version = 1
+!! description STR_BASEMUSIC_DOS_DESCRIPTION
+
+[files]
+theme = gm.cat
+old_0 = gm.cat
+old_1 = gm.cat
+old_2 = gm.cat
+old_3 = gm.cat
+old_4 = gm.cat
+old_5 = gm.cat
+old_6 = gm.cat
+old_7 = gm.cat
+old_8 =
+old_9 =
+new_0 = gm.cat
+new_1 = gm.cat
+new_2 = gm.cat
+new_3 = gm.cat
+new_4 = gm.cat
+new_5 = gm.cat
+new_6 = gm.cat
+new_7 =
+new_8 =
+new_9 =
+ezy_0 = gm.cat
+ezy_1 = gm.cat
+ezy_2 = gm.cat
+ezy_3 = gm.cat
+ezy_4 = gm.cat
+ezy_5 = gm.cat
+ezy_6 =
+ezy_7 =
+ezy_8 =
+ezy_9 =
+
+[md5s]
+gm.cat = 7a29d2d0c4f7d2e03091ffa9b2bdfffb
+
+[catindex]
+theme = 0
+old_0 = 1
+old_1 = 8
+old_2 = 2
+old_3 = 9
+old_4 = 14
+old_5 = 15
+old_6 = 19
+old_7 = 13
+new_0 = 6
+new_1 = 11
+new_2 = 10
+new_3 = 17
+new_4 = 21
+new_5 = 18
+new_6 = 5
+ezy_0 = 12
+ezy_1 = 7
+ezy_2 = 16
+ezy_3 = 3
+ezy_4 = 20
+ezy_5 = 4
+
+[names]
+; Names get read from the CAT file
+
+[origin]
+default = You can find it on your Transport Tycoon Deluxe CD-ROM.
diff --git a/media/baseset/orig_tto.obm b/media/baseset/orig_tto.obm
new file mode 100644
index 0000000000..ff600d00f6
--- /dev/null
+++ b/media/baseset/orig_tto.obm
@@ -0,0 +1,71 @@
+; $Id$
+;
+; This represents the original music as on the Transport
+; Tycoon (with World Editor) for DOS CD.
+;
+[metadata]
+name = original_tto
+shortname = TTOD
+version = 1
+!! description STR_BASEMUSIC_TTO_DESCRIPTION
+
+[files]
+theme = gm-tto.cat
+old_0 = gm-tto.cat
+old_1 = gm-tto.cat
+old_2 = gm-tto.cat
+old_3 = gm-tto.cat
+old_4 = gm-tto.cat
+old_5 = gm-tto.cat
+old_6 = gm-tto.cat
+old_7 = gm-tto.cat
+old_8 =
+old_9 =
+new_0 = gm-tto.cat
+new_1 = gm-tto.cat
+new_2 = gm-tto.cat
+new_3 = gm-tto.cat
+new_4 = gm-tto.cat
+new_5 = gm-tto.cat
+new_6 = gm-tto.cat
+new_7 = gm-tto.cat
+new_8 =
+new_9 =
+ezy_0 =
+ezy_1 =
+ezy_2 =
+ezy_3 =
+ezy_4 =
+ezy_5 =
+ezy_6 =
+ezy_7 =
+ezy_8 =
+ezy_9 =
+
+[catindex]
+theme = 0
+old_0 = 1
+old_1 = 6
+old_2 = 2
+old_3 = 7
+old_4 = 11
+old_5 = 12
+old_6 = 15
+old_7 = 10
+new_0 = 4
+new_1 = 5
+new_2 = 9
+new_3 = 8
+new_4 = 13
+new_5 = 16
+new_6 = 14
+new_7 = 3
+
+[md5s]
+gm-tto.cat = 26e85ff84b0063aa5da05dd4698fc76e
+
+[names]
+; Names get read from the CAT file
+
+[origin]
+default = You can find it on your Transport Tycoon CD-ROM.
diff --git a/media/baseset/orig_win.obm b/media/baseset/orig_win.obm
index 8b35b6de9d..b5d4b024ed 100644
--- a/media/baseset/orig_win.obm
+++ b/media/baseset/orig_win.obm
@@ -90,5 +90,17 @@ GM_TT19.GM = Funk Central
GM_TT20.GM = Jammit
GM_TT21.GM = Movin' On
+; MIDI timecodes where the playback should attemp to start and stop short.
+; This is to allow fixing undesired silences in original MIDI files.
+; However not all music drivers may support this.
+[timingtrim]
+; Theme has two beats silence at the beginning which prevents clean looping.
+GM_TT00.GM = 768:53760
+; Can't Get There From Here from the Windows version has a long silence at the end,
+; followed by a solo repeat. This isn't in the original DOS version music and is likely
+; unintentional from the people who converted the music from the DOS version.
+; Actual song ends after measure 152.
+GM_TT10.GM = 0:235008
+
[origin]
default = You can find it on your Transport Tycoon Deluxe CD-ROM.
diff --git a/os/windows/installer/install.nsi b/os/windows/installer/install.nsi
index cb93d4d04d..2c4c6f94b2 100644
--- a/os/windows/installer/install.nsi
+++ b/os/windows/installer/install.nsi
@@ -304,6 +304,7 @@ Section /o "Copy data from Transport Tycoon Deluxe CD-ROM" Section2
; Let's copy the files with size approximation
SetOutPath "$INSTDIR\baseset"
CopyFiles "$CDDRIVE\gm\*.gm" "$INSTDIR\baseset\" 1028
+ CopyFiles "$CDDRIVE\gm.cat" "$INSTDIR\baseset\gm.cat" 415
CopyFiles "$CDDRIVE\sample.cat" "$INSTDIR\baseset\sample.cat" 1566
; Copy Windows files
CopyFiles "$CDDRIVE\trg1r.grf" "$INSTDIR\baseset\trg1r.grf" 2365
@@ -426,6 +427,8 @@ Section "Uninstall"
Delete "$INSTDIR\baseset\trgt.grf"
Delete "$INSTDIR\baseset\trgc.grf"
Delete "$INSTDIR\baseset\trgi.grf"
+ Delete "$INSTDIR\baseset\gm.cat"
+ Delete "$INSTDIR\baseset\gm-tto.cat"
Delete "$INSTDIR\baseset\*.gm"
Delete "$INSTDIR\data\sample.cat"
@@ -467,8 +470,10 @@ Section "Uninstall"
; Base sets for music
Delete "$INSTDIR\gm\orig_win.obm"
+ Delete "$INSTDIR\gm\orig_dos.obm"
Delete "$INSTDIR\gm\no_music.obm"
Delete "$INSTDIR\baseset\orig_win.obm"
+ Delete "$INSTDIR\baseset\orig_dos.obm"
Delete "$INSTDIR\baseset\no_music.obm"
; Remove remaining directories
diff --git a/projects/generate b/projects/generate
index e82559a911..28fd255527 100755
--- a/projects/generate
+++ b/projects/generate
@@ -123,7 +123,6 @@ load_main_data() {
if ($0 == "PNG" && "'$png_config'" == "") { next; }
if ($0 == "OSX" && "'$os'" != "OSX") { next; }
if ($0 == "OS2" && "'$os'" != "OS2") { next; }
- if ($0 == "PSP" && "'$os'" != "PSP") { next; }
if ($0 == "DOS" && "'$os'" != "DOS") { next; }
if ($0 == "DEDICATED" && "'$enable_dedicated'" != "1") { next; }
if ($0 == "AI" && "'$enable_ai'" == "0") { next; }
@@ -131,7 +130,6 @@ load_main_data() {
if ($0 == "BEOS" && "'$os'" != "BEOS") { next; }
if ($0 == "WIN32" && "'$os'" != "MINGW" &&
"'$os'" != "CYGWIN" && "'$os'" != "MSVC" ) { next; }
- if ($0 == "WINCE" && "'$os'" != "WINCE") { next; }
if ($0 == "MSVC" && "'$os'" != "MSVC") { next; }
if ($0 == "DIRECTMUSIC" && "'$enable_directmusic'" != "1") { next; }
if ($0 == "LIBTIMIDITY" && "'$libtimidity'" == "" ) { next; }
@@ -192,9 +190,11 @@ load_main_data() {
load_lang_data() {
RES=""
- for i in `ls $1`
+ # Windows Folder sort and Linux Folder sort are slightly different.
+ # By removing the extension and sorting it on Linux, they are the same.
+ for i in `ls $1 | sed s~.txt$~~g | sort`
do
- i=`basename $i | sed s~.txt$~~g`
+ i=`basename $i`
if [ "$i" == "english" ]
then
continue
diff --git a/projects/langs_vs100.vcxproj b/projects/langs_vs100.vcxproj
index fc77e03bec..88cce9e105 100644
--- a/projects/langs_vs100.vcxproj
+++ b/projects/langs_vs100.vcxproj
@@ -317,18 +317,18 @@
..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)..\bin\lang\slovenian.lng;%(Outputs)
-
- Generating spanish_MX language file
- ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
- ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
- ..\bin\lang\spanish_MX.lng;%(Outputs)
- Generating spanish language file..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)..\bin\lang\spanish.lng;%(Outputs)
+
+ Generating spanish_MX language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\spanish_MX.lng;%(Outputs)
+ Generating swedish language file..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
diff --git a/projects/langs_vs100.vcxproj.filters b/projects/langs_vs100.vcxproj.filters
index 0afc8c969a..bf5257ec82 100644
--- a/projects/langs_vs100.vcxproj.filters
+++ b/projects/langs_vs100.vcxproj.filters
@@ -142,10 +142,10 @@
Translations
-
+ Translations
-
+ Translations
diff --git a/projects/langs_vs140.vcxproj b/projects/langs_vs140.vcxproj
index 317fd34a11..25e7160bfb 100644
--- a/projects/langs_vs140.vcxproj
+++ b/projects/langs_vs140.vcxproj
@@ -317,18 +317,18 @@
..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)..\bin\lang\slovenian.lng;%(Outputs)
-
- Generating spanish_MX language file
- ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
- ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
- ..\bin\lang\spanish_MX.lng;%(Outputs)
- Generating spanish language file..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)..\bin\lang\spanish.lng;%(Outputs)
+
+ Generating spanish_MX language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\spanish_MX.lng;%(Outputs)
+ Generating swedish language file..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
diff --git a/projects/langs_vs140.vcxproj.filters b/projects/langs_vs140.vcxproj.filters
index 0afc8c969a..bf5257ec82 100644
--- a/projects/langs_vs140.vcxproj.filters
+++ b/projects/langs_vs140.vcxproj.filters
@@ -142,10 +142,10 @@
Translations
-
+ Translations
-
+ Translations
diff --git a/projects/langs_vs141.vcxproj b/projects/langs_vs141.vcxproj
index 2444b0e0e7..c554c6e378 100644
--- a/projects/langs_vs141.vcxproj
+++ b/projects/langs_vs141.vcxproj
@@ -317,18 +317,18 @@
..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)..\bin\lang\slovenian.lng;%(Outputs)
-
- Generating spanish_MX language file
- ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
- ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
- ..\bin\lang\spanish_MX.lng;%(Outputs)
- Generating spanish language file..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)..\bin\lang\spanish.lng;%(Outputs)
+
+ Generating spanish_MX language file
+ ..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
+ ..\src\lang\english.txt;..\objs\strgen\strgen.exe;%(AdditionalInputs)
+ ..\bin\lang\spanish_MX.lng;%(Outputs)
+ Generating swedish language file..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "%(FullPath)"
diff --git a/projects/langs_vs141.vcxproj.filters b/projects/langs_vs141.vcxproj.filters
index 0afc8c969a..bf5257ec82 100644
--- a/projects/langs_vs141.vcxproj.filters
+++ b/projects/langs_vs141.vcxproj.filters
@@ -142,10 +142,10 @@
Translations
-
+ Translations
-
+ Translations
diff --git a/projects/langs_vs80.vcproj b/projects/langs_vs80.vcproj
index e683d57353..909613b59b 100644
--- a/projects/langs_vs80.vcproj
+++ b/projects/langs_vs80.vcproj
@@ -738,21 +738,6 @@
/>
-
-
-
-
-
@@ -768,6 +753,21 @@
/>
+
+
+
+
+
diff --git a/projects/langs_vs90.vcproj b/projects/langs_vs90.vcproj
index c1f028233e..583e0f9a5d 100644
--- a/projects/langs_vs90.vcproj
+++ b/projects/langs_vs90.vcproj
@@ -739,21 +739,6 @@
/>
-
-
-
-
-
@@ -769,6 +754,21 @@
/>
+
+
+
+
+
diff --git a/projects/openttd_vs100.vcxproj b/projects/openttd_vs100.vcxproj
index de117cc40a..019fde79aa 100644
--- a/projects/openttd_vs100.vcxproj
+++ b/projects/openttd_vs100.vcxproj
@@ -102,7 +102,7 @@
Sizetrue..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- 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)
+ WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)trueSyncMultiThreaded
@@ -131,7 +131,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)true%(IgnoreSpecificDefaultLibraries)true
@@ -162,7 +162,7 @@
/MP %(AdditionalOptions)Disabled..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)
+ WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)EnableFastChecksMultiThreadedDebug
@@ -182,7 +182,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)trueLIBCMT.lib;%(IgnoreSpecificDefaultLibraries)true
@@ -216,7 +216,7 @@
Sizetrue..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- 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)
+ WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)trueSyncMultiThreaded
@@ -245,7 +245,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)true%(IgnoreSpecificDefaultLibraries)true
@@ -274,7 +274,7 @@
/MP %(AdditionalOptions)Disabled..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)
+ WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)EnableFastChecksMultiThreadedDebug
@@ -298,7 +298,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)trueLIBCMT.lib;%(IgnoreSpecificDefaultLibraries)true
@@ -481,6 +481,7 @@
+
@@ -569,6 +570,8 @@
+
+
@@ -630,6 +633,7 @@
+
@@ -683,6 +687,7 @@
+
@@ -730,6 +735,7 @@
+
@@ -791,6 +797,7 @@
+
@@ -1149,6 +1156,8 @@
+
+
@@ -1293,12 +1302,15 @@
+
+
+
diff --git a/projects/openttd_vs100.vcxproj.filters b/projects/openttd_vs100.vcxproj.filters
index ef11613ff8..911a53a864 100644
--- a/projects/openttd_vs100.vcxproj.filters
+++ b/projects/openttd_vs100.vcxproj.filters
@@ -600,6 +600,9 @@
Header Files
+
+ Header Files
+ Header Files
@@ -864,6 +867,12 @@
Header Files
+
+ Header Files
+
+
+ Header Files
+ Header Files
@@ -1047,6 +1056,9 @@
Header Files
+
+ Header Files
+ Header Files
@@ -1206,6 +1218,9 @@
Header Files
+
+ Header Files
+ Header Files
@@ -1347,6 +1362,9 @@
GUI Source Code
+
+ GUI Source Code
+ GUI Source Code
@@ -1530,6 +1548,9 @@
Widgets
+
+ Widgets
+ Widgets
@@ -2604,6 +2625,12 @@
Blitters
+
+ Blitters
+
+
+ Blitters
+ Blitters
@@ -3036,6 +3063,9 @@
Music
+
+ Music
+ Music
@@ -3048,12 +3078,18 @@
Sound
+
+ Sound
+ Windows filesWindows files
+
+ Windows files
+ Windows files
diff --git a/projects/openttd_vs100.vcxproj.in b/projects/openttd_vs100.vcxproj.in
index ab2ae133af..b2eb33d316 100644
--- a/projects/openttd_vs100.vcxproj.in
+++ b/projects/openttd_vs100.vcxproj.in
@@ -102,7 +102,7 @@
Sizetrue..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- 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)
+ WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)trueSyncMultiThreaded
@@ -131,7 +131,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)true%(IgnoreSpecificDefaultLibraries)true
@@ -162,7 +162,7 @@
/MP %(AdditionalOptions)Disabled..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)
+ WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)EnableFastChecksMultiThreadedDebug
@@ -182,7 +182,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)trueLIBCMT.lib;%(IgnoreSpecificDefaultLibraries)true
@@ -216,7 +216,7 @@
Sizetrue..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- 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)
+ WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)trueSyncMultiThreaded
@@ -245,7 +245,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)true%(IgnoreSpecificDefaultLibraries)true
@@ -274,7 +274,7 @@
/MP %(AdditionalOptions)Disabled..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)
+ WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)EnableFastChecksMultiThreadedDebug
@@ -298,7 +298,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)trueLIBCMT.lib;%(IgnoreSpecificDefaultLibraries)true
diff --git a/projects/openttd_vs140.vcxproj b/projects/openttd_vs140.vcxproj
index e4380931a3..01106b71f6 100644
--- a/projects/openttd_vs140.vcxproj
+++ b/projects/openttd_vs140.vcxproj
@@ -105,7 +105,7 @@
Sizetrue..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- 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)
+ WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)trueSyncMultiThreaded
@@ -136,7 +136,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)true%(IgnoreSpecificDefaultLibraries)true
@@ -170,7 +170,7 @@
Disabledtrue..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)
+ WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)EnableFastChecksMultiThreadedDebug
@@ -192,7 +192,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)trueLIBCMT.lib;%(IgnoreSpecificDefaultLibraries)true
@@ -228,7 +228,7 @@
Sizetrue..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- 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)
+ WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)trueSyncMultiThreaded
@@ -259,7 +259,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)true%(IgnoreSpecificDefaultLibraries)true
@@ -291,7 +291,7 @@
Disabledtrue..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)
+ WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)EnableFastChecksMultiThreadedDebug
@@ -317,7 +317,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)trueLIBCMT.lib;%(IgnoreSpecificDefaultLibraries)true
@@ -502,6 +502,7 @@
+
@@ -590,6 +591,8 @@
+
+
@@ -651,6 +654,7 @@
+
@@ -704,6 +708,7 @@
+
@@ -751,6 +756,7 @@
+
@@ -812,6 +818,7 @@
+
@@ -1170,6 +1177,8 @@
+
+
@@ -1314,12 +1323,15 @@
+
+
+
diff --git a/projects/openttd_vs140.vcxproj.filters b/projects/openttd_vs140.vcxproj.filters
index ef11613ff8..911a53a864 100644
--- a/projects/openttd_vs140.vcxproj.filters
+++ b/projects/openttd_vs140.vcxproj.filters
@@ -600,6 +600,9 @@
Header Files
+
+ Header Files
+ Header Files
@@ -864,6 +867,12 @@
Header Files
+
+ Header Files
+
+
+ Header Files
+ Header Files
@@ -1047,6 +1056,9 @@
Header Files
+
+ Header Files
+ Header Files
@@ -1206,6 +1218,9 @@
Header Files
+
+ Header Files
+ Header Files
@@ -1347,6 +1362,9 @@
GUI Source Code
+
+ GUI Source Code
+ GUI Source Code
@@ -1530,6 +1548,9 @@
Widgets
+
+ Widgets
+ Widgets
@@ -2604,6 +2625,12 @@
Blitters
+
+ Blitters
+
+
+ Blitters
+ Blitters
@@ -3036,6 +3063,9 @@
Music
+
+ Music
+ Music
@@ -3048,12 +3078,18 @@
Sound
+
+ Sound
+ Windows filesWindows files
+
+ Windows files
+ Windows files
diff --git a/projects/openttd_vs140.vcxproj.in b/projects/openttd_vs140.vcxproj.in
index 1e490d29e7..d6ba126b5f 100644
--- a/projects/openttd_vs140.vcxproj.in
+++ b/projects/openttd_vs140.vcxproj.in
@@ -105,7 +105,7 @@
Sizetrue..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- 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)
+ WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)trueSyncMultiThreaded
@@ -136,7 +136,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)true%(IgnoreSpecificDefaultLibraries)true
@@ -170,7 +170,7 @@
Disabledtrue..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)
+ WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)EnableFastChecksMultiThreadedDebug
@@ -192,7 +192,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)trueLIBCMT.lib;%(IgnoreSpecificDefaultLibraries)true
@@ -228,7 +228,7 @@
Sizetrue..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- 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)
+ WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)trueSyncMultiThreaded
@@ -259,7 +259,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)true%(IgnoreSpecificDefaultLibraries)true
@@ -291,7 +291,7 @@
Disabledtrue..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)
+ WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)EnableFastChecksMultiThreadedDebug
@@ -317,7 +317,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)trueLIBCMT.lib;%(IgnoreSpecificDefaultLibraries)true
diff --git a/projects/openttd_vs141.vcxproj b/projects/openttd_vs141.vcxproj
index bba72864b2..ae3d7be78b 100644
--- a/projects/openttd_vs141.vcxproj
+++ b/projects/openttd_vs141.vcxproj
@@ -105,7 +105,7 @@
Sizetrue..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- 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)
+ WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)trueSyncMultiThreaded
@@ -136,7 +136,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)true%(IgnoreSpecificDefaultLibraries)true
@@ -170,7 +170,7 @@
Disabledtrue..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)
+ WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)EnableFastChecksMultiThreadedDebug
@@ -192,7 +192,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)trueLIBCMT.lib;%(IgnoreSpecificDefaultLibraries)true
@@ -228,7 +228,7 @@
Sizetrue..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- 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)
+ WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)trueSyncMultiThreaded
@@ -259,7 +259,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)true%(IgnoreSpecificDefaultLibraries)true
@@ -291,7 +291,7 @@
Disabledtrue..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)
+ WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)EnableFastChecksMultiThreadedDebug
@@ -317,7 +317,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)trueLIBCMT.lib;%(IgnoreSpecificDefaultLibraries)true
@@ -502,6 +502,7 @@
+
@@ -590,6 +591,8 @@
+
+
@@ -650,6 +653,7 @@
+
@@ -703,6 +707,7 @@
+
@@ -748,6 +753,7 @@
+
@@ -809,6 +815,7 @@
+
@@ -1167,6 +1174,8 @@
+
+
@@ -1311,12 +1320,15 @@
+
+
+
diff --git a/projects/openttd_vs141.vcxproj.filters b/projects/openttd_vs141.vcxproj.filters
index d502733796..47f431e556 100644
--- a/projects/openttd_vs141.vcxproj.filters
+++ b/projects/openttd_vs141.vcxproj.filters
@@ -600,6 +600,9 @@
Header Files
+
+ Header Files
+ Header Files
@@ -864,6 +867,12 @@
Header Files
+
+ Header Files
+
+
+ Header Files
+ Header Files
@@ -1044,6 +1053,9 @@
Header Files
+
+ Header Files
+ Header Files
@@ -1203,6 +1215,9 @@
Header Files
+
+ Header Files
+ Header Files
@@ -1338,6 +1353,9 @@
GUI Source Code
+
+ GUI Source Code
+ GUI Source Code
@@ -1521,6 +1539,9 @@
Widgets
+
+ Widgets
+ Widgets
@@ -2595,6 +2616,12 @@
Blitters
+
+ Blitters
+
+
+ Blitters
+ Blitters
@@ -3027,6 +3054,9 @@
Music
+
+ Music
+ Music
@@ -3039,12 +3069,18 @@
Sound
+
+ Sound
+ Windows filesWindows files
+
+ Windows files
+ Windows files
diff --git a/projects/openttd_vs141.vcxproj.in b/projects/openttd_vs141.vcxproj.in
index f4ec557c60..f231c6264d 100644
--- a/projects/openttd_vs141.vcxproj.in
+++ b/projects/openttd_vs141.vcxproj.in
@@ -105,7 +105,7 @@
Sizetrue..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- 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)
+ WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)trueSyncMultiThreaded
@@ -136,7 +136,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)true%(IgnoreSpecificDefaultLibraries)true
@@ -170,7 +170,7 @@
Disabledtrue..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)
+ WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)EnableFastChecksMultiThreadedDebug
@@ -192,7 +192,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)trueLIBCMT.lib;%(IgnoreSpecificDefaultLibraries)true
@@ -228,7 +228,7 @@
Sizetrue..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- 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)
+ WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)trueSyncMultiThreaded
@@ -259,7 +259,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)true%(IgnoreSpecificDefaultLibraries)true
@@ -291,7 +291,7 @@
Disabledtrue..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)
+ WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_XAUDIO2;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)EnableFastChecksMultiThreadedDebug
@@ -317,7 +317,7 @@
0x0809
- winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;icuuc.lib;icuin.lib;icudt.lib;icule.lib;iculx.lib;%(AdditionalDependencies)
+ winmm.lib;ws2_32.lib;imm32.lib;libpng.lib;zlibstat.lib;lzo2.lib;liblzma.lib;libfreetype2.lib;%(AdditionalDependencies)trueLIBCMT.lib;%(IgnoreSpecificDefaultLibraries)true
diff --git a/projects/openttd_vs80.vcproj b/projects/openttd_vs80.vcproj
index aa08062ff3..ada6d84437 100644
--- a/projects/openttd_vs80.vcproj
+++ b/projects/openttd_vs80.vcproj
@@ -52,7 +52,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -87,7 +87,7 @@
/>
+
+
@@ -1462,6 +1466,14 @@
RelativePath=".\..\src\news_type.h"
>
+
+
+
+
@@ -1706,6 +1718,10 @@
RelativePath=".\..\src\string_type.h"
>
+
+
@@ -1918,6 +1934,10 @@
RelativePath=".\..\src\window_type.h"
>
+
+
@@ -2114,6 +2134,10 @@
RelativePath=".\..\src\fios_gui.cpp"
>
+
+
@@ -2362,6 +2386,10 @@
RelativePath=".\..\src\widgets\fios_widget.h"
>
+
+
@@ -3850,6 +3878,14 @@
RelativePath=".\..\src\blitter\32bpp_anim.hpp"
>
+
+
+
+
@@ -4470,6 +4506,10 @@
RelativePath=".\..\src\music\null_m.cpp"
>
+
+
@@ -4490,6 +4530,10 @@
RelativePath=".\..\src\sound\win32_s.cpp"
>
+
+
+
+
diff --git a/projects/openttd_vs80.vcproj.in b/projects/openttd_vs80.vcproj.in
index 00c330d22f..3363d0d019 100644
--- a/projects/openttd_vs80.vcproj.in
+++ b/projects/openttd_vs80.vcproj.in
@@ -52,7 +52,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -87,7 +87,7 @@
/>
+
+
@@ -1459,6 +1463,14 @@
RelativePath=".\..\src\news_type.h"
>
+
+
+
+
@@ -1703,6 +1715,10 @@
RelativePath=".\..\src\string_type.h"
>
+
+
@@ -1915,6 +1931,10 @@
RelativePath=".\..\src\window_type.h"
>
+
+
@@ -2111,6 +2131,10 @@
RelativePath=".\..\src\fios_gui.cpp"
>
+
+
@@ -2359,6 +2383,10 @@
RelativePath=".\..\src\widgets\fios_widget.h"
>
+
+
@@ -3847,6 +3875,14 @@
RelativePath=".\..\src\blitter\32bpp_anim.hpp"
>
+
+
+
+
@@ -4467,6 +4503,10 @@
RelativePath=".\..\src\music\null_m.cpp"
>
+
+
@@ -4487,6 +4527,10 @@
RelativePath=".\..\src\sound\win32_s.cpp"
>
+
+
+
+
diff --git a/projects/openttd_vs90.vcproj.in b/projects/openttd_vs90.vcproj.in
index 0ebf4fcbed..b2d3fdeb9c 100644
--- a/projects/openttd_vs90.vcproj.in
+++ b/projects/openttd_vs90.vcproj.in
@@ -53,7 +53,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
- PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU_SORT;WITH_ICU_LAYOUT;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_UNISCRIBE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -88,7 +88,7 @@
/>
0) StringCat(exptypes,SQString::Create(_ss(this), "|", -1), exptypes);
found ++;
diff --git a/src/3rdparty/squirrel/squirrel/squtils.h b/src/3rdparty/squirrel/squirrel/squtils.h
index 28c6cbec2b..b1138dcb1a 100644
--- a/src/3rdparty/squirrel/squirrel/squtils.h
+++ b/src/3rdparty/squirrel/squirrel/squtils.h
@@ -90,7 +90,7 @@ public:
{
_vals[idx].~T();
if(idx < (_size - 1)) {
- memmove(&_vals[idx], &_vals[idx+1], sizeof(T) * (_size - (size_t)idx - 1));
+ memmove(static_cast(&_vals[idx]), &_vals[idx+1], sizeof(T) * (_size - (size_t)idx - 1));
}
_size--;
}
diff --git a/src/3rdparty/squirrel/squirrel/sqvm.cpp b/src/3rdparty/squirrel/squirrel/sqvm.cpp
index c66c4aca59..03ffea2303 100644
--- a/src/3rdparty/squirrel/squirrel/sqvm.cpp
+++ b/src/3rdparty/squirrel/squirrel/sqvm.cpp
@@ -378,8 +378,7 @@ bool SQVM::StartCall(SQClosure *closure,SQInteger target,SQInteger args,SQIntege
}
if (!tailcall) {
- CallInfo lc;
- memset(&lc, 0, sizeof(lc));
+ CallInfo lc = {};
lc._generator = NULL;
lc._etraps = 0;
lc._prevstkbase = (SQInt32) ( stackbase - _stackbase );
@@ -1159,8 +1158,7 @@ bool SQVM::CallNative(SQNativeClosure *nclosure,SQInteger nargs,SQInteger stackb
SQInteger oldtop = _top;
SQInteger oldstackbase = _stackbase;
_top = stackbase + nargs;
- CallInfo lci;
- memset(&lci, 0, sizeof(lci));
+ CallInfo lci = {};
lci._closure = nclosure;
lci._generator = NULL;
lci._etraps = 0;
diff --git a/src/aircraft.h b/src/aircraft.h
index f0ca1c4abb..d4deba5809 100644
--- a/src/aircraft.h
+++ b/src/aircraft.h
@@ -90,7 +90,7 @@ struct Aircraft FINAL : public SpecializedVehicle {
virtual ~Aircraft() { this->PreDestructor(); }
void MarkDirty();
- void UpdateDeltaXY(Direction direction);
+ void UpdateDeltaXY();
ExpensesType GetExpenseType(bool income) const { return income ? EXPENSES_AIRCRAFT_INC : EXPENSES_AIRCRAFT_RUN; }
bool IsPrimaryVehicle() const { return this->IsNormalAircraft(); }
void GetImage(Direction direction, EngineImageType image_type, VehicleSpriteSeq *result) const;
@@ -137,7 +137,7 @@ struct Aircraft FINAL : public SpecializedVehicle {
};
/**
- * Macro for iterating over all aircrafts.
+ * Macro for iterating over all aircraft.
*/
#define FOR_ALL_AIRCRAFT(var) FOR_ALL_VEHICLES_OF_TYPE(Aircraft, var)
diff --git a/src/aircraft_cmd.cpp b/src/aircraft_cmd.cpp
index c9cddbf97d..de8e0ee324 100644
--- a/src/aircraft_cmd.cpp
+++ b/src/aircraft_cmd.cpp
@@ -37,12 +37,13 @@
#include "core/backup_type.hpp"
#include "zoom_func.h"
#include "disaster_vehicle.h"
+#include "framerate_type.h"
#include "table/strings.h"
#include "safeguards.h"
-void Aircraft::UpdateDeltaXY(Direction direction)
+void Aircraft::UpdateDeltaXY()
{
this->x_offs = -1;
this->y_offs = -1;
@@ -303,10 +304,10 @@ CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, const Engine *
u->engine_type = e->index;
v->subtype = (avi->subtype & AIR_CTOL ? AIR_AIRCRAFT : AIR_HELICOPTER);
- v->UpdateDeltaXY(INVALID_DIR);
+ v->UpdateDeltaXY();
u->subtype = AIR_SHADOW;
- u->UpdateDeltaXY(INVALID_DIR);
+ u->UpdateDeltaXY();
v->reliability = e->reliability;
v->reliability_spd_dec = e->reliability_spd_dec;
@@ -363,7 +364,7 @@ CommandCost CmdBuildAircraft(TileIndex tile, DoCommandFlag flags, const Engine *
w->random_bits = VehicleRandomBits();
/* Use rotor's air.state to store the rotor animation frame */
w->state = HRS_ROTOR_STOPPED;
- w->UpdateDeltaXY(INVALID_DIR);
+ w->UpdateDeltaXY();
u->SetNext(w);
w->UpdatePosition();
@@ -749,7 +750,7 @@ int GetAircraftFlightLevel(T *v, bool takeoff)
GetAircraftFlightLevelBounds(v, &aircraft_min_altitude, &aircraft_max_altitude);
int aircraft_middle_altitude = (aircraft_min_altitude + aircraft_max_altitude) / 2;
- /* If those assumptions would be violated, aircrafts would behave fairly strange. */
+ /* If those assumptions would be violated, aircraft would behave fairly strange. */
assert(aircraft_min_altitude < aircraft_middle_altitude);
assert(aircraft_middle_altitude < aircraft_max_altitude);
@@ -1361,7 +1362,7 @@ static void AircraftEntersTerminal(Aircraft *v)
*/
static void AircraftLandAirplane(Aircraft *v)
{
- v->UpdateDeltaXY(INVALID_DIR);
+ v->UpdateDeltaXY();
if (!PlayVehicleSound(v, VSE_TOUCHDOWN)) {
SndPlayVehicleFx(SND_17_SKID_PLANE, v);
@@ -1553,7 +1554,7 @@ static void AircraftEventHandler_TakeOff(Aircraft *v, const AirportFTAClass *apc
static void AircraftEventHandler_StartTakeOff(Aircraft *v, const AirportFTAClass *apc)
{
v->state = ENDTAKEOFF;
- v->UpdateDeltaXY(INVALID_DIR);
+ v->UpdateDeltaXY();
}
static void AircraftEventHandler_EndTakeOff(Aircraft *v, const AirportFTAClass *apc)
@@ -1566,7 +1567,7 @@ static void AircraftEventHandler_EndTakeOff(Aircraft *v, const AirportFTAClass *
static void AircraftEventHandler_HeliTakeOff(Aircraft *v, const AirportFTAClass *apc)
{
v->state = FLYING;
- v->UpdateDeltaXY(INVALID_DIR);
+ v->UpdateDeltaXY();
/* get the next position to go to, differs per airport */
AircraftNextAirportPos_and_Order(v);
@@ -1632,7 +1633,7 @@ static void AircraftEventHandler_Landing(Aircraft *v, const AirportFTAClass *apc
static void AircraftEventHandler_HeliLanding(Aircraft *v, const AirportFTAClass *apc)
{
v->state = HELIENDLANDING;
- v->UpdateDeltaXY(INVALID_DIR);
+ v->UpdateDeltaXY();
}
static void AircraftEventHandler_EndLanding(Aircraft *v, const AirportFTAClass *apc)
@@ -2038,6 +2039,8 @@ bool Aircraft::Tick()
{
if (!this->IsNormalAircraft()) return true;
+ PerformanceAccumulator framerate(PFE_GL_AIRCRAFT);
+
this->tick_counter++;
if (!(this->vehstatus & VS_STOPPED)) this->running_ticks++;
diff --git a/src/animated_tile.cpp b/src/animated_tile.cpp
index 796c5f5e09..2a4cd89583 100644
--- a/src/animated_tile.cpp
+++ b/src/animated_tile.cpp
@@ -14,6 +14,7 @@
#include "core/smallvec_type.hpp"
#include "tile_cmd.h"
#include "viewport_func.h"
+#include "framerate_type.h"
#include "safeguards.h"
@@ -50,6 +51,8 @@ void AddAnimatedTile(TileIndex tile)
*/
void AnimateAnimatedTiles()
{
+ PerformanceAccumulator framerate(PFE_GL_LANDSCAPE);
+
const TileIndex *ti = _animated_tiles.Begin();
while (ti < _animated_tiles.End()) {
const TileIndex curr = *ti;
diff --git a/src/articulated_vehicles.cpp b/src/articulated_vehicles.cpp
index 04c9f95a97..44ad587895 100644
--- a/src/articulated_vehicles.cpp
+++ b/src/articulated_vehicles.cpp
@@ -119,12 +119,12 @@ static inline uint16 GetVehicleDefaultCapacity(EngineID engine, CargoID *cargo_t
* @param include_initial_cargo_type if true the default cargo type of the vehicle is included; if false only the refit_mask
* @return bit set of CargoIDs
*/
-static inline uint32 GetAvailableVehicleCargoTypes(EngineID engine, bool include_initial_cargo_type)
+static inline CargoTypes GetAvailableVehicleCargoTypes(EngineID engine, bool include_initial_cargo_type)
{
const Engine *e = Engine::Get(engine);
if (!e->CanCarryCargo()) return 0;
- uint32 cargoes = e->info.refit_mask;
+ CargoTypes cargoes = e->info.refit_mask;
if (include_initial_cargo_type) {
SetBit(cargoes, e->GetDefaultCargoType());
@@ -169,7 +169,7 @@ CargoArray GetCapacityOfArticulatedParts(EngineID engine)
* @param[out] cargoes Total amount of units that can be transported, summed by cargo.
* @param[out] refits Whether a (possibly partial) refit for each cargo is possible.
*/
-void GetArticulatedVehicleCargoesAndRefits(EngineID engine, CargoArray *cargoes, uint32 *refits)
+void GetArticulatedVehicleCargoesAndRefits(EngineID engine, CargoArray *cargoes, CargoTypes *refits)
{
cargoes->Clear();
*refits = 0;
@@ -228,12 +228,12 @@ bool IsArticulatedVehicleRefittable(EngineID engine)
* @param union_mask returns bit mask of CargoIDs which are a refit option for at least one articulated part
* @param intersection_mask returns bit mask of CargoIDs which are a refit option for every articulated part (with default capacity > 0)
*/
-void GetArticulatedRefitMasks(EngineID engine, bool include_initial_cargo_type, uint32 *union_mask, uint32 *intersection_mask)
+void GetArticulatedRefitMasks(EngineID engine, bool include_initial_cargo_type, CargoTypes *union_mask, CargoTypes *intersection_mask)
{
const Engine *e = Engine::Get(engine);
- uint32 veh_cargoes = GetAvailableVehicleCargoTypes(engine, include_initial_cargo_type);
+ CargoTypes veh_cargoes = GetAvailableVehicleCargoTypes(engine, include_initial_cargo_type);
*union_mask = veh_cargoes;
- *intersection_mask = (veh_cargoes != 0) ? veh_cargoes : UINT32_MAX;
+ *intersection_mask = (veh_cargoes != 0) ? veh_cargoes : ALL_CARGOTYPES;
if (!e->IsGroundVehicle()) return;
if (!HasBit(e->info.callback_mask, CBM_VEHICLE_ARTIC_ENGINE)) return;
@@ -254,9 +254,9 @@ void GetArticulatedRefitMasks(EngineID engine, bool include_initial_cargo_type,
* @param include_initial_cargo_type if true the default cargo type of the vehicle is included; if false only the refit_mask
* @return bit mask of CargoIDs which are a refit option for at least one articulated part
*/
-uint32 GetUnionOfArticulatedRefitMasks(EngineID engine, bool include_initial_cargo_type)
+CargoTypes GetUnionOfArticulatedRefitMasks(EngineID engine, bool include_initial_cargo_type)
{
- uint32 union_mask, intersection_mask;
+ CargoTypes union_mask, intersection_mask;
GetArticulatedRefitMasks(engine, include_initial_cargo_type, &union_mask, &intersection_mask);
return union_mask;
}
@@ -267,9 +267,9 @@ uint32 GetUnionOfArticulatedRefitMasks(EngineID engine, bool include_initial_car
* @param include_initial_cargo_type if true the default cargo type of the vehicle is included; if false only the refit_mask
* @return bit mask of CargoIDs which are a refit option for every articulated part (with default capacity > 0)
*/
-uint32 GetIntersectionOfArticulatedRefitMasks(EngineID engine, bool include_initial_cargo_type)
+CargoTypes GetIntersectionOfArticulatedRefitMasks(EngineID engine, bool include_initial_cargo_type)
{
- uint32 union_mask, intersection_mask;
+ CargoTypes union_mask, intersection_mask;
GetArticulatedRefitMasks(engine, include_initial_cargo_type, &union_mask, &intersection_mask);
return intersection_mask;
}
@@ -314,16 +314,16 @@ void CheckConsistencyOfArticulatedVehicle(const Vehicle *v)
{
const Engine *engine = v->GetEngine();
- uint32 purchase_refit_union, purchase_refit_intersection;
+ CargoTypes purchase_refit_union, purchase_refit_intersection;
GetArticulatedRefitMasks(v->engine_type, true, &purchase_refit_union, &purchase_refit_intersection);
CargoArray purchase_default_capacity = GetCapacityOfArticulatedParts(v->engine_type);
- uint32 real_refit_union = 0;
- uint32 real_refit_intersection = UINT_MAX;
+ CargoTypes real_refit_union = 0;
+ CargoTypes real_refit_intersection = ALL_CARGOTYPES;
CargoArray real_default_capacity;
do {
- uint32 refit_mask = GetAvailableVehicleCargoTypes(v->engine_type, true);
+ CargoTypes refit_mask = GetAvailableVehicleCargoTypes(v->engine_type, true);
real_refit_union |= refit_mask;
if (refit_mask != 0) real_refit_intersection &= refit_mask;
diff --git a/src/articulated_vehicles.h b/src/articulated_vehicles.h
index 46b4da3744..77322fb4c7 100644
--- a/src/articulated_vehicles.h
+++ b/src/articulated_vehicles.h
@@ -18,9 +18,9 @@
uint CountArticulatedParts(EngineID engine_type, bool purchase_window);
CargoArray GetCapacityOfArticulatedParts(EngineID engine);
void AddArticulatedParts(Vehicle *first);
-void GetArticulatedRefitMasks(EngineID engine, bool include_initial_cargo_type, uint32 *union_mask, uint32 *intersection_mask);
-uint32 GetUnionOfArticulatedRefitMasks(EngineID engine, bool include_initial_cargo_type);
-uint32 GetIntersectionOfArticulatedRefitMasks(EngineID engine, bool include_initial_cargo_type);
+void GetArticulatedRefitMasks(EngineID engine, bool include_initial_cargo_type, CargoTypes *union_mask, CargoTypes *intersection_mask);
+CargoTypes GetUnionOfArticulatedRefitMasks(EngineID engine, bool include_initial_cargo_type);
+CargoTypes GetIntersectionOfArticulatedRefitMasks(EngineID engine, bool include_initial_cargo_type);
bool IsArticulatedVehicleCarryingDifferentCargoes(const Vehicle *v, CargoID *cargo_type);
bool IsArticulatedVehicleRefittable(EngineID engine);
bool IsArticulatedEngine(EngineID engine_type);
diff --git a/src/autoreplace_cmd.cpp b/src/autoreplace_cmd.cpp
index e69ac66eb2..96eada7345 100644
--- a/src/autoreplace_cmd.cpp
+++ b/src/autoreplace_cmd.cpp
@@ -37,8 +37,8 @@ extern void ChangeVehicleViewWindow(VehicleID from_index, VehicleID to_index);
*/
static bool EnginesHaveCargoInCommon(EngineID engine_a, EngineID engine_b)
{
- uint32 available_cargoes_a = GetUnionOfArticulatedRefitMasks(engine_a, true);
- uint32 available_cargoes_b = GetUnionOfArticulatedRefitMasks(engine_b, true);
+ CargoTypes available_cargoes_a = GetUnionOfArticulatedRefitMasks(engine_a, true);
+ CargoTypes available_cargoes_b = GetUnionOfArticulatedRefitMasks(engine_b, true);
return (available_cargoes_a == 0 || available_cargoes_b == 0 || (available_cargoes_a & available_cargoes_b) != 0);
}
@@ -173,9 +173,8 @@ static void TransferCargo(Vehicle *old_veh, Vehicle *new_head, bool part_of_chai
*/
static bool VerifyAutoreplaceRefitForOrders(const Vehicle *v, EngineID engine_type)
{
-
- uint32 union_refit_mask_a = GetUnionOfArticulatedRefitMasks(v->engine_type, false);
- uint32 union_refit_mask_b = GetUnionOfArticulatedRefitMasks(engine_type, false);
+ CargoTypes union_refit_mask_a = GetUnionOfArticulatedRefitMasks(v->engine_type, false);
+ CargoTypes union_refit_mask_b = GetUnionOfArticulatedRefitMasks(engine_type, false);
const Order *o;
const Vehicle *u = (v->type == VEH_TRAIN) ? v->First() : v;
@@ -201,7 +200,7 @@ static bool VerifyAutoreplaceRefitForOrders(const Vehicle *v, EngineID engine_ty
*/
static CargoID GetNewCargoTypeForReplace(Vehicle *v, EngineID engine_type, bool part_of_chain)
{
- uint32 available_cargo_types, union_mask;
+ CargoTypes available_cargo_types, union_mask;
GetArticulatedRefitMasks(engine_type, true, &union_mask, &available_cargo_types);
if (union_mask == 0) return CT_NO_REFIT; // Don't try to refit an engine with no cargo capacity
diff --git a/src/base_media_base.h b/src/base_media_base.h
index 7614118b7f..b040abcf9d 100644
--- a/src/base_media_base.h
+++ b/src/base_media_base.h
@@ -26,6 +26,7 @@ struct ContentInfo;
struct MD5File {
/** The result of a checksum check */
enum ChecksumResult {
+ CR_UNKNOWN, ///< The file has not been checked yet
CR_MATCH, ///< The file did exist and the md5 checksum did match
CR_MISMATCH, ///< The file did exist, just the md5 checksum did not match
CR_NO_FILE, ///< The file did not exist
@@ -34,6 +35,7 @@ struct MD5File {
const char *filename; ///< filename
uint8 hash[16]; ///< md5 sum of the file
const char *missing_warning; ///< warning when this file is missing
+ ChecksumResult check_result; ///< cached result of md5 check
ChecksumResult CheckMD5(Subdirectory subdir, size_t max_size) const;
};
@@ -285,11 +287,32 @@ static const uint NUM_SONGS_AVAILABLE = 1 + NUM_SONG_CLASSES * NUM_SONGS_CLASS;
/** Maximum number of songs in the (custom) playlist */
static const uint NUM_SONGS_PLAYLIST = 32;
+/* Functions to read DOS music CAT files, similar to but not quite the same as sound effect CAT files */
+char *GetMusicCatEntryName(const char *filename, size_t entrynum);
+byte *GetMusicCatEntryData(const char *filename, size_t entrynum, size_t &entrylen);
+
+enum MusicTrackType {
+ MTT_STANDARDMIDI, ///< Standard MIDI file
+ MTT_MPSMIDI, ///< MPS GM driver MIDI format (contained in a CAT file)
+};
+
+/** Metadata about a music track. */
+struct MusicSongInfo {
+ char songname[32]; ///< name of song displayed in UI
+ byte tracknr; ///< track number of song displayed in UI
+ const char *filename; ///< file on disk containing song (when used in MusicSet class, this pointer is owned by MD5File object for the file)
+ MusicTrackType filetype; ///< decoder required for song file
+ int cat_index; ///< entry index in CAT file, for filetype==MTT_MPSMIDI
+ bool loop; ///< song should play in a tight loop if possible, never ending
+ int override_start; ///< MIDI ticks to skip over in beginning
+ int override_end; ///< MIDI tick to end the song at (0 if no override)
+};
+
/** All data of a music set. */
struct MusicSet : BaseSet {
- /** The name of the different songs. */
- char song_name[NUM_SONGS_AVAILABLE][32];
- byte track_nr[NUM_SONGS_AVAILABLE];
+ /** Data about individual songs in set. */
+ MusicSongInfo songinfo[NUM_SONGS_AVAILABLE];
+ /** Number of valid songs in set. */
byte num_available;
bool FillSetDetails(struct IniFile *ini, const char *path, const char *full_filename);
diff --git a/src/base_media_func.h b/src/base_media_func.h
index f45956f765..f7afca0edb 100644
--- a/src/base_media_func.h
+++ b/src/base_media_func.h
@@ -40,8 +40,6 @@
template
bool BaseSet::FillSetDetails(IniFile *ini, const char *path, const char *full_filename, bool allow_empty_filename)
{
- memset(this, 0, sizeof(*this));
-
IniGroup *metadata = ini->GetGroup("metadata");
IniItem *item;
@@ -129,7 +127,11 @@ bool BaseSet::FillSetDetails(IniFile *ini, const
file->missing_warning = stredup(item->value);
}
- switch (T::CheckMD5(file, BASESET_DIR)) {
+ file->check_result = T::CheckMD5(file, BASESET_DIR);
+ switch (file->check_result) {
+ case MD5File::CR_UNKNOWN:
+ break;
+
case MD5File::CR_MATCH:
this->valid_files++;
this->found_files++;
diff --git a/src/base_station_base.h b/src/base_station_base.h
index 53e104a826..cd512c5177 100644
--- a/src/base_station_base.h
+++ b/src/base_station_base.h
@@ -71,7 +71,7 @@ struct BaseStation : StationPool::PoolItem<&_station_pool> {
uint16 random_bits; ///< Random bits assigned to this station
byte waiting_triggers; ///< Waiting triggers (NewGRF) for this station
uint8 cached_anim_triggers; ///< NOSAVE: Combined animation trigger bitmask, used to determine if trigger processing should happen.
- uint32 cached_cargo_triggers; ///< NOSAVE: Combined cargo trigger bitmask
+ CargoTypes cached_cargo_triggers; ///< NOSAVE: Combined cargo trigger bitmask
TileArea train_station; ///< Tile area the train 'station' part covers
StationRect rect; ///< NOSAVE: Station spread out rectangle maintained by StationRect::xxx() functions
diff --git a/src/blitter/32bpp_anim.cpp b/src/blitter/32bpp_anim.cpp
index 532ad23cc7..98ae22b00c 100644
--- a/src/blitter/32bpp_anim.cpp
+++ b/src/blitter/32bpp_anim.cpp
@@ -22,7 +22,7 @@ static FBlitter_32bppAnim iFBlitter_32bppAnim;
Blitter_32bppAnim::~Blitter_32bppAnim()
{
- free(this->anim_buf);
+ free(this->anim_alloc);
}
template
@@ -39,8 +39,7 @@ inline void Blitter_32bppAnim::Draw(const Blitter::BlitterParams *bp, ZoomLevel
}
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_pitch + bp->left;
+ uint16 *anim = this->anim_buf + this->ScreenToAnimOffset((uint32 *)bp->dst) + 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
@@ -280,8 +279,7 @@ void Blitter_32bppAnim::DrawColourMappingRect(void *dst, int width, int height,
}
Colour *udst = (Colour *)dst;
- assert(_screen.pitch == this->anim_buf_pitch); // precondition for translating 'dst' into an 'anim_buf' offset below.
- uint16 *anim = this->anim_buf + ((uint32 *)dst - (uint32 *)_screen.dst_ptr);
+ uint16 *anim = this->anim_buf + this->ScreenToAnimOffset((uint32 *)dst);
if (pal == PALETTE_TO_TRANSPARENT) {
do {
@@ -319,8 +317,8 @@ void Blitter_32bppAnim::SetPixel(void *video, int x, int y, uint8 colour)
/* Set the colour in the anim-buffer too, if we are rendering to the screen */
if (_screen_disable_anim) return;
- assert(_screen.pitch == this->anim_buf_pitch); // precondition for translating 'video' into an 'anim_buf' offset below.
- this->anim_buf[((uint32 *)video - (uint32 *)_screen.dst_ptr) + x + y * this->anim_buf_pitch] = colour | (DEFAULT_BRIGHTNESS << 8);
+
+ this->anim_buf[this->ScreenToAnimOffset((uint32 *)video) + x + y * this->anim_buf_pitch] = colour | (DEFAULT_BRIGHTNESS << 8);
}
void Blitter_32bppAnim::DrawRect(void *video, int width, int height, uint8 colour)
@@ -332,8 +330,7 @@ void Blitter_32bppAnim::DrawRect(void *video, int width, int height, uint8 colou
}
Colour colour32 = LookupColourInPalette(colour);
- 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 = this->ScreenToAnimOffset((uint32 *)video) + this->anim_buf;
do {
Colour *dst = (Colour *)video;
@@ -357,15 +354,14 @@ void Blitter_32bppAnim::CopyFromBuffer(void *video, const void *src, int width,
assert(video >= _screen.dst_ptr && video <= (uint32 *)_screen.dst_ptr + _screen.width + _screen.height * _screen.pitch);
Colour *dst = (Colour *)video;
const uint32 *usrc = (const uint32 *)src;
- assert(_screen.pitch == this->anim_buf_pitch); // precondition for translating 'video' into an 'anim_buf' offset below.
- uint16 *anim_line = ((uint32 *)video - (uint32 *)_screen.dst_ptr) + this->anim_buf;
+ uint16 *anim_line = this->ScreenToAnimOffset((uint32 *)video) + this->anim_buf;
for (; height > 0; height--) {
/* We need to keep those for palette animation. */
Colour *dst_pal = dst;
uint16 *anim_pal = anim_line;
- memcpy(dst, usrc, width * sizeof(uint32));
+ memcpy(static_cast(dst), usrc, width * sizeof(uint32));
usrc += width;
dst += _screen.pitch;
/* Copy back the anim-buffer */
@@ -401,8 +397,7 @@ void Blitter_32bppAnim::CopyToBuffer(const void *video, void *dst, int width, in
if (this->anim_buf == NULL) return;
- assert(_screen.pitch == this->anim_buf_pitch); // precondition for translating 'video' into an 'anim_buf' offset below.
- const uint16 *anim_line = ((const uint32 *)video - (uint32 *)_screen.dst_ptr) + this->anim_buf;
+ const uint16 *anim_line = this->ScreenToAnimOffset((const uint32 *)video) + this->anim_buf;
for (; height > 0; height--) {
memcpy(udst, src, width * sizeof(uint32));
@@ -485,18 +480,22 @@ void Blitter_32bppAnim::PaletteAnimate(const Palette &palette)
Colour *dst = (Colour *)_screen.dst_ptr;
/* Let's walk the anim buffer and try to find the pixels */
+ const int width = this->anim_buf_width;
+ const int pitch_offset = _screen.pitch - width;
+ const int anim_pitch_offset = this->anim_buf_pitch - width;
for (int y = this->anim_buf_height; y != 0 ; y--) {
- for (int x = this->anim_buf_width; x != 0 ; x--) {
- uint colour = GB(*anim, 0, 8);
+ for (int x = width; x != 0 ; x--) {
+ uint16 value = *anim;
+ uint8 colour = GB(value, 0, 8);
if (colour >= PALETTE_ANIM_START) {
/* Update this pixel */
- *dst = this->AdjustBrightness(LookupColourInPalette(colour), GB(*anim, 8, 8));
+ *dst = this->AdjustBrightness(LookupColourInPalette(colour), GB(value, 8, 8));
}
dst++;
anim++;
}
- dst += _screen.pitch - this->anim_buf_width;
- anim += this->anim_buf_pitch - this->anim_buf_width;
+ dst += pitch_offset;
+ anim += anim_pitch_offset;
}
/* Make sure the backend redraws the whole screen */
@@ -513,10 +512,13 @@ void Blitter_32bppAnim::PostResize()
if (_screen.width != this->anim_buf_width || _screen.height != this->anim_buf_height ||
_screen.pitch != this->anim_buf_pitch) {
/* The size of the screen changed; we can assume we can wipe all data from our buffer */
- free(this->anim_buf);
+ free(this->anim_alloc);
this->anim_buf_width = _screen.width;
this->anim_buf_height = _screen.height;
- this->anim_buf_pitch = _screen.pitch;
- this->anim_buf = CallocT(this->anim_buf_height * this->anim_buf_pitch);
+ this->anim_buf_pitch = (_screen.width + 7) & ~7;
+ this->anim_alloc = CallocT(this->anim_buf_pitch * this->anim_buf_height + 8);
+
+ /* align buffer to next 16 byte boundary */
+ this->anim_buf = reinterpret_cast((reinterpret_cast(this->anim_alloc) + 0xF) & (~0xF));
}
}
diff --git a/src/blitter/32bpp_anim.hpp b/src/blitter/32bpp_anim.hpp
index 1b35c17663..da33ec95bb 100644
--- a/src/blitter/32bpp_anim.hpp
+++ b/src/blitter/32bpp_anim.hpp
@@ -18,14 +18,16 @@
class Blitter_32bppAnim : public Blitter_32bppOptimized {
protected:
uint16 *anim_buf; ///< In this buffer we keep track of the 8bpp indexes so we can do palette animation
+ void *anim_alloc; ///< The raw allocated buffer, not necessarily aligned correctly
int anim_buf_width; ///< The width of the animation buffer.
int anim_buf_height; ///< The height of the animation buffer.
- int anim_buf_pitch; ///< The pitch of the animation buffer.
+ int anim_buf_pitch; ///< The pitch of the animation buffer (width rounded up to 16 byte boundary).
Palette palette; ///< The current palette.
public:
Blitter_32bppAnim() :
anim_buf(NULL),
+ anim_alloc(NULL),
anim_buf_width(0),
anim_buf_height(0),
anim_buf_pitch(0)
@@ -58,6 +60,15 @@ public:
return this->palette.palette[index];
}
+ inline int ScreenToAnimOffset(const uint32 *video)
+ {
+ int raw_offset = video - (const uint32 *)_screen.dst_ptr;
+ if (_screen.pitch == this->anim_buf_pitch) return raw_offset;
+ int lines = raw_offset / _screen.pitch;
+ int across = raw_offset % _screen.pitch;
+ return across + (lines * this->anim_buf_pitch);
+ }
+
template void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom);
};
diff --git a/src/blitter/32bpp_anim_sse2.cpp b/src/blitter/32bpp_anim_sse2.cpp
new file mode 100644
index 0000000000..d5fa4268a8
--- /dev/null
+++ b/src/blitter/32bpp_anim_sse2.cpp
@@ -0,0 +1,100 @@
+/* $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 .
+ */
+
+/** @file 32bpp_anim.cpp Implementation of a partially SSSE2 32bpp blitter with animation support. */
+
+#ifdef WITH_SSE
+
+#include "../stdafx.h"
+#include "../video/video_driver.hpp"
+#include "32bpp_anim_sse2.hpp"
+#include "32bpp_sse_func.hpp"
+
+#include "../safeguards.h"
+
+/** Instantiation of the partially SSSE2 32bpp with animation blitter factory. */
+static FBlitter_32bppSSE2_Anim iFBlitter_32bppSSE2_Anim;
+
+void Blitter_32bppSSE2_Anim::PaletteAnimate(const Palette &palette)
+{
+ assert(!_screen_disable_anim);
+
+ this->palette = palette;
+ /* If first_dirty is 0, it is for 8bpp indication to send the new
+ * palette. However, only the animation colours might possibly change.
+ * Especially when going between toyland and non-toyland. */
+ assert(this->palette.first_dirty == PALETTE_ANIM_START || this->palette.first_dirty == 0);
+
+ const uint16 *anim = this->anim_buf;
+ Colour *dst = (Colour *)_screen.dst_ptr;
+
+ bool screen_dirty = false;
+
+ /* Let's walk the anim buffer and try to find the pixels */
+ const int width = this->anim_buf_width;
+ const int screen_pitch = _screen.pitch;
+ const int anim_pitch = this->anim_buf_pitch;
+ __m128i anim_cmp = _mm_set1_epi16(PALETTE_ANIM_START - 1);
+ __m128i brightness_cmp = _mm_set1_epi16(Blitter_32bppBase::DEFAULT_BRIGHTNESS);
+ __m128i colour_mask = _mm_set1_epi16(0xFF);
+ for (int y = this->anim_buf_height; y != 0 ; y--) {
+ Colour *next_dst_ln = dst + screen_pitch;
+ const uint16 *next_anim_ln = anim + anim_pitch;
+ int x = width;
+ while (x > 0) {
+ __m128i data = _mm_load_si128((const __m128i *) anim);
+
+ /* low bytes only, shifted into high positions */
+ __m128i colour_data = _mm_and_si128(data, colour_mask);
+
+ /* test if any colour >= PALETTE_ANIM_START */
+ int colour_cmp_result = _mm_movemask_epi8(_mm_cmpgt_epi16(colour_data, anim_cmp));
+ if (colour_cmp_result) {
+ /* test if any brightness is unexpected */
+ if (x < 8 || colour_cmp_result != 0xFFFF ||
+ _mm_movemask_epi8(_mm_cmpeq_epi16(_mm_srli_epi16(data, 8), brightness_cmp)) != 0xFFFF) {
+ /* slow path: < 8 pixels left or unexpected brightnesses */
+ for (int z = min(x, 8); z != 0 ; z--) {
+ int value = _mm_extract_epi16(data, 0);
+ uint8 colour = GB(value, 0, 8);
+ if (colour >= PALETTE_ANIM_START) {
+ /* Update this pixel */
+ *dst = AdjustBrightneSSE(LookupColourInPalette(colour), GB(value, 8, 8));
+ screen_dirty = true;
+ }
+ data = _mm_srli_si128(data, 2);
+ dst++;
+ }
+ } else {
+ /* medium path: 8 pixels to animate all of expected brightnesses */
+ for (int z = 0; z < 8; z++) {
+ *dst = LookupColourInPalette(_mm_extract_epi16(colour_data, 0));
+ colour_data = _mm_srli_si128(colour_data, 2);
+ dst++;
+ }
+ screen_dirty = true;
+ }
+ } else {
+ /* fast path, no animation */
+ dst += 8;
+ }
+ anim += 8;
+ x -= 8;
+ }
+ dst = next_dst_ln;
+ anim = next_anim_ln;
+ }
+
+ if (screen_dirty) {
+ /* Make sure the backend redraws the whole screen */
+ VideoDriver::GetInstance()->MakeDirty(0, 0, _screen.width, _screen.height);
+ }
+}
+
+#endif /* WITH_SSE */
diff --git a/src/blitter/32bpp_anim_sse2.hpp b/src/blitter/32bpp_anim_sse2.hpp
new file mode 100644
index 0000000000..0d4a5f1e65
--- /dev/null
+++ b/src/blitter/32bpp_anim_sse2.hpp
@@ -0,0 +1,43 @@
+/* $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 .
+ */
+
+/** @file 32bpp_anim.hpp A partially SSE2 32 bpp blitter with animation support. */
+
+#ifndef BLITTER_32BPP_SSE2_ANIM_HPP
+#define BLITTER_32BPP_SSE2_ANIM_HPP
+
+#ifdef WITH_SSE
+
+#ifndef SSE_VERSION
+#define SSE_VERSION 2
+#endif
+
+#ifndef FULL_ANIMATION
+#define FULL_ANIMATION 1
+#endif
+
+#include "32bpp_anim.hpp"
+#include "32bpp_sse2.hpp"
+
+/** A partially 32 bpp blitter with palette animation. */
+class Blitter_32bppSSE2_Anim : public Blitter_32bppAnim {
+public:
+ /* virtual */ void PaletteAnimate(const Palette &palette);
+ /* virtual */ const char *GetName() { return "32bpp-sse2-anim"; }
+};
+
+/** Factory for the partially 32bpp blitter with animation. */
+class FBlitter_32bppSSE2_Anim : public BlitterFactory {
+public:
+ FBlitter_32bppSSE2_Anim() : BlitterFactory("32bpp-sse2-anim", "32bpp partially SSE2 Animation Blitter (palette animation)", HasCPUIDFlag(1, 3, 26)) {}
+ /* virtual */ Blitter *CreateInstance() { return new Blitter_32bppSSE2_Anim(); }
+};
+
+#endif /* WITH_SSE */
+#endif /* BLITTER_32BPP_ANIM_HPP */
diff --git a/src/blitter/32bpp_anim_sse4.cpp b/src/blitter/32bpp_anim_sse4.cpp
index 987cb0c6ac..219fb466bb 100644
--- a/src/blitter/32bpp_anim_sse4.cpp
+++ b/src/blitter/32bpp_anim_sse4.cpp
@@ -35,8 +35,7 @@ inline void Blitter_32bppSSE4_Anim::Draw(const Blitter::BlitterParams *bp, ZoomL
{
const byte * const remap = bp->remap;
Colour *dst_line = (Colour *) bp->dst + bp->top * bp->pitch + bp->left;
- assert(_screen.pitch == this->anim_buf_pitch); // precondition for translating 'bp->dst' into an 'anim_buf' offset below.
- uint16 *anim_line = this->anim_buf + ((uint32 *)bp->dst - (uint32 *)_screen.dst_ptr) + bp->top * this->anim_buf_pitch + bp->left;
+ uint16 *anim_line = this->anim_buf + this->ScreenToAnimOffset((uint32 *)bp->dst) + bp->top * this->anim_buf_pitch + bp->left;
int effective_width = bp->width;
/* Find where to start reading in the source sprite. */
diff --git a/src/blitter/32bpp_anim_sse4.hpp b/src/blitter/32bpp_anim_sse4.hpp
index e2d4cfc231..9d9ad5dd92 100644
--- a/src/blitter/32bpp_anim_sse4.hpp
+++ b/src/blitter/32bpp_anim_sse4.hpp
@@ -23,13 +23,14 @@
#endif
#include "32bpp_anim.hpp"
+#include "32bpp_anim_sse2.hpp"
#include "32bpp_sse4.hpp"
#undef MARGIN_NORMAL_THRESHOLD
#define MARGIN_NORMAL_THRESHOLD 4
/** The SSE4 32 bpp blitter with palette animation. */
-class Blitter_32bppSSE4_Anim FINAL : public Blitter_32bppAnim, public Blitter_32bppSSE_Base {
+class Blitter_32bppSSE4_Anim FINAL : public Blitter_32bppSSE2_Anim, public Blitter_32bppSSE_Base {
private:
public:
diff --git a/src/blitter/32bpp_base.cpp b/src/blitter/32bpp_base.cpp
index 26dd2f037e..c396e45410 100644
--- a/src/blitter/32bpp_base.cpp
+++ b/src/blitter/32bpp_base.cpp
@@ -143,6 +143,36 @@ void Blitter_32bppBase::PaletteAnimate(const Palette &palette)
/* By default, 32bpp doesn't have palette animation */
}
+Colour Blitter_32bppBase::ReallyAdjustBrightness(Colour colour, uint8 brightness)
+{
+ assert(DEFAULT_BRIGHTNESS == 1 << 7);
+
+ uint64 combined = (((uint64) colour.r) << 32) | (((uint64) colour.g) << 16) | ((uint64) colour.b);
+ combined *= brightness;
+
+ uint16 r = GB(combined, 39, 9);
+ uint16 g = GB(combined, 23, 9);
+ uint16 b = GB(combined, 7, 9);
+
+ if ((combined & 0x800080008000L) == 0L) {
+ return Colour(r, g, b, colour.a);
+ }
+
+ uint16 ob = 0;
+ /* Sum overbright */
+ if (r > 255) ob += r - 255;
+ if (g > 255) ob += g - 255;
+ if (b > 255) ob += b - 255;
+
+ /* Reduce overbright strength */
+ ob /= 2;
+ return Colour(
+ r >= 255 ? 255 : min(r + ob * (255 - r) / 256, 255),
+ g >= 255 ? 255 : min(g + ob * (255 - g) / 256, 255),
+ b >= 255 ? 255 : min(b + ob * (255 - b) / 256, 255),
+ colour.a);
+}
+
Blitter::PaletteAnimation Blitter_32bppBase::UsePaletteAnimation()
{
return Blitter::PALETTE_ANIMATION_NONE;
diff --git a/src/blitter/32bpp_base.hpp b/src/blitter/32bpp_base.hpp
index 26c3dee3fd..9b76271704 100644
--- a/src/blitter/32bpp_base.hpp
+++ b/src/blitter/32bpp_base.hpp
@@ -146,30 +146,14 @@ public:
static const int DEFAULT_BRIGHTNESS = 128;
+ static Colour ReallyAdjustBrightness(Colour colour, uint8 brightness);
+
static inline Colour AdjustBrightness(Colour colour, uint8 brightness)
{
/* Shortcut for normal brightness */
if (brightness == DEFAULT_BRIGHTNESS) return colour;
- uint16 ob = 0;
- uint16 r = colour.r * brightness / DEFAULT_BRIGHTNESS;
- uint16 g = colour.g * brightness / DEFAULT_BRIGHTNESS;
- uint16 b = colour.b * brightness / DEFAULT_BRIGHTNESS;
-
- /* Sum overbright */
- if (r > 255) ob += r - 255;
- if (g > 255) ob += g - 255;
- if (b > 255) ob += b - 255;
-
- if (ob == 0) return Colour(r, g, b, colour.a);
-
- /* Reduce overbright strength */
- ob /= 2;
- return Colour(
- r >= 255 ? 255 : min(r + ob * (255 - r) / 256, 255),
- g >= 255 ? 255 : min(g + ob * (255 - g) / 256, 255),
- b >= 255 ? 255 : min(b + ob * (255 - b) / 256, 255),
- colour.a);
+ return ReallyAdjustBrightness(colour, brightness);
}
};
diff --git a/src/bridge_gui.cpp b/src/bridge_gui.cpp
index 797ead1f51..768691f080 100644
--- a/src/bridge_gui.cpp
+++ b/src/bridge_gui.cpp
@@ -55,7 +55,7 @@ typedef GUIList GUIBridgeList; ///< List of bridges, used in #B
* @param p1 packed start tile coords (~ dx)
* @param p2 various bitstuffed elements
* - p2 = (bit 0- 7) - bridge type (hi bh)
- * - p2 = (bit 8-11) - rail type or road types.
+ * - p2 = (bit 8-13) - rail type or road types.
* - p2 = (bit 15-16) - transport type.
*/
void CcBuildBridge(const CommandCost &result, TileIndex end_tile, uint32 p1, uint32 p2)
diff --git a/src/bridge_map.h b/src/bridge_map.h
index 74c6974db2..75b20498d1 100644
--- a/src/bridge_map.h
+++ b/src/bridge_map.h
@@ -131,11 +131,12 @@ static inline void MakeBridgeRamp(TileIndex t, Owner o, BridgeType bridgetype, D
SetTileType(t, MP_TUNNELBRIDGE);
SetTileOwner(t, o);
_m[t].m2 = 0;
- _m[t].m3 = rt;
+ _m[t].m3 = 0;
_m[t].m4 = 0;
_m[t].m5 = 1 << 7 | tt << 2 | d;
SB(_me[t].m6, 2, 4, bridgetype);
_me[t].m7 = 0;
+ _me[t].m8 = rt;
}
/**
diff --git a/src/build_vehicle_gui.cpp b/src/build_vehicle_gui.cpp
index 655a18d7f8..51247e84ba 100644
--- a/src/build_vehicle_gui.cpp
+++ b/src/build_vehicle_gui.cpp
@@ -524,7 +524,7 @@ const StringID _engine_sort_listing[][12] = {{
static bool CDECL CargoFilter(const EngineID *eid, const CargoID cid)
{
if (cid == CF_ANY) return true;
- uint32 refit_mask = GetUnionOfArticulatedRefitMasks(*eid, true) & _standard_cargo_mask;
+ CargoTypes refit_mask = GetUnionOfArticulatedRefitMasks(*eid, true) & _standard_cargo_mask;
return (cid == CF_NONE ? refit_mask == 0 : HasBit(refit_mask, cid));
}
@@ -535,7 +535,7 @@ static GUIEngineList::FilterFunction * const _filter_funcs[] = {
static int DrawCargoCapacityInfo(int left, int right, int y, EngineID engine)
{
CargoArray cap;
- uint32 refits;
+ CargoTypes refits;
GetArticulatedVehicleCargoesAndRefits(engine, &cap, &refits);
for (CargoID c = 0; c < NUM_CARGO; c++) {
diff --git a/src/cargo_type.h b/src/cargo_type.h
index 7b7168a102..1eca0edff6 100644
--- a/src/cargo_type.h
+++ b/src/cargo_type.h
@@ -22,7 +22,7 @@
typedef byte CargoID;
/** Available types of cargo */
-enum CargoTypes {
+enum CargoType {
/* Temperate */
CT_PASSENGERS = 0,
CT_COAL = 1,
@@ -63,13 +63,17 @@ enum CargoTypes {
CT_PLASTIC = 10,
CT_FIZZY_DRINKS = 11,
- NUM_CARGO = 32, ///< Maximal number of cargo types in a game.
+ NUM_CARGO = 64, ///< Maximal number of cargo types in a game.
CT_AUTO_REFIT = 0xFD, ///< Automatically choose cargo type when doing auto refitting.
CT_NO_REFIT = 0xFE, ///< Do not refit cargo of a vehicle (used in vehicle orders and auto-replace/auto-new).
CT_INVALID = 0xFF, ///< Invalid cargo type.
};
+typedef uint64 CargoTypes;
+
+static const CargoTypes ALL_CARGOTYPES = (CargoTypes)UINT64_MAX;
+
/** Class for storing amounts of cargo */
struct CargoArray {
private:
diff --git a/src/cargotype.cpp b/src/cargotype.cpp
index 863c585616..6cc02f63a3 100644
--- a/src/cargotype.cpp
+++ b/src/cargotype.cpp
@@ -28,12 +28,12 @@ CargoSpec CargoSpec::array[NUM_CARGO];
* Bitmask of cargo types available. This includes phony cargoes like regearing cargoes.
* Initialized during a call to #SetupCargoForClimate.
*/
-uint32 _cargo_mask;
+CargoTypes _cargo_mask;
/**
* Bitmask of real cargo types available. Phony cargoes like regearing cargoes are excluded.
*/
-uint32 _standard_cargo_mask;
+CargoTypes _standard_cargo_mask;
/**
* Set up the default cargo types for the given landscape type.
diff --git a/src/cargotype.h b/src/cargotype.h
index fee461d7fb..71cd932bbf 100644
--- a/src/cargotype.h
+++ b/src/cargotype.h
@@ -129,8 +129,8 @@ private:
friend void SetupCargoForClimate(LandscapeID l);
};
-extern uint32 _cargo_mask;
-extern uint32 _standard_cargo_mask;
+extern CargoTypes _cargo_mask;
+extern CargoTypes _standard_cargo_mask;
void SetupCargoForClimate(LandscapeID l);
CargoID GetCargoIDByLabel(CargoLabel cl);
@@ -156,7 +156,7 @@ static inline bool IsCargoInClass(CargoID c, CargoClass cc)
if ((var = CargoSpec::Get(cargospec_index))->IsValid())
#define FOR_ALL_CARGOSPECS(var) FOR_ALL_CARGOSPECS_FROM(var, 0)
-#define FOR_EACH_SET_CARGO_ID(var, cargo_bits) FOR_EACH_SET_BIT_EX(CargoID, var, uint, cargo_bits)
+#define FOR_EACH_SET_CARGO_ID(var, cargo_bits) FOR_EACH_SET_BIT_EX(CargoID, var, CargoTypes, cargo_bits)
/**
* Loop header for iterating over cargoes, sorted by name. This includes phony cargoes like regearing cargoes.
diff --git a/src/company_base.h b/src/company_base.h
index 4d76e6251a..1bc4b7f83c 100644
--- a/src/company_base.h
+++ b/src/company_base.h
@@ -67,8 +67,6 @@ struct CompanyProperties {
byte colour; ///< Company colour.
- RailTypes avail_railtypes; ///< Rail types available to the company.
-
byte block_preview; ///< Number of quarters that the company is not allowed to get new exclusive engine previews (see CompaniesGenStatistics).
TileIndex location_of_HQ; ///< Northern tile of HQ; #INVALID_TILE when there is none.
@@ -98,7 +96,13 @@ struct CompanyProperties {
CompanyEconomyEntry old_economy[MAX_HISTORY_QUARTERS]; ///< Economic data of the company of the last #MAX_HISTORY_QUARTERS quarters.
byte num_valid_stat_ent; ///< Number of valid statistical entries in #old_economy.
- CompanyProperties() : name(NULL), president_name(NULL) {}
+ // TODO: Change some of these member variables to use relevant INVALID_xxx constants
+ CompanyProperties()
+ : name_2(0), name_1(0), name(NULL), president_name_1(0), president_name_2(0), president_name(NULL),
+ face(0), money(0), money_fraction(0), current_loan(0), colour(0), block_preview(0),
+ location_of_HQ(0), last_build_coordinate(0), share_owners(), inaugurated_year(0),
+ months_of_bankruptcy(0), bankrupt_asked(0), bankrupt_timeout(0), bankrupt_value(0),
+ terraform_limit(0), clear_limit(0), tree_limit(0), is_ai(false) {}
~CompanyProperties()
{
@@ -112,6 +116,7 @@ struct Company : CompanyPool::PoolItem<&_company_pool>, CompanyProperties {
~Company();
Livery livery[LS_END];
+ RailTypes avail_railtypes; ///< Rail types available to this company.
RoadTypes avail_roadtypes; ///< Road types available to this company.
class AIInstance *ai_instance;
diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp
index 68ef036c13..8e95c6355b 100644
--- a/src/console_cmds.cpp
+++ b/src/console_cmds.cpp
@@ -1908,6 +1908,37 @@ static void IConsoleDebugLibRegister()
}
#endif
+DEF_CONSOLE_CMD(ConFramerate)
+{
+ extern void ConPrintFramerate(); // framerate_gui.cpp
+
+ if (argc == 0) {
+ IConsoleHelp("Show frame rate and game speed information");
+ return true;
+ }
+
+ ConPrintFramerate();
+ return true;
+}
+
+DEF_CONSOLE_CMD(ConFramerateWindow)
+{
+ extern void ShowFramerateWindow();
+
+ if (argc == 0) {
+ IConsoleHelp("Open the frame rate window");
+ return true;
+ }
+
+ if (_network_dedicated) {
+ IConsoleError("Can not open frame rate window on a dedicated server");
+ return false;
+ }
+
+ ShowFramerateWindow();
+ return true;
+}
+
/*******************************
* console command registration
*******************************/
@@ -2038,6 +2069,9 @@ void IConsoleStdLibRegister()
#ifdef _DEBUG
IConsoleDebugLibRegister();
#endif
+ IConsoleCmdRegister("fps", ConFramerate);
+ IConsoleCmdRegister("fps_wnd", ConFramerateWindow);
+
IConsoleCmdRegister("dump_command_log", ConDumpCommandLog, nullptr, true);
/* NewGRF development stuff */
diff --git a/src/core/alloc_func.hpp b/src/core/alloc_func.hpp
index c7e17421f7..c33e733016 100644
--- a/src/core/alloc_func.hpp
+++ b/src/core/alloc_func.hpp
@@ -125,7 +125,7 @@ static inline T *ReallocT(T *t_ptr, size_t num_elements)
/* Ensure the size does not overflow. */
CheckAllocationConstraints(num_elements);
- t_ptr = (T*)realloc(t_ptr, num_elements * sizeof(T));
+ t_ptr = (T*)realloc(static_cast(t_ptr), num_elements * sizeof(T));
if (t_ptr == NULL) ReallocError(num_elements * sizeof(T));
return t_ptr;
}
diff --git a/src/core/backup_type.hpp b/src/core/backup_type.hpp
index 60799170f7..7e3771b70f 100644
--- a/src/core/backup_type.hpp
+++ b/src/core/backup_type.hpp
@@ -53,7 +53,7 @@ struct Backup {
{
/* We cannot assert here, as missing restoration is 'normal' when exceptions are thrown.
* Exceptions are especially used to abort world generation. */
- DEBUG(misc, 0, "%s:%d: Backupped value was not restored!", this->file, this->line);
+ DEBUG(misc, 0, "%s:%d: Backed-up value was not restored!", this->file, this->line);
this->Restore();
}
}
diff --git a/src/core/endian_type.hpp b/src/core/endian_type.hpp
index dbb7faec66..453bf5402c 100644
--- a/src/core/endian_type.hpp
+++ b/src/core/endian_type.hpp
@@ -27,14 +27,21 @@
/* Windows has always LITTLE_ENDIAN */
#if defined(WIN32) || defined(__OS2__) || defined(WIN64)
- #define TTD_ENDIAN TTD_LITTLE_ENDIAN
+# define TTD_ENDIAN TTD_LITTLE_ENDIAN
+#elif defined(OSX)
+# include
+# if __DARWIN_BYTE_ORDER == __DARWIN_LITTLE_ENDIAN
+# define TTD_ENDIAN TTD_LITTLE_ENDIAN
+# else
+# define TTD_ENDIAN TTD_BIG_ENDIAN
+# endif
#elif !defined(TESTING)
- /* Else include endian[target/host].h, which has the endian-type, autodetected by the Makefile */
- #if defined(STRGEN) || defined(SETTINGSGEN)
- #include "endian_host.h"
- #else
- #include "endian_target.h"
- #endif
+# include
+# if __BYTE_ORDER == __LITTLE_ENDIAN
+# define TTD_ENDIAN TTD_LITTLE_ENDIAN
+# else
+# define TTD_ENDIAN TTD_BIG_ENDIAN
+# endif
#endif /* WIN32 || __OS2__ || WIN64 */
#endif /* ENDIAN_TYPE_HPP */
diff --git a/src/cpu.cpp b/src/cpu.cpp
index c48b8cbd4d..9393ea0613 100644
--- a/src/cpu.cpp
+++ b/src/cpu.cpp
@@ -18,7 +18,7 @@
/* rdtsc for MSC_VER, uses simple inline assembly, or _rdtsc
* from external win64.asm because VS2005 does not support inline assembly */
-#if defined(_MSC_VER) && !defined(RDTSC_AVAILABLE) && !defined(WINCE)
+#if defined(_MSC_VER) && !defined(RDTSC_AVAILABLE)
#include
uint64 ottd_rdtsc()
{
@@ -71,10 +71,7 @@ uint64 ottd_rdtsc()
/* In all other cases we have no support for rdtsc. No major issue,
* you just won't be able to profile your code with TIC()/TOC() */
#if !defined(RDTSC_AVAILABLE)
-/* MSVC (in case of WinCE) can't handle #warning */
-# if !defined(_MSC_VER)
#warning "(non-fatal) No support for rdtsc(), you won't be able to profile with TIC/TOC"
-# endif
uint64 ottd_rdtsc() {return 0;}
#endif
diff --git a/src/debug.cpp b/src/debug.cpp
index 1846152254..f8f3f0ad56 100644
--- a/src/debug.cpp
+++ b/src/debug.cpp
@@ -17,6 +17,10 @@
#include "fileio_func.h"
#include "settings_type.h"
+#if defined(WIN32) || defined(WIN64)
+#include "os/windows/win32.h"
+#endif
+
#include
#if defined(ENABLE_NETWORK)
@@ -135,10 +139,10 @@ static void debug_print(const char *dbg, const char *buf)
} else {
char buffer[512];
seprintf(buffer, lastof(buffer), "%sdbg: [%s] %s\n", GetLogPrefix(), dbg, buf);
-#if defined(WINCE)
- NKDbgPrintfW(OTTD2FS(buffer));
-#elif defined(WIN32) || defined(WIN64)
- _fputts(OTTD2FS(buffer, true), stderr);
+#if defined(WIN32) || defined(WIN64)
+ TCHAR system_buf[512];
+ convert_to_fs(buffer, system_buf, lengthof(system_buf), true);
+ _fputts(system_buf, stderr);
#else
fputs(buffer, stderr);
#endif
diff --git a/src/disaster_vehicle.cpp b/src/disaster_vehicle.cpp
index 98978ddfb0..64ebcd3fa1 100644
--- a/src/disaster_vehicle.cpp
+++ b/src/disaster_vehicle.cpp
@@ -164,7 +164,7 @@ DisasterVehicle::DisasterVehicle(int x, int y, Direction direction, DisasterSubT
this->direction = direction;
this->tile = TileVirtXY(x, y);
this->subtype = subtype;
- this->UpdateDeltaXY(INVALID_DIR);
+ this->UpdateDeltaXY();
this->owner = OWNER_NONE;
this->image_override = 0;
this->current_order.Free();
@@ -973,7 +973,7 @@ void ReleaseDisastersTargetingVehicle(VehicleID vehicle)
}
}
-void DisasterVehicle::UpdateDeltaXY(Direction direction)
+void DisasterVehicle::UpdateDeltaXY()
{
this->x_offs = -1;
this->y_offs = -1;
diff --git a/src/disaster_vehicle.h b/src/disaster_vehicle.h
index 06fb36c1e3..e86d96e97d 100644
--- a/src/disaster_vehicle.h
+++ b/src/disaster_vehicle.h
@@ -48,7 +48,7 @@ struct DisasterVehicle FINAL : public SpecializedVehicleold_economy[1], &c->old_economy[0], sizeof(c->old_economy) - sizeof(c->old_economy[0]));
+ /* Drop the oldest history off the end */
+ std::copy_backward(c->old_economy, c->old_economy + MAX_HISTORY_QUARTERS - 1, c->old_economy + MAX_HISTORY_QUARTERS);
c->old_economy[0] = c->cur_economy;
- memset(&c->cur_economy, 0, sizeof(c->cur_economy));
+ c->cur_economy = {};
if (c->num_valid_stat_ent != MAX_HISTORY_QUARTERS) c->num_valid_stat_ent++;
@@ -1366,14 +1367,14 @@ struct IsEmptyAction
struct PrepareRefitAction
{
CargoArray &consist_capleft; ///< Capacities left in the consist.
- uint32 &refit_mask; ///< Bitmask of possible refit cargoes.
+ CargoTypes &refit_mask; ///< Bitmask of possible refit cargoes.
/**
* Create a refit preparation action.
* @param consist_capleft Capacities left in consist, to be updated here.
* @param refit_mask Refit mask to be constructed from refit information of vehicles.
*/
- PrepareRefitAction(CargoArray &consist_capleft, uint32 &refit_mask) :
+ PrepareRefitAction(CargoArray &consist_capleft, CargoTypes &refit_mask) :
consist_capleft(consist_capleft), refit_mask(refit_mask) {}
/**
@@ -1469,7 +1470,7 @@ static void HandleStationRefit(Vehicle *v, CargoArray &consist_capleft, Station
Backup cur_company(_current_company, v->owner, FILE_LINE);
- uint32 refit_mask = v->GetEngine()->info.refit_mask;
+ CargoTypes refit_mask = v->GetEngine()->info.refit_mask;
/* Remove old capacity from consist capacity and collect refit mask. */
IterateVehicleParts(v_start, PrepareRefitAction(consist_capleft, refit_mask));
@@ -1627,10 +1628,10 @@ static void LoadUnloadVehicle(Vehicle *front)
bool completely_emptied = true;
bool anything_unloaded = false;
bool anything_loaded = false;
- uint32 full_load_amount = 0;
- uint32 cargo_not_full = 0;
- uint32 cargo_full = 0;
- uint32 reservation_left = 0;
+ CargoTypes full_load_amount = 0;
+ CargoTypes cargo_not_full = 0;
+ CargoTypes cargo_full = 0;
+ CargoTypes reservation_left = 0;
front->cur_speed = 0;
@@ -1838,7 +1839,7 @@ static void LoadUnloadVehicle(Vehicle *front)
/* if the aircraft carries passengers and is NOT full, then
* continue loading, no matter how much mail is in */
if ((front->type == VEH_AIRCRAFT && IsCargoInClass(front->cargo_type, CC_PASSENGERS) && front->cargo_cap > front->cargo.StoredCount()) ||
- (cargo_not_full && (cargo_full & ~cargo_not_full) == 0)) { // There are still non-full cargoes
+ (cargo_not_full != 0 && (cargo_full & ~cargo_not_full) == 0)) { // There are still non-full cargoes
finished_loading = false;
}
} else if (cargo_not_full != 0) {
diff --git a/src/economy_type.h b/src/economy_type.h
index 7e7a572413..31f74aacc7 100644
--- a/src/economy_type.h
+++ b/src/economy_type.h
@@ -152,12 +152,12 @@ enum ExpensesType {
EXPENSES_NEW_VEHICLES, ///< New vehicles.
EXPENSES_TRAIN_RUN, ///< Running costs trains.
EXPENSES_ROADVEH_RUN, ///< Running costs road vehicles.
- EXPENSES_AIRCRAFT_RUN, ///< Running costs aircrafts.
+ EXPENSES_AIRCRAFT_RUN, ///< Running costs aircraft.
EXPENSES_SHIP_RUN, ///< Running costs ships.
EXPENSES_PROPERTY, ///< Property costs.
EXPENSES_TRAIN_INC, ///< Income from trains.
EXPENSES_ROADVEH_INC, ///< Income from road vehicles.
- EXPENSES_AIRCRAFT_INC, ///< Income from aircrafts.
+ EXPENSES_AIRCRAFT_INC, ///< Income from aircraft.
EXPENSES_SHIP_INC, ///< Income from ships.
EXPENSES_LOAN_INT, ///< Interest payments over the loan.
EXPENSES_OTHER, ///< Other expenses.
diff --git a/src/effectvehicle.cpp b/src/effectvehicle.cpp
index 5921cd190e..4d8f58acb8 100644
--- a/src/effectvehicle.cpp
+++ b/src/effectvehicle.cpp
@@ -603,7 +603,7 @@ EffectVehicle *CreateEffectVehicle(int x, int y, int z, EffectVehicleType type)
v->y_pos = y;
v->z_pos = z;
v->tile = 0;
- v->UpdateDeltaXY(INVALID_DIR);
+ v->UpdateDeltaXY();
v->vehstatus = VS_UNCLICKABLE;
_effect_init_procs[type](v);
@@ -647,7 +647,7 @@ bool EffectVehicle::Tick()
return _effect_tick_procs[this->subtype](this);
}
-void EffectVehicle::UpdateDeltaXY(Direction direction)
+void EffectVehicle::UpdateDeltaXY()
{
this->x_offs = 0;
this->y_offs = 0;
diff --git a/src/effectvehicle_base.h b/src/effectvehicle_base.h
index 27da420017..d809657fab 100644
--- a/src/effectvehicle_base.h
+++ b/src/effectvehicle_base.h
@@ -32,7 +32,7 @@ struct EffectVehicle FINAL : public SpecializedVehicle.
- */
-
-/**
- * @file endian_check.cpp
- * This pretty simple file checks if the system is LITTLE_ENDIAN or BIG_ENDIAN
- * it does that by putting a 1 and a 0 in an array, and read it out as one
- * number. If it is 1, it is LITTLE_ENDIAN, if it is 256, it is BIG_ENDIAN
- *
- * After that it outputs the contents of an include files (endian.h)
- * that says or TTD_LITTLE_ENDIAN, or TTD_BIG_ENDIAN. Makefile takes
- * care of the real writing to the file.
- */
-
-#include
-#include
-
-/** Supported endian types */
-enum Endian {
- ENDIAN_LITTLE, ///< little endian
- ENDIAN_BIG, ///< big endian
-};
-
-/**
- * Shortcut to printf("#define TTD_ENDIAN TTD_*_ENDIAN")
- * @param endian endian type to define
- */
-static inline void printf_endian(Endian endian)
-{
- printf("#define TTD_ENDIAN %s\n", endian == ENDIAN_LITTLE ? "TTD_LITTLE_ENDIAN" : "TTD_BIG_ENDIAN");
-}
-
-/**
- * Main call of the endian_check program
- * @param argc argument count
- * @param argv arguments themselves
- * @return exit code
- */
-int main (int argc, char *argv[])
-{
- unsigned char endian_test[2] = { 1, 0 };
- int force_BE = 0, force_LE = 0, force_PREPROCESSOR = 0;
-
- if (argc > 1 && strcmp(argv[1], "BE") == 0) force_BE = 1;
- if (argc > 1 && strcmp(argv[1], "LE") == 0) force_LE = 1;
- if (argc > 1 && strcmp(argv[1], "PREPROCESSOR") == 0) force_PREPROCESSOR = 1;
-
- printf("#ifndef ENDIAN_H\n#define ENDIAN_H\n");
-
- if (force_LE == 1) {
- printf_endian(ENDIAN_LITTLE);
- } else if (force_BE == 1) {
- printf_endian(ENDIAN_BIG);
- } else if (force_PREPROCESSOR == 1) {
- /* Support for universal binaries on OSX
- * Universal binaries supports both PPC and x86
- * If a compiler for OSX gets this setting, it will always pick the correct endian and no test is needed
- */
- printf("#ifdef __BIG_ENDIAN__\n");
- printf_endian(ENDIAN_BIG);
- printf("#else\n");
- printf_endian(ENDIAN_LITTLE);
- printf("#endif\n");
- } else if (*(short*)endian_test == 1 ) {
- printf_endian(ENDIAN_LITTLE);
- } else {
- printf_endian(ENDIAN_BIG);
- }
- printf("#endif\n");
-
- return 0;
-}
diff --git a/src/engine.cpp b/src/engine.cpp
index b0af3bc4df..ac2e8df0ec 100644
--- a/src/engine.cpp
+++ b/src/engine.cpp
@@ -752,7 +752,7 @@ static CompanyID GetPreviewCompany(Engine *e)
CompanyID best_company = INVALID_COMPANY;
/* For trains the cargomask has no useful meaning, since you can attach other wagons */
- uint32 cargomask = e->type != VEH_TRAIN ? GetUnionOfArticulatedRefitMasks(e->index, true) : (uint32)-1;
+ CargoTypes cargomask = e->type != VEH_TRAIN ? GetUnionOfArticulatedRefitMasks(e->index, true) : ALL_CARGOTYPES;
int32 best_hist = -1;
const Company *c;
@@ -1117,7 +1117,9 @@ bool IsEngineRefittable(EngineID engine)
/* Is there any cargo except the default cargo? */
CargoID default_cargo = e->GetDefaultCargoType();
- return default_cargo != CT_INVALID && ei->refit_mask != 1U << default_cargo;
+ CargoTypes default_cargo_mask = 0;
+ SetBit(default_cargo_mask, default_cargo);
+ return default_cargo != CT_INVALID && ei->refit_mask != default_cargo_mask;
}
/**
diff --git a/src/engine_func.h b/src/engine_func.h
index 6c3fb14ff2..37fb005092 100644
--- a/src/engine_func.h
+++ b/src/engine_func.h
@@ -26,7 +26,7 @@ extern const uint8 _engine_offsets[4];
bool IsEngineBuildable(EngineID engine, VehicleType type, CompanyID company);
bool IsEngineRefittable(EngineID engine);
-void GetArticulatedVehicleCargoesAndRefits(EngineID engine, CargoArray *cargoes, uint32 *refits);
+void GetArticulatedVehicleCargoesAndRefits(EngineID engine, CargoArray *cargoes, CargoTypes *refits);
void SetYearEngineAgingStops();
void StartupOneEngine(Engine *e, Date aging_date);
diff --git a/src/engine_type.h b/src/engine_type.h
index 8356fda8f8..82f10d9d87 100644
--- a/src/engine_type.h
+++ b/src/engine_type.h
@@ -137,7 +137,7 @@ struct EngineInfo {
byte load_amount;
byte climates; ///< Climates supported by the engine.
CargoID cargo_type;
- uint32 refit_mask;
+ CargoTypes refit_mask;
byte refit_cost;
byte misc_flags; ///< Miscellaneous flags. @see EngineMiscFlags
byte callback_mask; ///< Bitmask of vehicle callbacks that have to be called
diff --git a/src/fileio.cpp b/src/fileio.cpp
index 0590efd3a7..3ad5be711d 100644
--- a/src/fileio.cpp
+++ b/src/fileio.cpp
@@ -325,15 +325,7 @@ bool FioCheckFileExists(const char *filename, Subdirectory subdir)
*/
bool FileExists(const char *filename)
{
-#if defined(WINCE)
- /* There is always one platform that doesn't support basic commands... */
- HANDLE hand = CreateFile(OTTD2FS(filename), 0, 0, NULL, OPEN_EXISTING, 0, NULL);
- if (hand == INVALID_HANDLE_VALUE) return 1;
- CloseHandle(hand);
- return 0;
-#else
return access(OTTD2FS(filename), 0) == 0;
-#endif
}
/**
@@ -540,11 +532,11 @@ FILE *FioFOpenFile(const char *filename, const char *mode, Subdirectory subdir,
* Create a directory with the given name
* @param name the new name of the directory
*/
-static void FioCreateDirectory(const char *name)
+void FioCreateDirectory(const char *name)
{
/* Ignore directory creation errors; they'll surface later on, and most
* of the time they are 'directory already exists' errors anyhow. */
-#if defined(WIN32) || defined(WINCE)
+#if defined(WIN32)
CreateDirectory(OTTD2FS(name), NULL);
#elif defined(OS2) && !defined(__INNOTEK_LIBC__)
mkdir(OTTD2FS(name));
@@ -988,14 +980,14 @@ bool ExtractTar(const char *tar_filename, Subdirectory subdir)
return true;
}
-#if defined(WIN32) || defined(WINCE)
+#if defined(WIN32)
/**
* Determine the base (personal dir and game data dir) paths
* @param exe the path from the current path to the executable
* @note defined in the OS related files (os2.cpp, win32.cpp, unix.cpp etc)
*/
extern void DetermineBasePaths(const char *exe);
-#else /* defined(WIN32) || defined(WINCE) */
+#else /* defined(WIN32) */
/**
* Changes the working directory to the path of the give executable.
@@ -1158,7 +1150,7 @@ extern void cocoaSetApplicationBundleDir();
_searchpaths[SP_APPLICATION_BUNDLE_DIR] = NULL;
#endif
}
-#endif /* defined(WIN32) || defined(WINCE) */
+#endif /* defined(WIN32) */
const char *_personal_dir;
diff --git a/src/fileio_func.h b/src/fileio_func.h
index 443460b2d3..6383180744 100644
--- a/src/fileio_func.h
+++ b/src/fileio_func.h
@@ -55,6 +55,7 @@ char *FioGetFullPath(char *buf, const char *last, Searchpath sp, Subdirectory su
char *FioFindFullPath(char *buf, const char *last, Subdirectory subdir, const char *filename);
char *FioAppendDirectory(char *buf, const char *last, Searchpath sp, Subdirectory subdir);
char *FioGetDirectory(char *buf, const char *last, Subdirectory subdir);
+void FioCreateDirectory(const char *name);
const char *FiosGetScreenshotDir();
@@ -149,4 +150,17 @@ static inline DIR *ttd_opendir(const char *path)
return opendir(OTTD2FS(path));
}
+
+/** Auto-close a file upon scope exit. */
+class FileCloser {
+ FILE *f;
+
+public:
+ FileCloser(FILE *_f) : f(_f) {}
+ ~FileCloser()
+ {
+ fclose(f);
+ }
+};
+
#endif /* FILEIO_FUNC_H */
diff --git a/src/fios.cpp b/src/fios.cpp
index 5e78fb1b4d..f4a25e1ed2 100644
--- a/src/fios.cpp
+++ b/src/fios.cpp
@@ -153,9 +153,7 @@ const char *FiosBrowseTo(const FiosItem *item)
{
switch (item->type) {
case FIOS_TYPE_DRIVE:
-#if defined(WINCE)
- seprintf(_fios_path, _fios_path_last, PATHSEP "");
-#elif defined(WIN32) || defined(__OS2__)
+#if defined(WIN32) || defined(__OS2__)
seprintf(_fios_path, _fios_path_last, "%c:" PATHSEP, item->title[0]);
#endif
break;
diff --git a/src/fontcache.cpp b/src/fontcache.cpp
index 72e42ccbb3..3a5dd886c1 100644
--- a/src/fontcache.cpp
+++ b/src/fontcache.cpp
@@ -86,6 +86,7 @@ public:
virtual GlyphID MapCharToGlyph(WChar key) { assert(IsPrintable(key)); return SPRITE_GLYPH | key; }
virtual const void *GetFontTable(uint32 tag, size_t &length) { length = 0; return NULL; }
virtual const char *GetFontName() { return "sprite"; }
+ virtual bool IsBuiltInFont() { return true; }
};
/**
@@ -208,6 +209,7 @@ bool SpriteFontCache::GetDrawGlyphShadow()
class FreeTypeFontCache : public FontCache {
private:
FT_Face face; ///< The font face associated with this font.
+ int req_size; ///< Requested font size.
typedef SmallMap > FontTable; ///< Table with font table cache
FontTable font_tables; ///< Cached font tables.
@@ -236,6 +238,7 @@ private:
GlyphEntry *GetGlyphPtr(GlyphID key);
void SetGlyphPtr(GlyphID key, const GlyphEntry *glyph, bool duplicate = false);
+ void SetFontSize(FontSize fs, FT_Face face, int pixels);
public:
FreeTypeFontCache(FontSize fs, FT_Face face, int pixels);
@@ -250,6 +253,7 @@ public:
virtual GlyphID MapCharToGlyph(WChar key);
virtual const void *GetFontTable(uint32 tag, size_t &length);
virtual const char *GetFontName() { return face->family_name; }
+ virtual bool IsBuiltInFont() { return false; }
};
FT_Library _library = NULL;
@@ -265,20 +269,26 @@ static const byte SHADOW_COLOUR = 2;
* @param face The font that has to be loaded.
* @param pixels The number of pixels this font should be high.
*/
-FreeTypeFontCache::FreeTypeFontCache(FontSize fs, FT_Face face, int pixels) : FontCache(fs), face(face), glyph_to_sprite(NULL)
+FreeTypeFontCache::FreeTypeFontCache(FontSize fs, FT_Face face, int pixels) : FontCache(fs), face(face), req_size(pixels), glyph_to_sprite(NULL)
{
assert(face != NULL);
+ this->SetFontSize(fs, face, pixels);
+}
+
+void FreeTypeFontCache::SetFontSize(FontSize fs, FT_Face face, int pixels)
+{
if (pixels == 0) {
/* Try to determine a good height based on the minimal height recommended by the font. */
- pixels = _default_font_height[this->fs];
+ int scaled_height = ScaleGUITrad(_default_font_height[this->fs]);
+ pixels = scaled_height;
TT_Header *head = (TT_Header *)FT_Get_Sfnt_Table(this->face, ft_sfnt_head);
if (head != NULL) {
/* Font height is minimum height plus the difference between the default
* height for this font size and the small size. */
- int diff = _default_font_height[this->fs] - _default_font_height[FS_SMALL];
- pixels = Clamp(min(head->Lowest_Rec_PPEM, 20) + diff, _default_font_height[this->fs], MAX_FONT_SIZE);
+ int diff = scaled_height - ScaleGUITrad(_default_font_height[FS_SMALL]);
+ pixels = Clamp(min(head->Lowest_Rec_PPEM, 20) + diff, scaled_height, MAX_FONT_SIZE);
}
}
@@ -393,6 +403,7 @@ found_face:
FreeTypeFontCache::~FreeTypeFontCache()
{
FT_Done_Face(this->face);
+ this->face = NULL;
this->ClearFontCache();
for (FontTable::iterator iter = this->font_tables.Begin(); iter != this->font_tables.End(); iter++) {
@@ -422,6 +433,9 @@ void FreeTypeFontCache::ClearFontCache()
this->glyph_to_sprite = NULL;
Layouter::ResetFontCache(this->fs);
+
+ /* GUI scaling might have changed, determine font size anew if it was automatically selected. */
+ if (this->face != NULL && this->req_size == 0) this->SetFontSize(this->fs, this->face, this->req_size);
}
FreeTypeFontCache::GlyphEntry *FreeTypeFontCache::GetGlyphPtr(GlyphID key)
diff --git a/src/fontcache.h b/src/fontcache.h
index 8caf4f1bd3..8d66ed3667 100644
--- a/src/fontcache.h
+++ b/src/fontcache.h
@@ -143,6 +143,11 @@ public:
{
return this->parent != NULL;
}
+
+ /**
+ * Is this a built-in sprite font?
+ */
+ virtual bool IsBuiltInFont() = 0;
};
/** Get the SpriteID mapped to the given font size and key */
diff --git a/src/framerate_gui.cpp b/src/framerate_gui.cpp
new file mode 100644
index 0000000000..021958d323
--- /dev/null
+++ b/src/framerate_gui.cpp
@@ -0,0 +1,823 @@
+/* $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 .
+*/
+
+/** @file framerate_gui.cpp GUI for displaying framerate/game speed information. */
+
+#include "framerate_type.h"
+#include
+#include "gfx_func.h"
+#include "window_gui.h"
+#include "table/sprites.h"
+#include "strings_func.h"
+#include "debug.h"
+#include "console_func.h"
+#include "console_type.h"
+
+#include "widgets/framerate_widget.h"
+
+
+namespace {
+
+ /** Number of data points to keep in buffer for each performance measurement */
+ const int NUM_FRAMERATE_POINTS = 512;
+ /** Units a second is divided into in performance measurements */
+ const TimingMeasurement TIMESTAMP_PRECISION = 1000000;
+
+ struct PerformanceData {
+ /** Duration value indicating the value is not valid should be considered a gap in measurements */
+ static const TimingMeasurement INVALID_DURATION = UINT64_MAX;
+
+ /** Time spent processing each cycle of the performance element, circular buffer */
+ TimingMeasurement durations[NUM_FRAMERATE_POINTS];
+ /** Start time of each cycle of the performance element, circular buffer */
+ TimingMeasurement timestamps[NUM_FRAMERATE_POINTS];
+ /** Expected number of cycles per second when the system is running without slowdowns */
+ double expected_rate;
+ /** Next index to write to in \c durations and \c timestamps */
+ int next_index;
+ /** Last index written to in \c durations and \c timestamps */
+ int prev_index;
+ /** Number of data points recorded, clamped to \c NUM_FRAMERATE_POINTS */
+ int num_valid;
+
+ /** Current accumulated duration */
+ TimingMeasurement acc_duration;
+ /** Start time for current accumulation cycle */
+ TimingMeasurement acc_timestamp;
+
+ explicit PerformanceData(double expected_rate) : expected_rate(expected_rate), next_index(0), prev_index(0), num_valid(0) { }
+
+ void Add(TimingMeasurement start_time, TimingMeasurement end_time)
+ {
+ this->durations[this->next_index] = end_time - start_time;
+ this->timestamps[this->next_index] = start_time;
+ this->prev_index = this->next_index;
+ this->next_index += 1;
+ if (this->next_index >= NUM_FRAMERATE_POINTS) this->next_index = 0;
+ this->num_valid = min(NUM_FRAMERATE_POINTS, this->num_valid + 1);
+ }
+
+ void BeginAccumulate(TimingMeasurement start_time)
+ {
+ this->timestamps[this->next_index] = this->acc_timestamp;
+ this->durations[this->next_index] = this->acc_duration;
+ this->prev_index = this->next_index;
+ this->next_index += 1;
+ if (this->next_index >= NUM_FRAMERATE_POINTS) this->next_index = 0;
+ this->num_valid = min(NUM_FRAMERATE_POINTS, this->num_valid + 1);
+
+ this->acc_duration = 0;
+ this->acc_timestamp = start_time;
+ }
+
+ void AddAccumulate(TimingMeasurement duration)
+ {
+ this->acc_duration += duration;
+ }
+
+ void AddPause(TimingMeasurement start_time)
+ {
+ if (this->durations[this->prev_index] != INVALID_DURATION) {
+ this->timestamps[this->next_index] = start_time;
+ this->durations[this->next_index] = INVALID_DURATION;
+ this->prev_index = this->next_index;
+ this->next_index += 1;
+ if (this->next_index >= NUM_FRAMERATE_POINTS) this->next_index = 0;
+ this->num_valid += 1;
+ }
+ }
+
+ /** Get average cycle processing time over a number of data points */
+ double GetAverageDurationMilliseconds(int count)
+ {
+ count = min(count, this->num_valid);
+
+ int first_point = this->prev_index - count;
+ if (first_point < 0) first_point += NUM_FRAMERATE_POINTS;
+
+ /* Sum durations, skipping invalid points */
+ double sumtime = 0;
+ for (int i = first_point; i < first_point + count; i++) {
+ auto d = this->durations[i % NUM_FRAMERATE_POINTS];
+ if (d != INVALID_DURATION) {
+ sumtime += d;
+ } else {
+ /* Don't count the invalid durations */
+ count--;
+ }
+ }
+
+ if (count == 0) return 0; // avoid div by zero
+ return sumtime * 1000 / count / TIMESTAMP_PRECISION;
+ }
+
+ /** Get current rate of a performance element, based on approximately the past one second of data */
+ double GetRate()
+ {
+ /* Start at last recorded point, end at latest when reaching the earliest recorded point */
+ int point = this->prev_index;
+ int last_point = this->next_index - this->num_valid;
+ if (last_point < 0) last_point += NUM_FRAMERATE_POINTS;
+
+ /** Number of data points collected */
+ int count = 0;
+ /** Time of previous data point */
+ TimingMeasurement last = this->timestamps[point];
+ /** Total duration covered by collected points */
+ TimingMeasurement total = 0;
+
+ while (point != last_point) {
+ /* Only record valid data points, but pretend the gaps in measurements aren't there */
+ if (this->durations[point] != INVALID_DURATION) {
+ total += last - this->timestamps[point];
+ count++;
+ }
+ last = this->timestamps[point];
+ if (total >= TIMESTAMP_PRECISION) break; // end after 1 second has been collected
+ point--;
+ if (point < 0) point = NUM_FRAMERATE_POINTS - 1;
+ }
+
+ if (total == 0 || count == 0) return 0;
+ return (double)count * TIMESTAMP_PRECISION / total;
+ }
+ };
+
+ /** Game loop rate, cycles per second */
+ static const double GL_RATE = 1000.0 / MILLISECONDS_PER_TICK;
+
+ PerformanceData _pf_data[PFE_MAX] = {
+ PerformanceData(GL_RATE), // PFE_GAMELOOP
+ PerformanceData(1), // PFE_ACC_GL_ECONOMY
+ PerformanceData(1), // PFE_ACC_GL_TRAINS
+ PerformanceData(1), // PFE_ACC_GL_ROADVEHS
+ PerformanceData(1), // PFE_ACC_GL_SHIPS
+ PerformanceData(1), // PFE_ACC_GL_AIRCRAFT
+ PerformanceData(1), // PFE_GL_LANDSCAPE
+ PerformanceData(1), // PFE_GL_LINKGRAPH
+ PerformanceData(GL_RATE), // PFE_DRAWING
+ PerformanceData(1), // PFE_ACC_DRAWWORLD
+ PerformanceData(60.0), // PFE_VIDEO
+ PerformanceData(1000.0 * 8192 / 44100), // PFE_SOUND
+ };
+
+}
+
+
+/**
+ * Return a timestamp with \c TIMESTAMP_PRECISION ticks per second precision.
+ * The basis of the timestamp is implementation defined, but the value should be steady,
+ * so differences can be taken to reliably measure intervals.
+ */
+static TimingMeasurement GetPerformanceTimer()
+{
+ using namespace std::chrono;
+ return (TimingMeasurement)time_point_cast(high_resolution_clock::now()).time_since_epoch().count();
+}
+
+
+/** Begin a cycle of a measured element. */
+PerformanceMeasurer::PerformanceMeasurer(PerformanceElement elem)
+{
+ assert(elem < PFE_MAX);
+
+ this->elem = elem;
+ this->start_time = GetPerformanceTimer();
+}
+
+/** Finish a cycle of a measured element and store the measurement taken. */
+PerformanceMeasurer::~PerformanceMeasurer()
+{
+ _pf_data[this->elem].Add(this->start_time, GetPerformanceTimer());
+}
+
+/** Set the rate of expected cycles per second of a performance element. */
+void PerformanceMeasurer::SetExpectedRate(double rate)
+{
+ _pf_data[this->elem].expected_rate = rate;
+}
+
+/** Indicate that a cycle of "pause" where no processing occurs. */
+void PerformanceMeasurer::Paused(PerformanceElement elem)
+{
+ _pf_data[elem].AddPause(GetPerformanceTimer());
+}
+
+
+/** Begin measuring one block of the accumulating value. */
+PerformanceAccumulator::PerformanceAccumulator(PerformanceElement elem)
+{
+ assert(elem < PFE_MAX);
+
+ this->elem = elem;
+ this->start_time = GetPerformanceTimer();
+}
+
+/** Finish and add one block of the accumulating value. */
+PerformanceAccumulator::~PerformanceAccumulator()
+{
+ _pf_data[this->elem].AddAccumulate(GetPerformanceTimer() - this->start_time);
+}
+
+/** Store the previous accumulator value and reset for a new cycle of accumulating measurements. */
+void PerformanceAccumulator::Reset(PerformanceElement elem)
+{
+ _pf_data[elem].BeginAccumulate(GetPerformanceTimer());
+}
+
+
+void ShowFrametimeGraphWindow(PerformanceElement elem);
+
+
+static const NWidgetPart _framerate_window_widgets[] = {
+ NWidget(NWID_HORIZONTAL),
+ NWidget(WWT_CLOSEBOX, COLOUR_GREY),
+ NWidget(WWT_CAPTION, COLOUR_GREY, WID_FRW_CAPTION), SetDataTip(STR_FRAMERATE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
+ NWidget(WWT_SHADEBOX, COLOUR_GREY),
+ NWidget(WWT_STICKYBOX, COLOUR_GREY),
+ EndContainer(),
+ NWidget(WWT_PANEL, COLOUR_GREY),
+ NWidget(NWID_VERTICAL), SetPadding(6), SetPIP(0, 3, 0),
+ NWidget(WWT_TEXT, COLOUR_GREY, WID_FRW_RATE_GAMELOOP), SetDataTip(STR_FRAMERATE_RATE_GAMELOOP, STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP),
+ NWidget(WWT_TEXT, COLOUR_GREY, WID_FRW_RATE_DRAWING), SetDataTip(STR_FRAMERATE_RATE_BLITTER, STR_FRAMERATE_RATE_BLITTER_TOOLTIP),
+ NWidget(WWT_TEXT, COLOUR_GREY, WID_FRW_RATE_FACTOR), SetDataTip(STR_FRAMERATE_SPEED_FACTOR, STR_FRAMERATE_SPEED_FACTOR_TOOLTIP),
+ EndContainer(),
+ EndContainer(),
+ NWidget(WWT_PANEL, COLOUR_GREY),
+ NWidget(NWID_VERTICAL), SetPadding(6), SetPIP(0, 3, 0),
+ NWidget(NWID_HORIZONTAL), SetPIP(0, 6, 0),
+ NWidget(WWT_EMPTY, COLOUR_GREY, WID_FRW_TIMES_NAMES),
+ NWidget(WWT_EMPTY, COLOUR_GREY, WID_FRW_TIMES_CURRENT),
+ NWidget(WWT_EMPTY, COLOUR_GREY, WID_FRW_TIMES_AVERAGE),
+ EndContainer(),
+ NWidget(WWT_TEXT, COLOUR_GREY, WID_FRW_INFO_DATA_POINTS), SetDataTip(STR_FRAMERATE_DATA_POINTS, 0x0),
+ EndContainer(),
+ EndContainer(),
+};
+
+struct FramerateWindow : Window {
+ bool small;
+ uint32 next_update;
+
+ struct CachedDecimal {
+ StringID strid;
+ uint32 value;
+
+ inline void SetRate(double value, double target)
+ {
+ const double threshold_good = target * 0.95;
+ const double threshold_bad = target * 2 / 3;
+ value = min(9999.99, value);
+ this->value = (uint32)(value * 100);
+ this->strid = (value > threshold_good) ? STR_FRAMERATE_FPS_GOOD : (value < threshold_bad) ? STR_FRAMERATE_FPS_BAD : STR_FRAMERATE_FPS_WARN;
+ }
+
+ inline void SetTime(double value, double target)
+ {
+ const double threshold_good = target / 3;
+ const double threshold_bad = target;
+ value = min(9999.99, value);
+ this->value = (uint32)(value * 100);
+ this->strid = (value < threshold_good) ? STR_FRAMERATE_MS_GOOD : (value > threshold_bad) ? STR_FRAMERATE_MS_BAD : STR_FRAMERATE_MS_WARN;
+ }
+
+ inline void InsertDParams(uint n) const
+ {
+ SetDParam(n, this->value);
+ SetDParam(n + 1, 2);
+ }
+ };
+
+ CachedDecimal rate_gameloop; ///< cached game loop tick rate
+ CachedDecimal rate_drawing; ///< cached drawing frame rate
+ CachedDecimal speed_gameloop; ///< cached game loop speed factor
+ CachedDecimal times_shortterm[PFE_MAX]; ///< cached short term average times
+ CachedDecimal times_longterm[PFE_MAX]; ///< cached long term average times
+
+ static const int VSPACING = 3; ///< space between column heading and values
+
+ FramerateWindow(WindowDesc *desc, WindowNumber number) : Window(desc)
+ {
+ this->InitNested(number);
+ this->small = this->IsShaded();
+ this->UpdateData();
+ }
+
+ virtual void OnTick()
+ {
+ /* Check if the shaded state has changed, switch caption text if it has */
+ if (this->small != this->IsShaded()) {
+ this->small = this->IsShaded();
+ this->GetWidget(WID_FRW_CAPTION)->SetDataTip(this->small ? STR_FRAMERATE_CAPTION_SMALL : STR_FRAMERATE_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS);
+ this->next_update = 0;
+ }
+
+ if (_realtime_tick >= this->next_update) {
+ this->UpdateData();
+ this->SetDirty();
+ this->next_update = _realtime_tick + 100;
+ }
+ }
+
+ void UpdateData()
+ {
+ double gl_rate = _pf_data[PFE_GAMELOOP].GetRate();
+ this->rate_gameloop.SetRate(gl_rate, _pf_data[PFE_GAMELOOP].expected_rate);
+ this->speed_gameloop.SetRate(gl_rate / _pf_data[PFE_GAMELOOP].expected_rate, 1.0);
+ if (this->small) return; // in small mode, this is everything needed
+
+ this->rate_drawing.SetRate(_pf_data[PFE_DRAWING].GetRate(), _pf_data[PFE_DRAWING].expected_rate);
+
+ for (PerformanceElement e = PFE_FIRST; e < PFE_MAX; e++) {
+ this->times_shortterm[e].SetTime(_pf_data[e].GetAverageDurationMilliseconds(8), MILLISECONDS_PER_TICK);
+ this->times_longterm[e].SetTime(_pf_data[e].GetAverageDurationMilliseconds(NUM_FRAMERATE_POINTS), MILLISECONDS_PER_TICK);
+ }
+ }
+
+ virtual void SetStringParameters(int widget) const
+ {
+ switch (widget) {
+ case WID_FRW_CAPTION:
+ /* When the window is shaded, the caption shows game loop rate and speed factor */
+ if (!this->small) break;
+ SetDParam(0, this->rate_gameloop.strid);
+ this->rate_gameloop.InsertDParams(1);
+ this->speed_gameloop.InsertDParams(3);
+ break;
+
+ case WID_FRW_RATE_GAMELOOP:
+ SetDParam(0, this->rate_gameloop.strid);
+ this->rate_gameloop.InsertDParams(1);
+ break;
+ case WID_FRW_RATE_DRAWING:
+ SetDParam(0, this->rate_drawing.strid);
+ this->rate_drawing.InsertDParams(1);
+ break;
+ case WID_FRW_RATE_FACTOR:
+ this->speed_gameloop.InsertDParams(0);
+ break;
+ case WID_FRW_INFO_DATA_POINTS:
+ SetDParam(0, NUM_FRAMERATE_POINTS);
+ break;
+ }
+ }
+
+ virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
+ {
+ switch (widget) {
+ case WID_FRW_RATE_GAMELOOP:
+ SetDParam(0, STR_FRAMERATE_FPS_GOOD);
+ SetDParam(1, 999999);
+ SetDParam(2, 2);
+ *size = GetStringBoundingBox(STR_FRAMERATE_RATE_GAMELOOP);
+ break;
+ case WID_FRW_RATE_DRAWING:
+ SetDParam(0, STR_FRAMERATE_FPS_GOOD);
+ SetDParam(1, 999999);
+ SetDParam(2, 2);
+ *size = GetStringBoundingBox(STR_FRAMERATE_RATE_BLITTER);
+ break;
+ case WID_FRW_RATE_FACTOR:
+ SetDParam(0, 999999);
+ SetDParam(1, 2);
+ *size = GetStringBoundingBox(STR_FRAMERATE_SPEED_FACTOR);
+ break;
+
+ case WID_FRW_TIMES_NAMES: {
+ int linecount = PFE_MAX - PFE_FIRST;
+ size->width = 0;
+ size->height = FONT_HEIGHT_NORMAL * (linecount + 1) + VSPACING;
+ for (int line = 0; line < linecount; line++) {
+ Dimension line_size = GetStringBoundingBox(STR_FRAMERATE_GAMELOOP + line);
+ size->width = max(size->width, line_size.width);
+ }
+ break;
+ }
+
+ case WID_FRW_TIMES_CURRENT:
+ case WID_FRW_TIMES_AVERAGE: {
+ int linecount = PFE_MAX - PFE_FIRST;
+ *size = GetStringBoundingBox(STR_FRAMERATE_CURRENT + (widget - WID_FRW_TIMES_CURRENT));
+ SetDParam(0, 999999);
+ SetDParam(1, 2);
+ Dimension item_size = GetStringBoundingBox(STR_FRAMERATE_MS_GOOD);
+ size->width = max(size->width, item_size.width);
+ size->height += FONT_HEIGHT_NORMAL * linecount + VSPACING;
+ break;
+ }
+ }
+ }
+
+ /** Render a column of formatted average durations */
+ void DrawElementTimesColumn(const Rect &r, StringID heading_str, const CachedDecimal *values) const
+ {
+ int y = r.top;
+ DrawString(r.left, r.right, y, heading_str, TC_FROMSTRING, SA_CENTER);
+ y += FONT_HEIGHT_NORMAL + VSPACING;
+
+ for (PerformanceElement e = PFE_FIRST; e < PFE_MAX; e++) {
+ values[e].InsertDParams(0);
+ DrawString(r.left, r.right, y, values[e].strid, TC_FROMSTRING, SA_RIGHT);
+ y += FONT_HEIGHT_NORMAL;
+ }
+ }
+
+ virtual void DrawWidget(const Rect &r, int widget) const
+ {
+ switch (widget) {
+ case WID_FRW_TIMES_NAMES: {
+ /* Render a column of titles for performance element names */
+ int linecount = PFE_MAX - PFE_FIRST;
+ int y = r.top + FONT_HEIGHT_NORMAL + VSPACING; // first line contains headings in the value columns
+ for (int i = 0; i < linecount; i++) {
+ DrawString(r.left, r.right, y, STR_FRAMERATE_GAMELOOP + i, TC_FROMSTRING, SA_LEFT);
+ y += FONT_HEIGHT_NORMAL;
+ }
+ break;
+ }
+ case WID_FRW_TIMES_CURRENT:
+ /* Render short-term average values */
+ DrawElementTimesColumn(r, STR_FRAMERATE_CURRENT, this->times_shortterm);
+ break;
+ case WID_FRW_TIMES_AVERAGE:
+ /* Render averages of all recorded values */
+ DrawElementTimesColumn(r, STR_FRAMERATE_AVERAGE, this->times_longterm);
+ break;
+ }
+ }
+
+ virtual void OnClick(Point pt, int widget, int click_count)
+ {
+ switch (widget) {
+ case WID_FRW_TIMES_NAMES:
+ case WID_FRW_TIMES_CURRENT:
+ case WID_FRW_TIMES_AVERAGE: {
+ /* Open time graph windows when clicking detail measurement lines */
+ int line = this->GetRowFromWidget(pt.y, widget, VSPACING, FONT_HEIGHT_NORMAL);
+ if (line > 0) {
+ line -= 1;
+ ShowFrametimeGraphWindow((PerformanceElement)line);
+ }
+ break;
+ }
+ }
+ }
+};
+
+static WindowDesc _framerate_display_desc(
+ WDP_AUTO, "framerate_display", 60, 40,
+ WC_FRAMERATE_DISPLAY, WC_NONE,
+ 0,
+ _framerate_window_widgets, lengthof(_framerate_window_widgets)
+);
+
+
+static const NWidgetPart _frametime_graph_window_widgets[] = {
+ NWidget(NWID_HORIZONTAL),
+ NWidget(WWT_CLOSEBOX, COLOUR_GREY),
+ NWidget(WWT_CAPTION, COLOUR_GREY, WID_FGW_CAPTION), SetDataTip(STR_WHITE_STRING, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
+ NWidget(WWT_STICKYBOX, COLOUR_GREY),
+ EndContainer(),
+ NWidget(WWT_PANEL, COLOUR_GREY),
+ NWidget(NWID_VERTICAL), SetPadding(6),
+ NWidget(WWT_EMPTY, COLOUR_GREY, WID_FGW_GRAPH),
+ EndContainer(),
+ EndContainer(),
+};
+
+struct FrametimeGraphWindow : Window {
+ int vertical_scale; ///< number of TIMESTAMP_PRECISION units vertically
+ int horizontal_scale; ///< number of half-second units horizontally
+ uint32 next_scale_update; ///< realtime tick for next scale update
+
+ PerformanceElement element; ///< what element this window renders graph for
+ Dimension graph_size; ///< size of the main graph area (excluding axis labels)
+
+ FrametimeGraphWindow(WindowDesc *desc, WindowNumber number) : Window(desc)
+ {
+ this->element = (PerformanceElement)number;
+ this->horizontal_scale = 4;
+ this->vertical_scale = TIMESTAMP_PRECISION / 10;
+ this->next_scale_update = 0;
+
+ this->InitNested(number);
+ }
+
+ virtual void SetStringParameters(int widget) const
+ {
+ switch (widget) {
+ case WID_FGW_CAPTION:
+ SetDParam(0, STR_FRAMETIME_CAPTION_GAMELOOP + this->element);
+ break;
+ }
+ }
+
+ virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize)
+ {
+ if (widget == WID_FGW_GRAPH) {
+ SetDParam(0, 100);
+ Dimension size_ms_label = GetStringBoundingBox(STR_FRAMERATE_GRAPH_MILLISECONDS);
+ SetDParam(0, 100);
+ Dimension size_s_label = GetStringBoundingBox(STR_FRAMERATE_GRAPH_SECONDS);
+
+ /* Size graph in height to fit at least 10 vertical labels with space between, or at least 100 pixels */
+ graph_size.height = max(100, 10 * (size_ms_label.height + 1));
+ /* Always 2:1 graph area */
+ graph_size.width = 2 * graph_size.height;
+ *size = graph_size;
+
+ size->width += size_ms_label.width + 2;
+ size->height += size_s_label.height + 2;
+ }
+ }
+
+ void SelectHorizontalScale(TimingMeasurement range)
+ {
+ /* Determine horizontal scale based on period covered by 60 points
+ * (slightly less than 2 seconds at full game speed) */
+ struct ScaleDef { TimingMeasurement range; int scale; };
+ static const ScaleDef hscales[] = {
+ { 120, 60 },
+ { 10, 20 },
+ { 5, 10 },
+ { 3, 4 },
+ { 1, 2 },
+ };
+ for (const ScaleDef *sc = hscales; sc < hscales + lengthof(hscales); sc++) {
+ if (range < sc->range) this->horizontal_scale = sc->scale;
+ }
+ }
+
+ void SelectVerticalScale(TimingMeasurement range)
+ {
+ /* Determine vertical scale based on peak value (within the horizontal scale + a bit) */
+ static const TimingMeasurement vscales[] = {
+ TIMESTAMP_PRECISION * 100,
+ TIMESTAMP_PRECISION * 10,
+ TIMESTAMP_PRECISION * 5,
+ TIMESTAMP_PRECISION,
+ TIMESTAMP_PRECISION / 2,
+ TIMESTAMP_PRECISION / 5,
+ TIMESTAMP_PRECISION / 10,
+ TIMESTAMP_PRECISION / 50,
+ TIMESTAMP_PRECISION / 200,
+ };
+ for (const TimingMeasurement *sc = vscales; sc < vscales + lengthof(vscales); sc++) {
+ if (range < *sc) this->vertical_scale = (int)*sc;
+ }
+ }
+
+ /** Recalculate the graph scaling factors based on current recorded data */
+ void UpdateScale()
+ {
+ const TimingMeasurement *durations = _pf_data[this->element].durations;
+ const TimingMeasurement *timestamps = _pf_data[this->element].timestamps;
+ int num_valid = _pf_data[this->element].num_valid;
+ int point = _pf_data[this->element].prev_index;
+
+ TimingMeasurement lastts = timestamps[point];
+ TimingMeasurement time_sum = 0;
+ TimingMeasurement peak_value = 0;
+ int count = 0;
+
+ /* Sensible default for when too few measurements are available */
+ this->horizontal_scale = 4;
+
+ for (int i = 1; i < num_valid; i++) {
+ point--;
+ if (point < 0) point = NUM_FRAMERATE_POINTS - 1;
+
+ TimingMeasurement value = durations[point];
+ if (value == PerformanceData::INVALID_DURATION) {
+ /* Skip gaps in data by pretending time is continuous across them */
+ lastts = timestamps[point];
+ continue;
+ }
+ if (value > peak_value) peak_value = value;
+ count++;
+
+ /* Accumulate period of time covered by data */
+ time_sum += lastts - timestamps[point];
+ lastts = timestamps[point];
+
+ /* Enough data to select a range and get decent data density */
+ if (count == 60) this->SelectHorizontalScale(time_sum / TIMESTAMP_PRECISION);
+
+ /* End when enough points have been collected and the horizontal scale has been exceeded */
+ if (count >= 60 && time_sum >= (this->horizontal_scale + 2) * TIMESTAMP_PRECISION / 2) break;
+ }
+
+ this->SelectVerticalScale(peak_value);
+ }
+
+ virtual void OnTick()
+ {
+ this->SetDirty();
+
+ if (this->next_scale_update < _realtime_tick) {
+ this->next_scale_update = _realtime_tick + 500;
+ this->UpdateScale();
+ }
+ }
+
+ /** Scale and interpolate a value from a source range into a destination range */
+ template
+ static inline T Scinterlate(T dst_min, T dst_max, T src_min, T src_max, T value)
+ {
+ T dst_diff = dst_max - dst_min;
+ T src_diff = src_max - src_min;
+ return (value - src_min) * dst_diff / src_diff + dst_min;
+ }
+
+ virtual void DrawWidget(const Rect &r, int widget) const
+ {
+ if (widget == WID_FGW_GRAPH) {
+ const TimingMeasurement *durations = _pf_data[this->element].durations;
+ const TimingMeasurement *timestamps = _pf_data[this->element].timestamps;
+ int point = _pf_data[this->element].prev_index;
+
+ const int x_zero = r.right - (int)this->graph_size.width;
+ const int x_max = r.right;
+ const int y_zero = r.top + (int)this->graph_size.height;
+ const int y_max = r.top;
+ const int c_grid = PC_DARK_GREY;
+ const int c_lines = PC_BLACK;
+ const int c_peak = PC_DARK_RED;
+
+ const TimingMeasurement draw_horz_scale = (TimingMeasurement)this->horizontal_scale * TIMESTAMP_PRECISION / 2;
+ const TimingMeasurement draw_vert_scale = (TimingMeasurement)this->vertical_scale;
+
+ /* Number of \c horizontal_scale units in each horizontal division */
+ const uint horz_div_scl = (this->horizontal_scale <= 20) ? 1 : 10;
+ /* Number of divisions of the horizontal axis */
+ const uint horz_divisions = this->horizontal_scale / horz_div_scl;
+ /* Number of divisions of the vertical axis */
+ const uint vert_divisions = 10;
+
+ /* Draw division lines and labels for the vertical axis */
+ for (uint division = 0; division < vert_divisions; division++) {
+ int y = Scinterlate(y_zero, y_max, 0, (int)vert_divisions, (int)division);
+ GfxDrawLine(x_zero, y, x_max, y, c_grid);
+ if (division % 2 == 0) {
+ if ((TimingMeasurement)this->vertical_scale > TIMESTAMP_PRECISION) {
+ SetDParam(0, this->vertical_scale * division / 10 / TIMESTAMP_PRECISION);
+ DrawString(r.left, x_zero - 2, y - FONT_HEIGHT_SMALL, STR_FRAMERATE_GRAPH_SECONDS, TC_GREY, SA_RIGHT | SA_FORCE, false, FS_SMALL);
+ } else {
+ SetDParam(0, this->vertical_scale * division / 10 * 1000 / TIMESTAMP_PRECISION);
+ DrawString(r.left, x_zero - 2, y - FONT_HEIGHT_SMALL, STR_FRAMERATE_GRAPH_MILLISECONDS, TC_GREY, SA_RIGHT | SA_FORCE, false, FS_SMALL);
+ }
+ }
+ }
+ /* Draw divison lines and labels for the horizontal axis */
+ for (uint division = horz_divisions; division > 0; division--) {
+ int x = Scinterlate(x_zero, x_max, 0, (int)horz_divisions, (int)horz_divisions - (int)division);
+ GfxDrawLine(x, y_max, x, y_zero, c_grid);
+ if (division % 2 == 0) {
+ SetDParam(0, division * horz_div_scl / 2);
+ DrawString(x, x_max, y_zero + 2, STR_FRAMERATE_GRAPH_SECONDS, TC_GREY, SA_LEFT | SA_FORCE, false, FS_SMALL);
+ }
+ }
+
+ /* Position of last rendered data point */
+ Point lastpoint = {
+ x_max,
+ (int)Scinterlate(y_zero, y_max, 0, this->vertical_scale, durations[point])
+ };
+ /* Timestamp of last rendered data point */
+ TimingMeasurement lastts = timestamps[point];
+
+ TimingMeasurement peak_value = 0;
+ Point peak_point = { 0, 0 };
+ TimingMeasurement value_sum = 0;
+ TimingMeasurement time_sum = 0;
+ int points_drawn = 0;
+
+ for (int i = 1; i < NUM_FRAMERATE_POINTS; i++) {
+ point--;
+ if (point < 0) point = NUM_FRAMERATE_POINTS - 1;
+
+ TimingMeasurement value = durations[point];
+ if (value == PerformanceData::INVALID_DURATION) {
+ /* Skip gaps in measurements, pretend the data points on each side are continuous */
+ lastts = timestamps[point];
+ continue;
+ }
+
+ /* Use total time period covered for value along horizontal axis */
+ time_sum += lastts - timestamps[point];
+ lastts = timestamps[point];
+ /* Stop if past the width of the graph */
+ if (time_sum > draw_horz_scale) break;
+
+ /* Draw line from previous point to new point */
+ Point newpoint = {
+ (int)Scinterlate(x_zero, x_max, 0, (int64)draw_horz_scale, (int64)draw_horz_scale - (int64)time_sum),
+ (int)Scinterlate(y_zero, y_max, 0, (int64)draw_vert_scale, (int64)value)
+ };
+ assert(newpoint.x <= lastpoint.x);
+ GfxDrawLine(lastpoint.x, lastpoint.y, newpoint.x, newpoint.y, c_lines);
+ lastpoint = newpoint;
+
+ /* Record peak and average value across graphed data */
+ value_sum += value;
+ points_drawn++;
+ if (value > peak_value) {
+ peak_value = value;
+ peak_point = newpoint;
+ }
+ }
+
+ /* If the peak value is significantly larger than the average, mark and label it */
+ if (points_drawn > 0 && peak_value > TIMESTAMP_PRECISION / 100 && 2 * peak_value > 3 * value_sum / points_drawn) {
+ TextColour tc_peak = (TextColour)(TC_IS_PALETTE_COLOUR | c_peak);
+ GfxFillRect(peak_point.x - 1, peak_point.y - 1, peak_point.x + 1, peak_point.y + 1, c_peak);
+ SetDParam(0, peak_value * 1000 / TIMESTAMP_PRECISION);
+ int label_y = max(y_max, peak_point.y - FONT_HEIGHT_SMALL);
+ if (peak_point.x - x_zero > (int)this->graph_size.width / 2) {
+ DrawString(x_zero, peak_point.x - 2, label_y, STR_FRAMERATE_GRAPH_MILLISECONDS, tc_peak, SA_RIGHT | SA_FORCE, false, FS_SMALL);
+ } else {
+ DrawString(peak_point.x + 2, x_max, label_y, STR_FRAMERATE_GRAPH_MILLISECONDS, tc_peak, SA_LEFT | SA_FORCE, false, FS_SMALL);
+ }
+ }
+ }
+ }
+};
+
+static WindowDesc _frametime_graph_window_desc(
+ WDP_AUTO, "frametime_graph", 140, 90,
+ WC_FRAMETIME_GRAPH, WC_NONE,
+ 0,
+ _frametime_graph_window_widgets, lengthof(_frametime_graph_window_widgets)
+);
+
+
+
+void ShowFramerateWindow()
+{
+ AllocateWindowDescFront(&_framerate_display_desc, 0);
+}
+
+void ShowFrametimeGraphWindow(PerformanceElement elem)
+{
+ if (elem < PFE_FIRST || elem >= PFE_MAX) return; // maybe warn?
+ AllocateWindowDescFront(&_frametime_graph_window_desc, elem, true);
+}
+
+void ConPrintFramerate()
+{
+ const int count1 = NUM_FRAMERATE_POINTS / 8;
+ const int count2 = NUM_FRAMERATE_POINTS / 4;
+ const int count3 = NUM_FRAMERATE_POINTS / 1;
+
+ IConsolePrintF(TC_SILVER, "Based on num. data points: %d %d %d", count1, count2, count3);
+
+ static const char *MEASUREMENT_NAMES[PFE_MAX] = {
+ "Game loop",
+ " GL station ticks",
+ " GL train ticks",
+ " GL road vehicle ticks",
+ " GL ship ticks",
+ " GL aircraft ticks",
+ " GL landscape ticks",
+ " GL link graph delays",
+ "Drawing",
+ " Viewport drawing",
+ "Video output",
+ "Sound mixing",
+ };
+
+ static const PerformanceElement rate_elements[] = { PFE_GAMELOOP, PFE_DRAWING, PFE_VIDEO };
+
+ bool printed_anything = false;
+
+ for (const PerformanceElement *e = rate_elements; e < rate_elements + lengthof(rate_elements); e++) {
+ auto &pf = _pf_data[*e];
+ if (pf.num_valid == 0) continue;
+ IConsolePrintF(TC_GREEN, "%s rate: %.2ffps (expected: %.2ffps)",
+ MEASUREMENT_NAMES[*e],
+ pf.GetRate(),
+ pf.expected_rate);
+ printed_anything = true;
+ }
+
+ for (PerformanceElement e = PFE_FIRST; e < PFE_MAX; e++) {
+ auto &pf = _pf_data[e];
+ if (pf.num_valid == 0) continue;
+ IConsolePrintF(TC_LIGHT_BLUE, "%s times: %.2fms %.2fms %.2fms",
+ MEASUREMENT_NAMES[e],
+ pf.GetAverageDurationMilliseconds(count1),
+ pf.GetAverageDurationMilliseconds(count2),
+ pf.GetAverageDurationMilliseconds(count3));
+ printed_anything = true;
+ }
+
+ if (!printed_anything) {
+ IConsoleWarning("No performance measurements have been taken yet");
+ }
+}
diff --git a/src/framerate_type.h b/src/framerate_type.h
new file mode 100644
index 0000000000..295939efec
--- /dev/null
+++ b/src/framerate_type.h
@@ -0,0 +1,67 @@
+/* $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 .
+*/
+
+#ifndef FRAMERATE_GUI_H
+#define FRAMERATE_GUI_H
+
+#include "stdafx.h"
+#include "core/enum_type.hpp"
+
+enum PerformanceElement {
+ PFE_FIRST = 0,
+ PFE_GAMELOOP = 0, ///< Speed of gameloop processing.
+ PFE_GL_ECONOMY, ///< Time spent processing cargo movement
+ PFE_GL_TRAINS, ///< Time spent processing trains
+ PFE_GL_ROADVEHS, ///< Time spend processing road vehicles
+ PFE_GL_SHIPS, ///< Time spent processing ships
+ PFE_GL_AIRCRAFT, ///< Time spent processing aircraft
+ PFE_GL_LANDSCAPE, ///< Time spent processing other world features
+ PFE_GL_LINKGRAPH, ///< Time spent waiting for link graph background jobs
+ PFE_DRAWING, ///< Speed of drawing world and GUI.
+ PFE_DRAWWORLD, ///< Time spent drawing world viewports in GUI
+ PFE_VIDEO, ///< Speed of painting drawn video buffer.
+ PFE_SOUND, ///< Speed of mixing audio samples
+ PFE_MAX, ///< End of enum, must be last.
+};
+DECLARE_POSTFIX_INCREMENT(PerformanceElement)
+
+typedef uint64 TimingMeasurement;
+
+/**
+ * RAII class for measuring simple elements of performance.
+ * Construct an object with the appropriate element parameter when processing begins,
+ * time is automatically taken when the object goes out of scope again.
+ */
+class PerformanceMeasurer {
+ PerformanceElement elem;
+ TimingMeasurement start_time;
+public:
+ PerformanceMeasurer(PerformanceElement elem);
+ ~PerformanceMeasurer();
+ void SetExpectedRate(double rate);
+ static void Paused(PerformanceElement elem);
+};
+
+/**
+ * RAII class for measuring multi-step elements of performance.
+ * At the beginning of a frame, call Reset on the element, then construct an object in the scope where
+ * each processing cycle happens. The measurements are summed between resets.
+ */
+class PerformanceAccumulator {
+ PerformanceElement elem;
+ TimingMeasurement start_time;
+public:
+ PerformanceAccumulator(PerformanceElement elem);
+ ~PerformanceAccumulator();
+ static void Reset(PerformanceElement elem);
+};
+
+void ShowFramerateWindow();
+
+#endif /* FRAMERATE_GUI_H */
diff --git a/src/gamelog.h b/src/gamelog.h
index 7f5b6a7765..83694e3ea8 100644
--- a/src/gamelog.h
+++ b/src/gamelog.h
@@ -38,7 +38,7 @@ void GamelogReset();
* @param s The string to print.
*/
typedef void GamelogPrintProc(const char *s);
-void GamelogPrint(GamelogPrintProc *proc); // needed for WIN32 / WINCE crash.log
+void GamelogPrint(GamelogPrintProc *proc); // needed for WIN32 crash.log
void GamelogPrintDebug(int level);
void GamelogPrintConsole();
diff --git a/src/genworld_gui.cpp b/src/genworld_gui.cpp
index 359709e361..04eea8e660 100644
--- a/src/genworld_gui.cpp
+++ b/src/genworld_gui.cpp
@@ -288,7 +288,7 @@ static DropDownList *BuildMapsizeDropDown()
for (uint i = MIN_MAP_SIZE_BITS; i <= MAX_MAP_SIZE_BITS; i++) {
DropDownListParamStringItem *item = new DropDownListParamStringItem(STR_JUST_INT, i, false);
- item->SetParam(0, 1 << i);
+ item->SetParam(0, 1LL << i);
*list->Append() = item;
}
@@ -336,8 +336,8 @@ struct GenerateLandscapeWindow : public Window {
{
switch (widget) {
case WID_GL_START_DATE_TEXT: SetDParam(0, ConvertYMDToDate(_settings_newgame.game_creation.starting_year, 0, 1)); break;
- case WID_GL_MAPSIZE_X_PULLDOWN: SetDParam(0, 1 << _settings_newgame.game_creation.map_x); break;
- case WID_GL_MAPSIZE_Y_PULLDOWN: SetDParam(0, 1 << _settings_newgame.game_creation.map_y); break;
+ case WID_GL_MAPSIZE_X_PULLDOWN: SetDParam(0, 1LL << _settings_newgame.game_creation.map_x); break;
+ case WID_GL_MAPSIZE_Y_PULLDOWN: SetDParam(0, 1LL << _settings_newgame.game_creation.map_y); break;
case WID_GL_MAX_HEIGHTLEVEL_TEXT: SetDParam(0, _settings_newgame.construction.max_heightlevel); break;
case WID_GL_SNOW_LEVEL_TEXT: SetDParam(0, _settings_newgame.game_creation.snow_line_height); break;
@@ -896,11 +896,11 @@ struct CreateScenarioWindow : public Window
break;
case WID_CS_MAPSIZE_X_PULLDOWN:
- SetDParam(0, 1 << _settings_newgame.game_creation.map_x);
+ SetDParam(0, 1LL << _settings_newgame.game_creation.map_x);
break;
case WID_CS_MAPSIZE_Y_PULLDOWN:
- SetDParam(0, 1 << _settings_newgame.game_creation.map_y);
+ SetDParam(0, 1LL << _settings_newgame.game_creation.map_y);
break;
case WID_CS_FLAT_LAND_HEIGHT_TEXT:
diff --git a/src/gfx.cpp b/src/gfx.cpp
index 7195051577..c9c36019ce 100644
--- a/src/gfx.cpp
+++ b/src/gfx.cpp
@@ -1111,16 +1111,17 @@ void DoPaletteAnimations()
/**
* Determine a contrasty text colour for a coloured background.
* @param background Background colour.
+ * @param threshold Background colour brightness threshold below which the background is considered dark and TC_WHITE is returned, range: 0 - 255, default 128.
* @return TC_BLACK or TC_WHITE depending on what gives a better contrast.
*/
-TextColour GetContrastColour(uint8 background)
+TextColour GetContrastColour(uint8 background, uint8 threshold)
{
Colour c = _cur_palette.palette[background];
/* Compute brightness according to http://www.w3.org/TR/AERT#color-contrast.
* The following formula computes 1000 * brightness^2, with brightness being in range 0 to 255. */
uint sq1000_brightness = c.r * c.r * 299 + c.g * c.g * 587 + c.b * c.b * 114;
- /* Compare with threshold brightness 128 (50%) */
- return sq1000_brightness < 128 * 128 * 1000 ? TC_WHITE : TC_BLACK;
+ /* Compare with threshold brightness which defaults to 128 (50%) */
+ return sq1000_brightness < ((uint) threshold) * ((uint) threshold) * 1000 ? TC_WHITE : TC_BLACK;
}
/**
@@ -1214,11 +1215,6 @@ void UndrawMouseCursor()
void DrawMouseCursor()
{
-#if defined(WINCE)
- /* Don't ever draw the mouse for WinCE, as we work with a stylus */
- return;
-#endif
-
/* Don't draw the mouse cursor if the screen is not ready */
if (_screen.dst_ptr == NULL) return;
diff --git a/src/gfx_func.h b/src/gfx_func.h
index 99461f9079..9f7cb9153d 100644
--- a/src/gfx_func.h
+++ b/src/gfx_func.h
@@ -187,7 +187,7 @@ int GetCharacterHeight(FontSize size);
extern DrawPixelInfo *_cur_dpi;
-TextColour GetContrastColour(uint8 background);
+TextColour GetContrastColour(uint8 background, uint8 threshold = 128);
/**
* All 16 colour gradients
diff --git a/src/gfx_layout.cpp b/src/gfx_layout.cpp
index 3290aea653..bb7efa2d72 100644
--- a/src/gfx_layout.cpp
+++ b/src/gfx_layout.cpp
@@ -21,6 +21,10 @@
#include
#endif /* WITH_ICU_LAYOUT */
+#ifdef WITH_UNISCRIBE
+#include "os/windows/string_uniscribe.h"
+#endif /* WITH_UNISCRIBE */
+
#include "safeguards.h"
@@ -113,26 +117,12 @@ le_bool Font::getGlyphPoint(LEGlyphID glyph, le_int32 pointNumber, LEPoint &poin
return FALSE;
}
-static size_t AppendToBuffer(UChar *buff, const UChar *buffer_last, WChar c)
-{
- /* Transform from UTF-32 to internal ICU format of UTF-16. */
- int32 length = 0;
- UErrorCode err = U_ZERO_ERROR;
- u_strFromUTF32(buff, buffer_last - buff, &length, (UChar32*)&c, 1, &err);
- return length;
-}
-
/**
* Wrapper for doing layouts with ICU.
*/
class ICUParagraphLayout : public AutoDeleteSmallVector, public ParagraphLayouter {
ParagraphLayout *p; ///< The actual ICU paragraph layout.
public:
- /** Helper for GetLayouter, to get the right type. */
- typedef UChar CharType;
- /** Helper for GetLayouter, to get whether the layouter supports RTL. */
- static const bool SUPPORTS_RTL = true;
-
/** Visual run contains data about the bit of text with the same font. */
class ICUVisualRun : public ParagraphLayouter::VisualRun {
const ParagraphLayout::VisualRun *vr; ///< The actual ICU vr.
@@ -184,35 +174,54 @@ public:
}
};
-static ParagraphLayouter *GetParagraphLayout(UChar *buff, UChar *buff_end, FontMap &fontMapping)
-{
- int32 length = buff_end - buff;
+/**
+ * Helper class to construct a new #ICUParagraphLayout.
+ */
+class ICUParagraphLayoutFactory {
+public:
+ /** Helper for GetLayouter, to get the right type. */
+ typedef UChar CharType;
+ /** Helper for GetLayouter, to get whether the layouter supports RTL. */
+ static const bool SUPPORTS_RTL = true;
- if (length == 0) {
- /* ICU's ParagraphLayout cannot handle empty strings, so fake one. */
- buff[0] = ' ';
- length = 1;
- fontMapping.End()[-1].first++;
+ static ParagraphLayouter *GetParagraphLayout(UChar *buff, UChar *buff_end, FontMap &fontMapping)
+ {
+ int32 length = buff_end - buff;
+
+ if (length == 0) {
+ /* ICU's ParagraphLayout cannot handle empty strings, so fake one. */
+ buff[0] = ' ';
+ length = 1;
+ fontMapping.End()[-1].first++;
+ }
+
+ /* Fill ICU's FontRuns with the right data. */
+ FontRuns runs(fontMapping.Length());
+ for (FontMap::iterator iter = fontMapping.Begin(); iter != fontMapping.End(); iter++) {
+ runs.add(iter->second, iter->first);
+ }
+
+ LEErrorCode status = LE_NO_ERROR;
+ /* ParagraphLayout does not copy "buff", so it must stay valid.
+ * "runs" is copied according to the ICU source, but the documentation does not specify anything, so this might break somewhen. */
+ ParagraphLayout *p = new ParagraphLayout(buff, length, &runs, NULL, NULL, NULL, _current_text_dir == TD_RTL ? UBIDI_DEFAULT_RTL : UBIDI_DEFAULT_LTR, false, status);
+ if (status != LE_NO_ERROR) {
+ delete p;
+ return NULL;
+ }
+
+ return new ICUParagraphLayout(p);
}
- /* Fill ICU's FontRuns with the right data. */
- FontRuns runs(fontMapping.Length());
- for (FontMap::iterator iter = fontMapping.Begin(); iter != fontMapping.End(); iter++) {
- runs.add(iter->second, iter->first);
+ static size_t AppendToBuffer(UChar *buff, const UChar *buffer_last, WChar c)
+ {
+ /* Transform from UTF-32 to internal ICU format of UTF-16. */
+ int32 length = 0;
+ UErrorCode err = U_ZERO_ERROR;
+ u_strFromUTF32(buff, buffer_last - buff, &length, (UChar32*)&c, 1, &err);
+ return length;
}
-
- LEErrorCode status = LE_NO_ERROR;
- /* ParagraphLayout does not copy "buff", so it must stay valid.
- * "runs" is copied according to the ICU source, but the documentation does not specify anything, so this might break somewhen. */
- ParagraphLayout *p = new ParagraphLayout(buff, length, &runs, NULL, NULL, NULL, _current_text_dir == TD_RTL ? UBIDI_DEFAULT_RTL : UBIDI_DEFAULT_LTR, false, status);
- if (status != LE_NO_ERROR) {
- delete p;
- return NULL;
- }
-
- return new ICUParagraphLayout(p);
-}
-
+};
#endif /* WITH_ICU_LAYOUT */
/*** Paragraph layout ***/
@@ -236,11 +245,6 @@ static ParagraphLayouter *GetParagraphLayout(UChar *buff, UChar *buff_end, FontM
*/
class FallbackParagraphLayout : public ParagraphLayouter {
public:
- /** Helper for GetLayouter, to get the right type. */
- typedef WChar CharType;
- /** Helper for GetLayouter, to get whether the layouter supports RTL. */
- static const bool SUPPORTS_RTL = false;
-
/** Visual run contains data about the bit of text with the same font. */
class FallbackVisualRun : public ParagraphLayouter::VisualRun {
Font *font; ///< The font used to layout these.
@@ -280,6 +284,42 @@ public:
const ParagraphLayouter::Line *NextLine(int max_width);
};
+/**
+ * Helper class to construct a new #FallbackParagraphLayout.
+ */
+class FallbackParagraphLayoutFactory {
+public:
+ /** Helper for GetLayouter, to get the right type. */
+ typedef WChar CharType;
+ /** Helper for GetLayouter, to get whether the layouter supports RTL. */
+ static const bool SUPPORTS_RTL = false;
+
+ /**
+ * Get the actual ParagraphLayout for the given buffer.
+ * @param buff The begin of the buffer.
+ * @param buff_end The location after the last element in the buffer.
+ * @param fontMapping THe mapping of the fonts.
+ * @return The ParagraphLayout instance.
+ */
+ static ParagraphLayouter *GetParagraphLayout(WChar *buff, WChar *buff_end, FontMap &fontMapping)
+ {
+ return new FallbackParagraphLayout(buff, buff_end - buff, fontMapping);
+ }
+
+ /**
+ * Append a wide character to the internal buffer.
+ * @param buff The buffer to append to.
+ * @param buffer_last The end of the buffer.
+ * @param c The character to add.
+ * @return The number of buffer spaces that were used.
+ */
+ static size_t AppendToBuffer(WChar *buff, const WChar *buffer_last, WChar c)
+ {
+ *buff = c;
+ return 1;
+ }
+};
+
/**
* Create the visual run.
* @param font The font to use for this run.
@@ -536,31 +576,6 @@ const ParagraphLayouter::Line *FallbackParagraphLayout::NextLine(int max_width)
return l;
}
-/**
- * Appand a wide character to the internal buffer.
- * @param buff The buffer to append to.
- * @param buffer_last The end of the buffer.
- * @param c The character to add.
- * @return The number of buffer spaces that were used.
- */
-static size_t AppendToBuffer(WChar *buff, const WChar *buffer_last, WChar c)
-{
- *buff = c;
- return 1;
-}
-
-/**
- * Get the actual ParagraphLayout for the given buffer.
- * @param buff The begin of the buffer.
- * @param buff_end The location after the last element in the buffer.
- * @param fontMapping THe mapping of the fonts.
- * @return The ParagraphLayout instance.
- */
-static FallbackParagraphLayout *GetParagraphLayout(WChar *buff, WChar *buff_end, FontMap &fontMapping)
-{
- return new FallbackParagraphLayout(buff, buff_end - buff, fontMapping);
-}
-
/**
* Helper for getting a ParagraphLayouter of the given type.
*
@@ -582,6 +597,7 @@ static inline void GetLayouter(Layouter::LineCacheItem &line, const char *&str,
Font *f = Layouter::GetFont(state.fontsize, state.cur_colour);
line.buffer = buff_begin;
+ fontMapping.Clear();
/*
* Go through the whole string while adding Font instances to the font map
@@ -605,7 +621,7 @@ static inline void GetLayouter(Layouter::LineCacheItem &line, const char *&str,
* will not be handled in the fallback non ICU case because they are
* mostly needed for RTL languages which need more ICU support. */
if (!T::SUPPORTS_RTL && IsTextDirectionChar(c)) continue;
- buff += AppendToBuffer(buff, buffer_last, c);
+ buff += T::AppendToBuffer(buff, buffer_last, c);
continue;
}
@@ -621,7 +637,7 @@ static inline void GetLayouter(Layouter::LineCacheItem &line, const char *&str,
if (!fontMapping.Contains(buff - buff_begin)) {
fontMapping.Insert(buff - buff_begin, f);
}
- line.layout = GetParagraphLayout(buff_begin, buff, fontMapping);
+ line.layout = T::GetParagraphLayout(buff_begin, buff, fontMapping);
line.state_after = state;
}
@@ -654,11 +670,13 @@ Layouter::Layouter(const char *str, int maxw, TextColour colour, FontSize fontsi
line.layout->Reflow();
} else {
/* Line is new, layout it */
-#ifdef WITH_ICU_LAYOUT
FontState old_state = state;
+#if defined(WITH_ICU_LAYOUT) || defined(WITH_UNISCRIBE)
const char *old_str = str;
+#endif
- GetLayouter(line, str, state);
+#ifdef WITH_ICU_LAYOUT
+ GetLayouter(line, str, state);
if (line.layout == NULL) {
static bool warned = false;
if (!warned) {
@@ -668,11 +686,22 @@ Layouter::Layouter(const char *str, int maxw, TextColour colour, FontSize fontsi
state = old_state;
str = old_str;
- GetLayouter(line, str, state);
}
-#else
- GetLayouter(line, str, state);
#endif
+
+#ifdef WITH_UNISCRIBE
+ if (line.layout == NULL) {
+ GetLayouter(line, str, state);
+ if (line.layout == NULL) {
+ state = old_state;
+ str = old_str;
+ }
+ }
+#endif
+
+ if (line.layout == NULL) {
+ GetLayouter(line, str, state);
+ }
}
/* Copy all lines into a local cache so we can reuse them later on more easily. */
@@ -809,6 +838,10 @@ void Layouter::ResetFontCache(FontSize size)
/* We must reset the linecache since it references the just freed fonts */
ResetLineCache();
+
+#if defined(WITH_UNISCRIBE)
+ UniscribeResetScriptCache(size);
+#endif
}
/**
diff --git a/src/gfxinit.cpp b/src/gfxinit.cpp
index d5959f5e16..f73027e91e 100644
--- a/src/gfxinit.cpp
+++ b/src/gfxinit.cpp
@@ -284,6 +284,9 @@ static bool SwitchNewGRFBlitter()
#endif
{ "8bpp-optimized", 2, 8, 8, 8, 8 },
{ "32bpp-optimized", 0, 8, 32, 8, 32 },
+#ifdef WITH_SSE
+ { "32bpp-sse2-anim", 1, 8, 32, 8, 32 },
+#endif
{ "32bpp-anim", 1, 8, 32, 8, 32 },
};
diff --git a/src/goal.cpp b/src/goal.cpp
index 2f6ca242a9..f7aae350e5 100644
--- a/src/goal.cpp
+++ b/src/goal.cpp
@@ -23,6 +23,8 @@
#include "string_func.h"
#include "gui.h"
#include "network/network.h"
+#include "network/network_base.h"
+#include "network/network_func.h"
#include "safeguards.h"
@@ -234,7 +236,9 @@ CommandCost CmdSetGoalCompleted(TileIndex tile, DoCommandFlag flags, uint32 p1,
* @param flags type of operation
* @param p1 various bitstuffed elements
* - p1 = (bit 0 - 15) - Unique ID to use for this question.
- * - p1 = (bit 16 - 23) - Company for which this question is.
+ * - p1 = (bit 16 - 23) - Company or client for which this question is.
+ * - p1 = (bit 24 - 25) - Question type.
+ * - p1 = (bit 31) - Question target: 0 - company, 1 - client.
* @param p2 Buttons of the question.
* @param text Text of the question.
* @return the cost of this operation or an error
@@ -243,17 +247,37 @@ CommandCost CmdGoalQuestion(TileIndex tile, DoCommandFlag flags, uint32 p1, uint
{
uint16 uniqueid = (GoalType)GB(p1, 0, 16);
CompanyID company = (CompanyID)GB(p1, 16, 8);
- byte type = GB(p1, 24, 8);
+#ifdef ENABLE_NETWORK
+ ClientIndex client = (ClientIndex)GB(p1, 16, 8);
+#endif
+ byte type = GB(p1, 24, 2);
+ bool is_client = HasBit(p1, 31);
if (_current_company != OWNER_DEITY) return CMD_ERROR;
if (StrEmpty(text)) return CMD_ERROR;
- if (company != INVALID_COMPANY && !Company::IsValidID(company)) return CMD_ERROR;
+ if (is_client) {
+#ifdef ENABLE_NETWORK
+ if (!NetworkClientInfo::IsValidID(client)) return CMD_ERROR;
+#else
+ return CMD_ERROR;
+#endif
+ } else {
+ if (company != INVALID_COMPANY && !Company::IsValidID(company)) return CMD_ERROR;
+ }
if (CountBits(p2) < 1 || CountBits(p2) > 3) return CMD_ERROR;
if (p2 >= (1 << GOAL_QUESTION_BUTTON_COUNT)) return CMD_ERROR;
if (type >= GOAL_QUESTION_TYPE_COUNT) return CMD_ERROR;
if (flags & DC_EXEC) {
- if ((company != INVALID_COMPANY && company == _local_company) || (company == INVALID_COMPANY && Company::IsValidID(_local_company))) ShowGoalQuestion(uniqueid, type, p2, text);
+ if (is_client) {
+#ifdef ENABLE_NETWORK
+ if (NetworkClientInfo::Get(client)->client_id != _network_own_client_id) return CommandCost();
+#endif
+ } else {
+ if (company == INVALID_COMPANY && !Company::IsValidID(_local_company)) return CommandCost();
+ if (company != INVALID_COMPANY && company != _local_company) return CommandCost();
+ }
+ ShowGoalQuestion(uniqueid, type, p2, text);
}
return CommandCost();
diff --git a/src/graph_gui.cpp b/src/graph_gui.cpp
index c12c6ace4d..f4334429fb 100644
--- a/src/graph_gui.cpp
+++ b/src/graph_gui.cpp
@@ -33,8 +33,8 @@
#include "safeguards.h"
/* Bitmasks of company and cargo indices that shouldn't be drawn. */
-static uint _legend_excluded_companies;
-static uint _legend_excluded_cargo;
+static CompanyMask _legend_excluded_companies;
+static CargoTypes _legend_excluded_cargo;
/* Apparently these don't play well with enums. */
static const OverflowSafeInt64 INVALID_DATAPOINT(INT64_MAX); // Value used for a datapoint that shouldn't be drawn.
@@ -166,14 +166,14 @@ struct ValuesInterval {
struct BaseGraphWindow : Window {
protected:
- static const int GRAPH_MAX_DATASETS = 32;
+ static const int GRAPH_MAX_DATASETS = 64;
static const int GRAPH_AXIS_LINE_COLOUR = PC_BLACK;
static const int GRAPH_NUM_MONTHS = 24; ///< Number of months displayed in the graph.
static const int MIN_GRAPH_NUM_LINES_Y = 9; ///< Minimal number of horizontal lines to draw.
static const int MIN_GRID_PIXEL_SIZE = 20; ///< Minimum distance between graph lines.
- uint excluded_data; ///< bitmask of the datasets that shouldn't be displayed.
+ uint64 excluded_data; ///< bitmask of the datasets that shouldn't be displayed.
byte num_dataset;
byte num_on_x_axis;
byte num_vert_lines;
@@ -561,7 +561,7 @@ public:
*/
void UpdateStatistics(bool initialize)
{
- uint excluded_companies = _legend_excluded_companies;
+ CompanyMask excluded_companies = _legend_excluded_companies;
/* Exclude the companies which aren't valid */
for (CompanyID c = COMPANY_FIRST; c < MAX_COMPANIES; c++) {
diff --git a/src/ground_vehicle.cpp b/src/ground_vehicle.cpp
index fcdab77b03..f8efd8e1aa 100644
--- a/src/ground_vehicle.cpp
+++ b/src/ground_vehicle.cpp
@@ -58,8 +58,8 @@ void GroundVehicle::PowerChanged()
this->gcache.cached_air_drag = air_drag + 3 * air_drag * number_of_parts / 20;
- max_te *= 10000; // Tractive effort in (tonnes * 1000 * 10 =) N.
- max_te /= 256; // Tractive effort is a [0-255] coefficient.
+ max_te *= 9800; // Tractive effort in (tonnes * 1000 * 9.8 =) N.
+ max_te /= 256; // Tractive effort is a [0-255] coefficient.
if (this->gcache.cached_power != total_power || this->gcache.cached_max_te != max_te) {
/* Stop the vehicle if it has no power. */
if (total_power == 0) this->vehstatus |= VS_STOPPED;
diff --git a/src/industry_cmd.cpp b/src/industry_cmd.cpp
index 9c98b120c6..7d1a7e2e6a 100644
--- a/src/industry_cmd.cpp
+++ b/src/industry_cmd.cpp
@@ -390,7 +390,7 @@ static Foundation GetFoundation_Industry(TileIndex tile, Slope tileh)
return FlatteningFoundation(tileh);
}
-static void AddAcceptedCargo_Industry(TileIndex tile, CargoArray &acceptance, uint32 *always_accepted)
+static void AddAcceptedCargo_Industry(TileIndex tile, CargoArray &acceptance, CargoTypes *always_accepted)
{
IndustryGfx gfx = GetIndustryGfx(tile);
const IndustryTileSpec *itspec = GetIndustryTileSpec(gfx);
diff --git a/src/landscape.cpp b/src/landscape.cpp
index 185e84a80b..18f27807d7 100644
--- a/src/landscape.cpp
+++ b/src/landscape.cpp
@@ -32,6 +32,7 @@
#include "company_func.h"
#include "pathfinder/npf/aystar.h"
#include "saveload/saveload.h"
+#include "framerate_type.h"
#include
#include
@@ -720,6 +721,8 @@ TileIndex _cur_tileloop_tile;
*/
void RunTileLoop()
{
+ PerformanceAccumulator framerate(PFE_GL_LANDSCAPE);
+
/* The pseudorandom sequence of tiles is generated using a Galois linear feedback
* shift register (LFSR). This allows a deterministic pseudorandom ordering, but
* still with minimal state and fast iteration. */
@@ -1080,8 +1083,7 @@ static uint River_Hash(uint tile, uint dir)
*/
static void BuildRiver(TileIndex begin, TileIndex end)
{
- AyStar finder;
- MemSetT(&finder, 0);
+ AyStar finder = {};
finder.CalculateG = River_CalculateG;
finder.CalculateH = River_CalculateH;
finder.GetNeighbours = River_GetNeighbours;
@@ -1304,10 +1306,14 @@ void OnTick_LinkGraph();
void CallLandscapeTick()
{
- OnTick_Town();
- OnTick_Trees();
- OnTick_Station();
- OnTick_Industry();
+ {
+ PerformanceAccumulator framerate(PFE_GL_LANDSCAPE);
+
+ OnTick_Town();
+ OnTick_Trees();
+ OnTick_Station();
+ OnTick_Industry();
+ }
OnTick_Companies();
OnTick_LinkGraph();
diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt
index b7fee9ae8b..b888e37992 100644
--- a/src/lang/afrikaans.txt
+++ b/src/lang/afrikaans.txt
@@ -670,10 +670,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Kies 'Be
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Skakel musiek lys skommel aan/af
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Vertoon musiek snit keuse venster
-STR_ERROR_NO_SONGS :{WHITE}'n Musiek stel is gekies wat geen liedere bevat nie. Geen liedere sal gespeel word nie
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Musiek Program Keuse
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Liedjie Indeks
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}'
@@ -1338,8 +1335,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Kleur van die t
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Groen
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Donkergroen
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violet
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Agteruit rol rigting: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :As dit geaktiveer is, skuif die muis die kaart, andersins skuif die muis die kamera.
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Maak kykpoort beweegings glad: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Beheer hoe die hoofvertoonvenster skuif na 'n spesifieke posisie - as dit geaktiveer is, dan skuif die venster glad na die posisie toe, andersins skuif die venster direk na die posisie toe.
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Toon 'n meting wanneer jy verskeie bou-gereedskap gebruik: {STRING}
@@ -1371,8 +1366,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command-klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl-klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Af
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Links-klik vir skermrol: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Maak dit moontlik om die kaart te skuif deur met die die linker-muisknoppie te sleep. Hier opsie werk baie goed vir toestelle met raakskerms.
STR_CONFIG_SETTING_AUTOSAVE :Outostoor: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Tyd tussen outomatiese spelstore
@@ -2690,6 +2683,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Oorspron
STR_ABOUT_VERSION :{BLACK}OpenTTD uitgawe {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Die OpenTTD span
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spaar Spel
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Laai Spel
@@ -2981,8 +2981,6 @@ STR_TOWN_POPULATION :{BLACK}Wêreldb
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (City)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Bevolking: {ORANGE}{COMMA}{BLACK} Huise: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passasiers verlede maand: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Pos verlede maand: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Vrag nodig om dorp te laat groei:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} vereis
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} vereis in winter
diff --git a/src/lang/arabic_egypt.txt b/src/lang/arabic_egypt.txt
index b026705865..e0a7eb3a0a 100644
--- a/src/lang/arabic_egypt.txt
+++ b/src/lang/arabic_egypt.txt
@@ -644,10 +644,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}اختي
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}تشغيل / ايقاف العشوائي
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}اظهار اطار اختيار الموسيقى
-STR_ERROR_NO_SONGS :{WHITE}لا تحتوى قاعده الموسيقى المُختاره على اى اغانى. لن تُعزَف اى اغانى
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}برنامج اختيار الموسيقى
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}قائمة المعزوفات
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}برنامج - '{STRING}'
@@ -1177,7 +1174,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :لون الار
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :اخضر
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :اخضر غامق
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :بنفسجي
-STR_CONFIG_SETTING_REVERSE_SCROLLING :عكس تحريك الشاشة : {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING :تحريك سلس في نوافذ المشاهدة: {STRING}
STR_CONFIG_SETTING_MEASURE_TOOLTIP :عرض المقاسات عند استخدام ادوات البناء المختلفة: {STRING}
STR_CONFIG_SETTING_LIVERIES :عرض لون و شعار الشركة: {STRING}
@@ -1196,7 +1192,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :الأوامر
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :للتحكم
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :عدم استخدام
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :تصفح بالزر الايسر: {STRING}
STR_CONFIG_SETTING_AUTOSAVE :حفظ تلقائي : {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :اختر الوقت بين كل عملية حفظ اتوماتيكية
@@ -2322,6 +2317,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}الحق
STR_ABOUT_VERSION :{BLACK}النسخة المفتوحة رقم {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النسخة المفتوحة {COPYRIGHT}2002-2018 فريق النسخة المفتوحة
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}حفظ اللعبة
STR_SAVELOAD_LOAD_CAPTION :{WHITE}فتح
@@ -2594,8 +2596,6 @@ STR_TOWN_POPULATION :{BLACK}سكان
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} - مدينة -
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}السكان: {ORANGE}{COMMA}{BLACK} المنازل: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}الركاب الشهر الماضي: {ORANGE}{COMMA}{BLACK} الأقصى: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}طرود البريد الشهر الماضي: {ORANGE}{COMMA}{BLACK} الأقصى: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK} نمو المدينة يتطلب بضائع
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} مطلوب
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK}مطلوب في الشتاء
diff --git a/src/lang/basque.txt b/src/lang/basque.txt
index 6d80461b68..cd97bf02cf 100644
--- a/src/lang/basque.txt
+++ b/src/lang/basque.txt
@@ -663,10 +663,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}'Pertson
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Programa zorizko moduan jarri/kendu
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Erakutsi kanten selekzio leihoa
-STR_ERROR_NO_SONGS :{WHITE}Kantarik gabeko musika paketea aukeratua. Ez dago kantarik entzuteko
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Musika Programen Selekzioa
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Pistaren Indizea
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programatu - '{STRING}'
@@ -1301,8 +1298,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Mapa txikiaren
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Berdea
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Berde iluna
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Bioleta
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Leihoa mapan zehar mugitzeko sagua mugitzeko era aldrebes jarri: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Mapan zehar saguaren eskuineko botoiarekin mugitzerakoan izango duen portaera. Desgaitua badago, saguak kamera mugituko du. Gaitua dagoenean, saguak mapa mugituko du
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Mapan zehar mugitzerakoan, abiadura moteltzea: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Kontrolatu nola mugituko den ikuspegia lehio nagusitik zehar, puntu jakin batera joateko mapa txikian sakatzen denean edo objektu zehatz batera joateko agintzen denean
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Eraikitze tresna ezberdinak erabiltzerakoan neurtresna erakutsi: {STRING}
@@ -1334,8 +1329,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Komandoa+Klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Itzalita
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Saguaren ezkerreko botoiarekin mapan zehar mugitzea: {STRING}
-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_HELPTEXT :Partida gordetze automatikoaren bitartea aukeratu
@@ -2594,6 +2587,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original
STR_ABOUT_VERSION :{BLACK}OpenTTD bertsioa {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gordetako jokoa
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Jokoa kargatu
@@ -2870,8 +2870,6 @@ STR_TOWN_POPULATION :{BLACK}Munduko
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Hiria)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Biztanleria: {ORANGE}{COMMA}{BLACK} Etxe kopurua: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Bidaiari kopurua aurreko hilabetean: {ORANGE}{COMMA}{BLACK} gehienez: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Posta kopurua aurreko hilabetean: {ORANGE}{COMMA}{BLACK} gehienez: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Beharrezko zama herri hazkunderako:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} beharrezkoa
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} Neguan beharrezkoa
diff --git a/src/lang/belarusian.txt b/src/lang/belarusian.txt
index 71efd347ab..52f7821d93 100644
--- a/src/lang/belarusian.txt
+++ b/src/lang/belarusian.txt
@@ -963,6 +963,7 @@ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLA
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
+STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT}{DKGREEN}Музычнае афармленне недаступна
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}«{STRING}»
STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Трэк
STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Назва
@@ -982,15 +983,15 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Выбр
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Уключыць/выключыць выпадковы выбар трэкаў
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Паказаць вакно выбару трэкаў
-STR_ERROR_NO_SONGS :{WHITE}У выбранай праґраме адсутнічае музыка
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Выбар музычнай праґрамы
+STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}Музычная праграма - '{STRING}'
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} «{STRING}»
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Сьпіс трэкаў
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programme — «{STRING}»
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Ачысьціць
+STR_PLAYLIST_CHANGE_SET :{BLACK}Зьмяніць набор
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Ачысьціць сьпіс уласнай праґрамы
+STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Змяніць выбар музычнага афармлення на іншы ўсталяваны набор
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Клікніце па назьве трэка, каб дадаць яго ва ўласную праґраму
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Клікніце па назьве трэка, каб выдаліць яго з уласнай праґрамы
@@ -1195,7 +1196,7 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLAC
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Вакно прагляду {COMMA}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Капіяваць у вакно прагляду
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Скапіяваць бягучую пазыцыю ў вакно прагляду
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Уставіць з вакна прагляду
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}У асноўнае акно
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Перайсьці да гэтага месца ў асноўным вакне
# Game options window
@@ -1650,8 +1651,12 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Колер ля
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :зялёны
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :цёмна-зялёны
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :фіялетавы
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Перавярнуць напрамак зрушэньня прагляду мышшу: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Паводзіны пры пракручваньні мапы правай кнопкай мышы. Калі адключана, мыш перамяшчае кропку позірку. Калі ўключана, мыш перамяшчае мапу.
+STR_CONFIG_SETTING_SCROLLMODE :Перамяшчэнне агляду: {STRING}
+STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Спосаб перамяшчэння па гульнёваму полю
+STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Перамяшчаць з дапамогай ПКМ, зафіксаваўшы курсор
+STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Перамяшчаць з дапамогай ПКМ, зафіксаваўшы курсор
+STR_CONFIG_SETTING_SCROLLMODE_RMB :Перамяшчаць з дапамогай ПКМ
+STR_CONFIG_SETTING_SCROLLMODE_LMB :Перамяшчаць з дапамогай ЛКМ
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Павольная пракрутка ў вакне прагляду: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Кантралюе, што адбудзецца ў галоўным вакне, калі пстрыкнуць у малым вакне прагляду па нейкай кропцы. Калі ўключана, позірк будзе павольна перамяшчацца па мапе ў галоўным вакне. Калі выключана — экран адразу прыгне ў вызначанае месца.
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Паказваць замеры пры будаўніцтве: {STRING}
@@ -1683,8 +1688,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :каманда+
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+клік
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :выключана
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Скролінг па кліку левай кнопкай мышы: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Уключыць пракручваньне мапы цягненьнем з націснутай левай кнопкай мышы. Гэта асабліва зручна пры выкарыстоўваньні сэнсарнага экрана.
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Зачыняць вокны пстрычкай ПКМ: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Зачыняць акно пстрычкай правай кнопкай мышы ў яго межах. Пры гэтым адключаецца з'яўленне падказак па правай кнопцы.
@@ -2614,6 +2617,7 @@ STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Схем
STR_LINKGRAPH_LEGEND_ALL :{BLACK}Усе
STR_LINKGRAPH_LEGEND_NONE :{BLACK}Няма
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Выберыце кампаніі для адлюстраваньня
+STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP :{BLACK}{STRING}{}{COMPANY}
# Linkgraph legend window and linkgraph legend in smallmap
STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}нявыкарыст.
@@ -3026,6 +3030,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Арыґ
STR_ABOUT_VERSION :{BLACK}OpenTTD вэрсія {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002–2018 Каманда распрацоўнікаў OpenTTD
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Захаваць гульню
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Загрузіць гульню
@@ -3310,6 +3321,7 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Увяд
STR_TOWN_DIRECTORY_CAPTION :{WHITE}Гарады
STR_TOWN_DIRECTORY_NONE :{ORANGE}- Няма -
STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA})
+STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Мегаполіс){BLACK} ({COMMA})
STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Сьпіс гарадоў: клiк па назьве паказвае горад у асноўным вакне. Ctrl+клiк паказвае ў дадатковым вакне.
STR_TOWN_POPULATION :{BLACK}Насельніцтва: {COMMA}
@@ -3317,8 +3329,7 @@ STR_TOWN_POPULATION :{BLACK}Насе
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Мэґаполіс)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Насельніцтва: {ORANGE}{COMMA}{BLACK} Будынкаў: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Пасажыраў за мінулы месяц: {ORANGE}{COMMA}{BLACK} Макс.: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Пошты за мінулы месяц: {ORANGE}{COMMA}{BLACK} Макс.: {ORANGE}{COMMA}
+STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} у мінулым месяцы: {ORANGE}{COMMA}{BLACK} Макс.: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Груз, неабходны для росту горада:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} патрабу{G 0 е e e ю}цца
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} патрабу{G 0 е e e ю}цца ўзімку
@@ -4585,6 +4596,7 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... гэ
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... няправільны кірунак дарогі
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... на прахадных прыпынках нельга рабіць павароты
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... на прахадных прыпынках нельга рабіць скрыжаваньнi
+STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... дарога аднабаковая ці заблакавана
# Station destruction related errors
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Немагчыма выдаліць частку станцыi...
@@ -4836,6 +4848,8 @@ STR_BASESOUNDS_DOS_DESCRIPTION :Арыґіна
STR_BASESOUNDS_WIN_DESCRIPTION :Арыґінальны набор гукавога афармленьня з гульні Transport Tycoon Deluxe для Windows.
STR_BASESOUNDS_NONE_DESCRIPTION :"Пусты" набор гукавога афармленьня, які не зьмяшчае ніякіх гукаў.
STR_BASEMUSIC_WIN_DESCRIPTION :Арыґінальны набор музычнага афармленьня з гульні Transport Tycoon Deluxe для Windows.
+STR_BASEMUSIC_DOS_DESCRIPTION :Набор музычнага афармленьня з гульні Transport Tycoon Deluxe для DOS.
+STR_BASEMUSIC_TTO_DESCRIPTION :Набор музычнага афармлення з гульні Transport Tycoon (Original/World Editor) для DOS.
STR_BASEMUSIC_NONE_DESCRIPTION :"Пусты" набор музычнага афармлення, які не зьмяшчае ніякай музыкі.
##id 0x2000
diff --git a/src/lang/brazilian_portuguese.txt b/src/lang/brazilian_portuguese.txt
index 859a6c1afa..fd61397862 100644
--- a/src/lang/brazilian_portuguese.txt
+++ b/src/lang/brazilian_portuguese.txt
@@ -670,10 +670,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selecion
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Alternar programa misturado em ligado/desligado
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Exibir janela de seleção de faixas de música
-STR_ERROR_NO_SONGS :{WHITE}Um conjunto de músicas sem canções foi selecionado. Nenhuma música será tocada
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Seleção de Programa de Música
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} '{STRING}'
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Índice de faixas
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programa - '{STRING}'
@@ -1338,8 +1335,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Cor do terreno
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verde
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Verde escuro
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violeta
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Rolar a tela no sentido oposto ao movimento do mouse: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Comportamento quando rolar o mapa com o botão direito. Quando desativado, o mouse move a câmera. Ativado, o mouse move o mapa.
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Suavizar rolamento da janela: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controla como a janela principal rola para uma posição específica quando clicado no minimapa ou após localizar um objeto. Ativado torna o rolamento suave. Desativado torna o rolamento instanâneo
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Exibe distâncias quando usar ferramentas de construção: {STRING}
@@ -1371,8 +1366,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Clique de coman
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Clique de controle
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Desligado
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Mover a tela com o botão esquerdo: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Ativa rolamento do mapa por clique e arraste com o botão esquerdo. Especialmente útil ao usar um touchscreen para o rolamento
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Fechar janela com botão direito do mouse: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Fecha uma janela ao clicar com o botão direito do mouse nela. Desativa o tooltip com o botão direito!
@@ -2694,6 +2687,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyrigh
STR_ABOUT_VERSION :{BLACK}OpenTTD versão {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 A equipe do OpenTTD
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvar Jogo
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Abrir Jogo
@@ -2985,8 +2985,6 @@ STR_TOWN_POPULATION :{BLACK}Populaç
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Cidade)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}População: {ORANGE}{COMMA}{BLACK} Casas: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passageiros no mês passado: {ORANGE}{COMMA}{BLACK} máx: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Cartas no mês passado: {ORANGE}{COMMA}{BLACK} máx: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Carga necessária para prover o crescimento:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} necessário(a)
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} necessário no inverno
diff --git a/src/lang/bulgarian.txt b/src/lang/bulgarian.txt
index 40394260d4..818bc8b8e0 100644
--- a/src/lang/bulgarian.txt
+++ b/src/lang/bulgarian.txt
@@ -667,10 +667,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Избе
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Активирай/деактивирай разместване на парчетата
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Покажи прозореца за избор на музикални парчета
-STR_ERROR_NO_SONGS :{WHITE}Музикален пакет без песни е избран. Няма да се пускат песни.
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Избор на музикалната програма
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Номер на песен
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Програма - '{STRING}'
@@ -1320,8 +1317,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Цвят на
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Зелен
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Тъмно зелен
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Виолетов
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Обърната посока на преместване: {STRING.n}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Когато опцията бъде активирана, когато "скролвате" картата с десния бутон на мишката ще местите картата, когато опцията не е активирана, мишката ще мести камерата
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Плавно местене на камера: {STRING.n}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Ако опцията е активирана, когато натиснете на малката карта камерата ще се придвижи до там плавно, ако не е активирана камерата ще отиде там директно
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Подсказка за разстояние при строене: {STRING.f}
@@ -1353,8 +1348,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Команда-
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Контрол-щракане
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Изключен
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Скролиране с ляв бутон: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Позволява да "скролнете" картата, чрез влачене на левия бутон на мишката. Това и изключително полезно ако ползвате тъч-скрийн
STR_CONFIG_SETTING_AUTOSAVE :Автоматично запазване: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Изберете интервал между автоматично запаметяване на играта
@@ -2635,6 +2628,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Авто
STR_ABOUT_VERSION :{BLACK}OpenTTD версия {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 The OpenTTD team
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Запази играта
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Отваряне на игра
@@ -2918,8 +2918,6 @@ STR_TOWN_POPULATION :{BLACK}Обща
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Град)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Население: {ORANGE}{COMMA}{BLACK} Жилища: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Пътници през последния месец: {ORANGE}{COMMA}{BLACK} максимум: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Поща през последния месец: {ORANGE}{COMMA}{BLACK} максимум: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Товар нужен за растеж на града:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} необходим
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} необходим през зимата
diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt
index 28814005c8..54f7aac651 100644
--- a/src/lang/catalan.txt
+++ b/src/lang/catalan.txt
@@ -476,6 +476,7 @@ STR_ABOUT_MENU_SCREENSHOT :Captura de pant
STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Captura de pantalla amb el zoom màxim
STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Captura de pantalla amb el zoom predeterminat
STR_ABOUT_MENU_GIANT_SCREENSHOT :Captura de pantalla de tot el mapa
+STR_ABOUT_MENU_SHOW_FRAMERATE :Mostra els fotogrames per segon
STR_ABOUT_MENU_ABOUT_OPENTTD :Quant a l'OpenTTD
STR_ABOUT_MENU_SPRITE_ALIGNER :Alineador de sprites
STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Commuta les caixes delimitadores
@@ -651,6 +652,7 @@ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLA
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
+STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT}{DKGREEN}No hi ha peces musicals disponibles
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}«{STRING}»
STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Pista
STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Títol
@@ -670,15 +672,15 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Seleccio
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Habilita/deshabilita la reproducció en ordre aleatori
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Mostra la finestra de selecció de pistes
-STR_ERROR_NO_SONGS :{WHITE}S'ha seleccionat un conjunt de música sense peces. No es reproduirà res.
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Selecció de les peces de la llista
+STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}Programació de pistes - «{STRING}»
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} «{STRING}»
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Índex de pistes
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Llista «{STRING}»
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Esborra
+STR_PLAYLIST_CHANGE_SET :{BLACK}Canvia conjunt
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Esborra la llista actual (només les llistes personalitzables)
+STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Canvia la selecció musical a un altre conjunt instal·lat.
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Clica la pista de música per afegir-la a la llista actual (només en les llistes personalitzables)
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Clica la pista de música per treure-la de la llista actual (només en llistes personalitzables)
@@ -881,10 +883,10 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLAC
# Extra view window
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Vista {COMMA}
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copia a la vista
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Canvia la vista extra
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Mou aquesta vista on està la vista principal
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Vés a la vista
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Mou la vista principal on està aquesta vista
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Canvia vista principal
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Copia el lloc d'aquesta vista extra a la vista principal.
# Game options window
STR_GAME_OPTIONS_CAPTION :{WHITE}Opcions de la partida
@@ -1338,8 +1340,12 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Color del terre
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verd
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Verd fosc
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violat
-STR_CONFIG_SETTING_REVERSE_SCROLLING :En desplaçar la pantalla amb el ratolí mou la vista en la direcció contrària: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Comportament quan es desplaci el mapa amb el botó dret del ratolí. Quan està desactivat, el ratolí mou la càmera. Quan està activat, el ratolí mou el mapa
+STR_CONFIG_SETTING_SCROLLMODE :Desplaçament del mapa: {STRING}
+STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Comportament quan es desplaça el mapa.
+STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Mou la vista amb el botó dret del ratolí amb la posició del ratolí fixada
+STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Mou el mapa amb el botó dret del ratolí amb la posició del ratolí fixada
+STR_CONFIG_SETTING_SCROLLMODE_RMB :Mou el mapa amb el botó dret del ratolí
+STR_CONFIG_SETTING_SCROLLMODE_LMB :Mou el mapa amb el botó esquerre del ratolí
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Desplaçament suau de la vista: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controla com la vista principal es desplaça a una posició específica quan es clica al mapa petit o quan s'envia una ordre de desplaçar-se a un objecte específic al mapa. Si està activat, la vista es desplaça suaument; si està desactivat, salta directament al punt assenyalat
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Mostra un cartell de mesura quan estiguis utilitzant vàries eines de construcció: {STRING}
@@ -1371,8 +1377,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command-clic
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control-clic
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Desactivat
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Desplaçament amb el botó esquerre: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Activa el desplaçament del mapa arrossegant-lo amb el botó esquerre del ratolí. Això és especialment útil quan s'utilitzen pantalles tàctils
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Tanca la finestra amb un clic dret del ratolí: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Tanca una finestra fent-hi un clic amb el botó dret del ratolí. Aquesta opció desactiva els indicadors de funció amb el mateix botó.
@@ -2286,6 +2290,7 @@ STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Llegenda
STR_LINKGRAPH_LEGEND_ALL :{BLACK}Tot
STR_LINKGRAPH_LEGEND_NONE :{BLACK}Cap
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Selecciona les companyies que seran mostrades
+STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP :{BLACK}{STRING}{}{COMPANY}
# Linkgraph legend window and linkgraph legend in smallmap
STR_LINKGRAPH_LEGEND_UNUSED :{G=Masculin}{TINY_FONT}{BLACK}no utilitzat
@@ -2694,6 +2699,56 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyrigh
STR_ABOUT_VERSION :{BLACK}Versió {REV} de l'OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 L'equip de l'OpenTTD
+# Framerate display window
+STR_FRAMERATE_CAPTION :{WHITE}Fotogrames per segon
+STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} (x{DECIMAL})
+STR_FRAMERATE_RATE_GAMELOOP :{WHITE}Velocitat de simulació: {STRING}
+STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Nombre de tics del joc per segon.
+STR_FRAMERATE_RATE_BLITTER :{WHITE}Fotogrames per segon: {STRING}
+STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Nombre de fotogrames renderitzats per segon.
+STR_FRAMERATE_SPEED_FACTOR :{WHITE}Factor de velocitat actual: x{DECIMAL}
+STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Quant ràpid va la partida actual, comparant-ho amb l'estimació de la velocitat normal.
+STR_FRAMERATE_CURRENT :{WHITE}Actual
+STR_FRAMERATE_AVERAGE :{WHITE}Mitjana
+STR_FRAMERATE_DATA_POINTS :{WHITE}Dades basades en {COMMA} mesures.
+STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL}{WHITE}{NBSP}ms
+STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL}{WHITE}{NBSP}ms
+STR_FRAMERATE_MS_BAD :{RED}{DECIMAL}{WHITE}{NBSP}ms
+STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL}{WHITE}{NBSP}fps
+STR_FRAMERATE_FPS_WARN :{YELLOW}{DECIMAL}{WHITE}{NBSP}fps
+STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL}{WHITE}{NBSP}fps
+STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COMMA}{NBSP}ms
+STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA}{NBSP}s
+############ Leave those lines in this order!!
+STR_FRAMERATE_GAMELOOP :{WHITE}Total del bucle:
+STR_FRAMERATE_GL_ECONOMY :{WHITE} Tractament de la càrrega:
+STR_FRAMERATE_GL_TRAINS :{WHITE} Tics de tren:
+STR_FRAMERATE_GL_ROADVEHS :{WHITE} Tics de vehicles de carretera:
+STR_FRAMERATE_GL_SHIPS :{WHITE} Tics de vaixell:
+STR_FRAMERATE_GL_AIRCRAFT :{WHITE} Tics d'aeronau:
+STR_FRAMERATE_GL_LANDSCAPE :{WHITE} Tics del mapa:
+STR_FRAMERATE_GL_LINKGRAPH :{WHITE} Retard del graf de distribució:
+STR_FRAMERATE_DRAWING :{WHITE}Renderitzat de gràfics:
+STR_FRAMERATE_DRAWING_VIEWPORTS :{WHITE} Vistes del mapa:
+STR_FRAMERATE_VIDEO :{WHITE}Sortida de vídeo:
+STR_FRAMERATE_SOUND :{WHITE}Mescla de so:
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+STR_FRAMETIME_CAPTION_GAMELOOP :Bucle
+STR_FRAMETIME_CAPTION_GL_ECONOMY :Tractament de la càrrega
+STR_FRAMETIME_CAPTION_GL_TRAINS :Tics de tren
+STR_FRAMETIME_CAPTION_GL_ROADVEHS :Tics de vehicle de carretera
+STR_FRAMETIME_CAPTION_GL_SHIPS :Tics de vaixell
+STR_FRAMETIME_CAPTION_GL_AIRCRAFT :Tics d'aeronau
+STR_FRAMETIME_CAPTION_GL_LANDSCAPE :Tics del mapa
+STR_FRAMETIME_CAPTION_GL_LINKGRAPH :Retard del graf de distribució
+STR_FRAMETIME_CAPTION_DRAWING :Renderitzat de gràfics
+STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Renderitzat de la vista del mapa
+STR_FRAMETIME_CAPTION_VIDEO :Sortida de vídeo
+STR_FRAMETIME_CAPTION_SOUND :Mescla de so
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Desa la Partida
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Carrega una Partida
@@ -2978,6 +3033,7 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Posa un
STR_TOWN_DIRECTORY_CAPTION :{WHITE}Poblacions
STR_TOWN_DIRECTORY_NONE :{ORANGE}- Cap -
STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA})
+STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{BLACK} ({COMMA} -{YELLOW} ciutat{BLACK})
STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Noms de Població - clica al nom per centrar la vista principal a la població. Ctrl+Clic obre una nova vista al lloc de la població
STR_TOWN_POPULATION :{BLACK}Població mundial: {COMMA}
@@ -2985,8 +3041,7 @@ STR_TOWN_POPULATION :{BLACK}Poblaci
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Ciutat)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Població: {ORANGE}{COMMA}{BLACK} Cases: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passatgers el darrer mes: {ORANGE}{COMMA}{BLACK} màx: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Correu el darrer mes: {ORANGE}{COMMA}{BLACK} màx: {ORANGE}{COMMA}
+STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} l'últim mes: {ORANGE}{COMMA}{BLACK} (màx. {ORANGE}{COMMA}{BLACK})
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Càrrega requerida per tal que la població creixi:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} requerides
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} requerit a l'hivern
@@ -4233,6 +4288,7 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... aque
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... sentit de la carretera en la direcció incorrecta
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... les estacions d'autobús de pas no poden tenir cantonades
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... les estacions d'autobús de pas no poden tenir interseccions
+STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... la carretera és d'un sol sentit o està blocada.
# Station destruction related errors
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}No es pot treure part de la estació...
@@ -4484,6 +4540,8 @@ STR_BASESOUNDS_DOS_DESCRIPTION :Sons originals
STR_BASESOUNDS_WIN_DESCRIPTION :Sons originals del Transport Tycoon Deluxe pel Windows.
STR_BASESOUNDS_NONE_DESCRIPTION :Una llista de sons buida.
STR_BASEMUSIC_WIN_DESCRIPTION :Música original del Transport Tycoon Deluxe pel Windows.
+STR_BASEMUSIC_DOS_DESCRIPTION :Música original del Transport Tycoon Deluxe pel DOS.
+STR_BASEMUSIC_TTO_DESCRIPTION :Música original del Transport Tycoon Deluxe (original/editor d'escenaris) pel DOS.
STR_BASEMUSIC_NONE_DESCRIPTION :Una llista de música sense cap peça.
##id 0x2000
diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt
index e7694f1bde..0d6a8a44a3 100644
--- a/src/lang/croatian.txt
+++ b/src/lang/croatian.txt
@@ -746,6 +746,7 @@ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLA
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
+STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT}{DKGREEN}Nema dostupne muzike
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}"
STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Traka
STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Naslov
@@ -765,15 +766,15 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Odaberi
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Uključi/isključi miješanje programa
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Pokaži prozor za izbor glazbenih traka
-STR_ERROR_NO_SONGS :{WHITE}Odabran je set glazbe bez pjesama. Ne će se puštati nikakve pjesme
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Izbor glazbenog programa
+STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}Program muzike - '{STRING}'
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Popis traka
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program- '{STRING}'
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Obriši
+STR_PLAYLIST_CHANGE_SET :{BLACK}Promijeni set
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Obriši aktivni program (samo Proizvoljno 1 ili Proizvoljno 2)
+STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Promijeni odabir muzike na neki drugi instalirani set
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klikni na glazbenu traku za dodavanje u aktivni program (samo Proizvoljno 1 ili Proizvoljno 2)
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klikni na glazbenu traku kako bi ju uklonio iz trenutnog programa (samo Proizvoljno 1 ili Proizvoljno 2)
@@ -976,10 +977,10 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLAC
# Extra view window
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Mini pogled {COMMA}
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopiraj u mini pogled
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Promijeni pogled
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopiraj lokaciju globalnog pogleda u ovaj mini pogled
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Zalijepi iz mini pogleda
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Zalijepi lokaciju ovog mini pogleda u globalni pogled
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Promijeni glavni pogled
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Kopiraj lokaciju ovog mini pogleda u glavni pogled
# Game options window
STR_GAME_OPTIONS_CAPTION :{WHITE}Postavke igre
@@ -1433,8 +1434,12 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Boja terena na
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :{G=female}Zelena
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :{G=female}Tamno zelena
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :{G=female}Ljubičasta
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Promijeni smjer klizanja: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Ponašanje kod pomicanja karte desnim gumbom miša. Kada je isključeno, miš pomiče kameru. Kada je uključeno, miš pomiče kartu
+STR_CONFIG_SETTING_SCROLLMODE :Ponašanje klizanja kroz mini pogled: {STRING}
+STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Ponašanje kod klizanja kroz mapu
+STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Pomiči mini pogled sa desnom tipkom miša, pozicija miša zaključana
+STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Pomiči mapu sa desnom tipkom miša, pozicija miša zaključana
+STR_CONFIG_SETTING_SCROLLMODE_RMB :Pomiči mapu sa desnom tipkom miša
+STR_CONFIG_SETTING_SCROLLMODE_LMB :Pomiči mapu sa lijevom tipkom miša
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Glatko klizanje kroz mini pogled: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Odredi kako se glavni prikaz pomiče na određeno mjesto kada se klikne na malu kartu ili kada se izda naredba za pomicanje na određeni objekt na karti. Ako je uključeno, prikaz se pomiče glatko, ako je isključeno, prikaz izravno skače na ciljnu lokaciju
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Pokaži mjerni naputak prilikom korištenja raznih alata za izgradnju: {STRING}
@@ -1466,8 +1471,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control+klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Isključeno
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Skrolanje lijevim klikom: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Uključi pomicanje karte povlačenjem pomoću lijevog gumba miša. Ovo je posebno korisno kada se koristi zaslon osjetljiv na dodir
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Zatvori prozor nakon desnog klika: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Zatvara prozor nakon desnog klika unutar prozora. S desnim klikom zatvaraju se i upute alata!
@@ -2381,6 +2384,7 @@ STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Kazalo p
STR_LINKGRAPH_LEGEND_ALL :{BLACK}Sve
STR_LINKGRAPH_LEGEND_NONE :{BLACK}Ništa
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Odaberi tvrtke koje će se prikazati
+STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP :{BLACK}{STRING}{}{COMPANY}
# Linkgraph legend window and linkgraph legend in smallmap
STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}nekorišten
@@ -2789,6 +2793,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Izvorno
STR_ABOUT_VERSION :{BLACK}OpenTTD verzija {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD tim
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spremi igru
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Učitaj igru
@@ -3073,6 +3084,7 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Unesi im
STR_TOWN_DIRECTORY_CAPTION :{WHITE}Gradovi
STR_TOWN_DIRECTORY_NONE :{ORANGE}- Ništa -
STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA})
+STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Grad){BLACK} ({COMMA})
STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Imena gradova - klikni na ime kako bi centrirao pogled na grad. Ctrl+klik otvara novi prozor sa lokacijom grada
STR_TOWN_POPULATION :{BLACK}Svjetsko stanovništvo: {COMMA}
@@ -3080,8 +3092,7 @@ STR_TOWN_POPULATION :{BLACK}Svjetsko
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Metropola)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Stanovništvo: {ORANGE}{COMMA}{BLACK} Kuće: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Putnika prošli mjesec: {ORANGE}{COMMA}{BLACK} najviše: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Pošte prošli mjesec: {ORANGE}{COMMA}{BLACK} najviše: {ORANGE}{COMMA}
+STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} prošli mjesec: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Potrebno tereta za rast grada:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} potrebno
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} potrebno zimi
@@ -4328,6 +4339,7 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... ovo
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... cesta je orijentirana u krivom smjeru
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... prolazne postaje ne mogu imati zavoje
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... prolazne postaje ne mogu imati raskrižja
+STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... cesta je jednosmjerna ili je blokirana
# Station destruction related errors
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Nije moguće ukloniti dio postaje...
@@ -4579,6 +4591,8 @@ STR_BASESOUNDS_DOS_DESCRIPTION :Originalni zvuk
STR_BASESOUNDS_WIN_DESCRIPTION :Originalni zvukovi za Transport Tycoon Deluxe Windows izdanje.
STR_BASESOUNDS_NONE_DESCRIPTION :Zvučni paket bez ikakvih zvukova.
STR_BASEMUSIC_WIN_DESCRIPTION :Originalna glazba za Transport Tycoon Deluxe Windows izdanje.
+STR_BASEMUSIC_DOS_DESCRIPTION :Originalna glazba za Transport Tycoon Deluxe DOS izdanje.
+STR_BASEMUSIC_TTO_DESCRIPTION :Originalna glazba za Transport Tycoon (original/editor svijeta) DOS izdanje.
STR_BASEMUSIC_NONE_DESCRIPTION :Glazbeni paket bez ikakve glazbe.
##id 0x2000
diff --git a/src/lang/czech.txt b/src/lang/czech.txt
index cab72a7c92..6a9372de33 100644
--- a/src/lang/czech.txt
+++ b/src/lang/czech.txt
@@ -756,10 +756,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Zvolit p
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Zapnout/vypnout náhodné opakování skladeb
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Ukaž skladbu ve výběrovém okně
-STR_ERROR_NO_SONGS :{WHITE}Byl vybrán hudební set bez písní. Nebudou přehrány žádné písně
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Volba programu hudby
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Index skladeb
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}'
@@ -1424,8 +1421,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Barva terénu n
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :zelená
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :tmavě zelená
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :fialová
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Posouvat pohled opačným směrem: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Chování při posouvání mapy pomocí stisku pravého tlačítka myši. Pokud vypnuto, myš pohybuje kamerou. Pokud zapnuto, myš pohybuje mapou
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Plynulé posouvání po mapě: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Ovládá jak se hlavní pohled posouvá na specifické místo na mapě, kliknutím na minimapu nebo spuštěním příkazu na posun na specifický objekt na mapě. Pokud zapnuto, pohled se posouvá plynule, pokud vypnuto, skáče pohled přímo na cílové místo
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Ukázat rozměry při použití stavebních nástrojů: {STRING}
@@ -1457,8 +1452,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command + klikn
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control + kliknutí
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :vypnutá
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Posouvání levým tlačítkem: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Povolit posouvání mapy chycením pomocí levého tlačítka myši. Toto je velmi užitečné hlavně při použití s dotykovou obrazovkou.
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Zavírat okno kliknutím pravým tlačítkem myši: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Zavírat okno kliknutím pravým tlačítkem na něj. Znemožňuje využívat nápovědu zobrazující se při stisknutí pravého tlačítka myši!
@@ -2786,6 +2779,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Původn
STR_ABOUT_VERSION :{BLACK}OpenTTD verze {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Tým OpenTTD
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Uložit hru
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Otevřít hru
@@ -3077,8 +3077,6 @@ STR_TOWN_POPULATION :{BLACK}Populace
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (velkoměsto)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Populace: {ORANGE}{COMMA}{BLACK} Domů: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Cestujících minulý měsíc: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Pošta za minulý měsíc: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Množství doručeného nákladu potřebného pro rozvoj města:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED}Je potřeba {ORANGE}{STRING}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} vyžadováno v zimě
diff --git a/src/lang/danish.txt b/src/lang/danish.txt
index 3119390f3e..4b9ea6bf56 100644
--- a/src/lang/danish.txt
+++ b/src/lang/danish.txt
@@ -650,6 +650,7 @@ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLA
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
+STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT}{DKGREEN}Ingen musik tilgængelig
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}"
STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Nummer
STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Titel
@@ -669,15 +670,13 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Select '
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Tilfældig afspilning til/fra
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Vis vinduet med musiknummervalg
-STR_ERROR_NO_SONGS :{WHITE}Det valgte musik sæt er uden sange. Der kan ikke afspilles musik.
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Musikprogram Valg
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Nummerliste
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}'
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Ryd
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Ryd det valgte program (Gælder kun Custom1/Custom2)
+STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Ændre musik listen til et anden installeret sæt
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klik på et musiknummer for at tilføje det til programlisten (kun for Custom1/Custom2)
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klik på et musiknummer for at fjerne det fra programlisten (kun for Custom1/Custom2)
@@ -1337,8 +1336,10 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Land farve brug
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Grøn
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Mørkegrøn
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violet
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Flyt i modsat retning ved scroll med musen: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Adfærd når kortet rulles med højre museknap. Hvis deaktiveret, bevæger musen kameraet. Når funktionen er aktiveret, flytter musen kortet
+STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Bevæg syns vinduet med højre mussetast, musse position låst
+STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Bevæg kortet med højre mussetast, musse position låst
+STR_CONFIG_SETTING_SCROLLMODE_RMB :Bevæg kortet med højre musseknap
+STR_CONFIG_SETTING_SCROLLMODE_LMB :Bevæg kortet med venstre musseknap
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Jævn scrolling af udsnit: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Kontroller hvordan de vigtigste visning ruller til en bestemt position, når du klikker på det lille kort eller når de udsteder en kommando til at rulle til en bestemt genstand på kortet. Hvis aktiveret, ruller udsigtspunktet jævnt, hvis deaktiveret springer den direkte til det valgte punkt
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Vis måleværktøjstip ved brug af div. bygge-værktøjer: {STRING}
@@ -1370,8 +1371,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Kommandoklik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Kontrolklik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Fra
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Venstreklik-scrolling: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Aktiver rulle kortet ved at trække den med venstre museknap. Dette er især nyttigt, når du bruger en touch-screen til at rulle
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Luk vindue ved højre-klik: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Lukker vinduet ved at højreklikke inde i det. Deaktiverer værktøjstip ved at højreklikke!
@@ -2693,6 +2692,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original
STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD teamet
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gem spil
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Hent spil
@@ -2984,8 +2990,6 @@ STR_TOWN_POPULATION :{BLACK}Verdens
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (by)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Indbyggere: {ORANGE}{COMMA}{BLACK} Huse: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passagerer sidste måned: {ORANGE}{COMMA}{BLACK} maks.: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post sidste måned: {ORANGE}{COMMA}{BLACK} maks.: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Nødvendig godsmængde for at byen kan vokse:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} krævet
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} kræves om vinteren
@@ -4232,6 +4236,7 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... denn
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... vejen peger i den forkerte retning
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... drive-through stops kan ikke have hjørner
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... drive-through stops kan ikke have kryds
+STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}vejen er ensrettet eller blokeret
# Station destruction related errors
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Kan ikke fjerne en del af en station...
diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt
index 383706f727..9b387f2f7c 100644
--- a/src/lang/dutch.txt
+++ b/src/lang/dutch.txt
@@ -476,7 +476,7 @@ STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Ingezoomd scree
STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Screenshot met standaard zoom
STR_ABOUT_MENU_GIANT_SCREENSHOT :Screenshot van hele kaart
STR_ABOUT_MENU_ABOUT_OPENTTD :Over 'OpenTTD'
-STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite uitlijner
+STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite-uitlijner
STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Schakel selectiekaders
STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Schakel kleuren van braakliggende grond aan/uit
############ range ends here
@@ -669,10 +669,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selectee
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Programmashuffle aan/uit
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Toon nummerkeuzescherm
-STR_ERROR_NO_SONGS :{WHITE}Er is een muziek set zonder liedjes gekozen. Er zal geen muziek worden gespeeld
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Muziekprogrammakeuze
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Nummerindex
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programma - '{STRING}'
@@ -1147,7 +1144,7 @@ STR_CONFIG_SETTING_RUNNING_COSTS :Onderhoudskoste
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Het niveau van onderhoud en bedrijfskosten van voertuigen en infrastuctuur
STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Bouwsnelheid: {STRING}
STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Beperk de hoeveelheid bouwactiviteiten voor computerspeler
-STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Voertuig storingen: {STRING}
+STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Voertuigstoringen: {STRING}
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Controle hoe vaak onvoldoende onderhouden voertuigen kapot kunnen gaan
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Subsidie indicator: {STRING}
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Instellen hoeveel wordt betaald voor gesubsidieerde verbindingen
@@ -1337,8 +1334,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Kleur van het t
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Groen
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Donker groen
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violet
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Omgekeerde scrollrichting: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Gedrag wanneer gescrolld wordt door de map met de rechter muisknop. Indien uitgeschakeld bestuurd de muis de camera. Indien ingeschakeld bestuurd de muis de kaart.
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Vloeiend scrollen kijkvenster: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Bepalen hoe de hoofdweergave schuift naar een specifieke positie bij het klikken op de minikaart of bij de afgifte van een opdracht om naar een specifiek object op de kaart. Indien ingeschakeld, de viewport scrollt soepel, als deze uitgeschakeld gaat u rechtstreeks naar de beoogde plek
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Toon dimensie-informatie bij het gebruik van diverse bouwgereedschappen: {STRING}
@@ -1370,8 +1365,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command-klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Uit
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Scrollen met linkermuisknop: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Schakel scrollen met de linkermuisknop in door te slepen. Dit is vooral handig bij het gebruik van een touchscreen voor scrollen
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Sluit window met rechts-klik: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Sluit een venster door met de rechtermuisknop erin te klikken. Schakelt de tooltip uit met de rechtermuisknop!
@@ -2693,6 +2686,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Originel
STR_ABOUT_VERSION :{BLACK}OpenTTD versie {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Het OpenTTD-team
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spel Opslaan
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Spel Laden
@@ -2984,8 +2984,6 @@ STR_TOWN_POPULATION :{BLACK}Wereldbe
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Groeistad)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Bevolking: {ORANGE}{COMMA}{BLACK} Huizen: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passagiers afgelopen maand: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post afgelopen maand: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Vracht nodig voor groei van stad:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} noodzakelijk
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} noodzakelijk in de winter
diff --git a/src/lang/english.txt b/src/lang/english.txt
index 258c02c6d6..1be1387061 100644
--- a/src/lang/english.txt
+++ b/src/lang/english.txt
@@ -475,6 +475,7 @@ STR_ABOUT_MENU_SCREENSHOT :Screenshot
STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Fully zoomed in screenshot
STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Default zoom screenshot
STR_ABOUT_MENU_GIANT_SCREENSHOT :Whole map screenshot
+STR_ABOUT_MENU_SHOW_FRAMERATE :Show frame rate
STR_ABOUT_MENU_ABOUT_OPENTTD :About 'OpenTTD'
STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite aligner
STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Toggle bounding boxes
@@ -650,6 +651,7 @@ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLA
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
+STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT}{DKGREEN}No music available
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{RAW_STRING}"
STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Track
STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Title
@@ -669,15 +671,15 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Select '
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Toggle programme shuffle on/off
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Show music track selection window
-STR_ERROR_NO_SONGS :{WHITE}A music set without songs has been selected. No songs will be played
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Music Programme Selection
+STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}Music Programme - '{RAW_STRING}'
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{RAW_STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Track Index
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programme - '{STRING}'
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Clear
+STR_PLAYLIST_CHANGE_SET :{BLACK}Change set
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Clear current programme (Custom1 or Custom2 only)
+STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Change music selection to another installed set
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Click on music track to add to current programme (Custom1 or Custom2 only)
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Click on music track to remove it from current programme (Custom1 or Custom2 only)
@@ -880,10 +882,10 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLAC
# Extra view window
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Viewport {COMMA}
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copy to viewport
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Change viewport
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copy the location of the main view to this viewport
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Paste from viewport
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Paste the location of this viewport to the main view
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Change main view
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Copy the location of this viewport to the main view
# Game options window
STR_GAME_OPTIONS_CAPTION :{WHITE}Game Options
@@ -1337,8 +1339,12 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Colour of the t
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Green
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Dark green
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violet
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Reverse scroll direction: {STRING2}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Behaviour when scrolling the map with the right mouse button. When disabled, the mouse moves the camera. When enabled, the mouse moves the map
+STR_CONFIG_SETTING_SCROLLMODE :Viewport scroll behaviour: {STRING2}
+STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Behaviour when scrolling the map
+STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Move viewport with RMB, mouse position locked
+STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Move map with RMB, mouse position locked
+STR_CONFIG_SETTING_SCROLLMODE_RMB :Move map with RMB
+STR_CONFIG_SETTING_SCROLLMODE_LMB :Move map with LMB
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Smooth viewport scrolling: {STRING2}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Control how the main view scrolls to a specific position when clicking on the smallmap or when issuing a command to scroll to a specific object on the map. If enabled, the viewport scrolls smoothly, if disabled it jumps directly to the targeted spot
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Show a measurement tooltip when using various build-tools: {STRING2}
@@ -1370,8 +1376,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Click
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Click
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Off
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Left-click scrolling: {STRING2}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Enable scrolling the map by dragging it with the left mouse button. This is especially useful when using a touch-screen for scrolling
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Close window on right-click: {STRING2}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Closes a window by right-clicking inside it. Disables the tooltip on right-click!
@@ -2285,6 +2289,7 @@ STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Cargo Fl
STR_LINKGRAPH_LEGEND_ALL :{BLACK}All
STR_LINKGRAPH_LEGEND_NONE :{BLACK}None
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Select companies to be displayed
+STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP :{BLACK}{STRING}{}{COMPANY}
# Linkgraph legend window and linkgraph legend in smallmap
STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}unused
@@ -2693,6 +2698,56 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original
STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team
+# Framerate display window
+STR_FRAMERATE_CAPTION :{WHITE}Frame rate
+STR_FRAMERATE_CAPTION_SMALL :{STRING2}{WHITE} ({DECIMAL}x)
+STR_FRAMERATE_RATE_GAMELOOP :{WHITE}Simulation rate: {STRING2}
+STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Number of game ticks simulated per second.
+STR_FRAMERATE_RATE_BLITTER :{WHITE}Graphics frame rate: {STRING2}
+STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Number of video frames rendered per second.
+STR_FRAMERATE_SPEED_FACTOR :{WHITE}Current game speed factor: {DECIMAL}x
+STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}How fast the game is currently running, compared to the expected speed at normal simulation rate.
+STR_FRAMERATE_CURRENT :{WHITE}Current
+STR_FRAMERATE_AVERAGE :{WHITE}Average
+STR_FRAMERATE_DATA_POINTS :{WHITE}Data based on {COMMA} measurements
+STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL}{WHITE} ms
+STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL}{WHITE} ms
+STR_FRAMERATE_MS_BAD :{RED}{DECIMAL}{WHITE} ms
+STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL}{WHITE} frames/s
+STR_FRAMERATE_FPS_WARN :{YELLOW}{DECIMAL}{WHITE} frames/s
+STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL}{WHITE} frames/s
+STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COMMA} ms
+STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} s
+############ Leave those lines in this order!!
+STR_FRAMERATE_GAMELOOP :{WHITE}Game loop total:
+STR_FRAMERATE_GL_ECONOMY :{WHITE} Cargo handling:
+STR_FRAMERATE_GL_TRAINS :{WHITE} Train ticks:
+STR_FRAMERATE_GL_ROADVEHS :{WHITE} Road vehicle ticks:
+STR_FRAMERATE_GL_SHIPS :{WHITE} Ship ticks:
+STR_FRAMERATE_GL_AIRCRAFT :{WHITE} Aircraft ticks:
+STR_FRAMERATE_GL_LANDSCAPE :{WHITE} World ticks:
+STR_FRAMERATE_GL_LINKGRAPH :{WHITE} Link graph delay:
+STR_FRAMERATE_DRAWING :{WHITE}Graphics rendering:
+STR_FRAMERATE_DRAWING_VIEWPORTS :{WHITE} World viewports:
+STR_FRAMERATE_VIDEO :{WHITE}Video output:
+STR_FRAMERATE_SOUND :{WHITE}Sound mixing:
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+STR_FRAMETIME_CAPTION_GAMELOOP :Game loop
+STR_FRAMETIME_CAPTION_GL_ECONOMY :Cargo handling
+STR_FRAMETIME_CAPTION_GL_TRAINS :Train ticks
+STR_FRAMETIME_CAPTION_GL_ROADVEHS :Road vehicle ticks
+STR_FRAMETIME_CAPTION_GL_SHIPS :Ship ticks
+STR_FRAMETIME_CAPTION_GL_AIRCRAFT :Aircraft ticks
+STR_FRAMETIME_CAPTION_GL_LANDSCAPE :World ticks
+STR_FRAMETIME_CAPTION_GL_LINKGRAPH :Link graph delay
+STR_FRAMETIME_CAPTION_DRAWING :Graphics rendering
+STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :World viewport rendering
+STR_FRAMETIME_CAPTION_VIDEO :Video output
+STR_FRAMETIME_CAPTION_SOUND :Sound mixing
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Load Game
@@ -2977,6 +3032,7 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Enter a
STR_TOWN_DIRECTORY_CAPTION :{WHITE}Towns
STR_TOWN_DIRECTORY_NONE :{ORANGE}- None -
STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA})
+STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (City){BLACK} ({COMMA})
STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Town names - click on name to centre main view on town. Ctrl+Click opens a new viewport on town location
STR_TOWN_POPULATION :{BLACK}World population: {COMMA}
@@ -2984,8 +3040,7 @@ STR_TOWN_POPULATION :{BLACK}World po
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (City)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Population: {ORANGE}{COMMA}{BLACK} Houses: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passengers last month: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Mail last month: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
+STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} last month: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Cargo needed for town growth:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} required
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} required in winter
@@ -4232,6 +4287,7 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... this
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... road facing in the wrong direction
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... drive through stops can't have corners
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... drive through stops can't have junctions
+STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... road is one way or blocked
# Station destruction related errors
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Can't remove part of station...
@@ -4483,6 +4539,8 @@ STR_BASESOUNDS_DOS_DESCRIPTION :Original Transp
STR_BASESOUNDS_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows edition sounds.
STR_BASESOUNDS_NONE_DESCRIPTION :A sound pack without any sounds.
STR_BASEMUSIC_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows edition music.
+STR_BASEMUSIC_DOS_DESCRIPTION :Original Transport Tycoon Deluxe DOS edition music.
+STR_BASEMUSIC_TTO_DESCRIPTION :Original Transport Tycoon (Original/World Editor) DOS edition music.
STR_BASEMUSIC_NONE_DESCRIPTION :A music pack without actual music.
##id 0x2000
diff --git a/src/lang/english_AU.txt b/src/lang/english_AU.txt
index 8d51d06660..52ff246da3 100644
--- a/src/lang/english_AU.txt
+++ b/src/lang/english_AU.txt
@@ -660,10 +660,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Select '
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Toggle programme shuffle on/off
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Show music track selection window
-STR_ERROR_NO_SONGS :{WHITE}A music set without songs has been selected. No songs will be played
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Music Programme Selection
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Track Index
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programme - '{STRING}'
@@ -1316,8 +1313,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Colour of the t
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Green
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Dark green
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violet
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Reverse scroll direction: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Behaviour when scrolling the map with the right mouse button. When disabled, the mouse moves the camera. When enabled, the mouse moves the map
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Smooth viewport scrolling: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Control how the main view scrolls to a specific position when clicking on the smallmap or when issuing a command to scroll to a specific object on the map. If enabled, the viewport scrolls smoothly, if disabled it jumps directly to the targeted spot
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Show a measurement tooltip when using various build-tools: {STRING}
@@ -1349,8 +1344,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Click
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Click
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Off
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Left-click scrolling: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Enable scrolling the map by dragging it with the left mouse button. This is especially useful when using a touch-screen for scrolling
STR_CONFIG_SETTING_AUTOSAVE :Autosave: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Select interval between automatic game saves
@@ -2664,6 +2657,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original
STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Load Game
@@ -2947,8 +2947,6 @@ STR_TOWN_POPULATION :{BLACK}World po
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (City)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Population: {ORANGE}{COMMA}{BLACK} Houses: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passengers last month: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Mail last month: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Cargo needed for town growth:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} required
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} required in winter
diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt
index 86519ddc61..6126be2e85 100644
--- a/src/lang/english_US.txt
+++ b/src/lang/english_US.txt
@@ -650,6 +650,7 @@ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLA
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
+STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT}{DKGREEN}No music available
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}"
STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Track
STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Title
@@ -669,15 +670,15 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Select '
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Toggle program shuffle on/off
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Show music track selection window
-STR_ERROR_NO_SONGS :{WHITE}A music set without songs has been selected. No songs will be played
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Music Program Selection
+STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}Music Program - '{STRING}'
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Track Index
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}'
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Clear
+STR_PLAYLIST_CHANGE_SET :{BLACK}Change set
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Clear current program (Custom1 or Custom2 only)
+STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Change music selection to another installed set
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Click on music track to add to current program (Custom1 or Custom2 only)
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Click on music track to remove it from current program (Custom1 or Custom2 only)
@@ -880,10 +881,10 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLAC
# Extra view window
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Viewport {COMMA}
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copy to viewport
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Change viewport
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copy the location of the main view to this viewport
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Paste from viewport
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Paste the location of this viewport to the main view
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Change main view
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Copy the location of this viewport to the main view
# Game options window
STR_GAME_OPTIONS_CAPTION :{WHITE}Game Options
@@ -1337,8 +1338,12 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Color of the te
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Green
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Dark green
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Purple
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Reverse scroll direction: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Behavior when scrolling the map with the right mouse button. When disabled, the mouse moves the camera. When enabled, the mouse moves the map
+STR_CONFIG_SETTING_SCROLLMODE :Viewport scroll behaviour: {STRING}
+STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Behavior when scrolling the map
+STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Move viewport with RMB, mouse position locked
+STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Move map with RMB, mouse position locked
+STR_CONFIG_SETTING_SCROLLMODE_RMB :Move map with RMB
+STR_CONFIG_SETTING_SCROLLMODE_LMB :Move map with LMB
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Smooth viewport scrolling: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Control how the main view scrolls to a specific position when clicking on the smallmap or when issuing a command to scroll to a specific object on the map. If enabled, the viewport scrolls smoothly, if disabled it jumps directly to the targeted spot
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Show a measurement tooltip when using various build-tools: {STRING}
@@ -1370,8 +1375,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Click
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Click
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Off
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Left-click scrolling: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Enable scrolling the map by dragging it with the left mouse button. This is especially useful when using a touch-screen for scrolling
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Close window on right-click: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Closes a window by right-clicking inside it. Disables the tooltip on right-click!
@@ -2285,6 +2288,7 @@ STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Cargo Fl
STR_LINKGRAPH_LEGEND_ALL :{BLACK}All
STR_LINKGRAPH_LEGEND_NONE :{BLACK}None
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Select companies to be displayed
+STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP :{BLACK}{STRING}{}{COMPANY}
# Linkgraph legend window and linkgraph legend in smallmap
STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}unused
@@ -2693,6 +2697,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original
STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Load Game
@@ -2977,6 +2988,7 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Enter a
STR_TOWN_DIRECTORY_CAPTION :{WHITE}Towns
STR_TOWN_DIRECTORY_NONE :{ORANGE}- None -
STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA})
+STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (City){BLACK} ({COMMA})
STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Town names - click on name to center main view on town. Ctrl+Click opens a new viewport on town location
STR_TOWN_POPULATION :{BLACK}World population: {COMMA}
@@ -2984,8 +2996,7 @@ STR_TOWN_POPULATION :{BLACK}World po
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (City)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Population: {ORANGE}{COMMA}{BLACK} Houses: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passengers last month: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Mail last month: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
+STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} last month: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Cargo needed for town growth:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} required
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} required in winter
@@ -4232,6 +4243,7 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... this
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... road facing in the wrong direction
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... drive through stops can't have corners
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... drive through stops can't have junctions
+STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... road is one way or blocked
# Station destruction related errors
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Can't remove part of station...
@@ -4483,6 +4495,8 @@ STR_BASESOUNDS_DOS_DESCRIPTION :Original Transp
STR_BASESOUNDS_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows edition sounds.
STR_BASESOUNDS_NONE_DESCRIPTION :A sound pack without any sounds.
STR_BASEMUSIC_WIN_DESCRIPTION :Original Transport Tycoon Deluxe Windows edition music.
+STR_BASEMUSIC_DOS_DESCRIPTION :Original Transport Tycoon Deluxe DOS edition music.
+STR_BASEMUSIC_TTO_DESCRIPTION :Original Transport Tycoon (Original/World Editor) DOS edition music.
STR_BASEMUSIC_NONE_DESCRIPTION :A music pack without actual music.
##id 0x2000
diff --git a/src/lang/esperanto.txt b/src/lang/esperanto.txt
index 949fdb0d2c..8b445cb735 100644
--- a/src/lang/esperanto.txt
+++ b/src/lang/esperanto.txt
@@ -663,10 +663,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Elektu l
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Miksu/ne miksu
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Montru muziker-elektan fenestron
-STR_ERROR_NO_SONGS :{WHITE}Senkanta muzikaro estas elektita. Neniu kanto ludos.
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Elekto de Muzikprogramo
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Numera Indekso
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programo - '{STRING}'
@@ -1199,7 +1196,6 @@ STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :Ligu landaspekt
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verda
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Malhele verda
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Viola
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Inversigu skroldirekton: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Glata rulumado de vidujo: {STRING}
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Montru mezuran konsilbalonon ĉe uzo de konstruiloj: {STRING}
STR_CONFIG_SETTING_LIVERIES :Montru veturiltipe specifajn liverojn: {STRING}
@@ -1223,7 +1219,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Komando+Klako
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Klako
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Ne
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Maldekstr-klak-rulumado: {STRING}
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Uzu la {STRING} datformon por nomoj de konservludoj.
@@ -2267,6 +2262,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Origina
STR_ABOUT_VERSION :{BLACK}OpenTTD-versio {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 La teamo de OpenTTD
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Konservu Ludon
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Ŝarĝu Ludon
@@ -2514,8 +2516,6 @@ STR_TOWN_POPULATION :{BLACK}Monda en
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Urbo)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Enloĝantoj: {ORANGE}{COMMA}{BLACK} Domoj: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Pasaĝeroj lastmonate: {ORANGE}{COMMA}{BLACK} maksimume: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Poŝto lastmonate: {ORANGE}{COMMA}{BLACK} maksimume: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Kargo bezonata por kreskigi urbon:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} bezonatas
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} bezonatas en vintro
diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt
index 344f099741..80c27eebf6 100644
--- a/src/lang/estonian.txt
+++ b/src/lang/estonian.txt
@@ -726,10 +726,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Vali 'om
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Lülita lugude segamine sisse ja välja
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Näita muusikalugude valimise akent
-STR_ERROR_NO_SONGS :{WHITE}Valitud muusikakomplekt ei sisalda ühtegi lugu. Ühtegi lugu ei esitata
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Muusikaprogrammi valimine
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Loo number
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programm - '{STRING}'
@@ -1394,8 +1391,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Maa värv väik
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Roheline
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Tumeroheline
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violetne
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Vaade liigub vastassuunas: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Vaate liigutamine parema hiireklahviga. Kui see on välja lülitatud, siis hiireosuti juhib vaatepunkti. Kui sisse, siis kaarti
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Vaade keskendatakse sujuvalt: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Vaateakna asukohale keskendamise viis, kui vajutatakse väikesele kaardile, või kui vaade keskendatakse mõnele rekvisiidile. Sisse lülitades on liikumine sujuv, välja lülitades läheb vaade kohe sihtpunkti
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Ehitamisel mõõtude arvesti näitamine: {STRING}
@@ -1427,8 +1422,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+klõps
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+klõps
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Väljas
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Vaate liigutamine vasaku hiireklahviga: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Lubab kaardi liigutamise vasaku hiireklahvi abil. See lihtsustab mängimist puutetundlikul ekraanil
STR_CONFIG_SETTING_AUTOSAVE :Automaatne salvestamine: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Vali automaatse salvestamise intervall
@@ -2747,6 +2740,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Algne au
STR_ABOUT_VERSION :{BLACK}OpenTTD osa {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 OpenTTD meeskond
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Mängu salvestamine
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Mängu jätkamine
@@ -3038,8 +3038,6 @@ STR_TOWN_POPULATION :{BLACK}Maailma
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Linn)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Rahvaarv: {ORANGE}{COMMA}{BLACK} Ehitisi: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Reisijaid eelmisel kuul: {ORANGE}{COMMA}{BLACK} Enim: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Posti eelmisel kuul: {ORANGE}{COMMA}{BLACK} Enim: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Veoseid linna kasvamiseks:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} vajalik
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} on talvel vajalik
diff --git a/src/lang/faroese.txt b/src/lang/faroese.txt
index 4d90facad2..2eb53ca217 100644
--- a/src/lang/faroese.txt
+++ b/src/lang/faroese.txt
@@ -647,10 +647,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Vel 'Sj
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Tendra/sløkk bland av skránni
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Vís tónleika spor úrvals glugga
-STR_ERROR_NO_SONGS :{WHITE}Eitt tónleika sett uttan sangir er valt. Engir sangir vera spældir
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Úrval av tónleika skráðum
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Spor yvirlit
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Skrá - '{STRING}'
@@ -1273,8 +1270,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Liturin av lend
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Grønt
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Myrka grønt
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Blákollulitur
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Umvend skrull ætt: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Atburður tá tú skrullar korti við høgra músa knøtti. Um ógilda flytir músin kamerai. Um gilda flytir músin korti.
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Mjúka sýnisglugga skrulling: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Stýr hvussu høvuðs sýni skrullar til eitt ávíst stað tá tú trýstir á lítlakorti ella tú tú gevur eini boð um at skrulla til ein ávísan lut á kortinum. Um gilda, skrullar sýni mjúgdliga, um ógilda leypur sýni beint til staði
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Vís eina mátingar vegleiðing tá tú brúkar ymisku byggji amboðini: {STRING}
@@ -1306,8 +1301,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+trýst
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+trýst
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Sløkt
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Vinstra-trýst skrulling: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Gilda skrulling av kortinum við at toga ta við vinstra músa knøtti. Hetta er serstakliga hent um tú nýtur ein fingraskugga at skrulla vi
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Nýt {STRING} dato sniði til nøvnini á goymdum spølum
@@ -2429,6 +2422,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Upprunal
STR_ABOUT_VERSION :{BLACK}OpenTTD útgáva {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD toymi
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Goym spæl
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Heinta spæl
@@ -2650,8 +2650,6 @@ STR_TOWN_POPULATION :{BLACK}Heims f
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Býur)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Fólkatal: {ORANGE}{COMMA}{BLACK} Hús: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Ferðafólk síðsta mánað: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Postur síðsta mánað: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Farmur ið tørvast fyri bygda menning:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} krevst
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} krevst um veturin
diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt
index b53a762c9b..65f7e27286 100644
--- a/src/lang/finnish.txt
+++ b/src/lang/finnish.txt
@@ -475,7 +475,7 @@ STR_ABOUT_MENU_SCREENSHOT :Kuvakaappaus
STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Täysin lähennetty kuvakaappaus
STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Kuvakaappaus oletuslähennystasolla
STR_ABOUT_MENU_GIANT_SCREENSHOT :Koko kartan kuvakaappaus
-STR_ABOUT_MENU_ABOUT_OPENTTD :Tietoja 'OpenTTD':stä
+STR_ABOUT_MENU_ABOUT_OPENTTD :Tietoja OpenTTD:stä
STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite-kohdistaja
STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Reunat päälle/pois
STR_ABOUT_MENU_TOGGLE_DIRTY_BLOCKS :Likaisten ruutujen värjäys päälle/pois
@@ -669,10 +669,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Valitse
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Sekoittaminen päälle/pois
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Näytä musiikkiraitojen valintaikkuna
-STR_ERROR_NO_SONGS :{WHITE}Musiikkipaketti jossa ei ole kappaleita on valittu. Musiikkia ei soiteta
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Soittolistan valinta
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Raita
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Soittolista - '{STRING}'
@@ -780,12 +777,12 @@ STR_NEWS_MESSAGE_CAPTION :{WHITE}Viesti
STR_NEWS_CUSTOM_ITEM :{BIG_FONT}{BLACK}{STRING}
STR_NEWS_FIRST_TRAIN_ARRIVAL :{BIG_FONT}{BLACK}Kaupunkilaiset juhlivat . . .{}Ensimmäinen juna saapuu asemalle {STATION}!
-STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Kaupunkilaiset juhlivat . . .{}Ensimmäinen linja-auto saapuu asemalle {STATION}!
-STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Kaupunkilaiset juhlivat . . .{}Ensimmäinen kuorma-auto saapuu asemalle {STATION}!
-STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Kaupunkilaiset juhlivat . . .{}Ensimmäinen raitiovaunu saapuu asemalle {STATION}!
-STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Kaupunkilaiset juhlivat . . .{}Ensimmäinen rahtiraitiovaunu saapuu asemalle {STATION}!
-STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Kaupunkilaiset juhlivat . . .{}Ensimmäinen laiva saapuu asemalle {STATION}!
-STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Kaupunkilaiset juhlivat . . .{}Ensimmäinen lentokone saapuu asemalle {STATION}!
+STR_NEWS_FIRST_BUS_ARRIVAL :{BIG_FONT}{BLACK}Kaupunkilaiset juhlivat . . .{}{STATION} vastaanottaa ensimmäisen linja-auton!
+STR_NEWS_FIRST_TRUCK_ARRIVAL :{BIG_FONT}{BLACK}Kaupunkilaiset juhlivat . . .{}{STATION} vastaanottaa ensimmäisen kuorma-auton!
+STR_NEWS_FIRST_PASSENGER_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Kaupunkilaiset juhlivat . . .{}{STATION} vastaanottaa ensimmäisen raitiovaunun!
+STR_NEWS_FIRST_CARGO_TRAM_ARRIVAL :{BIG_FONT}{BLACK}Kaupunkilaiset juhlivat . . .{}{STATION} vastaanottaa ensimmäisen rahtiraitiovaunun!
+STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLACK}Kaupunkilaiset juhlivat . . .{}{STATION} vastaanottaa ensimmäisen laivan!
+STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}Kaupunkilaiset juhlivat . . .{}{STATION} vastaanottaa ensimmäisen lentokoneen!
STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}Junaonnettomuus!{}{COMMA} kuolee törmäyksen jälkeisessä tulipallossa.
STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}Tasoristeysturma!{}Kuljettaja kuolee junan ja auton törmäyksen jälkeisessä tulipallossa
@@ -927,10 +924,10 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Georgian lari (
STR_GAME_OPTIONS_CURRENCY_IRR :Iranin rial (IRR)
############ end of currency region
-STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Ajoneuvot
+STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Kulkuneuvot
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Valitse kummalla puolella tietä ajetaan.
-STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Vasemmalla kaistalla
-STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Oikealla kaistalla
+STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Vasemmanpuolinen liikenne
+STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Oikeanpuolinen liikenne
STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Kaupunkien nimet
STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Valitse kaupunkien nimien tyyli.
@@ -1096,11 +1093,11 @@ STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Sulje ka
STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(selitystä ei saatavilla)
STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Oletusarvo: {ORANGE}{STRING}
STR_CONFIG_SETTING_TYPE :{LTBLUE}Asetuksen tyyppi: {ORANGE}{STRING}
-STR_CONFIG_SETTING_TYPE_CLIENT :Yleinen asetus (ei tallenneta tallenteisiin; vaikuttaa kaikkiin peleihin)
+STR_CONFIG_SETTING_TYPE_CLIENT :Yleinen asetus (ei tallenneta tallennuksiin; vaikuttaa kaikkiin peleihin)
STR_CONFIG_SETTING_TYPE_GAME_MENU :Pelin asetus (tallennetaan tallenteisiin; vaikuttaa vain uusiin peleihin)
STR_CONFIG_SETTING_TYPE_GAME_INGAME :Pelin asetus (tallennetaan tallenteeseen; vaikuttaa vain nykyiseen peliin)
STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Yhtiön asetus (tallennetaan tallenteisiin; vaikuttaa vain uusiin peleihin)
-STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Yhtiön asetus (tallennetaan tallenteeseen; vaikuttaa vain nykyiseen yhtiöön)
+STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Yhtiön asetus (tallennetaan tallennukseen; vaikuttaa vain nykyiseen yhtiöön)
STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Kategoria:
STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Tyyppi:
@@ -1337,8 +1334,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Maaston väri k
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Vihreä
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Tummanvihreä
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violetti
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Käänteinen vierityssuunta: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Käyttäytyminen siirrettäessä näkymää oikealla hiiren näppäimellä. Mikäli pois käytöstä, hiiri liikuttaa kameraa. Mikäli käytössä, hiiri liikuttaa karttaa
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Näkymän tasainen vieritys: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Hallitse miten päänäkymä siirtyy valittuun paikkaan karttaa klikattaessa tai käytettäessä komentoa joka muuttaa näkymän sijaintia. Mikäli käytössä, päänäkymä siirtyy uuteen sijaintiin pehmeäesti, muutoin se hyppää suoraan valittuun sijaintiin
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Näytä mittauksen työkaluvihje, kun käytetään rakennustyökaluja: {STRING}
@@ -1370,8 +1365,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Pois
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Vasemmalla hiiren painikkeella liikkuminen: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Salli näkymän siirtäminen vetämällä hiiren vasemmalla näppäimellä. Hyödyllinen erityisesti kosketusnäyttöä käytettäessä
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Sulje ikkuna hiiren oikealla painikkeella napsauttamalla: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Ikkunat sulkeutuvat, kun niitä napsautetaan hiiren oikealla painikkeella. Tämä korvaa tavallisesti näkyvän työkaluvihjeen!
@@ -2693,6 +2686,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Alkuper
STR_ABOUT_VERSION :{BLACK}OpenTTD-versio {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Tallenna peli
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Lataa peli
@@ -2723,9 +2723,9 @@ STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Maailman
STR_MAPGEN_MAPSIZE :{BLACK}Kartan koko:
STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Valitse kartan koko ruutuina. Saatavilla olevien ruutujen määrä on hieman alhaisempi
STR_MAPGEN_BY :{BLACK}×
-STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Kaupungit:
+STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Kaupunkien määrä:
STR_MAPGEN_DATE :{BLACK}Päivämäärä:
-STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Teollisuus:
+STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Teollisuuden määrä:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Suurin sallittu kartan korkeus:
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Kasvata suurinta sallittua vuorten korkeutta yhdellä
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Vähennä suurinta sallittua vuorten korkeutta yhdellä
@@ -2984,8 +2984,6 @@ STR_TOWN_POPULATION :{BLACK}Maailman
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (City)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Asukasluku: {ORANGE}{COMMA}{BLACK} Taloja: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Matkustajia viime kuussa: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Postia viime kuussa: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Kaupungin kasvuun tarvittava rahti:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} vaadittu
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} vaaditaan talvella
@@ -3204,8 +3202,8 @@ STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Tilin sa
STR_FINANCES_LOAN_TITLE :{WHITE}Laina
STR_FINANCES_MAX_LOAN :{WHITE}Laina enimmillään: {BLACK}{CURRENCY_LONG}
STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG}
-STR_FINANCES_BORROW_BUTTON :{BLACK}Ota lainaa {CURRENCY_LONG}
-STR_FINANCES_BORROW_TOOLTIP :{BLACK}Ota lisää lainaa. Ctrl+Klik lisää lainaa niin paljon kuin mahdollista
+STR_FINANCES_BORROW_BUTTON :{BLACK}Nosta lainaa {CURRENCY_LONG}
+STR_FINANCES_BORROW_TOOLTIP :{BLACK}Ota lisää lainaa. Ctrl+Klik nostaa lainaa niin paljon kuin mahdollista
STR_FINANCES_REPAY_BUTTON :{BLACK}Lyhennä lainaa {CURRENCY_LONG}
STR_FINANCES_REPAY_TOOLTIP :{BLACK}Lyhennä lainaa. Ctrl+Klik lyhentää lainaa niin paljon kuin mahdollista
STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}Infrastruktuuri
@@ -3236,7 +3234,7 @@ STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}Rakenna
STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}Rakenna yhtiön päämaja
STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}Näytä päämaja
STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}Näytä yhtiön päämaja
-STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Sijoita päämaja
+STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Siirrä päämaja
STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Rakenna yhtiön päärakennus muualle, kustannus 1{NBSP}% yhtiön arvosta. Shift+Klik näyttää kustannearvion sijoittamatta päärakennusta uudelleen
STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Yksityiskohdat
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Näytä tarkka infrastruktuurin määrä
@@ -3261,7 +3259,7 @@ STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Pääjohtajan n
STR_BUY_COMPANY_MESSAGE :{WHITE}Etsimme kuljetusyhtiötä, joka ottaisi haltuunsa yhtiömme{}{}Haluatko ostaa yhtiön {COMPANY} hintaan {CURRENCY_LONG}?
# Company infrastructure window
-STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Yhtiön {COMPANY} infrastruktuuri
+STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}{COMPANY}: Infrastruktuuri
STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Rautatiepalat:
STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Opastimet
STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Teiden palat:
@@ -4259,7 +4257,7 @@ STR_ERROR_CAN_T_POSITION_BUOY_HERE :{WHITE}Poijua e
STR_ERROR_CAN_T_CHANGE_WAYPOINT_NAME :{WHITE}Reittipisteen nimeä ei voi muuttaa...
STR_ERROR_CAN_T_REMOVE_TRAIN_WAYPOINT :{WHITE}Junien reittipistettä ei voi poistaa...
-STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Junaradan reittipiste täytyy poistaa ensin
+STR_ERROR_MUST_REMOVE_RAILWAYPOINT_FIRST :{WHITE}Rautatien reittipiste täytyy poistaa ensin
STR_ERROR_BUOY_IN_THE_WAY :{WHITE}... poiju on tiellä
STR_ERROR_BUOY_IS_IN_USE :{WHITE}... poiju on toisen yhtiön käytössä!
@@ -4482,6 +4480,7 @@ STR_BASESOUNDS_DOS_DESCRIPTION :Alkuperäiset T
STR_BASESOUNDS_WIN_DESCRIPTION :Alkuperäiset Transport Tycoon Deluxen Windows-version äänet.
STR_BASESOUNDS_NONE_DESCRIPTION :Äänipaketti, jossa ei ole ääniä.
STR_BASEMUSIC_WIN_DESCRIPTION :Alkuperäinen Transport Tycoon Deluxen Windows-version musiikki.
+STR_BASEMUSIC_DOS_DESCRIPTION :Alkuperäinen Transport Tycoon Deluxen DOS-version musiikki.
STR_BASEMUSIC_NONE_DESCRIPTION :Musiikkipaketti, jossa ei ole musiikkia.
##id 0x2000
@@ -4855,7 +4854,7 @@ STR_VEHICLE_NAME_AIRCRAFT_PLODDYPHUT_500 :Ploddyphut 500
STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_X1 :Flashbang X1
STR_VEHICLE_NAME_AIRCRAFT_JUGGERPLANE_M1 :Juggerplane M1
STR_VEHICLE_NAME_AIRCRAFT_FLASHBANG_WIZZER :Flashbang Wizzer
-STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Tricario -helikopteri
+STR_VEHICLE_NAME_AIRCRAFT_TRICARIO_HELICOPTER :Tricario-helikopteri
STR_VEHICLE_NAME_AIRCRAFT_GURU_X2_HELICOPTER :Guru X2 -helikopteri
STR_VEHICLE_NAME_AIRCRAFT_POWERNAUT_HELICOPTER :Powernaut-helikopteri
diff --git a/src/lang/french.txt b/src/lang/french.txt
index 2c57358046..34b3bcd892 100644
--- a/src/lang/french.txt
+++ b/src/lang/french.txt
@@ -651,6 +651,7 @@ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLA
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
+STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT}{DKGREEN}Aucune musique disponible
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}"
STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Piste
STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Titre
@@ -664,21 +665,21 @@ STR_MUSIC_TOOLTIP_DRAG_SLIDERS_TO_SET_MUSIC :{BLACK}Faire gl
STR_MUSIC_TOOLTIP_SELECT_ALL_TRACKS_PROGRAM :{BLACK}Choisir le programme «{NBSP}Tout{NBSP}»
STR_MUSIC_TOOLTIP_SELECT_OLD_STYLE_MUSIC :{BLACK}Choisir le programme musical «{NBSP}Ancien style{NBSP}»
STR_MUSIC_TOOLTIP_SELECT_NEW_STYLE_MUSIC :{BLACK}Choisir le programme musical «{NBSP}Nouveau style{NBSP}»
-STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Sélectionner le programme musical «{NBSP}Ezy Street{NBSP}»
+STR_MUSIC_TOOLTIP_SELECT_EZY_STREET_STYLE :{BLACK}Choisir le programme musical «{NBSP}Ezy Street{NBSP}»
STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}Choisir le programme personnalisé «{NBSP}Personnalisé 1{NBSP}»
STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Choisir le programme personnalisé «{NBSP}Personnalisé 2{NBSP}»
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Activer/Désactiver le mode aléatoire
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Afficher la fenêtre de sélection de pistes
-STR_ERROR_NO_SONGS :{WHITE}Un ensemble de musique vide a été choisi. Aucune musique ne sera jouée.
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Sélection du programme musical
-STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
+STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}Programme musical - «{NBSP}{STRING}{NBSP}»
+STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} «{NBSP}{STRING}{NBSP}»
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Index des pistes
-STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programme - '{STRING}'
+STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programme - «{NBSP}{STRING}{NBSP}»
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Effacer
+STR_PLAYLIST_CHANGE_SET :{BLACK}Changer d'ensemble
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Effacer le programme actuel (Personnalisé 1 ou Personnalisé 2 seulement)
+STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Choisir un autre ensemble de musique
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Cliquer sur une piste pour l'ajouter au programme courant (Personnalisé 1 ou Personnalisé 2 seulement)
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Cliquer sur une piste pour la retirer du programme courant (Personnalisé 1 ou Personnalisé 2 seulement)
@@ -881,10 +882,10 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLAC
# Extra view window
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Vue {COMMA}
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copier vers la vue
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copier l'emplacement de la vue principale vers cette vue-ci
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Coller depuis la vue
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Coller l'emplacement de cette vue-ci vers la vue principale
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Modifier cette vue
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copier l'emplacement de la vue principale vers cette vue
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Modifier la vue principale
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Copier l'emplacement de cette vue vers la vue principale
# Game options window
STR_GAME_OPTIONS_CAPTION :{WHITE}Options
@@ -1338,8 +1339,12 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Couleur du terr
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Vert
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Vert foncé
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violet
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Inverser la direction lors du défilement avec la souris{NBSP}: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Comportement lors du défilement de la carte avec le bouton droit de la souris. Quand il est désactivé, la souris déplace la caméra. Quand il est activé, la souris déplace la carte
+STR_CONFIG_SETTING_SCROLLMODE :Défilement de la vue{NBSP}: {STRING}
+STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Comportement lors du défilement de la carte
+STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Défilement de la vue par clic droit, position de la souris verrouillée
+STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Défilement de la carte par clic droit, position de la souris verrouillée
+STR_CONFIG_SETTING_SCROLLMODE_RMB :Défilement de la carte par clic droit
+STR_CONFIG_SETTING_SCROLLMODE_LMB :Défilement de la carte par clic gauche
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Défilement régulier de la vue{NBSP}: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Contrôle comment la vue principale défile jusqu'à une position spécifique lors d'un clic sur la mini-carte ou pour atteindre un objet précis sur la carte. Si activé, la vue défile doucement, si désactivé elle saute directement à la cible
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Montrer une infobulle de mesure lors de l'utilisation de divers outils de construction{NBSP}: {STRING}
@@ -1371,8 +1376,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Commande-clic
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl-clic
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Désactivé
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Défilement par clic gauche{NBSP}: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Active le défilement de la carte en la glissant avec le bouton gauche de la souris. C'est surtout utile pour les écrans tactiles
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Fermer une fenêtre en cliquant droit{NBSP}: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Fermer une fenêtre en cliquant droit à l’intérieur de celle-ci. Désactive l'infobulle sur clic droit{NBSP}!
@@ -2286,6 +2289,7 @@ STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Légende
STR_LINKGRAPH_LEGEND_ALL :{BLACK}Toute
STR_LINKGRAPH_LEGEND_NONE :{BLACK}Aucune
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Choisir les compagnies à afficher
+STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP :{BLACK}{STRING}{}{COMPANY}
# Linkgraph legend window and linkgraph legend in smallmap
STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}inutilisé
@@ -2694,6 +2698,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyrigh
STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 L'équipe OpenTTD
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sauvegarder la partie
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Charger une partie
@@ -2978,6 +2989,7 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Entrer u
STR_TOWN_DIRECTORY_CAPTION :{WHITE}Villes
STR_TOWN_DIRECTORY_NONE :{ORANGE}− Aucune −
STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA})
+STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Métropole){BLACK} ({COMMA})
STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Noms des villes - Cliquer sur un nom pour centrer la vue principale sur la ville. Ctrl-clic pour ouvrir une nouvelle vue sur la ville.
STR_TOWN_POPULATION :{BLACK}Population mondiale{NBSP}: {COMMA}
@@ -2985,8 +2997,7 @@ STR_TOWN_POPULATION :{BLACK}Populati
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Métropole)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Population{NBSP}: {ORANGE}{COMMA}{BLACK} − Maisons{NBSP}: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passagers le mois dernier{NBSP}: {ORANGE}{COMMA}{BLACK} − max.{NBSP}: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Courrier le mois dernier{NBSP}: {ORANGE}{COMMA}{BLACK} − max.{NBSP}: {ORANGE}{COMMA}
+STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} le mois dernier{NBSP}: {ORANGE}{COMMA}{BLACK} - max.{NBSP}: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Cargaison nécessaire à la croissance de la ville{NBSP}:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} requis
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} requis en hiver
@@ -4233,6 +4244,7 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... cett
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... mauvaise orientation de la route
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... les arrêts ne peuvent pas avoir de virages
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... les arrêts ne peuvent pas avoir de jonctions
+STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... la route est à sens unique ou bloquée
# Station destruction related errors
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Impossible de supprimer une partie de la gare...
@@ -4484,6 +4496,8 @@ STR_BASESOUNDS_DOS_DESCRIPTION :Sons originaux
STR_BASESOUNDS_WIN_DESCRIPTION :Sons originaux de Transport Tycoon Deluxe (version Windows).
STR_BASESOUNDS_NONE_DESCRIPTION :Un pack de sons sans sons.
STR_BASEMUSIC_WIN_DESCRIPTION :Musiques originales de Transport Tycoon Deluxe (version Windows).
+STR_BASEMUSIC_DOS_DESCRIPTION :Musiques originales de Transport Tycoon Deluxe (version DOS).
+STR_BASEMUSIC_TTO_DESCRIPTION :Musiques originales de Transport Tycoon (version Originale/World Editor).
STR_BASEMUSIC_NONE_DESCRIPTION :Un pack de musiques sans musiques.
##id 0x2000
diff --git a/src/lang/gaelic.txt b/src/lang/gaelic.txt
index c06b81ecf7..5264ba8b29 100644
--- a/src/lang/gaelic.txt
+++ b/src/lang/gaelic.txt
@@ -868,10 +868,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Tagh am
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Toglaich prògram air thuaiream air/dheth
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Seall uinneag taghadh tracaichean ciùil
-STR_ERROR_NO_SONGS :{WHITE}Chaidh seata dhe cheòl às aonais òrain a thaghadh. Cha tèid òran sam bith a chluiche
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Taghadh prògram ciùil
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} “{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Clàr-amais nan traca
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Prògram - “{STRING}"
@@ -1539,8 +1536,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Dath na crutha-
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Uaine
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Dorch-uaine
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Purpaidh
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Comhair sgrolaidh chontrarra: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Giùlan nuair a thèid am mapa a sgroladh le putan deas na luchaige. Nuair a bhios seo air, gluaisidh an luchag am mapa
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Sgroladh mìn nam port-seallaidh: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Tagh mar a ghluaiseas am prìomh-shealladh gu ionad sònraichte. Ma tha seo dheth, thèid leum dhan ionad a chaidh a thaghadh sa bhad
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Seall gliocasan-sgrìn tomhais le innealan togail: {STRING}
@@ -1572,8 +1567,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Briogad
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Briogadh
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Dheth
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Sgroladh le briogadh clì: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Cuir an comas gun tèid am mapa a sgroladh le slaodadh le putan clì na luchaige. Tha seo feumail gu h-àraidh nuair a chleachdas tu sgrìn-shuathaidh airson sgroladh
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Dùin an uinneag le briogadh deas: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Dùinidh seo uinneag le briogadh deas ’na broinn. Cuiridh e à comas an gliocas-sgrìn le briogadh deas!
@@ -2934,6 +2927,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Còir-le
STR_ABOUT_VERSION :{BLACK}OpenTTD tionndadh {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 An sgioba OpenTTD
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sàbhail an geama
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Luchdaich geama
@@ -3225,8 +3225,6 @@ STR_TOWN_POPULATION :{BLACK}Sluagh a
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Mòr-bhaile)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Sluagh: {ORANGE}{COMMA}{BLACK} Taighean: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Taistealaich am mìos mu dheireadh: {ORANGE}{COMMA}{BLACK} as motha: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post am mìos mu dheireadh: {ORANGE}{COMMA}{BLACK} as motha: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Carago a tha a dhìth ach am fàs am baile:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED}Feum air {ORANGE}{STRING}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{BLACK}Feum air {ORANGE}{STRING}{BLACK} sa gheamhradh
diff --git a/src/lang/galician.txt b/src/lang/galician.txt
index d87aa14abe..fbd6330025 100644
--- a/src/lang/galician.txt
+++ b/src/lang/galician.txt
@@ -670,10 +670,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Seleccio
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Activar/desactivar programa aleatorio
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Amosar a fiestra de selección de pista musical
-STR_ERROR_NO_SONGS :{WHITE}Seleccionouse unha lista de reprodución sen cancións. Non se reproducirá ningunha canción
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Selección do programa de música
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Índice de pistas
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programa - '{STRING}'
@@ -1338,8 +1335,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Cor do terreo n
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verde
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Verde escuro
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violeta
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Inverti-la dirección de desprazamento: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Acción cando o mapa se despraza co botón dereito do rato. Cando se desactiva, o rato move a cámara. Cando se activa, o rato move o mapa
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Desprazamento de vista suave: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controla como a vista principal se despraza a unah posición específica cando se fai clic no minimapa ou cando se emprega un comando para desprazarse a un obxecto específico sobre o mapa. Se se activa, a vista desprázase suavemente, se se desactiva salta directamente
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Mostrar medidas ao usar as ferramentas de construción: {STRING}
@@ -1371,8 +1366,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Tecla Command+C
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Clic
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Apagado
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Desprazamento con click esquerdo: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Habilitar o desprazamento do mapa arrastrándoo co botón esquerdo do rato. Isto é especialmente útil se se emprega unha pantalla táctil para desprazarse
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Pechar a fiestra con click dereito: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Pecha a fiestra facendo botón dereito dentro de ela. Deshabilita a axuda contextual facendo click-dereito!
@@ -2694,6 +2687,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyrigh
STR_ABOUT_VERSION :{BLACK}OpenTTD versión {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 O equipo de OpenTTD
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gravar partida
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Cargar partida
@@ -2985,8 +2985,6 @@ STR_TOWN_POPULATION :{BLACK}Poboaci
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Cidade)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Poboación: {ORANGE}{COMMA}{BLACK} Casas: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Pasaxeiros último mes: {ORANGE}{COMMA}{BLACK} máx: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Correo último mes: {ORANGE}{COMMA}{BLACK} máx: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Carga necesaria para o crecemento da cidade:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} necesario
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} necesarios en inverno
diff --git a/src/lang/german.txt b/src/lang/german.txt
index 128c516c62..cd7eb37d8a 100644
--- a/src/lang/german.txt
+++ b/src/lang/german.txt
@@ -670,10 +670,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Programm
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Zufällige Wiedergabe ein/aus
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Zeige Musiktitelauswahl
-STR_ERROR_NO_SONGS :{WHITE}Ein Musikset ohne Musikdateien wurde ausgewählt. Es kann folglich nichts abgespielt werden.
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Musik-Programmauswahl
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Track Inhalt
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programm - '{STRING}'
@@ -1338,8 +1335,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Farbe von Landf
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Grün
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Dunkelgrün
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Lila
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Scrollrichtung invertieren: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Legt das Verhalten beim Scrollen der Karte mit der rechten Maustaste fest. Ist diese Option aktiviert, bewegt sich der sichtbare Kartenausschnitt in Mausrichtung. Ist sie deaktiviert, bewegt sich die Karte entgegen der Mausrichtung
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Weicher Bildlauf beim Springen zu einer Position: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Lege fest, auf welche Weise die Hauptansicht an eine bestimmte Position wechselt (z.B. wenn ein Punkt auf der Weltkarte angeklickt wird oder der Standort eines Bahnhofs angezeigt werden soll). Ist diese Option eingeschaltet, schwenkt die Ansicht über die Karte, bis sie am gewünschten Punkt angekommen ist. Ist sie ausgeschaltet, springt die Ansicht sofort an die gewünschte Position
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Beim Bauen Tooltip mit Abmessungen anzeigen: {STRING}
@@ -1371,8 +1366,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Kommando+Klick
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Strg+Klick
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Aus
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Scrollen mit linker Maustaste: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Scrolle die Karte, indem mit der linken Maustaste gezogen wird. Dies ist besonders sinnvoll, wenn ein Touchscreen zum Scrollen genutzt wird
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Fenster mit Rechtsklick schließen: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Schließt ein Fenster mittels Rechts-Klick. Schaltet Tooltip mit Rechts-Klick ab!
@@ -2694,6 +2687,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Transpor
STR_ABOUT_VERSION :{BLACK}OpenTTD-Version {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD-Team
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spiel speichern
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Spiel laden
@@ -2985,8 +2985,6 @@ STR_TOWN_POPULATION :{BLACK}Weltbev
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Großstadt)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Einwohner: {ORANGE}{COMMA}{BLACK} Häuser: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passagiere im letzten Monat: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Postsäcke im letzten Monat: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Für Stadtwachstum benötigte Fracht:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} benötigt
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} im Winter benötigt
diff --git a/src/lang/greek.txt b/src/lang/greek.txt
index 11d5755d78..909e180b23 100644
--- a/src/lang/greek.txt
+++ b/src/lang/greek.txt
@@ -731,7 +731,7 @@ STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Δάνε
STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Σύνολο:
############ End of order list
STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}Απαρίθμηση των οχημάτων που απέφεραν κέρδος πέρσι. Περιλαμβανομένων των επιγείων οχημάτων, τρένων, πλοίων και αεροσκαφών.
-STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Αριθμός των πρόσφατα επισκευασμένων σταθμών. Σταθμοί τραίνων, στάσεις λεωφορείων, αεροδρόμια, κ.ο.κ. προσμετρώνται ξεχωριστά, ακόμα κι αν ανήκουν στον ίδιο σταθμό.
+STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}Αριθμός των πρόσφατα επισκευασμένων σταθμών. Σταθμοί τρένων, στάσεις λεωφορείων, αεροδρόμια, κ.ο.κ. προσμετρώνται ξεχωριστά, ακόμα κι αν ανήκουν στον ίδιο σταθμό.
STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}Το κέρδος του οχήματος με το μικρότερο εισόδημα (μόνο οχήματα παλιότερα των 2 ετών θα λαμβάνονται υπόψην)
STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Το ποσό των χρημάτων που έγιναν σε ένα τρίμηνο με το μικρότερο κέρδος των τελευταίων 12 τριμήνων
STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Το ποσό των χρημάτων που έγιναν σε ένα τρίμηνο με το μεγαλύτερο κέρδος των τελευταίων 12 τριμήνων
@@ -757,6 +757,7 @@ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLA
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
+STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT}{DKGREEN}Δεν υπάρχει διαθέσιμη μουσική
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}«{STRING}»
STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Κομμάτι
STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Τίτλος
@@ -776,15 +777,15 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Επιλ
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Εναλλαγή τυχαίας αναπαραγωγής on/off στο πρόγραμμα
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Εμφάνιση παραθύρου επιλογής μουσικού κομματιού
-STR_ERROR_NO_SONGS :{WHITE}Επιλέχτηκε σετ μουσικής χωρίς τραγούδια. Κανένα τραγούδι δεν θα παιχτεί
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Επιλογή Μουσικού Προγράμματος
+STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}Πρόγραμμα μουσικής - '{STRING}'
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} «{STRING}»
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Λίστα σιδηροτροχιών
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Πρόγραμμα - '{STRING}'
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Καθαρισμός
+STR_PLAYLIST_CHANGE_SET :{BLACK}Αλλαγή σετ
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Καθαρισμός τρέχοντος προγράμματος (μόνο Προσαρμοσμένο 1 ή Προσαρμοσμένο 2)
+STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Αλλαγή μουσικής επιλογής σε άλλο εγκατεστημένο σετ
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Πατήστε στο μουσικό κομμάτι για προσθήκη στο τρέχον πρόγραμμα (Προσαρμοσμένο1 ή Προσαρμοσμένο2 μόνο)
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Πατήστε στο τραγούδι για να το αφαιρέσετε από το πρόγραμμα (Προσαρμοσμένο 1 ή 2 μόνο)
@@ -987,9 +988,9 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLAC
# Extra view window
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Εμφάνιση {COMMA}
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Αντιγραφή στην εμφάνιση
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Αντιγραφή στο παράθυρο εμφάνισης
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Αντιγραφή της τοποθεσίας της κύριας προβολής σε αυτό το παράθυρο εμφάνισης
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Επικόλληση από εμφάνιση
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Επικόλληση από παράθυρο εμφάνισης
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Επικόλληση της τοποθεσίας αυτού του παραθύρου εμφάνισης στην κύρια προβολή
# Game options window
@@ -1278,22 +1279,22 @@ STR_CONFIG_SETTING_CATCHMENT :Επιτρέπ
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Διαφορετικοί σταθμοί και αεροδρόμια έχουν περιοχές κάλυψης διαφορετικού μεγέθους
STR_CONFIG_SETTING_EXTRADYNAMITE :Επιτρέπεται η αφαίρεση περισσότερων ιδιοκτησιών των πολέων: {STRING}
STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Είναι ευκολότερη η αφαίρεση υποδομών και κτιρίων που κατέχονται από την πόλη
-STR_CONFIG_SETTING_TRAIN_LENGTH :Μέγιστο μήκος τραίνων: {STRING}
-STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Ορίστε το μέγιστο μήκος των τραίνων
+STR_CONFIG_SETTING_TRAIN_LENGTH :Μέγιστο μήκος τρένων: {STRING}
+STR_CONFIG_SETTING_TRAIN_LENGTH_HELPTEXT :Ορίστε το μέγιστο μήκος των τρένων
STR_CONFIG_SETTING_TILE_LENGTH :{COMMA} τετραγωνίδι{P 0 ο α}
STR_CONFIG_SETTING_SMOKE_AMOUNT :Ποσότητα καπνού/σπινθύρων οχήματος: {STRING}
STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :Ορίστε τον όγκο του καπνού ή τον αριθμό των σπιθών που παράγονται από τα οχήματα
STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :Μοντέλο επιτάχυνσης τρένων: {STRING}
-STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Επιλέξτε το μοντέλο φυσικής για την επιτάχυνση των τραίνων. Με το «αρχικό» μοντέλο οι κλίσεις επιβαρύνουν το ίδιο όλα τα οχήματα. Με το «ρεαλιστικό» μοντέλο οι κλίσεις και οι στροφές τα επιβαρύνουν ανάλογα με διάφορες ιδιότητες όπως το μήκος και το ελκτικό φορτίο
+STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :Επιλέξτε το μοντέλο φυσικής για την επιτάχυνση των τρένων. Με το «αρχικό» μοντέλο οι κλίσεις επιβαρύνουν το ίδιο όλα τα οχήματα. Με το «ρεαλιστικό» μοντέλο οι κλίσεις και οι στροφές τα επιβαρύνουν ανάλογα με διάφορες ιδιότητες όπως το μήκος και το ελκτικό φορτίο
STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :Μοντέλο επιτάχυνσης οχημάτων δρόμου: {STRING}
STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Επιλέξτε το μοντέλο φυσικής για την επιτάχυνση των οχημάτων. Με το «αρχικό» μοντέλο οι κλίσεις επιβαρύνουν το ίδιο όλα τα οχήματα. Με το «ρεαλιστικό» μοντέλο οι κλίσεις και οι στροφές τα επιβαρύνουν ανάλογα με διάφορες ιδιότητες όπως το μήκος και το ελκτικό φορτίο
-STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Κλίση εδάφους για τα τραίνα: {STRING}
-STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Η κλίση ενός κεκλιμένου τετραγωνίδιου για τα τραίνα. Μεγαλύτερες τιμές καθιστούν δυσκολότερο το ανέβασμα λόφων
+STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :Κλίση εδάφους για τα τρένα: {STRING}
+STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :Η κλίση ενός κεκλιμένου τετραγωνίδιου για τα τρένα. Μεγαλύτερες τιμές καθιστούν δυσκολότερο το ανέβασμα λόφων
STR_CONFIG_SETTING_PERCENTAGE :{COMMA}%
STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Κλίση εδάφους για τα οδικά οχήματα: {STRING}
STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Η κλίση ενός κεκλιμένου τετραγωνίδιου για τα οδικά οχήματα. Μεγαλύτερες τιμές καθιστούν δυσκολότερο το ανέβασμα λόφων
STR_CONFIG_SETTING_FORBID_90_DEG :Απαγόρευση στα τρένα και πλοία να κάνουν στροφές 90°: {STRING}
-STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Στροφές 90 μοιρών προκύπτουν όταν μια οριζόντια σιδηροτροχιά ακολουθείται από μια κάθετη στο επόμενο τετραγωνίδιο, κάνοντας το τραίνο να στρίψει κατά 90 μοίρες όταν αλλάζει τετραγωνίδιο, αντί για τις συνηθισμένες 45 μοίρες σε άλλους συνδυασμούς σιδηροτροχιών. Αυτό έχει επίσης εφαρμογή στην ακτίνα στροφής των πλοίων
+STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :Στροφές 90 μοιρών προκύπτουν όταν μια οριζόντια σιδηροτροχιά ακολουθείται από μια κάθετη στο επόμενο τετραγωνίδιο, κάνοντας το τρένο να στρίψει κατά 90 μοίρες όταν αλλάζει τετραγωνίδιο, αντί για τις συνηθισμένες 45 μοίρες σε άλλους συνδυασμούς σιδηροτροχιών. Αυτό έχει επίσης εφαρμογή στην ακτίνα στροφής των πλοίων
STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Να επιτρέπεται η συνένωση μη παρακείμενων σταθμών: {STRING}
STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Επιτρέπεται η προσθήκη τμημάτων σε σταθμό χωρίς αυτά να αγγίζουν τα ήδη υπάρχοντα τμήματα. Χρειάζεται Ctrl+Κλικ κατά την τοποθέτηση των νέων τμημάτων
STR_CONFIG_SETTING_INFLATION :Πληθωρισμός: {STRING}
@@ -1323,7 +1324,7 @@ STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Όταν ενε
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Οι νέες οδηγίες είναι «χωρίς στάση» από προεπιλογή: {STRING}
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Κανονικά, τα οχήματα σταματούν σε κάθε σταθμό που περνούν. Ενεργοποιώντας αυτήν τη ρύθμιση, δεν θα σταματούν σε κανένα σταθμό που θα βρει στη διαδρομή τους προς τον τελικό προορισμό. Σημείωστε πως αυτή η ρύθμιση ορίζει μόνο μια καθορισμένη τιμή για νέες εντολές. Ειδικές εντολές μπορούν να δοθούν για οποιαδήποτε συμπεριφορά, άσχετα από την προκαθορισμένη
STR_CONFIG_SETTING_STOP_LOCATION :Οι εντόλες νέων τρένων διορίζουν ότι σταματάνε εξ ορισμού στο {STRING} της πλατφόρμας
-STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Το προεπιλεγμένο σημείο όπου θα σταματούν τα τραίνα στην πλατφόρμα . Το «κοντινό άκρο» σημαίνει κοντά στο σημείο εισόδου, «Μέση» σημαίνει στο μέσο της πλατφόρμας και «μακρινό άκρο» σημαίνει στο άλλο άκρο από το σημείο εισόδου. Σημειώστε ότι αυτή η ρύθμιση ορίζει μόνο την προκαθορισμένη τιμή για νέες εντολές. Παρ' όλα αυτά, είναι δυνατό να δοθούν διαφορετικές εντολές για οποιαδήποτε συμπεριφορά.
+STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Το προεπιλεγμένο σημείο όπου θα σταματούν τα τρένα στην πλατφόρμα . Το «κοντινό άκρο» σημαίνει κοντά στο σημείο εισόδου, «Μέση» σημαίνει στο μέσο της πλατφόρμας και «μακρινό άκρο» σημαίνει στο άλλο άκρο από το σημείο εισόδου. Σημειώστε ότι αυτή η ρύθμιση ορίζει μόνο την προκαθορισμένη τιμή για νέες εντολές. Παρ' όλα αυτά, είναι δυνατό να δοθούν διαφορετικές εντολές για οποιαδήποτε συμπεριφορά.
STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :κοντινό άκρο
STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :στη μέση
STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :μακρινό άκρο
@@ -1344,7 +1345,7 @@ STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Επιτρέπ
STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Επιτρέπεται η αποστολή χρημάτων σε άλλες εταιρίες: {STRING}
STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Επιτρέπεται η μεταφορά χρημάτων μεταξύ των εταιρειών σε παιχνίδια πολλαπλών παικτών
STR_CONFIG_SETTING_FREIGHT_TRAINS :Πολλαπλασιαστής βάρους σε φορτία για εξομοίωση βαρέων τρένων: {STRING}
-STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Ορίζεται ο αντίκτυπος της μεταφοράς φορτίων στα τραίνα. Υψηλότερη τιμή κάνει τη μεταφορά φορτίων πιο απαιτητική για τραίνα, ιδιαίτερα στους λόφους
+STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :Ορίζεται ο αντίκτυπος της μεταφοράς φορτίων στα τρένα. Υψηλότερη τιμή κάνει τη μεταφορά φορτίων πιο απαιτητική για τρένα, ιδιαίτερα στους λόφους
STR_CONFIG_SETTING_PLANE_SPEED :Παράγοντας ταχύτητας αεροπλάνων: {STRING}
STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :Ορίζεται η σχετική ταχύτητα των αεροπλάνων συγκριτικά με τους άλλους τύπους οχημάτων, ώστε να μειώνεται το ποσό του εισοδήματος από μεταφορές με αεροσκάφη
STR_CONFIG_SETTING_PLANE_SPEED_VALUE :1 / {COMMA}
@@ -1444,8 +1445,12 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Χρώμα εδ
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Πράσινο
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Σκούρο πράσινο
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Βιολετί
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Ανάποδη μετακίνηση οθόνης: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Συμπεριφορά όταν κυλίεται ο χάρτης με το δεξί κουμπί του ποντικιού. Όταν είναι απενεργοποιημένη, το ποντίκι μετακινεί την κάμερα. Όταν είναι ενεργοποιημένη, το ποντίκι μετακινεί τον χάρτη
+STR_CONFIG_SETTING_SCROLLMODE :Συμπεριφορά κύλισης του παραθύρου εμφάνισης: {STRING}
+STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Συμπεριφορά κατά την κύλιση του χάρτη
+STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Μετακίνηση μικρού χάρτη με ΔΠΠ, θέση ποντικιού κλειδωμένη
+STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Μετακίνηση χάρτη με ΔΠΠ, θέση ποντικιού κλειδωμένη
+STR_CONFIG_SETTING_SCROLLMODE_RMB :Μετακίνηση χάρτη με ΔΠΠ
+STR_CONFIG_SETTING_SCROLLMODE_LMB :Μετακίνηση χάρτη με ΑΠΠ
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Ομαλή μετάβαση οθόνης: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Ελέγξτε τον τρόπο με τον οποίο η κύρια προβολή κυλίεται σε μια συγκεκριμένη θέση όταν πατάτε πάνω στον μικρό χάρτη ή όταν δίνετε εντολή για μετάβαση σε ένα συγκεκριμένο αντικείμενο στον χάρτη. Όταν είναι ενεργοποιημένη, η κύλιση γίνεται ομαλά, και όταν είναι απενεργοποιημένη μεταβαίνει απ' ευθείας στο επιλεγμένο σημείο
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Εμφάνιση εργαλείου μετρήσεως όταν χρησιμοποιούνται διάφορα εργαλεία: {STRING}
@@ -1477,8 +1482,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Κλι
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control+Κλικ
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Απενεργοποιημένος
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Μετάβαση με αριστερό κλικ: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Ενεργοποίηση της κύλισης του χάρτη σύροντας τον με το αριστερό κουμπί του ποντικιού. Αυτό είναι ιδιαίτερα χρήσιμο για την κύλιση όταν χρησιμοποιείται οθόνη αφής
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Κλείσιμο παραθύρου με δεξί-κλικ: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Κλείνει το παράθυρο με δεξί πάτημα μέσα του. Απενεργοποιεί την ανάδυση επεξηγήσεων με το δεξί κουμπί!
@@ -1504,7 +1507,7 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ενεργοπ
STR_CONFIG_SETTING_LOADING_INDICATORS :Χρήση δεικτών φόρτωσης: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Επιλέξτε εάν οι δείκτες φόρτωσης εμφανίζονται πάνω από τα οχήματα που φορτώνουν ή ξεφορτώνουν
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Εμφάνιση δρομολογίων σε στιγμές αντί για ημέρες: {STRING}
-STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Εμφάνιση χρόνων ταξιδιού στα χρονοδιαγράμματα σε χρόνο παιχνιδιού αντί σε ημέρες
+STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Εμφάνιση χρόνων ταξιδιού στα χρονοδιαγράμματα σε στιγμές αντί σε ημέρες
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Εμφάνιση αφίξεων και αναχωρήσεων στα δρομολόγια: {STRING}
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Εμφάνιση αναμενόμενης ώρας άφιξης και αναχώρησης στα χρονοδιαγράμματα
STR_CONFIG_SETTING_QUICKGOTO :Γρήγορη δημιουργία εντολών για τα οχήματα: {STRING}
@@ -1514,8 +1517,8 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Επιλογή
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Πρώτος διαθέσιμος
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Τελευταίος διαθέσιμος
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Περισσότερο χρησιμοποιούμενος
-STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Εμφάνιση δεσμέυσεων διαδρομών για γραμμές τραίνου: {STRING}
-STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Δίνεται ένα διαφορετικό χρώμα στις κατειλημμένες ράγες για να σας βοηθήσουν με προβλήματα όταν τα τραίνα αρνούνται να εισέλθουν σε τμήματα με βάση τροχιές
+STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Εμφάνιση δεσμέυσεων διαδρομών για γραμμές τρένου: {STRING}
+STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION_HELPTEXT :Δίνεται ένα διαφορετικό χρώμα στις κατειλημμένες ράγες για να σας βοηθήσουν με προβλήματα όταν τα τρένα αρνούνται να εισέλθουν σε τμήματα με βάση τροχιές
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Διατήρηση των οικοδομικών εργαλείων ενεργών μετά από χρήση τους: {STRING}
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Διατήρηση ανοικτών των εργαλείων για γέφυρες, σήραγγες, κλπ μετά από τη χρήση
STR_CONFIG_SETTING_EXPENSES_LAYOUT :Ομαδοποίηση εξόδων στο παράθυρο οικονομικών της εταιρίας: {STRING}
@@ -1541,7 +1544,7 @@ STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Παίζει τ
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Απενεργοποίηση των υποδομών για τα οχήματα που δεν είναι διαθέσιμα: {STRING}
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Όταν είναι ενεργοποιημένο, οι υποδομές είναι διαθέσιμες μόνο όταν υπάρχουν διαθέσιμα οχήματα, αποτρέποντας σπατάλη χρόνου και χρημάτων σε μη χρησιμοποιήσιμες υποδομές
STR_CONFIG_SETTING_MAX_TRAINS :Μέγιστος αριθμός τρένων ανά εταιρία: {STRING}
-STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Μέγιστος αριθμός τραίνων που μπορεί να έχει μια εταιρεία
+STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :Μέγιστος αριθμός τρένων που μπορεί να έχει μια εταιρεία
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Μέγιστος αριθμός οχημάτων δρόμου ανά εταιρία: {STRING}
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Μέγιστος αριθμός οδικών οχημάτων που μπορεί να έχει μια εταιρεία
STR_CONFIG_SETTING_MAX_AIRCRAFT :Μέγιστος αριθμός αεροσκαφών ανά εταιρία: {STRING}
@@ -1550,7 +1553,7 @@ STR_CONFIG_SETTING_MAX_SHIPS :Μέγιστο
STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :Μέγιστος αριθμός πλοίων που μπορεί να έχει μια εταιρεία
STR_CONFIG_SETTING_AI_BUILDS_TRAINS :Απενεργοποίηση τρένων για τον υπολογιστή: {STRING}
-STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Ενεργοποιώντας αυτήν τη ρύθμιση κάνει αδύνατη την κατασκευή τραίνων από παίκτη του υπολογιστή
+STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :Ενεργοποιώντας αυτήν τη ρύθμιση κάνει αδύνατη την κατασκευή τρένων από παίκτη του υπολογιστή
STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :Απενεργοποίηση οχημάτων υπολογιστή: {STRING}
STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :Ενεργοποιώντας αυτήν τη ρύθμιση κάνει αδύνατη την κατασκευή οδικών οχημάτων από παίκτη του υπολογιστή
STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :Απενεργοποίηση αεροσκαφών υπολογιστή: {STRING}
@@ -1571,8 +1574,8 @@ STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Μέγιστο
STR_CONFIG_SETTING_SERVINT_ISPERCENT :Τα διαστήματα μεταξύ συντήρησης είναι σε ποσοστά: {STRING}
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Επιλέξτε εάν η επισκευή των οχημάτων εξαρτάται από τον χρόνο που πέρασε από την τελευταία επισκευή ή από την μείωση της αξιοπιστίας κατά ένα συγκεκριμένο ποσοστό της μέγιστης αξιοπιστίας
-STR_CONFIG_SETTING_SERVINT_TRAINS :Προκαθορισμένο διάστημα μεταξύ επισκευών για τα τραίνα: {STRING}
-STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Ορίστε το προκαθορισμένο διάστημα μεταξύ συντηρήσεων για τα νέα οχήματα τραίνων, όταν δεν δίνεται άλλο διάστημα για το όχημα
+STR_CONFIG_SETTING_SERVINT_TRAINS :Προκαθορισμένο διάστημα μεταξύ επισκευών για τα τρένα: {STRING}
+STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Ορίστε το προκαθορισμένο διάστημα μεταξύ συντηρήσεων για τα νέα οχήματα τρένων, όταν δεν δίνεται άλλο διάστημα για το όχημα
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}ημέρ{P 0 α ες}/%
STR_CONFIG_SETTING_SERVINT_DISABLED :Απενεργοποιημένο
STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Προκαθορισμένο διάστημα μεταξύ συντηρήσεων για οδικά οχήματα: {STRING}
@@ -1584,7 +1587,7 @@ STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Ορίστε τ
STR_CONFIG_SETTING_NOSERVICE :Απενεργοποίηση επισκευών όταν οι καταρρεύσεις είναι απενεργοποιημένες: {STRING}
STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Όταν είναι ενεργοποιημένη, τα οχήματα δεν συντηρούνται όταν δεν είναι δυνατό να χαλάσουν
STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Ενεργοποίηση ορίων ταχύτητας βαγονιών: {STRING}
-STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Όταν είναι ενεργοποιημένο, χρησιμοποιούνται και τα όρια ταχύτητας των βαγονιών όταν αποφασίζεται η μέγιστη ταχύτητα ενός τραίνου
+STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :Όταν είναι ενεργοποιημένο, χρησιμοποιούνται και τα όρια ταχύτητας των βαγονιών όταν αποφασίζεται η μέγιστη ταχύτητα ενός τρένου
STR_CONFIG_SETTING_DISABLE_ELRAILS :Απενεργοποίηση ηλεκτρικών σιδηροτροχιών: {STRING}
STR_CONFIG_SETTING_DISABLE_ELRAILS_HELPTEXT :Ενεργοποιώντας αυτήν την ρύθμιση απενεργοποιείται η ανάγκη ηλεκτροδότησης των σιδηροτροχιών για να μπορέσουν σε αυτές να λειτουργήσουν οι ηλεκτρικές μηχανές
@@ -1802,13 +1805,13 @@ STR_CONFIG_SETTING_PATHFINDER_NPF :NPF
STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(Συνίσταται)
STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :Μέθοδος δρομολόγησης για τρένα: {STRING}
-STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Μέθοδος διαπίστωσης διαδρομής που χρησιμοποιείται για τα τραίνα
+STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :Μέθοδος διαπίστωσης διαδρομής που χρησιμοποιείται για τα τρένα
STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :Μέθοδος δρομολόγησης για οχήματα δρόμου: {STRING}
STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :Μέθοδος διαπίστωσης διαδρομής που χρησιμοποιείται για τα οδικά οχήματα
STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :Μέθοδος δρομολόγησης για πλοία: {STRING}
STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :Μέθοδος διαπίστωσης διαδρομής που χρησιμοποιείται για τα πλοία
STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :Αυτόματη αναστροφή σε σηματοδότες: {STRING}
-STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Επιτρέπεται στα τραίνα να αντιστραφούν σε σήμα, εάν περιμένουν εκεί για πολύ ώρα
+STR_CONFIG_SETTING_REVERSE_AT_SIGNALS_HELPTEXT :Επιτρέπεται στα τρένα να αντιστραφούν σε σήμα, εάν περιμένουν εκεί για πολύ ώρα
STR_CONFIG_SETTING_QUERY_CAPTION :{WHITE}Αλλαγή τιμής ρύθμισης
@@ -2392,6 +2395,7 @@ STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Υπόμ
STR_LINKGRAPH_LEGEND_ALL :{BLACK}Όλες
STR_LINKGRAPH_LEGEND_NONE :{BLACK}Καμία
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Επιλογή εταιριών για να εμφανιστούν
+STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP :{BLACK}{STRING}{}{COMPANY}
# Linkgraph legend window and linkgraph legend in smallmap
STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}μη χρησιμοποιημένο
@@ -2800,6 +2804,37 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Αρχι
STR_ABOUT_VERSION :{BLACK}Έκδοση OpenTTD{REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Η ομάδα του OpenTTD
+# Framerate display window
+STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Αριθμός στιγμών παιχνιδιού που προσομοιώνεται ανά δευτερόλεπτο.
+STR_FRAMERATE_SPEED_FACTOR :{WHITE}Παράγοντας ταχύτητας τρέχοντος παιχνιδιού: {DECIMAL}x
+STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Πόσο γρήγορα εκτελείται το παιχνίδι αυτήν τη στιγμή, σε σύγκριση με την αναμενόμενη ταχύτητα στον κανονικό ρυθμό εξομοίωσης.
+STR_FRAMERATE_CURRENT :{WHITE}Τρέχον
+STR_FRAMERATE_AVERAGE :{WHITE}Μέσο
+STR_FRAMERATE_DATA_POINTS :{WHITE}Τα δεδομένα βασίζονται σε μετρήσεις {COMMA}
+STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL}{WHITE} ms
+############ Leave those lines in this order!!
+STR_FRAMERATE_GL_ECONOMY :{WHITE} Διαχείριση φορτίου:
+STR_FRAMERATE_GL_TRAINS :Στιγμές τρένων:
+STR_FRAMERATE_GL_ROADVEHS :{WHITE} Στιγμές οχημάτων δρόμου:
+STR_FRAMERATE_GL_SHIPS :Στιγμές πλοίων:
+STR_FRAMERATE_GL_AIRCRAFT :Στιγμές αεροσκαφών:
+STR_FRAMERATE_GL_LANDSCAPE :Στιγμές κόσμου:
+STR_FRAMERATE_VIDEO :{WHITE}Έξοδος βίντεο:
+STR_FRAMERATE_SOUND :{WHITE}Μίξη ήχου:
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+STR_FRAMETIME_CAPTION_GL_ECONOMY :Διαχείριση φορτίου
+STR_FRAMETIME_CAPTION_GL_TRAINS :Στιγμές τρένων
+STR_FRAMETIME_CAPTION_GL_ROADVEHS :Στιγμές οχημάτων δρόμου
+STR_FRAMETIME_CAPTION_GL_SHIPS :Στιγμές πλοίων
+STR_FRAMETIME_CAPTION_GL_AIRCRAFT :Στιγμές αεροσκαφών
+STR_FRAMETIME_CAPTION_GL_LANDSCAPE :Στιγμές κόσμου
+STR_FRAMETIME_CAPTION_GL_LINKGRAPH :Καθυστέρηση γραφήματος συνδέσμου
+STR_FRAMETIME_CAPTION_VIDEO :Έξοδος βίντεο
+STR_FRAMETIME_CAPTION_SOUND :Μίξη ήχου
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Αποθήκευση Παιχνιδιού
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Φόρτωση Παιχνιδιού
@@ -3084,6 +3119,7 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Δώστ
STR_TOWN_DIRECTORY_CAPTION :{WHITE}Πόλεις
STR_TOWN_DIRECTORY_NONE :{ORANGE}- Τίποτα -
STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA})
+STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Πόλη){BLACK} ({COMMA})
STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Ονόματα πόλεων - πατήστε στο όνομα για να κεντράρετε την εικόνα στην πόλη. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία της πόλης
STR_TOWN_POPULATION :{BLACK}Παγκόσμιος πληθυσμός: {COMMA}
@@ -3091,8 +3127,7 @@ STR_TOWN_POPULATION :{BLACK}Παγκ
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Πόλη)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Πληθυσμός: {ORANGE}{COMMA}{BLACK} Σπίτια: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Επιβάτες τον προηγούμενο μήνα: {ORANGE}{COMMA}{BLACK} μεγ: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Αλληλογραφία τον προηγούμενο μήνα: {ORANGE}{COMMA}{BLACK} μεγ: {ORANGE}{COMMA}
+STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} προηγούμενος μήνας: {ORANGE}{COMMA}{BLACK} μέγιστο: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Εμπορεύματα που χρειάζονται για την επέκταση της πόλης:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} απαιτείται
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} απαιτείται τον χειμώνα
@@ -3293,7 +3328,7 @@ STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Έξοδ
STR_FINANCES_YEAR :{WHITE}{NUM}
STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Κατασκευές
STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Νέα Οχήματα
-STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Λειτουργικά Έξοδα Τραίνων
+STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Λειτουργικά Έξοδα Τρένων
STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Λειτουργικά Έξοδα Οχημάτων
STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Λειτουργικά Έξοδα Αεροσκαφών
STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Λειτουργικά Έξοδα Πλοίων
@@ -3605,7 +3640,7 @@ STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Κλων
STR_DEPOT_CLONE_SHIP :{BLACK}Κλωνοποίηση Πλοίου
STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Κλωνοποίηση Αεροσκάφους
-STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Αυτό θα αγοράσει ένα αντίγραφο του τρένου μαζί με τα όλα τα βαγόνια. Πατήστε αυτό το κουμπί και μετά σε κάποιο τραίνο μέσα ή έξω από το αμαξοστάσιο. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει η αγορά
+STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Αυτό θα αγοράσει ένα αντίγραφο του τρένου μαζί με τα όλα τα βαγόνια. Πατήστε αυτό το κουμπί και μετά σε κάποιο τρένο μέσα ή έξω από το αμαξοστάσιο. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει η αγορά
STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Αυτό θα αγοράσει ένα αντίγραφο του οχήματος. Πατήστε αυτό το κουμπί και μετά σε κάποιο όχημα μέσα ή έξω από το αμαξοστάσιο. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει η αγορά
STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Αυτό θα αγοράσει ένα αντίγραφο του πλοίου. Πατήστε αυτό το κουμπί και μετά σε κάποιο πλοίο μέσα ή έξω από το ναυπηγείο. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει η αγορά
STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Αυτό θα αγοράσει ένα αντίγραφο του αεροσκάφους. Πατήστε αυτό το κουμπί και μετά σε κάποιο αεροσκάφος μέσα στο ή έξω από το υπόστεγο. Με Ctrl+Κλικ θα έχει τις ίδιες εντολές. Με Shift+Κλικ εμφανίζεται το εκτιμώμενο κόστος χωρίς να γίνει η αγορά
@@ -4345,6 +4380,7 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... αυ
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... ο δρόμος βλέπει σε λάθος κατεύθυνση
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... οι μη τερματικοί σταθμοί δε μπορούν να έχουν στροφές
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... οι μη τερματικοί σταθμοί δε μπορούν να έχουν διασταυρώσεις
+STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... ο δρόμος είναι μονόδρομος η μπλοκαρισμένος
# Station destruction related errors
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Δεν μπορεί να αφαιρεθεί μέρος του σταθμού...
@@ -4549,7 +4585,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Ξεκι
# Specific vehicle errors
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Δεν μπορεί το τρένο να περάσει σήμα με κίνδυνο...
STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}Δεν αντιστρέφεται η κατεύθυνση του τρένου...
-STR_ERROR_TRAIN_START_NO_POWER :Το τραίνο δεν έχει ενέργεια
+STR_ERROR_TRAIN_START_NO_POWER :Το τρένο δεν έχει ενέργεια
STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}Δεν γίνεται να αλλάξει πορεία το όχημα...
@@ -4596,6 +4632,8 @@ STR_BASESOUNDS_DOS_DESCRIPTION :Αρχικοί
STR_BASESOUNDS_WIN_DESCRIPTION :Αρχικοί ήχοι από το Transport Tycoon Deluxe έκδοση Windows.
STR_BASESOUNDS_NONE_DESCRIPTION :Ένα πάκετο ήχων χώρις ήχους.
STR_BASEMUSIC_WIN_DESCRIPTION :Αρχική μουσική από το Transport Tycoon Deluxe έκδοση Windows.
+STR_BASEMUSIC_DOS_DESCRIPTION :Αρχική μουσική από το Transport Tycoon Deluxe έκδοση DOS.
+STR_BASEMUSIC_TTO_DESCRIPTION :Αρχική μουσική από το Transport Tycoon (Αρχικός Επεξεργαστής Κόσμου) έκδοση DOS.
STR_BASEMUSIC_NONE_DESCRIPTION :Ένα πάκετο μουσικής χωρίς πραγματική μουσική.
##id 0x2000
diff --git a/src/lang/hebrew.txt b/src/lang/hebrew.txt
index 90ed5ccc55..cc36dab80e 100644
--- a/src/lang/hebrew.txt
+++ b/src/lang/hebrew.txt
@@ -683,10 +683,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}(בחר
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}עירבוב תוכניות פועל/כבוי
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}הצג את חלון בחירת המנגינה
-STR_ERROR_NO_SONGS :{WHITE}נבחרה ערכת מוזיקה ללא שירים. לא יושמעו שירים
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}בחירת תכנית מנגינה
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}רשימת רצועות
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}תוכנית- '{STRING}'
@@ -1351,8 +1348,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :צבע פני
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :ירוק
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :ירוק כהה
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :סגול
-STR_CONFIG_SETTING_REVERSE_SCROLLING :{STRING} :היפוך כיוון הגלילה של התצוגה
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :התנהגות בעת גלילת המפה באמצעות כפתור העכבר האמצעי. כאשר מבוטל, העכבר מזיז את המצלמה. כאשר מאופשר, העכבר מזיז את המפה
STR_CONFIG_SETTING_SMOOTH_SCROLLING :{STRING} :גלילה חלקה של התצוגה המשנית
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :שלוט כיצד התצוגה הראשית נגללת למיקום מסוים כאשר מקליקים על המפה הקטנה אן כאשר נותנים הוראה לגלול לעצם מסוים על גבי המפה. אם מאופשר, חלון התצוגה נגלל באופן חלק, אם מבוטל הוא מוקפץ ישירות אל נקודת המטרה
STR_CONFIG_SETTING_MEASURE_TOOLTIP :{STRING} :'הצג מידות בעת בניית כבישים/מסילות וכיוב
@@ -1384,8 +1379,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command-click
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control-click
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :כבוי
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :גלילה בלחיצה שמאלית: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :אפשר גלילת המפה באמצעות גרירתה עם כפתור העכבר השמאלי. אפשרות זו שימושית במיוחד בעת שימוש במסך מגע לצורך גלילה
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :סגירת חלון בכפתור ימני: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :סוגר חלון על-ידי לחיצה ימנית בתוכו. מבטל הצגת מידע בלחיצה ימנית!
@@ -2707,6 +2700,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}כל ה
STR_ABOUT_VERSION :{BLACK}{REV} גירסה , OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 The OpenTTD team
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}שמור משחק
STR_SAVELOAD_LOAD_CAPTION :{WHITE}טען משחק
@@ -2998,8 +2998,6 @@ STR_TOWN_POPULATION :{BLACK}אוכל
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (עיר)
STR_TOWN_VIEW_POPULATION_HOUSES :{ORANGE}{1:COMMA}{BLACK} :בתים {ORANGE}{0:COMMA}{BLACK} :אוכלוסיה
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{ORANGE}{1:COMMA}{BLACK} :מספר מירבי {ORANGE}{0:COMMA}{BLACK} :נוסעים בחודש שעבר
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{ORANGE}{1:COMMA}{BLACK} :מספר מירבי {ORANGE}{0:COMMA}{BLACK} :שקי דואר בחודש שעבר
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}המטען שצריך בשביל גידול עיר
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} דרוש
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} דרוש בחורף
diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt
index 99dbfb82c8..886b2def52 100644
--- a/src/lang/hungarian.txt
+++ b/src/lang/hungarian.txt
@@ -732,10 +732,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}A 'Sajá
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Véletlen sorrendű lejátszás be/ki
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}A számkiválasztó ablak megjelenítése
-STR_ERROR_NO_SONGS :{WHITE}Egy zeneszámokat nem tartalmazó zenei alapcsomag lett kiválasztva. A játékban nem lesz zene
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Zenei műsor kiválasztása
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Számlista
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}"{STRING}" Műsora
@@ -1401,8 +1398,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Talaj színe a
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Zöld
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Sötétzöld
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Sötétkék
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Inverz görgetési irány: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :A térkép jobb gombbal történő görgetésének viselkedése. Kikapcsolva az egér mozgatja a kamerát. Bekapcsolva az egér a térképet mozgatja
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Finomított nézőpont-görgetés: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Beállítható, hogy a fő nézet hogyan mozogjon egy adott pozícióra a térképre kattintáskor ha egy adott objektumra történik mozgás. Bekapcsolva a nézet egyenletesen mozog, kikapcsolva közvetlenül a kijelölt helyre ugrik
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Területinformációk mutatása építési eszközök használatakor: {STRING}
@@ -1434,8 +1429,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Parancs+Kattint
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+kattintás
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Kikapcsolva
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Bal gombos térképmozgatás: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Bal egérgombbal történő térképmozgatás engedélyezése. Különösen hasznos érintőképernyős mozgatás használata esetén
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Ablakok bezárása jobb gombbal: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :A jobb gombbal való kattintás az ablak területén bezárja az ablakot. Ez a beállítás kikapcsolja a segédletek jobb gombbal való megjelenítését!
@@ -2757,6 +2750,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Eredeti
STR_ABOUT_VERSION :{BLACK}OpenTTD {REV} verzió
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 Az OpenTTD csapat
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Játék mentése
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Játék betöltése
@@ -3048,8 +3048,6 @@ STR_TOWN_POPULATION :{BLACK}Világn
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Város)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Lakosság: {ORANGE}{COMMA}{BLACK} Házak: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Utasok az előző hónapban: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Levélcsomagok az előző hónapban: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}A város növekedéséhez szükséges rakomány:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} szükséges
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} szükséges télen
diff --git a/src/lang/icelandic.txt b/src/lang/icelandic.txt
index 77e9c09660..6d8a4bae6c 100644
--- a/src/lang/icelandic.txt
+++ b/src/lang/icelandic.txt
@@ -647,10 +647,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Velja 'S
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Kveikja/slökkva á stokkun
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Sýna lagalista
-STR_ERROR_NO_SONGS :{WHITE}Tómur lagalisti hefur verið valinn. Engin lög verða spiluð
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Lagalistar
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Laganúmer
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Listi - '{STRING}'
@@ -1273,8 +1270,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Litur á landsl
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Grænn
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Dökkgrænn
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Fjólublátt
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Færa sjónarhorn í öfuga átt miðað við mús: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Hegðun þegar sjónarhornið er fært með hægri músartakkanum. Þegar stillingin er óvirk færir músin myndavélina. Þegar stillingin er virk færir músin sjónarhornið
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Mjúkt skrun í skjágluggum: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Stýrir hvernig aðalsjónarhornið færist á ákveðna staði þegar smellt er á þá á litla kortinu eða þegar ákveðinn hlutur er valin á kortinu. Ef stillingin er virk færist aðalsjónarhornið rólega, ef stillingin er óvirk fer aðalsjónarhornið beint á ákveðna staðinn
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Sýna mælingar þegar verið er að byggja og breyta landslagi: {STRING}
@@ -1306,8 +1301,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+smella
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+smella
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Af
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Skrun með hægri músarhnappi: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Virkja að hægt sé að færa sjónarhornið með því að færa það með vinstri músar takkanum. Þetta er sérstaklega gott þegar notast er við snerti-skjá til að færa sjónarhornið
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Nota dagsetningar á {STRING} formi fyrir vistaða leiki.
@@ -2538,6 +2531,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Upphafle
STR_ABOUT_VERSION :{BLACK}OpenTTD útgáfa {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 OpenTTD hópurinn
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Vista leik
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Opna leik
@@ -2808,8 +2808,6 @@ STR_TOWN_POPULATION :{BLACK}Heildar
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Borg)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Íbúafjöldi: {ORANGE}{COMMA}{BLACK} Hús: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Farþegar síðasta mánaðar: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Póstur síðasta mánaðar: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Nauðsynlegur farmur fyrir stækkun bæjarins:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} nauðsynlegt
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} nauðsynlegt á veturnar
diff --git a/src/lang/indonesian.txt b/src/lang/indonesian.txt
index 36ead125af..f3300c711f 100644
--- a/src/lang/indonesian.txt
+++ b/src/lang/indonesian.txt
@@ -669,10 +669,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Pilih 'B
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Acak/Urut program
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Tampilkan jendela pemilihan judul musik
-STR_ERROR_NO_SONGS :{WHITE}Set Musik tanpa lagu telah dipilih. Tidak ada lagu yang akan dimainkan.
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Pilihan program Musik
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Daftar rel
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}'
@@ -1337,8 +1334,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Warna daratan d
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Hijau
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Hijau Gelap
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violet
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Berbalik Arah: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Untuk menggeser peta berlawanan arah dengan klik kanan. Ketika dimatikan, mouse menggeser kamera. Ketika dinyalakan, mouse menggeser peta
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Pergeseran pandangan viewport secara halus: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Menyetel bagaimana tampilan utama menggeser posisi di peta kecil. Jika dinyalakan, peta akan bergeser secara halus. Jika dimatikan, peta langsung menuju tempat yang di klik
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Tampilkan ukuran ketika menggunakan alat pembangun: {STRING}
@@ -1370,8 +1365,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Perintah-klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Kontrol-klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Non-aktifkan
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Geser dgn klik-kiri: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Aktifkan penggeseran peta dengan menyeret menggunakan tombol kiri mouse. Hal ini sangat berguna apabila menggunakan layar sentuh.
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Tutup jendela dengan klik kanan: {STRING}
STR_CONFIG_SETTING_AUTOSAVE :Simpan otomatis: {STRING}
@@ -2691,6 +2684,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Hak Cipt
STR_ABOUT_VERSION :{BLACK}OpenTTD versi {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Tim OpenTTD
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Simpan Permainan
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Buka Permainan
@@ -2978,8 +2978,6 @@ STR_TOWN_POPULATION :{BLACK}Populasi
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (City)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Populasi: {ORANGE}{COMMA}{BLACK} Rumah: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Penumpang bulan lalu: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Surat bulan lalu: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Kargo untuk pertumbuhan kota:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED} Butuh {ORANGE}{STRING}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} dibutuhkan saat musim dingin
diff --git a/src/lang/irish.txt b/src/lang/irish.txt
index 6c2cb21375..47f1e7e981 100644
--- a/src/lang/irish.txt
+++ b/src/lang/irish.txt
@@ -669,10 +669,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Roghnaig
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Scoránaigh ord randamach clár air/as
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Taispeáin an fhuinneogh chun rianta ceoil a roghnú
-STR_ERROR_NO_SONGS :{WHITE}Roghnaíodh sraith ceoil gan aon amhrán ann. Ní sheinnfear aon amhrán
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Clár Ceoil a Roghnú
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Innéacs na Rianta
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Clár - '{STRING}'
@@ -1337,8 +1334,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Dath an tír-ra
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Uaine
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Ciaruaine
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Corcairghorm
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Aisiompaigh an treo scrollaithe: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :An méid a tharlaíonn agus an léarscáil á scrollú leis an gcnaipe luchóige deas. Má bhíonn sé díchumasaithe, bogann an luchóg leis an gceamara. Má bhíonn sé cumasaithe, bogann an luchóg an léarscáil
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Scrollú mín do na fuinneoga amhairc: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Roghnaigh an chaoi a scrollóidh an príomhamharc chuig suíomh ar leith má chliceálann tú ar an léarscáil bheag nó má thugann tú ordú scrollú chuig oibiacht ar leith ar an léarscáil. Má tá sé cumasaithe, scrollóidh an fhuinneog amhairc go mín, má tá sé díchumasaithe léimfidh sé go díreach chuig an suíomh sin.
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Taispeáin leid uirlise tomhais agu uirlisí tógála áirithe in úsáid: {STRING}
@@ -1370,8 +1365,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Ordú+Cliceáil
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Cliceáil
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :As
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Scrollú le cléchliceáil: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Cumasaigh scrollú an léarscáil trí bheith ag tarraingt le cnaipe clé na luiche. Tá sé seo thar a bheith úsáideach don scrollú nuair atá scáileán tadhaill á úsáid
STR_CONFIG_SETTING_AUTOSAVE :Uathshábháil: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Roghnaigh an t-eatramh idir uathshábhálacha cluichí
@@ -2689,6 +2682,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Cóipche
STR_ABOUT_VERSION :{BLACK}OpenTTD leagan {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 An fhoireann OpenTTD
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sábháil an Cluiche
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Lódáil Cluiche
@@ -2980,8 +2980,6 @@ STR_TOWN_POPULATION :{BLACK}Daonra d
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Cathair)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Daonra: {ORANGE}{COMMA}{BLACK} Tithe: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Paisinéirí an mhí seo caite: {ORANGE}{COMMA}{BLACK} Uasmhéid: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post an mhí seo caite: {ORANGE}{COMMA}{BLACK} uasmhéid: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Lastas atá ag teastáil le go bhfásfaidh an baile:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} ag teastáil
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} ag teastáil sa Gheimhreadh
diff --git a/src/lang/italian.txt b/src/lang/italian.txt
index e2d5ffa49a..1ffafdcd76 100644
--- a/src/lang/italian.txt
+++ b/src/lang/italian.txt
@@ -477,6 +477,7 @@ STR_ABOUT_MENU_SCREENSHOT :Screenshot
STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Screenshot con zoom massimo
STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Screenshot con zoom predefinito
STR_ABOUT_MENU_GIANT_SCREENSHOT :Screenshot intera mappa
+STR_ABOUT_MENU_SHOW_FRAMERATE :Mostra frame rate
STR_ABOUT_MENU_ABOUT_OPENTTD :Informazioni su 'OpenTTD'
STR_ABOUT_MENU_SPRITE_ALIGNER :Strumento allineamento sprite
STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Attiva/disattiva bounding box
@@ -652,6 +653,7 @@ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLA
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
+STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT}{DKGREEN}Musica non disponibile
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}"
STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Brano
STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Titolo
@@ -671,15 +673,15 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selezion
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Attiva/disattiva la riproduzione in ordine casuale
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Mostra la finestra di selezione dei brani musicali
-STR_ERROR_NO_SONGS :{WHITE}È stato selezionato un pacchetto musicale senza brani. Non sarà possibile avviare la musica.
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Selezione programma musicale
+STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}Programma musicale - '{STRING}'
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Indice brani
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programma - '{STRING}'
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Elimina
+STR_PLAYLIST_CHANGE_SET :{BLACK}Cambia pacchetto
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Elimina il programma corrente (solo Personale1 e Personale2)
+STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Seleziona un altro pacchetto musicale installato
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Fare clic su un brano per aggiungerlo al programma corrente (solo Personale1 o Personale2)
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Fare clic su un brano per rimuoverlo dal programma corrente (solo Personale1 o Personale2)
@@ -882,9 +884,9 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLAC
# Extra view window
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Mini visuale {COMMA}
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copia nella mini visuale
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Cambia mini visuale
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copia la posizione della visuale principale in questa mini visuale
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Copia dalla mini visuale
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Cambia vis. principale
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Copia la posizione di questa mini visuale nella visuale principale
# Game options window
@@ -1361,8 +1363,12 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Colore del terr
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verde
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Verde scuro
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Viola
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Inverti direzione di scorrimento della mappa: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Comportamento dello scorrimento della mappa con il tasto destro del mouse. Se disabilitata, il mouse muove l'inquadratura. Se abilitata, il mouse muove la mappa
+STR_CONFIG_SETTING_SCROLLMODE :Scorrimento delle visuali: {STRING}
+STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Comportamento dello scorrimento della mappa
+STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Muovi visuale col pulsante destro, puntatore bloccato
+STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Muovi mappa col pulsante destro, puntatore bloccato
+STR_CONFIG_SETTING_SCROLLMODE_RMB :Muovi mappa col pulsante destro
+STR_CONFIG_SETTING_SCROLLMODE_LMB :Muovi mappa col pulsante sinistro
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Scorrimento morbido delle visuali: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controlla il modo in cui la visuale principale scorre verso una specifica posizione quando si fa clic sulla minimappa o si ordina di visualizzare un oggetto specifico sulla mappa. Se abilitata, la visuale scorre in modo morbido. Se disabilitata, salta direttamente al punto prescelto
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Mostra un tooltip di misura durante la costruzione: {STRING}
@@ -1394,8 +1400,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :COMANDO+clic
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :CTRL+clic
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Nessuna
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Scorrimento con clic sinistro: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Abilita lo scorrimento della mappa trascinandola con il pulsante sinistro del mouse. Questa impostazione è utile quando si utilizza un touch-screen
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Chiudi finestra con clic destro: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Consente di chiudere una finestra facendo clic col pulsante destro al suo interno. Disabilita i suggerimenti attivati al clic col pulsante destro!
@@ -2311,6 +2315,7 @@ STR_LINKGRAPH_LEGEND_NONE :{BLACK}Nessuno
STR_LINKGRAPH_LEGEND_NONE.ms :{BLACK}Nessuno
STR_LINKGRAPH_LEGEND_NONE.fs :{BLACK}Nessuna
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Seleziona le compagnie da mostrare
+STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP :{BLACK}{STRING}{}{COMPANY}
# Linkgraph legend window and linkgraph legend in smallmap
STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}inutilizzata
@@ -2723,6 +2728,56 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyrigh
STR_ABOUT_VERSION :{BLACK}OpenTTD versione {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Il team OpenTTD
+# Framerate display window
+STR_FRAMERATE_CAPTION :{WHITE}Frame rate
+STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x)
+STR_FRAMERATE_RATE_GAMELOOP :{WHITE}Velocità simulazione: {STRING}
+STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Numero di cicli di simulazione della partita in un secondo
+STR_FRAMERATE_RATE_BLITTER :{WHITE}Frame rate grafica: {STRING}
+STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Numero di fotogrammi video renderizzati in un secondo
+STR_FRAMERATE_SPEED_FACTOR :{WHITE}Fattore di velocità corrente della partita: {DECIMAL}x
+STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Prestazioni correnti della partita, confrontate con le prestazioni attese alla velocità di giorno normale.
+STR_FRAMERATE_CURRENT :{WHITE}Corrente
+STR_FRAMERATE_AVERAGE :{WHITE}Media
+STR_FRAMERATE_DATA_POINTS :{WHITE}Dati basati su {COMMA} misurazioni
+STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL}{WHITE} ms
+STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL}{WHITE} ms
+STR_FRAMERATE_MS_BAD :{RED}{DECIMAL}{WHITE} ms
+STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL}{WHITE} frame/s
+STR_FRAMERATE_FPS_WARN :{YELLOW}{DECIMAL}{WHITE} frame/s
+STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL}{WHITE} frame/s
+STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COMMA} ms
+STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} s
+############ Leave those lines in this order!!
+STR_FRAMERATE_GAMELOOP :{WHITE}Totale ciclo simulazione:
+STR_FRAMERATE_GL_ECONOMY :{WHITE} Gestione carichi:
+STR_FRAMERATE_GL_TRAINS :{WHITE} Aggiornamento treni:
+STR_FRAMERATE_GL_ROADVEHS :{WHITE} Aggiornamento automezzi:
+STR_FRAMERATE_GL_SHIPS :{WHITE} Aggiornamento navi:
+STR_FRAMERATE_GL_AIRCRAFT :{WHITE} Aggiornamento aeromobili:
+STR_FRAMERATE_GL_LANDSCAPE :{WHITE} Aggiornamento mondo:
+STR_FRAMERATE_GL_LINKGRAPH :{WHITE} Ritardo grafo di distribuzione:
+STR_FRAMERATE_DRAWING :{WHITE}Renderizzazione grafica:
+STR_FRAMERATE_DRAWING_VIEWPORTS :{WHITE} Visuali mondo:
+STR_FRAMERATE_VIDEO :{WHITE}Output video:
+STR_FRAMERATE_SOUND :{WHITE}Missaggio suoni:
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+STR_FRAMETIME_CAPTION_GAMELOOP :Ciclo simulazione
+STR_FRAMETIME_CAPTION_GL_ECONOMY :Gestione carichi
+STR_FRAMETIME_CAPTION_GL_TRAINS :Aggiornamento treni
+STR_FRAMETIME_CAPTION_GL_ROADVEHS :Aggiornamento automezzi
+STR_FRAMETIME_CAPTION_GL_SHIPS :Aggiornamento navi
+STR_FRAMETIME_CAPTION_GL_AIRCRAFT :Aggiornamento aeromobili
+STR_FRAMETIME_CAPTION_GL_LANDSCAPE :Aggiornamento mondo
+STR_FRAMETIME_CAPTION_GL_LINKGRAPH :Ritardo grafo di distribuzione
+STR_FRAMETIME_CAPTION_DRAWING :Renderizzazione grafica
+STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Renderizzazione visuali mondo
+STR_FRAMETIME_CAPTION_VIDEO :Output video
+STR_FRAMETIME_CAPTION_SOUND :Missaggio suoni
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salva partita
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Carica partita
@@ -3007,6 +3062,7 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Inserire
STR_TOWN_DIRECTORY_CAPTION :{WHITE}Città
STR_TOWN_DIRECTORY_NONE :{ORANGE}- Nessuna -
STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA})
+STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Metropoli){BLACK} ({COMMA})
STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Nomi delle città - fare clic su un nome per centrare la visuale principale sulla città. CTRL+clic la mostra in una mini visuale.
STR_TOWN_POPULATION :{BLACK}Popolazione mondiale: {COMMA}
@@ -3014,8 +3070,7 @@ STR_TOWN_POPULATION :{BLACK}Popolazi
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Metropoli)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Popolazione: {ORANGE}{COMMA}{BLACK} Case: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passeggeri il mese scorso: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Posta il mese scorso: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
+STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} il mese scorso: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Carichi richiesti per la crescita della città:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} richiest{G 0 o o a}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} richiest{G 0 o o a} in inverno
@@ -4262,6 +4317,7 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... ques
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... strada rivolta nella direzione sbagliata
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... le fermate passanti non possono trovarsi in curva
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... le fermate passanti non possono avere raccordi
+STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... la strada è bloccata o a senso unico
# Station destruction related errors
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Impossibile rimuovere parte della stazione...
@@ -4513,6 +4569,8 @@ STR_BASESOUNDS_DOS_DESCRIPTION :Suoni originali
STR_BASESOUNDS_WIN_DESCRIPTION :Suoni originali di Transport Tycoon Deluxe, edizione Windows.
STR_BASESOUNDS_NONE_DESCRIPTION :Un pacchetto sonoro non contenente alcun suono.
STR_BASEMUSIC_WIN_DESCRIPTION :Musica originale di Transport Tycoon Deluxe, edizione Windows.
+STR_BASEMUSIC_DOS_DESCRIPTION :Musica originale di Transport Tycoon Deluxe, edizione DOS.
+STR_BASEMUSIC_TTO_DESCRIPTION :Musica originale di Transport Tycoon (edizione Original/World).
STR_BASEMUSIC_NONE_DESCRIPTION :Un pacchetto musicale non contenente alcuna musica.
##id 0x2000
diff --git a/src/lang/japanese.txt b/src/lang/japanese.txt
index 8e7f0c486d..8c3af735f4 100644
--- a/src/lang/japanese.txt
+++ b/src/lang/japanese.txt
@@ -669,10 +669,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}プレ
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}プレイリストのシャッフルの有効/無効を切り替えます
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}曲選択のウィンドウを表示します
-STR_ERROR_NO_SONGS :{WHITE}選択した音楽セットに曲がありません
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}プレイリストの選択
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}楽曲索引
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}プレイリスト - '{STRING}'
@@ -1337,8 +1334,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :ミニマップ
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :緑
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :濃緑
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :青紫
-STR_CONFIG_SETTING_REVERSE_SCROLLING :スクロール方面を反転: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :マウス右ボタンで地図をスクロールする時の挙動を設定します。無効にした場合はマウスはカメラを動かします(マウスの移動方向に移動します)。有効にした場合は地図を動かします(マウスの移動方向と逆に移動します)
STR_CONFIG_SETTING_SMOOTH_SCROLLING :画面のスムーズスクロール: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :ミニマップでの移動や「現在位置に移動」などのコマンドを使用した際にメイン画面がどのように移動するかを設定します。有効にした場合はスムーズにスクロールして移動します。無効の場合は目的地に直接ジャンプします
STR_CONFIG_SETTING_MEASURE_TOOLTIP :測定ツールチップ表示: {STRING}
@@ -1370,8 +1365,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :コマンド+
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+クリック (Win)
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :切
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :左ドラッグスクロール: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :有効にすると左ドラッグでマップのスクロールができるようになります。特にタッチスクリーンを利用しているときに便利です
STR_CONFIG_SETTING_AUTOSAVE :オートセーブ: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :オートセーブの間隔を設定します
@@ -2690,6 +2683,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}オリ
STR_ABOUT_VERSION :{BLACK}OpenTTD バージョン {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 The OpenTTD team
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}ゲームを保存
STR_SAVELOAD_LOAD_CAPTION :{WHITE}ゲームを開く
@@ -2981,8 +2981,6 @@ STR_TOWN_POPULATION :{BLACK}地域
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN}(市)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}人口: {ORANGE}{COMMA}人{BLACK} 建物: {ORANGE}{COMMA}戸
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}旅客数(先月): {ORANGE}{COMMA}人{BLACK} 最大: {ORANGE}{COMMA}人
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}郵便袋(先月): {ORANGE}{COMMA}袋{BLACK} 最大: {ORANGE}{COMMA}袋
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}街の成長に必要な物資:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}が{RED}必要です
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}が{BLACK}冬に必要です
diff --git a/src/lang/korean.txt b/src/lang/korean.txt
index b6dc29a099..8eb6dca1de 100644
--- a/src/lang/korean.txt
+++ b/src/lang/korean.txt
@@ -651,6 +651,7 @@ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLA
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
+STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT}{DKGREEN}사용 가능한 음악 없음
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}"
STR_MUSIC_TRACK :{TINY_FONT}{BLACK}트랙
STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}제목
@@ -670,15 +671,15 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}'사용
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}프로그램을 무작위 재생합니다.
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}배경 음악 트랙을 선택할 수 있는 창을 엽니다.
-STR_ERROR_NO_SONGS :{WHITE}선택된 배경 음악 목록에 노래가 없습니다. 배경 음악이 재생 되지 않을 것입니다.
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}배경 음악 프로그램 선택
+STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}음악 프로그램 - '{STRING}'
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}음악 목록
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}프로그램 - '{STRING}'
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}초기화
+STR_PLAYLIST_CHANGE_SET :{BLACK}세트 변경
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}현재 배경 음악 프로그램을 초기화합니다. (사용자1, 사용자2에서만 선택 가능)
+STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}배경 음악 세트를 이미 설치된 다른 세트로 변경합니다.
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}배경 음악 목록에 음악을 추가하려면 클릭하세요. (사용자1, 사용자2에서만 사용 가능)
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}배경 음악 목록에서 음악을 제거하려면 클릭하세요. (사용자1, 사용자2에서만 사용 가능)
@@ -881,7 +882,7 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLAC
# Extra view window
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}외부 화면 {COMMA}
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}외부 화면에 복사
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}외부 화면으로 복사
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}현재 장소를 외부 화면에 복사합니다.
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}이 장소로 이동
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}외부 화면에 저장된 장소로 이동합니다.
@@ -1338,8 +1339,12 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :소형지도
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :녹색
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :어두운 녹색
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :보라색
-STR_CONFIG_SETTING_REVERSE_SCROLLING :스크롤 방향 뒤집기: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :마우스 오른쪽 클릭으로 지도를 스크롤하는 방법을 선택합니다. 이 설정을을 끄면, 마우스 방향과 화면의 스크롤 방향이 같아집니다. 설정을 켜면, 마우스 방향과 화면의 스크롤 방향이 반대가 됩니다.
+STR_CONFIG_SETTING_SCROLLMODE :외부 화면 스크롤 행동: {STRING}
+STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :지도를 스크롤 할 때의 행동을 선택합니다.
+STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :마우스 오른쪽 클릭으로 외부 화면 이동 (마우스 위치는 고정)
+STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :마우스 오른쪽 클릭으로 지도 이동 (마우스 위치는 고정)
+STR_CONFIG_SETTING_SCROLLMODE_RMB :마우스 오른쪽 클릭으로 지도 이동
+STR_CONFIG_SETTING_SCROLLMODE_LMB :마우스 왼쪽 클릭으로 지도 이동
STR_CONFIG_SETTING_SMOOTH_SCROLLING :게임 화면을 이동시킬 때 부드럽게 이동: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :소형 지도를 클릭하여 특정 지역으로 스크롤되거나 지도 상의 특정 장소로 이동하는 경우에 주 화면이 어떻게 스크롤 되는지를 설정합니다. 이 설정을 켜면, 화면이 목표 지점까지 부드럽게 이동하고, 설정을 끄면 목표 지점으로 곧바로 넘어가게 됩니다.
STR_CONFIG_SETTING_MEASURE_TOOLTIP :건설도구 사용시 거리 도움말 표시: {STRING}
@@ -1352,7 +1357,7 @@ STR_CONFIG_SETTING_LIVERIES_ALL :모든 회사
STR_CONFIG_SETTING_PREFER_TEAMCHAT :엔터(ENTER) 키로 같은 팀끼리 채팅: {STRING}
STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :이 설정을 켜면, 멀티 플레이시 같은 회사 간의 채팅을 키 대신 키로 할 수 있게 됩니다.
STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :마우스 휠 동작: {STRING}
-STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :상하좌우로 회전 가능한 마우스 휠(2차원 마우스휠)로 지도를 스크롤할 수 있게 허용합니다.
+STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :상하좌우로 회전 가능한 마우스 휠(2차원 마우스 휠)로 지도를 스크롤할 수 있게 허용합니다.
STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :화면 확대/축소
STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :지도 스크롤
STR_CONFIG_SETTING_SCROLLWHEEL_OFF :끄기
@@ -1371,8 +1376,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :커맨드 + 클
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :CTRL + 클릭
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :끄기
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :마우스 왼쪽 버튼으로 스크롤: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :왼쪽 마우스 버튼을 드래그하여 지도를 스크롤 할 수 있도록 합니다. 터치 스크린 환경에서 이 설정을 켜면 매우 유용합니다.
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :오른쪽 클릭으로 창 닫기: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :창 내부를 오른쪽 클릭하여 창을 닫습니다. 오른쪽 클릭으로 도움말 표시 설정을 해제해야 합니다!
@@ -2286,6 +2289,7 @@ STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}화물
STR_LINKGRAPH_LEGEND_ALL :{BLACK}모두
STR_LINKGRAPH_LEGEND_NONE :{BLACK}없음
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}표시할 회사를 선택하십시오
+STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP :{BLACK}{STRING}{}{COMPANY}
# Linkgraph legend window and linkgraph legend in smallmap
STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}이용 없음
@@ -2694,6 +2698,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original
STR_ABOUT_VERSION :{BLACK}OpenTTD 버전 {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD 개발팀
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}게임 저장
STR_SAVELOAD_LOAD_CAPTION :{WHITE}게임 불러오기
@@ -2978,6 +2989,7 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}팻말
STR_TOWN_DIRECTORY_CAPTION :{WHITE}도시 목록
STR_TOWN_DIRECTORY_NONE :{ORANGE}(없음)
STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA})
+STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (대도시){BLACK} ({COMMA})
STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}도시 이름 - 이 도시로 시점을 변경하려면 클릭하세요. CTRL+클릭하면 이 도시 위치를 기준으로 새로운 외부 화면을 엽니다.
STR_TOWN_POPULATION :{BLACK}총 인구 수: {COMMA}
@@ -2985,8 +2997,7 @@ STR_TOWN_POPULATION :{BLACK}총 인
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (대도시)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}인구: {ORANGE}{COMMA}{BLACK} 가구수: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}지난 달 승객 수: {ORANGE}{COMMA}{BLACK} 최대: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}지난달 우편수: {ORANGE}{COMMA}{BLACK} 최고: {ORANGE}{COMMA}
+STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} 지난 달: {ORANGE}{COMMA}{BLACK} 최대: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}도시가 성장하기 위해 필요한 화물:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED}{G 0 "이" "가"} 필요함
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :겨울에는 {ORANGE}{STRING}{BLACK}{G 0 "이" "가"} 필요함
@@ -4233,6 +4244,7 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... 여
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... 도로의 방향과 일치하지 않습니다.
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... 도로 통과 정류장은 곡선도로에 건설할 수 없습니다.
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... 도로 통과 정류장은 교차로에 건설할 수 없습니다.
+STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... 도로가 일방통행이거나 막혔습니다
# Station destruction related errors
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}역의 일부를 제거할 수 없습니다...
@@ -4480,10 +4492,12 @@ STR_DESKTOP_SHORTCUT_COMMENT :트랜스포트
STR_BASEGRAPHICS_DOS_DESCRIPTION :오리지널 트랜스포트 타이쿤 디럭스 도스 에디션의 그래픽입니다.
STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :오리지널 트랜스포트 타이쿤 디럭스 도스 에디션(독일)의 그래픽입니다.
STR_BASEGRAPHICS_WIN_DESCRIPTION :오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 그래픽입니다.
-STR_BASESOUNDS_DOS_DESCRIPTION :오리지널 트랜스포트 타이쿤 도스 에디션의 효과음입니다.
+STR_BASESOUNDS_DOS_DESCRIPTION :오리지널 트랜스포트 타이쿤 디럭스 도스 에디션의 효과음입니다.
STR_BASESOUNDS_WIN_DESCRIPTION :오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 효과음입니다.
STR_BASESOUNDS_NONE_DESCRIPTION :아무런 효과음도 없는 효과음 팩입니다.
STR_BASEMUSIC_WIN_DESCRIPTION :오리지널 트랜스포트 타이쿤 디럭스 윈도 에디션의 음악입니다.
+STR_BASEMUSIC_DOS_DESCRIPTION :오리지널 트랜스포트 타이쿤 디럭스 DOS 에디션의 음악입니다.
+STR_BASEMUSIC_TTO_DESCRIPTION :오리지널 트랜스포트 타이쿤 (오리지널/월드 에디터) DOS 에디션의 음악입니다.
STR_BASEMUSIC_NONE_DESCRIPTION :실제 음악이 없는 음악 목록입니다.
##id 0x2000
diff --git a/src/lang/latin.txt b/src/lang/latin.txt
index 42047a47d6..9c2834da02 100644
--- a/src/lang/latin.txt
+++ b/src/lang/latin.txt
@@ -838,6 +838,7 @@ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLA
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
+STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT}{DKGREEN}Nulla musica parata
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}"
STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Carmen
STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Titulus
@@ -857,15 +858,15 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Eligere
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Incipere desinereve admixtionem carminum
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Monstrare fenestram electionis carminum
-STR_ERROR_NO_SONGS :{WHITE}Compositio sine carminibus electa est. Nulla carmina canentur
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Electio Compositionis Musicae
+STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}Compositio Musicae - '{STRING}'
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Index Carminum
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Compositio - '{STRING}'
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Vacuefacere
+STR_PLAYLIST_CHANGE_SET :{BLACK}Mutare gregem
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Vacuefacere compositionem (modo Propriam I aut Propriam II)
+STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Mutare gregem musicam
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Preme in carmen ut compositioni addantur (modo Propriae I aut Propriae II)
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Preme in carmen ut ex compositione removeatur (modo Propria I aut Propria II)
@@ -1068,10 +1069,10 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLAC
# Extra view window
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Fenestra conspectus {COMMA}
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Transcribere ad fenestram conspectus
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Mutare conspectum
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Transcribere locum primarium ad hanc fenestram conspectus
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Glutinare ex fenestra conspectus
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Glutinare locum ex hac fenestra ad conspectum primarium
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Mutare conspectum primum
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Transcribere locum ex hac fenestra ad conspectum primarium
# Game options window
STR_GAME_OPTIONS_CAPTION :{WHITE}Ludi optiones
@@ -1525,9 +1526,13 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Color terrae in
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Viridis
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Viridis Obscurus
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Purpureus
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Revertere cursum vagationis: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Quomodo tabula vagatur globulo dextri presso. Neglecta, mus conspectum movet. Electa, mus tabulam movet
-STR_CONFIG_SETTING_SMOOTH_SCROLLING :Vagari conspectum leniter: {STRING}
+STR_CONFIG_SETTING_SCROLLMODE :Modus conspectum movendi: {STRING}
+STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Quomodo tabula geographica vagatur
+STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Conspectus movetur globulo dextro, loco muris fixo
+STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Tabula movetur globulo dextro, loco muris fixo
+STR_CONFIG_SETTING_SCROLLMODE_RMB :Tabula movetur globulo muris dextro
+STR_CONFIG_SETTING_SCROLLMODE_LMB :Tabula movetur globulo muris sinistro
+STR_CONFIG_SETTING_SMOOTH_SCROLLING :Movere conspectum leniter: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Quomodo conspectus vagatur ad quemdam locum globulo sinistro in tabula premendi aut cum iubetur vagari ad quamdam rem in tabula. Electa, conspectus leniter vagatur. Neglecta, statim salit ad locum
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Ostendere nuntium adiuvans apud varia ferramenta construendi: {STRING}
STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Ostendere spatium atque altitudinem inter tegulas dum mus trahitur in construendo
@@ -1558,8 +1563,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Cmd+Premere
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Premere
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Neglecta
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Vagatio globuli sinistri: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Annuere tabulam vagari trahendo globuli sinistri. Magnopere utilis est cum tangendo navigas in scrinio
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Claudere fenestras globulo muris dextro: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Facit ut globulus muris dexter fenestras claudat. Cave: hac electa, non apparent nuntia adiuvantia globulo dextro.
@@ -2483,6 +2486,7 @@ STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Formula
STR_LINKGRAPH_LEGEND_ALL :{BLACK}Omnia
STR_LINKGRAPH_LEGEND_NONE :{BLACK}Nulla
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Eligere societates monstrandas
+STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP :{BLACK}{STRING}{}{COMPANY}
# Linkgraph legend window and linkgraph legend in smallmap
STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}non usus
@@ -2895,6 +2899,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Privileg
STR_ABOUT_VERSION :{BLACK}OpenTTD editio {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} MMII-MMXVII Manus OpenTTD
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Servare Ludum
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Legere Ludum
@@ -3179,6 +3190,7 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Inscribe
STR_TOWN_DIRECTORY_CAPTION :{WHITE}Oppida
STR_TOWN_DIRECTORY_NONE :{ORANGE}- Nulla -
STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA})
+STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Urbs){BLACK} ({COMMA})
STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Nomina oppidorum - preme in nomen ut conspectus supra oppidum locetur. Ctrl+Preme ut novam fenestram conspectus supra oppidum aperiatur
STR_TOWN_POPULATION :{BLACK}Incolae mundi: {COMMA}
@@ -3186,8 +3198,6 @@ STR_TOWN_POPULATION :{BLACK}Incolae
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Urbs)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Incolae: {ORANGE}{COMMA}{BLACK} Aedificia: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Vectores mensis prioris: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Epistulae mensis prioris: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Onera mandata ad oppidum crescendum:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} mandatur
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} hieme mandatur
@@ -4436,6 +4446,7 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... via
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... viae directio non convenit
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... stationi perviae non licet esse curva
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... stationi perviae non licet compita habere
+STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... via est monodromus vel obstructa
# Station destruction related errors
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Non licet partem stationis removere...
@@ -4687,6 +4698,8 @@ STR_BASESOUNDS_DOS_DESCRIPTION :Soni ex edition
STR_BASESOUNDS_WIN_DESCRIPTION :Soni ex editione originale Transport Tycoon Deluxe Windows.
STR_BASESOUNDS_NONE_DESCRIPTION :Sarcina sonorum sine ullis sonis.
STR_BASEMUSIC_WIN_DESCRIPTION :Musica ex editione originale Transport Tycoon Deluxe Windows.
+STR_BASEMUSIC_DOS_DESCRIPTION :Musica ex editione originale Transport Tycoon Deluxe DOS.
+STR_BASEMUSIC_TTO_DESCRIPTION :Musica ex editione originale Transport Tycoon (Originale/World Editor) DOS.
STR_BASEMUSIC_NONE_DESCRIPTION :Sarcina musicae sine ulla musica.
##id 0x2000
diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt
index dab5900f75..0408558c5a 100644
--- a/src/lang/latvian.txt
+++ b/src/lang/latvian.txt
@@ -669,10 +669,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Izvēlē
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Ieslēgt/izslēgt mūzikas saraksta jaukšanu
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Rādīt mūzikas celiņu atlases logu
-STR_ERROR_NO_SONGS :{WHITE}Izvēlēts komplekts bez mūzikas. Mūzika netiks atskaņota
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Mūzikas programmas izvēle
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Celiņu rādītājs
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programma - '{STRING}'
@@ -1307,7 +1304,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Apvidus krāsa
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :zaļa
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :{G=f}tumši zaļa
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :{G=f}violeta
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Pretējs ritināšanas virziens: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Plūdena skatvietas ritināšana: {STRING}
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Rādīt mērījumu rīkjoslu, izmantojot dažādus būvniecības rīkus: {STRING}
STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Rāda lauciņu attālumus un augstuma starpības, ar vilkšanu veicot būvniecības darbības
@@ -1337,7 +1333,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Komanda+klikš
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+klikšķis
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Izslēgta
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Kreisā klikšķa ritināšana: {STRING}
STR_CONFIG_SETTING_AUTOSAVE :Automātiskā saglabāšana: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Izvēlēties spēles automātiskās saglabāšanas starplaikus
@@ -2630,6 +2625,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Oriģin
STR_ABOUT_VERSION :{BLACK}OpenTTD versija {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD darba grupa
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Saglabāt spēli
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Ielādēt spēli
@@ -2913,8 +2915,6 @@ STR_TOWN_POPULATION :{BLACK}Pasaules
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (lielpilsēta)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Iedzīvotāji: {ORANGE}{COMMA}{BLACK} Mājas: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Pasažieri pagājušajā mēnesī: {ORANGE}{COMMA}{BLACK} maksimāli: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Pasts pagājušajā mēnesī: {ORANGE}{COMMA}{BLACK} maksimāli: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Krava nepieciešama pilsētas attīstībai:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} nepieciešams
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} nepieciešams ziemā
diff --git a/src/lang/lithuanian.txt b/src/lang/lithuanian.txt
index 4d44522671..5b8a103696 100644
--- a/src/lang/lithuanian.txt
+++ b/src/lang/lithuanian.txt
@@ -864,10 +864,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Parinkti
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Programos „Atsitiktiniai takeliai“ įj./išj.
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Rodyti muzikos takelių pasirinkimo langą
-STR_ERROR_NO_SONGS :{WHITE}Pasirinktas muzikos rinkinys be dainų. Dainos nebus grojamos
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Muzikos programos pasirinkimas
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} „{STRING}“
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Takelio numeris
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programa - „{STRING}“
@@ -1542,8 +1539,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Reljefo spalva
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Žalia
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Tamsiai žalia
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violetinė
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Priešinga slinkties kryptis: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Vaizdo slinkties elgsena, laikant nuspaudus dešinįjį pelės klavišą: pasirinkus „ne“, judės stebėtojas. Pasirinkus „taip“, judės žemėlapis
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Tolydi vaizdo slinktis: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Įjungus šią nuostatą ir pakeitus pagrindinio lango rodomą vietą (pvz., spragtelėjus žemėlapyje), vaizdas slinksis tolydžiai. Priešingu atveju vaizdas pasikeis akimirksniu, šuoliškai.
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Rodyti matavimo pastabą, kai naudojami įvairūs statybų įrankiai: {STRING}
@@ -1575,8 +1570,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Click
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Click
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Išjungta
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Left-click scrolling: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Slinkti žemėlapį velkant jį nuspaudus kairįjį pelės klavišą. Naudinga, jei žaidžiama kompiuteriuose su lietimui jautriais ekranais
STR_CONFIG_SETTING_AUTOSAVE :Automatinis saugojimas: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Laiko tarpsnis tarp automatinių žaidimo išsaugojimų
@@ -2908,6 +2901,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Pradinė
STR_ABOUT_VERSION :{BLACK}OpenTTD versija {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 OpenTTD komanda
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Išsaugoti žaidimą
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Įkelti žaidimą
@@ -3199,8 +3199,6 @@ STR_TOWN_POPULATION :{BLACK}Pasaulio
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Miestas)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Populiacija: {ORANGE}{COMMA}{BLACK} Namų skaičius: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Praėjusio mėnesio keleivių sk.: {ORANGE}{COMMA}{BLACK} Daugiausia: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Praėjusio mėnesio pašto siuntų sk.: {ORANGE}{COMMA}{BLACK} Daugiausia: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Kad miestas augtų reikalingi kroviniai:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} reikia
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} reikalingas žiemą
diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt
index 38dba61000..c4978c0b88 100644
--- a/src/lang/luxembourgish.txt
+++ b/src/lang/luxembourgish.txt
@@ -669,10 +669,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Wielt de
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Schalt den "shuffle" un/aus
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Weis d'Fënster fir Musik ze wielen
-STR_ERROR_NO_SONGS :{WHITE}E Music Set ouni Lidder gouf gewielt. Et wäerten keng Lidder gespillt ginn
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Musiksprogramm Auswiel
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Lidder Index
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programm - '{STRING}'
@@ -1337,8 +1334,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Faarf vum Terra
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Gréng
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Donkelgréng
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Mof
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Deen anere Wee scrollen: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Verhalen beim Scrollen vun der Kaart mat der rietser Maustast. Wann ausgeschalt, beweegt d'Maus d'Kamera. Wann ugeschalt, beweegt d'Maus d'Kaart
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Feine Scrolling: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Kontrolléiert wéi d'Haptusiicht op eng bestëmmten Positioun scrollt, wann een op déi kléng Kaart klickt oder en Befehl fir ob en spezifescht Objet ze scrollen gëtt. Wann ugeschalt, gëtt bis dohin gescrollt, wann ausgeschalt, spréngt d'Vue op den Zielobjet
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Weis en Mooss-Tooltip wann verschidde Bau-Tools benotzt ginn: {STRING}
@@ -1370,8 +1365,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :COMM+Klick
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :CTRL+Klick
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Aus
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Lénksklickscroll: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Schalt d'Scrollen vun der Kaart un, wann se mat der lénker Maustast gezunn gëtt
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Fënster mat rietsem Mausklick zouman: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Mécht eng Fenster mat engem Rietsklick zou, wann een an d'Fënster klickt. Schalt Tooltips aus déi per Rietsklick gemet ginn!
@@ -2693,6 +2686,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original
STR_ABOUT_VERSION :{BLACK}OpenTTD Versioun {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 D'OpenTTD team
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spill späicheren
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Spill lueden
@@ -2984,8 +2984,6 @@ STR_TOWN_POPULATION :{BLACK}Weltbev
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Stad)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Awunner: {ORANGE}{COMMA}{BLACK} Haiser: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passagéier leschte Mount: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post leschte Mount: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Gidder gebraucht fir Stadwuesstem:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} gebraucht
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} gebraucht am Wanter
diff --git a/src/lang/malay.txt b/src/lang/malay.txt
index 4ba83efdaa..1aa657c22c 100644
--- a/src/lang/malay.txt
+++ b/src/lang/malay.txt
@@ -215,6 +215,7 @@ STR_UNITS_VOLUME_LONG_SI :{COMMA} m³
STR_UNITS_FORCE_SI :{COMMA} kN
STR_UNITS_HEIGHT_IMPERIAL :{COMMA} ka
+STR_UNITS_HEIGHT_METRIC :{COMMA}{NBSP}m
STR_UNITS_HEIGHT_SI :{COMMA} m
# Common window strings
@@ -241,6 +242,7 @@ STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}Bar Skro
STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}Musnahkan bangunan dll. dari dataran tanah. Ctrl memilih kawasan menyerong. Shift bangunan/tunjukkan anggaran kos.
# Show engines button
+STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}Tunjukkan perkara yang tersembunyi
STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}Dengan membenarkan pilihan ini, kapal tersembunyi turut ditunjukkan
@@ -453,7 +455,7 @@ STR_ABOUT_MENU_TOGGLE_CONSOLE :Papar atau pada
STR_ABOUT_MENU_AI_DEBUG :Al/Skrip pepijat permainan
STR_ABOUT_MENU_SCREENSHOT :Tangkapan skrin (Ctrl+S)
STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Zum sepenuhnya di pembidik skrin
-STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Tangkapan skrin dizoom asal
+STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Tangkapan skrin di zum asal
STR_ABOUT_MENU_GIANT_SCREENSHOT :Tangkap gambar skrin besar (Ctrl+G)
STR_ABOUT_MENU_ABOUT_OPENTTD :Tentang 'OpenTTD'
STR_ABOUT_MENU_SPRITE_ALIGNER :Penjajar peperi
@@ -610,7 +612,7 @@ STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}Jumlah w
STR_PERFORMANCE_DETAIL_MAX_INCOME_TOOLTIP :{BLACK}Jumlah wang keuntungan dalam suku tahun dengan keuntungan tertinggi dalam 12 suku tahun yang lepas
STR_PERFORMANCE_DETAIL_DELIVERED_TOOLTIP :{BLACK}Unit-unit kargo yang dihantar dalam 4 suku tahun yang lepas
STR_PERFORMANCE_DETAIL_CARGO_TOOLTIP :{BLACK}Jumlah jenis kargo yang dihantar dalam suku tahun yang lepas
-STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Jumlah wang syarikat ini mempunyai dalam bank
+STR_PERFORMANCE_DETAIL_MONEY_TOOLTIP :{BLACK}Jumlah wang syarikat di dalam bank
STR_PERFORMANCE_DETAIL_LOAN_TOOLTIP :{BLACK}Jumlah wang syarikat ini yang telah dipinjam
STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP :{BLACK}Jumlah markah daripada markah yang boleh diperolehi
@@ -649,10 +651,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Pilih ra
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Mainkan muzik secara rawak atau tidak
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Tunjukkan tetingkap pilihan lagu
-STR_ERROR_NO_SONGS :{WHITE}Set muzik yang tidak mengandungi lagu telah dipilih. Tiada lagu yang akan dimainkan
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Pilihan Rancangan Muzik
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Indeks Lagu
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}'
@@ -737,6 +736,7 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Paparkan
STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Papar atau padamkan heightmap
STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Paparkan hartanah tanpa syarikat pada peta
STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Paparkan seluruh maklumat hartanah syarikat pada peta
+STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Tunjukkan semua kargo di atas peta
# Status bar messages
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Tunjukkan mesej atau laporan berita terakhir
@@ -853,10 +853,10 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT} {BLA
# Extra view window
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Tetingkap Pemandangan {COMMA}
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Salin ke tetingkap pemandangan
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Ubah tetingkap paparan
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Salin lokasi pemandangan global kepada tetingkap pemandangan ini
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Tampal daripada tetingkap pemandangan
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Salin lokasi tetingkap pemandangan ini kepada pemandangan utama
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Ubah paparan utama
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Salin lokasi tetingkap paparan ini ke paparan utama
# Game options window
STR_GAME_OPTIONS_CAPTION :{WHITE}Pilihan Permainan
@@ -1218,6 +1218,7 @@ STR_CONFIG_SETTING_ORDER_REVIEW_ON :Semua kenderaan
STR_CONFIG_SETTING_WARN_INCOME_LESS :Beri amaran jika pendapatan kenderaan adalah negatif: {STRING}
STR_CONFIG_SETTING_NEVER_EXPIRE_VEHICLES :Kenderaan tidak akan tamat tempohnya: {STRING}
STR_CONFIG_SETTING_AUTORENEW_VEHICLE :Gunakan pembaharuan automatik apabila kenderaan usang : {STRING}
+STR_CONFIG_SETTING_AUTORENEW_MONTHS_VALUE_AFTER :{COMMA} bulan{P 0 "" s} selepas
STR_CONFIG_SETTING_AUTORENEW_MONEY :Wang minimum yang diperlukan untuk pembaharuan automatik: {STRING}
STR_CONFIG_SETTING_ERRMSG_DURATION :Jangkamasa mesej ralat: {STRING}
STR_CONFIG_SETTING_POPULATION_IN_LABEL :Tunjukkan jumlah penduduk dalam label nama bandar: {STRING}
@@ -1253,7 +1254,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :Warna tanah yan
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Hijau
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Hijau Gelap
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Ungu
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Arah skrol terbalik: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Skrol tetingkap pemandangan yang licin: {STRING}
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Tunjukkan bantuan ukuran ketika menggunakan alat binaan: {STRING}
STR_CONFIG_SETTING_LIVERIES :Tunjukkan seragam syarikat: {STRING}
@@ -1266,6 +1266,7 @@ STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :Membesarkan pet
STR_CONFIG_SETTING_SCROLLWHEEL_SCROLL :Skrol peta
STR_CONFIG_SETTING_SCROLLWHEEL_OFF :Matikan
STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER :Kelajuan roda skrol pada peta: {STRING}
+STR_CONFIG_SETTING_SCROLLWHEEL_MULTIPLIER_HELPTEXT :Kawal kesensitifan skrol roda tetikus
STR_CONFIG_SETTING_OSK_ACTIVATION :Papan kekunci di skrin: {STRING}
STR_CONFIG_SETTING_OSK_ACTIVATION_HELPTEXT :Pilih kaedah untuk membuka papan kekunci pada skrin untuk memasukkan teks ke dalam kotak edit hanya menggunakan petunjuk peranti. Ini bertujuan untuk peranti kecil yang tiada papan kekunci sebenar
STR_CONFIG_SETTING_OSK_ACTIVATION_DISABLED :Dinyah-upayakan
@@ -1278,7 +1279,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Matikan
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Skrol klik-kiri: {STRING}
STR_CONFIG_SETTING_AUTOSAVE :Simpanan automatik:{STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Pilih jarak waktu antara menyimpankan permainan automatik
@@ -1298,6 +1298,7 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :Gunakan senarai
STR_CONFIG_SETTING_LOADING_INDICATORS :Gunakan penunjuk muatan: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Tunjukkan jadual menggunakan tanda rait dan bukan hari: {STRING}
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Tunjukkan ketibaan dan pelepasan dalam jadual: {STRING}
+STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Tunjukkan jangkaan waktu ketibaan dan pelepasan dalam jadual
STR_CONFIG_SETTING_QUICKGOTO :Pewujudan pantas arahan kenderaan: {STRING}
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Landasan keretapi lazim (apabila memulakan permainan baru/buka permainan: {STRING}
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :Yang tersedia terawal
@@ -1305,6 +1306,7 @@ STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :Yang tersedia s
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_MOST_USED :Yang selalu digunakan
STR_CONFIG_SETTING_SHOW_TRACK_RESERVATION :Tunjukkan landasan yang ditempah: {STRING}
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Alat binaan tetap aktif selepas digunakan: {STRING}
+STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Simpan alat pembinaan untuk jambatan, terowong, dll. buka selepas guna
STR_CONFIG_SETTING_EXPENSES_LAYOUT :Perbelanjaan kumpulan dalam tetingkap kewangan syarikat: {STRING}
STR_CONFIG_SETTING_SOUND_CONFIRM :Pembinaan: {STRING}
@@ -1312,6 +1314,7 @@ STR_CONFIG_SETTING_SOUND_CONFIRM :Pembinaan: {STR
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Nyahaktif infrastruktur bangunan apabila tiada kenderaan yang sesuai: {STRING}
STR_CONFIG_SETTING_MAX_TRAINS :Amaun maksimum kereta api setiap syarikat: {STRING}
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :Amaun maksimum kenderaan jalanraya setiap syarikat: {STRING}
+STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :Jumlah maksimum kenderaan darat sesebuah syarikat
STR_CONFIG_SETTING_MAX_AIRCRAFT :Amaun maksimum pesawat setiap syarikat: {STRING}
STR_CONFIG_SETTING_MAX_SHIPS :Amaun maksimum kapal setiap syarikat: {STRING}
@@ -1332,7 +1335,10 @@ STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes sebelu
STR_CONFIG_SETTING_SERVINT_ISPERCENT :Tempoh waktu servis dalam peratusan: {STRING}
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Pilih sama ada selenggara kenderaan dimulakan sejak tempoh masa dari servis terakhir atau apabila peratusan kebolehupayaan kenderaan berkurang kepada peratusan tertentu.
+STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}hari{P 0 "" s}/%
STR_CONFIG_SETTING_SERVINT_DISABLED :Dilumpuhkan
+STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Tetapkan selang masa servis untuk pesawat baru kepada tetapan asal jika tiada selang masa servis yang jelas ditetapkan untuk pesawat tersebut
+STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Tetapkan selang masa servis untuk kapal baru kepada tetapan asal jika tiada selang masa servis yang jelas ditetapkan untuk kapal tersebut
STR_CONFIG_SETTING_NOSERVICE :Servis tidak diperlukan apabila kerosakan kenderaan ditetapkan kepada tiada: {STRING}
STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Benarkan had kelajuan untuk gerabak: {STRING}
STR_CONFIG_SETTING_DISABLE_ELRAILS :Tiada landasan elektrik: {STRING}
@@ -1344,13 +1350,16 @@ STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION :Maklumat syarik
STR_CONFIG_SETTING_NEWS_COMPANY_INFORMATION_HELPTEXT :Paparkan surat khabar mengenai pembukaan syarikat baru, atau apabila syarikat dalam risiko untuk muflis
STR_CONFIG_SETTING_NEWS_INDUSTRY_OPEN :Pembukaan industri: {STRING}
STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE :Penutupan industri: {STRING}
+STR_CONFIG_SETTING_NEWS_INDUSTRY_CLOSE_HELPTEXT :Paparkan keratan akhbar apabila ada industri yang ditutup
STR_CONFIG_SETTING_NEWS_ECONOMY_CHANGES :Perubahan ekonomi: {STRING}
STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_COMPANY :Perubahan pengeluaran industri-industri yang diservis oleh syarikat: {STRING}
STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER :Perubahan pengeluaran industri-industri yang diservis oleh pesaing: {STRING}
+STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_OTHER_HELPTEXT :Paparkan keratan akhbar apabila berlaku perubahan tahap pengeluaran industri yang diservis oleh pesaing
STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Pengubaran pengeluaran industri lain: {STRING}
STR_CONFIG_SETTING_NEWS_ADVICE :Nasihat / maklumat tentang kenderaan syarikat: {STRING}
STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Kenderaan baru: {STRING}
STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Penukaran pada penerimaan kargo: {STRING}
+STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Tunjukkan mesej berkenaan perubahan kebolehterimaan sesetengah kargo di stesen terlibat
STR_CONFIG_SETTING_NEWS_SUBSIDIES :Subsidi: {STRING}
STR_CONFIG_SETTING_NEWS_GENERAL_INFORMATION :Maklumat umum: {STRING}
@@ -1411,17 +1420,25 @@ STR_CONFIG_SETTING_TOWN_GROWTH_NORMAL :Biasa
STR_CONFIG_SETTING_TOWN_GROWTH_FAST :Pantas
STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Sangat pantas
STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 dalam {COMMA}
+STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Tiada
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Pengganda awal saiz bandar: {STRING}
+STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Sistem Imperial (kuasa kuda/hp)
+STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Sistem metrik (kuasa kuda/hp)
+STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :Unit SI (kW)
+
+
+STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :Unit SI (m³)
-
-
+STR_CONFIG_SETTING_SOUND :{ORANGE}Bunyi
STR_CONFIG_SETTING_INTERFACE :{ORANGE}Antaramuka (Interface)
STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Pembinaan
+STR_CONFIG_SETTING_ADVISORS :{ORANGE}Berita / Penasihat
+STR_CONFIG_SETTING_COMPANY :{ORANGE}Syarikat
STR_CONFIG_SETTING_VEHICLES :{ORANGE}Kenderaan
STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Laluan
STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Kecelakaan / Kemalangan
@@ -1502,7 +1519,7 @@ STR_INTRO_TRANSLATION :{BLACK}Terjemah
# Quit window
STR_QUIT_CAPTION :{WHITE}Keluar
-STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Pastikah anda untuk keluar dari OpenTTD dan kembali ke {STRING}?
+STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Adakah anda pasti untuk keluar dari OpenTTD dan kembali ke {STRING}?
STR_QUIT_YES :{BLACK}Ya
STR_QUIT_NO :{BLACK}Tidak
@@ -1520,8 +1537,8 @@ STR_OSNAME_SUNOS :SunOS
# Abandon game
STR_ABANDON_GAME_CAPTION :{WHITE}Tinggalkan Permainan
-STR_ABANDON_GAME_QUERY :{YELLOW}Pastikah anda mahu keluar permainan ini?
-STR_ABANDON_SCENARIO_QUERY :{YELLOW}Pastikah anda untuk keluar senario ini?
+STR_ABANDON_GAME_QUERY :{YELLOW}Pastikah anda mahu keluar dari permainan ini?
+STR_ABANDON_SCENARIO_QUERY :{YELLOW}Pastikah anda untuk keluar dari senario ini?
# Cheat window
STR_CHEATS :{WHITE}Penipuan (Cheats)
@@ -1696,6 +1713,7 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Nama per
STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Tetapkan kata laluan
STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Lindungi permainan anda dengan kata laluan jika anda tidak mahu ianya diakses awam
+STR_NETWORK_START_SERVER_UNADVERTISED :Tidak
STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} pelanggan
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Amaun maksimum pemain:
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Tentukan bilangan klien maks. Tidak perlu semua slot diisi
@@ -1773,7 +1791,7 @@ STR_NETWORK_GAME_LOBBY_NEW_COMPANY_TOOLTIP :{BLACK}Mulakan
STR_NETWORK_GAME_LOBBY_SPECTATE_GAME :{BLACK}Saksikan permainan
STR_NETWORK_GAME_LOBBY_SPECTATE_GAME_TOOLTIP :{BLACK}Saksikan permainan sebagai seorang penyaksi
STR_NETWORK_GAME_LOBBY_JOIN_COMPANY :{BLACK}Sertai syarikat
-STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Bantu mengurus syarikat ini
+STR_NETWORK_GAME_LOBBY_JOIN_COMPANY_TOOLTIP :{BLACK}Bantu uruskan syarikat ini
# Network connecting window
STR_NETWORK_CONNECTING_CAPTION :{WHITE}Menyambung...
@@ -1934,6 +1952,7 @@ STR_CONTENT_SELECT_UPDATES_CAPTION :{BLACK}Pilih pe
STR_CONTENT_SELECT_UPDATES_CAPTION_TOOLTIP :{BLACK}Tandakan semua kandungan sedia ada yang telah ditingkatkan untuk dimuat turun
STR_CONTENT_UNSELECT_ALL_CAPTION :{BLACK}Nyahpilihkan semua
STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK}Tandakan semua kandungan supaya jangan dimuat turun
+STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Anda sedang meninggalkan OpenTTD!
STR_CONTENT_FILTER_TITLE :{BLACK}Saringan tag/nama:
STR_CONTENT_OPEN_URL :{BLACK}Lawati halaman
STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Lawati halaman untuk kandungan ini
@@ -1986,7 +2005,7 @@ STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... fail
STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Tidak dapat menyahmampat fail yang dimuat turun
STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Grafik hilang
-STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD memerlukan grafik berfungsi tetapi tiada diperolehi. Adakah anda membenarkan OpenTTD untuk memuat turun dan memasang-grafik?
+STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD memerlukan grafik berfungsi tetapi tiada grafik diperolehi. Adakah anda benarkan OpenTTD untuk memuat turun dan memasang grafik?
STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Ya, muat turun grafik
STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Tidak, keluar dari OpenTTD
@@ -2309,6 +2328,7 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Nama pet
STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Kargo yang diterima: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
+STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Jenis landasan: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Had kelajuan landasan: {LTBLUE}{VELOCITY}
# Description of land area of different tiles
@@ -2321,28 +2341,28 @@ STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Tanah diliputi
STR_LAI_CLEAR_DESCRIPTION_DESERT :Padang pasir
STR_LAI_RAIL_DESCRIPTION_TRACK :Landasan keretapi
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Keretapi landasan dengan isyarat sekatan
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Keretapi landasan dengan pra-isyarat
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Landasan kereta api dengan isyarat sekatan
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Landasan kereta api dengan pra-isyarat
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Landasan keretapi dengan isyarat keluar
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Landasan keretapi dengan isyarat kombo
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Keretapi landasan dengan isyarat laluan
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Landasan kereta api dengan isyarat laluan
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Landasan keretapi dengan isyarat satu hala
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Keretapi landasan dengan isyarat sekatan dan pra-isyarat
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Landasan kereta api dengan isyarat sekatan dan pra-isyarat
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Landasan keretapi dengan isyarat sekatan dan keluar
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Landasan keretapi dengan isyarat sekatan dan kombo
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Keretapi landasan dengan isyarat sekatan dan laluan
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Landasan kereta api dengan isyarat sekatan dan laluan
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Landasan keretapi dengan isyarat sekatan dan satu hala
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Keretapi landasan dengan isyarat pra- dan keluar
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Keretapi landasan dengan isyarat pra- dan kombo
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Keretapi landasan dengan isyarat pra- dan laluan
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Keretapi landasan dengan isyarat pra- dan satu hala
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Landasan kereta api dengan pra-isyarat dan isyarat keluar
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Landasan kereta api dengan pra-isyarat dan isyarat kombo
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Landasan kereta api dengan pra-isyarat dan isyarat laluan
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Landasan kereta api dengan pra-isyarat dan isyarat laluan satu hala
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Landasan keretapi dengan isyarat keluar dan kombo.
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Landasan keretapi dengan isyarat keluar dan laluan
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Landasan keretapi dengan isyarat keluar dan satu hala
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Landasan keretapi dengan isyarat kombo dan signal laluan
STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Landasan keretapi dengan isyarat kombo dan satu hala
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Keretapi landasan dengan isyarat laluan dan satu hala
-STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Keretapi depoh keretapi
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Landasan kereta api dengan isyarat laluan dan isyarat laluan satu hala
+STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Depoh penyelenggaraan kereta api
STR_LAI_ROAD_DESCRIPTION_ROAD :Jalanraya
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Jalan raya berlampu
@@ -2408,6 +2428,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Hakcipta
STR_ABOUT_VERSION :{BLACK}OpenTTD versi {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 The OpenTTD team
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Simpankan Permainan
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Buka Permainan
@@ -2555,6 +2582,7 @@ STR_NEWGRF_SETTINGS_INCOMPATIBLE :{RED}Tidak sera
# NewGRF save preset window
STR_SAVE_PRESET_CAPTION :{WHITE}Simpan pratetapan
STR_SAVE_PRESET_TITLE :{BLACK}Masukkan nama untuk pratetapan
+STR_SAVE_PRESET_CANCEL :{BLACK}Batal
STR_SAVE_PRESET_SAVE :{BLACK}Simpan
# NewGRF parameters window
@@ -2586,7 +2614,7 @@ STR_SPRITE_ALIGNER_GOTO_TOOLTIP :{BLACK}Pergi ke
STR_SPRITE_ALIGNER_PREVIOUS_BUTTON :{BLACK}Peperi sebelumnya
STR_SPRITE_ALIGNER_PREVIOUS_TOOLTIP :{BLACK}Teruskan ke peperi dahulu yang biasa, melangkau sebarang peperi pseudo/warna kembali/fon dan memusing balik semula
STR_SPRITE_ALIGNER_SPRITE_TOOLTIP :{BLACK}Perwakilan peperi yang terpilih. Penjajaran tidak diendahkan apabila sedang melukiskan peperi.
-STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Alih peperi, mengubahkan ofset X dan Y
+STR_SPRITE_ALIGNER_MOVE_TOOLTIP :{BLACK}Alihkan "sprite" ke lokasi lain lantas mengubah ofset X dan Y. "Ctrl+Click" untuk ubah lokasi "sprite" lapan unit pada satu-satu masa
STR_SPRITE_ALIGNER_PICKER_BUTTON :{BLACK}Pilih peperi
STR_SPRITE_ALIGNER_PICKER_TOOLTIP :{BLACK}Pilih peperi di mana-mana sahaja dari skrin
@@ -2686,8 +2714,6 @@ STR_TOWN_POPULATION :{BLACK}Jumlah p
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Bandaraya)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Jumlah penduduk: {ORANGE}{COMMA}{BLACK} Rumah: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Penumpang bulan lalu: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Beg surat bulan lepas: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Kargi yang diperlukan untuk pembesaran bandar:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} diperlukan
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} diperlukan sewaktu musim sejuk
@@ -2782,6 +2808,7 @@ STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klik di
# Story book window
STR_STORY_BOOK_TITLE :{YELLOW}{STRING}
+STR_STORY_BOOK_NEXT_PAGE :{BLACK}Seterusnya
# Station list window
STR_STATION_LIST_TOOLTIP :{BLACK}Nama stesen - klik pada nama untuk memusatkan pemandangan ke stesen. Ctrl+Klik membuka tetingkap pemandangan di lokasi stesen
@@ -2808,6 +2835,10 @@ STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Penarafa
STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Tunjukkan penarafan stesen
STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Bekalan bulanan dan penarafan tempatan:
+STR_STATION_VIEW_PLANNED_AMOUNT :Jumlah: Telah dirancang
+STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} melalui {STATION}
+STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} ke {STATION}
+STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} sedang berhenti di stesen ini
############ range for rating starts
@@ -2825,12 +2856,13 @@ STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}Pusatkan
STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}Tukarkan nama stesen
STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}Tunjukkan semua keretapi yang mengandungi stesen ini dalam jadual mereka
-STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Tunjukkan semua kenderaan jalanraya yang mengandungi stesen ini dalam jadual mereka
+STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}Tunjukkan semua kenderaan darat yang mempunyai stesen ini di dalam jadual mereka
STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}Tunjukkan semua pesawat yang mengandungi lapangan terbang ini dalam jadual mereka
STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}Tunjukkan semua kapal yang mengandungi stesen ini dalam jadual mereka
STR_STATION_VIEW_RENAME_STATION_CAPTION :Namakan semula stesen/ruang punggahan
+STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Halang pesawat daripada mendarat di lapangan terbang ini
# Waypoint/buoy view window
STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT}
@@ -3012,11 +3044,11 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Kenderaan jalan
STR_GROUP_DEFAULT_SHIPS :Kapal yang belum berkumpulan
STR_GROUP_DEFAULT_AIRCRAFTS :Pesawat yang belum berkumpulan
-STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Kumpulan - klik sebuah kumpulan untuk menaraikan semua kenderaan di dalam kumpulan
+STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Kumpulan - klik sebuah kumpulan untuk menyenaraikan semua kenderaan di dalam kumpulan tersebut. Tarik dan lepaskan kumpulan untuk menyusun kumpulan mengikut heirarki
STR_GROUP_CREATE_TOOLTIP :{BLACK}Klik untuk mewujudkan kumpulan
STR_GROUP_DELETE_TOOLTIP :{BLACK}Padamkan kumpulan yang telah dipilih
STR_GROUP_RENAME_TOOLTIP :{BLACK}Tukar nama kumpulan yang terpilih
-STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klik untuk menghalang daripada kumpulan ini digantikan secara automatik
+STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klik untuk menghalang kumpulan ini daripada digantikan secara automatik
STR_GROUP_ADD_SHARED_VEHICLE :Tambah kenderaan berkongsi
@@ -3304,6 +3336,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} tahun (
STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} tahun ({COMMA})
STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Kelajuan Maks.: {LTBLUE}{VELOCITY}
+STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Kelajuan maksima: {LTBLUE}{VELOCITY} {BLACK}Jenis pesawat: {LTBLUE}{STRING}
+STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Kelajuan maksima: {LTBLUE}{VELOCITY} {BLACK}Jenis pesawat: {LTBLUE}{STRING} {BLACK}Lingkungan: {LTBLUE}{COMMA} petak
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Berat: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kuasa: {LTBLUE}{POWER}{BLACK} Kelajuan Maks.: {LTBLUE}{VELOCITY}
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Berat: {LTBLUE}{WEIGHT_SHORT} {BLACK}Kuasa: {LTBLUE}{POWER}{BLACK} Max. speed: {LTBLUE}{VELOCITY} {BLACK}T.E. Maks.: {LTBLUE}{FORCE}
@@ -3323,6 +3357,7 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Tempoh P
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Tambah 10 tempoh penyenggelaraan. Ctrl+Klik untuk tambah 5 tempoh penyenggelaraan
STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Kurangkan 10 tempoh penyenggelaraan. Ctrl+Klik untuk kurangkan 5 tempoh penyenggelaraan
+STR_VEHICLE_DETAILS_DAYS :Hari
STR_VEHICLE_DETAILS_PERCENT :Peratusan
STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Nama keretapi
@@ -3462,7 +3497,7 @@ STR_ORDER_GO_TO_NEAREST_DEPOT :Pergi ke depoh
STR_ORDER_GO_TO_NEAREST_HANGAR :Pergi ke hangar paling hampir
STR_ORDER_CONDITIONAL :Lompatan arahan bersyarat
STR_ORDER_SHARE :Kongsi arahan
-STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Masukkan arahan baru ke atas arahan yang terpilih. Ctrl membuatkan arahan stesen 'muatan penuh sebarang kargo', arahan halutuju 'tanpa henti', dan arahn depoh 'penyenggelaraan'. 'Arahan berkongsi' atau Ctrl membenarkan kenderaan ini berkongsi arahan dengan kenderaan terpilih
+STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Masukkan arahan baru ke dalam susunan senarai yang terpilih, atau tambah pada penghujung senarai. "Ctrl" mengubah arahan stesen kepada 'muatan penuh untuk apa-apa kargo', arahan halutuju 'tanpa henti', dan arahan depoh 'penyenggelaraan'. 'Arahan berkongsi' atau "Ctrl" membenarkan kenderaan ini berkongsi arahan dengan kenderaan terpilih
STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Tunjukkan semua kenderaan yang berkongsi jadual yang sama
@@ -4079,7 +4114,7 @@ STR_ERROR_AIRCRAFT_NOT_ENOUGH_RANGE :{WHITE}... pesa
# Timetable related errors
STR_ERROR_CAN_T_TIMETABLE_VEHICLE :{WHITE}Kenderaan tidak boleh dijadualkan...
STR_ERROR_TIMETABLE_ONLY_WAIT_AT_STATIONS :{WHITE}Kenderaan hanya boleh menunggu di stesen
-STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Kenderaan ini tidak akan berhenti di stesen ini
+STR_ERROR_TIMETABLE_NOT_STOPPING_HERE :{WHITE}Kenderaan ini tidak akan berhenti di stesen berikut
# Sign related errors
STR_ERROR_TOO_MANY_SIGNS :{WHITE}... papan tanda terlalu banyak
@@ -4092,8 +4127,12 @@ STR_DESKTOP_SHORTCUT_COMMENT :Sebuah permaina
# Translatable descriptions in media/baseset/*.ob* files
STR_BASEGRAPHICS_DOS_DESCRIPTION :Grafik asal Transport Tycoon Deluxe DOS edition.
+STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Grafik asal Transport Tycoon DOS (German) edition
STR_BASEGRAPHICS_WIN_DESCRIPTION :Grafik asal Transport Tycoon Deluxe edisi Windows.
+STR_BASESOUNDS_WIN_DESCRIPTION :Bunyi asal Transport Tycoon Deluxe edisi Windows
+STR_BASESOUNDS_NONE_DESCRIPTION :Sebuah pek suara tanpa apa-apa suara
STR_BASEMUSIC_WIN_DESCRIPTION :Muzik asal Transport Tycoon Deluxe edisi Windows.
+STR_BASEMUSIC_DOS_DESCRIPTION :Muzik asal Transport Tycoon Deluxe edisi DOS
STR_BASEMUSIC_NONE_DESCRIPTION :Pek muzik tanpa muzik sebenar.
##id 0x2000
diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt
index dccf73075f..fcb3f7afe9 100644
--- a/src/lang/norwegian_bokmal.txt
+++ b/src/lang/norwegian_bokmal.txt
@@ -671,10 +671,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Velg pro
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Skru av/på tilfeldig program
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Vis musikkspormeny
-STR_ERROR_NO_SONGS :{WHITE}Et musikksett uten sanger er valgt. Ingen sanger vil bli avspilt
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Musikkprogram
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Sporliste
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}'
@@ -1340,8 +1337,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Farge på terre
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Grønn
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Mørkegrønn
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Fiolett
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Snu rulleretningen: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Opptreden ved rulling av kartet med høyre museknapp. Når deaktivert, beveger musen kameraet. Når aktivert, beveger musen kartet
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Myk rulling: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Velge hvordan synsfeltet ruller til en bestemt posisjon når du klikker på det lille kartet, eller ved utstedelse av en kommando for å gå til et bestemt objekt på kartet. Hvis aktivert, ruller synsfeltet jevnt, og hvis deaktivert hopper det direkte til det valgte punktet
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Vis målingsverktøy ved bruk av byggingsverktøy: {STRING}
@@ -1373,8 +1368,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Kommando+klikk
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+klikk
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Av
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Venstre-klikk rulling: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Tillat rulling av kartet ved å dra det med den venstre museknappen. Dette er spesielt nyttig når du bruker en berøringsskjerm
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Lukk vinduet med høyreklikk: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Lukker et vindu ved å høyreklikke i det. Deaktiverer verktøytipset med høyreklikk!
@@ -2697,6 +2690,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Opprinne
STR_ABOUT_VERSION :{BLACK}OpenTTD versjon {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD-teamet
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lagre spill
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Last inn spill
@@ -2988,8 +2988,6 @@ STR_TOWN_POPULATION :{BLACK}Verdensb
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (By)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Innbyggertall: {ORANGE}{COMMA}{BLACK} Antall hus: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passasjerer forrige måned: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post forrige måned: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Varebehov for byvekst:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} påkrevd
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} nødvendig om vinteren
diff --git a/src/lang/norwegian_nynorsk.txt b/src/lang/norwegian_nynorsk.txt
index 5e545ce290..aa53408bea 100644
--- a/src/lang/norwegian_nynorsk.txt
+++ b/src/lang/norwegian_nynorsk.txt
@@ -671,10 +671,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Vel 'Eig
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Skru tilfeldig program av/på
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Syne musikkspormeny
-STR_ERROR_NO_SONGS :{WHITE}Eit musikksett utan songar har blitt valt. Ingen songar vil bli spelt
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Musikkprogram
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Sporregister
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}'
@@ -1311,7 +1308,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Farge på terre
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Grøn
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Mørkegrøn
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Fiolett
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Snu rulleretninga: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Jamn rulling i tilleggsvindauge: {STRING}
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Syne eit målingverktøytips når ymse byggjeverktøy brukast: {STRING}
STR_CONFIG_SETTING_LIVERIES :Syne firmaovertakingar: {STRING}
@@ -1338,7 +1334,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Kommando+klikk
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :CTRL+klikk
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Av
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Venstreknapps-rulling: {STRING}
STR_CONFIG_SETTING_AUTOSAVE :Autolaging: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Vel intervall for automatisk lagring av spel
@@ -2610,6 +2605,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Opphavel
STR_ABOUT_VERSION :{BLACK}OpenTTD versjon {REV}. Oversett til nynorsk av Thor Morten Skogrand med fleire.
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD-teamet
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lagre spel
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Last inn spel
@@ -2897,8 +2899,6 @@ STR_TOWN_POPULATION :{BLACK}Verdsinn
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (By)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Innbyggjartal: {ORANGE}{COMMA}{BLACK} Antal hus: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passasjerar førre månad: {ORANGE}{COMMA}{BLACK} maks.: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post førre månad: {ORANGE}{COMMA}{BLACK} maks.: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Varer naudsynt for folketalsauke:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} naudsynt
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} naudsynt om vinteren
diff --git a/src/lang/polish.txt b/src/lang/polish.txt
index cc3f06cffe..5825519ef3 100644
--- a/src/lang/polish.txt
+++ b/src/lang/polish.txt
@@ -1029,6 +1029,7 @@ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLA
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
+STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT}{DKGREEN}Brak dostępnej muzyki
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}"
STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Ścieżka
STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Tytuł
@@ -1048,14 +1049,12 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Wybierz
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Losowe odtwarzanie wł./wył.
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Pokaż okno wyboru ścieżek
-STR_ERROR_NO_SONGS :{WHITE}Został wybrany zestaw muzyki bez utworów. Żaden utwór nie będzie odtwarzany
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Wybór Programu
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Wykaz ścieżek
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programuj - '{STRING}'
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Wyczyść
+STR_PLAYLIST_CHANGE_SET :{BLACK}Zmień zestaw
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Wyczyść obecny program (tylko Wlasny1 lub Wlasny2)
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klik na ścieżce aby dodać do obecnego programu (Wlasny1 i Wlasny2)
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Kliknij na ścieżce muzycznej aby usunąć ją z wybranego programu (Wlasny1 lub Wlasny2)
@@ -1717,8 +1716,9 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Kolor terenu na
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :zielony
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :ciemnozielony
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :fioletowy
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Przewijaj obraz myszką w przeciwnym kierunku: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Zachowanie podczas przewijania mapy za pomocą prawego przycisku myszy. W przypadku wyłączenia mysz porusza kamerą. Po włączeniu mysz przesuwa mapę
+STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Zachowanie podczas przeciągania mapy
+STR_CONFIG_SETTING_SCROLLMODE_RMB :Przeciągnij mapę prawym przyciskiem myszy
+STR_CONFIG_SETTING_SCROLLMODE_LMB :Przeciągnij mapę lewym przyciskiem myszy
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Wygładź przesuwanie widoku: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Zdecyduj, jak główny widok przesuwa się do konkretnej lokacji, gdy klikasz na mini-mapie lub gdy używasz komendy do przesunięcia do danego obiektu na mapie. Kiedy włączone, widok przesuwa się płynnie, kiedy wyłączone, następuje skok bezpośrednio do wybranego miejsca
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Pokaż dymek z pomiarem podczas używania różnych narzędzi: {STRING}
@@ -1750,8 +1750,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Wyłączona
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Przewijanie lewym przyciskiem myszy: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Włącz przewijanie mapy przeciąganiem lewym przyciskiem myszki. Jest to przydatne podczas używania ekranu dotykowego do przewijania
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Zamknij okno prawym przyciskiem: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Zamyka okno poprzez kliknięcie prawym przyciskiem. Wyłącza pomoc kontekstową!
@@ -3073,6 +3071,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Prawa Au
STR_ABOUT_VERSION :{BLACK}OpenTTD wersja {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 Zespół OpenTTD
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Zapisz grę
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Wczytaj grę
@@ -3364,8 +3369,7 @@ STR_TOWN_POPULATION :{BLACK}Populacj
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Miasto)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Populacja: {ORANGE}{COMMA}{BLACK} Domów: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Pasażerów w zeszłym miesiącu: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Poczta w zeszłym miesiącu: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
+STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} w ostatnim miesiącu: {ORANGE}{COMMA}{BLACK} najwięcej: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Towar potrzebny do rozwoju miasta:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED}Wymagana {ORANGE}{STRING}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} wymagane zimą
@@ -4618,6 +4622,7 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... ta d
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... droga jest zorientowana w złym kierunku
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... przystanki przelotowe nie mogą mieć zakrętów
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... przystanki przelotowe nie mogą mieć skrzyżowań
+STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... droga jest jednokierunkowa lub zablokowana
# Station destruction related errors
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Nie można usunąć części stacji...
diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt
index 65ad9c6661..b071b9c185 100644
--- a/src/lang/portuguese.txt
+++ b/src/lang/portuguese.txt
@@ -670,10 +670,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Seleccio
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Ligar/Desligar programa aleatório
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Mostrar janela de selecção de faixas de música
-STR_ERROR_NO_SONGS :{WHITE}Um conjunto de música vazio foi seleccionado. Nenhuma música vai ser tocada.
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Programação Musical
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} '{STRING}'
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Índice de faixas
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programa - '{STRING}'
@@ -1338,8 +1335,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Cor do terreno
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verde
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Verde Escuro
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violeta
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Ao deslizar com o rato, mover a vista na direcção oposta: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Comportamento ao navegar pelo mapa com o botão direito do rato. Quando desactivado, o rato move a câmara. Quando activo, o rato move o mapa
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Suavizar deslocamento da navegação no mapa: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controla como a vista principal navega para uma posição específica ao clicar no mapa pequeno ou ao dar um comando para navegar para um objecto específico no mapa. Se activo, a vista principal navega suavemente, se inactivo a vista salta directamente para o destino.
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Mostrar medidas nas várias ferramentas de construção: {STRING}
@@ -1371,8 +1366,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND : + Cli
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL : + clique
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Desligado
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Deslocar com botão esquerdo: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Activar deslocamento do mapa através de arrastamento com o botão esquerdo do rato. Esta opção é particularmente útil quando é usado um ecran de toque para deslocamento
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Fechar janelas ao fazer clique direito: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Fecha uma janela ao fazer clique direito dentro dela. Desactiva os textos de ajuda ao fazer clique direito!
@@ -2694,6 +2687,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Direitos
STR_ABOUT_VERSION :{BLACK}OpenTTD versão {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 A equipa do OpenTTD
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Guardar Jogo
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Abrir Jogo
@@ -2985,8 +2985,6 @@ STR_TOWN_POPULATION :{BLACK}Populaç
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Metrópole)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}População: {ORANGE}{COMMA}{BLACK} Casas: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passageiros no último mês: {ORANGE}{COMMA}{BLACK} máx: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Correio no último mês: {ORANGE}{COMMA}{BLACK} máx: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Mercadoria necessária para o seu desenvolvimento:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED}É necessário {ORANGE}{STRING}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{BLACK}No inverno, é necessário {ORANGE}{STRING}
diff --git a/src/lang/romanian.txt b/src/lang/romanian.txt
index a2aa17927e..2693346136 100644
--- a/src/lang/romanian.txt
+++ b/src/lang/romanian.txt
@@ -669,10 +669,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selectea
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Comutator pentru amestecarea melodiilor (pornit/oprit)
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Afişeaza fereastra pentru selecţia melodiilor
-STR_ERROR_NO_SONGS :{WHITE}A fost selectat un set de muzică fără melodii. Nici o melodie nu va fi cântată
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Programare piese muzicale
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Lista melodiilor
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}'
@@ -1322,8 +1319,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Culoarea terenu
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verde
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Verde închis
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Mov
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Inversează direcţia de scroll: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Modul de funcționare in momentul folosirii butonului drept al mouse-ului pentru deplasare pe hartă. Când opțiunea este dezactivată, mouse-ul schimbă poziția camerei. La activare, mouse-ul desplasează harta.
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Derulare uşoară ecran: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controlează modul de deplasare a imaginii din ecranul principal când se face click pe harta mică sau când se execută o comandă de deplasare către un obiect anume de pe hartă. Dacă este activată, imaginea se deplasează în mod fluid, altfel imaginea sare direct la zona dorită
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Arată o indicaţie de distanţă la folosirea uneltelor de construcţie: {STRING}
@@ -1355,8 +1350,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Comandă+Click
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control+Click
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Oprit
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Derulare ecran cu click-stânga: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Activează derularea hărții prin tragerea acesteia cu butonul stâng al mouse-ului. Această opțiune este în special utilă când se folosește un ecran tactil pentru deplasare
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :Foloseşte formatul datei {STRING} pentru numele salvărilor
@@ -2654,6 +2647,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyrigh
STR_ABOUT_VERSION :{BLACK}OpenTTD versiunea {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Echipa OpenTTD
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvează joc
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Încarcă joc
@@ -2939,8 +2939,6 @@ STR_TOWN_POPULATION :{BLACK}Populaţ
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Metropolă)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Populaţia: {ORANGE}{COMMA}{BLACK} Locuinţe: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Călători luna trecută: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Colete poştale luna trecută: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Transporturi necesare dezvoltării oraşului:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} necesare
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} necesare iarna
diff --git a/src/lang/russian.txt b/src/lang/russian.txt
index 45b3be2c6d..742639720f 100644
--- a/src/lang/russian.txt
+++ b/src/lang/russian.txt
@@ -788,8 +788,9 @@ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLA
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
+STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT}{DKGREEN}Музыкальное оформление недоступно
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}«{STRING}»
-STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Дорожка
+STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Трек
STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Название
STR_MUSIC_SHUFFLE :{TINY_FONT}{BLACK}Случ. выбор
STR_MUSIC_PROGRAM :{TINY_FONT}{BLACK}Программа
@@ -807,17 +808,17 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Выбо
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Вкл./Выкл. случайный выбор программы
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Показать окно выбора музыкальных треков
-STR_ERROR_NO_SONGS :{WHITE}В выбранном музыкальном наборе отсутствует музыка.
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Выбор программы воспроизведения
+STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}Музыкальная программа - '{STRING}'
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} «{STRING}»
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Номер трека
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Программа - «{STRING}»
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Очистить
+STR_PLAYLIST_CHANGE_SET :{BLACK}Изменить набор
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Очистка пользовательской программы
+STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Сменить выбор музыкального оформления на другой установленный набор
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Щёлкните по названию трека для добавления в пользовательскую программу
-STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Выберите дорожку для удаления из пользовательского списка
+STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Выберите трек для удаления из пользовательского списка
# Highscore window
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Крупнейшие компании, достигшие {NUM} года
@@ -1025,9 +1026,9 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLAC
# Extra view window
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Окно просмотра {COMMA}
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Скопировать в окно
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Скопировать текущую позицию в окно просмотра
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Вставить из окна
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Из основного окна
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Показать то, что отображается в основном окне
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}В основное окно
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Показать в основном окне
# Game options window
@@ -1072,13 +1073,13 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Грузинс
STR_GAME_OPTIONS_CURRENCY_IRR :Иранский риал (IRR)
############ end of currency region
-STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Направление движения
-STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}По какой стороне дороги ездит автотранспорт
-STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :левостороннее
-STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :правостороннее
+STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Движение автомобилей
+STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_TOOLTIP :{BLACK}Сторона дороги, по которой ездит автотранспорт
+STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Левостороннее
+STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :Правостороннее
STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Названия городов
-STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}На каком языке будут названы населённые пункты
+STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Язык, который будет использоваться для выбора названий населённых пунктов
############ start of townname region
STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Английские
@@ -1173,7 +1174,7 @@ STR_CURRENCY_DECREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Пере
STR_CURRENCY_INCREASE_CUSTOM_CURRENCY_TO_EURO_TOOLTIP :{BLACK}Перейти на евро позже
STR_CURRENCY_PREVIEW :{LTBLUE}Образец: {ORANGE}{CURRENCY_LONG}
-STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 англ. фунтов (£) в вашей валюте
+STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10{NBSP}000 фунтов стерлингов (£) в вашей валюте
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Изменить параметр валюты
STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Максимальное количество конкурентов: {ORANGE}{COMMA}
@@ -1257,7 +1258,7 @@ STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Тип:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Отображать в списке только настройки, соответствующие выбранной категории
STR_CONFIG_SETTING_RESTRICT_BASIC :Основные настройки (только самые важные)
STR_CONFIG_SETTING_RESTRICT_ADVANCED :Расширенные настройки (практически все)
-STR_CONFIG_SETTING_RESTRICT_ALL :Специальные настройки (все, включая самые непонятные)
+STR_CONFIG_SETTING_RESTRICT_ALL :Все настройки (включая самые непонятные)
STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Настройки со значениями, отличающимися от значений по умолчанию
STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Настройки со значениями, отличающимися от настроек новой игры
@@ -1489,9 +1490,13 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Цвет лан
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :зелёный
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :тёмно-зелёный
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :фиолетовый
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Обратить направление перемещения обзора мышью: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Настройка смещения обзора правой кнопкой мыши.{}Если отключено, мышь двигает камеру.{}Если включено, мышь двигает карту.
-STR_CONFIG_SETTING_SMOOTH_SCROLLING :Плавное смещение обзора: {STRING}
+STR_CONFIG_SETTING_SCROLLMODE :Перемещение обзора: {STRING}
+STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Способ перемещения по игровому полю
+STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Перемещать с помощью ПКМ, зафиксировав курсор
+STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Перемещать с помощью ПКМ, зафиксировав курсор
+STR_CONFIG_SETTING_SCROLLMODE_RMB :Перемещать с помощью ПКМ
+STR_CONFIG_SETTING_SCROLLMODE_LMB :Перемещать с помощью ЛКМ
+STR_CONFIG_SETTING_SMOOTH_SCROLLING :Плавное перемещение: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Настройка перемещения обзора в основном окне при щелчке по миникарте или по команде обзора какого-нибудь объекта. Если включено, то обзор смещается плавно; если отключено - то мгновенно.
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Показывать замеры при строительстве: {STRING}
STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Показывать расстояния и разницу высот при строительстве
@@ -1500,8 +1505,8 @@ STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Включит
STR_CONFIG_SETTING_LIVERIES_NONE :нет
STR_CONFIG_SETTING_LIVERIES_OWN :только для своей компании
STR_CONFIG_SETTING_LIVERIES_ALL :для всех компаний
-STR_CONFIG_SETTING_PREFER_TEAMCHAT :Открывать командный чат при нажатии Enter: {STRING}
-STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Настроить внутрикорпоративный чат на клавишу «Enter», а общий - на «Ctrl+Enter»
+STR_CONFIG_SETTING_PREFER_TEAMCHAT :Использовать Enter для командного чата: {STRING}
+STR_CONFIG_SETTING_PREFER_TEAMCHAT_HELPTEXT :Использовать «Enter» для командного чата, а «Ctrl+Enter» - для общего
STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING :Использовать колесо прокрутки: {STRING}
STR_CONFIG_SETTING_SCROLLWHEEL_SCROLLING_HELPTEXT :Можно настроить смещение обзора с помощью качающегося колеса прокрутки
STR_CONFIG_SETTING_SCROLLWHEEL_ZOOM :для масштабирования
@@ -1522,8 +1527,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Команд.
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Контрол.
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Выкл.
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Смещение обзора по нажатию левой кнопки мыши: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Смещение обзора левой кнопкой мыши. Это удобно при использовании сенсорного экрана.
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Закрывать окна щелчком ПКМ: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Закрывать окно щелчком правой кнопкой мыши в его пределах. При этом отключается появление подсказок по правой кнопке.
@@ -1778,7 +1781,7 @@ STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Чем выше
STR_CONFIG_SETTING_DEMAND_DISTANCE :Зависимость спроса от расстояния: {STRING}
STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Если это значение больше 0, то количество груза, отправляемого с одной станции на другую, будет зависеть от расстояния между станциями. Чем выше это значение, тем больше груза будет отправляться к ближним станциям и меньше{NBSP}- к дальним.
STR_CONFIG_SETTING_DEMAND_SIZE :Количество возвращаемого груза при симметричном распределении: {STRING}
-STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Установка этого значения ниже 100% заставит распределение быть менее «симметричным»: количество возвращаемого груза сможет быть меньше, чем количество отправленного. Установка в 0% сделает распределение полностью несимметричным.
+STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Установка этого значения ниже 100% заставит распределение быть менее «симметричным»: количество возвращаемого груза сможет быть меньше, чем количество отправленного. Установка в 0% сделает распределение полностью асимметричным.
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Предел загрузки коротких маршрутов перед использованием вместительных: {STRING}
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :При наличии нескольких маршрутов между станциями алгоритм распределения грузов будет использовать кратчайший маршрут до его загрузки, потом следующий по длине и т.{NBSP}д. При избытке груза маршруты будут перегружаться начиная с самых производительных. Загрузка рассчитывается исходя из оценки пропускной способности (которая может быть неточной) и интенсивности использования. Эта настройка определяет, насколько загружать маршрут перед тем, как начать использовать следующий. Установите значение ниже 100% для того, чтобы избежать задержки груза, если пропускная способность маршрута будет переоценена алгоритмом.
@@ -2453,6 +2456,7 @@ STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Схем
STR_LINKGRAPH_LEGEND_ALL :{BLACK}Все
STR_LINKGRAPH_LEGEND_NONE :{BLACK}Нет
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Выберите компании для отображения
+STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP :{BLACK}{STRING}{}{COMPANY}
# Linkgraph legend window and linkgraph legend in smallmap
STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}неиспольз.
@@ -2873,6 +2877,22 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Ориг
STR_ABOUT_VERSION :{BLACK}OpenTTD версия {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Команда разработчиков OpenTTD
+# Framerate display window
+STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x)
+STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL}{WHITE} мс
+STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL}{WHITE} мс
+STR_FRAMERATE_MS_BAD :{RED}{DECIMAL}{WHITE} мс
+STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL}{WHITE} кадр{P "" а ов}/с
+STR_FRAMERATE_FPS_WARN :{YELLOW}{DECIMAL}{WHITE} кадр{P "" а ов}/с
+STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL}{WHITE} кадр{P "" а ов}/с
+STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COMMA} мс
+STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} с
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Сохранить игру
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Загрузить игру
@@ -3157,15 +3177,15 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Введ
STR_TOWN_DIRECTORY_CAPTION :{WHITE}Города
STR_TOWN_DIRECTORY_NONE :{ORANGE}- Нет -
STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA})
-STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Список городов - щелчок по названию показывает город в основном окне. Ctrl+щелчок показывает в дополнительном окне.
+STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (Мегаполис){BLACK} ({COMMA})
+STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Список городов. Щелчок по названию показывает город в основном окне. Ctrl+щелчок показывает в дополнительном окне.
STR_TOWN_POPULATION :{BLACK}Население: {COMMA}
# Town view window
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Мегаполис)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Население: {ORANGE}{COMMA}{BLACK} Зданий: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Пассажиров в прошлом месяце: {ORANGE}{COMMA}{BLACK}; макс.: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Почты в прошлом месяце: {ORANGE}{COMMA}{BLACK}; макс.: {ORANGE}{COMMA}
+STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} в прошлом месяце: {ORANGE}{COMMA}{BLACK} Макс.: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Груз, необходимый для роста города:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} требу{G 0 е е е ю}тся
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} требу{G 0 е е е ю}тся зимой
@@ -4422,6 +4442,7 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... эт
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... неверное направление дороги
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... на проходных остановках нельзя делать повороты
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... на проходных остановках нельзя делать перекрёстки
+STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... дорога односторонняя или заблокирована
# Station destruction related errors
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Невозможно удалить часть станции...
@@ -4490,7 +4511,7 @@ STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Недо
STR_ERROR_MUST_REMOVE_SIGNALS_FIRST :{WHITE}Сначала удалите сигналы
STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Нет подходящих рельсов
STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Сначала удалите рельсы
-STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Дорога односторонняя или блокирована
+STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Дорога односторонняя или заблокирована
STR_ERROR_CROSSING_DISALLOWED :{WHITE}Через этот вид рельсов запрещено строить переезды
STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Здесь невозможно поставить сигнал...
STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Здесь невозможно проложить рельсы...
@@ -4666,13 +4687,15 @@ STR_ERROR_CAN_T_DELETE_SIGN :{WHITE}Не у
STR_DESKTOP_SHORTCUT_COMMENT :Экономический симулятор на основе игры «Transport Tycoon Deluxe»
# Translatable descriptions in media/baseset/*.ob* files
-STR_BASEGRAPHICS_DOS_DESCRIPTION :Оригинальная графика из Transport Tycoon Deluxe для DOS.
-STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Оригинальная графика из немецкой версии Transport Tycoon Deluxe для DOS.
-STR_BASEGRAPHICS_WIN_DESCRIPTION :Оригинальная графика из Transport Tycoon Deluxe для Windows.
-STR_BASESOUNDS_DOS_DESCRIPTION :Оригинальный набор звукового оформления из игры Transport Tycoon Deluxe для DOS.
-STR_BASESOUNDS_WIN_DESCRIPTION :Оригинальный набор звукового оформления из игры Transport Tycoon Deluxe для Windows.
+STR_BASEGRAPHICS_DOS_DESCRIPTION :Графика из Transport Tycoon Deluxe для DOS.
+STR_BASEGRAPHICS_DOS_DE_DESCRIPTION :Графика из немецкой версии Transport Tycoon Deluxe для DOS.
+STR_BASEGRAPHICS_WIN_DESCRIPTION :Графика из Transport Tycoon Deluxe для Windows.
+STR_BASESOUNDS_DOS_DESCRIPTION :Набор звукового оформления из игры Transport Tycoon Deluxe для DOS.
+STR_BASESOUNDS_WIN_DESCRIPTION :Набор звукового оформления из игры Transport Tycoon Deluxe для Windows.
STR_BASESOUNDS_NONE_DESCRIPTION :"Пустой" набор звукового оформления, не содержащий никаких звуков.
-STR_BASEMUSIC_WIN_DESCRIPTION :Оригинальный набор музыкального оформления из игры Transport Tycoon Deluxe для Windows.
+STR_BASEMUSIC_WIN_DESCRIPTION :Набор музыкального оформления из игры Transport Tycoon Deluxe для Windows.
+STR_BASEMUSIC_DOS_DESCRIPTION :Набор музыкального оформления из игры Transport Tycoon Deluxe для DOS.
+STR_BASEMUSIC_TTO_DESCRIPTION :Набор музыкального оформления из игры Transport Tycoon Deluxe для DOS.
STR_BASEMUSIC_NONE_DESCRIPTION :"Пустой" набор музыкального оформления, не содержащий никакой музыки.
##id 0x2000
diff --git a/src/lang/serbian.txt b/src/lang/serbian.txt
index 155772ce5d..eeaa8a4141 100644
--- a/src/lang/serbian.txt
+++ b/src/lang/serbian.txt
@@ -838,6 +838,7 @@ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLA
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
+STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT} {DKGREEN} Nije dostupna muzika
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}"
STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Numera
STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Naziv
@@ -857,15 +858,15 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Izaberi
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Uključi/isključi nasumičan izbor pri puštanju
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Prikaži prozor za izbor muzičkih numera
-STR_ERROR_NO_SONGS :{WHITE}Izabran je skup muzike bez ijedne numere. Neće biti puštena nikakva muzika
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Izbor muzičkog programa
+STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE} Muzički program - '{STRING}'
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Indeks numera
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}'
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Obriši
+STR_PLAYLIST_CHANGE_SET :{BLACK}Promeni set
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Obriši tekući program (samo korisnički-definisani programi)
+STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Promenite izbor muzike na drugi instalirani skup
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klik na numeru je dodaje u tekući program (samo za korisnički-definisane programe)
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Pritisnite na muzičku numeru kako biste je uklonili sa trenutnog rasporeda (samo za Custom1 ili Custom2)
@@ -1075,10 +1076,10 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLAC
# Extra view window
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Pogled{COMMA}
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Premesti u pogled
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK} Kopiraj u prozor za pogled
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Premešta pogled na trenutnu poziciju glavnog pogleda
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Prebaci se
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Premešta glavni pogled na lokaciju na kojoj je ovaj pogled
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Promenite glavni prikaz
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Kopirajte lokaciju prozora za prikaz u glavnom prikazu
# Game options window
STR_GAME_OPTIONS_CAPTION :{WHITE}Opcije
@@ -1532,8 +1533,12 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Boja terena na
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Zelena
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Tamno zelena
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Ljubičasta
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Suprotan smer pomeranja prozora: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Ponašanje kod skrolovanja karte desnim dugmetom miša. Kada je isključeno, miš pomiče kameru. Kada je uključeno, miš pomiče kartu
+STR_CONFIG_SETTING_SCROLLMODE :Ponašanje listanja pogleda: {STRING}
+STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Ponašanje prilikom skrolovanje mape
+STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Pomerite pogled sa desnim tasterom miša, položaj miša zaključan
+STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Pomerite mapu sa desnim tasterom miša, zaključajte položaj miša
+STR_CONFIG_SETTING_SCROLLMODE_RMB :Pomerite mapu pomoću desne tipke miša
+STR_CONFIG_SETTING_SCROLLMODE_LMB :Pomerite mapu pomoću levog miša
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Ravnomeran prelaz prozora: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Odredi kako se glavni prikaz pomiče na određeno mesto kada se klikne na malu kartu ili kada se daje naredba za pomicanje na određeni objekat na karti. Ako je omogućeno, prikaz se pomiče glatko, ako je onemogućeno, prikaz izravno skače na ciljano mesto
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Prikazivati mere dok se koriste alati za gradnju: {STRING}
@@ -1565,8 +1570,8 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Nikakvo
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Pomeranje sa levim klikom: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Omogući skrolovanje po mapi povlačenjem mape sa levim dugmetom miša. Ovo je posebno korisno kod skrolovanja na ekranima na dodir
+STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Zatvori prozor pomoću desnog klika: {STRING}
+STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Zatvara prozor tako što klikne desnim klikom unutar nje. Onemogućava dodir sa desnim tasterom miša!
STR_CONFIG_SETTING_AUTOSAVE :Autočuvanje: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Izbor vremenskog intervala između dve automatski sačuvane pozicije
@@ -2477,6 +2482,7 @@ STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Legenda
STR_LINKGRAPH_LEGEND_ALL :{BLACK}Sve
STR_LINKGRAPH_LEGEND_NONE :{BLACK}Nema
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Odaberite preduzeća koja želite da se prikažu
+STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP :{BLACK}{STRING}{}{COMPANY}
# Linkgraph legend window and linkgraph legend in smallmap
STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}neiskorišćen
@@ -2784,6 +2790,7 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Naziv de
STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Tovar prihvaćen: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
+STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Tip šine: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Najveća brzina na pruzi: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Ograničenje brzine: {LTBLUE}{VELOCITY}
@@ -2796,29 +2803,29 @@ STR_LAI_CLEAR_DESCRIPTION_FIELDS :Polja
STR_LAI_CLEAR_DESCRIPTION_SNOW_COVERED_LAND :Snegom prekrivena zemlja
STR_LAI_CLEAR_DESCRIPTION_DESERT :Pustinja
-STR_LAI_RAIL_DESCRIPTION_TRACK :Železnica kolosek
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Železnica kolosek sa blok signalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Železnica kolosek sa predsignalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Železnica kolosek sa izlaznom signalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Železnica kolosek sa kombinovanom signalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Železnica kolosek sa putnom signalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Železnica kolosek sa jednosmernom putnom signalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Železnica kolosek sa blok i predsignalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Železnica kolosek sa blok i izlaznom signalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Železnica kolosek sa blok i kombinovanom signalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Železnica kolosek sa blok i putnom signalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Železnica kolosek sa blok i jednosmernom putnom signalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Železnica kolosek sa pred i izlaznom signalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Železnica kolosek sa pred i kombinovanom signalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Železnica kolosek sa pred i putnom signalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Železnica kolosek sa pred i jednosmernom putnom signalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Železnica kolosek sa izlaznom i kombinovanom signalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Železnica kolosek sa izlaznom i putnom signalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Železnica kolosek sa izlaznom i jednosmernom putnom signalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Železnica kolosek sa kombinovanom i putnom signalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Železnica kolosek sa kombinovanom i jednosmernom putnom signalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Železnica kolosek sa putnom i jednosmernom putnom signalizacijom
-STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Železnica železnički depo
+STR_LAI_RAIL_DESCRIPTION_TRACK :Željeznički put
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_SIGNALS :Željeznički put sa blok signalima
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRESIGNALS :Željeznički put sa pred-signalima
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXITSIGNALS :Železnički put sa izlaznom signalizacijom
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBOSIGNALS :Željeznički put sa kombinovanim signalima
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBSSIGNALS :Železnički put sa putnom signalizacijom
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NOENTRYSIGNALS :Železnički put sa jednosmernim signalima
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PRESIGNALS :Železnički put sa blokom i pred-signalima
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_EXITSIGNALS :Željeznički put sa blokovnim i izlaznim signalima
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_COMBOSIGNALS :Željeznički put sa blokovnim i kombinovanim signalima
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_PBSSIGNALS :Železnički put sa signalizacijom izlaza i puta
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_NORMAL_NOENTRYSIGNALS :Železnički put sa blokom i pred-signalima
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_EXITSIGNALS :Željeznički put sa pred-i izlaznim signalima
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_COMBOSIGNALS :Željeznički put sa pred- i kombo-signalima
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_PBSSIGNALS :Željeznički put sa pre- i putnom signalizacijom
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PRE_NOENTRYSIGNALS :Željeznički put sa signalima pre i jednosmernog puta
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_COMBOSIGNALS :Železnički put sa izlaznim i kombo-signalima
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_PBSSIGNALS :Železnički put sa signalizacijom izlaza i puta
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_EXIT_NOENTRYSIGNALS :Železnički put sa izlaznim i jednosmernim signalima
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_PBSSIGNALS :Željeznički put sa kombinovanim i putnim signalima
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_COMBO_NOENTRYSIGNALS :Željeznički put sa kombinovanim i jednosmernim signalima
+STR_LAI_RAIL_DESCRIPTION_TRACK_WITH_PBS_NOENTRYSIGNALS :Železnički put sa putnim i jednosmernim signalima
+STR_LAI_RAIL_DESCRIPTION_TRAIN_DEPOT :Vozni park željeznice
STR_LAI_ROAD_DESCRIPTION_ROAD :Put
STR_LAI_ROAD_DESCRIPTION_ROAD_WITH_STREETLIGHTS :Kolovoz sa uličnom rasvetom
@@ -2884,6 +2891,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original
STR_ABOUT_VERSION :{BLACK}OpenTTD verzija {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD tim
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sačuvaj poziciju
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Učitavanje Partije
@@ -3168,6 +3182,7 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Unos naz
STR_TOWN_DIRECTORY_CAPTION :{WHITE}Naselja
STR_TOWN_DIRECTORY_NONE :{ORANGE}- Prazno -
STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA})
+STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (City){BLACK} ({COMMA})
STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Imena naselja - klikom na ime se centrira glavni pogled na to naselje. Ctrl+Klik otvara novi pogled na lokaciju naselja
STR_TOWN_POPULATION :{BLACK}Svetska populacija: {COMMA}
@@ -3175,8 +3190,7 @@ STR_TOWN_POPULATION :{BLACK}Svetska
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Grad)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Populacija: {ORANGE}{COMMA}{BLACK} Zgrada: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Broj putnika tokom meseca: {ORANGE}{COMMA}{BLACK} najviše: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Količina pošte tokom meseca: {ORANGE}{COMMA}{BLACK} najviše: {ORANGE}{COMMA}
+STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} u poslednjem mesecu: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Tovar potreban za razvoj naselja:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} potrebno
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} potrebno zimi
@@ -3487,6 +3501,9 @@ STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO :{BLACK}Potražu
STR_INDUSTRY_VIEW_REQUIRES_CARGO_CARGO_CARGO :{BLACK}Potražuje: {YELLOW}{STRING.aku}{STRING}, {STRING.aku}{STRING}, {STRING.aku}{STRING}
############ range for requires ends
+STR_INDUSTRY_VIEW_REQUIRES :{BLACK} Zahteva:
+STR_INDUSTRY_VIEW_ACCEPT_CARGO :{YELLOW}{STRING}{BLACK}{3:STRING}
+STR_INDUSTRY_VIEW_ACCEPT_CARGO_AMOUNT :{YELLOW}{STRING}{BLACK}: {CARGO_SHORT} čekaje {STRING}
############ range for produces starts
STR_INDUSTRY_VIEW_PRODUCES_CARGO :{BLACK}Proizvodi: {YELLOW}{STRING}{STRING}
@@ -3555,6 +3572,10 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Ukloni sva vozi
STR_GROUP_RENAME_CAPTION :{BLACK}Preimenuj grupu
+STR_GROUP_PROFIT_THIS_YEAR :Dobit ove godine:
+STR_GROUP_PROFIT_LAST_YEAR :Dobit prošle godine:
+STR_GROUP_OCCUPANCY :Trenutna upotreba:
+STR_GROUP_OCCUPANCY_VALUE :{NUM}%
# Build vehicle window
STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Nova Železnička Vozila
@@ -3587,6 +3608,7 @@ STR_PURCHASE_INFO_ALL_TYPES :Sve vrste teret
STR_PURCHASE_INFO_ALL_BUT :Sve sem {CARGO_LIST}
STR_PURCHASE_INFO_MAX_TE :{BLACK}Najveća vučna snaga: {GOLD}{FORCE}
STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Domet: {GOLD}{COMMA} pločica
+STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK} Tip aviona: {GOLD} {STRING}
STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}Spisak probranih šinskih vozila - kliknite na vozilo za više podataka
STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}Spisak probranih drumskih vozila - kliknite na vozilo za više podataka
@@ -3727,6 +3749,10 @@ STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE.aku :magnetnog žel.
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Cena: {CURRENCY_LONG} Težina: {WEIGHT_SHORT}{}Brzina: {VELOCITY} Snaga: {POWER}{}Cena Održavanja: {CURRENCY_LONG}/god.{}Nosivost: {CARGO_LONG}
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Cena: {CURRENCY_LONG} Težina: {WEIGHT_SHORT}{}Brzina: {VELOCITY} Snaga: {POWER} Najveća vučna snaga: {6:FORCE}{}Cena Održavanja: {4:CURRENCY_LONG}/god{}Nosivost: {5:CARGO_LONG}
STR_ENGINE_PREVIEW_COST_MAX_SPEED_CAP_RUNCOST :{BLACK}Cena: {CURRENCY_LONG} Najveća Brzina: {VELOCITY}{}Nosivost: {CARGO_LONG}{}Cena Održavanja: {CURRENCY_LONG}/god.
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_CAP_RUNCOST :BLACK} Cena: {CURRENCY_LONG} Maks. Brzina: {VELOCITY}{} Tip aviona: {STRING}{} Kapacitet: {CARGO_LONG}, {CARGO_LONG}{}Pokretna cena: {CURRENCY_LONG}/godine.
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_CAP_RUNCOST :{BLACK} Cena: {CURRENCY_LONG} Maks. Brzina: {VELOCITY}{}Tip aviona: {STRING}{}Kapacitet: {CARGO_LONG}{}Pokretna cena: {CURRENCY_LONG}/god.
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_CAP_RUNCOST :{BLACK} Cena: {CURRENCY_LONG} Maks. Brzina: {VELOCITY}{} Tip aviona: {STRING} Domet: {COMMA} pločice{}Kapacitet: {CARGO_LONG}, {CARGO_LONG}{} Pokretni trošak: {CURRENCY_LONG} /god.
+STR_ENGINE_PREVIEW_COST_MAX_SPEED_TYPE_RANGE_CAP_RUNCOST :BLACK}Cena: {CURRENCY_LONG} Maks. Brzina: {VELOCITY}{}Tip aviona: {STRING} Opseg: {COMMA} pločice{}Kapacitet: {CARGO_LONG}{}Pokretni trošak: {CURRENCY_LONG}/god.
# Autoreplace window
STR_REPLACE_VEHICLES_WHITE :{WHITE}Zameni {STRING} - {STRING}
@@ -3766,6 +3792,7 @@ STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Pritisni
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Prebacuje između prikaza zamene lokomotiva i zamene vagona
STR_REPLACE_ENGINES :Lokomotive
STR_REPLACE_WAGONS :Vagoni
+STR_REPLACE_ALL_RAILTYPE :Sve šinskih vozila
STR_REPLACE_HELP_RAILTYPE :{BLACK}Izaberite vrstu pruge za koju želite zamenu kompozicije
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Prikazuje koja lokomotiva će se zameniti označenom sa leve strane, ako ih ima
@@ -3858,6 +3885,8 @@ STR_VEHICLE_INFO_AGE :{COMMA} godin{P
STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} godin{P a e a} ({COMMA})
STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Najveća brzina: {LTBLUE}{VELOCITY}
+STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Maks. brzina: {LTBLUE}{VELOCITY} {BLACK}Tip aviona: {LTBLUE}{STRING}
+STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :BLACK} Maks. brzina: {LTBLUE} {VELOCITY} {BLACK} Tip aviona: {LTBLUE} {STRING} {BLACK} Opseg: {LTBLUE} {COMMA} pločice
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Težina: {LTBLUE}{WEIGHT_SHORT} {BLACK}Snaga: {LTBLUE}{POWER}{BLACK} Najveća brzina: {LTBLUE}{VELOCITY}
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Težina: {LTBLUE}{WEIGHT_SHORT} {BLACK}Snaga: {LTBLUE}{POWER}{BLACK} Najveća brzina: {LTBLUE}{VELOCITY} {BLACK} Najveća vučna snaga: {LTBLUE}{FORCE}
@@ -4424,6 +4453,7 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... ova
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... ulica je okrenuta u drugom pravcu
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... stajalište ne može biti na krivini
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... stajalište ne može biti na raskrsnici
+STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... put je jednosmeran ili blokiran.
# Station destruction related errors
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}Deo stanice se ne može ukloniti...
@@ -4675,6 +4705,8 @@ STR_BASESOUNDS_DOS_DESCRIPTION :Originalni skup
STR_BASESOUNDS_WIN_DESCRIPTION :Originalni skup zvukova Transport Tycoon Deluxe Windows izdanja.
STR_BASESOUNDS_NONE_DESCRIPTION :Prazan skup zvukova.
STR_BASEMUSIC_WIN_DESCRIPTION :Originalni skup muzičkih numera Transport Tycoon Deluxe Windows izdanja.
+STR_BASEMUSIC_DOS_DESCRIPTION :Originalna muzika za TTD za DOS izdanje.
+STR_BASEMUSIC_TTO_DESCRIPTION :Originalna muzika TTD (Original / World Editor) DOS izdanja.
STR_BASEMUSIC_NONE_DESCRIPTION :Prazan skup muzičkih numera.
##id 0x2000
diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt
index d8e9f0c8c6..7675bed2b6 100644
--- a/src/lang/simplified_chinese.txt
+++ b/src/lang/simplified_chinese.txt
@@ -669,15 +669,14 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}选择
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}开启/关闭 随机播放列表中的曲目
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}打开音乐选单窗口
-STR_ERROR_NO_SONGS :{WHITE}选择了没有歌曲的音乐组。不会播放歌曲。
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}音乐选单
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}全部音轨列表
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}当前选用'{STRING}'列表
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}清除
+STR_PLAYLIST_CHANGE_SET :更改设置
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}清除当前列表中曲目{}(仅限自定义1或自定义2)
+STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}选择另一种已安装的音乐
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}点击音乐曲目以加入当前播放列表{}(仅限自定义1或自定义2)
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}点击音乐曲目以从当前播放列表中删除{}(仅限自定义1或自定义2)
@@ -1337,8 +1336,7 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :设置缩略地
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :绿色
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :深绿色
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :紫色
-STR_CONFIG_SETTING_REVERSE_SCROLLING :拖动方向与屏幕移动方向相反:{STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :设置按下鼠标右键拖动时地图移动的方向,“关闭”鼠标拖动摄像机,“打开”时鼠标拖动地图。
+STR_CONFIG_SETTING_SCROLLMODE_RMB :鼠标右键移动地图
STR_CONFIG_SETTING_SMOOTH_SCROLLING :平滑视角滚动: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :设置在缩略图上点击或者发出转到特定目标的命令时主视角的转换方式,如果“打开”本选项,视角平缓滚动,“关闭”时直接跳转到目标位置
STR_CONFIG_SETTING_MEASURE_TOOLTIP :建设时显示测量数据:{STRING}
@@ -1370,8 +1368,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :按住Command
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :按住Ctrl键 点击
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :关闭
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :左击滚动: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :可用按住鼠标左键再拖拉的方法来进行屏幕滚动. 这对于触摸屏设备特别有用
STR_CONFIG_SETTING_AUTOSAVE :自动保存: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :选择自动存档时间间隔
@@ -2690,6 +2686,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}原始
STR_ABOUT_VERSION :{BLACK}OpenTTD 版本 {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD 团队
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}保存游戏
STR_SAVELOAD_LOAD_CAPTION :{WHITE}读取存档
@@ -2981,8 +2984,6 @@ STR_TOWN_POPULATION :{BLACK}所有
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (都市)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}人口:{ORANGE}{COMMA}{BLACK} 房屋:{ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}上月旅客数量:{ORANGE}{COMMA}{BLACK} 最大值:{ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}上月邮包数量:{ORANGE}{COMMA}{BLACK} 最大值:{ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}城镇发展所必需的货物:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED} 需要: {ORANGE}{STRING}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} 冬季的需求
@@ -3656,6 +3657,7 @@ STR_VEHICLE_INFO_AGE :{COMMA} 年 ({C
STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} 年 ({COMMA})
STR_VEHICLE_INFO_MAX_SPEED :{BLACK}最大速度:{LTBLUE}{VELOCITY}
+STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}最高速度: {LTBLUE}{VELOCITY} {BLACK}飞机种类: {LTBLUE}{STRING}
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}重量:{LTBLUE}{WEIGHT_SHORT} {BLACK}功率:{LTBLUE}{POWER}{BLACK} 最大速度:{LTBLUE}{VELOCITY}
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}重量:{LTBLUE}{WEIGHT_SHORT} {BLACK}功率:{LTBLUE}{POWER}{BLACK} 最大速度:{LTBLUE}{VELOCITY} {BLACK}最大牵引力:{LTBLUE}{FORCE}
@@ -4473,6 +4475,7 @@ STR_BASESOUNDS_DOS_DESCRIPTION :运输大亨DOS
STR_BASESOUNDS_WIN_DESCRIPTION :Transport Tycoon Deluxe Windows (运输大亨Windows豪华版)的原版音效包.
STR_BASESOUNDS_NONE_DESCRIPTION :一个空的音效包.
STR_BASEMUSIC_WIN_DESCRIPTION :Transport Tycoon Deluxe(运输大亨Windows豪华版)的原版音乐包
+STR_BASEMUSIC_DOS_DESCRIPTION :运输大亨DOS豪华版原版音乐。
STR_BASEMUSIC_NONE_DESCRIPTION :一个没有实际内容的音乐包.
##id 0x2000
diff --git a/src/lang/slovak.txt b/src/lang/slovak.txt
index 4e28c45c02..c313e497a6 100644
--- a/src/lang/slovak.txt
+++ b/src/lang/slovak.txt
@@ -733,10 +733,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Zvoliť
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Prepnúť náhodný výber
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Zobraziť okno pre výber hudobných stôp
-STR_ERROR_NO_SONGS :{WHITE}Bola zvolená sada hudby bez skladieb. Žiadne skladby nebudú hrať
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Výber hudobného programu
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Zoznam skladieb
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}'
@@ -1405,8 +1402,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Farby terénu n
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Zelená
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Tmavozelená
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Fialová
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Posúvať mapu opačným smerom: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Chovanie sa mapy keď je posúvaná pravým tlačítkom myši. Ak je vypnuté posúva sa kamera, ak je zapnuté posúva sa mapa.
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Plynulé posúvanie pohľadu: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Nastaví ako bude reagovať posúvanie na špecifickú pozíciu po kliknutí na minimapu, alebo po zadaní príkazu na presun na zadaný objekt. Ak je zapnuté, pohľad sa presúva plynulo. Ak je vypnuté, pohľad skočí priamo na zadané miesto/objekt.
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Zobraziť údaje o rozmeroch pri výstavbe: {STRING}
@@ -1438,8 +1433,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Príkaz + klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :CTRL + klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Žiadna
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Posúvať pohľad ľavým tlačidlom myši: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Povolí posúvanie mapy ĽAVÝM tlačítkom myši. Toto je obzvlášť užitočné pri použití dotykového displeja.
STR_CONFIG_SETTING_AUTOSAVE :Automatické ukladanie: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Vyberte interval pre automatické ukladanie hry
@@ -2757,6 +2750,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Pôvodn
STR_ABOUT_VERSION :{BLACK}OpenTTD verzia {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 team OpenTTD
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Uložiť hru
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Nahrať hru
@@ -3048,8 +3048,6 @@ STR_TOWN_POPULATION :{BLACK}Svetová
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Mesto)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Obyvateľstvo: {ORANGE}{COMMA}{BLACK} Domov: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Cestujúci posledný mesiac: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Pošta posledný mesiac: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Tovar potrebný k rozrastu mesta:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} potrebný
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} potrebné v zime
diff --git a/src/lang/slovenian.txt b/src/lang/slovenian.txt
index 5fd44b4d36..122dd10ff1 100644
--- a/src/lang/slovenian.txt
+++ b/src/lang/slovenian.txt
@@ -822,10 +822,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Izberi g
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Preklapljaj mešan program vključeno/izključeno
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Prikaži okno z izborom glasbe
-STR_ERROR_NO_SONGS :{WHITE}Izbran je bil komplet glasbe brez skladb. Nobena skladba ne bo predvajana
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Izbor glasbenega programa
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Kazalo skladb
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}'
@@ -1490,8 +1487,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Barva ozemlja n
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Zelena
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Temno zelena
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Vijolična
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Obrni smer premika okna: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Sistem delovanja avtomatskega pomika z miško na robu. Onemogočeno - miška premika pogled, omogočeno - miška premika zemljevid.
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Gladek premik pogleda: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Način pomika pogleda na določen objekt majhnega zemljevida (centriranje pogleda). Omogočeno - pogled drsi, onemogočeno - pogled preskoči.
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Prikaz merilnega nasveta med uporabo gradbenih orodij: {STRING}
@@ -1523,8 +1518,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Ukaz-klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Kontrola-klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Izklop
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Premik slike z levim klikom: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Omogoči pomik pogleda z levim klikom miške in vlečenjem. Primerno za dotične zaslone.
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Zapri okno z desnim klikom: {STRING}
STR_CONFIG_SETTING_AUTOSAVE :Samodejno shrani: {STRING}
@@ -2843,6 +2836,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Prvotne
STR_ABOUT_VERSION :{BLACK}OpenTTD različica {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 ekipa OpenTTD
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Shrani igro
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Naloži igro
@@ -3134,8 +3134,6 @@ STR_TOWN_POPULATION :{BLACK}Svetovno
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Mesto)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Prebivalstvo: {ORANGE}{COMMA}{BLACK} Število stavb: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Potnikov prejšnji mesec: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Pošte prejšnji mesec: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Količina potrebnega tovora za rast mesta:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} potrebno
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} je potreben pozimi
diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt
index 6993b7b04b..d0deb739eb 100644
--- a/src/lang/spanish.txt
+++ b/src/lang/spanish.txt
@@ -670,10 +670,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Seleccio
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Encender/apagar mezclador
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Mostrar ventana de selección de pistas musicales
-STR_ERROR_NO_SONGS :{WHITE}Se ha seleccionado un conjunto de música sin canciones. No se reproducirá música
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Selección del programa de música
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Índice de pistas
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programa - '{STRING}'
@@ -1338,8 +1335,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Color a usar pa
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verde
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Verde oscuro
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violeta
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Desplazamiento de vista invertido: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Comportamiento del juego al arrastrar el mapa con el botón derecho. Si se desactiva, el ratón mueve la cámara. Si se activa, el ratón mueve el mapa
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Desplazamiento de vista suavizado: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Controla la forma en la que la vista principal se mueve a una posición específica como resultado de hacer click en el mapa o al enviar la orden de moverse a un objeto determinado del mapa. Si se activa, la vista se mueve de forma suave. Si se desactiva, la vista se mueve directamente al destino
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Mostrar medidas usando las herramientas de construcción: {STRING}
@@ -1371,8 +1366,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Click
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Click
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Desactivado
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Desplazamiento con botón izquierdo: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Activa el deslizamiento del mapa al arrastrarlo con el botón izquierdo. Esto es especialmente útil al usar pantallas táctiles
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Cerrar ventana con click derecho: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Cierra una ventana al hacer click derecho dentro. ¡Quita la información al hacer click derecho!
@@ -2694,6 +2687,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyrigh
STR_ABOUT_VERSION :{BLACK}OpenTTD versión {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 El equipo OpenTTD
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Guardar Juego
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Cargar Juego
@@ -2985,8 +2985,6 @@ STR_TOWN_POPULATION :{BLACK}Poblaci
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Ciudad)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Habitantes: {ORANGE}{COMMA}{BLACK} Casas: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Pasajeros último mes: {ORANGE}{COMMA}{BLACK} Máx.: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Correo último mes: {ORANGE}{COMMA}{BLACK} Máx.: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Carga necesaria para crecimiento del municipio:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} requeridos
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} requerido en invierno
diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt
index afca51643c..c658780710 100644
--- a/src/lang/spanish_MX.txt
+++ b/src/lang/spanish_MX.txt
@@ -476,6 +476,7 @@ STR_ABOUT_MENU_SCREENSHOT :Captura de pant
STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Captura con acercamiento completo
STR_ABOUT_MENU_DEFAULTZOOM_SCREENSHOT :Captura con acercamiento predeterminado
STR_ABOUT_MENU_GIANT_SCREENSHOT :Captura de mapa completo
+STR_ABOUT_MENU_SHOW_FRAMERATE :Mostrar FPS
STR_ABOUT_MENU_ABOUT_OPENTTD :Acerca de 'OpenTTD'
STR_ABOUT_MENU_SPRITE_ALIGNER :Alineador de sprites
STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Activar cajas delimitadoras
@@ -651,6 +652,7 @@ STR_MUSIC_RULER_MARKER :{TINY_FONT}{BLA
STR_MUSIC_TRACK_NONE :{TINY_FONT}{DKGREEN}--
STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKGREEN}{ZEROFILL_NUM}
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
+STR_MUSIC_TITLE_NOMUSIC :{TINY_FONT}{DKGREEN}No hay música disponible
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}"
STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Pista
STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Título
@@ -670,15 +672,15 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Elegir p
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Encender o apagar mezclador
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Mostrar ventana de selección de pistas musicales
-STR_ERROR_NO_SONGS :{WHITE}Se eligió una colección vacía. No se reproducirá música
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Selección del programa musical
+STR_PLAYLIST_MUSIC_SELECTION_SETNAME :{WHITE}Programa musical - "{STRING}"
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Lista de reproducción
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Programa: '{STRING}'
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Eliminar
+STR_PLAYLIST_CHANGE_SET :{BLACK}Cambiar lista musical
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Eliminar programa actual (solo Personal 1 y Personal 2)
+STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Cambiar la selección musical a otra lista instalada
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Clic en la pista de música para añadirla al programa actual (solo Personal 1 y 2)
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Clic en la pista de música para quitarla del programa actual (solo Personal 1 y 2)
@@ -881,10 +883,10 @@ STR_NEWS_EXCLUSIVE_RIGHTS_DESCRIPTION :{BIG_FONT}{BLAC
# Extra view window
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Vista {COMMA}
-STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Copiar ventana de vista
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Cambiar ventana de vista
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Copiar la vista principal a esta ventana de vista
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Pegar ventana de vista
-STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Pegar esta ventana de vista en la principal
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Cambiar vista principal
+STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Copiar ubicación en esta vista a la principal
# Game options window
STR_GAME_OPTIONS_CAPTION :{WHITE}Opciones de juego
@@ -1338,8 +1340,12 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Color para el t
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Verde
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Verde oscuro
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violeta
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Desplazamiento de vista invertido: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Efecto al arrastrar el mapa con el botón derecho. Si se desactiva, el ratón mueve la cámara. Si se activa, el ratón mueve el mapa
+STR_CONFIG_SETTING_SCROLLMODE :Desplazamiento de vista: {STRING}
+STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :Modo de recorrer la vista sobre el mapa
+STR_CONFIG_SETTING_SCROLLMODE_DEFAULT :Desplazar la vista con clic derecho, ratón en posición fija
+STR_CONFIG_SETTING_SCROLLMODE_RMB_LOCKED :Recorrer mapa con clic derecho, ratón en posición fija
+STR_CONFIG_SETTING_SCROLLMODE_RMB :Recorrer mapa con clic derecho
+STR_CONFIG_SETTING_SCROLLMODE_LMB :Recorrer mapa con clic izquierdo
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Desplazamiento de vista suavizado: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Forma en la que la vista principal se mueve a una ubicación específica al hacer clic en el minimapa o tras una orden de moverse a un objeto determinado del mapa. Si se activa, la vista se mueve de forma suave. Si se desactiva, la vista se mueve instantáneamente al sitio indicado
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Mostrar información de medidas al usar las herramientas de construcción: {STRING}
@@ -1371,8 +1377,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Clic
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Clic
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Ninguno
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Desplazamiento con botón izquierdo: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Activar el desplazamiento del mapa al arrastrar con el botón izquierdo. Esto es especialmente útil al usar pantallas táctiles
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Cerrar ventana con clic derecho: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Cerrar la ventana haciendo clic derecho sobre ella. ¡Desactiva los mensajes de ayuda con clic derecho!
@@ -2286,6 +2290,7 @@ STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Leyenda
STR_LINKGRAPH_LEGEND_ALL :{BLACK}Todas
STR_LINKGRAPH_LEGEND_NONE :{BLACK}Ninguna
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Elegir las empresas a mostrar
+STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP :{BLACK}{STRING}{}{COMPANY}
# Linkgraph legend window and linkgraph legend in smallmap
STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}sin uso
@@ -2694,6 +2699,56 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyrigh
STR_ABOUT_VERSION :{BLACK}OpenTTD versión {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018, el equipo de OpenTTD
+# Framerate display window
+STR_FRAMERATE_CAPTION :{WHITE}FPS
+STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x)
+STR_FRAMERATE_RATE_GAMELOOP :{WHITE}Simulación: {STRING}
+STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Número de ticks simulados por segundo.
+STR_FRAMERATE_RATE_BLITTER :{WHITE}FPS de gráficos: {STRING}
+STR_FRAMERATE_RATE_BLITTER_TOOLTIP :{BLACK}Número de cuadros por segundo.
+STR_FRAMERATE_SPEED_FACTOR :{WHITE}Factor de velocidad de juego actual: {DECIMAL}x
+STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Rapidez actual del juego comparada con la esperada durante una simulación normal.
+STR_FRAMERATE_CURRENT :{WHITE}Actual
+STR_FRAMERATE_AVERAGE :{WHITE}Promedio
+STR_FRAMERATE_DATA_POINTS :{WHITE}Información de {COMMA} mediciones
+STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL}{WHITE} ms
+STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL}{WHITE} ms
+STR_FRAMERATE_MS_BAD :{RED}{DECIMAL}{WHITE} ms
+STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL}{WHITE} cuadros/s
+STR_FRAMERATE_FPS_WARN :{YELLOW}{DECIMAL}{WHITE} cuadros/s
+STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL}{WHITE} cuadros/s
+STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COMMA} ms
+STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} s
+############ Leave those lines in this order!!
+STR_FRAMERATE_GAMELOOP :{WHITE}Bucles de juego totales:
+STR_FRAMERATE_GL_ECONOMY :{WHITE} Manejo de cargamento:
+STR_FRAMERATE_GL_TRAINS :{WHITE} Ticks de trenes:
+STR_FRAMERATE_GL_ROADVEHS :{WHITE} Ticks de vehículos de carretera:
+STR_FRAMERATE_GL_SHIPS :{WHITE} Ticks de barcos:
+STR_FRAMERATE_GL_AIRCRAFT :{WHITE} Ticks de aeronaves:
+STR_FRAMERATE_GL_LANDSCAPE :{WHITE} Ticks de mapa:
+STR_FRAMERATE_GL_LINKGRAPH :{WHITE} Retraro en gráfica de distribución:
+STR_FRAMERATE_DRAWING :{WHITE}Presentación de gráficos:
+STR_FRAMERATE_DRAWING_VIEWPORTS :{WHITE} Ventanas de vista generales:
+STR_FRAMERATE_VIDEO :{WHITE}Salida de video:
+STR_FRAMERATE_SOUND :{WHITE}Mezcla de sonido:
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+STR_FRAMETIME_CAPTION_GAMELOOP :Bucle de juego
+STR_FRAMETIME_CAPTION_GL_ECONOMY :Manejo de cargamento
+STR_FRAMETIME_CAPTION_GL_TRAINS :Ticks de trenes
+STR_FRAMETIME_CAPTION_GL_ROADVEHS :Ticks de vehículos de carretera
+STR_FRAMETIME_CAPTION_GL_SHIPS :Ticks de barcos
+STR_FRAMETIME_CAPTION_GL_AIRCRAFT :Ticks de areonaves
+STR_FRAMETIME_CAPTION_GL_LANDSCAPE :Ticks de mapa
+STR_FRAMETIME_CAPTION_GL_LINKGRAPH :Retraro en gráfica de distribución
+STR_FRAMETIME_CAPTION_DRAWING :Presentación de gráficos
+STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Presentación de ventanas de vista generales
+STR_FRAMETIME_CAPTION_VIDEO :Salida de video
+STR_FRAMETIME_CAPTION_SOUND :Mezcla de sonido
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Guardar partida
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Cargar partida
@@ -2978,6 +3033,7 @@ STR_EDIT_SIGN_SIGN_OSKTITLE :{BLACK}Indicar
STR_TOWN_DIRECTORY_CAPTION :{WHITE}Pueblos
STR_TOWN_DIRECTORY_NONE :{ORANGE}- Ninguno -
STR_TOWN_DIRECTORY_TOWN :{ORANGE}{TOWN}{BLACK} ({COMMA})
+STR_TOWN_DIRECTORY_CITY :{ORANGE}{TOWN}{YELLOW} (ciudad){BLACK} ({COMMA})
STR_TOWN_DIRECTORY_LIST_TOOLTIP :{BLACK}Nombres de pueblos. Clic en un nombre para centrar la vista principal en el pueblo. Ctrl+Clic abre una ventana de vista en dicha ubicación
STR_TOWN_POPULATION :{BLACK}Población mundial: {COMMA}
@@ -2985,8 +3041,7 @@ STR_TOWN_POPULATION :{BLACK}Poblaci
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (ciudad)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Habitantes: {ORANGE}{COMMA}{BLACK} Casas: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Pasajeros mes pasado: {ORANGE}{COMMA}{BLACK} Máx.: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Correo mes pasado: {ORANGE}{COMMA}{BLACK} Máx.: {ORANGE}{COMMA}
+STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} mes pasado: {ORANGE}{COMMA}{BLACK} máx.: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Cargamento necesario para crecimiento:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} requeridos
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} requerido en invierno
@@ -4233,6 +4288,7 @@ STR_ERROR_DRIVE_THROUGH_ON_TOWN_ROAD :{WHITE}... esta
STR_ERROR_DRIVE_THROUGH_DIRECTION :{WHITE}... carretera en el sentido incorrecto
STR_ERROR_DRIVE_THROUGH_CORNER :{WHITE}... las estaciones y paradas intermedias no pueden ponerse sobre esquinas
STR_ERROR_DRIVE_THROUGH_JUNCTION :{WHITE}... las estaciones y paradas intermedias no pueden ponerse sobre intersecciones
+STR_ERROR_DRIVE_THROUGH_ON_ONEWAY_ROAD :{WHITE}... la carretera está bloqueada o es de un solo sentido
# Station destruction related errors
STR_ERROR_CAN_T_REMOVE_PART_OF_STATION :{WHITE}No se puede quitar parte de la estación...
@@ -4484,6 +4540,8 @@ STR_BASESOUNDS_DOS_DESCRIPTION :Sonidos origina
STR_BASESOUNDS_WIN_DESCRIPTION :Sonidos originales de Transport Tycoon Deluxe para Windows.
STR_BASESOUNDS_NONE_DESCRIPTION :Paquete de sonidos vacío
STR_BASEMUSIC_WIN_DESCRIPTION :Música original de Transport Tycoon Deluxe para Windows.
+STR_BASEMUSIC_DOS_DESCRIPTION :Música original de Transport Tycoon Deluxe para DOS.
+STR_BASEMUSIC_TTO_DESCRIPTION :Música original de Transport Tycoon versión World Editor para DOS.
STR_BASEMUSIC_NONE_DESCRIPTION :Paquete de música vacío
##id 0x2000
diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt
index 255967c9d7..051b13271c 100644
--- a/src/lang/swedish.txt
+++ b/src/lang/swedish.txt
@@ -669,10 +669,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Välj sp
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Växla slumpning av/på
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Visa fönstret för val av musikspår
-STR_ERROR_NO_SONGS :{WHITE}Ett musikpaket utan låtar har valts. Ingen musik kommer att spelas
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Konstruera spellista
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Spårindex
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Spellista - '{STRING}'
@@ -1337,8 +1334,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Terrängens fä
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Grön
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Mörkgrön
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Violett
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Omvänd scrollriktning: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Beteende för skrollning av kartan med den högra musknappen. När det är inaktiverat rör musen kameran. När det är aktiverat rör musen kartan
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Mjuk scrollning av vy: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Kontrollera hur huvudvyn skrollar till en specifik position vid klick på minikartan eller när ett kommando används för att skrolla till ett specifikt objekt på kartan. Om det är aktiverat skrollar vyn mjukt, om det är inaktiverat hoppar den direkt till målet
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Visa måtthjälptext vid användning av byggverktyg: {STRING}
@@ -1370,8 +1365,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command-klick
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control-klick
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Av
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Scrolla med vänster musknappsklick: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Aktivera skrollning av kartan genom att dra den med den vänstra musknappen. Detta är särskilt användbart för skrollning vid användning av en pekskärm
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Stäng fönster med högerklick: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Stänger fönster när man högerklickar inuti dem. Denna inställning inaktiverar tooltips vid högerklick!
@@ -2693,6 +2686,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Ursprung
STR_ABOUT_VERSION :{BLACK}OpenTTD-version {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD-teamet
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spara spel
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Ladda spel
@@ -2984,8 +2984,6 @@ STR_TOWN_POPULATION :{BLACK}Global f
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Stad)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Invånare: {ORANGE}{COMMA}{BLACK} Hus: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passagerare förra månaden: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post förra månaden: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Fraktgods behövs för ortens tillväxt:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} krävs
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} krävs under vintern
diff --git a/src/lang/tamil.txt b/src/lang/tamil.txt
index ec3ef56fff..9c623a3619 100644
--- a/src/lang/tamil.txt
+++ b/src/lang/tamil.txt
@@ -659,10 +659,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_1_USER_DEFINED :{BLACK}'பய
STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}'பயனரால் மாற்றியமைக்கப்பட்ட 2' பிரோகிராமினைத் தேர்ந்தெடுக்கவும்
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}இசைத் த்டத்தினைத் தேர்ந்தெடுக்கும் திரையினைக் காட்டு
-STR_ERROR_NO_SONGS :{WHITE}இசைத்தடமே இல்லாதப் பட்டியல் தேர்ந்தெடுக்கப்பட்டுள்ளது. எந்த பாட்டும் ஒலிக்காது
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}இசை பிரோகிராம் தேர்ந்தெடுத்தல்
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}இசைத்தடம் வரிசை
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}பிரோகிராம் - '{STRING}'
@@ -1231,7 +1228,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :சிறுப
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :பச்சை
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :கரும் பச்சை
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :ஊதா
-STR_CONFIG_SETTING_REVERSE_SCROLLING :திருப்பப்பட்ட பக்கமுருட்டி திசை : {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING :பார்படத்தின் இலகுவான பக்கமுருட்டல்: {STRING}
STR_CONFIG_SETTING_LIVERIES :நிறுவன livery களைக் காட்டு: {STRING}
STR_CONFIG_SETTING_LIVERIES_NONE :ஒன்றுமில்லை
@@ -2380,6 +2376,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}அச
STR_ABOUT_VERSION :{BLACK}OpenTTD பதிப்பு {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD குழுமம்
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}ஆட்டத்தை பதிவு செய்
STR_SAVELOAD_LOAD_CAPTION :{WHITE}பதிவு செய்த ஆட்டத்தை தொடரு
@@ -2624,8 +2627,6 @@ STR_TOWN_POPULATION :{BLACK}உல
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (மாநகரம்)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}மக்கள்தொகை: {ORANGE}{COMMA}{BLACK} வீடுகள்: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}சென்ற மாத பயணிகள்: {ORANGE}{COMMA}{BLACK} அதிகம்: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}சென்ற மாத அஞ்சல்கள்: {ORANGE}{COMMA}{BLACK} அதிகம்: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}நகரத்தின் வளர்ச்சியிற்கு தேவையான சரக்குகள்:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} தேவை
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} குளிர்காலத்தில் தேவை
diff --git a/src/lang/thai.txt b/src/lang/thai.txt
index d939eeeeac..7bb1e09c72 100644
--- a/src/lang/thai.txt
+++ b/src/lang/thai.txt
@@ -661,10 +661,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}เล
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}เปิด/ปิด Toggle programme shuffle on/off
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}แสดงหน้าต่างเลือกรายการเพลง
-STR_ERROR_NO_SONGS :{WHITE}ชุดเพลงประกอบนี้ไม่มีการเลือกเพลงไว้
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}รายการเลือกโปรแกรมเพลง
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}รายการเพลง
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}โปรแกรม - '{STRING}'
@@ -1300,8 +1297,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :สีของ
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :สีเขียว
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :สีเขียวแก่
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :สีม่วง
-STR_CONFIG_SETTING_REVERSE_SCROLLING :กลับทิศการเลื่อนหน้าจอ: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :เลือกลักษณะการเลื่อนแผนที่ เมื่อใช้ปุ่มคลิ๊กเมาส์ขวา หากเปิดการใช้งาน หน้าจอจะเคลื่อนที่ไปในทิศตรงกันข้ามกับการคลิ๊กเมาส์ค้างแล้วลากเมาส์ไป
STR_CONFIG_SETTING_SMOOTH_SCROLLING :เลื่อนอย่างนิ่มนวลบนจอภาพ: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :ควบคุมการเคลื่อนที่ของจอภาพ เวลาคลิ๊กเลือกตำแหน่งในแผนที่ย่อ หากไม่เปิดใช้งาน ตำแหน่งของจอจะย้ายไปที่ตำแหน่งที่เลือกทันที แต่หากเปิดใช้งาน จะเคลื่อนที่ไปยังตำแหน่งอย่างนุ่มนวล
STR_CONFIG_SETTING_MEASURE_TOOLTIP :แสดงบอลลูนข้อความแสดงระยะทางหรือข้อมูลอื่นๆ เมื่อใช่เครื่องมือสร้าง: {STRING}
@@ -1333,8 +1328,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+คล
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Click
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :ปิด
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :เลื่อนหน้าจอด้วยการคลิ๊กเมาส์ซ้าย: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :เปิดใช้งานเพื่อให้สามารถใช้การคลิ๊กเมาส์ซ้ายในการเลื่อนภาพหน้าจอได้
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :ใช้รูปแบบวันที่ {STRING} เป็นชื่อเซฟของเกม
@@ -2637,6 +2630,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}ลิ
STR_ABOUT_VERSION :{BLACK}OpenTTD รุ่นที่ {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}ลิขสิทธิ์ OpenTTD {COPYRIGHT}2002-2018 ของ The OpenTTD team
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}บันทึกเกม
STR_SAVELOAD_LOAD_CAPTION :{WHITE}โหลดเกม
@@ -2912,8 +2912,6 @@ STR_TOWN_POPULATION :{BLACK}ปร
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}นคร {TOWN}
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}จำนวนประชากร: {ORANGE}{COMMA}{BLACK} จำนวนอาคาร: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}ผู้โดยสารเมื่อเดือนที่แล้ว: {ORANGE}{COMMA}{BLACK} จำนวนสูงสุด: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}ไปรษณีย์ภัณฑ์เมื่อเดือนที่แล้ว: {ORANGE}{COMMA}{BLACK} จำนวนสูงสุด: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}ความต้องการสินค้าสำหรับการขยายตัวของเมือง:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} required
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} ต้องการหิมะ
diff --git a/src/lang/traditional_chinese.txt b/src/lang/traditional_chinese.txt
index 7ce922edc1..f72e44e5fe 100644
--- a/src/lang/traditional_chinese.txt
+++ b/src/lang/traditional_chinese.txt
@@ -669,10 +669,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}選擇
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}開關播放清單亂序播放
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}於選擇視窗顯示樂軌
-STR_ERROR_NO_SONGS :{WHITE}已選擇不含音樂的音樂集,不會播放任何音樂
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}背景音樂播放清單選擇
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM}「{STRING}」
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}音軌索引
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}播放清單 - 「{STRING}」
@@ -1337,8 +1334,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :設定在小地
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :綠
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :暗綠
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :紫
-STR_CONFIG_SETTING_REVERSE_SCROLLING :反轉捲軸方向:{STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :設定在右撳拖曳滑鼠時的系統反應。如停用此選項,移動滑鼠時會移動顯示範圍 (即影像的移動方向與滑鼠的移動方向相反)。如啟用此選項,移動滑鼠時會移動顯示地圖 (即影像的移動方向與滑鼠的移動方向相同)
STR_CONFIG_SETTING_SMOOTH_SCROLLING :視野平滑移動:{STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :設定在小地圖中點選一個位置時,主視野的顯示反應。如啟用此選項,影像會移動直至到達點選的位置;否則影像會直接跳到點選的位置
STR_CONFIG_SETTING_MEASURE_TOOLTIP :使用某些建設工具時顯示度量提示:{STRING}
@@ -1370,8 +1365,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command 鍵
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Control 鍵
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :無
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :滑鼠左鍵捲動:{STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :容許以左撳並拖曳滑鼠捲動地圖。此選項對使用觸控螢幕進行捲動動作很有幫助
STR_CONFIG_SETTING_AUTOSAVE :自動儲存: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :選擇自動存檔的週期
@@ -2689,6 +2682,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}原著
STR_ABOUT_VERSION :{BLACK}OpenTTD 版本 {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD 開發小組
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}儲存遊戲
STR_SAVELOAD_LOAD_CAPTION :{WHITE}載入遊戲
@@ -2980,8 +2980,6 @@ STR_TOWN_POPULATION :{BLACK}世界
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (城市)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}人口:{ORANGE}{COMMA}{BLACK} 房屋:{ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}上月乘客數字:{ORANGE}{COMMA}{BLACK} 紀錄最高:{ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}上月郵件數量:{ORANGE}{COMMA}{BLACK} 紀錄最高:{ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}市鎮成長所需貨物:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED}需要 {ORANGE}{STRING}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} 必須是冬天
diff --git a/src/lang/turkish.txt b/src/lang/turkish.txt
index 763fb2a65a..b820385ef9 100644
--- a/src/lang/turkish.txt
+++ b/src/lang/turkish.txt
@@ -670,10 +670,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}'Özel 2
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Rastgele programı aç/kapa
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Şarkı seçim penceresini göster
-STR_ERROR_NO_SONGS :{WHITE}Şarkısız bir müzik kümesi seçildi. Hiçbir şarkı çalınmayacak
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Müzik Program Seçimi
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Parça Listesi
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}'
@@ -1338,8 +1335,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Küçük harita
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Yeşil
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Koyu yeşil
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Mor
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Fareyle kaydırma hareketini ters çevir: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Haritayı sağ fare tuşuyla kaydırırken davranış biçimi. Etkisiz kılındığında, fare kamerayı hareket ettirir. Etkinleştirildiğinde ise fare haritayı hareket ettirir.
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Düzgün viewport kaydırması: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Küçük haritaya tıklandığında veya harita üzerindeki belli bir nesneye gidilmesi için komut verildiğinde ana görüntünün nasıl kaydırılacağını kontrol eder. Etkinleştirildiğinde harita kayarak ilerler, kapatıldığında ise doğrudan hedeflenen noktaya atlama yapar.
STR_CONFIG_SETTING_MEASURE_TOOLTIP :İnşa araçları kullanılırken ölçüm ipucu göster: {STRING}
@@ -1371,8 +1366,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Komut-tıklama
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Kontrol-tıklama
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Kapalı
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Sol tık ile ekran kaydır: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Sol fare tuşuyla sürükleyerek harita kaydırma özelliğini etkinleştir. Özellikle dokunmatik-ekran kullanırken kaydırma yapmak için kullanılabilir.
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Sağ tıklama ile pencereyi kapat: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :İçerisinde sağ tıklandığında pencereyi kapatır. Sağ tıklandığında ipuçları gösterimini devre dışı bırakır!
@@ -2694,6 +2687,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Telif ha
STR_ABOUT_VERSION :{BLACK}OpenTTD sürüm {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 OpenTTD ekibi
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Oyunu Kaydet
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Yükle
@@ -2985,8 +2985,6 @@ STR_TOWN_POPULATION :{BLACK}Dünya n
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Şehir)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Nüfus: {ORANGE}{COMMA}{BLACK} Ev: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Geçen ayki yolcu: {ORANGE}{COMMA}{BLACK} azami: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Geçen ayki posta: {ORANGE}{COMMA}{BLACK} azami: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Kasaba büyümesi için gerekli kargo:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} gerekli
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} kışın gerekir
diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt
index dbb815d2dc..ac77f0cead 100644
--- a/src/lang/ukrainian.txt
+++ b/src/lang/ukrainian.txt
@@ -797,10 +797,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Вибр
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Вкл./відкл. випадкову програму
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Показує вікно вибору музичної програми
-STR_ERROR_NO_SONGS :{WHITE}Був обраний музичний набір без пісень. Пісні не будуть програватись
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Вибір музичної програми
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Назва доріжки
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Програма - '{STRING}'
@@ -1465,8 +1462,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Колір по
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :зелений
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :темнозелений
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :фіолетовий
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Змінити напрямок прокрутки: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Налаштування переміщення по карті правою кнопкою миші. При включенні переміщується карта. При виключенні - камера.
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Плавна прокрутка у вікні: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Налаштування способу прокрутки основного екрану при клацанні мишою по зменшенній карті, або інших діях, що призводять до переміщення по карті (кнопки "Оглянути", тощо). При включенні опції переміщення карти відбувається плавно. При виключенні - відбувається моментальне переміщення в необхідну точку
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Показувати підказки про розміри під час будівництва: {STRING}
@@ -1498,8 +1493,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Команда+
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+клац мишою
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :не емулювати
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Прокрутка по лівому клацу миші: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Дозволяє "тягати" карту утримуючи ліву кнопку миші, що дає можливість використовувати сенсорні екрани природнім способом..
STR_CONFIG_SETTING_AUTOSAVE :Автозбереження: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Оберіть проміжок між автоматичними збереженнями гри
@@ -2820,6 +2813,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Авто
STR_ABOUT_VERSION :{BLACK}OpenTTD версія {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 команда OpenTTD
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Зберегти гру
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Завантажити гру
@@ -3111,8 +3111,6 @@ STR_TOWN_POPULATION :{BLACK}Насе
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (місто)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Населення: {ORANGE}{COMMA}{BLACK} Будинки: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Пасажирів за місяць: {ORANGE}{COMMA}{BLACK} найбільше: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Пошти за місяць: {ORANGE}{COMMA}{BLACK} найбільше: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Вантаж, потрібний для зростання міста:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} потрібно
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} потрібно взимку
diff --git a/src/lang/unfinished/chuvash.txt b/src/lang/unfinished/chuvash.txt
index a9f98fe138..474c328f96 100644
--- a/src/lang/unfinished/chuvash.txt
+++ b/src/lang/unfinished/chuvash.txt
@@ -403,7 +403,6 @@ STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKG
STR_MUSIC_TRACK :{TINY_FONT}{BLACK}Кӗвӗ
STR_MUSIC_XTITLE :{TINY_FONT}{BLACK}Ят
-
# Playlist window
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Тасат
@@ -971,6 +970,13 @@ STR_LAI_OBJECT_DESCRIPTION_LIGHTHOUSE :Маяк
# About OpenTTD window
STR_ABOUT_VERSION :{BLACK}OpenTTD верси {REV}
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
diff --git a/src/lang/unfinished/frisian.txt b/src/lang/unfinished/frisian.txt
index 051b62c843..0a9968ddf4 100644
--- a/src/lang/unfinished/frisian.txt
+++ b/src/lang/unfinished/frisian.txt
@@ -669,10 +669,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Selektea
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Set musyk mjokselje oan/út
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Lit musykseleksjeskerm sjen.
-STR_ERROR_NO_SONGS :{WHITE}In musykset sûnder nûmers is selektearre. Gjin nûmers sille spile wurden
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Musykprogramseleksje
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Nûmeryndeks
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Program - '{STRING}'
@@ -1329,8 +1326,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Kleur fan it l
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Grien
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Donker grien
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Fiolet
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Draai scrollrjochtig om: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :By útskeakeljen beweecht de mûs de kamera. By ynskeakeljen beweecht de mûs de kaart
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Loaitsfinster floeiend scrolle : {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Bepaalt hoe it haadfinster scrollt. By ynskeakeljen sil dit floeiend wêze. By útskeakeljen ljept it byld direktst nei de selektearre lokaasje
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Under it gebrûk fan de ferskate bou-arken diminsjes sjen litte: {STRING}
@@ -1362,8 +1357,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Kommando+Klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Klik
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Ut
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Scrolle mei lofter mûsknop: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Skeakel scrollen mei de lofter mûsknop oan. Dit is brûksum foar scollen op oanreitsskermen
STR_CONFIG_SETTING_AUTOSAVE :Automatysk bewarje: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Selektearje de tiid tusken automatysk bewarje fan it spul
@@ -2477,6 +2470,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Orizjine
STR_ABOUT_VERSION :{BLACK}OpenTTD-ferzje {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 It OpenTTD team
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spul Opslaan
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Spul Lade
@@ -2754,8 +2754,6 @@ STR_TOWN_POPULATION :{BLACK}Wrâldpo
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (City)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Ynwenners: {ORANGE}{COMMA}{BLACK} Hûzen: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Passazjiers lêste moanne: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post lêste moanne: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Guod nedich foar stêdsgroei:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} ferplichte
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} ferplichte yn de winter
diff --git a/src/lang/unfinished/ido.txt b/src/lang/unfinished/ido.txt
index 4f4d4846ff..114c434f36 100644
--- a/src/lang/unfinished/ido.txt
+++ b/src/lang/unfinished/ido.txt
@@ -377,7 +377,6 @@ STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKG
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}"
-
# Playlist window
# Highscore window
@@ -778,6 +777,13 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Stabeyo di komp
STR_ABOUT_VERSION :{BLACK}OpenTTD versiono {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 La kruo OpenTTD
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Ludo Detali
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
diff --git a/src/lang/unfinished/macedonian.txt b/src/lang/unfinished/macedonian.txt
index 6a0157c5a8..30a0f142b1 100644
--- a/src/lang/unfinished/macedonian.txt
+++ b/src/lang/unfinished/macedonian.txt
@@ -641,10 +641,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Избе
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Вклучи/исклучи мешање за програм
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Прикажи диалог за избор на песна
-STR_ERROR_NO_SONGS :{WHITE}Музички сет без песни е избран. Не песни ќе се одигра
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Избор на музички програм
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Индекс на песната
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Програм - '{STRING}'
@@ -1204,6 +1201,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Ориг
STR_ABOUT_VERSION :{BLACK}OpenTTD верзија {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 OpenTTD тимот
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_LOAD_BUTTON :{BLACK}Оптоварување
STR_SAVELOAD_LOAD_TOOLTIP :{BLACK}Оптоварување на избраната игра
diff --git a/src/lang/unfinished/maltese.txt b/src/lang/unfinished/maltese.txt
index 628fe94cfc..4fc0e8cb10 100644
--- a/src/lang/unfinished/maltese.txt
+++ b/src/lang/unfinished/maltese.txt
@@ -346,7 +346,6 @@ STR_MUSIC_TRACK_DIGIT :{TINY_FONT}{DKG
STR_MUSIC_TITLE_NONE :{TINY_FONT}{DKGREEN}------
STR_MUSIC_TITLE_NAME :{TINY_FONT}{DKGREEN}"{STRING}"
-
# Playlist window
# Highscore window
@@ -683,6 +682,13 @@ STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Aghzel i
# About OpenTTD window
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
diff --git a/src/lang/unfinished/marathi.txt b/src/lang/unfinished/marathi.txt
index 2437182361..4576bccbae 100644
--- a/src/lang/unfinished/marathi.txt
+++ b/src/lang/unfinished/marathi.txt
@@ -628,10 +628,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}'कस
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}कार्यक्रम चुळबूळ - प्रारंभ / बंद
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}संगीत ट्रॅक निवड दाखवा
-STR_ERROR_NO_SONGS :{WHITE}संगीत न संगीत संच निवडले गेले आहे. एकही गाणी खेळला जाईल.
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}संगीत कार्यक्रम निवड.
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}गाणे क्रमांक
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}कार्यक्रम - '{STRING}'
@@ -1110,6 +1107,13 @@ STR_LAI_WATER_DESCRIPTION_RIVER :नदी
# About OpenTTD window
STR_ABOUT_OPENTTD :{WHITE}ओपेन टीटीडी बद्दल
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} मोकळ
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
diff --git a/src/lang/unfinished/persian.txt b/src/lang/unfinished/persian.txt
index 9701899630..30ad05666c 100644
--- a/src/lang/unfinished/persian.txt
+++ b/src/lang/unfinished/persian.txt
@@ -658,10 +658,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}انتخ
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}پخش به صورت لیست برهم ریخته
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}نمایش پنجره لیست آهنگهای انتخابی
-STR_ERROR_NO_SONGS :{WHITE}در مجموعه موسیقی آهنگی انتخاب نشده است. هیچ آهنگی پخش نخواهد شد
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}انتخاب برنامه پخش موسیقی
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}شماره ی آهنگ
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}برنامه - '{STRING}'
@@ -1227,7 +1224,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :رنگ استف
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :سبز
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :سبز تیره
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :بنفش
-STR_CONFIG_SETTING_REVERSE_SCROLLING :برعکس کردن جهت حرکت کردن صفحه: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING :تصویر صاف در نمای اضافه: {STRING}
STR_CONFIG_SETTING_MEASURE_TOOLTIP :نمایش متن کمکی وقتی از چندین ابزار استفاده می شود: {STRING}
STR_CONFIG_SETTING_LIVERIES :نمایش طراحی مخصوص وسیله نقلیه : {STRING}
@@ -1247,7 +1243,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :دستور+کل
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :کنترل+کلیک
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :خاموش
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :حرکت در نقشه با کلیک چپ:: {STRING}
STR_CONFIG_SETTING_AUTOSAVE :ذخیره خودکار: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :انتخاب فاصله زمانی بین ذخیره کردن های خودکار
@@ -2391,6 +2386,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original
STR_ABOUT_VERSION :{BLACK}OpenTTD ویرایش {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 The OpenTTD team
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}ذخیره ی بازی
STR_SAVELOAD_LOAD_CAPTION :{WHITE}ادامه ی بازی
@@ -2663,8 +2665,6 @@ STR_TOWN_POPULATION :{BLACK}جمعی
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (شهر)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}جمعیت: {ORANGE}{COMMA}{BLACK} خانه ها: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}مسافران در ماه گذشته: {ORANGE}{COMMA}{BLACK} حداکثر: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}نامه ها در ماه گذشته: {ORANGE}{COMMA}{BLACK} حداکثر: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}نوع بار برای رشد شهر:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} ضروری
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} در زمستان ضروری است
diff --git a/src/lang/unfinished/urdu.txt b/src/lang/unfinished/urdu.txt
index 324e073aa4..b5fd180e01 100644
--- a/src/lang/unfinished/urdu.txt
+++ b/src/lang/unfinished/urdu.txt
@@ -649,10 +649,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}'اپن
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}پروگرام ہلانے کی تدویم کیجئیے
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}گانا چننے کا اختیار دینے والی ونڈو دکھائیں
-STR_ERROR_NO_SONGS :{WHITE}کوئی گانا دستیاب نہیں ہے
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}موسیقی کے پروگرام کا انتخاب کریں
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}گانوں کی فہرست
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}پروگرام - '{STRING}'
@@ -2129,6 +2126,13 @@ STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{G=f}{BLACK}ک
STR_ABOUT_OPENTTD :{WHITE}اوپن ٹی ٹی ڈی کے متعلق
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} ٢٠٠٢ - ٢٠١٦ OpenTTD ٹیم
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt
index 19fbce1cfd..c1643d0731 100644
--- a/src/lang/vietnamese.txt
+++ b/src/lang/vietnamese.txt
@@ -669,10 +669,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Chọn k
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Bật/tắt chơi nhạc ngẫu nhiên
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Hiện cửa số chọn bài nhạc
-STR_ERROR_NO_SONGS :{WHITE}Đã chọn gói nhạc chuẩn nhưng không có bài nào. Không có bài nào để chơi
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Chọn Kiểu Chơi Nhạc
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Bảng Bài Nhạc
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Chương Trình - '{STRING}'
@@ -1337,8 +1334,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Màu sắc củ
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Lục
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Lục tối
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Tím
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Đảo ngược hướng cuộn: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Phản ứng khi cuộn bản đồ bằng nút chuột phải. Nếu tắt, thì chuột di chuyển theo vùng nhìn. Nếu bật thì chuột di chuyển theo bản đồ
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Cuộn uyển chuyển cửa sổ: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Điều khiển cách màn hình chính cuộn tới vị trí cụ thể khi nháy chuột vào bản đồ nhỏ hoặc khi gõ lệnh cuộn tới đối tượng trên bản đồ. Nếu bật, thì sẽ cuộn trượt, nếu tắt thì nhảy thẳng tới vị trí đó.
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Hiện bảng chú giải đo lường khi dùng các công cụ xây dựng: {STRING}
@@ -1370,8 +1365,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command+Click
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Click
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :Tắt
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Cuộn chuột trái: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Cho phép cuộn bản đồ bằng cách kéo với nút trái chuột. Tùy chọn này sẽ hữu ích khi dùng màn hình cảm ứng
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Đóng cửa số khi click chuột phải: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Đóng cửa sổ bằng cách bấm chuột phải vào đó. Ngăn tooltip bằng cách bấm phải!
@@ -2693,6 +2686,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Nguyên
STR_ABOUT_VERSION :{BLACK}OpenTTD phiên bản {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2018 Nhóm OpenTTD
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lưu Ván Chơi
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Nạp Ván Chơi
@@ -2984,8 +2984,6 @@ STR_TOWN_POPULATION :{BLACK}Dân s
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Thành Phố)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Dân số: {ORANGE}{COMMA}{BLACK} Toà nhà: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Du khách tháng trước: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Bưu kiện tháng trước: {ORANGE}{COMMA}{BLACK} max: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Hàng hoá cần để đô thị tăng trưởng:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} được yêu cầu
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} Yêu cầu trong mùa đông
diff --git a/src/lang/welsh.txt b/src/lang/welsh.txt
index 6e77712da4..c5652db878 100644
--- a/src/lang/welsh.txt
+++ b/src/lang/welsh.txt
@@ -669,10 +669,7 @@ STR_MUSIC_TOOLTIP_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Dewis y
STR_MUSIC_TOOLTIP_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Toglu cymysgu trefn rhaglen ymlaen neu i ffwrdd
STR_MUSIC_TOOLTIP_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Dangos y ffenestr dewis traciau cerddoriaeth
-STR_ERROR_NO_SONGS :{WHITE}Dewiswyd set caneuon heb ganeuon ynddo. Ni chwaraeir unrhyw ganeuon
-
# Playlist window
-STR_PLAYLIST_MUSIC_PROGRAM_SELECTION :{WHITE}Dewisiadau Rhaglen Gerddoriaeth
STR_PLAYLIST_TRACK_NAME :{TINY_FONT}{LTBLUE}{ZEROFILL_NUM} "{STRING}"
STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLACK}Indecs Traciau
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Rhaglen - '{STRING}'
@@ -1337,8 +1334,6 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :Lliw y tirwedd
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_GREEN :Gwyrdd
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_DARK_GREEN :Gwyrdd tywyll
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :Fioled
-STR_CONFIG_SETTING_REVERSE_SCROLLING :Gwrthdroi'r cyfeiriad sgrolio: {STRING}
-STR_CONFIG_SETTING_REVERSE_SCROLLING_HELPTEXT :Ymddygiad pan yn sgrolio gyda botwm dde y llygoden. Pan yr analluogir, bydd y llygoden yn symyd y camera. Pan y galluogir, bydd y llygoden yn symyd y map
STR_CONFIG_SETTING_SMOOTH_SCROLLING :Sgrolio prif ffenestr llyfn: {STRING}
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Rheoli syt y mae'r prif olygfa'n sgrolio at leoliad penodol pan yn clicio ar y map bychan neu yn rhoi gorchymyn i sgrolio at wrthrych penodol
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Dangos cymorth mesur wrth ddefnyddio'r offer adeiladu amrywiol: {STRING}
@@ -1370,8 +1365,6 @@ STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_COMMAND :Command-clic
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_CONTROL :Ctrl+Clic
STR_CONFIG_SETTING_RIGHT_MOUSE_BTN_EMU_OFF :I ffwrdd
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING :Sgrolio Clic-chwith: {STRING}
-STR_CONFIG_SETTING_LEFT_MOUSE_BTN_SCROLLING_HELPTEXT :Galluogi sgrolio ar y map drwy ei lusgo gyda botwm chwith y llygoden. Mae hyn yn arbennig o ddefnyddiol pan yn defnyddio sgrin-gyffwrdd ar gyfer sgrolio
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE :Cau ffenest wrth dde-glicio: {STRING}
STR_CONFIG_SETTING_RIGHT_MOUSE_WND_CLOSE_HELPTEXT :Cau ffenest wrth dde-glicio tu fewn iddo. Mae hyn yn analluogi dangos gwybodaeth ar dde-clicio!
@@ -2693,6 +2686,13 @@ STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Hawlfrai
STR_ABOUT_VERSION :{BLACK}fersiwn OpenTTD {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2018 Y tîm OpenTTD
+# Framerate display window
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+############ Leave those lines in this order!!
+############ End of leave-in-this-order
+
+
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Cadw Gêm
STR_SAVELOAD_LOAD_CAPTION :{WHITE}Llwytho Gêm
@@ -2984,8 +2984,6 @@ STR_TOWN_POPULATION :{BLACK}Poblogae
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (Dinas)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Poblogaeth: {ORANGE}{COMMA}{BLACK} Tai: {ORANGE}{COMMA}
-STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Teithwyr mis diwethaf: {ORANGE}{COMMA}{BLACK} uchafswm: {ORANGE}{COMMA}
-STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Post mis diwethaf: {ORANGE}{COMMA}{BLACK} uchafswm: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Nwyddau angenrheidiol ar gyfer tyfiant y dref:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED}Angen {ORANGE}{STRING}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} ei angen yn y gaeaf
diff --git a/src/linkgraph/linkgraph_gui.cpp b/src/linkgraph/linkgraph_gui.cpp
index 1fe34fe79c..c91fa20588 100644
--- a/src/linkgraph/linkgraph_gui.cpp
+++ b/src/linkgraph/linkgraph_gui.cpp
@@ -298,7 +298,7 @@ Point LinkGraphOverlay::GetStationMiddle(const Station *st) const
* Set a new cargo mask and rebuild the cache.
* @param cargo_mask New cargo mask.
*/
-void LinkGraphOverlay::SetCargoMask(uint32 cargo_mask)
+void LinkGraphOverlay::SetCargoMask(CargoTypes cargo_mask)
{
this->cargo_mask = cargo_mask;
this->RebuildCache();
@@ -319,7 +319,7 @@ void LinkGraphOverlay::SetCompanyMask(uint32 company_mask)
/** Make a number of rows with buttons for each company for the linkgraph legend window. */
NWidgetBase *MakeCompanyButtonRowsLinkGraphGUI(int *biggest_index)
{
- return MakeCompanyButtonRows(biggest_index, WID_LGL_COMPANY_FIRST, WID_LGL_COMPANY_LAST, 3, STR_LINKGRAPH_LEGEND_SELECT_COMPANIES);
+ return MakeCompanyButtonRows(biggest_index, WID_LGL_COMPANY_FIRST, WID_LGL_COMPANY_LAST, 3, STR_NULL);
}
NWidgetBase *MakeSaturationLegendLinkGraphGUI(int *biggest_index)
@@ -435,7 +435,7 @@ void LinkGraphLegendWindow::SetOverlay(LinkGraphOverlay *overlay) {
this->SetWidgetLoweredState(WID_LGL_COMPANY_FIRST + c, HasBit(companies, c));
}
}
- uint32 cargoes = this->overlay->GetCargoMask();
+ CargoTypes cargoes = this->overlay->GetCargoMask();
for (uint c = 0; c < NUM_CARGO; c++) {
if (!this->IsWidgetDisabled(WID_LGL_CARGO_FIRST + c)) {
this->SetWidgetLoweredState(WID_LGL_CARGO_FIRST + c, HasBit(cargoes, c));
@@ -496,10 +496,48 @@ void LinkGraphLegendWindow::DrawWidget(const Rect &r, int widget) const
if (this->IsWidgetDisabled(widget)) return;
CargoSpec *cargo = CargoSpec::Get(widget - WID_LGL_CARGO_FIRST);
GfxFillRect(r.left + 2, r.top + 2, r.right - 2, r.bottom - 2, cargo->legend_colour);
- DrawString(r.left, r.right, (r.top + r.bottom + 1 - FONT_HEIGHT_SMALL) / 2, cargo->abbrev, TC_BLACK, SA_HOR_CENTER);
+ DrawString(r.left, r.right, (r.top + r.bottom + 1 - FONT_HEIGHT_SMALL) / 2, cargo->abbrev, GetContrastColour(cargo->legend_colour, 73), SA_HOR_CENTER);
}
}
+bool LinkGraphLegendWindow::OnHoverCommon(Point pt, int widget, TooltipCloseCondition close_cond)
+{
+ if (IsInsideMM(widget, WID_LGL_COMPANY_FIRST, WID_LGL_COMPANY_LAST + 1)) {
+ if (this->IsWidgetDisabled(widget)) {
+ GuiShowTooltips(this, STR_LINKGRAPH_LEGEND_SELECT_COMPANIES, 0, NULL, close_cond);
+ } else {
+ uint64 params[2];
+ CompanyID cid = (CompanyID)(widget - WID_LGL_COMPANY_FIRST);
+ params[0] = STR_LINKGRAPH_LEGEND_SELECT_COMPANIES;
+ params[1] = cid;
+ GuiShowTooltips(this, STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP, 2, params, close_cond);
+ }
+ return true;
+ }
+ if (IsInsideMM(widget, WID_LGL_CARGO_FIRST, WID_LGL_CARGO_LAST + 1)) {
+ if (this->IsWidgetDisabled(widget)) return false;
+ CargoSpec *cargo = CargoSpec::Get(widget - WID_LGL_CARGO_FIRST);
+ uint64 params[1];
+ params[0] = cargo->name;
+ GuiShowTooltips(this, STR_BLACK_STRING, 1, params, close_cond);
+ return true;
+ }
+ return false;
+}
+
+void LinkGraphLegendWindow::OnHover(Point pt, int widget)
+{
+ this->OnHoverCommon(pt, widget, TCC_HOVER);
+}
+
+bool LinkGraphLegendWindow::OnRightClick(Point pt, int widget)
+{
+ if (_settings_client.gui.hover_delay_ms == 0) {
+ return this->OnHoverCommon(pt, widget, TCC_RIGHT_CLICK);
+ }
+ return false;
+}
+
/**
* Update the overlay with the new company selection.
*/
@@ -519,7 +557,7 @@ void LinkGraphLegendWindow::UpdateOverlayCompanies()
*/
void LinkGraphLegendWindow::UpdateOverlayCargoes()
{
- uint32 mask = 0;
+ CargoTypes mask = 0;
for (uint c = 0; c < NUM_CARGO; c++) {
if (this->IsWidgetDisabled(c + WID_LGL_CARGO_FIRST)) continue;
if (!this->IsWidgetLowered(c + WID_LGL_CARGO_FIRST)) continue;
diff --git a/src/linkgraph/linkgraph_gui.h b/src/linkgraph/linkgraph_gui.h
index a9be8254d4..a933bfc683 100644
--- a/src/linkgraph/linkgraph_gui.h
+++ b/src/linkgraph/linkgraph_gui.h
@@ -15,6 +15,7 @@
#include "../company_func.h"
#include "../station_base.h"
#include "../widget_type.h"
+#include "../window_gui.h"
#include "linkgraph_base.h"
#include