--- a/Makefile.in Fri Jun 01 20:54:09 2007 +0000
+++ b/Makefile.in Tue Jun 12 18:02:11 2007 +0000
@@ -31,11 +31,15 @@
OSXAPP = !!OSXAPP!!
REVISION = !!REVISION!!
AWK = !!AWK!!
+DISTCC = !!DISTCC!!
SQUIRREL_MAKE_FLAG = !!SQUIRREL_MAKE_FLAG!!
RES := $(shell if ! [ -f $(CONFIG_CACHE_SOURCE_LIST) ] || [ -n "`cmp $(CONFIG_CACHE_SOURCE_LIST) $(SOURCE_LIST)`" ]; then cp $(SOURCE_LIST) $(CONFIG_CACHE_SOURCE_LIST); fi )
all: config.cache
+ifdef DISTCC
+ @if [ -z "`echo '$(MFLAGS)' | grep '\-j'`" ]; then echo; echo "WARNING: you enabled distcc support, but you don't seem to be using the -jN paramter"; echo; fi
+endif
@for dir in $(DIRS); do \
$(MAKE) -C $$dir all; \
done
@@ -100,6 +104,9 @@
run-gdb: all
$(Q)cd !!BIN_DIR!! && gdb --ex run --args ./!!TTD!! $(OPENTTD_ARGS)
+run-prof: all
+ $(Q)cd !!BIN_DIR!! && ./!!TTD!! $(OPENTTD_ARGS) && gprof !!TTD!! | less
+
regression: all
$(Q)cd !!BIN_DIR!! && sh ai/regression/run.sh
--- a/Makefile.src.in Fri Jun 01 20:54:09 2007 +0000
+++ b/Makefile.src.in Tue Jun 12 18:02:11 2007 +0000
@@ -96,8 +96,15 @@
REV_MODIFIED := $(shell svnversion $(SRC_DIR) | sed -n 's/.*\(M\).*/\1/p' )
# Find the revision like: rXXXX-branch
REV := $(shell LC_ALL=C svn info $(SRC_DIR) | $(AWK) '/^URL:.*branch/ { split($$2, a, "/"); BRANCH="-"a[5] } /^Last Changed Rev:/ { REV="r"$$4"$(REV_MODIFIED)" } END { print REV BRANCH }')
+else
+# Are we a git dir?
+ifeq ($(shell if test -d $(SRC_DIR)/../.git; then echo 1; fi), 1)
+# Find the revision like: rXXXXM
+REV := g$(shell if head=`git rev-parse --verify HEAD 2>/dev/null`; then echo "$$head" | cut -c1-8; fi)$(shell if git diff-index HEAD | read dummy; then echo M; fi)$(shell git branch|grep '[*]'|sed 's/\* /-/;s/^-master$$//')
endif
endif
+endif
+
# Make sure we have something in REV
ifeq ($(REV),)
REV := norev000
Binary file bin/data/openttd.grf has changed
--- a/config.lib Fri Jun 01 20:54:09 2007 +0000
+++ b/config.lib Tue Jun 12 18:02:11 2007 +0000
@@ -5,6 +5,8 @@
}
set_default() {
+ released_version=""
+
ignore_extra_parameters="0"
# We set all kinds of defaults for params. Later on the user can override
# most of them; but if they don't, this default is used.
@@ -43,6 +45,7 @@
enable_universal="1"
enable_osx_g5="0"
enable_unicode="1"
+ with_distcc="1"
with_osx_sysroot="1"
with_application_bundle="1"
with_sdl="1"
@@ -61,7 +64,7 @@
with_psp_config="1"
with_threads="1"
- save_params_array="build host cc_build cc_host cxx_build cxx_host windres strip awk lipo os cpu_type revision endian config_log prefix_dir binary_dir data_dir icon_dir personal_dir install_dir custom_lang_dir second_data_dir enable_install enable_debug enable_profiling enable_dedicated enable_network enable_static enable_translator enable_assert enable_strip with_osx_sysroot enable_universal enable_osx_g5 enable_unicode with_application_bundle with_sdl with_cocoa with_zlib with_png with_makedepend with_direct_music with_sort with_iconv with_midi with_midi_arg with_libtimidity with_freetype with_fontconfig with_psp_config with_threads CC CXX CFLAGS LDFLAGS"
+ save_params_array="build host cc_build cc_host cxx_build cxx_host windres strip awk lipo os cpu_type revision endian config_log prefix_dir binary_dir data_dir icon_dir personal_dir install_dir custom_lang_dir second_data_dir enable_install enable_debug enable_profiling enable_dedicated enable_network enable_static enable_translator enable_assert enable_strip with_distcc with_osx_sysroot enable_universal enable_osx_g5 enable_unicode with_application_bundle with_sdl with_cocoa with_zlib with_png with_makedepend with_direct_music with_sort with_iconv with_midi with_midi_arg with_libtimidity with_freetype with_fontconfig with_psp_config with_threads CC CXX CFLAGS LDFLAGS"
}
detect_params() {
@@ -238,6 +241,10 @@
--with-midi=*) with_midi="$optarg";;
--with-midi-arg=*) with_midi_arg="$optarg";;
+ --without-distcc) with_distcc="0";;
+ --with-distcc) with_distcc="2";;
+ --with-distcc=*) with_distcc="$optarg";;
+
--without-osx-sysroot) with_osx_sysroot="0";;
--with-osx-sysroot) with_osx_sysroot="2";;
--with-osx-sysroot=*) with_osx_sysroot="$optarg";;
@@ -527,6 +534,35 @@
log 1 "checking stripping... skipped"
fi
+ if [ "$with_distcc" = "0" ]; then
+ log 1 "checking distcc... no"
+ elif [ "$with_distcc" = "1" ]; then
+ with_distcc="0"
+
+ log 1 "checking distcc... no (only used when forced)"
+ elif [ "$with_distcc" = "2" ]; then
+ distcc="distcc"
+ else
+ distcc="$with_distcc"
+ fi
+ if [ "$with_distcc" != "0" ]; then
+ res="`$distcc --version 2>/dev/null | head -n 1 | cut -b 0-6`"
+ if [ "$res" != "distcc" ]; then
+ distcc=""
+ log 1 "checking distcc... no"
+ if [ "$with_distcc" = "2" ]; then
+ log 1 "configure: error: no distcc detected, but was forced to be used"
+ exit 1
+ fi
+ if [ "$with_distcc" != "1" ]; then
+ log 1 "configure: error: '$with_distcc' doesn't seem a distcc to me"
+ exit 1
+ fi
+ fi
+
+ log 1 "checking distcc... $distcc"
+ fi
+
if [ "$os" != "OSX" ] && [ "$with_osx_sysroot" != "0" ]; then
if [ "$with_osx_sysroot" = "1" ]; then
with_osx_sysroot="0"
@@ -626,6 +662,47 @@
exit 1
fi
fi
+
+ if [ -n "$released_version" ]; then
+ log 1 "checking revision... release ($released_version)"
+ if [ -n "$revision" ] && [ "$revision" != "$released_version" ]; then
+ log 1 "WARNING: overriding of the revision is NOT possible for releases"
+ log 1 "WARNING: the given revision is IGNORED"
+
+ sleep 5
+ fi
+ revision=$released_version
+ else
+ if [ -n "$revision" ]; then
+ log 1 "checking revision... $revision"
+ log 1 "WARNING: we do not advise you to use this setting"
+ log 1 "WARNING: in most cases it is not safe for network use"
+ log 1 "WARNING: USE WITH CAUTION!"
+
+ sleep 5
+ elif [ -f "$ROOT_DIR/version" ]; then
+ revision="`cat $ROOT_DIR/version`"
+
+ log 1 "checking revision... $revision"
+ elif [ -d "$ROOT_DIR/.svn" ] && [ -n "`svn help`" ]; then
+ revision=""
+ log 1 "checking revision... svn detection"
+ elif [ -d "$ROOT_DIR/.git" ] && [ -n "`git help`" ]; then
+ revision=""
+ log 1 "checking revision... git detection"
+ else
+ revision=""
+ log 1 "checking revision... no detection"
+ log 1 "WARNING: there is no means to determine the version."
+ log 1 "WARNING: please use a subversion or git checkout of OpenTTD."
+ log 1 "WARNING: this version will be allowed by all game servers,"
+ log 1 "WARNING: but you will be kicked from all incompatible"
+ log 1 "WARNING: servers as you will desync."
+ log 1 "WARNING: USE WITH CAUTION!"
+
+ sleep 5
+ fi
+ fi
}
make_cflags_and_ldflags() {
@@ -959,23 +1036,6 @@
fi
fi
- if [ -n "$revision" ]; then
- log 1 "checking revision... $revision"
- log 1 "WARNING: we do not advise you to use this setting"
- log 1 "WARNING: in most cases it is not safe for network use"
- log 1 "WARNING: USE WITH CAUTION!"
-
- sleep 5
- elif [ -f "$ROOT_DIR/version" ]; then
- revision="`cat $ROOT_DIR/version`"
-
- log 1 "checking revision... $revision"
- else
- revision=""
-
- log 1 "checking revision... svn detection"
- fi
-
log 1 "using CFLAGS... $CFLAGS $CC_CFLAGS"
log 1 "using LDFLAGS... $LIBS $LDFLAGS"
@@ -990,6 +1050,14 @@
else
makedepend=""
fi
+
+ if [ "$with_distcc" != "0" ]; then
+ cc_host="$distcc $cc_host"
+ cxx_host="$distcc $cxx_host"
+ log 1 ""
+ log 1 " NOTICE: remind yourself to use 'make -jN' to make use of distcc"
+ log 1 ""
+ fi
}
check_compiler() {
@@ -1918,6 +1986,7 @@
s#!!AWK!!#$awk#g;
s#!!GCC295!!#$gcc295#g;
s#!!ENABLE_INSTALL!!#$enable_install#g;
+ s#!!DISTCC!!#$distcc#g;
"
}
--- a/configure Fri Jun 01 20:54:09 2007 +0000
+++ b/configure Tue Jun 12 18:02:11 2007 +0000
@@ -45,8 +45,8 @@
set_default
detect_params "$@"
+check_params
save_params
-check_params
make_cflags_and_ldflags
EXE=""
--- a/projects/openttd.vcproj Fri Jun 01 20:54:09 2007 +0000
+++ b/projects/openttd.vcproj Tue Jun 12 18:02:11 2007 +0000
@@ -549,6 +549,9 @@
RelativePath=".\..\src\newgrf_house.h">
</File>
<File
+ RelativePath=".\..\src\newgrf_industries.h">
+ </File>
+ <File
RelativePath=".\..\src\newgrf_sound.h">
</File>
<File
@@ -1041,6 +1044,7 @@
</File>
</Filter>
<Filter
+<<<<<<< .courant
Name="AI C++"
Filter="">
<File
@@ -1215,6 +1219,46 @@
</File>
</Filter>
<Filter
+=======
+ Name="Blitters"
+ Filter="">
+ <File
+ RelativePath=".\..\src\blitter\8bpp_debug.cpp">
+ </File>
+ <File
+ RelativePath=".\..\src\blitter\8bpp_debug.hpp">
+ </File>
+ <File
+ RelativePath=".\..\src\blitter\8bpp_optimized.cpp">
+ </File>
+ <File
+ RelativePath=".\..\src\blitter\8bpp_optimized.hpp">
+ </File>
+ <File
+ RelativePath=".\..\src\blitter\8bpp_slow.cpp">
+ </File>
+ <File
+ RelativePath=".\..\src\blitter\8bpp_slow.hpp">
+ </File>
+ <File
+ RelativePath=".\..\src\blitter\blitter.hpp">
+ </File>
+ </Filter>
+ <Filter
+ Name="Sprite loaders"
+ Filter="">
+ <File
+ RelativePath=".\..\src\spriteloader\grf.cpp">
+ </File>
+ <File
+ RelativePath=".\..\src\spriteloader\grf.hpp">
+ </File>
+ <File
+ RelativePath=".\..\src\spriteloader\spriteloader.hpp">
+ </File>
+ </Filter>
+ <Filter
+>>>>>>> .fusion-droit.r10096
Name="NewGRF"
Filter="">
<File
@@ -1239,6 +1283,9 @@
RelativePath=".\..\src\newgrf_house.cpp">
</File>
<File
+ RelativePath=".\..\src\newgrf_industries.cpp">
+ </File>
+ <File
RelativePath=".\..\src\newgrf_sound.cpp">
</File>
<File
--- a/projects/openttd_vs80.vcproj Fri Jun 01 20:54:09 2007 +0000
+++ b/projects/openttd_vs80.vcproj Tue Jun 12 18:02:11 2007 +0000
@@ -960,6 +960,10 @@
>
</File>
<File
+ RelativePath=".\..\src\newgrf_industries.h"
+ >
+ </File>
+ <File
RelativePath=".\..\src\newgrf_sound.h"
>
</File>
@@ -1609,6 +1613,7 @@
</File>
</Filter>
<Filter
+<<<<<<< .courant
Name="AI C++"
>
<File
@@ -1837,6 +1842,56 @@
</File>
</Filter>
<Filter
+=======
+ Name="Blitters"
+ >
+ <File
+ RelativePath=".\..\src\blitter\8bpp_debug.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\..\src\blitter\8bpp_debug.hpp"
+ >
+ </File>
+ <File
+ RelativePath=".\..\src\blitter\8bpp_optimized.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\..\src\blitter\8bpp_optimized.hpp"
+ >
+ </File>
+ <File
+ RelativePath=".\..\src\blitter\8bpp_slow.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\..\src\blitter\8bpp_slow.hpp"
+ >
+ </File>
+ <File
+ RelativePath=".\..\src\blitter\blitter.hpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+ Name="Sprite loaders"
+ >
+ <File
+ RelativePath=".\..\src\spriteloader\grf.cpp"
+ >
+ </File>
+ <File
+ RelativePath=".\..\src\spriteloader\grf.hpp"
+ >
+ </File>
+ <File
+ RelativePath=".\..\src\spriteloader\spriteloader.hpp"
+ >
+ </File>
+ </Filter>
+ <Filter
+>>>>>>> .fusion-droit.r10096
Name="NewGRF"
>
<File
@@ -1868,6 +1923,10 @@
>
</File>
<File
+ RelativePath=".\..\src\newgrf_industries.cpp"
+ >
+ </File>
+ <File
RelativePath=".\..\src\newgrf_sound.cpp"
>
</File>
--- a/source.list Fri Jun 01 20:54:09 2007 +0000
+++ b/source.list Tue Jun 12 18:02:11 2007 +0000
@@ -150,6 +150,7 @@
newgrf_config.h
newgrf_engine.h
newgrf_house.h
+newgrf_industries.h
newgrf_sound.h
newgrf_spritegroup.h
newgrf_station.h
@@ -380,6 +381,20 @@
ai/api/ai_vehiclelist_valuator.cpp
#end
+# Blitters
+blitter/8bpp_debug.cpp
+blitter/8bpp_debug.hpp
+blitter/8bpp_optimized.cpp
+blitter/8bpp_optimized.hpp
+blitter/8bpp_slow.cpp
+blitter/8bpp_slow.hpp
+blitter/blitter.hpp
+
+# Sprite loaders
+spriteloader/grf.cpp
+spriteloader/grf.hpp
+spriteloader/spriteloader.hpp
+
# NewGRF
newgrf.cpp
newgrf_canal.cpp
@@ -388,6 +403,7 @@
newgrf_config.cpp
newgrf_engine.cpp
newgrf_house.cpp
+newgrf_industries.cpp
newgrf_sound.cpp
newgrf_spritegroup.cpp
newgrf_station.cpp
--- a/src/ai/api/ai_vehicle.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/ai/api/ai_vehicle.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -116,7 +116,7 @@
{
if (!this->IsValidVehicle(vehicle_id)) return false;
- return this->DoCommand(0, vehicle_id, 0, CMD_SKIP_ORDER);
+ return this->DoCommand(0, vehicle_id, 0, CMD_SKIP_TO_ORDER);
}
TileIndex AIVehicle::GetLocation(VehicleID vehicle_id)
--- a/src/autoreplace_cmd.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/autoreplace_cmd.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -246,9 +246,19 @@
GetName(vehicle_name, old_v->string_id & 0x7FF, lastof(vehicle_name));
}
} else { // flags & DC_EXEC not set
+ int32 tmp_move = 0;
+ if (old_v->type == VEH_TRAIN && IsFrontEngine(old_v) && old_v->next != NULL) {
+ /* Verify that the wagons can be placed on the engine in question.
+ * This is done by building an engine, test if the wagons can be added and then sell the test engine. */
+ DoCommand(old_v->tile, new_engine_type, 3, DC_EXEC, GetCmdBuildVeh(old_v));
+ Vehicle *temp = GetVehicle(_new_vehicle_id);
+ tmp_move = DoCommand(0, (temp->index << 16) | old_v->next->index, 1, 0, CMD_MOVE_RAIL_VEHICLE);
+ DoCommand(0, temp->index, 0, DC_EXEC, GetCmdSellVeh(old_v));
+ }
+
/* Ensure that the player will not end up having negative money while autoreplacing
* This is needed because the only other check is done after the income from selling the old vehicle is substracted from the cost */
- if (p->money64 < (cost + total_cost)) {
+ if (CmdFailed(tmp_move) || p->money64 < (cost + total_cost)) {
SET_EXPENSES_TYPE(EXPENSES_NEW_VEHICLES);
SubtractMoneyFromPlayer(-sell_value); // Pay back the loan
return CMD_ERROR;
@@ -344,6 +354,8 @@
/* Now replace the vehicle */
temp_cost = ReplaceVehicle(&w, flags, cost);
+ if (CmdFailed(temp_cost)) break; // replace failed for some reason. Leave the vehicle alone
+
if (flags & DC_EXEC &&
(w->type != VEH_TRAIN || w->u.rail.first_engine == INVALID_ENGINE)) {
/* now we bought a new engine and sold the old one. We need to fix the
@@ -352,10 +364,7 @@
*/
v = w;
}
-
- if (!CmdFailed(temp_cost)) {
- cost += temp_cost;
- }
+ cost += temp_cost;
} while (w->type == VEH_TRAIN && (w = GetNextVehicle(w)) != NULL);
if (!(flags & DC_EXEC) && (p->money64 < (int32)(cost + p->engine_renew_money) || cost == 0)) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/blitter/8bpp_debug.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -0,0 +1,51 @@
+#include "../stdafx.h"
+#include "../zoom.hpp"
+#include "../gfx.h"
+#include "../functions.h"
+#include "8bpp_debug.hpp"
+
+static FBlitter_8bppDebug iFBlitter_8bppDebug;
+
+void Blitter_8bppDebug::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
+{
+ const byte *src, *src_line;
+ Pixel8 *dst, *dst_line;
+
+ /* Find where to start reading in the source sprite */
+ src_line = (const byte *)bp->sprite + (bp->skip_top * bp->sprite_width + bp->skip_left) * ScaleByZoom(1, zoom);
+ dst_line = (Pixel8 *)bp->dst + bp->top * bp->pitch + bp->left;
+
+ for (int y = 0; y < bp->height; y++) {
+ dst = dst_line;
+ dst_line += bp->pitch;
+
+ src = src_line;
+ src_line += bp->sprite_width * ScaleByZoom(1, zoom);
+
+ for (int x = 0; x < bp->width; x++) {
+ if (*src != 0) *dst = *src;
+ dst++;
+ src += ScaleByZoom(1, zoom);
+ }
+ assert(src <= src_line);
+ }
+}
+
+Sprite *Blitter_8bppDebug::Encode(SpriteLoader::Sprite *sprite, Blitter::AllocatorProc *allocator)
+{
+ Sprite *dest_sprite;
+ dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + sprite->height * sprite->width);
+
+ dest_sprite->height = sprite->height;
+ dest_sprite->width = sprite->width;
+ dest_sprite->x_offs = sprite->x_offs;
+ dest_sprite->y_offs = sprite->y_offs;
+
+ /* Write a random color as sprite; this makes debugging really easy */
+ uint color = InteractiveRandom() % 150 + 2;
+ for (int i = 0; i < sprite->height * sprite->width; i++) {
+ dest_sprite->data[i] = (sprite->data[i].m == 0) ? 0 : color;
+ }
+
+ return dest_sprite;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/blitter/8bpp_debug.hpp Tue Jun 12 18:02:11 2007 +0000
@@ -0,0 +1,30 @@
+/* $Id$ */
+
+/** @file debug.hpp */
+
+#ifndef BLITTER_8BPP_DEBUG_HPP
+#define BLITTER_8BPP_DEBUG_HPP
+
+#include "blitter.hpp"
+
+typedef Pixel Pixel8;
+
+class Blitter_8bppDebug : public Blitter {
+public:
+ uint8 GetScreenDepth() { return 8; }
+
+ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
+
+ Sprite *Encode(SpriteLoader::Sprite *sprite, Blitter::AllocatorProc *allocator);
+};
+
+class FBlitter_8bppDebug: public BlitterFactory<FBlitter_8bppDebug> {
+public:
+ /* virtual */ const char *GetName() { return "8bpp-debug"; }
+
+ /* virtual */ const char *GetDescription() { return "8bpp Debug Blitter (testing only)"; }
+
+ /* virtual */ Blitter *CreateInstance() { return new Blitter_8bppDebug(); }
+};
+
+#endif /* BLITTER_8BPP_DEBUG_HPP */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/blitter/8bpp_optimized.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -0,0 +1,201 @@
+#include "../stdafx.h"
+#include "../zoom.hpp"
+#include "../gfx.h"
+#include "../debug.h"
+#include "8bpp_optimized.hpp"
+
+static FBlitter_8bppOptimized iFBlitter_8bppOptimized;
+
+void Blitter_8bppOptimized::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
+{
+ const byte *src, *src_next;
+ Pixel8 *dst, *dst_line;
+ uint offset = 0;
+
+ /* Find the offset of this zoom-level */
+ offset = ((const byte *)bp->sprite)[(int)zoom * 2] | ((const byte *)bp->sprite)[(int)zoom * 2 + 1] << 8;
+
+ /* Find where to start reading in the source sprite */
+ src = (const byte *)bp->sprite + offset;
+ dst_line = (Pixel8 *)bp->dst + bp->top * bp->pitch + bp->left;
+
+ /* Skip over the top lines in the source image */
+ for (int y = 0; y < bp->skip_top; y++) {
+ uint trans, pixels;
+ for (;;) {
+ trans = *src++;
+ pixels = *src++;
+ if (trans == 0 && pixels == 0) break;
+ src += pixels;
+ }
+ }
+
+ src_next = src;
+
+ for (int y = 0; y < bp->height; y++) {
+ dst = dst_line;
+ dst_line += bp->pitch;
+
+ uint skip_left = bp->skip_left;
+ int width = bp->width;
+
+ for (;;) {
+ src = src_next;
+ uint8 trans = *src++;
+ uint8 pixels = *src++;
+ src_next = src + pixels;
+ if (trans == 0 && pixels == 0) break;
+ if (width <= 0) continue;
+
+ if (skip_left != 0) {
+ if (skip_left < trans) {
+ trans -= skip_left;
+ skip_left = 0;
+ } else {
+ skip_left -= trans;
+ trans = 0;
+ }
+ if (skip_left < pixels) {
+ src += skip_left;
+ pixels -= skip_left;
+ skip_left = 0;
+ } else {
+ src += pixels;
+ skip_left -= pixels;
+ pixels = 0;
+ }
+ }
+ if (skip_left != 0) continue;
+
+ /* Skip transparent pixels */
+ dst += trans;
+ width -= trans;
+ if (width <= 0) continue;
+ if (pixels > width) pixels = width;
+ width -= pixels;
+
+ switch (mode) {
+ case BM_COLOUR_REMAP:
+ for (uint x = 0; x < pixels; x++) {
+ if (bp->remap[*src] != 0) *dst = bp->remap[*src];
+ dst++; src++;
+ }
+ break;
+
+ case BM_TRANSPARENT:
+ for (uint x = 0; x < pixels; x++) {
+ *dst = bp->remap[*dst];
+ dst++; src++;
+ }
+ break;
+
+ default:
+ memcpy(dst, src, pixels);
+ dst += pixels; src += pixels;
+ break;
+ }
+ }
+ }
+}
+
+Sprite *Blitter_8bppOptimized::Encode(SpriteLoader::Sprite *sprite, Blitter::AllocatorProc *allocator)
+{
+ Sprite *dest_sprite;
+ byte *temp_dst;
+ uint memory = 0;
+ uint index = 0;
+
+ /* Make memory for all zoom-levels */
+ memory += (int)ZOOM_LVL_END * sizeof(uint16);
+ for (int i = 0; i < (int)ZOOM_LVL_END; i++) {
+ memory += UnScaleByZoom(sprite->height, (ZoomLevel)i) * UnScaleByZoom(sprite->width, (ZoomLevel)i);
+ index += 2;
+ }
+
+ /* We have no idea how much memory we really need, so just guess something */
+ memory *= 5;
+ temp_dst = MallocT<byte>(memory);
+
+ /* Make the sprites per zoom-level */
+ for (int i = 0; i < (int)ZOOM_LVL_END; i++) {
+ /* Store the scaled image */
+ const SpriteLoader::CommonPixel *src;
+
+ /* Store the index table */
+ temp_dst[i * 2] = index & 0xFF;
+ temp_dst[i * 2 + 1] = (index >> 8) & 0xFF;
+
+ byte *dst = &temp_dst[index];
+
+ for (int y = 0; y < UnScaleByZoom(sprite->height, (ZoomLevel)i); y++) {
+ uint trans = 0;
+ uint pixels = 0;
+ uint last_color = 0;
+ uint count_index = 0;
+ uint rx = 0;
+ src = &sprite->data[ScaleByZoom(y, (ZoomLevel)i) * sprite->width];
+
+ for (int x = 0; x < UnScaleByZoom(sprite->width, (ZoomLevel)i); x++) {
+ uint color = 0;
+ int count = 0;
+
+ /* Get the color keeping in mind the zoom-level */
+ for (int j = 0; j < ScaleByZoom(1, (ZoomLevel)i); j++) {
+ if (src->m != 0) { color = src->m; count++; }
+ src++;
+ rx++;
+ /* Because of the scaling it might happen we read outside the buffer. Avoid that. */
+ if (rx == sprite->width) break;
+ }
+ /* If more than 12.5% of the pixels are non-transparent, make thisone non-transparent too */
+ if (count < ScaleByZoom(1, (ZoomLevel)i) / 8) color = 0;
+
+ if (last_color == 0 || color == 0) {
+ if (count_index != 0) {
+ /* Write how many non-transparent bytes we get */
+ temp_dst[count_index] = pixels;
+ pixels = 0;
+ count_index = 0;
+ }
+ /* As long as we find transparency bytes, keep counting */
+ if (color == 0) {
+ last_color = 0;
+ trans++;
+ continue;
+ }
+ /* No longer transparency, so write the amount of transparent bytes */
+ *dst = trans;
+ dst++; index++;
+ trans = 0;
+ /* Reserve a byte for the pixel counter */
+ count_index = index;
+ dst++; index++;
+ }
+ last_color = color;
+ pixels++;
+ *dst = color;
+ dst++; index++;
+ }
+
+ if (count_index != 0) temp_dst[count_index] = pixels;
+
+ /* Write line-ending */
+ *dst = 0; dst++; index++;
+ *dst = 0; dst++; index++;
+ }
+ }
+
+ /* Safety check, to make sure we guessed the size correctly */
+ assert(index < memory);
+
+ /* Allocate the exact amount of memory we need */
+ dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + index);
+
+ dest_sprite->height = sprite->height;
+ dest_sprite->width = sprite->width;
+ dest_sprite->x_offs = sprite->x_offs;
+ dest_sprite->y_offs = sprite->y_offs;
+ memcpy(dest_sprite->data, temp_dst, index);
+
+ return dest_sprite;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/blitter/8bpp_optimized.hpp Tue Jun 12 18:02:11 2007 +0000
@@ -0,0 +1,30 @@
+/* $Id$ */
+
+/** @file 8bpp_nice.hpp */
+
+#ifndef BLITTER_8BPP_OPTIMIZED_HPP
+#define BLITTER_8BPP_OPTIMIZED_HPP
+
+#include "blitter.hpp"
+
+typedef Pixel Pixel8;
+
+class Blitter_8bppOptimized : public Blitter {
+public:
+ uint8 GetScreenDepth() { return 8; }
+
+ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
+
+ Sprite *Encode(SpriteLoader::Sprite *sprite, Blitter::AllocatorProc *allocator);
+};
+
+class FBlitter_8bppOptimized: public BlitterFactory<FBlitter_8bppOptimized> {
+public:
+ /* virtual */ const char *GetName() { return "8bpp-optimzed"; }
+
+ /* virtual */ const char *GetDescription() { return "8bpp Optimized Blitter (compression + all-ZoomLevel cache)"; }
+
+ /* virtual */ Blitter *CreateInstance() { return new Blitter_8bppOptimized(); }
+};
+
+#endif /* BLITTER_8BPP_OPTIMIZED_HPP */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/blitter/8bpp_slow.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -0,0 +1,63 @@
+#include "../stdafx.h"
+#include "../zoom.hpp"
+#include "../gfx.h"
+#include "8bpp_slow.hpp"
+
+static FBlitter_8bppSimple iFBlitter_8bppSimple;
+
+void Blitter_8bppSimple::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
+{
+ const byte *src, *src_line;
+ Pixel8 *dst, *dst_line;
+
+ /* Find where to start reading in the source sprite */
+ src_line = (const byte *)bp->sprite + (bp->skip_top * bp->sprite_width + bp->skip_left) * ScaleByZoom(1, zoom);
+ dst_line = (Pixel8 *)bp->dst + bp->top * bp->pitch + bp->left;
+
+ for (int y = 0; y < bp->height; y++) {
+ dst = dst_line;
+ dst_line += bp->pitch;
+
+ src = src_line;
+ src_line += bp->sprite_width * ScaleByZoom(1, zoom);
+
+ for (int x = 0; x < bp->width; x++) {
+ uint color = 0;
+
+ switch (mode) {
+ case BM_COLOUR_REMAP:
+ color = bp->remap[*src];
+ break;
+
+ case BM_TRANSPARENT:
+ if (*src != 0) color = bp->remap[*dst];
+ break;
+
+ default:
+ color = *src;
+ break;
+ }
+ if (color != 0) *dst = color;
+ dst++;
+ src += ScaleByZoom(1, zoom);
+ }
+ }
+}
+
+Sprite *Blitter_8bppSimple::Encode(SpriteLoader::Sprite *sprite, Blitter::AllocatorProc *allocator)
+{
+ Sprite *dest_sprite;
+ dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + sprite->height * sprite->width);;
+
+ dest_sprite->height = sprite->height;
+ dest_sprite->width = sprite->width;
+ dest_sprite->x_offs = sprite->x_offs;
+ dest_sprite->y_offs = sprite->y_offs;
+
+ /* Copy over only the 'remap' channel, as that is what we care about in 8bpp */
+ for (int i = 0; i < sprite->height * sprite->width; i++) {
+ dest_sprite->data[i] = sprite->data[i].m;
+ }
+
+ return dest_sprite;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/blitter/8bpp_slow.hpp Tue Jun 12 18:02:11 2007 +0000
@@ -0,0 +1,30 @@
+/* $Id$ */
+
+/** @file 8bpp.hpp */
+
+#ifndef BLITTER_8BPP_SIMPLE_HPP
+#define BLITTER_8BPP_SIMPLE_HPP
+
+#include "blitter.hpp"
+
+typedef Pixel Pixel8;
+
+class Blitter_8bppSimple : public Blitter {
+public:
+ uint8 GetScreenDepth() { return 8; }
+
+ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
+
+ Sprite *Encode(SpriteLoader::Sprite *sprite, Blitter::AllocatorProc *allocator);
+};
+
+class FBlitter_8bppSimple: public BlitterFactory<FBlitter_8bppSimple> {
+public:
+ /* virtual */ const char *GetName() { return "8bpp-simple"; }
+
+ /* virtual */ const char *GetDescription() { return "8bpp Simple Blitter (relative slow, but never wrong)"; }
+
+ /* virtual */ Blitter *CreateInstance() { return new Blitter_8bppSimple(); }
+};
+
+#endif /* BLITTER_8BPP_SIMPLE_HPP */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/blitter/blitter.hpp Tue Jun 12 18:02:11 2007 +0000
@@ -0,0 +1,170 @@
+/* $Id$ */
+
+/** @file blitter.hpp */
+
+#ifndef BLITTER_HPP
+#define BLITTER_HPP
+
+#include "../spriteloader/spriteloader.hpp"
+#include "../spritecache.h"
+#include <string>
+#include <map>
+
+enum BlitterMode {
+ BM_NORMAL,
+ BM_COLOUR_REMAP,
+ BM_TRANSPARENT,
+};
+
+/**
+ * How all blitters should look like. Extend this class to make your own.
+ */
+class Blitter {
+public:
+ struct BlitterParams {
+ const void *sprite; ///< Pointer to the sprite how ever the encoder stored it
+ const byte *remap; ///< XXX -- Temporary storage for remap array
+
+ int skip_left, skip_top; ///< How much pixels of the source to skip on the left and top (based on zoom of dst)
+ int width, height; ///< The width and height in pixels that needs to be drawn to dst
+ int sprite_width; ///< Real width of the sprite
+ int sprite_height; ///< Real height of the sprite
+ int left, top; ///< The offset in the 'dst' in pixels to start drawing
+
+ void *dst; ///< Destination buffer
+ int pitch; ///< The pitch of the destination buffer
+ };
+
+ typedef void *AllocatorProc(size_t size);
+
+ /**
+ * Get the screen depth this blitter works for.
+ * This is either: 8, 16, 24 or 32.
+ */
+ virtual uint8 GetScreenDepth() = 0;
+
+ /**
+ * Draw an image to the screen, given an amount of params defined above.
+ */
+ virtual void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) = 0;
+
+ /**
+ * Convert a sprite from the loader to our own format.
+ */
+ virtual Sprite *Encode(SpriteLoader::Sprite *sprite, Blitter::AllocatorProc *allocator) = 0;
+
+ virtual ~Blitter() { }
+};
+
+/**
+ * The base factory, keeping track of all blitters.
+ */
+class BlitterFactoryBase {
+private:
+ char *name;
+ typedef std::map<std::string, BlitterFactoryBase *> Blitters;
+
+ static Blitters &GetBlitters()
+ {
+ static Blitters &s_blitters = *new Blitters();
+ return s_blitters;
+ }
+
+ static Blitter **GetActiveBlitter()
+ {
+ static Blitter *s_blitter = NULL;
+ return &s_blitter;
+ }
+
+protected:
+ /**
+ * Register a blitter internally, based on his name.
+ * @param name the name of the blitter.
+ * @note an assert() will be trigger if 2 blitters with the same name try to register.
+ */
+ void RegisterBlitter(const char *name)
+ {
+ /* Don't register nameless Blitters */
+ if (name == NULL) return;
+
+ this->name = strdup(name);
+ std::pair<Blitters::iterator, bool> P = GetBlitters().insert(Blitters::value_type(name, this));
+ assert(P.second);
+ }
+
+public:
+ BlitterFactoryBase() :
+ name(NULL)
+ {}
+
+ virtual ~BlitterFactoryBase() { if (this->name != NULL) GetBlitters().erase(this->name); free(this->name); }
+
+ /**
+ * Find the requested blitter and return his class.
+ * @param name the blitter to select.
+ * @post Sets the blitter so GetCurrentBlitter() returns it too.
+ */
+ static Blitter *SelectBlitter(const char *name)
+ {
+ if (GetBlitters().size() == 0) return NULL;
+
+ Blitters::iterator it = GetBlitters().begin();
+ for (; it != GetBlitters().end(); it++) {
+ BlitterFactoryBase *b = (*it).second;
+ if (strcasecmp(name, b->name) == 0) {
+ Blitter *newb = b->CreateInstance();
+ *GetActiveBlitter() = newb;
+ return newb;
+ }
+ }
+ return NULL;
+ }
+
+ /**
+ * Get the current active blitter (always set by calling SelectBlitter).
+ */
+ static Blitter *GetCurrentBlitter()
+ {
+ return *GetActiveBlitter();
+ }
+
+
+ static char *GetBlittersInfo(char *p, const char *last)
+ {
+ p += snprintf(p, last - p, "List of blitters:\n");
+ Blitters::iterator it = GetBlitters().begin();
+ for (; it != GetBlitters().end(); it++) {
+ BlitterFactoryBase *b = (*it).second;
+ p += snprintf(p, last - p, "%18s: %s\n", b->name, b->GetDescription());
+ }
+ p += snprintf(p, last - p, "\n");
+
+ return p;
+ }
+
+ /**
+ * Get a nice description of the blitter-class.
+ */
+ virtual const char *GetDescription() = 0;
+
+ /**
+ * Create an instance of this Blitter-class.
+ */
+ virtual Blitter *CreateInstance() = 0;
+};
+
+/**
+ * A template factory, so ->GetName() works correctly. This because else some compiler will complain.
+ */
+template <class T>
+class BlitterFactory: public BlitterFactoryBase {
+public:
+ BlitterFactory() { this->RegisterBlitter(((T *)this)->GetName()); }
+
+ /**
+ * Get the long, human readable, name for the Blitter-class.
+ */
+ const char *GetName();
+};
+
+#endif /* BLITTER_HPP */
--- a/src/build_vehicle_gui.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/build_vehicle_gui.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -240,6 +240,19 @@
return _internal_sort_order ? -r : r;
}
+static int CDECL TrainEngineCapacitySorter(const void *a, const void *b)
+{
+ int va = RailVehInfo(*(const EngineID*)a)->capacity;
+ int vb = RailVehInfo(*(const EngineID*)b)->capacity;
+ int r = va - vb;
+
+ if (r == 0) {
+ /* Use EngineID to sort instead since we want consistent sorting */
+ return EngineNumberSorter(a, b);
+ }
+ return _internal_sort_order ? -r : r;
+}
+
static int CDECL TrainEnginesThenWagonsSorter(const void *a, const void *b)
{
EngineID va = *(const EngineID*)a;
@@ -254,6 +267,32 @@
return _internal_sort_order ? -r : r;
}
+static int CDECL RoadVehEngineCapacitySorter(const void *a, const void *b)
+{
+ int va = RoadVehInfo(*(const EngineID*)a)->capacity;
+ int vb = RoadVehInfo(*(const EngineID*)b)->capacity;
+ int r = va - vb;
+
+ if (r == 0) {
+ /* Use EngineID to sort instead since we want consistent sorting */
+ return EngineNumberSorter(a, b);
+ }
+ return _internal_sort_order ? -r : r;
+}
+
+static int CDECL ShipEngineCapacitySorter(const void *a, const void *b)
+{
+ int va = ShipVehInfo(*(const EngineID*)a)->capacity;
+ int vb = ShipVehInfo(*(const EngineID*)b)->capacity;
+ int r = va - vb;
+
+ if (r == 0) {
+ /* Use EngineID to sort instead since we want consistent sorting */
+ return EngineNumberSorter(a, b);
+ }
+ return _internal_sort_order ? -r : r;
+}
+
/* Aircraft sorting functions */
static int CDECL AircraftEngineCostSorter(const void *a, const void *b)
@@ -293,18 +332,25 @@
static int CDECL AircraftEngineCargoSorter(const void *a, const void *b)
{
- const int va = AircraftVehInfo(*(const EngineID*)a)->passenger_capacity;
- const int vb = AircraftVehInfo(*(const EngineID*)b)->passenger_capacity;
- const int r = va - vb;
+ int va = AircraftVehInfo(*(const EngineID*)a)->passenger_capacity;
+ int vb = AircraftVehInfo(*(const EngineID*)b)->passenger_capacity;
+ int r = va - vb;
if (r == 0) {
- /* Use EngineID to sort instead since we want consistent sorting */
- return EngineNumberSorter(a, b);
+ /* The planes has the same passenger capacity. Check mail capacity instead */
+ va = AircraftVehInfo(*(const EngineID*)a)->mail_capacity;
+ vb = AircraftVehInfo(*(const EngineID*)b)->mail_capacity;
+ r = va - vb;
+
+ if (r == 0) {
+ /* Use EngineID to sort instead since we want consistent sorting */
+ return EngineNumberSorter(a, b);
+ }
}
return _internal_sort_order ? -r : r;
}
-static EngList_SortTypeFunction * const _sorter[][9] = {{
+static EngList_SortTypeFunction * const _sorter[][10] = {{
/* Trains */
&TrainEngineNumberSorter,
&TrainEngineCostSorter,
@@ -315,18 +361,21 @@
&TrainEngineRunningCostSorter,
&TrainEnginePowerVsRunningCostSorter,
&EngineReliabilitySorter,
+ &TrainEngineCapacitySorter,
}, {
/* Road vehicles */
&EngineNumberSorter,
&EngineIntroDateSorter,
&EngineNameSorter,
&EngineReliabilitySorter,
+ &RoadVehEngineCapacitySorter,
}, {
/* Ships */
&EngineNumberSorter,
&EngineIntroDateSorter,
&EngineNameSorter,
&EngineReliabilitySorter,
+ &ShipEngineCapacitySorter,
}, {
/* Aircraft */
&EngineNumberSorter,
@@ -339,7 +388,7 @@
&AircraftEngineCargoSorter,
}};
-static const StringID _sort_listing[][10] = {{
+static const StringID _sort_listing[][11] = {{
/* Trains */
STR_ENGINE_SORT_ENGINE_ID,
STR_ENGINE_SORT_COST,
@@ -350,6 +399,7 @@
STR_ENGINE_SORT_RUNNING_COST,
STR_ENGINE_SORT_POWER_VS_RUNNING_COST,
STR_SORT_BY_RELIABILITY,
+ STR_ENGINE_SORT_CARGO_CAPACITY,
INVALID_STRING_ID
}, {
/* Road vehicles */
@@ -357,6 +407,7 @@
STR_ENGINE_SORT_INTRO_DATE,
STR_SORT_BY_DROPDOWN_NAME,
STR_SORT_BY_RELIABILITY,
+ STR_ENGINE_SORT_CARGO_CAPACITY,
INVALID_STRING_ID
}, {
/* Ships */
@@ -364,6 +415,7 @@
STR_ENGINE_SORT_INTRO_DATE,
STR_SORT_BY_DROPDOWN_NAME,
STR_SORT_BY_RELIABILITY,
+ STR_ENGINE_SORT_CARGO_CAPACITY,
INVALID_STRING_ID
}, {
/* Aircraft */
--- a/src/callback_table.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/callback_table.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -33,6 +33,7 @@
CommandCallback CcPlaceSign;
CommandCallback CcTerraform;
CommandCallback CcBuildTown;
+CommandCallback CcGiveMoney;
/* rail_gui.cpp */
CommandCallback CcPlaySound1E;
@@ -88,7 +89,8 @@
/* 0x17 */ CcCloneShip,
/* 0x18 */ CcCloneTrain,
/* 0x19 */ CcAI,
- /* 0x1A */ CcCloneVehicle
+ /* 0x1A */ CcCloneVehicle,
+ /* 0x1B */ CcGiveMoney,
};
const int _callback_table_count = lengthof(_callback_table);
--- a/src/command.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/command.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -79,7 +79,7 @@
DEF_COMMAND(CmdReverseTrainDirection);
DEF_COMMAND(CmdModifyOrder);
-DEF_COMMAND(CmdSkipOrder);
+DEF_COMMAND(CmdSkipToOrder);
DEF_COMMAND(CmdDeleteOrder);
DEF_COMMAND(CmdInsertOrder);
DEF_COMMAND(CmdChangeServiceInt);
@@ -176,6 +176,8 @@
DEF_COMMAND(CmdRemoveAllVehiclesGroup);
DEF_COMMAND(CmdSetGroupReplaceProtection);
+DEF_COMMAND(CmdMoveOrder);
+
/* The master command table */
static const Command _command_proc_table[] = {
{CmdBuildRailroadTrack, 0}, /* 0 */
@@ -222,7 +224,7 @@
{CmdReverseTrainDirection, 0}, /* 41 */
{CmdModifyOrder, 0}, /* 42 */
- {CmdSkipOrder, 0}, /* 43 */
+ {CmdSkipToOrder, 0}, /* 43 */
{CmdDeleteOrder, 0}, /* 44 */
{CmdInsertOrder, 0}, /* 45 */
@@ -328,6 +330,7 @@
{CmdAddSharedVehicleGroup, 0}, /* 124 */
{CmdRemoveAllVehiclesGroup, 0}, /* 125 */
{CmdSetGroupReplaceProtection, 0}, /* 126 */
+ {CmdMoveOrder, 0}, /* 127 */
};
/* This function range-checks a cmd, and checks if the cmd is not NULL */
--- a/src/command.h Fri Jun 01 20:54:09 2007 +0000
+++ b/src/command.h Tue Jun 12 18:02:11 2007 +0000
@@ -57,7 +57,7 @@
CMD_REVERSE_TRAIN_DIRECTION = 41,
CMD_MODIFY_ORDER = 42,
- CMD_SKIP_ORDER = 43,
+ CMD_SKIP_TO_ORDER = 43,
CMD_DELETE_ORDER = 44,
CMD_INSERT_ORDER = 45,
@@ -143,6 +143,7 @@
CMD_MASS_START_STOP = 117,
CMD_DEPOT_SELL_ALL_VEHICLES = 118,
CMD_DEPOT_MASS_AUTOREPLACE = 119,
+
CMD_CREATE_GROUP = 120,
CMD_DELETE_GROUP = 121,
CMD_RENAME_GROUP = 122,
@@ -150,6 +151,8 @@
CMD_ADD_SHARED_VEHICLE_GROUP = 124,
CMD_REMOVE_ALL_VEHICLES_GROUP = 125,
CMD_SET_GROUP_REPLACE_PROTECTION = 126,
+
+ CMD_MOVE_ORDER = 127,
};
enum {
--- a/src/debug.h Fri Jun 01 20:54:09 2007 +0000
+++ b/src/debug.h Tue Jun 12 18:02:11 2007 +0000
@@ -93,7 +93,27 @@
#define OTTD_PRINTF64 "ll"
#endif
-/* Used for profiling */
+/* Used for profiling
+ *
+ * Usage:
+ * TIC();
+ * --Do your code--
+ * TOC("A name", 1);
+ *
+ * When you run the TIC() / TOC() multiple times, you can increase the '1'
+ * to only display average stats every N values. Some things to know:
+ *
+ * for (int i = 0; i < 5; i++) {
+ * TIC();
+ * --Do yuor code--
+ * TOC("A name", 5);
+ * }
+ *
+ * Is the correct usage for multiple TIC() / TOC() calls.
+ *
+ * TIC() / TOC() creates it's own block, so make sure not the mangle
+ * it with an other block.
+ **/
#define TIC() {\
extern uint64 _rdtsc();\
uint64 _xxx_ = _rdtsc();\
--- a/src/dock_gui.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/dock_gui.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -235,14 +235,16 @@
case WE_CREATE: LowerWindowWidget(w, _station_show_coverage + 3); break;
case WE_PAINT: {
- int rad;
+ int rad = (_patches.modified_catchment) ? CA_DOCK : 4;
if (WP(w, def_d).close) return;
DrawWindowWidgets(w);
- rad = (_patches.modified_catchment) ? CA_DOCK : 4;
-
- if (_station_show_coverage) SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad);
+ if (_station_show_coverage) {
+ SetTileSelectBigSize(-rad, -rad, 2 * rad, 2 * rad);
+ } else {
+ SetTileSelectSize(1, 1);
+ }
DrawStationCoverageAreaText(4, 50, (uint)-1, rad);
break;
--- a/src/economy.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/economy.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -968,12 +968,12 @@
/* Randomize cargo type */
if (HASBIT(Random(), 0) && ind->produced_cargo[1] != CT_INVALID) {
cargo = ind->produced_cargo[1];
- trans = i->pct_transported[1];
- total = i->total_production[1];
+ trans = i->last_month_pct_transported[1];
+ total = i->last_month_production[1];
} else {
cargo = ind->produced_cargo[0];
- trans = i->pct_transported[0];
- total = i->total_production[0];
+ trans = i->last_month_pct_transported[0];
+ total = i->last_month_production[0];
}
/* Quit if no production in this industry
@@ -1467,6 +1467,13 @@
return;
}
+ if (v->type == VEH_TRAIN && !IsTileType(v->tile, MP_STATION)) {
+ /* The train reversed in the station. Take the "easy" way
+ * out and let the train just leave as it always did. */
+ SETBIT(v->vehicle_flags, VF_LOADING_FINISHED);
+ return;
+ }
+
int unloading_time = 0;
Vehicle *u = v;
int result = 0;
@@ -1696,7 +1703,7 @@
InvalidateWindow(v->GetVehicleListWindowClass(), v->owner);
InvalidateWindow(WC_VEHICLE_DETAILS, v->index);
- st->MarkTilesDirty();
+ st->MarkTilesDirty(true);
v->MarkDirty();
if (result & 2) InvalidateWindow(WC_STATION_VIEW, last_visited);
--- a/src/fileio.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/fileio.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -206,10 +206,10 @@
FILE *f;
char buf[MAX_PATH];
- if (strrchr(filename, PATHSEPCHAR) == NULL) {
+ if (filename[0] == PATHSEPCHAR || filename[1] == ':') {
+ ttd_strlcpy(buf, filename, lengthof(buf));
+ } else {
snprintf(buf, lengthof(buf), "%s%s", _paths.data_dir, filename);
- } else {
- ttd_strlcpy(buf, filename, lengthof(buf));
}
f = fopen(buf, "rb");
@@ -264,6 +264,31 @@
}
}
+/**
+ * Allocates and files a variable with the full path
+ * based on the given directory.
+ * @param dir the directory to base the path on
+ * @return the malloced full path
+ */
+char *BuildWithFullPath(const char *dir)
+{
+ char *dest = MallocT<char>(MAX_PATH);
+ ttd_strlcpy(dest, dir, MAX_PATH);
+
+ /* Check if absolute or relative path */
+ const char *s = strchr(dest, PATHSEPCHAR);
+
+ /* Add absolute path */
+ if (s == NULL || dest != s) {
+ getcwd(dest, MAX_PATH);
+ AppendPathSeparator(dest, MAX_PATH);
+ ttd_strlcat(dest, dir, MAX_PATH);
+ }
+ AppendPathSeparator(dest, MAX_PATH);
+
+ return dest;
+}
+
#if defined(WIN32) || defined(WINCE)
/**
* Determine the base (personal dir and game data dir) paths
@@ -307,11 +332,9 @@
/* Change the working directory to enable doubleclicking in UIs */
ChangeWorkingDirectory(exe);
- _paths.game_data_dir = MallocT<char>(MAX_PATH);
- ttd_strlcpy(_paths.game_data_dir, GAME_DATA_DIR, MAX_PATH);
+ _paths.game_data_dir = BuildWithFullPath(GAME_DATA_DIR);
#if defined(SECOND_DATA_DIR)
- _paths.second_data_dir = MallocT<char>(MAX_PATH);
- ttd_strlcpy(_paths.second_data_dir, SECOND_DATA_DIR, MAX_PATH);
+ _paths.second_data_dir = BuildWithFullPath(SECOND_DATA_DIR);
#else
_paths.second_data_dir = NULL;
#endif
@@ -325,23 +348,10 @@
}
_paths.personal_dir = str_fmt("%s" PATHSEP "%s", homedir, PERSONAL_DIR);
+ AppendPathSeparator(_paths.personal_dir, MAX_PATH);
#else /* not defined(USE_HOMEDIR) */
- _paths.personal_dir = MallocT<char>(MAX_PATH);
- ttd_strlcpy(_paths.personal_dir, PERSONAL_DIR, MAX_PATH);
-
- /* check if absolute or relative path */
- const char *s = strchr(_paths.personal_dir, PATHSEPCHAR);
-
- /* add absolute path */
- if (s == NULL || _paths.personal_dir != s) {
- getcwd(_paths.personal_dir, MAX_PATH);
- AppendPathSeparator(_paths.personal_dir, MAX_PATH);
- ttd_strlcat(_paths.personal_dir, PERSONAL_DIR, MAX_PATH);
- }
+ _paths.personal_dir = BuildWithFullPath(PERSONAL_DIR);
#endif /* defined(USE_HOMEDIR) */
-
- AppendPathSeparator(_paths.personal_dir, MAX_PATH);
- AppendPathSeparator(_paths.game_data_dir, MAX_PATH);
}
#endif /* defined(WIN32) || defined(WINCE) */
@@ -366,10 +376,7 @@
_paths.gm_dir = str_fmt("%sgm" PATHSEP, _paths.game_data_dir);
_paths.data_dir = str_fmt("%sdata" PATHSEP, _paths.game_data_dir);
#if defined(CUSTOM_LANG_DIR)
- /* Sets the search path for lng files to the custom one */
- _paths.lang_dir = MallocT<char>(MAX_PATH);
- ttd_strlcpy(_paths.lang_dir, CUSTOM_LANG_DIR, MAX_PATH);
- AppendPathSeparator(_paths.lang_dir, MAX_PATH);
+ _paths.lang_dir = BuildWithFullPath(CUSTOM_LANG_DIR);
#else
_paths.lang_dir = str_fmt("%slang" PATHSEP, _paths.game_data_dir);
#endif
--- a/src/fontcache.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/fontcache.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -14,6 +14,8 @@
#include "string.h"
#include "fontcache.h"
#include "helpers.hpp"
+#include "spriteloader/spriteloader.hpp"
+#include "blitter/blitter.hpp"
#ifdef WITH_FREETYPE
@@ -361,6 +363,11 @@
_glyph_ptr[size][GB(key, 8, 8)][GB(key, 0, 8)].width = glyph->width;
}
+void *AllocateFont(size_t size)
+{
+ return malloc(size);
+}
+
const Sprite *GetGlyph(FontSize size, WChar key)
{
@@ -368,7 +375,7 @@
FT_GlyphSlot slot;
GlyphEntry new_glyph;
GlyphEntry *glyph;
- Sprite *sprite;
+ SpriteLoader::Sprite sprite;
int width;
int height;
int x;
@@ -398,21 +405,20 @@
height = max(1, slot->bitmap.rows + (size == FS_NORMAL));
/* FreeType has rendered the glyph, now we allocate a sprite and copy the image into it */
- sprite = (Sprite*)calloc(width * height + 8, 1);
- sprite->info = 1;
- sprite->width = width;
- sprite->height = height;
- sprite->x_offs = slot->bitmap_left;
+ sprite.data = CallocT<SpriteLoader::CommonPixel>(width * height);
+ sprite.width = width;
+ sprite.height = height;
+ sprite.x_offs = slot->bitmap_left;
// XXX 2 should be determined somehow... it's right for the normal face
y_adj = (size == FS_NORMAL) ? 2 : 0;
- sprite->y_offs = GetCharacterHeight(size) - slot->bitmap_top - y_adj;
+ sprite.y_offs = GetCharacterHeight(size) - slot->bitmap_top - y_adj;
/* Draw shadow for medium size */
if (size == FS_NORMAL) {
for (y = 0; y < slot->bitmap.rows; y++) {
for (x = 0; x < slot->bitmap.width; x++) {
if (HASBIT(slot->bitmap.buffer[(x / 8) + y * slot->bitmap.pitch], 7 - (x % 8))) {
- sprite->data[1 + x + (1 + y) * sprite->width] = SHADOW_COLOUR;
+ sprite.data[1 + x + (1 + y) * sprite.width].m = SHADOW_COLOUR;
}
}
}
@@ -421,17 +427,18 @@
for (y = 0; y < slot->bitmap.rows; y++) {
for (x = 0; x < slot->bitmap.width; x++) {
if (HASBIT(slot->bitmap.buffer[(x / 8) + y * slot->bitmap.pitch], 7 - (x % 8))) {
- sprite->data[x + y * sprite->width] = FACE_COLOUR;
+ sprite.data[x + y * sprite.width].m = FACE_COLOUR;
}
}
}
- new_glyph.sprite = sprite;
+ new_glyph.sprite = BlitterFactoryBase::GetCurrentBlitter()->Encode(&sprite, AllocateFont);
+ free(sprite.data);
new_glyph.width = (slot->advance.x >> 6) + (size != FS_NORMAL);
SetGlyphPtr(size, key, &new_glyph);
- return sprite;
+ return new_glyph.sprite;
}
--- a/src/gfx.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/gfx.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -19,6 +19,7 @@
#include "genworld.h"
#include "debug.h"
#include "zoom.hpp"
+#include "blitter/blitter.hpp"
#ifdef _DEBUG
bool _dbg_screen_rect;
@@ -45,12 +46,6 @@
Colour _cur_palette[256];
byte _stringwidth_table[FS_END][224];
-enum BlitterMode {
- BM_NORMAL,
- BM_COLOUR_REMAP,
- BM_TRANSPARENT,
-};
-
static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode);
FontSize _cur_fontsize;
@@ -728,278 +723,72 @@
}
}
-struct BlitterParams {
- int start_x, start_y;
- const byte *sprite;
- Pixel *dst;
- BlitterMode mode;
- int width, height;
- int width_org;
- int pitch;
-};
-
-static void GfxBlitZoomUncomp(BlitterParams *bp, ZoomLevel zoom)
-{
- const byte *src = bp->sprite;
- Pixel *dst = bp->dst;
- int height = bp->height;
- int width = bp->width;
- int i;
-
- assert(height > 0);
- assert(width > 0);
-
- height = UnScaleByZoom(height, zoom);
-
- switch (bp->mode) {
- case BM_COLOUR_REMAP: {
- const byte *ctab = _color_remap_ptr;
-
- for (; height != 0; height--) {
- for (i = 0; i != UnScaleByZoom(width, zoom); i++) {
- byte b = ctab[src[ScaleByZoom(i, zoom)]];
-
- if (b != 0) dst[i] = b;
- }
- src += ScaleByZoom(bp->width_org, zoom);
- dst += bp->pitch;
- }
- break;
- }
-
- case BM_TRANSPARENT: {
- const byte *ctab = _color_remap_ptr;
-
- for (; height != 0; height--) {
- for (i = 0; i != UnScaleByZoom(width, zoom); i++)
- if (src[ScaleByZoom(i, zoom)] != 0) dst[i] = ctab[dst[i]];
- src += ScaleByZoom(bp->width_org, zoom);
- dst += bp->pitch;
- }
- break;
- }
-
- default:
- for (; height != 0; height--) {
- for (i = 0; i != UnScaleByZoom(width, zoom); i++)
- if (src[ScaleByZoom(i, zoom)] != 0) dst[i] = src[ScaleByZoom(i, zoom)];
- src += ScaleByZoom(bp->width_org, zoom);
- dst += bp->pitch;
- }
- break;
- }
-}
-
-static void GfxBlitTileZoom(BlitterParams *bp, ZoomLevel zoom)
-{
- const byte *src_o = bp->sprite;
- const byte *src;
- int num, skip;
- byte done;
- Pixel *dst;
- const byte *ctab;
-
- src_o += ReadLE16Aligned(src_o + bp->start_y * 2);
-
- for (;;) {
- do {
- done = src_o[0];
- num = done & 0x7F;
- skip = src_o[1];
- src = src_o + 2;
- src_o += num + 2;
-
- dst = bp->dst;
-
- if (zoom >= ZOOM_LVL_OUT_2X && (skip & 1)) {
- skip += 1;
- src += 1;
- num -= 1;
- if (num <= 0) continue;
- }
-
- if (zoom >= ZOOM_LVL_OUT_4X && (skip & 2)) {
- skip += 2;
- src += 2;
- num -= 2;
- if (num <= 0) continue;
- }
-
- if (zoom >= ZOOM_LVL_OUT_8X && (skip & 4)) {
- skip += 4;
- src += 4;
- num -= 4;
- if (num <= 0) continue;
- }
-
- if (zoom >= ZOOM_LVL_OUT_16X && (skip & 8)) {
- skip += 8;
- src += 8;
- num -= 8;
- if (num <= 0) continue;
- }
-
- if ( (skip -= bp->start_x) > 0) {
- dst += UnScaleByZoom(skip, zoom);
- } else {
- src -= skip;
- num += skip;
- if (num <= 0) continue;
- skip = 0;
- }
-
- skip = skip + num - bp->width;
- if (skip > 0) {
- num -= skip;
- if (num <= 0) continue;
- }
-
- num = UnScaleByZoom(num + ScaleByZoom(1, zoom) - 1, zoom);
-
- switch (bp->mode) {
- case BM_COLOUR_REMAP:
- ctab = _color_remap_ptr;
- for (; num != 0; num--) {
- *dst = ctab[*src];
- dst++;
- src += ScaleByZoom(1, zoom);
- }
- break;
-
- case BM_TRANSPARENT:
- ctab = _color_remap_ptr;
- for (; num != 0; num--) {
- *dst = ctab[*dst];
- dst++;
- }
- break;
-
- default:
- for (; num != 0; num--) {
- *dst = *src;
- dst++;
- src += ScaleByZoom(1, zoom);
- }
- break;
- }
-
-
- } while (!(done & 0x80));
-
- bp->dst += bp->pitch;
- if (--bp->height == 0) return;
-
- for (int i = 0; i < ScaleByZoom(1, zoom) - 1; i++) {
- do {
- done = src_o[0];
- src_o += (done & 0x7F) + 2;
- } while (!(done & 0x80));
- if (--bp->height == 0) return;
- }
- }
-}
-
-static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode)
+static inline void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode)
{
const DrawPixelInfo *dpi = _cur_dpi;
- int start_x, start_y;
- BlitterParams bp;
- int zoom_mask = ~(ScaleByZoom(1, dpi->zoom) - 1);
+ Blitter::BlitterParams bp;
- /* decode sprite header */
+ /* Move to the correct offset */
x += sprite->x_offs;
y += sprite->y_offs;
- bp.width_org = bp.width = sprite->width;
- bp.height = sprite->height;
- bp.sprite = sprite->data;
- bp.dst = dpi->dst_ptr;
- bp.mode = mode;
- bp.pitch = dpi->pitch;
-
- assert(bp.height > 0);
- assert(bp.width > 0);
-
- if (sprite->info & 8) {
- /* tile blit */
- start_y = 0;
-
- if (dpi->zoom > ZOOM_LVL_NORMAL) {
- start_y += bp.height & ~zoom_mask;
- bp.height &= zoom_mask;
- if (bp.height == 0) return;
- y &= zoom_mask;
- }
-
- if ( (y -= dpi->top) < 0) {
- bp.height += y;
- if (bp.height <= 0) return;
- start_y -= y;
- y = 0;
- } else {
- bp.dst += bp.pitch * UnScaleByZoom(y, dpi->zoom);
- }
- bp.start_y = start_y;
-
- if ( (y = y + bp.height - dpi->height) > 0) {
- bp.height -= y;
- if (bp.height <= 0) return;
- }
- start_x = 0;
- x &= zoom_mask;
- if ( (x -= dpi->left) < 0) {
- bp.width += x;
- if (bp.width <= 0) return;
- start_x -= x;
- x = 0;
- }
- bp.start_x = start_x;
- bp.dst += UnScaleByZoom(x, dpi->zoom);
-
- if ( (x = x + bp.width - dpi->width) > 0) {
- bp.width -= x;
- if (bp.width <= 0) return;
- }
-
- GfxBlitTileZoom(&bp, dpi->zoom);
- } else {
- bp.sprite += bp.width * (bp.height & ~zoom_mask);
- bp.height &= zoom_mask;
- if (bp.height == 0) return;
-
- y &= zoom_mask;
+ /* Copy the main data directly from the sprite */
+ bp.sprite = sprite->data;
+ bp.sprite_width = sprite->width;
+ bp.sprite_height = sprite->height;
+ bp.width = UnScaleByZoom(sprite->width, dpi->zoom);
+ bp.height = UnScaleByZoom(sprite->height, dpi->zoom);
+ bp.top = 0;
+ bp.left = 0;
+ bp.skip_left = 0;
+ bp.skip_top = 0;
+ bp.dst = dpi->dst_ptr;
+ bp.pitch = dpi->pitch;
+ bp.remap = _color_remap_ptr;
- if ( (y -= dpi->top) < 0) {
- bp.height += y;
- if (bp.height <= 0) return;
- bp.sprite -= bp.width * y;
- y = 0;
- } else {
- bp.dst += bp.pitch * UnScaleByZoom(y, dpi->zoom);
- }
-
- if (bp.height > dpi->height - y) {
- bp.height = dpi->height - y;
- if (bp.height <= 0) return;
- }
+ assert(sprite->width > 0);
+ assert(sprite->height > 0);
- x &= zoom_mask;
+ if (bp.width <= 0) return;
+ if (bp.height <= 0) return;
- if ( (x -= dpi->left) < 0) {
- bp.width += x;
- if (bp.width <= 0) return;
- bp.sprite -= x;
- x = 0;
- }
- bp.dst += UnScaleByZoom(x, dpi->zoom);
+ y -= dpi->top;
+ /* Check for top overflow */
+ if (y < 0) {
+ bp.height -= -UnScaleByZoom(y, dpi->zoom);
+ if (bp.height <= 0) return;
+ bp.skip_top += -UnScaleByZoom(y, dpi->zoom);
+ y = 0;
+ } else {
+ bp.top = UnScaleByZoom(y, dpi->zoom);
+ }
- if (bp.width > dpi->width - x) {
- bp.width = dpi->width - x;
- if (bp.width <= 0) return;
- }
+ /* Check for bottom overflow */
+ y += ScaleByZoom(bp.height, dpi->zoom) - dpi->height;
+ if (y > 0) {
+ bp.height -= UnScaleByZoom(y, dpi->zoom);
+ if (bp.height <= 0) return;
+ }
- GfxBlitZoomUncomp(&bp, dpi->zoom);
+ x -= dpi->left;
+ /* Check for left overflow */
+ if (x < 0) {
+ bp.width -= -UnScaleByZoom(x, dpi->zoom);
+ if (bp.width <= 0) return;
+ bp.skip_left += -UnScaleByZoom(x, dpi->zoom);
+ x = 0;
+ } else {
+ bp.left = UnScaleByZoom(x, dpi->zoom);
}
+
+ /* Check for right overflow */
+ x += ScaleByZoom(bp.width, dpi->zoom) - dpi->width;
+ if (x > 0) {
+ bp.width -= UnScaleByZoom(x, dpi->zoom);
+ if (bp.width <= 0) return;
+ }
+
+ BlitterFactoryBase::GetCurrentBlitter()->Draw(&bp, mode, dpi->zoom);
}
void DoPaletteAnimations();
--- a/src/gfxinit.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/gfxinit.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -402,6 +402,9 @@
assert(load_index == SPR_ONEWAY_BASE);
load_index += LoadGrfFile("oneway.grf", load_index, i++);
+ assert(load_index == SPR_FLAGS_BASE);
+ load_index += LoadGrfFile("flags.grf", load_index, i++);
+
/* Initialize the unicode to sprite mapping table */
InitializeUnicodeGlyphMap();
--- a/src/industry.h Fri Jun 01 20:54:09 2007 +0000
+++ b/src/industry.h Tue Jun 12 18:02:11 2007 +0000
@@ -73,27 +73,27 @@
* Defines the internal data of a functionnal industry
*/
struct Industry {
- TileIndex xy; ///< coordinates of the primary tile the industry is built one
+ TileIndex xy; ///< coordinates of the primary tile the industry is built one
byte width;
byte height;
- const Town* town; ///< Nearest town
- uint16 cargo_waiting[2]; ///< amount of cargo produced per cargo
- byte production_rate[2]; ///< production rate for each cargo
- byte prod_level; ///< general production level
- uint16 last_mo_production[2]; ///< stats of last month production per cargo
- uint16 last_mo_transported[2]; ///< stats of last month transport per cargo
- byte pct_transported[2]; ///< percentage transported per cargo
- uint16 total_production[2]; ///< total units produced per cargo
- uint16 total_transported[2]; ///< total units transported per cargo
- uint16 counter; ///< used for animation and/or production (if available cargo)
+ const Town *town; ///< Nearest town
+ uint16 cargo_waiting[2]; ///< amount of cargo produced per cargo
+ byte production_rate[2]; ///< production rate for each cargo
+ byte prod_level; ///< general production level
+ uint16 this_month_production[2]; ///< stats of this month's production per cargo
+ uint16 this_month_transported[2]; ///< stats of this month's transport per cargo
+ byte last_month_pct_transported[2]; ///< percentage transported per cargo in the last full month
+ uint16 last_month_production[2]; ///< total units produced per cargo in the last full month
+ uint16 last_month_transported[2]; ///< total units transported per cargo in the last full month
+ uint16 counter; ///< used for animation and/or production (if available cargo)
- IndustryType type; ///< type of industry. see IT_COAL_MINE and others
- OwnerByte owner; ///< owner of the industry. Which SHOULD always be (imho) OWNER_NONE
- byte random_color; ///< randomized colour of the industry, for display purpose
- Year last_prod_year; ///< last year of production
- byte was_cargo_delivered; ///< flag that indicate this has been the closest industry chosen for cargo delivery by a station. see DeliverGoodsToIndustry
+ IndustryType type; ///< type of industry. see IT_COAL_MINE and others
+ OwnerByte owner; ///< owner of the industry. Which SHOULD always be (imho) OWNER_NONE
+ byte random_color; ///< randomized colour of the industry, for display purpose
+ Year last_prod_year; ///< last year of production
+ byte was_cargo_delivered; ///< flag that indicate this has been the closest industry chosen for cargo delivery by a station. see DeliverGoodsToIndustry
- IndustryID index; ///< index of the industry in the pool of industries
+ IndustryID index; ///< index of the industry in the pool of industries
};
struct IndustryTileTable {
@@ -106,7 +106,7 @@
uint8 subst_id;
uint16 local_id; ///< id defined by the grf file for this industry
struct SpriteGroup *spritegroup; ///< pointer to the different sprites of the industry
- const struct GRFFile *grffile; ///< grf file that introduced this house
+ const struct GRFFile *grffile; ///< grf file that introduced this industry
uint8 override; ///< id of the entity been replaced by
};
@@ -116,7 +116,7 @@
struct IndustrySpec {
const IndustryTileTable *const *table;///< List of the tiles composing the industry
byte num_table; ///< Number of elements in the table
- byte cost_multiplier; ///< Base cost multiplier. Watch out for this one, << 5 VS << 8
+ uint16 cost_multiplier; ///< Base cost multiplier.
IndustryType conflicting[3]; ///< Industries this industry cannot be close to
byte check_proc; ///< Index to a procedure to check for conflicting circumstances
CargoID produced_cargo[2];
@@ -197,7 +197,6 @@
return index < GetIndustryPoolSize() && IsValidIndustry(GetIndustry(index));
}
-VARDEF int _total_industries; //general counter
static inline IndustryID GetMaxIndustryIndex()
{
@@ -209,11 +208,51 @@
return GetIndustryPoolSize() - 1;
}
+extern int _total_industries; // general counter
+extern uint16 _industry_counts[NUM_INDUSTRYTYPES]; // Number of industries per type ingame
+
static inline uint GetNumIndustries()
{
return _total_industries;
}
+/** Increment the count of industries for this type
+ * @param type IndustryType to increment
+ * @pre type < INVALID_INDUSTRYTYPE */
+static inline void IncIndustryTypeCount(IndustryType type)
+{
+ assert(type < INVALID_INDUSTRYTYPE);
+ _industry_counts[type]++;
+ _total_industries++;
+}
+
+/** Decrement the count of industries for this type
+ * @param type IndustryType to decrement
+ * @pre type < INVALID_INDUSTRYTYPE */
+static inline void DecIndustryTypeCount(IndustryType type)
+{
+ assert(type < INVALID_INDUSTRYTYPE);
+ _industry_counts[type]--;
+ _total_industries--;
+}
+
+/** get the count of industries for this type
+ * @param type IndustryType to query
+ * @pre type < INVALID_INDUSTRYTYPE */
+static inline uint8 GetIndustryTypeCount(IndustryType type)
+{
+ assert(type < INVALID_INDUSTRYTYPE);
+ return min(_industry_counts[type], 0xFF); // callback expects only a byte, so cut it
+}
+
+/** Resets both the total_industries and the _industry_counts
+ * This way, we centralize all counts activities */
+static inline void ResetIndustryCounts()
+{
+ _total_industries = 0;
+ memset(&_industry_counts, 0, sizeof(_industry_counts));
+}
+
/**
* Return a random valid industry.
*/
@@ -249,8 +288,8 @@
#define FOR_ALL_INDUSTRIES_FROM(i, start) for (i = GetIndustry(start); i != NULL; i = (i->index + 1U < GetIndustryPoolSize()) ? GetIndustry(i->index + 1U) : NULL) if (IsValidIndustry(i))
#define FOR_ALL_INDUSTRIES(i) FOR_ALL_INDUSTRIES_FROM(i, 0)
-VARDEF const Industry** _industry_sort;
-VARDEF bool _industry_sort_dirty;
+extern const Industry **_industry_sort;
+extern bool _industry_sort_dirty;
enum {
IT_COAL_MINE = 0,
--- a/src/industry_cmd.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/industry_cmd.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -37,6 +37,12 @@
static byte _industry_sound_ctr;
static TileIndex _industry_sound_tile;
+int _total_industries; //general counter
+uint16 _industry_counts[NUM_INDUSTRYTYPES]; // Number of industries per type ingame
+
+const Industry **_industry_sort;
+bool _industry_sort_dirty;
+
IndustrySpec _industry_specs[NUM_INDUSTRYTYPES];
IndustryTileSpec _industry_tile_specs[NUM_INDUSTRYTILES];
@@ -141,7 +147,8 @@
}
_industry_sort_dirty = true;
- _total_industries--;
+ DecIndustryTypeCount(i->type);
+
DeleteSubsidyWithIndustry(i->index);
DeleteWindowById(WC_INDUSTRY_VIEW, i->index);
InvalidateWindow(WC_INDUSTRY_DIRECTORY, 0);
@@ -361,10 +368,10 @@
/* fluctuating economy? */
if (_economy.fluct <= 0) cw = (cw + 1) / 2;
- i->last_mo_production[0] += cw;
+ i->this_month_production[0] += cw;
am = MoveGoodsToStation(i->xy, i->width, i->height, indspec->produced_cargo[0], cw);
- i->last_mo_transported[0] += am;
+ i->this_month_transported[0] += am;
if (am != 0) {
uint newgfx = GetIndustryTileSpec(GetIndustryGfx(tile))->anim_production;
@@ -383,10 +390,10 @@
if (_economy.fluct <= 0) cw = (cw + 1) / 2;
- i->last_mo_production[1] += cw;
+ i->this_month_production[1] += cw;
am = MoveGoodsToStation(i->xy, i->width, i->height, indspec->produced_cargo[1], cw);
- i->last_mo_transported[1] += am;
+ i->this_month_transported[1] += am;
}
}
@@ -1347,10 +1354,10 @@
uint32 r;
int j;
- _total_industries++;
i->xy = tile;
i->width = i->height = 0;
i->type = type;
+ IncIndustryTypeCount(type);
i->production_rate[0] = indspec->production_rate[0];
i->production_rate[1] = indspec->production_rate[1];
@@ -1368,20 +1375,20 @@
i->counter = GB(r, 0, 12);
i->cargo_waiting[0] = 0;
i->cargo_waiting[1] = 0;
- i->last_mo_production[0] = 0;
- i->last_mo_production[1] = 0;
- i->last_mo_transported[0] = 0;
- i->last_mo_transported[1] = 0;
- i->pct_transported[0] = 0;
- i->pct_transported[1] = 0;
- i->total_transported[0] = 0;
- i->total_transported[1] = 0;
+ i->this_month_production[0] = 0;
+ i->this_month_production[1] = 0;
+ i->this_month_transported[0] = 0;
+ i->this_month_transported[1] = 0;
+ i->last_month_pct_transported[0] = 0;
+ i->last_month_pct_transported[1] = 0;
+ i->last_month_transported[0] = 0;
+ i->last_month_transported[1] = 0;
i->was_cargo_delivered = false;
i->last_prod_year = _cur_year;
- i->total_production[0] = i->production_rate[0] * 8;
- i->total_production[1] = i->production_rate[1] * 8;
+ i->last_month_production[0] = i->production_rate[0] * 8;
+ i->last_month_production[1] = i->production_rate[1] * 8;
- if (!_generating_world) i->total_production[0] = i->total_production[1] = 0;
+ if (!_generating_world) i->last_month_production[0] = i->last_month_production[1] = 0;
i->prod_level = 0x10;
@@ -1494,7 +1501,7 @@
if (CreateNewIndustryHelper(tile, p1, flags, indspec, it) == NULL) return CMD_ERROR;
- return (_price.build_industry >> 5) * indspec->cost_multiplier;
+ return (_price.build_industry >> 8) * indspec->cost_multiplier;
}
@@ -1615,7 +1622,7 @@
new_prod = old_prod = i->production_rate[j];
if (CHANCE16I(20, 1024, r))
new_prod -= ((RandomRange(50) + 10) * old_prod) >> 8;
- if (CHANCE16I(20 + (i->pct_transported[j] * 20 >> 8), 1024, r >> 16))
+ if (CHANCE16I(20 + (i->last_month_pct_transported[j] * 20 >> 8), 1024, r >> 16))
new_prod += ((RandomRange(50) + 10) * old_prod) >> 8;
new_prod = clamp(new_prod, 0, 255);
@@ -1667,17 +1674,17 @@
for (byte j = 0; j < lengthof(indsp->produced_cargo); j++) {
if (indsp->produced_cargo[j] != CT_INVALID) {
pct = 0;
- if (i->last_mo_production[j] != 0) {
+ if (i->this_month_production[j] != 0) {
i->last_prod_year = _cur_year;
- pct = min(i->last_mo_transported[j] * 256 / i->last_mo_production[j], 255);
+ pct = min(i->this_month_transported[j] * 256 / i->this_month_production[j], 255);
}
- i->pct_transported[j] = pct;
+ i->last_month_pct_transported[j] = pct;
- i->total_production[j] = i->last_mo_production[j];
- i->last_mo_production[j] = 0;
+ i->last_month_production[j] = i->this_month_production[j];
+ i->this_month_production[j] = 0;
- i->total_transported[j] = i->last_mo_transported[j];
- i->last_mo_transported[j] = 0;
+ i->last_month_transported[j] = i->this_month_transported[j];
+ i->this_month_transported[j] = 0;
refresh = true;
}
}
@@ -1767,7 +1774,7 @@
if (only_decrease || CHANCE16(1, 3)) {
/* If you transport > 60%, 66% chance we increase, else 33% chance we increase */
- if (!only_decrease && (i->pct_transported[0] > 153) != CHANCE16(1, 3)) {
+ if (!only_decrease && (i->last_month_pct_transported[0] > 153) != CHANCE16(1, 3)) {
/* Increase production */
if (i->prod_level != 0x80) {
byte b;
@@ -1848,7 +1855,7 @@
CleanPool(&_Industry_pool);
AddBlockToPool(&_Industry_pool);
- _total_industries = 0;
+ ResetIndustryCounts();
_industry_sort_dirty = true;
_industry_sound_tile = 0;
}
@@ -1870,30 +1877,30 @@
};
static const SaveLoad _industry_desc[] = {
- SLE_CONDVAR(Industry, xy, SLE_FILE_U16 | SLE_VAR_U32, 0, 5),
- SLE_CONDVAR(Industry, xy, SLE_UINT32, 6, SL_MAX_VERSION),
- SLE_VAR(Industry, width, SLE_UINT8),
- SLE_VAR(Industry, height, SLE_UINT8),
- SLE_REF(Industry, town, REF_TOWN),
+ SLE_CONDVAR(Industry, xy, SLE_FILE_U16 | SLE_VAR_U32, 0, 5),
+ SLE_CONDVAR(Industry, xy, SLE_UINT32, 6, SL_MAX_VERSION),
+ SLE_VAR(Industry, width, SLE_UINT8),
+ SLE_VAR(Industry, height, SLE_UINT8),
+ SLE_REF(Industry, town, REF_TOWN),
SLE_CONDNULL( 2, 2, 60), ///< used to be industry's produced_cargo
- SLE_ARR(Industry, cargo_waiting, SLE_UINT16, 2),
- SLE_ARR(Industry, production_rate, SLE_UINT8, 2),
+ SLE_ARR(Industry, cargo_waiting, SLE_UINT16, 2),
+ SLE_ARR(Industry, production_rate, SLE_UINT8, 2),
SLE_CONDNULL( 3, 2, 60), ///< used to be industry's accepts_cargo
- SLE_VAR(Industry, prod_level, SLE_UINT8),
- SLE_ARR(Industry, last_mo_production, SLE_UINT16, 2),
- SLE_ARR(Industry, last_mo_transported, SLE_UINT16, 2),
- SLE_ARR(Industry, pct_transported, SLE_UINT8, 2),
- SLE_ARR(Industry, total_production, SLE_UINT16, 2),
- SLE_ARR(Industry, total_transported, SLE_UINT16, 2),
+ SLE_VAR(Industry, prod_level, SLE_UINT8),
+ SLE_ARR(Industry, this_month_production, SLE_UINT16, 2),
+ SLE_ARR(Industry, this_month_transported, SLE_UINT16, 2),
+ SLE_ARR(Industry, last_month_pct_transported, SLE_UINT8, 2),
+ SLE_ARR(Industry, last_month_production, SLE_UINT16, 2),
+ SLE_ARR(Industry, last_month_transported, SLE_UINT16, 2),
- SLE_VAR(Industry, counter, SLE_UINT16),
+ SLE_VAR(Industry, counter, SLE_UINT16),
- SLE_VAR(Industry, type, SLE_UINT8),
- SLE_VAR(Industry, owner, SLE_UINT8),
- SLE_VAR(Industry, random_color, SLE_UINT8),
- SLE_CONDVAR(Industry, last_prod_year, SLE_FILE_U8 | SLE_VAR_I32, 0, 30),
- SLE_CONDVAR(Industry, last_prod_year, SLE_INT32, 31, SL_MAX_VERSION),
- SLE_VAR(Industry, was_cargo_delivered, SLE_UINT8),
+ SLE_VAR(Industry, type, SLE_UINT8),
+ SLE_VAR(Industry, owner, SLE_UINT8),
+ SLE_VAR(Industry, random_color, SLE_UINT8),
+ SLE_CONDVAR(Industry, last_prod_year, SLE_FILE_U8 | SLE_VAR_I32, 0, 30),
+ SLE_CONDVAR(Industry, last_prod_year, SLE_INT32, 31, SL_MAX_VERSION),
+ SLE_VAR(Industry, was_cargo_delivered, SLE_UINT8),
/* reserve extra space in savegame here. (currently 32 bytes) */
SLE_CONDNULL(32, 2, SL_MAX_VERSION),
@@ -1916,7 +1923,7 @@
{
int index;
- _total_industries = 0;
+ ResetIndustryCounts();
while ((index = SlIterateArray()) != -1) {
Industry *i;
@@ -1926,8 +1933,7 @@
i = GetIndustry(index);
SlObject(i, _industry_desc);
-
- _total_industries++;
+ IncIndustryTypeCount(i->type);
}
}
--- a/src/industry_gui.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/industry_gui.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -39,7 +39,7 @@
if (_thd.place_mode == 1 && _thd.window_class == WC_BUILD_INDUSTRY) {
int ind_type = _build_industry_types[_opt_ptr->landscape][WP(w, def_d).data_1];
- SetDParam(0, (_price.build_industry >> 5) * GetIndustrySpec(ind_type)->cost_multiplier);
+ SetDParam(0, (_price.build_industry >> 8) * GetIndustrySpec(ind_type)->cost_multiplier);
DrawStringCentered(85, w->height - 21, STR_482F_COST, 0);
}
break;
@@ -326,9 +326,9 @@
DrawString(2, 117, STR_482A_PRODUCTION_LAST_MONTH, 0);
SetDParam(0, ind->produced_cargo[0]);
- SetDParam(1, i->total_production[0]);
+ SetDParam(1, i->last_month_production[0]);
- SetDParam(2, i->pct_transported[0] * 100 >> 8);
+ SetDParam(2, i->last_month_pct_transported[0] * 100 >> 8);
DrawString(4 + (IsProductionAlterable(i) ? 30 : 0), 127, STR_482B_TRANSPORTED, 0);
/* Let's put out those buttons.. */
if (IsProductionAlterable(i)) {
@@ -338,8 +338,8 @@
if (ind->produced_cargo[1] != CT_INVALID) {
SetDParam(0, ind->produced_cargo[1]);
- SetDParam(1, i->total_production[1]);
- SetDParam(2, i->pct_transported[1] * 100 >> 8);
+ SetDParam(1, i->last_month_production[1]);
+ SetDParam(2, i->last_month_pct_transported[1] * 100 >> 8);
DrawString(4 + (IsProductionAlterable(i) ? 30 : 0), 137, STR_482B_TRANSPORTED, 0);
/* Let's put out those buttons.. */
if (IsProductionAlterable(i)) {
@@ -423,7 +423,7 @@
for (byte j = 0; j < lengthof(ind->produced_cargo); j++) {
if (ind->produced_cargo[j] != CT_INVALID) {
- i->total_production[j] = 8 * i->production_rate[j];
+ i->last_month_production[j] = 8 * i->production_rate[j];
}
}
}
@@ -509,8 +509,8 @@
r = 1;
} else {
r =
- (i->total_production[0] + i->total_production[1]) -
- (j->total_production[0] + j->total_production[1]);
+ (i->last_month_production[0] + i->last_month_production[1]) -
+ (j->last_month_production[0] + j->last_month_production[1]);
}
}
break;
@@ -525,15 +525,15 @@
int pi;
int pj;
- pi = i->pct_transported[0] * 100 >> 8;
+ pi = i->last_month_pct_transported[0] * 100 >> 8;
if (ind_i->produced_cargo[1] != CT_INVALID) {
- int p = i->pct_transported[1] * 100 >> 8;
+ int p = i->last_month_pct_transported[1] * 100 >> 8;
if (p < pi) pi = p;
}
- pj = j->pct_transported[0] * 100 >> 8;
+ pj = j->last_month_pct_transported[0] * 100 >> 8;
if (ind_j->produced_cargo[1] != CT_INVALID) {
- int p = j->pct_transported[1] * 100 >> 8;
+ int p = j->last_month_pct_transported[1] * 100 >> 8;
if (p < pj) pj = p;
}
@@ -618,16 +618,16 @@
SetDParam(0, i->index);
if (ind->produced_cargo[0] != CT_INVALID) {
SetDParam(1, ind->produced_cargo[0]);
- SetDParam(2, i->total_production[0]);
+ SetDParam(2, i->last_month_production[0]);
if (ind->produced_cargo[1] != CT_INVALID) {
SetDParam(3, ind->produced_cargo[1]);
- SetDParam(4, i->total_production[1]);
- SetDParam(5, i->pct_transported[0] * 100 >> 8);
- SetDParam(6, i->pct_transported[1] * 100 >> 8);
+ SetDParam(4, i->last_month_production[1]);
+ SetDParam(5, i->last_month_pct_transported[0] * 100 >> 8);
+ SetDParam(6, i->last_month_pct_transported[1] * 100 >> 8);
DrawString(4, 28 + n * 10, STR_INDUSTRYDIR_ITEM_TWO, 0);
} else {
- SetDParam(3, i->pct_transported[0] * 100 >> 8);
+ SetDParam(3, i->last_month_pct_transported[0] * 100 >> 8);
DrawString(4, 28 + n * 10, STR_INDUSTRYDIR_ITEM, 0);
}
} else {
--- a/src/lang/american.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/american.txt Tue Jun 12 18:02:11 2007 +0000
@@ -2669,7 +2669,6 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Show capacities of each vehicle
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Show total capacity of train, split by cargo type
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Orders list - click on order to highlight it
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Skip the current order, and start the next
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Delete the highlighted order
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Make the highlighted order non-stop
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Insert a new order before the highlighted order, or add to end of list
--- a/src/lang/brazilian_portuguese.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/brazilian_portuguese.txt Tue Jun 12 18:02:11 2007 +0000
@@ -1091,6 +1091,7 @@
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Manutenção automática de helicópteros em heliportos: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Ligar ferramentas de terreno às ferramentas de transportes: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REVERSE_SCROLLING :{LTBLUE}Rolar a tela no sentido oposto ao movimento do mouse: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING :{LTBLUE}Melhorar deslocamento do vizualizador extra: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MEASURE_TOOLTIP :{LTBLUE}Exibir distâncias quando usar ferramentas de construção: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES :{LTBLUE}Exibir cores das empresas: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES_NONE :Nenhum
@@ -1398,6 +1399,31 @@
STR_NETWORK_LANG_ENGLISH :Inglês
STR_NETWORK_LANG_GERMAN :Alemão
STR_NETWORK_LANG_FRENCH :Francês
+STR_NETWORK_LANG_BRAZILIAN :Brasileiro
+STR_NETWORK_LANG_BULGARIAN :Búlgaro
+STR_NETWORK_LANG_CHINESE :Chinês
+STR_NETWORK_LANG_CZECH :Checo
+STR_NETWORK_LANG_DANISH :Dinamarquês
+STR_NETWORK_LANG_DUTCH :Holandês
+STR_NETWORK_LANG_ESPERANTO :Esperanto
+STR_NETWORK_LANG_FINNISH :Finlandês
+STR_NETWORK_LANG_HUNGARIAN :Húngaro
+STR_NETWORK_LANG_ICELANDIC :Islandês
+STR_NETWORK_LANG_ITALIAN :Italiano
+STR_NETWORK_LANG_JAPANESE :Japonês
+STR_NETWORK_LANG_KOREAN :Coreano
+STR_NETWORK_LANG_LITHUANIAN :Lituano
+STR_NETWORK_LANG_NORWEGIAN :Norueguês
+STR_NETWORK_LANG_POLISH :Polandês
+STR_NETWORK_LANG_PORTUGUESE :Português
+STR_NETWORK_LANG_ROMANIAN :Romeno
+STR_NETWORK_LANG_RUSSIAN :Russo
+STR_NETWORK_LANG_SLOVAK :Eslovaco
+STR_NETWORK_LANG_SLOVENIAN :Esloveno
+STR_NETWORK_LANG_SPANISH :Espanhol
+STR_NETWORK_LANG_SWEDISH :Sueco
+STR_NETWORK_LANG_TURKISH :Turco
+STR_NETWORK_LANG_UKRAINIAN :Ucraniano
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Sala de espera do jogo
@@ -1591,6 +1617,12 @@
STR_RAILROAD_TRACK_WITH_PRESIGNALS :Ferrovia com pré-sinais
STR_RAILROAD_TRACK_WITH_EXITSIGNALS :Ferrovia com sinais de saída
STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Ferrovia com sinais combinados
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS :Linha de trem com sinais normais e pré-sinais
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS :Linha de trem com sinais normais e de saída
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS :Linha de trem com sinais normais e sinais combo
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS :Linha de trem com pré-sinais e de saída
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS :Linha de trem com pré-sinais e sinais combo
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS :Linha de trem com sinais de saída e sinais combo
STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Remova a estação de trem antes
@@ -1601,6 +1633,7 @@
STR_1802_ROAD_CONSTRUCTION :{WHITE}Construir rodovias
STR_1802_TRAMWAY_CONSTRUCTION :{WHITE}Construção de Bonde
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Selecionar Ponte Rodoviária
+STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... vias de mão única não podem ter junções
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Impossível construir rodovia aqui...
STR_1804_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Impossível construir bonde aqui...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Impossível remover rodovia daqui...
@@ -2634,6 +2667,8 @@
STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}Impossível inserir nova ordem...
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Impossível remover esta ordem...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Impossível modificar esta ordem...
+STR_CAN_T_SKIP_ORDER :{WHITE}Impossível pular a ordem atual...
+STR_CAN_T_SKIP_TO_ORDER :{WHITE}Impossível pular à ordem selecionada...
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Impossível mover veículo...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}A locomotiva traseira sempre deve seguir sua complementar frontal
STR_8838_N_A :N/D{SKIP}
@@ -2665,7 +2700,7 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Exibir capacidades de cada veículo
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Exibir capacidade total do trem, dividir por tipo de carga
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Lista de ordens - clique numa ordem para a selecionar
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Saltar a ordem atual, e iniciar a próxima
+STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Pula a ordem atual e executa a próxima. CTRL + clique pula a ordem selecionada
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Remover a ordem selecionada
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}A ordem selecionada fará com que o veículo não pare nas estações
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Inserir nova ordem antes da ordem selecionada, ou adicionar no fim da lista
--- a/src/lang/bulgarian.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/bulgarian.txt Tue Jun 12 18:02:11 2007 +0000
@@ -1397,6 +1397,31 @@
STR_NETWORK_LANG_ENGLISH :Английски
STR_NETWORK_LANG_GERMAN :Немски
STR_NETWORK_LANG_FRENCH :Френски
+STR_NETWORK_LANG_BRAZILIAN :Бразилски
+STR_NETWORK_LANG_BULGARIAN :Български
+STR_NETWORK_LANG_CHINESE :Китайски
+STR_NETWORK_LANG_CZECH :Чешки
+STR_NETWORK_LANG_DANISH :Датски
+STR_NETWORK_LANG_DUTCH :Холандски
+STR_NETWORK_LANG_ESPERANTO :Eсперанто
+STR_NETWORK_LANG_FINNISH :Финландски
+STR_NETWORK_LANG_HUNGARIAN :Унгарски
+STR_NETWORK_LANG_ICELANDIC :Исландски
+STR_NETWORK_LANG_ITALIAN :Италиански
+STR_NETWORK_LANG_JAPANESE :Японски
+STR_NETWORK_LANG_KOREAN :Корейски
+STR_NETWORK_LANG_LITHUANIAN :Литовски
+STR_NETWORK_LANG_NORWEGIAN :Норвежки
+STR_NETWORK_LANG_POLISH :Полски
+STR_NETWORK_LANG_PORTUGUESE :Португалски
+STR_NETWORK_LANG_ROMANIAN :Румънски
+STR_NETWORK_LANG_RUSSIAN :Руски
+STR_NETWORK_LANG_SLOVAK :Словашки
+STR_NETWORK_LANG_SLOVENIAN :Словенски
+STR_NETWORK_LANG_SPANISH :Испански
+STR_NETWORK_LANG_SWEDISH :Шведски
+STR_NETWORK_LANG_TURKISH :Турски
+STR_NETWORK_LANG_UKRAINIAN :Украински
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Преддверие
@@ -1590,6 +1615,10 @@
STR_RAILROAD_TRACK_WITH_PRESIGNALS :ЖП линия с пре-сигнали
STR_RAILROAD_TRACK_WITH_EXITSIGNALS :ЖП линия с изходни сигнали
STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :ЖП линия с комбинирани сигнали
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS :Железопътна линиа с нормални и изходни сигнали
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS :Железопътна линиа с нормални и съединени сигнали
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS :Железопътна линиа с изходни и съединени сигнали
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Железопътната гара трябва да бъде премахната първо
@@ -1597,22 +1626,36 @@
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Първо махнете пътя
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Пътни ремонти в процес
STR_1802_ROAD_CONSTRUCTION :{WHITE}Пътно строителство
+STR_1802_TRAMWAY_CONSTRUCTION :{WHITE}Конструкциа на трамвайна линиа
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Избор на асфалтов мост
+STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... еднопосочни пътища немогат да имат съединениа
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Пътя не може да се построи...
+STR_1804_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Трамвайна линиа неможе да бъде посроена тук...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Пътя не може да се махне...
+STR_1805_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Трамвайната линиа неможе да бъде премахната от тук...
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Ориентация на гараж
+STR_1806_TRAM_DEPOT_ORIENTATION :{WHITE}Посока на Трамвайно Депо
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Гаража не може да се построи...
+STR_1807_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}Трамвайно депо неможе да бъде построено тук...
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Автогарата не може да се построи...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Товарната гара не може да се построи...
+STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Пътническа трамвайна гара неможе да бъде построена...
STR_180A_ROAD_CONSTRUCTION :Пътно строителство
+STR_180A_TRAMWAY_CONSTRUCTION :Конструкциа на трамвайна линиа
STR_180B_BUILD_ROAD_SECTION :{BLACK}Строене на път
+STR_180B_BUILD_TRAMWAY_SECTION :{BLACK}Построи секциа от трамвайна линиа
STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Строене на гараж (за строене и сервиз на МПС-та)
STR_180D_BUILD_BUS_STATION :{BLACK}Строене на автогара
STR_180E_BUILD_TRUCK_LOADING_BAY :{BLACK}Строене на товарна гара
+STR_180D_BUILD_PASSENGER_TRAM_STATION :{BLACK}Построи пъгническа трамвайна гара
+STR_180E_BUILD_CARGO_TRAM_STATION :{BLACK}Построи товарна трамвайна гара
STR_180F_BUILD_ROAD_BRIDGE :{BLACK}Построй мост
+STR_180F_BUILD_TRAMWAY_BRIDGE :{BLACK}Построи трамвайен мост
STR_1810_BUILD_ROAD_TUNNEL :{BLACK}Построй тунел
+STR_1810_BUILD_TRAMWAY_TUNNEL :{BLACK}Построи трамвайен тунел
STR_1811_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Премахване на асфалтов път
STR_1813_SELECT_ROAD_VEHICLE_DEPOT :{BLACK}Ориентация на гараж
+STR_1813_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Избери посоката на трамвайното депо
STR_1814_ROAD :път
STR_1815_ROAD_WITH_STREETLIGHTS :Асфалтов път с улични лампи
STR_1816_TREE_LINED_ROAD :Асфалтов път с дървета
@@ -1620,6 +1663,8 @@
STR_1818_ROAD_RAIL_LEVEL_CROSSING :ЖП прелез
STR_CAN_T_REMOVE_BUS_STATION :{WHITE}Не може да премахне автогарата...
STR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Не може да премахне товарната гара...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Пътническата трамвайна гара неможе да бъде премахната...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Товарната трамвайна гара неможе да бъде премахната...
##id 0x2000
STR_2000_TOWNS :{WHITE}Градове
@@ -1784,8 +1829,12 @@
STR_3041_NOW_ACCEPTS_AND :{WHITE}{STATION} вече приема {STRING} и {STRING}
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Ориентация на автогара
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Ориент. товарна гара
+STR_3042_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Посока на пътнически трамвай
+STR_3043_CARGO_TRAM_STATION_ORIENT :{WHITE}Посока на товарен трамвай
STR_3046_MUST_DEMOLISH_BUS_STATION :{WHITE}Първо разрушете автогарата
STR_3047_MUST_DEMOLISH_TRUCK_STATION :{WHITE}Първо разрушете товарната гара
+STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION :{WHITE}Пътническата трамвайна гара трябва да бъде унищожена първо
+STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION :{WHITE}Товарната трамвайна гара трябва да бъде унищожена първо
STR_3048_STATIONS :{WHITE}{COMPANY} - {COMMA} Станци{P я и}
STR_3049_0 :{YELLOW}{STATION} {STATIONFEATURES}
STR_304A_NONE :{YELLOW}- Николко -
@@ -1797,6 +1846,8 @@
STR_3050_SELECT_LENGTH_OF_RAILROAD :{BLACK}Дължина на ЖП гарата
STR_3051_SELECT_BUS_STATION_ORIENTATION :{BLACK}Ориентация на автогарата
STR_3052_SELECT_TRUCK_LOADING_BAY :{BLACK}Ориентация на товарната гара
+STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Избери посоката на пътническата трамвайна гара
+STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Избери посоката на товарната трамвайна гара
STR_3053_CENTER_MAIN_VIEW_ON_STATION :{BLACK}Центриране на главния прозорец върху станцията
STR_3054_SHOW_STATION_RATINGS :{BLACK}Покажи нивото на обслужване
STR_3055_CHANGE_NAME_OF_STATION :{BLACK}Промяна името на станцията
@@ -2247,6 +2298,8 @@
STR_LIVERY_HELICOPTER :Хеликоптер
STR_LIVERY_SMALL_PLANE :Малък аероплан
STR_LIVERY_LARGE_PLANE :Голям аероплан
+STR_LIVERY_PASSENGER_TRAM :Пътнически Трамвай
+STR_LIVERY_FREIGHT_TRAM :Товарен Трамвай
STR_LIVERY_GENERAL_TIP :{BLACK}Показване на общи цветови схеми
STR_LIVERY_TRAIN_TIP :{BLACK}Показване цветовите схеми на влаковете
@@ -2635,7 +2688,6 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Капацитет на влаковата композиция
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Общ капацитет на влака, разбит по типове товар
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Пътен лист - натиснете върху назначение за маркиране. CTRL + натискане - центрира върху станцията
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Прескачане на текущото назначение и насочване към следващото
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Изтриване на избраното назначение
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Преминавай през избраното назначение без спиране
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Добавяне на назначение преди избраната или в края на списъка
@@ -3004,6 +3056,7 @@
### depot strings
STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Потвърдете продажбата на всички превозни средства в депото?
+STR_DEPOT_WRONG_DEPOT_TYPE :Погрешен депо теп
STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP :{BLACK}Продажба всички влакове в депото
STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP :{BLACK}Продажба всички автомобили в гаража
--- a/src/lang/catalan.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/catalan.txt Tue Jun 12 18:02:11 2007 +0000
@@ -1397,6 +1397,31 @@
STR_NETWORK_LANG_ENGLISH :Anglès
STR_NETWORK_LANG_GERMAN :Alemany
STR_NETWORK_LANG_FRENCH :Francès
+STR_NETWORK_LANG_BRAZILIAN :Brasiler
+STR_NETWORK_LANG_BULGARIAN :Búlgar
+STR_NETWORK_LANG_CHINESE :Xinès
+STR_NETWORK_LANG_CZECH :Txec
+STR_NETWORK_LANG_DANISH :Danès
+STR_NETWORK_LANG_DUTCH :Holandès
+STR_NETWORK_LANG_ESPERANTO :Esperanto
+STR_NETWORK_LANG_FINNISH :Finès
+STR_NETWORK_LANG_HUNGARIAN :Hongarès
+STR_NETWORK_LANG_ICELANDIC :Islandès
+STR_NETWORK_LANG_ITALIAN :Italià
+STR_NETWORK_LANG_JAPANESE :Japonès
+STR_NETWORK_LANG_KOREAN :Koreà
+STR_NETWORK_LANG_LITHUANIAN :Lituà
+STR_NETWORK_LANG_NORWEGIAN :Noruec
+STR_NETWORK_LANG_POLISH :Polonès
+STR_NETWORK_LANG_PORTUGUESE :Portuguès
+STR_NETWORK_LANG_ROMANIAN :Romanès
+STR_NETWORK_LANG_RUSSIAN :Rus
+STR_NETWORK_LANG_SLOVAK :Eslovac
+STR_NETWORK_LANG_SLOVENIAN :Eslovè
+STR_NETWORK_LANG_SPANISH :Espanyol
+STR_NETWORK_LANG_SWEDISH :Suec
+STR_NETWORK_LANG_TURKISH :Turc
+STR_NETWORK_LANG_UKRAINIAN :Ucraïnès
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Lobby de partida multijugador
@@ -1590,6 +1615,12 @@
STR_RAILROAD_TRACK_WITH_PRESIGNALS :Via de tren amb pre-senyals
STR_RAILROAD_TRACK_WITH_EXITSIGNALS :Via de tren amb senyals de sortida
STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Via de tren amb senyals combinades
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS :Via de tren amb senyals normals i pre-senyals
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS :Via de tren amb senyals normals i senyals de sortida
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS :Via de tren amb senyals normals i senyals combinades
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS :Via de tren amb pre-senyals i senyals de sortida
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS :Via de tren amb pre-senyals i senyals combinades
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS :Via de tren amb senyals de sortida i senyals combinades
STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Primer has de treure la via de l'estació
@@ -2632,6 +2663,9 @@
STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}No es pot afegir una nova ordre...
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}No es pot esborrar aquesta ordre...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}No es pot modificar aquesta ordre...
+STR_CAN_T_MOVE_THIS_ORDER :{WHITE}Impossible moure aquesta ordre...
+STR_CAN_T_SKIP_ORDER :{WHITE}Impossible saltar l'ordre actual...
+STR_CAN_T_SKIP_TO_ORDER :{WHITE}Impossible saltar l'ordre seleccionada...
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}No es pot moure el vehicle...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}La màquina posterior sempre ha de seguir la seva parella davantera
STR_8838_N_A :N/A{SKIP}
@@ -2663,7 +2697,7 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Mostra les capacitats de cada element
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Mostra la capacitat total del tren, separat per tipus de càrrega
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Llista d'ordres - clica en una per seleccionar-la
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Salta l'ordre actual i comença la següent
+STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Salta l'ordre actual, i comença la següent. CTRL + clic salta l'ordre seleccionada
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Esborra l'ordre seleccionada
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Fer sense parades l'ordre seleccionada
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Afegeix una nova ordre abans de la seleccionada, o afegeix-la al final de la llista
--- a/src/lang/czech.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/czech.txt Tue Jun 12 18:02:11 2007 +0000
@@ -1,6 +1,6 @@
##name Czech
-##ownname Česky
-##isocode cs_CS
+##ownname Čeština
+##isocode cs_CZ
##plural 6
##case nom gen dat acc voc loc ins big
##gender f m n
@@ -1147,6 +1147,7 @@
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Údržba vrtulníků na heliportech: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Otevírat lištu na úpravy terénu s lištami na výstavbu tratí/silnic atd.: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REVERSE_SCROLLING :{LTBLUE}Posouvat pohled opačným směrem: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING :{LTBLUE}Plynulé posouvání po mapě: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MEASURE_TOOLTIP :{LTBLUE}Ukázat rozměry při použití stavebních nástrojů: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES :{LTBLUE}Zobrazovat barvy společnosti pro: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES_NONE :žádnou společnost
@@ -1454,6 +1455,31 @@
STR_NETWORK_LANG_ENGLISH :Angličtina
STR_NETWORK_LANG_GERMAN :Němčina
STR_NETWORK_LANG_FRENCH :Francouzština
+STR_NETWORK_LANG_BRAZILIAN :Brazilská portugalština
+STR_NETWORK_LANG_BULGARIAN :Bulharština
+STR_NETWORK_LANG_CHINESE :Čínština
+STR_NETWORK_LANG_CZECH :Čeština
+STR_NETWORK_LANG_DANISH :Dánština
+STR_NETWORK_LANG_DUTCH :Nizozemština
+STR_NETWORK_LANG_ESPERANTO :Esperanto
+STR_NETWORK_LANG_FINNISH :Finština
+STR_NETWORK_LANG_HUNGARIAN :Maďarština
+STR_NETWORK_LANG_ICELANDIC :Islandština
+STR_NETWORK_LANG_ITALIAN :Italština
+STR_NETWORK_LANG_JAPANESE :Japonština
+STR_NETWORK_LANG_KOREAN :Korejština
+STR_NETWORK_LANG_LITHUANIAN :Litevština
+STR_NETWORK_LANG_NORWEGIAN :Norština
+STR_NETWORK_LANG_POLISH :Polština
+STR_NETWORK_LANG_PORTUGUESE :Portugalština
+STR_NETWORK_LANG_ROMANIAN :Rumunština
+STR_NETWORK_LANG_RUSSIAN :Ruština
+STR_NETWORK_LANG_SLOVAK :Slovenština
+STR_NETWORK_LANG_SLOVENIAN :Slovinština
+STR_NETWORK_LANG_SPANISH :Španělština
+STR_NETWORK_LANG_SWEDISH :Švédština
+STR_NETWORK_LANG_TURKISH :Turečtina
+STR_NETWORK_LANG_UKRAINIAN :Ukrajinština
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Vstupní místnost do multiplayerové hry
@@ -1647,6 +1673,12 @@
STR_RAILROAD_TRACK_WITH_PRESIGNALS :Železniční trať s presignály
STR_RAILROAD_TRACK_WITH_EXITSIGNALS :Železniční trať s výstupními signály
STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Železniční trať s kombinovanými signály
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS :Koleje s normálním a vjezdovým návěstím (pre-signal)
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS :Koleje s normálním a výjezdovým návěstím (exit-signal)
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS :Koleje s normálním a cestovým návěstím (combo-signal)
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS :Koleje s vjezdovým (pre-signal) a výjezdovým návěstím (exit-signal)
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS :Koleje s vjezdovým (pre-signal) a cestovým návěstím (combo-signal)
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS :Koleje s výjezdovým (exit-signal) a cestovým návěstím (combo-signal)
STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Je nejprve nutno odstranit stanici
@@ -1655,22 +1687,39 @@
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Musíš nejprve odstranit silnici
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Silnice je v rekonstrukci
STR_1802_ROAD_CONSTRUCTION :{WHITE}Výstavba silnic
+STR_1802_TRAMWAY_CONSTRUCTION :{WHITE}Výstavba tramvajové tratě
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Zvolit silniční most
+STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... na jednosměrných silnicích nemůžou být křižovatky
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Zde nemohu postavit silnici...
+STR_1804_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Zde není možné postavit tramvajovou trať...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Nemohu odsud odstranit silnici
+STR_1805_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Není možné odsud odstranit tramvajovou trať...
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Orientace garáže
+STR_1806_TRAM_DEPOT_ORIENTATION :{WHITE}Orientace tramvajového depa
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Tady nejde postavit garáž
+STR_1807_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}Zde není možné postavit depo pro tramvaje...
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Nemohu postavit autobusovou stanici...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Nemohu postavit nákladovou rampu...
+STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Není možné postavit tramvajovou stanici pro cestující...
+STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Není možné postavit tramvajovou stanici pro cestující...
STR_180A_ROAD_CONSTRUCTION :Výstavba silnic
+STR_180A_TRAMWAY_CONSTRUCTION :Výstavba tramvajové tratě
STR_180B_BUILD_ROAD_SECTION :{BLACK}Postavit silnici
+STR_180B_BUILD_TRAMWAY_SECTION :{BLACK}Položit kus kolejí pro tramvaje
STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Postavit garáž (pro nákup a servis vozidel)
+STR_180C_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Vystavět tramvajové depo (na kupování a servis tramvají)
STR_180D_BUILD_BUS_STATION :{BLACK}Postavit autobusovou stanici
STR_180E_BUILD_TRUCK_LOADING_BAY :{BLACK}Postavit nákladovou rampu
+STR_180D_BUILD_PASSENGER_TRAM_STATION :{BLACK}Postavit tramvajovou stanici pro cestující
+STR_180E_BUILD_CARGO_TRAM_STATION :{BLACK}Postavit nákladní tramvajovou stanici
STR_180F_BUILD_ROAD_BRIDGE :{BLACK}Postavit silniční most
+STR_180F_BUILD_TRAMWAY_BRIDGE :{BLACK}Postavit tramvajový most
STR_1810_BUILD_ROAD_TUNNEL :{BLACK}Postavit silniční tunel
+STR_1810_BUILD_TRAMWAY_TUNNEL :{BLACK}Postavit tramvajový tunel
STR_1811_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Přepnout stavba / odstranění silnice
+STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Přepínání mezi výstavbou a bouráním tramvajové tratě
STR_1813_SELECT_ROAD_VEHICLE_DEPOT :{BLACK}Výběr orientace garáže
+STR_1813_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Zvol směr tramvajového depa
STR_1814_ROAD :Silnice
STR_1815_ROAD_WITH_STREETLIGHTS :Silnice s pouličním osvětlením
STR_1816_TREE_LINED_ROAD :Silnice s alejí
@@ -1678,6 +1727,8 @@
STR_1818_ROAD_RAIL_LEVEL_CROSSING :Železniční přejezd
STR_CAN_T_REMOVE_BUS_STATION :{WHITE}Nelze odstranit autobusovou zastávku...
STR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Nelze odstranit nakládací rampu...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Nelze zbourat tramvajovou stanici pro cestující...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Nelze odstranit nákladní tramvajovou stanici...
##id 0x2000
STR_2000_TOWNS :{WHITE}Města
@@ -1842,8 +1893,12 @@
STR_3041_NOW_ACCEPTS_AND :{WHITE}{STATION} nyní přijímá {STRING} a {STRING}
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Orientace autobusové zastávky.
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Orientace nákladové rampy
+STR_3042_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Orientace tramvajové stanice pro cestující
+STR_3043_CARGO_TRAM_STATION_ORIENT :{WHITE}Orientace nákladní tramvajové stanice
STR_3046_MUST_DEMOLISH_BUS_STATION :{WHITE}Musíš nejprve zničit autobusovou zastávku
STR_3047_MUST_DEMOLISH_TRUCK_STATION :{WHITE}Musíš nejprve zničit nákladovou rampu
+STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION :{WHITE}Je nutné nejdříve zbourat tramvajovou stanici pro cestující
+STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION :{WHITE}Je nutné nejdříve zbourat nákladní tramvajovou stanici
STR_3048_STATIONS :{WHITE}{COMPANY} - {COMMA} stanic{P e e ""}
STR_3049_0 :{YELLOW}{STATION} {STATIONFEATURES}
STR_304A_NONE :{YELLOW}- Nic -
@@ -1855,6 +1910,8 @@
STR_3050_SELECT_LENGTH_OF_RAILROAD :{BLACK}Zvolit délku nádraží
STR_3051_SELECT_BUS_STATION_ORIENTATION :{BLACK}Zvolit orientaci autobusové zastávky
STR_3052_SELECT_TRUCK_LOADING_BAY :{BLACK}Zvolit orientaci nákladové rampy
+STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Vyber směr tramvajové stanice pro cestující
+STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Vyber směr nákladní tramvajové stanice
STR_3053_CENTER_MAIN_VIEW_ON_STATION :{BLACK}Vycentrovat pohled na stanici
STR_3054_SHOW_STATION_RATINGS :{BLACK}Ukázat hodnocení společností
STR_3055_CHANGE_NAME_OF_STATION :{BLACK}Změnit jméno stanice
@@ -2305,6 +2362,8 @@
STR_LIVERY_HELICOPTER :Vrtulník
STR_LIVERY_SMALL_PLANE :Malé letadlo
STR_LIVERY_LARGE_PLANE :Velké letadlo
+STR_LIVERY_PASSENGER_TRAM :Tramvaj pro cestující
+STR_LIVERY_FREIGHT_TRAM :Nákladní tramvaj
STR_LIVERY_GENERAL_TIP :{BLACK}Zobrazit všeobecná barevná schémata
STR_LIVERY_TRAIN_TIP :{BLACK}Zobrazit barevná schémata pro vlaky
@@ -2668,6 +2727,8 @@
STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}Nemohu přidat nový příkaz
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Nemohu tento příkaz smazat...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Nemohu tento příkaz změnit...
+STR_CAN_T_SKIP_ORDER :{WHITE}Nelze přeskočit současný příkaz...
+STR_CAN_T_SKIP_TO_ORDER :{WHITE}Nelze přeskočit na označený příkaz...
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Nemohu přesunout vozidlo...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}Zadní stroj vždy doprovází svůj protějšek vepředu
STR_8838_N_A :N/A{SKIP}
@@ -2699,7 +2760,7 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Ukázat kapacity jednotlivých vagonů
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Ukázat celkovou kapacitu vlaku, rozdělenou dle nákladu
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Seznam příkazů - stiskni příkaz pro označení. Kliknutím na příkaz se stisknutým CTRL se nastaví pohled na stanici
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Přeskočit příkaz a jít na další
+STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Přeskočit příkaz a jít na další. Pomocí CTRL + kliknutí se přeskočí na vybraný příkaz
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Smazat označený příkaz
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Provést označený příkaz bez zastavení
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Vložit nový příkaz před označený příkaz nebo na konec seznamu
@@ -2784,6 +2845,8 @@
STR_902E_NAME_ROAD_VEHICLE :{BLACK}Přejmenovat silniční vozidlo
STR_902F_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Obyvatelé oslavují...{}První autobus přijel do {STATION}!
STR_9030_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Obyvatelé oslavují...{}První nákladní vozidlo přijelo do {STATION}!
+STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Obyvatelé oslavují...{}První tramvaj pro cestující přijela do {STATION}
+STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Obyvatelé oslavují...{}První nákladní tramvaj přijíždí do {STATION}!
STR_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT}Dopravní nehoda!{}Řidič zahynul v plamenech při srážce s vlakem
STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}Dopravní nehoda!{}{COMMA} {P člověk lidé lidí} zahynul{P "" i o} v plamenech při srážce s vlakem
STR_9033_CAN_T_MAKE_VEHICLE_TURN :{WHITE}Nelze otočit vozidlo...
@@ -3068,6 +3131,7 @@
### depot strings
STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Chceš prodat všechna vozidla v depu. Jsi si jistý?
+STR_DEPOT_WRONG_DEPOT_TYPE :Nevhodný druh depa
STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP :{BLACK}Prodat všechny vlaky v depu
STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP :{BLACK}Prodat všechna silniční vozidla v depu
--- a/src/lang/danish.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/danish.txt Tue Jun 12 18:02:11 2007 +0000
@@ -1089,6 +1089,7 @@
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Automatisk service på helikopterlandingspladser: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Forbind landskabsværktøjer med skinne/vej/vand/lufthavn: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REVERSE_SCROLLING :{LTBLUE}Flyt i modsat retning ved scroll med musen: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING :{LTBLUE}Jævn scrolling af udsnit: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MEASURE_TOOLTIP :{LTBLUE}Vis måleværktøjstip ved brug af div. bygge-værktøjer: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES :{LTBLUE}Vis selskabsfarver: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES_NONE :Ingen
@@ -1396,6 +1397,31 @@
STR_NETWORK_LANG_ENGLISH :Engelsk
STR_NETWORK_LANG_GERMAN :Tysk
STR_NETWORK_LANG_FRENCH :Fransk
+STR_NETWORK_LANG_BRAZILIAN :Brasiliansk
+STR_NETWORK_LANG_BULGARIAN :Bulgarsk
+STR_NETWORK_LANG_CHINESE :Kinesisk
+STR_NETWORK_LANG_CZECH :Tjekkisk
+STR_NETWORK_LANG_DANISH :Dansk
+STR_NETWORK_LANG_DUTCH :Hollandsk
+STR_NETWORK_LANG_ESPERANTO :Esperanto
+STR_NETWORK_LANG_FINNISH :Finsk
+STR_NETWORK_LANG_HUNGARIAN :Ungarsk
+STR_NETWORK_LANG_ICELANDIC :Islandsk
+STR_NETWORK_LANG_ITALIAN :Italiensk
+STR_NETWORK_LANG_JAPANESE :Japansk
+STR_NETWORK_LANG_KOREAN :Koreansk
+STR_NETWORK_LANG_LITHUANIAN :Litauisk
+STR_NETWORK_LANG_NORWEGIAN :Norsk
+STR_NETWORK_LANG_POLISH :Polsk
+STR_NETWORK_LANG_PORTUGUESE :Portugisisk
+STR_NETWORK_LANG_ROMANIAN :Rumænsk
+STR_NETWORK_LANG_RUSSIAN :Russisk
+STR_NETWORK_LANG_SLOVAK :Slovakisk
+STR_NETWORK_LANG_SLOVENIAN :Slovensk
+STR_NETWORK_LANG_SPANISH :Spansk
+STR_NETWORK_LANG_SWEDISH :Svensk
+STR_NETWORK_LANG_TURKISH :Tyrkisk
+STR_NETWORK_LANG_UKRAINIAN :Ukrainsk
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Netværksspils lobby
@@ -2637,6 +2663,9 @@
STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}Kan ikke indsætte ny ordre...
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Kan ikke slette denne ordre...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Kan ikke ændre denne ordre...
+STR_CAN_T_MOVE_THIS_ORDER :{WHITE}Kan ikke flytte denne ordre...
+STR_CAN_T_SKIP_ORDER :{WHITE}Kan ikke springe over nuværende ordre...
+STR_CAN_T_SKIP_TO_ORDER :{WHITE}Kan ikke springe over valgt ordre...
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Kan ikke flytte køretøjet...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}Det bagerste lokomotiv vil altid følge dets forende
STR_8838_N_A :N/A{SKIP}
@@ -2668,7 +2697,7 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Vis kapaciteten af hver togvogn
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Vis total lasteevne på toget, fordelt på lasttyper
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Ordreliste - klik på en ordre for at markere den. CTRL-klik for at centrere skærmen over stationen
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Spring over den nuværende ordre og gå til den næste
+STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Spring over nuværende ordre og start næste. CTRL + klik springer til den valgte ordre
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Slet den markerede ordre
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Lav den markerede ordre til en "uden stop" ordre
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Indsæt en ny ordre før den markerede eller ved slutningen af ordrelisten
--- a/src/lang/dutch.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/dutch.txt Tue Jun 12 18:02:11 2007 +0000
@@ -1397,6 +1397,31 @@
STR_NETWORK_LANG_ENGLISH :Engels
STR_NETWORK_LANG_GERMAN :Duits
STR_NETWORK_LANG_FRENCH :Frans
+STR_NETWORK_LANG_BRAZILIAN :Brazilliaans
+STR_NETWORK_LANG_BULGARIAN :Bulgaars
+STR_NETWORK_LANG_CHINESE :Chinees
+STR_NETWORK_LANG_CZECH :Tchechisch
+STR_NETWORK_LANG_DANISH :Deens
+STR_NETWORK_LANG_DUTCH :Nederlands
+STR_NETWORK_LANG_ESPERANTO :Esperanto
+STR_NETWORK_LANG_FINNISH :Fins
+STR_NETWORK_LANG_HUNGARIAN :Hongaars
+STR_NETWORK_LANG_ICELANDIC :IJslands
+STR_NETWORK_LANG_ITALIAN :Italiaans
+STR_NETWORK_LANG_JAPANESE :Japans
+STR_NETWORK_LANG_KOREAN :Koreaans
+STR_NETWORK_LANG_LITHUANIAN :Litouws
+STR_NETWORK_LANG_NORWEGIAN :Noors
+STR_NETWORK_LANG_POLISH :Pools
+STR_NETWORK_LANG_PORTUGUESE :Portugees
+STR_NETWORK_LANG_ROMANIAN :Roemeens
+STR_NETWORK_LANG_RUSSIAN :Russisch
+STR_NETWORK_LANG_SLOVAK :Slovaaks
+STR_NETWORK_LANG_SLOVENIAN :Sloveens
+STR_NETWORK_LANG_SPANISH :Spaans
+STR_NETWORK_LANG_SWEDISH :Zweeds
+STR_NETWORK_LANG_TURKISH :Turks
+STR_NETWORK_LANG_UKRAINIAN :Oekraïne
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Multiplayer lobby
@@ -1590,6 +1615,12 @@
STR_RAILROAD_TRACK_WITH_PRESIGNALS :Spoor met voorseinen
STR_RAILROAD_TRACK_WITH_EXITSIGNALS :Spoor met uitgangseinen
STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Spoor met combinatieseinen
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS :Spoor met normale en pre-seinen
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS :Spoor met normale en uitgangs-signalen
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS :Spoor met normale en dubbele-signalen
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS :Spoor met pre- en uitgangs- signalen
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS :Spoor met pre- en dubbele- signalen
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS :Spoor met uitgangs- en dubbele- signalen
STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Treinstation moet eerst verwijderd worden
@@ -1600,6 +1631,7 @@
STR_1802_ROAD_CONSTRUCTION :{WHITE}Wegenbouw
STR_1802_TRAMWAY_CONSTRUCTION :{WHITE}Bouw tramrails
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Kies brug
+STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... een richtings wegen kunnen geen kruisingen hebben
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Kan hier geen weg bouwen...
STR_1804_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Kan geen tramrails bouwen hier...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kan hier geen weg weghalen...
@@ -2631,6 +2663,8 @@
STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}Kan nieuwe order niet invoegen...
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Kan deze order niet verwijderen...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Kan deze order niet aanpassen...
+STR_CAN_T_SKIP_ORDER :{WHITE}Kan huidige order niet overslaan...
+STR_CAN_T_SKIP_TO_ORDER :{WHITE}Kan geselecteerde order niet overslaan...
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Kan voertuig niet verplaatsen...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}De achterste locomotief zal altijd het voorste deel volgen
STR_8838_N_A :NVT.{SKIP}
@@ -2662,7 +2696,7 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Laat de mogelijkheden van elk voertuig zien
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Laat totale capaiteit van trein zien, gescheiden door goederentype
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Orderlijst - klik op een order om deze te selecteren. CTRL + klikken gaat naar het station
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Sla de huidige order over en begin met de volgende
+STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Sla huidige order over, en begin met de volgende. CTRL + klik, begin direct met geselecteerde order
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Verwijder de geselecteerde order
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Maak de geselecteerde order non-stop
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Voeg een nieuwe order in voor de geselecteerde order, of voeg het toe aan de eind van de lijst
--- a/src/lang/english.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/english.txt Tue Jun 12 18:02:11 2007 +0000
@@ -1397,6 +1397,31 @@
STR_NETWORK_LANG_ENGLISH :English
STR_NETWORK_LANG_GERMAN :German
STR_NETWORK_LANG_FRENCH :French
+STR_NETWORK_LANG_BRAZILIAN :Brazilian
+STR_NETWORK_LANG_BULGARIAN :Bulgarian
+STR_NETWORK_LANG_CHINESE :Chinese
+STR_NETWORK_LANG_CZECH :Czech
+STR_NETWORK_LANG_DANISH :Danish
+STR_NETWORK_LANG_DUTCH :Dutch
+STR_NETWORK_LANG_ESPERANTO :Esperanto
+STR_NETWORK_LANG_FINNISH :Finnish
+STR_NETWORK_LANG_HUNGARIAN :Hungarian
+STR_NETWORK_LANG_ICELANDIC :Icelandic
+STR_NETWORK_LANG_ITALIAN :Italian
+STR_NETWORK_LANG_JAPANESE :Japanese
+STR_NETWORK_LANG_KOREAN :Korean
+STR_NETWORK_LANG_LITHUANIAN :Lithuanian
+STR_NETWORK_LANG_NORWEGIAN :Norwegian
+STR_NETWORK_LANG_POLISH :Polish
+STR_NETWORK_LANG_PORTUGUESE :Portuguese
+STR_NETWORK_LANG_ROMANIAN :Romanian
+STR_NETWORK_LANG_RUSSIAN :Russian
+STR_NETWORK_LANG_SLOVAK :Slovak
+STR_NETWORK_LANG_SLOVENIAN :Slovenian
+STR_NETWORK_LANG_SPANISH :Spanish
+STR_NETWORK_LANG_SWEDISH :Swedish
+STR_NETWORK_LANG_TURKISH :Turkish
+STR_NETWORK_LANG_UKRAINIAN :Ukrainian
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Multiplayer game lobby
@@ -2638,6 +2663,9 @@
STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}Can't insert new order...
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Can't delete this order...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Can't modify this order...
+STR_CAN_T_MOVE_THIS_ORDER :{WHITE}Can't move this order...
+STR_CAN_T_SKIP_ORDER :{WHITE}Can't skip current order...
+STR_CAN_T_SKIP_TO_ORDER :{WHITE}Can't skip to selected order...
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Can't move vehicle...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}The rear engine will always follow its front counterpart
STR_8838_N_A :N/A{SKIP}
@@ -2669,7 +2697,7 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Show capacities of each vehicle
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Show total capacity of train, split by cargo type
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Orders list - click on an order to highlight it. CTRL + click scrolls to the station
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Skip the current order, and start the next
+STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Skip the current order, and start the next. CTRL + click skips to the selected order
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Delete the highlighted order
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Make the highlighted order non-stop
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Insert a new order before the highlighted order, or add to end of list
--- a/src/lang/esperanto.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/esperanto.txt Tue Jun 12 18:02:11 2007 +0000
@@ -2629,7 +2629,6 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Montru kapablojn de ĉiu veturilo
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Montru tutan kapablon de trajno, dividite laŭ ŝarĝtipo
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Ordena listo - alklaku ordenon por elekti. CTRL + klako skrolas al la stacio
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Saltu de la nuna ordeno al la sekva
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Forviŝu la elektitan ordenon
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Senhaltigu elektitan ordenon
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Enigu novan ordenon antaŭ la elektita ordeno, aŭ aldonu fine de la listo
--- a/src/lang/estonian.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/estonian.txt Tue Jun 12 18:02:11 2007 +0000
@@ -4,6 +4,8 @@
##plural 0
##case g genitiiv
+#
+
##id 0x0000
STR_NULL :
STR_0001_OFF_EDGE_OF_MAP :{WHITE}Väljaspool kaardi piire
@@ -12,7 +14,7 @@
STR_0004 :{WHITE}{CURRENCY64}
STR_0005 :{RED}{CURRENCY64}
STR_EMPTY :
-STR_0007_FLAT_LAND_REQUIRED :{WHITE}Maa peab olema tasane
+STR_0007_FLAT_LAND_REQUIRED :{WHITE}Maapind peab olema tasane
STR_0008_WAITING :{BLACK}Ootel: {WHITE}{STRING}
STR_0009 :{WHITE}{CARGO}
STR_000A_EN_ROUTE_FROM :{WHITE}{CARGO}{YELLOW} (tulnud jaamast
@@ -294,15 +296,15 @@
STR_00E2 :{BLACK}{COMMA}
STR_00E3 :{RED}{COMMA}
STR_00E4_LOCATION :{BLACK}Asukoht
-STR_00E5_CONTOURS :Maastik
-STR_00E6_VEHICLES :Sõidukid
-STR_00E7_INDUSTRIES :Tööstused
-STR_00E8_ROUTES :Teed
-STR_00E9_VEGETATION :Taimestik
-STR_00EA_OWNERS :Omanikud
-STR_00EB_ROADS :{BLACK}{TINYFONT}Teed
-STR_00EC_RAILROADS :{BLACK}{TINYFONT}Raudteed
-STR_00ED_STATIONS_AIRPORTS_DOCKS :{BLACK}{TINYFONT}Jaamad/lennujaamad/sadamad
+STR_00E5_CONTOURS :maastik
+STR_00E6_VEHICLES :sõidukid
+STR_00E7_INDUSTRIES :tööstused
+STR_00E8_ROUTES :kaubaliinid
+STR_00E9_VEGETATION :taimestik
+STR_00EA_OWNERS :omanikud
+STR_00EB_ROADS :{BLACK}{TINYFONT}Sõiduteed
+STR_00EC_RAILROADS :{BLACK}{TINYFONT}Rööbasteed
+STR_00ED_STATIONS_AIRPORTS_DOCKS :{BLACK}{TINYFONT}Jaamad/lennuväljad/sadamad
STR_00EE_BUILDINGS_INDUSTRIES :{BLACK}{TINYFONT}Ehitised/tööstused
STR_00EF_VEHICLES :{BLACK}{TINYFONT}Sõidukid
STR_00F0_100M :{BLACK}{TINYFONT}100 m
@@ -311,7 +313,7 @@
STR_00F3_400M :{BLACK}{TINYFONT}400 m
STR_00F4_500M :{BLACK}{TINYFONT}500 m
STR_00F5_TRAINS :{BLACK}{TINYFONT}Rongid
-STR_00F6_ROAD_VEHICLES :{BLACK}{TINYFONT}Maanteesõidukid
+STR_00F6_ROAD_VEHICLES :{BLACK}{TINYFONT}Mootorsõidukid
STR_00F7_SHIPS :{BLACK}{TINYFONT}Laevad
STR_00F8_AIRCRAFT :{BLACK}{TINYFONT}Õhusõidukid
STR_00F9_TRANSPORT_ROUTES :{BLACK}{TINYFONT}Veoliinid
@@ -324,20 +326,20 @@
STR_0100_FACTORY :{BLACK}{TINYFONT}Vabrik
STR_0101_PRINTING_WORKS :{BLACK}{TINYFONT}Trükikoda
STR_0102_OIL_WELLS :{BLACK}{TINYFONT}Naftapuuraugud
-STR_0103_IRON_ORE_MINE :{BLACK}{TINYFONT}Rauamaagi kaevandus
+STR_0103_IRON_ORE_MINE :{BLACK}{TINYFONT}Rauamaagikaevandus
STR_0104_STEEL_MILL :{BLACK}{TINYFONT}Terase tööstus
STR_0105_BANK :{BLACK}{TINYFONT}Pank
STR_0106_PAPER_MILL :{BLACK}{TINYFONT}Paberitehas
STR_0107_GOLD_MINE :{BLACK}{TINYFONT}Kullakaevandus
STR_0108_FOOD_PROCESSING_PLANT :{BLACK}{TINYFONT}Toidutöötlustehas
STR_0109_DIAMOND_MINE :{BLACK}{TINYFONT}Teemantikaevandus
-STR_010A_COPPER_ORE_MINE :{BLACK}{TINYFONT}Vasemaagi kaevandus
+STR_010A_COPPER_ORE_MINE :{BLACK}{TINYFONT}Vasemaagikaevandus
STR_010B_FRUIT_PLANTATION :{BLACK}{TINYFONT}Puuviljaistandus
STR_010C_RUBBER_PLANTATION :{BLACK}{TINYFONT}Kummipuuistandus
STR_010D_WATER_SUPPLY :{BLACK}{TINYFONT}Veepumbad
STR_010E_WATER_TOWER :{BLACK}{TINYFONT}Veetorn
STR_010F_LUMBER_MILL :{BLACK}{TINYFONT}Saeveski
-STR_0110_COTTON_CANDY_FOREST :{BLACK}{TINYFONT}Suhkruvati mets
+STR_0110_COTTON_CANDY_FOREST :{BLACK}{TINYFONT}Suhkruvatimets
STR_0111_CANDY_FACTORY :{BLACK}{TINYFONT}Maiustuste tehas
STR_0112_BATTERY_FARM :{BLACK}{TINYFONT}Patareitalu
STR_0113_COLA_WELLS :{BLACK}{TINYFONT}Koolapumbad
@@ -351,10 +353,10 @@
STR_011B_RAILROAD_STATION :{BLACK}{TINYFONT}Raudteejaam
STR_011C_TRUCK_LOADING_BAY :{BLACK}{TINYFONT}Veoautode laadimisplats
STR_011D_BUS_STATION :{BLACK}{TINYFONT}Bussijaam
-STR_011E_AIRPORT_HELIPORT :{BLACK}{TINYFONT}Lennujaam
+STR_011E_AIRPORT_HELIPORT :{BLACK}{TINYFONT}Lennuväli/kopteriväljak
STR_011F_DOCK :{BLACK}{TINYFONT}Sadam
STR_0120_ROUGH_LAND :{BLACK}{TINYFONT}Konarlik maa
-STR_0121_GRASS_LAND :{BLACK}{TINYFONT}Muru
+STR_0121_GRASS_LAND :{BLACK}{TINYFONT}Rohuväli
STR_0122_BARE_LAND :{BLACK}{TINYFONT}Lage maa
STR_0123_FIELDS :{BLACK}{TINYFONT}Põllud
STR_0124_TREES :{BLACK}{TINYFONT}Puud
@@ -384,19 +386,19 @@
STR_013B_OWNED_BY :{WHITE}...omanik on {STRING}
STR_013C_CARGO :{BLACK}Laadung
-STR_013D_INFORMATION :{BLACK}Informatsioon
-STR_013E_CAPACITIES :{BLACK}Mahutavused
+STR_013D_INFORMATION :{BLACK}Andmed
+STR_013E_CAPACITIES :{BLACK}Kandevõimed
STR_013E_TOTAL_CARGO :{BLACK}Laadungit kokku
-STR_013F_CAPACITY :{BLACK}Mahutavus: {LTBLUE}{CARGO}
-STR_CAPACITY_MULT :{BLACK}Mahutavus: {LTBLUE}{CARGO} (x{NUM})
-STR_013F_TOTAL_CAPACITY_TEXT :{BLACK}Rongi kogumahutavus:
+STR_013F_CAPACITY :{BLACK}Kandevõime: {LTBLUE}{CARGO}
+STR_CAPACITY_MULT :{BLACK}Kandevõime: {LTBLUE}{CARGO} (x{NUM})
+STR_013F_TOTAL_CAPACITY_TEXT :{BLACK}Selle rongi kandevõime:
STR_013F_TOTAL_CAPACITY :{LTBLUE}- {CARGO} ({SHORTCARGO})
STR_TOTAL_CAPACITY_MULT :{LTBLUE}- {CARGO} ({SHORTCARGO}) (x{NUM})
STR_0140_NEW_GAME :{BLACK}Alusta mängu
STR_0141_LOAD_GAME :{BLACK}Laadi mängu
STR_SINGLE_PLAYER :{BLACK}Üksikmängija
STR_MULTIPLAYER :{BLACK}Võrgumäng
-STR_SCENARIO_EDITOR :{BLACK}Stsenaariumi Muutmine
+STR_SCENARIO_EDITOR :{BLACK}Stsenaariumiredaktor
STR_64 :64
STR_128 :128
@@ -447,10 +449,10 @@
############ range for menu starts
STR_0154_OPERATING_PROFIT_GRAPH :Opereerimiskasumi graafik
-STR_0155_INCOME_GRAPH :Sissetulekute graafik
+STR_0155_INCOME_GRAPH :Tulugraafik
STR_0156_DELIVERED_CARGO_GRAPH :Transporditud kauba graafik
STR_0157_PERFORMANCE_HISTORY_GRAPH :Tegevustulemuste graafik
-STR_0158_COMPANY_VALUE_GRAPH :Ettevõtte väärtuse graafik
+STR_0158_COMPANY_VALUE_GRAPH :Firmaväärtuse graafik
STR_0159_CARGO_PAYMENT_RATES :Veotasude määrad
STR_015A_COMPANY_LEAGUE_TABLE :Ettevõtete edetabel
STR_PERFORMANCE_DETAIL_MENU :Üksikasjalik tulemusreiting
@@ -478,9 +480,9 @@
STR_SORT_BY_PROFIT_LAST_YEAR :Eelmise aasta kasum
STR_SORT_BY_PROFIT_THIS_YEAR :Selle aasta kasum
STR_SORT_BY_AGE :Vanus
-STR_SORT_BY_RELIABILITY :Töökindlus
-STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Kogumahutavus veose tüübi kohta
-STR_SORT_BY_MAX_SPEED :Maksimaalne kiirus
+STR_SORT_BY_RELIABILITY :Tehnoseisund
+STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Kandevõime kokku veose tüübi kohta
+STR_SORT_BY_MAX_SPEED :Tippkiirus
STR_SORT_BY_MODEL :Mudel
STR_SORT_BY_VALUE :Väärtus
STR_SORT_BY_FACILITY :Jaama tüüp
@@ -490,16 +492,16 @@
STR_ENGINE_SORT_COST :Hind
STR_ENGINE_SORT_POWER :Võimsus
STR_ENGINE_SORT_INTRO_DATE :Esitluskuupäev
-STR_ENGINE_SORT_RUNNING_COST :Teenindusmaks
-STR_ENGINE_SORT_POWER_VS_RUNNING_COST :Jõud/Teenindusmaks
-STR_ENGINE_SORT_CARGO_CAPACITY :Laadungi mahutavus
+STR_ENGINE_SORT_RUNNING_COST :Käituskulud
+STR_ENGINE_SORT_POWER_VS_RUNNING_COST :Võimsus- ja käituskulud
+STR_ENGINE_SORT_CARGO_CAPACITY :Kauba kandevõime
STR_NO_WAITING_CARGO :{BLACK}Kaupa pole ootamas
STR_SELECT_ALL_FACILITIES :{BLACK}Vali kõik tööstused
STR_SELECT_ALL_TYPES :{BLACK}Vali kõik kaubatüüpid (ka mitteoodatav kaup)
-STR_AVAILABLE_TRAINS :{BLACK}Saada olevad rongid
-STR_AVAILABLE_ROAD_VEHICLES :{BLACK}Saada olevad maanteesõidukid
-STR_AVAILABLE_SHIPS :{BLACK}Saada olevad laevad
-STR_AVAILABLE_AIRCRAFT :{BLACK}Saada olevad õhusõidukid
+STR_AVAILABLE_TRAINS :{BLACK}Saadaval rongid
+STR_AVAILABLE_ROAD_VEHICLES :{BLACK}Saadaval sõidukid
+STR_AVAILABLE_SHIPS :{BLACK}Saadaval laevad
+STR_AVAILABLE_AIRCRAFT :{BLACK}Saadaval õhusõidukid
STR_AVAILABLE_ENGINES_TIP :{BLACK}Vaata nimekirja seda tüüpi veovahenditest
STR_MANAGE_LIST :{BLACK}Halda nimekirja
STR_MANAGE_LIST_TIP :{BLACK}Saada juhised kõikidele selles nimekirjas olevatele veovahenditele
@@ -508,7 +510,7 @@
STR_SEND_ROAD_VEHICLE_TO_DEPOT :Saada depoose
STR_SEND_SHIP_TO_DEPOT :Saada depoose
STR_SEND_AIRCRAFT_TO_HANGAR :Saada angaari
-STR_SEND_FOR_SERVICING :Saada teenindusse
+STR_SEND_FOR_SERVICING :Saada hooldusesse
############ range for months starts
STR_0162_JAN :jaan
@@ -539,21 +541,21 @@
STR_0179_DISPLAY_GRAPHS :{BLACK}Kuva graafikuid
STR_017A_DISPLAY_COMPANY_LEAGUE :{BLACK}Kuva ettevõtete edetabel
STR_017B_DISPLAY_LIST_OF_COMPANY :{BLACK}Kuva ettevõtte rongide nimistu
-STR_017C_DISPLAY_LIST_OF_COMPANY :{BLACK}Kuva nimekiri ettevõtte maanteesõidukitest
+STR_017C_DISPLAY_LIST_OF_COMPANY :{BLACK}Kuva nimekiri ettevõtte mootorsõidukitest
STR_017D_DISPLAY_LIST_OF_COMPANY :{BLACK}Kuva ettevõtte laevade nimistu
STR_017E_DISPLAY_LIST_OF_COMPANY :{BLACK}Kuva nimekiri ettevõtte õhusõidukitest
STR_017F_ZOOM_THE_VIEW_IN :{BLACK}Suurenda vaadet
STR_0180_ZOOM_THE_VIEW_OUT :{BLACK}Vähenda vaadet
-STR_0181_BUILD_RAILROAD_TRACK :{BLACK}Ehita raudteed
+STR_0181_BUILD_RAILROAD_TRACK :{BLACK}Ehita rööbasteed
STR_0182_BUILD_ROADS :{BLACK}Ehita maanteid
STR_0183_BUILD_SHIP_DOCKS :{BLACK}Ehita laevasadamat
-STR_0184_BUILD_AIRPORTS :{BLACK}Ehita lennujaamu
+STR_0184_BUILD_AIRPORTS :{BLACK}Ehita lennuvälju
STR_0185_PLANT_TREES_PLACE_SIGNS :{BLACK}Puude istutamine, siltide paigaldamine jne.
-STR_0186_LAND_BLOCK_INFORMATION :{BLACK}Maa-ala informatsioon
+STR_0186_LAND_BLOCK_INFORMATION :{BLACK}Maa-ala andmed
STR_0187_OPTIONS :{BLACK}Seaded
STR_0188 :{BLACK}{SMALLUPARROW}
STR_0189 :{BLACK}{SMALLDOWNARROW}
-STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Teenindusvahemikku ei saa muuta...
+STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Hooldusperioodi ei saa muuta...
STR_018B_CLOSE_WINDOW :{BLACK}Sulge aken
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Akna pealkiri - lohista akna liigutamiseks
STR_STICKY_BUTTON :{BLACK}Keela selle akna sulgemine 'Sulge kõik aknad' nupu klõpsamisel
@@ -585,13 +587,13 @@
STR_01A0_IS_GETTING_OLD :{WHITE}{STRING} {COMMA} on vanaks muutumas
STR_01A1_IS_GETTING_VERY_OLD :{WHITE}{STRING} {COMMA} on saamas väga vanaks
STR_01A2_IS_GETTING_VERY_OLD_AND :{WHITE}{STRING} {COMMA} on saanud väga vanaks ja vajab kohest asendamist
-STR_01A3_LAND_AREA_INFORMATION :{WHITE}Maa-ala info
-STR_01A4_COST_TO_CLEAR_N_A :{BLACK}Puhastamistasu: {LTBLUE}N/A
-STR_01A5_COST_TO_CLEAR :{BLACK}Puhastamistasu: {LTBLUE}{CURRENCY}
-STR_01A6_N_A :k-tu
+STR_01A3_LAND_AREA_INFORMATION :{WHITE}Maa-ala andmed
+STR_01A4_COST_TO_CLEAR_N_A :{BLACK}Puhastustasu: {LTBLUE}N/A
+STR_01A5_COST_TO_CLEAR :{BLACK}Puhastustasu: {LTBLUE}{CURRENCY}
+STR_01A6_N_A :puudub
STR_01A7_OWNER :{BLACK}Omanik: {LTBLUE}{STRING}
-STR_01A8_LOCAL_AUTHORITY :{BLACK}Kohalik võim: {LTBLUE}{STRING}
-STR_01A9_NONE :Mitte keegi
+STR_01A8_LOCAL_AUTHORITY :{BLACK}Kohalik omavalitsus: {LTBLUE}{STRING}
+STR_01A9_NONE :puudub
STR_01AA_NAME :{BLACK}Nimi
STR_01AB :{BLACK}{TINYFONT}{STRING}
@@ -645,7 +647,7 @@
STR_01DA_CUSTOM_2 :{TINYFONT}Omatehtud 2
STR_01DB_MUSIC_VOLUME :{BLACK}{TINYFONT}Muusika valjus
STR_01DC_EFFECTS_VOLUME :{BLACK}{TINYFONT}Effektide valjus
-STR_01DD_MIN_MAX :{BLACK}{TINYFONT}MIN ' ' ' ' ' ' MAX
+STR_01DD_MIN_MAX :{BLACK}{TINYFONT}Vähim ' ' ' ' ' ' Suurim
STR_01DE_SKIP_TO_PREVIOUS_TRACK :{BLACK}Eelmine lugu
STR_01DF_SKIP_TO_NEXT_TRACK_IN_SELECTION :{BLACK}Järgmine lugu
STR_01E0_STOP_PLAYING_MUSIC :{BLACK}Lõpeta muusika mängimine
@@ -675,10 +677,10 @@
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Tühjenda valitud programm (ainult omatehtud 1 ja omatehtud 2)
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Muusikaseadete salvestamine
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Vajuta loole, et seda programmi lisada (ainult omatehtud 1 ja omatehtud 2)
-STR_CLICK_ON_TRACK_TO_REMOVE :{BLACK}Vajuta loole, et see eemaldada praegusest progammist (Custom1 või Custom2 ainult)
+STR_CLICK_ON_TRACK_TO_REMOVE :{BLACK}Vajuta laulule, et see eemaldada praegusest progammist (Custom1 või Custom2 ainult)
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Lülita lugude segamine sisse ja välja
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Näita muusikalugude valimise akent
-STR_01FD_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Vajuta pakkumisele, et näha linna/tööstuse asukohta
+STR_01FD_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Vajuta pakkumisele, et näha linna või tööstuse asukohta
STR_01FE_DIFFICULTY :{BLACK}Raskusaste ({STRING})
STR_01FF :{TINYFONT}{BLACK}{DATE_LONG}
STR_0200_LAST_MESSAGE_NEWS_REPORT :Viimane teade
@@ -694,7 +696,7 @@
STR_NEWS_OPEN_CLOSE :{YELLOW}Ava / sulge tööstuseid
STR_020A_ECONOMY_CHANGES :{YELLOW}Muutused majanduses
STR_020B_ADVICE_INFORMATION_ON_PLAYER :{YELLOW}Soovitused ja teated mängija veovahendite kohta
-STR_020C_NEW_VEHICLES :{YELLOW}Uued veovahendid
+STR_020C_NEW_VEHICLES :{YELLOW}Uus veerem
STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Veoste vastuvõtutingimuste muutumine
STR_020E_SUBSIDIES :{YELLOW}Toetused
STR_020F_GENERAL_INFORMATION :{YELLOW}Üldine teave
@@ -726,8 +728,8 @@
STR_022A_GENERATE_RANDOM_LAND :{BLACK}Juhusliku kaardi loomine
STR_022B_RESET_LANDSCAPE :{BLACK}Nulli maastik
STR_022C_RESET_LANDSCAPE :{WHITE}Nulli maastik
-STR_RESET_LANDSCAPE_TOOLTIP :{BLACK}Eemalda kogu mängija omand kaardilt
-STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Kas oled kindel, et tahad eemaldada kogu mängija omandi?
+STR_RESET_LANDSCAPE_TOOLTIP :{BLACK}Eemalda kõik mängija omandid
+STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Kas oled kindel, et tahad lammutada kõik mängija omandid?
STR_022E_LANDSCAPE_GENERATION :{BLACK}Maastiku loomine
STR_022F_TOWN_GENERATION :{BLACK}Linnade loomine
STR_0230_INDUSTRY_GENERATION :{BLACK}Tööstuste loomine
@@ -756,7 +758,7 @@
STR_0246_FACTORY :{BLACK}Vabrik
STR_0247_STEEL_MILL :{BLACK}Terasetööstus
STR_0248_FARM :{BLACK}Talu
-STR_0249_IRON_ORE_MINE :{BLACK}Rauamaagi kaevandus
+STR_0249_IRON_ORE_MINE :{BLACK}Rauamaagikaevandus
STR_024A_OIL_WELLS :{BLACK}Naftapuurauk
STR_024B_BANK :{BLACK}Pank
STR_024C_PAPER_MILL :{BLACK}Paberitehas
@@ -772,7 +774,7 @@
STR_0256_COPPER_ORE_MINE :{BLACK}Vasemaagikaevandus
STR_0257_COTTON_CANDY_FOREST :{BLACK}Suhkruvatimets
STR_0258_CANDY_FACTORY :{BLACK}Maiustuste tehas
-STR_0259_BATTERY_FARM :{BLACK}Patareifarm
+STR_0259_BATTERY_FARM :{BLACK}Patareitalu
STR_025A_COLA_WELLS :{BLACK}Koolapumbad
STR_025B_TOY_SHOP :{BLACK}Mänguasjapood
STR_025C_TOY_FACTORY :{BLACK}Mänguasjatehas
@@ -784,12 +786,12 @@
STR_0262_CONSTRUCT_COAL_MINE :{BLACK}Ehita kivisöekaevandus
STR_0263_CONSTRUCT_POWER_STATION :{BLACK}Ehita elektrijaam
STR_0264_CONSTRUCT_SAWMILL :{BLACK}Ehita saeveski
-STR_0265_PLANT_FOREST :{BLACK}Istuta mets
+STR_0265_PLANT_FOREST :{BLACK}Istuta metsa
STR_0266_CONSTRUCT_OIL_REFINERY :{BLACK}Ehita naftarafineerimistehas
-STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY :{BLACK}Ehita naftaplatvorm (seda saab ehitada vaid kaardi serva)
+STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY :{BLACK}Ehita naftaplatvorm (seda on võimalik ehitada ainult kaardi serva)
STR_0268_CONSTRUCT_FACTORY :{BLACK}Ehita vabrik
STR_0269_CONSTRUCT_STEEL_MILL :{BLACK}Ehita terasetööstus
-STR_026A_CONSTRUCT_FARM :{BLACK}Raja farm
+STR_026A_CONSTRUCT_FARM :{BLACK}Raja talu
STR_026B_CONSTRUCT_IRON_ORE_MINE :{BLACK}Ehita rauamaagikaevandus
STR_026C_CONSTRUCT_OIL_WELLS :{BLACK}Ehita naftapuuraugud
STR_026D_CONSTRUCT_BANK_CAN_ONLY :{BLACK}Ehita pank (saab ehitada vaid linnadesse, mille rahvastikuarv ületab 1200)
@@ -798,16 +800,16 @@
STR_0270_CONSTRUCT_PRINTING_WORKS :{BLACK}Ehita trükikoda
STR_0271_CONSTRUCT_GOLD_MINE :{BLACK}Ehita kullakaevandus
STR_0272_CONSTRUCT_BANK_CAN_ONLY :{BLACK}Ehita pank (saab vaid linnadesse ehitada)
-STR_0273_CONSTRUCT_LUMBER_MILL_TO :{BLACK}Ehita saeveski (vihmametsade puhustamiseks ja puidu tootmiseks)
+STR_0273_CONSTRUCT_LUMBER_MILL_TO :{BLACK}Ehita saeveskit (vihmametsade raideks ja puidu tootmiseks)
STR_0274_PLANT_FRUIT_PLANTATION :{BLACK}Istuta puuviljaistandus
STR_0275_PLANT_RUBBER_PLANTATION :{BLACK}Istuta kummipuuistandus
STR_0276_CONSTRUCT_WATER_SUPPLY :{BLACK}Ehita veepumbad
STR_0277_CONSTRUCT_WATER_TOWER_CAN :{BLACK}Ehita veetorn (saab ainult linnadesse ehitada)
STR_0278_CONSTRUCT_DIAMOND_MINE :{BLACK}Ehita teemantikaevandus
STR_0279_CONSTRUCT_COPPER_ORE_MINE :{BLACK}Ehita vasemaagikaevandus
-STR_027A_PLANT_COTTON_CANDY_FOREST :{BLACK}Istuta suhkruvatimets
+STR_027A_PLANT_COTTON_CANDY_FOREST :{BLACK}Istuta suhkruvatimetsa
STR_027B_CONSTRUCT_CANDY_FACTORY :{BLACK}Ehita maiustuste tehas
-STR_027C_CONSTRUCT_BATTERY_FARM :{BLACK}Ehita patareifarm
+STR_027C_CONSTRUCT_BATTERY_FARM :{BLACK}Ehita patareitalu
STR_027D_CONSTRUCT_COLA_WELLS :{BLACK}Ehita koolapumbad
STR_027E_CONSTRUCT_TOY_SHOP :{BLACK}Ehita mänguasjapood
STR_027F_CONSTRUCT_TOY_FACTORY :{BLACK}Ehita mänguasjatehas
@@ -880,7 +882,7 @@
STR_02CA_TOWN_NAMES_DISPLAYED :{SETX 12}Näidatavad linnanimed
STR_02CC_STATION_NAMES_DISPLAYED :{SETX 12}Näidatavad jaamanimed
STR_02CE_SIGNS_DISPLAYED :{SETX 12}Näidatavad sildid
-STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Näidatavad kontrollpunktid
+STR_WAYPOINTS_DISPLAYED2 :{SETX 12}Näidatavad meldepunktid
STR_02D0_FULL_ANIMATION :{SETX 12}Täielik animeerimine
STR_02D2_FULL_DETAIL :{SETX 12}Kõik üksikasjad
STR_02D4_TRANSPARENT_BUILDINGS :{SETX 12}Läbipaistvad hooned
@@ -888,7 +890,7 @@
############ range ends here
############ range for menu starts
-STR_02D5_LAND_BLOCK_INFO :Maapinna informatsioon
+STR_02D5_LAND_BLOCK_INFO :Maapinna andmed
STR_02D6 :
STR_CONSOLE_SETTING :Lülita konsool sisse/välja
STR_02D7_SCREENSHOT_CTRL_S :Ekraanitõmmis (Ctrl-S)
@@ -912,15 +914,15 @@
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW :{BLACK}Kleebi vaateaknast
STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT :{BLACK}Vaatealma koha võtmine peamiseks vaateks
-STR_02E0_CURRENCY_UNITS :{BLACK}Rahaühik
+STR_02E0_CURRENCY_UNITS :{BLACK}Valuuta
STR_02E1 :{BLACK}{SKIP}{STRING}
-STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Rahaühiku valimine
+STR_02E2_CURRENCY_UNITS_SELECTION :{BLACK}Valuuta valimine
STR_MEASURING_UNITS :{BLACK}Mõõtmisühikud
STR_02E4 :{BLACK}{SKIP}{SKIP}{STRING}
STR_MEASURING_UNITS_SELECTION :{BLACK}Mõõtmisühikute valik
STR_02E6_ROAD_VEHICLES :{BLACK}Sõidukid
STR_02E7 :{BLACK}{SKIP}{SKIP}{SKIP}{STRING}
-STR_02E8_SELECT_SIDE_OF_ROAD_FOR :{BLACK}Vali, kummal pool teed maanteesõidukid liiguvad
+STR_02E8_SELECT_SIDE_OF_ROAD_FOR :{BLACK}Vali, kummal pool teed mootorsõidukid liiklevad
STR_02E9_DRIVE_ON_LEFT :Vasakpoolne liiklus
STR_02EA_DRIVE_ON_RIGHT :Parempoolne liiklus
STR_02EB_TOWN_NAMES :{BLACK}Linnanimed
@@ -929,7 +931,7 @@
STR_02F4_AUTOSAVE :{BLACK}Automaatsalvestus
STR_02F5 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_02F6_SELECT_INTERVAL_BETWEEN :{BLACK}Vali intervall, mille järel automaatsalvestus toimub
+STR_02F6_SELECT_INTERVAL_BETWEEN :{BLACK}Vali intervall, mille järel isesalvestus toimub
STR_02F7_OFF :Väljas
STR_02F8_EVERY_3_MONTHS :Iga 3 kuu tagant
STR_02F9_EVERY_6_MONTHS :Iga 6 kuu tagant
@@ -1087,28 +1089,28 @@
# Start of order review system.
# DON'T ADD OR REMOVE LINES HERE
-STR_TRAIN_HAS_TOO_FEW_ORDERS :{WHITE}Rongil {COMMA} marsruudis on liiga vähe sihtpunkte
+STR_TRAIN_HAS_TOO_FEW_ORDERS :{WHITE}Rongi {COMMA} sõidugraafikus on liiga vähe sihtpunkte
STR_TRAIN_HAS_VOID_ORDER :{WHITE}Rongil {COMMA} on tühistatud käsklus
STR_TRAIN_HAS_DUPLICATE_ENTRY :{WHITE}Rongil {COMMA} on mõni sihtpunktidest topelt
STR_TRAIN_HAS_INVALID_ENTRY :{WHITE}Rongi {COMMA} plaanis on kehtetuid jaamu
-STR_ROADVEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}Maanteesõiduki {COMMA} sõiduplaan sisaldab liiga vähe sihtpunkte
-STR_ROADVEHICLE_HAS_VOID_ORDER :{WHITE}Maanteesõiduki {COMMA} sõiduplaan sisaldab kehtetuid sihtpunkte
-STR_ROADVEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}Maanteesõidukil {COMMA} on mõni sihtpunkt on topelt
-STR_ROADVEHICLE_HAS_INVALID_ENTRY :{WHITE}Maanteesõiduki {COMMA} marsruudis on kehtetuid jaamu
+STR_ROADVEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}Mootorsõiduki {COMMA} sõidugraafik sisaldab liiga vähe sihtpunkte
+STR_ROADVEHICLE_HAS_VOID_ORDER :{WHITE}Mootorsõiduki {COMMA} sõidugraafik sisaldab kehtetuid sihtpunkte
+STR_ROADVEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}Mootorsõidukil {COMMA} on mõni sihtpunkt on topelt
+STR_ROADVEHICLE_HAS_INVALID_ENTRY :{WHITE}Mootorsõiduki {COMMA} sõidugraafik sisaldab olematut jaama
STR_SHIP_HAS_TOO_FEW_ORDERS :{WHITE}Laeval {COMMA} on plaanis liiga vähe sihtpunkte
STR_SHIP_HAS_VOID_ORDER :{WHITE}Laeval {COMMA} on kehtetuid sihtpunkte
STR_SHIP_HAS_DUPLICATE_ENTRY :{WHITE}Laeval {COMMA} on mõni sihtpunkt on topelt
STR_SHIP_HAS_INVALID_ENTRY :{WHITE}Laeva {COMMA} plaanis on kehtetuid jaamu
-STR_AIRCRAFT_HAS_TOO_FEW_ORDERS :{WHITE}Õhusõiduki {COMMA} sõiduplaanis on liiga vähe sihtpunkte
-STR_AIRCRAFT_HAS_VOID_ORDER :{WHITE}Õhusõidukil {COMMA} on sõiduplaanis kehtetu sihtpunkt
+STR_AIRCRAFT_HAS_TOO_FEW_ORDERS :{WHITE}Õhusõiduki {COMMA} sõidugraafikus on liiga vähe sihtpunkte
+STR_AIRCRAFT_HAS_VOID_ORDER :{WHITE}Õhusõidukil {COMMA} on sõidugraafikus kehtetu sihtpunkt
STR_AIRCRAFT_HAS_DUPLICATE_ENTRY :{WHITE}Õhusõidukil {COMMA} on topeltsihtpunkte
-STR_AIRCRAFT_HAS_INVALID_ENTRY :{WHITE}Õhusõiduki {COMMA} sõiduplaanis on kehtetu jaam
+STR_AIRCRAFT_HAS_INVALID_ENTRY :{WHITE}Õhusõiduki {COMMA} sõidugraafikus on kehtetu jaam
# end of order system
-STR_TRAIN_AUTORENEW_FAILED :{WHITE}Rongi automaatne uuendamine {COMMA} ebaõnnestus (rahalimiit)
-STR_ROADVEHICLE_AUTORENEW_FAILED :{WHITE}Maanteesõiduki automaatne uuendamine ebaõnnestus {COMMA} (rahalimiit)
-STR_SHIP_AUTORENEW_FAILED :{WHITE}Laeva automaatne uuendamine ebaõnnestus {COMMA} (rahalimiit)
-STR_AIRCRAFT_AUTORENEW_FAILED :{WHITE}Õhusõiduki automaatne uuendamine ebaõnnestus{COMMA} (rahapiirang)
+STR_TRAIN_AUTORENEW_FAILED :{WHITE}Rongi iseuuendamine {COMMA} ebaõnnestus (rahapiirang)
+STR_ROADVEHICLE_AUTORENEW_FAILED :{WHITE}Mootorsõiduki iseuuendamine ebaõnnestus {COMMA} (rahapiirang)
+STR_SHIP_AUTORENEW_FAILED :{WHITE}Laeva iseuuendamine ebaõnnestus {COMMA} (rahapiirang)
+STR_AIRCRAFT_AUTORENEW_FAILED :{WHITE}Õhusõiduki iseuuendamine ebaõnnestus{COMMA} (rahapiirang)
STR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}Rong {COMMA} on peale asendust liiga pikk
STR_CONFIG_PATCHES :{BLACK}Paranduste seaded
@@ -1120,7 +1122,7 @@
STR_CONFIG_PATCHES_VEHICLESPEED :{LTBLUE}Näita olekuribal veovahendi kiirust: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BUILDONSLOPES :{LTBLUE}Luba ehitised nõlvadele ja kallastele: {ORANGE}{STRING}
STR_CONFIG_PATCHES_CATCHMENT :{LTBLUE}Võimalda reaalsemaid veekogu alasid: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Luba linna teede, sildade, tunnelite jne eemaldamine: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_EXTRADYNAMITE :{LTBLUE}Luba linnateede, -sildade, -tunnelite jne lammutamine: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAMMOTHTRAINS :{LTBLUE}Luba väga pikkade rongide ehitamine: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REALISTICACCEL :{LTBLUE}Aktiveeri realistlik rongide kiirendamine: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FORBID_90_DEG :{LTBLUE}Keela rongidel ja laevadel 90 kraadised pöörded: {ORANGE}{STRING} {LTBLUE} (vajab NPF)
@@ -1136,29 +1138,30 @@
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Luba mitu sama liiki tööstust linna kohta: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Sama liiki tööstusi saab ehitada üksteise lähedale: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Alati näita olekuribal pikka kuupäeva: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_SIGNALSIDE :{LTBLUE}Paiguta signaaltuled raudteele arvestades sõidusuunda: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SIGNALSIDE :{LTBLUE}Paiguta signaalid rööbasteele sõidusuunda arvestades: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SHOWFINANCES :{LTBLUE}Näita rahaliste seisude akent iga aasta lõpus: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_NONSTOP :{LTBLUE}TTDPatchiga ühilduv 'mittepeatumine': {ORANGE}{STRING}
-STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Maanteesõidukite järjekorrad (koos mahueffektidega): {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Mootorsõidukite järjekorrad (koos mahueffektidega): {ORANGE}{STRING}
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Keri vaadet, kui hiir on viidud ekraani serva: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Luba kohalikele võimudele altkäemaksu maksmine: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Luba kohalikule omavalitsusele altkäemaksu maksmine: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Luba suvalise kujuga jaamad: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Uus teeotsimise algoritm(NPF asendab NTP): {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Raskete rongide simuleerimiseks kasutatav raskuse korrutaja: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Luba läbisõidupeatused linnateedel: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS :{LTBLUE}Luba jaamu lähestikku ehitada: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Luba väikesed lennujaamad kuni mängu lõpuni: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Luba väikesed lennuväljad kuni mängu lõpuni: {ORANGE}{STRING}
STR_CONFIG_PATCHES_WARN_LOST_TRAIN :{LTBLUE}Hoiata, kui rong on eksinud: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ORDER_REVIEW :{LTBLUE}Sõidukite sihtpunktide ülevaade: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ORDER_REVIEW_OFF :ei
STR_CONFIG_PATCHES_ORDER_REVIEW_EXDEPOT :jah, kuid jäta välja seisatud veovahendid
STR_CONFIG_PATCHES_ORDER_REVIEW_ON :kõikidest veovahenditest
-STR_CONFIG_PATCHES_WARN_INCOME_LESS :{LTBLUE}Hoiata, kui rongi sissetulek on negatiivne: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_WARN_INCOME_LESS :{LTBLUE}Hoiata, kui rong tekitab kahjumit: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEVER_EXPIRE_VEHICLES :{LTBLUE}Sõidukid ei aegu: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Uuenda vananemisel veovahendeid automaatselt
+STR_CONFIG_PATCHES_AUTORENEW_VEHICLE :{LTBLUE}Uuenda vananemisel veovahendeid ise
STR_CONFIG_PATCHES_AUTORENEW_MONTHS :{LTBLUE}Uuenda {ORANGE}{STRING}{LTBLUE} kuud enne/pärast veovahendi suurimat vanust
-STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Automaatsetele uuendusele kuluv minimaalne raha: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_AUTORENEW_MONEY :{LTBLUE}Iseuuendusele kuluv väikseim summa: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ERRMSG_DURATION :{LTBLUE}Veateate kuvamise kestus: {ORANGE}{STRING}
STR_CONFIG_PATCHES_POPULATION_IN_LABEL :{LTBLUE}Näita linna nimesildil rahvaarvu: {ORANGE}{STRING}
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Nähtamatud puud (läbipaistvate ehitistega): {ORANGE}{STRING}
@@ -1173,7 +1176,7 @@
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_SMOOTH :Sile
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_ROUGH :Mägine
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Väga mägine
-STR_CONFIG_PATCHES_TREE_PLACER :{LTBLUE}Puude panemis süsteem: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TREE_PLACER :{LTBLUE}Puuasetusalgoritm: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TREE_PLACER_NONE :Pole
STR_CONFIG_PATCHES_TREE_PLACER_ORIGINAL :Algupärane
STR_CONFIG_PATCHES_TREE_PLACER_IMPROVED :Täiustatud
@@ -1182,10 +1185,11 @@
STR_CONFIG_PATCHES_HEIGHTMAP_ROTATION_CLOCKWISE :Päevapidi
STR_CONFIG_PATCHES_SE_FLAT_WORLD_HEIGHT :{LTBLUE}Kõrguse level kui kõrgele lapik kaart läheb: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Maksimaalne jaama ala: {ORANGE}{STRING} {RED}Hoiatus: kõrged seaded aeglustavad mängu
-STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Teeninda maandumisplatsidel helikoptereid automaatselt: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Lingi maastiku riba raudtee/tee/vee/lennujaama tööriistaribaga: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Suurim jaama ala: {ORANGE}{STRING} {RED}Hoiatus: kõrged seaded aeglustavad mängu
+STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Hoolda maandumisplatsidel ise helikoptereid: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Liida maastikuriba raudtee/tee/vee/lennujaamade tööriistaribaga: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REVERSE_SCROLLING :{LTBLUE}Kui kerid hiirega, liiguta vaade vastassuunda: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING :{LTBLUE}Sujuv vaatevälja liigutamine: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MEASURE_TOOLTIP :{LTBLUE}Näita mitmesuguste ehitusvahendite kasutamisel mõõtmise kohtspikrit: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES :{LTBLUE}Näita firma livree: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES_NONE :Mitte ükski
@@ -1196,13 +1200,14 @@
STR_CONFIG_PATCHES_SCROLLWHEEL_ZOOM :Suurenda kaarti
STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLL :Keri kaarti
STR_CONFIG_PATCHES_SCROLLWHEEL_OFF :Väljas
-STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER :{LTBLUE}Kaarti kerimisratta kiirus: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER :{LTBLUE}Kaardi kerimisrulliku kiirus: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}Automaatne mängu peatamine uue mängu alustamisel: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS :{LTBLUE}Kasuta laiendatud sõidukinimekirja: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Maks. rongide arv mängija kohta: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Suurim maanteesõidukite arv mängija kohta: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MAX_AIRCRAFT :{LTBLUE}Suurim õhusõidukite arv mängija kohta: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_MAX_SHIPS :{LTBLUE}Maksimaalne laevade arv mängija kohta: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Enim ronge mängija kohta: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Enim mootorsõidukeid mängija kohta: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MAX_AIRCRAFT :{LTBLUE}Enim õhusõidukeid mängija kohta: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_MAX_SHIPS :{LTBLUE}Enim laevu mängija kohta: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_TRAINS :{LTBLUE}Arvuti ei tohi ronge kasutada: {ORANGE}{STRING}
STR_CONFIG_PATCHES_AI_BUILDS_ROADVEH :{LTBLUE}Keela arvutile sõidukid: {ORANGE}{STRING}
@@ -1213,15 +1218,15 @@
STR_CONFIG_PATCHES_AI_IN_MULTIPLAYER :{LTBLUE}Luba TI (AI) võrgumängus (TESTIMISEL!): {ORANGE}{STRING}
STR_CONFIG_PATCHES_SERVINT_TRAINS :{LTBLUE}Vaikimisi hooldusintervall rongidele: {ORANGE}{STRING} päeva
-STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}Vaikimisi teenindusvahemik rongidel: {ORANGE}välja lülitatud
-STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Vaikimisi valitud maanteesõidukite teenindusvahemik: {ORANGE}{STRING} päeva
-STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED :{LTBLUE}Vaikimisi valitud maanteesõidukite teenindusvahemik: {ORANGE}välja lülitatud
-STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Vaikimisi valitud õhusõidukite teenindusvahemik: {ORANGE}{STRING} päeva
-STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Vaikimisi valitud õhusõidukite teenindusvahemik: {ORANGE}välja lülitatud
+STR_CONFIG_PATCHES_SERVINT_TRAINS_DISABLED :{LTBLUE}Vaikimisi hooldusperiood rongidele: {ORANGE}väljas
+STR_CONFIG_PATCHES_SERVINT_ROADVEH :{LTBLUE}Vaikimisi valitud mootorsõidukite hooldusvahemik: {ORANGE}{STRING} päeva
+STR_CONFIG_PATCHES_SERVINT_ROADVEH_DISABLED :{LTBLUE}Vaikimisi valitud mootorsõidukite hooldusvahemik: {ORANGE}välja lülitatud
+STR_CONFIG_PATCHES_SERVINT_AIRCRAFT :{LTBLUE}Vaikimisi valitud õhusõidukite hooldusperiood: {ORANGE}{STRING} päeva
+STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Vaikimisi valitud õhusõidukite hooldusperiood: {ORANGE}väljas
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Vaikimisi hooldusintervall laevadele: {ORANGE}{STRING} päeva
-STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Vaikimisi teenindusvahemik laevadele: {ORANGE}välja lülitatud
-STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Keela teenindamine, kui lagunemine on välja lülitatud: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_WAGONSPEEDLIMITS :{LTBLUE}Luba vaguni kiiruse limiidid: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Vaikimisi hooldusperiood laevadele: {ORANGE}väljas
+STR_CONFIG_PATCHES_NOSERVICE :{LTBLUE}Keela hooldus, kui rikkiminemine on välja lülitatud: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_WAGONSPEEDLIMITS :{LTBLUE}Luba vagunite kiiruspiirangud: {ORANGE}{STRING}
STR_CONFIG_PATCHES_DISABLE_ELRAILS :{LTBLUE}Keela elektrirongid: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_YEAR :{LTBLUE}Värvilised uudised ilmuvad aastast {ORANGE}{STRING}
@@ -1229,11 +1234,11 @@
STR_CONFIG_PATCHES_ENDING_YEAR :{LTBLUE}Mäng lõppeb aastal: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Luba sujuv majandus (väiksemad muutused)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Luba teiste ettevõtete aktsiate ostmine
-STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Venitades paigutatud signaaltulede tihedus: {ORANGE}{STRING} ühik(ut)
+STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Venitades rajatavate signaalide paigutustihedus: {ORANGE}{STRING} ühik(ut)
STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Ehita semaforid automaatselt enne: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID :{WHITE}Stsenaariumiredaktor ei tunnista "ilma teedeta" linnaplaneeringut
-STR_CONFIG_PATCHES_TOWN_LAYOUT :{LTBLUE}Vali linnale teeplaan: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TOWN_LAYOUT :{LTBLUE}Vali linnale teedeplaneering: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOWN_LAYOUT_NO_ROADS :ilma teedeta
STR_CONFIG_PATCHES_TOWN_LAYOUT_DEFAULT :tavalised
STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS :paremad teed
@@ -1246,18 +1251,18 @@
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Paremal
STR_CONFIG_PATCHES_SNAP_RADIUS :{LTBLUE}Akna haaramise raadius: {ORANGE}{STRING} px
STR_CONFIG_PATCHES_SNAP_RADIUS_DISABLED :{LTBLUE}Akna haaramise raadius: {ORANGE}välja lülitatud
-STR_CONFIG_PATCHES_TOWN_GROWTH :{LTBLUE}Linna suurenemise kiirus: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TOWN_GROWTH :{LTBLUE}Linna kasvutempo: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOWN_GROWTH_NONE :Pole
STR_CONFIG_PATCHES_TOWN_GROWTH_SLOW :Aeglane
STR_CONFIG_PATCHES_TOWN_GROWTH_NORMAL :Normaalne
STR_CONFIG_PATCHES_TOWN_GROWTH_FAST :Kiire
STR_CONFIG_PATCHES_TOWN_GROWTH_VERY_FAST :Väga Kiire
-STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Topeltkiirusel suurenevaid linnu: {ORANGE}1 iga {STRING} linna kohta
-STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Topeltkiirusel suurenevaid linnu: {ORANGE}puudub
+STR_CONFIG_PATCHES_LARGER_TOWNS :{LTBLUE}Topeltkiirusel kasvavaid linnu: {ORANGE}1 iga {STRING} linna kohta
+STR_CONFIG_PATCHES_LARGER_TOWNS_DISABLED :{LTBLUE}Topeltkiirusel kasvavaid linnu: {ORANGE}puudub
STR_CONFIG_PATCHES_CITY_SIZE_MULTIPLIER :{LTBLUE}Algne linna suuruse kordaja: {ORANGE}{STRING}
STR_CONFIG_PATCHES_GUI :{BLACK}Välimus
-STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Ehitamine
+STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Ehituskulud
STR_CONFIG_PATCHES_VEHICLES :{BLACK}Sõidukid
STR_CONFIG_PATCHES_STATIONS :{BLACK}Jaamad
STR_CONFIG_PATCHES_ECONOMY :{BLACK}Majandus
@@ -1268,7 +1273,7 @@
STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Muuda seadete väärtusi
-STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Mõni või kõik vaikimisi teenindusvahemikud on kõlbmatud! Lubatud on 5-90% või 30-800 päeva
+STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Mõni või kõik vaikimisi hooldusperioodid on kõlbmatud! Lubatud on 5-90% või 30-800 päeva
STR_CONFIG_PATCHES_YAPF_SHIPS :{LTBLUE}Kasuta YAPF'i laevadel: {ORANGE}{STRING}
STR_CONFIG_PATCHES_YAPF_ROAD :{LTBLUE}Kasuta YAPF'i autodel: {ORANGE}{STRING}
STR_CONFIG_PATCHES_YAPF_RAIL :{LTBLUE}Kasuta YAPF'i rongidel: {ORANGE}{STRING}
@@ -1283,36 +1288,36 @@
STR_CHEATS_WARNING :{BLACK}Hoiatus! Sa kavatsed oma konkurente reeta. Pea meeles, et sellisest häbist ei saa sa enam kunagi lahti.
STR_CHEAT_MONEY :{LTBLUE}Suurenda raha hulka {CURRENCY64} võrra
STR_CHEAT_CHANGE_PLAYER :{LTBLUE}Mängi, kui mängija: {ORANGE}{COMMA}
-STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Maagiline buldooser(eemaldamatute objektide eemaldamine): {ORANGE}{STRING}
+STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Maagiline buldooser (eemaldamatute rajatiste lammutamine): {ORANGE}{STRING}
STR_CHEAT_CROSSINGTUNNELS :{LTBLUE}Tunnelid võivad üksteist läbida: {ORANGE}{STRING}
STR_CHEAT_BUILD_IN_PAUSE :{LTBLUE}Pausi ajal ehitamine: {ORANGE}{STRING}
-STR_CHEAT_NO_JETCRASH :{LTBLUE}Reaktiivlennukid ei kuku alla (tihti) väikestel lennuväljadel: {ORANGE} {STRING}
+STR_CHEAT_NO_JETCRASH :{LTBLUE}Reaktiivlennukid ei kuku (tihti) alla väikestel lennuväljadel: {ORANGE} {STRING}
STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Vaheta kliimat: {ORANGE} {STRING}
STR_CHEAT_CHANGE_DATE :{LTBLUE}Muuda kuupäeva: {ORANGE} {DATE_SHORT}
STR_CHEAT_SETUP_PROD :{LTBLUE}Luba muutuvad tootmisväärtused: {ORANGE}{STRING}
-STR_HEADING_FOR_WAYPOINT :{LTBLUE}Suudub kontrollpunti: {WAYPOINT}
+STR_HEADING_FOR_WAYPOINT :{LTBLUE}Suudub meldepunkti: {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Suundub {WAYPOINT}, {VELOCITY}
STR_GO_TO_WAYPOINT :Läbi punkti {WAYPOINT}
STR_GO_NON_STOP_TO_WAYPOINT :Läbi peatumata punkti{WAYPOINT}
-STR_WAYPOINTNAME_CITY :Kontrollpunkt {TOWN}
-STR_WAYPOINTNAME_CITY_SERIAL :Kontrollpunkt {TOWN} #{COMMA}
-STR_LANDINFO_WAYPOINT :Kontrollpunkt
+STR_WAYPOINTNAME_CITY :{TOWN} meldepunkt
+STR_WAYPOINTNAME_CITY_SERIAL :Meldepunkt {TOWN} #{COMMA}
+STR_LANDINFO_WAYPOINT :Meldepunkt
-STR_WAYPOINT :{WHITE}Kontrollpunkt
-STR_WAYPOINT_GRAPHICS_TIP :{BLACK}Kontrollpunkti tüübi valik
+STR_WAYPOINT :{WHITE}Meldepunkt
+STR_WAYPOINT_GRAPHICS_TIP :{BLACK}Vali meldepunkti liik
STR_WAYPOINT_VIEWPORT :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEWPORT_TINY :{TINYFONT}{WHITE}{WAYPOINT}
STR_WAYPOINT_RAW :{WAYPOINT}
-STR_EDIT_WAYPOINT_NAME :{WHITE}Kontrollpunkti nime muutmine
+STR_EDIT_WAYPOINT_NAME :{WHITE}Muuda meldepunkti nime
-STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Kontrollpunkti nime ei saa muuta...
-STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}Rööbaste muutmine kontrollpunktiks
-STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Rongide kontrollpunkti ei saa siia teha...
-STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Rongide kontrollpunkti ei saa siit eemaldada...
+STR_CANT_CHANGE_WAYPOINT_NAME :{WHITE}Meldepunkti nime ei saa muuta...
+STR_CONVERT_RAIL_TO_WAYPOINT_TIP :{BLACK}Muuda rööpad meldepunktiks
+STR_CANT_BUILD_TRAIN_WAYPOINT :{WHITE}Meldepunkti ei saa siia rajada...
+STR_CANT_REMOVE_TRAIN_WAYPOINT :{WHITE}Meldepunkti ei saa siit eemaldada...
STR_BUILD_AUTORAIL_TIP :{BLACK}Rööbaste ehitamine kasutades "venitamist"
@@ -1345,9 +1350,9 @@
STR_LANDINFO_COORDS :{BLACK}Koordinaadid: {LTBLUE}{NUM}x{NUM} ({STRING})
-STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Jaamaosa ei saa eemaldada...
+STR_CANT_REMOVE_PART_OF_STATION :{WHITE}Siinset jaamablokki ei saa lammutada...
STR_CANT_CONVERT_RAIL :{WHITE}Siin ei saa raudteetüüpi muuta...
-STR_CONVERT_RAIL_TIP :{BLACK}Muuda/uuenda raudteetüüpi
+STR_CONVERT_RAIL_TIP :{BLACK}Muuda/uuenda rööpaliiki
STR_DRAG_WHOLE_TRAIN_TO_SELL_TIP :{BLACK}Tõsta vedur siia, et kogu rong maha müüa
@@ -1362,25 +1367,25 @@
STR_MESSAGES_DISABLE_ALL :{BLACK}Lülita kõik välja
STR_MESSAGES_ENABLE_ALL :{BLACK}Luba kõik
-STR_CONSTRUCT_COAL_MINE_TIP :{BLACK}Kivisöe kaevanduse ehitamine
+STR_CONSTRUCT_COAL_MINE_TIP :{BLACK}Kivisöekaevanduse ehitamine
STR_CONSTRUCT_FOREST_TIP :{BLACK}Metsa istutamine
STR_CONSTRUCT_OIL_RIG_TIP :{BLACK}Naftaplatrvormi ehitamine
STR_CONSTRUCT_FARM_TIP :{BLACK}Talu rajamine
-STR_CONSTRUCT_COPPER_ORE_MINE_TIP :{BLACK}Vasemaagi kaevanduse ehitamine
+STR_CONSTRUCT_COPPER_ORE_MINE_TIP :{BLACK}Vasemaagikaevanduse ehitamine
STR_CONSTRUCT_OIL_WELLS_TIP :{BLACK}Naftapuuraugu ehitamine
STR_CONSTRUCT_GOLD_MINE_TIP :{BLACK}Kullakaevanduse ehitamine
STR_CONSTRUCT_DIAMOND_MINE_TIP :{BLACK}Teemantikaevanduse ehitamine
-STR_CONSTRUCT_IRON_ORE_MINE_TIP :{BLACK}Rauamaagi kaevandus ehitamine
-STR_CONSTRUCT_FRUIT_PLANTATION_TIP :{BLACK}Puuviljaistandusue istutamine
-STR_CONSTRUCT_RUBBER_PLANTATION_TIP :{BLACK}Kummipuu istanduse istutamine
-STR_CONSTRUCT_WATER_SUPPLY_TIP :{BLACK}Rahasta Veevärki
-STR_CONSTRUCT_COTTON_CANDY_TIP :{BLACK}Suhkruvati metsa istutamine
-STR_CONSTRUCT_BATTERY_FARM_TIP :{BLACK}Patarei talu ehitamine
+STR_CONSTRUCT_IRON_ORE_MINE_TIP :{BLACK}Rauamaagikaevanduse ehitamine
+STR_CONSTRUCT_FRUIT_PLANTATION_TIP :{BLACK}Puuviljaistanduse istutamine
+STR_CONSTRUCT_RUBBER_PLANTATION_TIP :{BLACK}Kummipuuistanduse istutamine
+STR_CONSTRUCT_WATER_SUPPLY_TIP :{BLACK}Rahasta veevärki
+STR_CONSTRUCT_COTTON_CANDY_TIP :{BLACK}Suhkruvatimetsa istutamine
+STR_CONSTRUCT_BATTERY_FARM_TIP :{BLACK}Patareitalu ehitamine
STR_CONSTRUCT_COLA_WELLS_TIP :{BLACK}Koolapumpade ehitamine
STR_CONSTRUCT_PLASTIC_FOUNTAINS_TIP :{BLACK}Plastmassiallikate tekitamine
STR_CONSTRUCT_BUBBLE_GENERATOR_TIP :{BLACK}Mulligeneraatori ehitamine
STR_CONSTRUCT_TOFFEE_QUARRY_TIP :{BLACK}Iirisekaevanduse ehitamine
-STR_CONSTRUCT_SUGAR_MINE_TIP :{BLACK}Suhkrukaevandus ehitamine
+STR_CONSTRUCT_SUGAR_MINE_TIP :{BLACK}Suhkrukaevanduse ehitamine
STR_INDUSTRYDIR_CAPTION :{WHITE}Tööstused
STR_INDUSTRYDIR_ITEM :{ORANGE}{INDUSTRY}{BLACK} ({CARGO}){YELLOW} ({COMMA}% veetud)
@@ -1394,11 +1399,11 @@
STR_RAIL_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Vali laadung, mida rong peaks kandma
STR_RAIL_REFIT_TO_CARRY_HIGHLIGHTED :{BLACK}Rongi ümberseadistamine valitud laadungi vedamiseks
STR_RAIL_CAN_T_REFIT_VEHICLE :{WHITE}Ei ole võimalik ümber seadistada...
-STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Teenindusvahemikud on protsentides: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SERVINT_ISPERCENT :{LTBLUE}Hooldusperioodid on protsentides: {ORANGE}{STRING}
STR_CONFIG_GAME_PRODUCTION :{WHITE}Tootlikuse muutmine
TEMP_AI_IN_PROGRESS :{WHITE}Tervitused uuele TI'le(AI). Töö selle kallal veel käib. Peaksite eeldama, et esineb probleeme. Kui juhtud tegema kuvatõmmise, siis postita see ka foorumisse. Edu!
-TEMP_AI_ACTIVATED :{WHITE}Hoiatus: uus tehisintelligents on veel katsetamisel! Hetkel töötavad ainult maanteesõidukid!
+TEMP_AI_ACTIVATED :{WHITE}Hoiatus: uus tehisintelligents on veel eelkatsetamisel! Hetkel töötavad ainult mootorsõidukid!
TEMP_AI_MULTIPLAYER :{WHITE}TÄHELEPANU! Seda funksiooni veel teistitakse. Palun teata kõik probleemid sellega truelight@openttd.org.
############ network gui strings
@@ -1415,7 +1420,7 @@
STR_NETWORK_GAME_NAME :{BLACK}Nimi
STR_NETWORK_GAME_NAME_TIP :{BLACK}Mängu nimi
-STR_NETWORK_INFO_ICONS_TIP :{BLACK}Keel, serveri versioon, jne.
+STR_NETWORK_INFO_ICONS_TIP :{BLACK}Suhtluskeel, serveri versioon, jne.
STR_NETWORK_CLICK_GAME_TO_SELECT :{BLACK}Mäng valimiseks vajuta nimekirjas olevale nimele
STR_NETWORK_FIND_SERVER :{BLACK}Serveri otsimine
@@ -1426,8 +1431,8 @@
STR_NETWORK_GENERAL_ONLINE :{BLACK}{COMMA}/{COMMA} - {COMMA}/{COMMA}
STR_NETWORK_CLIENTS_CAPTION :{BLACK}Kliendid
-STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Kliente sees / maksimum
-STR_NETWORK_GAME_INFO :{SILVER}MÄNGU INFO
+STR_NETWORK_CLIENTS_CAPTION_TIP :{BLACK}Kliente sees / enim kliente{}Ettevõtteid sees / enim ettevõtteid
+STR_NETWORK_GAME_INFO :{SILVER}MÄNGU ANDMED
STR_ORANGE :{ORANGE}{STRING}
STR_NETWORK_CLIENTS :{SILVER}Kliendid: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
STR_NETWORK_LANGUAGE :{SILVER}Keel: {WHITE}{STRING}
@@ -1454,7 +1459,7 @@
STR_NETWORK_PASSWORD_TIP :{BLACK}Kaitse oma mäng parooliga, kui sa ei taha, et kõik sellele ligi pääseksid
STR_NETWORK_SELECT_MAP :{BLACK}Vali kaart:
STR_NETWORK_SELECT_MAP_TIP :{BLACK}Millist kaarti sa tahad mängida?
-STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Maksimaalne klientide arv:
+STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Suurim klientide arv:
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Määra suurim klientide arv. Kõik vabad kohad ei pea täidetud olema
STR_NETWORK_COMBO1 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_LAN :kohtvõrk (LAN)
@@ -1473,10 +1478,10 @@
STR_NETWORK_8_PLAYERS :8 mängijat
STR_NETWORK_9_PLAYERS :9 mängijat
STR_NETWORK_10_PLAYERS :10 mängijat
-STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}Maks. firmasi:
+STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}Enim ettevõtteid:
STR_NETWORK_NUMBER_OF_COMPANIES_TIP :{BLACK}Luba serveris X mängijat
STR_NETWORK_COMBO3 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
-STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}Maks. vaatajaid
+STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}Enim pealtvaatajaid
STR_NETWORK_NUMBER_OF_SPECTATORS_TIP :{BLACK}Luba serveris X vaatajat
STR_NETWORK_COMBO4 :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Räägitav keel:
@@ -1492,6 +1497,31 @@
STR_NETWORK_LANG_ENGLISH :Inglise keel
STR_NETWORK_LANG_GERMAN :Saksa keel
STR_NETWORK_LANG_FRENCH :Prantsuse keel
+STR_NETWORK_LANG_BRAZILIAN :Brasiilia
+STR_NETWORK_LANG_BULGARIAN :Bulgaaria
+STR_NETWORK_LANG_CHINESE :Hiina
+STR_NETWORK_LANG_CZECH :Tšehhi
+STR_NETWORK_LANG_DANISH :Taani
+STR_NETWORK_LANG_DUTCH :Hollandi
+STR_NETWORK_LANG_ESPERANTO :Esperanto
+STR_NETWORK_LANG_FINNISH :Soome
+STR_NETWORK_LANG_HUNGARIAN :Ungari
+STR_NETWORK_LANG_ICELANDIC :Islandi
+STR_NETWORK_LANG_ITALIAN :Itaalia
+STR_NETWORK_LANG_JAPANESE :Jaapani
+STR_NETWORK_LANG_KOREAN :Korea
+STR_NETWORK_LANG_LITHUANIAN :Leedu
+STR_NETWORK_LANG_NORWEGIAN :Norra
+STR_NETWORK_LANG_POLISH :Poola
+STR_NETWORK_LANG_PORTUGUESE :Portugali
+STR_NETWORK_LANG_ROMANIAN :Rumeenia
+STR_NETWORK_LANG_RUSSIAN :Vene
+STR_NETWORK_LANG_SLOVAK :Slovakkia
+STR_NETWORK_LANG_SLOVENIAN :Sloveenia
+STR_NETWORK_LANG_SPANISH :Hispaania
+STR_NETWORK_LANG_SWEDISH :Rootsi
+STR_NETWORK_LANG_TURKISH :Türgi
+STR_NETWORK_LANG_UKRAINIAN :Ukraina
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Võrgumängu jututuba
@@ -1507,13 +1537,13 @@
STR_NETWORK_REFRESH :{BLACK}Värskenda servereid
STR_NETWORK_REFRESH_TIP :{BLACK}Serveri info värskendamine
-STR_NETWORK_COMPANY_INFO :{SILVER}ETTEVÕTE INFO
+STR_NETWORK_COMPANY_INFO :{SILVER}ETTEVÕTE ANDMED
STR_NETWORK_COMPANY_NAME :{SILVER}Ettevõtte nimi: {WHITE}{STRING}
STR_NETWORK_INAUGURATION_YEAR :{SILVER}Avamine: {WHITE}{NUM}
-STR_NETWORK_VALUE :{SILVER}Ettevõtte väärtus: {WHITE}{CURRENCY64}
+STR_NETWORK_VALUE :{SILVER}Firmaväärtus: {WHITE}{CURRENCY64}
STR_NETWORK_CURRENT_BALANCE :{SILVER}Rahaline seis: {WHITE}{CURRENCY64}
-STR_NETWORK_LAST_YEARS_INCOME :{SILVER}Eelmise aasta sissetulek: {WHITE}{CURRENCY64}
+STR_NETWORK_LAST_YEARS_INCOME :{SILVER}Eelmise aasta tulud: {WHITE}{CURRENCY64}
STR_NETWORK_PERFORMANCE :{SILVER}Suutlikus: {WHITE}{NUM}
STR_NETWORK_VEHICLES :{SILVER}Sõidukid: {WHITE}{NUM} {TRAIN}, {NUM} {LORRY}, {NUM} {BUS}, {NUM} {PLANE}, {NUM} {SHIP}
@@ -1628,93 +1658,119 @@
##id 0x0800
STR_0800_COST :{TINYFONT}{RED}Hind: {CURRENCY}
STR_0801_COST :{RED}Hind: {CURRENCY}
-STR_0802_INCOME :{TINYFONT}{GREEN}Sissetulek: {CURRENCY}
-STR_0803_INCOME :{GREEN}Sissetulek: {CURRENCY}
+STR_0802_INCOME :{TINYFONT}{GREEN}Tulu: {CURRENCY}
+STR_0803_INCOME :{GREEN}Tulu: {CURRENCY}
STR_FEEDER_TINY :{TINYFONT}{YELLOW}Kanna üle: {CURRENCY}
STR_FEEDER :{YELLOW}Kanna üle: {CURRENCY}
STR_0805_ESTIMATED_COST :{WHITE}Eeldatav hind: {CURRENCY}
-STR_0807_ESTIMATED_INCOME :{WHITE}Eeldatav sissetulek: {CURRENCY}
+STR_0807_ESTIMATED_INCOME :{WHITE}Eeldatavad tulud: {CURRENCY}
STR_0808_CAN_T_RAISE_LAND_HERE :{WHITE}Siin ei saa maad kõrgendada...
STR_0809_CAN_T_LOWER_LAND_HERE :{WHITE}Siin ei saa maad madaldada...
STR_080A_ROCKS :Kaljud
STR_080B_ROUGH_LAND :Konarlik maa
STR_080C_BARE_LAND :Lage maa
-STR_080D_GRASS :Muru
+STR_080D_GRASS :Rohi
STR_080E_FIELDS :Põllud
STR_080F_SNOW_COVERED_LAND :Lumekattega maa
STR_0810_DESERT :Kõrb
##id 0x1000
STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION :{WHITE}Maa on vales suunas kaldu
-STR_1001_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Teostamatu raudteede kombinatsioon
+STR_1001_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Teostamatu rööbasteede kooslus
STR_1002_EXCAVATION_WOULD_DAMAGE :{WHITE}Kaevandamine kahjustaks tunnelit
STR_1003_ALREADY_AT_SEA_LEVEL :{WHITE}Juba jõutud meretasemeni
STR_1004_TOO_HIGH :{WHITE}Liiga kõrge
STR_1005_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Sobiv rongitee puudub
STR_1007_ALREADY_BUILT :{WHITE}...juba ehitatud
-STR_1008_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Raudtee tuleb eelnevalt eemaldada
-STR_100A_RAILROAD_CONSTRUCTION :{WHITE}Raudteede ehitamine
-STR_TITLE_ELRAIL_CONSTRUCTION :{WHITE}Elektriraudtee ehitus
-STR_100B_MONORAIL_CONSTRUCTION :{WHITE}Monorelsi ehitus
-STR_100C_MAGLEV_CONSTRUCTION :{WHITE}MagLevi ehitus
+STR_1008_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Rööbastee tuleb eelnevalt lammutada
+STR_100A_RAILROAD_CONSTRUCTION :{WHITE}Rööbastee ehitamine
+STR_TITLE_ELRAIL_CONSTRUCTION :{WHITE}Elektrifitseeritud rööbastee ehitus
+STR_100B_MONORAIL_CONSTRUCTION :{WHITE}Monorööbastee ehitamine
+STR_100C_MAGLEV_CONSTRUCTION :{WHITE}Elektromageetilise rööbastee ehitamine
STR_100D_SELECT_RAIL_BRIDGE :{WHITE}Vali raudteesild
STR_100E_CAN_T_BUILD_TRAIN_DEPOT :{WHITE}Siia ei saa depood ehitada...
-STR_100F_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Siia ei saa rongijaama ehitada...
-STR_1010_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Siia ei saa signaaltuld asetada...
-STR_1011_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Siia ei saa raudteed ehitada...
-STR_1012_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Siit ei saa raudteed eemaldada...
-STR_1013_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Siit ei saa signaaltulesid eemaldada...
+STR_100F_CAN_T_BUILD_RAILROAD_STATION :{WHITE}Siia ei saa raudteejaama ehitada...
+STR_1010_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Siia ei saa signaale rajada...
+STR_1011_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Siia ei saa rööbasteed ehitada...
+STR_1012_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Siit ei saa rööbasteed lammutada...
+STR_1013_CAN_T_REMOVE_SIGNALS_FROM :{WHITE}Siit ei saa signaale lammutada...
STR_1014_TRAIN_DEPOT_ORIENTATION :{WHITE}Depoo suund
-STR_1015_RAILROAD_CONSTRUCTION :Raudtee ehitus
-STR_TOOLB_ELRAIL_CONSTRUCTION :Elektriraudtee ehitus
-STR_1016_MONORAIL_CONSTRUCTION :Monorelsi ehitus
-STR_1017_MAGLEV_CONSTRUCTION :MagLevi ehitus
-STR_1018_BUILD_RAILROAD_TRACK :{BLACK}Ehita rongitee
+STR_1015_RAILROAD_CONSTRUCTION :Rööbastee ehitamine
+STR_TOOLB_ELRAIL_CONSTRUCTION :Elektrifitseeritud rööbastee ehitus
+STR_1016_MONORAIL_CONSTRUCTION :Monorööbastee ehitamine
+STR_1017_MAGLEV_CONSTRUCTION :Elektromagneetilise rööbastee ehitamine
+STR_1018_BUILD_RAILROAD_TRACK :{BLACK}Ehita rööbasteed
STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Ehita rongidepoo (rongide ehitamiseks ja hoolduseks)
-STR_101A_BUILD_RAILROAD_STATION :{BLACK}Ehita rongijaam
-STR_101B_BUILD_RAILROAD_SIGNALS :{BLACK}Ehita rongisignaalid
+STR_101A_BUILD_RAILROAD_STATION :{BLACK}Ehita raudteejaam
+STR_101B_BUILD_RAILROAD_SIGNALS :{BLACK}Ehita rööbasteesignaale
STR_101C_BUILD_RAILROAD_BRIDGE :{BLACK}Ehita raudteesild
STR_101D_BUILD_RAILROAD_TUNNEL :{BLACK}Ehita rongitunnel
-STR_101E_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Rööbaste ja signaaltulede ehitamine/eemaldamine
+STR_101E_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Lülitu rööbastee ja signaalide ehitamise ja lammutamise vahel
STR_101F_BRIDGE_SELECTION_CLICK :{BLACK}Silla valik - klõpsa sobivale sillale, et seda ehitada
STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO :{BLACK}Depoole suuna valimine
-STR_1021_RAILROAD_TRACK :Raudtee
+STR_1021_RAILROAD_TRACK :Rööbastee
STR_1023_RAILROAD_TRAIN_DEPOT :Rongidepoo
STR_1024_AREA_IS_OWNED_BY_ANOTHER :{WHITE}...ala kuulub teisele ettevõttele
-STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS :Raudtee tavaliste signaaltuledega
-STR_RAILROAD_TRACK_WITH_PRESIGNALS :Raudtee eel-signaalidega
-STR_RAILROAD_TRACK_WITH_EXITSIGNALS :Raudtee väljumis-signaalidega
-STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Raudtee mitmiksignaalidega
+STR_RAILROAD_TRACK_WITH_NORMAL_SIGNALS :Rööbastee läbisõidusignaalidega
+STR_RAILROAD_TRACK_WITH_PRESIGNALS :Rööbastee sissesõidusignaalidega
+STR_RAILROAD_TRACK_WITH_EXITSIGNALS :Rööbastee väljasõidusignaalidega
+STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Rööbastee mitmiksignaalidega
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS :Rööbastee läbisõidu- ja hoiatussignaalidega
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS :Rööbastee läbisõidu- ja väljasõidusignaalidega
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS :Rööbastee läbisõidu- ja mitmiksignaalidega
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS :Rööbastee hoiatus- ja väljasõidusignaalidega
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS :Rööbastee hoiatus- ja mitmiksignaalidega
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS :Rööbastee väljasõidu- ja mitmiksignaalidega
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Raudteejaama peab eelnevalt lammutama
##id 0x1800
-STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Enne on vaja maantee eemaldada
+STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Enne on vaja sõidutee lammutada
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Teede ehitamine
-STR_1802_ROAD_CONSTRUCTION :{WHITE}Teede ehitamine
+STR_1802_ROAD_CONSTRUCTION :{WHITE}Sõiduteede ehitus
+STR_1802_TRAMWAY_CONSTRUCTION :{WHITE}Trammitee ehitamine
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Vali sillatüüp
-STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Siia ei saa maanteed ehitada...
-STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Siit ei saa maanteed eemaldada...
+STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... ühesuunalised teed ei saa teedesõlmi omada
+STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Siia ei saa sõiduteed ehitada...
+STR_1804_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Trammiteed ei ole võimalik siia rajada...
+STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Siinset sõiduteed ei saa lammutada...
+STR_1805_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Siinset trammiteed ei saa lammutada...
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Depoo suund
+STR_1806_TRAM_DEPOT_ORIENTATION :{WHITE}Trammidepoo suund
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Siia ei saa depood ehitada...
+STR_1807_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}Trammidepood ei saa siia rajada
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Siia ei saa bussijaama ehitada...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Siia ei saa laadimisplatsi ehitada...
-STR_180A_ROAD_CONSTRUCTION :Teeehitus
-STR_180B_BUILD_ROAD_SECTION :{BLACK}Ehita tee osa
+STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Siia ei saa reisitrammijaama rajada...
+STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Siia ei saa kaubatrammijaama rajada...
+STR_180A_ROAD_CONSTRUCTION :Tee-ehitus
+STR_180A_TRAMWAY_CONSTRUCTION :Trammitee ehitamine
+STR_180B_BUILD_ROAD_SECTION :{BLACK}Ehita sõidutee blokk
+STR_180B_BUILD_TRAMWAY_SECTION :{BLACK}Ehita trammitee blokk
STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Depoo ehitamine (veovahendite ehitamiseks ja hooldamiseks)
+STR_180C_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Ehita trammidepoo (veeremi ehitamiseks ja hoolduseks)
STR_180D_BUILD_BUS_STATION :{BLACK}Ehita bussijaam
STR_180E_BUILD_TRUCK_LOADING_BAY :{BLACK}Ehita veokite laadimisplats
+STR_180D_BUILD_PASSENGER_TRAM_STATION :{BLACK}Ehita reisitrammijaam
+STR_180E_BUILD_CARGO_TRAM_STATION :{BLACK}Ehita kaubatrammijaam
STR_180F_BUILD_ROAD_BRIDGE :{BLACK}Ehita sild
+STR_180F_BUILD_TRAMWAY_BRIDGE :{BLACK}Ehita trammisild
STR_1810_BUILD_ROAD_TUNNEL :{BLACK}Ehita tunnel
-STR_1811_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Teeehituse ja -eemaldamise vahetamine
+STR_1810_BUILD_TRAMWAY_TUNNEL :{BLACK}Ehita trammitunnel
+STR_1811_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Tee-ehituse ja -lammutamise vahetamine
+STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Lülitu trammitee ehitamise ja lammutamise vahel
STR_1813_SELECT_ROAD_VEHICLE_DEPOT :{BLACK}Vali depoole suund
-STR_1814_ROAD :Maantee
-STR_1815_ROAD_WITH_STREETLIGHTS :Valgustatud maantee
+STR_1813_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Vali trammidepoo suund
+STR_1814_ROAD :Sõidutee
+STR_1815_ROAD_WITH_STREETLIGHTS :Valgustatud sõidutee
STR_1816_TREE_LINED_ROAD :Kolmerajaline tee
STR_1817_ROAD_VEHICLE_DEPOT :Depoo
-STR_1818_ROAD_RAIL_LEVEL_CROSSING :Raudtee ülesõit
-STR_CAN_T_REMOVE_BUS_STATION :{WHITE}Bussijaama ei saa eemaldada...
-STR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Ei saa eemaldada veoauto jaama...
+STR_1818_ROAD_RAIL_LEVEL_CROSSING :Raudteeületuskoht
+STR_CAN_T_REMOVE_BUS_STATION :{WHITE}Siinset bussijaama ei saa lammutada...
+STR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Siinset laadimisplatsi ei saa lammutada...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Siinset reisitrammijaama ei saa lammutada...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Siinset kaubatrammijaama ei saa lammutada...
##id 0x2000
STR_2000_TOWNS :{WHITE}Linnad
@@ -1725,15 +1781,15 @@
STR_2002 :{TINYFONT}{BLACK}{STRING}
STR_2004_BUILDING_MUST_BE_DEMOLISHED :{WHITE}Ehitis tuleb eelnevalt hävitada
STR_2005 :{WHITE}{TOWN}
-STR_2006_POPULATION :{BLACK}Rahvastik: {ORANGE}{COMMA}{BLACK} Maju: {ORANGE}{COMMA}
+STR_2006_POPULATION :{BLACK}Rahvastik: {ORANGE}{COMMA}{BLACK} Ehitisi: {ORANGE}{COMMA}
STR_2007_RENAME_TOWN :Linnanime muutmine
STR_2008_CAN_T_RENAME_TOWN :{WHITE}Linnanime ei saa muuta...
-STR_2009_LOCAL_AUTHORITY_REFUSES :{WHITE}{TOWN} kohalik võim keeldub seda lubamast
+STR_2009_LOCAL_AUTHORITY_REFUSES :{WHITE}{TOWN} kohalik omavalitsus keeldub seda lubamast
STR_200A_TOWN_NAMES_CLICK_ON_NAME :{BLACK}Linnanimed - vajuta linnanimele, et viia vaade linnale
STR_200B_CENTER_THE_MAIN_VIEW_ON :{BLACK}Vaate viimine linnale
STR_200C_CHANGE_TOWN_NAME :{BLACK}Linnanime muutmine
-STR_200D_PASSENGERS_LAST_MONTH_MAX :{BLACK}Reisijaid eelmisel kuul: {ORANGE}{COMMA}{BLACK} maksimum: {ORANGE}{COMMA}
-STR_200E_MAIL_LAST_MONTH_MAX :{BLACK}Posti eelmisel kuul: {ORANGE}{COMMA}{BLACK} maksimum: {ORANGE}{COMMA}
+STR_200D_PASSENGERS_LAST_MONTH_MAX :{BLACK}Reisijaid eelmisel kuul: {ORANGE}{COMMA}{BLACK} Enim: {ORANGE}{COMMA}
+STR_200E_MAIL_LAST_MONTH_MAX :{BLACK}Posti eelmisel kuul: {ORANGE}{COMMA}{BLACK} Enim: {ORANGE}{COMMA}
STR_200F_TALL_OFFICE_BLOCK :Kõrge büroohoone
STR_2010_OFFICE_BLOCK :Büroohoone
STR_2011_SMALL_BLOCK_OF_FLATS :Väike kortermaja
@@ -1751,9 +1807,9 @@
STR_201D_OFFICE_BLOCK :Büroohoone
STR_201E_STADIUM :Staadion
STR_201F_OLD_HOUSES :Vanad majad
-STR_2020_LOCAL_AUTHORITY :{BLACK}Kohalik võim
-STR_2021_SHOW_INFORMATION_ON_LOCAL :{BLACK}Näita teavet kohaliku võimu kohta
-STR_2022_LOCAL_AUTHORITY :{WHITE}{TOWN} kohalik võim
+STR_2020_LOCAL_AUTHORITY :{BLACK}Kohalik omavalitsus
+STR_2021_SHOW_INFORMATION_ON_LOCAL :{BLACK}Näita teavet kohaliku omavalitsuse kohta
+STR_2022_LOCAL_AUTHORITY :{WHITE}{TOWN} kohalik omavalitsus
STR_2023_TRANSPORT_COMPANY_RATINGS :{BLACK}Ettevõtete hinnangud:
STR_2024 :{YELLOW}{COMPANY}{PLAYERNAME}: {ORANGE}{STRING}
STR_2025_SUBSIDIES :{WHITE}Toetused
@@ -1761,17 +1817,17 @@
STR_2027_FROM_TO :{ORANGE}{STRING} kohast {STRING} kohta {STRING}
STR_2028_BY :{YELLOW} (kuni {DATE_SHORT})
STR_202A_NONE :{ORANGE}Mitte ühtegi
-STR_202B_SERVICES_ALREADY_SUBSIDISED :{BLACK}Juba toetatavad teenused
+STR_202B_SERVICES_ALREADY_SUBSIDISED :{BLACK}Juba toetatavad veoteenused:
STR_202C_FROM_TO :{ORANGE}{STRING} kohast {STATION} kohta {STATION}{YELLOW} ({COMPANY}
STR_202D_UNTIL :{YELLOW}, kuni {DATE_SHORT})
-STR_202E_OFFER_OF_SUBSIDY_EXPIRED :{BLACK}{BIGFONT}Toetuse pakkumine lõppes: {}{}{STRING.g} kohast {STRING} kohta {STRING} veo eest ei maksta enam toetusi.
+STR_202E_OFFER_OF_SUBSIDY_EXPIRED :{BLACK}{BIGFONT}Toetuse pakkumine lõppes: {}{}{STRING.g} kohast {STRING} kohta {STRING} veoste eest ei maksta enam toetusi.
STR_202F_SUBSIDY_WITHDRAWN_SERVICE :{BLACK}{BIGFONT}Toetuse maksmise aeg sai läbi:{}{}{STRING}kohast {STATION} kohta {STATION} eest ei maksta enam edaspidi toetust.
-STR_2030_SERVICE_SUBSIDY_OFFERED :{BLACK}{BIGFONT}Transporditeenusele pakutakse toetust:{}{}{STRING.g}veo eest linnast {STRING} linna {STRING}. Esimesele teenusepakkujale makstakse aasta läbi toetusi!
+STR_2030_SERVICE_SUBSIDY_OFFERED :{BLACK}{BIGFONT}Veoteenusele pakutakse toetust:{}{}{STRING.g}veo eest linnast {STRING} linna {STRING}. Esimesele teenusepakkujale makstakse aasta läbi toetusi!
STR_2031_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Teenusetoetust makstakse ettevõttele {COMPANY}!{}{}{STRING} kohast {STATION} kohta {STATION} teenuse eest makstakse järgmisel aastal 50% rohkem!
STR_2032_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Teenusetoetust makstakse ettevõttele {COMPANY}!{}{}{STRING} kohast {STATION} kohta {STATION} teenuse eest makstakse järgmisel aastal kahekordselt!
STR_2033_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Teenusetoetust makstakse ettevõttele {COMPANY}!{}{}{STRING} kohast {STATION} kohta {STATION} teenuse eest makstakse järgmisel aastal kolmekordselt!
STR_2034_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Teenusetoetust makstakse ettevõttele {COMPANY}!{}{}{STRING} kohast {STATION} kohta {STATION} teenuse eest makstakse järgmisel aastal neljakordselt!
-STR_2035_LOCAL_AUTHORITY_REFUSES :{WHITE}Linna {TOWN} kohalik võim keelab uut lennujaama siia ehitada
+STR_2035_LOCAL_AUTHORITY_REFUSES :{WHITE}Linna {TOWN} kohalik omavalitsus keeldub uut lennujaama lubamast
STR_2036_COTTAGES :Suvilad
STR_2037_HOUSES :Majad
STR_2038_FLATS :Korterid
@@ -1785,32 +1841,32 @@
STR_2040_CINEMA :Kino
STR_2041_SHOPPING_MALL :Ostukeskus
STR_2042_DO_IT :{BLACK}Soorita toiming
-STR_2043_LIST_OF_THINGS_TO_DO_AT :{BLACK}Nimekiri asjadest, mida saab siin linnas teha - vajuta nimele, et saada rohkem informatsiooni
+STR_2043_LIST_OF_THINGS_TO_DO_AT :{BLACK}Nimekiri asjadest, mida saab siin linnas teha - klõpsa esemel, et saada rohkem andmeid
STR_2044_CARRY_OUT_THE_HIGHLIGHTED :{BLACK}Soorita ülalpool valitud toiming
STR_2045_ACTIONS_AVAILABLE :{BLACK}Pakutavad toimingud:
STR_2046_SMALL_ADVERTISING_CAMPAIGN :Väike reklaamikampaania
STR_2047_MEDIUM_ADVERTISING_CAMPAIGN :Keskmine reklaamikampaania
STR_2048_LARGE_ADVERTISING_CAMPAIGN :Suur reklaamikampaania
-STR_2049_FUND_LOCAL_ROAD_RECONSTRUCTION :Rahasta kohalikke teetöid
+STR_2049_FUND_LOCAL_ROAD_RECONSTRUCTION :Rahasta kohalikke teehoiutöid
STR_204A_BUILD_STATUE_OF_COMPANY :Ehita ettevõtte omaniku kuju
STR_204B_FUND_NEW_BUILDINGS :Rahasta uute hoonete ehitust
STR_204C_BUY_EXCLUSIVE_TRANSPORT :Osta monopoolsed veoõigused
-STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY :Paku kohalikele võimuesindajatele altkäemaksu
+STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY :Paku kohalikule omavalitsusele altkäemaksu
STR_204D_INITIATE_A_SMALL_LOCAL :{WHITE}{STRING}{}{YELLOW} Väikese reklaamikampaania korraldamine rohkemate reisijate ja kaupade meelitamiseks kasutama sinu teenuseid.{} Hind: {CURRENCY}
STR_204E_INITIATE_A_MEDIUM_LOCAL :{WHITE}{STRING}{}{YELLOW} Keskmise reklaamikampaania korraldamine, et meelitada rohkem reisijaid ja kaupu sinu teenuste juurede.{} Hind: {CURRENCY}
STR_204F_INITIATE_A_LARGE_LOCAL :{WHITE}{STRING}{}{YELLOW} Suure reklaamikampaania korraldamine, et meelitada rohkem reisijaid ja kaupu sinu teenuste juurede.{} Hind: {CURRENCY}
-STR_2050_FUND_THE_RECONSTRUCTION :{WHITE}{STRING}{}{YELLOW} Teetööde rahastamine. Põhjustab linnateedel tõsiseid liiklusprobleeme kuni 6 kuuks.{} Hind: {CURRENCY}
+STR_2050_FUND_THE_RECONSTRUCTION :{WHITE}{STRING}{}{YELLOW} Teehoiutööde rahastamine. Põhjustab linnatänavatel tõsiseid liiklusprobleeme kuni 6 kuuks.{} Hind: {CURRENCY}
STR_2051_BUILD_A_STATUE_IN_HONOR :{WHITE}{STRING}{}{YELLOW} Oma ettevõtte auks kuju ehitamine.{} Hind: {CURRENCY}
STR_2052_FUND_THE_CONSTRUCTION_OF :{WHITE}{STRING}{}{YELLOW} Uute ärihoonete ehitamise rahastamine selles linnas.{} Hind: {CURRENCY}
-STR_2053_BUY_1_YEAR_S_EXCLUSIVE :{WHITE}{STRING}{}{YELLOW} Üheks aastaks monopoolsete veoõiguste ostmine selles linnas. Linna võimud lubavad reisijate ja kauba veoks kasutada ainult sinu jaamasid.{} Hind: {CURRENCY}
-STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY_DESC :{WHITE}{STRING}{}{YELLOW} Linnavõimudele ettevõtu reitingu tõstmise eesmärgil altkäemaksu pakkumine. Vahele jäädes korral tuleb trahvi maksta.{} Hind: {CURRENCY}
+STR_2053_BUY_1_YEAR_S_EXCLUSIVE :{WHITE}{STRING}{}{YELLOW} Üheks aastaks monopoolsete veoõiguste ostmine selles linnas. Linna omavalitsus lubab reisijate ja kauba veoks kasutada ainult sinu jaamasid.{} Hind: {CURRENCY}
+STR_TOWN_BRIBE_THE_LOCAL_AUTHORITY_DESC :{WHITE}{STRING}{}{YELLOW} Linna omavalitusele ettevõtu reitingu tõstmise eesmärgil altkäemaksu pakkumine. Vahele jäädes korral tuleb trahvi maksta.{} Hind: {CURRENCY}
STR_2055_TRAFFIC_CHAOS_IN_ROAD_REBUILDING :{BIGFONT}{BLACK}Liikluskaos linnas {TOWN}!{}{}Ettevõtte {COMPANY} poolt rahastatud teedeehitus tekitab 6 kuu jooksul maanteedel liiklushäireid!
STR_2056 :{TINYFONT}{WHITE}{TOWN}
STR_2057 :{ORANGE}{TOWN}{BLACK} ({COMMA})
STR_2058_UNDER_CONSTRUCTION :{STRING} (ehitusel)
STR_2059_IGLOO :Iglu
STR_205A_TEPEES :Tipid
-STR_205B_TEAPOT_HOUSE :Teepoti maja
+STR_205B_TEAPOT_HOUSE :Teekannu maja
STR_205C_PIGGY_BANK :Krossu pank
STR_INDUSTRY :{INDUSTRY}
@@ -1839,10 +1895,10 @@
##id 0x3000
STR_3000_RAIL_STATION_SELECTION :{WHITE}Raudteejaama valik
-STR_3001_AIRPORT_SELECTION :{WHITE}Lennujaama valik
+STR_3001_AIRPORT_SELECTION :{WHITE}Lennuvälja valik
STR_3002_ORIENTATION :{BLACK}Orientatsioon
STR_3003_NUMBER_OF_TRACKS :{BLACK}Radade arv
-STR_3004_PLATFORM_LENGTH :{BLACK}Platvormi pikkus
+STR_3004_PLATFORM_LENGTH :{BLACK}Perrooni pikkus
STR_3005_TOO_CLOSE_TO_ANOTHER_RAILROAD :{WHITE}Teisele raudteejaamale liiga lähedal
STR_3006_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Mitme olemasoleva jaama ühendamine
STR_3007_TOO_MANY_STATIONS_LOADING :{WHITE}Selles linnas on juba liiga palju jaamasid
@@ -1851,15 +1907,15 @@
STR_3008B_TOO_MANY_TRUCK_STOPS :{WHITE}Liiga palju laadimisplatvorme
STR_3009_TOO_CLOSE_TO_ANOTHER_STATION :{WHITE}Mõnele teisele jaamale liiga lähedal
STR_300A_0 :{WHITE}{STATION} {STATIONFEATURES}
-STR_300B_MUST_DEMOLISH_RAILROAD :{WHITE}Raudteejaam tuleb eelnevalt hävitada
+STR_300B_MUST_DEMOLISH_RAILROAD :{WHITE}Raudteejaam tuleb eelnevalt lammutada
STR_300D_TOO_CLOSE_TO_ANOTHER_AIRPORT :{WHITE}Liiga lähedal teisele lennuväljale
-STR_300E_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Lennujaam tuleb eelnevalt hävitada
+STR_300E_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Lennuväli tuleb eelnevalt lammutada
STR_3030_RENAME_STATION_LOADING :Jaama nime muutmine
STR_3031_CAN_T_RENAME_STATION :{WHITE}Jaama nime ei saa muuta...
-STR_3032_RATINGS :{BLACK}Reitingud
+STR_3032_RATINGS :{BLACK}Hinnangud
STR_3033_ACCEPTS :{BLACK}Võtab vastu
-STR_3034_LOCAL_RATING_OF_TRANSPORT :{BLACK}Kohaliku veoteenuse reiting:
+STR_3034_LOCAL_RATING_OF_TRANSPORT :{BLACK}Kohaliku veoteenuse hinnang:
############ range for rating starts
STR_3035_APPALLING :Kohutav
@@ -1879,8 +1935,12 @@
STR_3041_NOW_ACCEPTS_AND :{WHITE}Jaam {STATION} võtab nüüd vastu veoseid {STRING} ja {STRING}
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Bussijaama suund
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Laadimisplatsi suund
+STR_3042_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Reisitrammi suund
+STR_3043_CARGO_TRAM_STATION_ORIENT :{WHITE}Kaubatrammi suund
STR_3046_MUST_DEMOLISH_BUS_STATION :{WHITE}Bussijaam tuleb enne hävitada
STR_3047_MUST_DEMOLISH_TRUCK_STATION :{WHITE}Enne pead laadimisplatsi hävitama
+STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION :{WHITE}Reisitrammijaam tuleb eelnevalt lammutada
+STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION :{WHITE}Kaubatrammijaam tuleb eelnevalt lammutada
STR_3048_STATIONS :{WHITE}{COMPANY} - {COMMA} jaam{P "" a}
STR_3049_0 :{YELLOW}{STATION} {STATIONFEATURES}
STR_304A_NONE :{YELLOW}- Puudub -
@@ -1888,21 +1948,23 @@
STR_304C_TOO_CLOSE_TO_ANOTHER_DOCK :{WHITE}Liiga lähedal teisele sadamale
STR_304D_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Enne pead sadama hävitama
STR_304E_SELECT_RAILROAD_STATION :{BLACK}Raudteejaamale suuna valimine
-STR_304F_SELECT_NUMBER_OF_PLATFORMS :{BLACK}Vali raudteejaama platvormide arv
+STR_304F_SELECT_NUMBER_OF_PLATFORMS :{BLACK}Vali raudteejaama perroonide arv
STR_3050_SELECT_LENGTH_OF_RAILROAD :{BLACK}Vali raudteejaama pikkus
STR_3051_SELECT_BUS_STATION_ORIENTATION :{BLACK}Vali bussijaamale suund
STR_3052_SELECT_TRUCK_LOADING_BAY :{BLACK}Vali laadimisplatsile suund
+STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Vali reisitrammijaama suund
+STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Vali kaubatrammijaama suund
STR_3053_CENTER_MAIN_VIEW_ON_STATION :{BLACK}Vaate viimine jaama juurde
-STR_3054_SHOW_STATION_RATINGS :{BLACK}Näita jaama reitinguid
+STR_3054_SHOW_STATION_RATINGS :{BLACK}Näita jaamahinnangut
STR_3055_CHANGE_NAME_OF_STATION :{BLACK}Muuda jaama nime
STR_3056_SHOW_LIST_OF_ACCEPTED_CARGO :{BLACK}Näita vastuvõetavate veoste nimistut
STR_3057_STATION_NAMES_CLICK_ON :{BLACK}Jaamanimed - vajuta nimel, et vaadet jaamale keskendada
-STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT :{BLACK}Vali lennuvälja suurus, ning tüüp
+STR_3058_SELECT_SIZE_TYPE_OF_AIRPORT :{BLACK}Vali lennuvälja suurus ja tüüp
STR_305C_0 :{STATION} {STATIONFEATURES}
STR_STATION_SIGN_TINY :{TINYFONT}{STATION}
STR_305E_RAILROAD_STATION :Raudteejaam
STR_305F_AIRCRAFT_HANGAR :Angaar
-STR_3060_AIRPORT :Lennujaam
+STR_3060_AIRPORT :Lennuväli
STR_3061_TRUCK_LOADING_AREA :Laadimisplats
STR_3062_BUS_STATION :Bussijaam
STR_3063_SHIP_DOCK :Laevasadam
@@ -1918,7 +1980,7 @@
STR_UNDEFINED :(määratlemata väljend)
STR_STAT_CLASS_DFLT :Vaikimisi valitud jaam
-STR_STAT_CLASS_WAYP :Kontrollpunktid
+STR_STAT_CLASS_WAYP :Meldepunktid
##id 0x3800
STR_3800_SHIP_DEPOT_ORIENTATION :{WHITE}Paadikuuri Orientatsioon
@@ -1962,8 +2024,8 @@
STR_4808_FACTORY :vabrik
STR_4809_PRINTING_WORKS :trükikoda
STR_480A_STEEL_MILL :terasetööstus
-STR_480B_FARM :farm
-STR_480C_COPPER_ORE_MINE :vasemaagi kaevandus
+STR_480B_FARM :talu
+STR_480C_COPPER_ORE_MINE :vasemaagikaevandus
STR_480D_OIL_WELLS :nafta puurauk
STR_480E_BANK :pank
STR_480F_FOOD_PROCESSING_PLANT :toiduainetetööstus
@@ -1971,17 +2033,17 @@
STR_4811_GOLD_MINE :kullakaevandus
STR_4812_BANK :pank
STR_4813_DIAMOND_MINE :teemantikaevandus
-STR_4814_IRON_ORE_MINE :rauamaagi kaevandus
+STR_4814_IRON_ORE_MINE :rauamaagikaevandus
STR_4815_FRUIT_PLANTATION :puuviljaistandus
-STR_4816_RUBBER_PLANTATION :kummipuu istandus
+STR_4816_RUBBER_PLANTATION :kummipuuistandus
STR_4817_WATER_SUPPLY :veepumbad
STR_4818_WATER_TOWER :veetorn
STR_4819_FACTORY :vabrik
-STR_481A_FARM :farm
+STR_481A_FARM :talu
STR_481B_LUMBER_MILL :saeveski
-STR_481C_COTTON_CANDY_FOREST :suhkruvati mets
+STR_481C_COTTON_CANDY_FOREST :suhkruvatimets
STR_481D_CANDY_FACTORY :kommivabrik
-STR_481E_BATTERY_FARM :patarei farm
+STR_481E_BATTERY_FARM :patareitalu
STR_481F_COLA_WELLS :koolapumbad
STR_4820_TOY_SHOP :mänguasjapood
STR_4821_TOY_FACTORY :mänguasjatehas
@@ -1997,7 +2059,7 @@
STR_4829_REQUIRES :{BLACK}Vajab: {YELLOW}{STRING}, {STRING}, {STRING}
############ range for requires ends
-STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Eelmise kuu toodang:
+STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Eelmise kuu valmistoodang:
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% veetud)
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Vaate keskendamine tööstusele
STR_482D_NEW_UNDER_CONSTRUCTION :{BLACK}{BIGFONT}Uus {STRING} on linna {TOWN} lähedal ehitamisel!
@@ -2008,7 +2070,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE :{BLACK}{BIGFONT}{INDUSTRY} juhtkond teatab sulgemisest!
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO :{BLACK}{BIGFONT}{INDUSTRY} teatab sulgemisest varustusprobleemide tõttu!
STR_4834_LACK_OF_NEARBY_TREES_CAUSES :{BLACK}{BIGFONT}Lähiümbruse puude puudumine põhjustab {INDUSTRY} sulgemise!
-STR_4835_INCREASES_PRODUCTION :{BLACK}{BIGFONT}{INDUSTRY} tõuseb toodang!
+STR_4835_INCREASES_PRODUCTION :{BLACK}{BIGFONT}{INDUSTRY} kasvab toodang!
STR_4836_NEW_COAL_SEAM_FOUND_AT :{BLACK}{BIGFONT}{INDUSTRY} lähedal avati uus kivisöe kiht!{}Toodang kahekordistub!
STR_4837_NEW_OIL_RESERVES_FOUND :{BLACK}{BIGFONT}{INDUSTRY} lähedal avastati uusi naftareserve!{}Toodang kahekordistub!
STR_4838_IMPROVED_FARMING_METHODS :{BLACK}{BIGFONT}{INDUSTRY} võttis kasutusele uued põllutöövahendid! Toodang kahekordistub!
@@ -2042,20 +2104,20 @@
STR_5016_CAN_T_BUILD_TUNNEL_HERE :{WHITE}Siia ei saa tunnelit ehitada...
STR_5017_RAILROAD_TUNNEL :Raudteetunnel
STR_5018_ROAD_TUNNEL :Maanteetunnel
-STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE :Terasest raudtee rippsild
+STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE :Terasest raudteerippsild
STR_501C_STEEL_GIRDER_RAIL_BRIDGE :Terasest võrestikuga raudteesild
STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE :Terasest ulgtoestikuga raudteesild
-STR_501E_REINFORCED_CONCRETE_SUSPENSION :Raudbetoonist raudtee rippsild
-STR_501F_WOODEN_RAIL_BRIDGE :Puidust raudteesild
-STR_5020_CONCRETE_RAIL_BRIDGE :Betoonist raudteesild
-STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE :Terasest raudtee rippsild
-STR_5022_STEEL_GIRDER_ROAD_BRIDGE :Terasraamistikuga maanteesild
-STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE :Terasest ulgtoestikuga maanteesild
-STR_5024_REINFORCED_CONCRETE_SUSPENSION :Raudbetoonist maantee rippsild
-STR_5025_WOODEN_ROAD_BRIDGE :Puidust maanteesild
-STR_5026_CONCRETE_ROAD_BRIDGE :Betoonist maanteesild
+STR_501E_REINFORCED_CONCRETE_SUSPENSION :Raudbetoonist raudteerippsild
+STR_501F_WOODEN_RAIL_BRIDGE :Puitraudteesild
+STR_5020_CONCRETE_RAIL_BRIDGE :Betoonraudteesild
+STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE :Terasest raudteerippsild
+STR_5022_STEEL_GIRDER_ROAD_BRIDGE :Terasraamistikuga sõiduteesild
+STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE :Terasest ulgtoestikuga sõiduteesild
+STR_5024_REINFORCED_CONCRETE_SUSPENSION :Raudbetoonist sõidutee rippsild
+STR_5025_WOODEN_ROAD_BRIDGE :Puidust sõiduteesild
+STR_5026_CONCRETE_ROAD_BRIDGE :Betoonist sõiduteesild
STR_5027_TUBULAR_RAIL_BRIDGE :Torujas raudteesild
-STR_5028_TUBULAR_ROAD_BRIDGE :Torujas maanteesild
+STR_5028_TUBULAR_ROAD_BRIDGE :Torujas sõiduteesild
##id 0x5800
STR_5800_OBJECT_IN_THE_WAY :{WHITE}Mingi objekt on ees
@@ -2074,7 +2136,7 @@
STR_SV_EMPTY :
STR_SV_UNNAMED :Nimetu
STR_SV_TRAIN_NAME :Rong {COMMA}
-STR_SV_ROADVEH_NAME :Maanteesõiduk {COMMA}
+STR_SV_ROADVEH_NAME :Mootorsõiduk {COMMA}
STR_SV_SHIP_NAME :Laev {COMMA}
STR_SV_AIRCRAFT_NAME :Õhusõiduk {COMMA}
@@ -2091,7 +2153,7 @@
STR_SV_STNAME_WOODS :{STRING} metsad
STR_SV_STNAME_LAKESIDE :{STRING} järveäärne
STR_SV_STNAME_EXCHANGE :{STRING} vahetus
-STR_SV_STNAME_AIRPORT :{STRING} lennujaam
+STR_SV_STNAME_AIRPORT :{STRING} lennuväli
STR_SV_STNAME_OILFIELD :{STRING} naftaväli
STR_SV_STNAME_MINES :{STRING} kaevandused
STR_SV_STNAME_DOCKS :{STRING} sadam
@@ -2109,9 +2171,11 @@
STR_SV_STNAME_BRANCH :{STRING} filiaal
STR_SV_STNAME_UPPER :Ülemine {STRING}
STR_SV_STNAME_LOWER :Alumine {STRING}
-STR_SV_STNAME_HELIPORT :{STRING} helikopteri maandumisplats
+STR_SV_STNAME_HELIPORT :{STRING} Kopteriväljak
STR_SV_STNAME_FOREST :{STRING} mets
+STR_SV_GROUP_NAME :{GROUP}
+
############ end of savegame specific region!
##id 0x6800
@@ -2126,17 +2190,17 @@
############ range for difficulty levels ends
############ range for difficulty settings starts
-STR_6805_MAXIMUM_NO_COMPETITORS :{LTBLUE}Maksimaalne konkurentide arv: {ORANGE}{COMMA}
+STR_6805_MAXIMUM_NO_COMPETITORS :{LTBLUE}Suurim konkurentide arv: {ORANGE}{COMMA}
STR_6806_COMPETITOR_START_TIME :{LTBLUE}Konkurentide tulemise aeg: {ORANGE}{STRING}
STR_6807_NO_OF_TOWNS :{LTBLUE}Linnade arv: {ORANGE}{STRING}
STR_6808_NO_OF_INDUSTRIES :{LTBLUE}Tööstuste arv: {ORANGE}{STRING}
-STR_6809_MAXIMUM_INITIAL_LOAN_000 :{LTBLUE}Suurim laen alguses: {ORANGE}{CURRENCY}
+STR_6809_MAXIMUM_INITIAL_LOAN_000 :{LTBLUE}Suurim alustuslaen: {ORANGE}{CURRENCY}
STR_680A_INITIAL_INTEREST_RATE :{LTBLUE}Intress alguses: {ORANGE}{COMMA}%
-STR_680B_VEHICLE_RUNNING_COSTS :{LTBLUE}Sõidukite hoolduskulud: {ORANGE}{STRING}
-STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR :{LTBLUE}Konkurentide ehituskiirus: {ORANGE}{STRING}
+STR_680B_VEHICLE_RUNNING_COSTS :{LTBLUE}Sõidukite käituskulud: {ORANGE}{STRING}
+STR_680C_CONSTRUCTION_SPEED_OF_COMPETITOR :{LTBLUE}Konkurentide ehitustempo: {ORANGE}{STRING}
STR_680D_INTELLIGENCE_OF_COMPETITORS :{LTBLUE}Konkurentide intelligentsus: {ORANGE}{STRING}
-STR_680E_VEHICLE_BREAKDOWNS :{LTBLUE}Sõidukite lagunemine: {ORANGE}{STRING}
-STR_680F_SUBSIDY_MULTIPLIER :{LTBLUE}Subsiidiumi suurus: {ORANGE}{STRING}
+STR_680E_VEHICLE_BREAKDOWNS :{LTBLUE}Sõidukite rikkiminemine: {ORANGE}{STRING}
+STR_680F_SUBSIDY_MULTIPLIER :{LTBLUE}Toetuse suurus: {ORANGE}{STRING}
STR_6810_COST_OF_CONSTRUCTION :{LTBLUE}Ehitamise hind: {ORANGE}{STRING}
STR_6811_TERRAIN_TYPE :{LTBLUE}Maastiku tüüp: {ORANGE}{STRING}
STR_6812_QUANTITY_OF_SEA_LAKES :{LTBLUE}Merede/järvede kogus: {ORANGE}{STRING}
@@ -2179,7 +2243,7 @@
STR_6831_3_MONTHS_AFTER_PLAYER :3 kuud pärast mängijat
STR_6832_6_MONTHS_AFTER_PLAYER :6 kuud pärast mängijat
STR_6833_9_MONTHS_AFTER_PLAYER :9 kuud pärast mängijat
-STR_6834_AT_END_OF_LINE_AND_AT_STATIONS :Raudtee lõpus ja jaamas
+STR_6834_AT_END_OF_LINE_AND_AT_STATIONS :Raudtee lõpus ja jaamades
STR_6835_AT_END_OF_LINE_ONLY :Ainult raudtee lõpus
STR_6836_OFF :Väljas
STR_6837_ON :Sees
@@ -2202,33 +2266,33 @@
STR_700B_PRESIDENT_S_NAME :Presidendi nimi
STR_700C_CAN_T_CHANGE_COMPANY_NAME :{WHITE}Ei saa ettevõtte nime muuta...
STR_700D_CAN_T_CHANGE_PRESIDENT :{WHITE}Ei saa presidendi nime muuta...
-STR_700E_FINANCES :{WHITE}{COMPANY} finantsaruanne {BLACK}{PLAYERNAME}
+STR_700E_FINANCES :{WHITE}{COMPANY} rahavoogude aruanne {BLACK}{PLAYERNAME}
STR_700F_EXPENDITURE_INCOME :{WHITE}Kulud/tulud
STR_7010 :{WHITE}{NUM}
STR_7011_CONSTRUCTION :{GOLD}Ehitamine
-STR_7012_NEW_VEHICLES :{GOLD}Uued veovahendid
-STR_7013_TRAIN_RUNNING_COSTS :{GOLD}Rongide hoolduskulud
-STR_7014_ROAD_VEH_RUNNING_COSTS :{GOLD}Maanteesõidukite hoolduskulud
-STR_7015_AIRCRAFT_RUNNING_COSTS :{GOLD}Õhusõidukite hoolduskulud
-STR_7016_SHIP_RUNNING_COSTS :{GOLD}Laevade hoolduskulud
-STR_7017_PROPERTY_MAINTENANCE :{GOLD}Kinnisvara korrashoid
-STR_7018_TRAIN_INCOME :{GOLD}Rongide sissetulekud
-STR_7019_ROAD_VEHICLES_INCOME :{GOLD}Maanteesõidukite sissetulekud
-STR_701A_AIRCRAFT_INCOME :{GOLD}Õhusõidukite sissetulekud
-STR_701B_SHIP_INCOME :{GOLD}Laevade sissetulekud
+STR_7012_NEW_VEHICLES :{GOLD}Uus veerem
+STR_7013_TRAIN_RUNNING_COSTS :{GOLD}Rongide käituskulud
+STR_7014_ROAD_VEH_RUNNING_COSTS :{GOLD}Mootorsõidukite käituskulud
+STR_7015_AIRCRAFT_RUNNING_COSTS :{GOLD}Õhusõidukite käituskulud
+STR_7016_SHIP_RUNNING_COSTS :{GOLD}Laevade käituskulud
+STR_7017_PROPERTY_MAINTENANCE :{GOLD}Infrastruktuuri korrashoid
+STR_7018_TRAIN_INCOME :{GOLD}Rongide tulud
+STR_7019_ROAD_VEHICLES_INCOME :{GOLD}Mootorsõidukite tulud
+STR_701A_AIRCRAFT_INCOME :{GOLD}Õhusõidukite tulud
+STR_701B_SHIP_INCOME :{GOLD}Laevade tulud
STR_701C_LOAN_INTEREST :{GOLD}Laenuintress
STR_701D_OTHER :{GOLD}Kõik muu
STR_701E :{BLACK}-{CURRENCY64}
STR_701F :{BLACK}+{CURRENCY64}
STR_7020_TOTAL :{WHITE}Kokku:
STR_7021 :{COMPANY}{PLAYERNAME}
-STR_7022_INCOME_GRAPH :{WHITE}Sissetulekute graafik
+STR_7022_INCOME_GRAPH :{WHITE}Tulugraafik
STR_CURRCOMPACT :{CURRCOMPACT64}
STR_7024 :{COMMA}
STR_7025_OPERATING_PROFIT_GRAPH :{WHITE}Opereerimiskasumi graafik
STR_7026_BANK_BALANCE :{WHITE}Kontojääk
STR_7027_LOAN :{WHITE}Laen
-STR_MAX_LOAN :{WHITE}Suurim võimalik laen: {BLACK}{CURRENCY64}
+STR_MAX_LOAN :{WHITE}Suurim laen: {BLACK}{CURRENCY64}
STR_7028 :{BLACK}{CURRENCY64}
STR_7029_BORROW :{BLACK}Laena {SKIP}{SKIP}{SKIP}{SKIP}{CURRENCY}
STR_702A_REPAY :{BLACK}Maksa tagasi {SKIP}{SKIP}{SKIP}{SKIP}{CURRENCY}
@@ -2265,10 +2329,10 @@
STR_704C_KEY :{BLACK}Selgitus
STR_704D_SHOW_KEY_TO_GRAPHS :{BLACK}Näita selgitust graafikute juures
STR_704E_KEY_TO_COMPANY_GRAPHS :{WHITE}Ettevõttegraafiku selgitus
-STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY :{BLACK}Vajuta, et ettevõtte graafikut sisse ja välja lülitada
+STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY :{BLACK}Klõpsa, et ettevõtte graafikut sisse ja välja lülitada
STR_7050_UNITS_OF_CARGO_DELIVERED :{WHITE}Transporditud veoste kogus
-STR_7051_COMPANY_PERFORMANCE_RATINGS :{WHITE}Ettevõtte tegevuse reiting (maksimaalne reiting=1000)
-STR_7052_COMPANY_VALUES :{WHITE}Ettevõtte väärtus
+STR_7051_COMPANY_PERFORMANCE_RATINGS :{WHITE}Ettevõtte tegevushinnang (suurim hinnang saab olla 1000)
+STR_7052_COMPANY_VALUES :{WHITE}Firmaväärtus
STR_7053_COMPANY_LEAGUE_TABLE :{WHITE}Ettevõtete edetabel
STR_7054 :{WHITE}{STRING}{SETX 45}{ORANGE}{COMPANY} {BLACK}{PLAYERNAME} '{STRING}'
STR_7055 :{YELLOW}{STRING}{SETX 45}{ORANGE}{COMPANY} {BLACK}{PLAYERNAME} '{STRING}'
@@ -2299,7 +2363,7 @@
STR_706E_TYCOON :Magnaat
STR_706F_BUILD_HQ :{BLACK}Ehita peakorter
STR_7070_BUILD_COMPANY_HEADQUARTERS :{BLACK}Ehita ettevõtte peakorter või vii vaade peakorterile
-STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Ehita ettevõtte peakorter mujale 1% ettevõtte väärtuse hinna eest
+STR_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Ehita ettevõtte peakorter mujale 1% firmaväärtuse tasu eest
STR_7071_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Ettevõtte peakorterit ei saa ehitada...
STR_7072_VIEW_HQ :{BLACK}Vaata peakorterit
STR_RELOCATE_HQ :{BLACK}Liiguta peakorterit
@@ -2309,7 +2373,7 @@
STR_7073_WORLD_RECESSION_FINANCIAL :{BIGFONT}{BLACK}Majanduslik tagasilöök!{}{}Finantseksperdid ennustavad suurt majanduslangust!
STR_7074_RECESSION_OVER_UPTURN_IN :{BIGFONT}{BLACK}Madalseis on läbi!{}{}Suurem kauplemine julgustab majanduse tugevnemisega ettevõtteid!
STR_7075_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Lülita aken suureks/väikseks
-STR_7076_COMPANY_VALUE :{GOLD}Ettevõtte väärtus: {WHITE}{CURRENCY64}
+STR_7076_COMPANY_VALUE :{GOLD}Firmaväärtus: {WHITE}{CURRENCY64}
STR_7077_BUY_25_SHARE_IN_COMPANY :{BLACK}Osta 25% ettevõtte aktsiatest
STR_7078_SELL_25_SHARE_IN_COMPANY :{BLACK}Müü 25% ettevõtte aktsiatest
STR_7079_BUY_25_SHARE_IN_THIS_COMPANY :{BLACK}Osta 25% ettevõtte aktsiatest
@@ -2321,10 +2385,10 @@
STR_707F_HAS_BEEN_TAKEN_OVER_BY :{BLACK}{BIGFONT}{COMPANY} võeti üle ettevõtte {COMPANY} poolt!
STR_7080_PROTECTED :{WHITE}See ettevõtte pole veel piisavalt vana, et aktsiaid vahetada...
-STR_LIVERY_DEFAULT :Tavaline Üleandmine
+STR_LIVERY_DEFAULT :Firmavärv
STR_LIVERY_STEAM :Aurumootor
STR_LIVERY_DIESEL :Diiselmootor
-STR_LIVERY_ELECTRIC :Elektrimootor
+STR_LIVERY_ELECTRIC :Elektrivedur
STR_LIVERY_MONORAIL :Monorelsi Mootor
STR_LIVERY_MAGLEV :Maglev'i Mootor
STR_LIVERY_DMU :DMU
@@ -2340,15 +2404,17 @@
STR_LIVERY_HELICOPTER :Helikopter
STR_LIVERY_SMALL_PLANE :Väike Lennuk
STR_LIVERY_LARGE_PLANE :Suur Lennuk
+STR_LIVERY_PASSENGER_TRAM :Reisitramm
+STR_LIVERY_FREIGHT_TRAM :Kaubatramm
-STR_LIVERY_GENERAL_TIP :{BLACK}Näita üldist värviskeemi
+STR_LIVERY_GENERAL_TIP :{BLACK}Näita üldiseid värvivalikuid
STR_LIVERY_TRAIN_TIP :{BLACK}Näita rongide värvistikke
-STR_LIVERY_ROADVEH_TIP :{BLACK}Näita maanteesõidukite värviskeeme
-STR_LIVERY_SHIP_TIP :{BLACK}Näita laeva värviskeeme
-STR_LIVERY_AIRCRAFT_TIP :{BLACK}Näita lennuki värviskeemi
+STR_LIVERY_ROADVEH_TIP :{BLACK}Näita mootorsõidukite värvivalikuid
+STR_LIVERY_SHIP_TIP :{BLACK}Näita laevade värvivalikuid
+STR_LIVERY_AIRCRAFT_TIP :{BLACK}Näita lennukite värvivalikuid
STR_LIVERY_PRIMARY_TIP :{BLACK}Vali põhivärv valitud skeemile
STR_LIVERY_SECONDARY_TIP :{BLACK}Vali teine värv valitud skeemile
-STR_LIVERY_PANEL_TIP :{BLACK}Vali värviskeem mida muuta, või mitu tükki vajutades CTRL+Kõps. Vajuta kastil et valida värviskeemi kaustamise vahel.
+STR_LIVERY_PANEL_TIP :{BLACK}Vali värvivalik, mida muuta - või mitu kasutades CTRL+hiireklõps kombinatsiooni. Klõpsa kastil, et muuta värvivaliku kasutust.
##id 0x8000
STR_8000_KIRBY_PAUL_TANK_STEAM :Kirby Paul Tank (auruvedur)
@@ -2608,9 +2674,9 @@
STR_80FE_GURU_X2_HELICOPTER :Guru X2 Helicopter
STR_80FF_POWERNAUT_HELICOPTER :Powernaut Helicopter
STR_8100_MESSAGE_FROM_VEHICLE_MANUFACTURE :{WHITE}Teade veovahendi tootjalt
-STR_8101_WE_HAVE_JUST_DESIGNED_A :{GOLD}Me oleme just kujundanud uue {STRING} - kas te tahaksite testida aasta aega enne kui see on saadaval kõigile?
+STR_8101_WE_HAVE_JUST_DESIGNED_A :{GOLD}Me oleme just kujundanud uue {STRING}{P "" i} - kas te tahaksite testida seda aasta aega enne, kui see on saadaval kõigile?
STR_8102_RAILROAD_LOCOMOTIVE :raudteevedur
-STR_8103_ROAD_VEHICLE :maanteesõiduk
+STR_8103_ROAD_VEHICLE :mootorsõiduk
STR_8104_AIRCRAFT :lennuk
STR_8105_SHIP :laev
STR_8106_MONORAIL_LOCOMOTIVE :monorelsivedur
@@ -2619,7 +2685,7 @@
##id 0x8800
STR_8800_TRAIN_DEPOT :{WHITE}Linna {TOWN} rongidepoo
STR_8801_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Rahvas rõõmustab. . .{}{STATION} jaama saabus esimene rong!
-STR_8802_DETAILS :{WHITE}{STRING} (Detailid)
+STR_8802_DETAILS :{WHITE}{STRING} (üksikasjad)
STR_8803_TRAIN_IN_THE_WAY :{WHITE}Rong on ees
STR_8804 :{SETX 10}{COMMA}: {STRING} {STRING}
STR_8805 :{RIGHTARROW}{SETX 10}{COMMA}: {STRING} {STRING}
@@ -2636,14 +2702,14 @@
STR_8810_GO_NON_STOP_TO_LOAD :Sõida läbi {STATION} (laadi)
STR_8811_GO_TO_NON_STOP_TRANSFER_LOAD :Sõida läbi {STATION} (Vea ja oota täislaadingut)
STR_GO_TO_TRAIN_DEPOT :Mine linna {TOWN} rongidepoosse
-STR_SERVICE_AT_TRAIN_DEPOT :Teeninda linna {TOWN} rongidepoos
+STR_SERVICE_AT_TRAIN_DEPOT :Hoolda linna {TOWN} rongidepoos
STR_880F_GO_NON_STOP_TO_TRAIN_DEPOT :Sõida läbi linna {TOWN} rongidepoo
-STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT :Teenindus linna {TOWN} rongidepoost läbisõidul
+STR_SERVICE_NON_STOP_AT_TRAIN_DEPOT :Hooldus linna {TOWN} rongidepoost läbisõidul
STR_HEADING_FOR_TRAIN_DEPOT :{ORANGE}Suundub linna {TOWN} rongidepoosse
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{ORANGE}Suundub linna {TOWN} rongidepoosse, {VELOCITY}
-STR_HEADING_FOR_TRAIN_DEPOT_SERVICE :{LTBLUE}Teenindus linna {TOWN} rongidepoos
-STR_HEADING_FOR_TRAIN_DEPOT_SERVICE_VEL :{LTBLUE}Teenindus linna {TOWN} rongidepoos, {VELOCITY}
+STR_HEADING_FOR_TRAIN_DEPOT_SERVICE :{LTBLUE}Hooldus linna {TOWN} raudteedepoos
+STR_HEADING_FOR_TRAIN_DEPOT_SERVICE_VEL :{LTBLUE}Hooldus linna {TOWN} raudteedepoos, {VELOCITY}
STR_INVALID_ORDER :{RED} (Ebasobiv järjekord)
@@ -2658,16 +2724,16 @@
STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Ronge saab ainult siis muuta kui nad on peatatud depoo sees
STR_881B_TRAINS :{WHITE}{COMPANY} - {COMMA} rong{P "" i}
-STR_881C_NEW_RAIL_VEHICLES :{WHITE}Uus Raudtee Sõiduk
-STR_NEW_ELRAIL_VEHICLES :{WHITE}Uued elektriraudteesõidukid
+STR_881C_NEW_RAIL_VEHICLES :{WHITE}Uus raudteeveerem
+STR_NEW_ELRAIL_VEHICLES :{WHITE}Uus elektriraudteeveerem
STR_881D_NEW_MONORAIL_VEHICLES :{WHITE}Uus Monorelssi Sõiduk
STR_881E_NEW_MAGLEV_VEHICLES :{WHITE}Uus Maglevi Sõiduk
STR_ALL_AVAIL_RAIL_VEHICLES :{WHITE}Raudteesõidukid
STR_881F_BUILD_VEHICLE :{BLACK}Ehita veovahend
STR_CLONE_ROAD_VEHICLE :{BLACK}Klooni veovahendit
-STR_CLONE_ROAD_VEHICLE_INFO :{BLACK}See kopeerib maanteesõidukit. CTRL-klõps jagab sihtpunkte
-STR_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}See kopeerib maanteesõidukit. Vajuta sellele nuppule, ning seejärel maanteesõidukile depoo sees või väljas. CTRL-klõps jagab sihtpunkte
+STR_CLONE_ROAD_VEHICLE_INFO :{BLACK}See paljundab mootorsõidukit. CTRL-klõps jagab sihtpunkte
+STR_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}See paljundab mootorsõidukit. Klõpsa seda nuppu, ning seejärel mootorsõidukil depoos või sellest väljas. CTRL-klõps jagab sihtpunkte
STR_CLONE_TRAIN :{BLACK}Klooni rong
STR_CLONE_TRAIN_INFO :{BLACK}See ehitab koopia rongist koos kõikide vagunitega. CTRL-klikk jagab sihtpunkte
STR_CLONE_TRAIN_DEPOT_INFO :{BLACK}See ehitab koopia rongist koos kõikide vagunitega. Vajuta sellele nuppule, ning seejärel rongile depoo sees või väljas. CTRL-klikk jagab sihtpunkte
@@ -2684,12 +2750,12 @@
STR_8829_ORDERS :{WHITE}{VEHICLE} (Käsud)
STR_882A_END_OF_ORDERS :{SETX 10}- - Käskude Lõpp - -
STR_FULLLOAD_OR_SERVICE :{SKIP}{SKIP}{STRING}
-STR_SERVICE :{BLACK}Teenindus
+STR_SERVICE :{BLACK}Hooldus
STR_882B_CAN_T_BUILD_RAILROAD_VEHICLE :{WHITE}Raudteesõidukit ei saa ehitada...
STR_882C_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Ehitatud: {LTBLUE}{NUM}{BLACK} Väärtus: {LTBLUE}{CURRENCY}
STR_882D_VALUE :{LTBLUE}{STRING}{BLACK} Väärtus: {LTBLUE}{CURRENCY}
STR_882E :{WHITE}{VEHICLE}
-STR_882F_LOADING_UNLOADING :{LTBLUE}Laadin / Laadin maha
+STR_882F_LOADING_UNLOADING :{LTBLUE}Veose ümberlaadimine
STR_TRAIN_MUST_BE_STOPPED :{WHITE}Rong peab olema depoos peatatud
STR_8830_CAN_T_SEND_TRAIN_TO_DEPOT :{WHITE}Rongi ei saa depoosse saata...
STR_8831_NO_MORE_SPACE_FOR_ORDERS :{WHITE}Pole ruumi käskudeks
@@ -2697,53 +2763,56 @@
STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}Ei saa lisada uut käsku...
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Ei saa kustutada seda käsku...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Ei saa muuta seda käsku...
+STR_CAN_T_MOVE_THIS_ORDER :{WHITE}Seda sihtpunkti ei saa ümber asetada...
+STR_CAN_T_SKIP_ORDER :{WHITE}Praegust järjestust ei ole võimalik vahele jätta...
+STR_CAN_T_SKIP_TO_ORDER :{WHITE}Valitud järjestust ei ole võimalik vahele jätta...
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Transpordivahendit ei saa liigutada...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}Tagumine vedur järgneb alati eesmisele
STR_8838_N_A :N/A{SKIP}
STR_8839_CAN_T_SELL_RAILROAD_VEHICLE :{WHITE}Raudteesõidukit ei saa müüa...
STR_883A_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Ei leia teed kohalikku depoosse
STR_883B_CAN_T_STOP_START_TRAIN :{WHITE}Ei saa peatada/startida rongi...
-STR_883C_SERVICING_INTERVAL_DAYS :{BLACK}Teenindusperiood: {LTBLUE}{COMMA} päeva{BLACK} Viimati teenindatud: {LTBLUE}{DATE_LONG}
-STR_SERVICING_INTERVAL_PERCENT :{BLACK}Teeninduse ajavahemik: {LTBLUE}{COMMA}%{BLACK} Viimane teenindus: {LTBLUE}{DATE_LONG}
+STR_883C_SERVICING_INTERVAL_DAYS :{BLACK}Hooldusperiood: {LTBLUE}{COMMA} päeva{BLACK} Viimati hooldatud: {LTBLUE}{DATE_LONG}
+STR_SERVICING_INTERVAL_PERCENT :{BLACK}Hooldusperiood: {LTBLUE}{COMMA}%{BLACK} Viimati hooldatud: {LTBLUE}{DATE_LONG}
STR_883D_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Rongid - vajuta rongile info jaoks
STR_883E_BUILD_NEW_TRAINS_REQUIRES :{BLACK}Ehita uued rongid (vajab rongidepood)
-STR_883F_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Rongid - et infot saada, vajuta rongile; liiguta vagunit, et seda rongilt lisada või eemaldada
+STR_883F_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Rongid - et andmeid saada, vajuta rongile; liiguta vagunit, et seda rongile lisada või sellelt eemaldada
STR_8840_BUILD_NEW_TRAIN_VEHICLE :{BLACK}Osta uus rongi veok
STR_8841_DRAG_TRAIN_VEHICLE_TO_HERE :{BLACK}Tiri rongi veok siia et müüa
STR_8842_CENTER_MAIN_VIEW_ON_TRAIN :{BLACK}Keskenda põhivaade rongidepoo kohale
-STR_8843_TRAIN_VEHICLE_SELECTION :{BLACK}Nimekiri raudteesõidukitest - info saamiseks klõpsa raudteesõidukile
+STR_8843_TRAIN_VEHICLE_SELECTION :{BLACK}Nimekiri raudteesõidukitest - andmete saamiseks klõpsa raudteesõidukile
STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN :{BLACK}Ehita valitud raudteesõiduk
STR_8845_RENAME_TRAIN_VEHICLE_TYPE :{BLACK}Muuda raudteesõiduki tüübinime
STR_8846_CURRENT_TRAIN_ACTION_CLICK :{BLACK}Praegune rongi tegevus - vajuta siia et peatada/käivitada rong
STR_8847_SHOW_TRAIN_S_ORDERS :{BLACK}Näita rongi käske
STR_8848_CENTER_MAIN_VIEW_ON_TRAIN :{BLACK}Vaate viimine rongi asukohale
STR_8849_SEND_TRAIN_TO_DEPOT :{BLACK}Saada rong depoosse
-STR_884A_FORCE_TRAIN_TO_PROCEED :{BLACK}Sunni rongi minema edasi signaali ootamata
+STR_884A_FORCE_TRAIN_TO_PROCEED :{BLACK}Sunni rongi signaale eirama
STR_884B_REVERSE_DIRECTION_OF_TRAIN :{BLACK}Pööra rong ümber
STR_884C_SHOW_TRAIN_DETAILS :{BLACK}Näita rongi detaile
-STR_884D_INCREASE_SERVICING_INTERVAL :{BLACK}Suurenda teeninduse ajavahemikku
-STR_884E_DECREASE_SERVICING_INTERVAL :{BLACK}Vähenda teeninduse ajavahemikku
+STR_884D_INCREASE_SERVICING_INTERVAL :{BLACK}Suurenda hooldusperioodi
+STR_884E_DECREASE_SERVICING_INTERVAL :{BLACK}Vähenda hooldusperioodi
STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED :{BLACK}Näita detaile viidud kauba kohta
STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES :{BLACK}Näita täpsemat infot rongivagunite kohta
-STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Näita iga rongivaguni mahutavust
+STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Näita iga rongivaguni kandevõimet
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Näita kogu rongi mahtu, jagatud kauba tüübi järgi
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Sihtpunktide nimekiri - vajuta käsul et see valida. CTRL + klik kerib jaama juurde
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Jäta praegune käsk vahele ja mine järgmise käsu juurde.
+STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Jäta praegune järjestus vahele ja alusta järgmisega. CTRL + klõps jätab vahele kuni valitud järjestuseni
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Kustuta valitud käsk
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Märgi valitud käsk ilma peatusetta peatuseks
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Lisa uus käsk enne valitud käsku või nimekirja lõppu
STR_8857_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Sunni valitud käsu juures oodata täis laadingut
STR_8858_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Sunni valitud käsu juures maha laadida.
-STR_SERVICE_HINT :{BLACK}Jäta see käsk vahele, kui teenindust ei vajata
-STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER :{BLACK}Maksumus: {CURRENCY} Mass: {WEIGHT_S}{}Kiirus: {VELOCITY} Võimsus: {POWER}{}Kulu: {CURRENCY}/aastas{}Mahutus: {CARGO}
+STR_SERVICE_HINT :{BLACK}Jäta see käsk vahele, kui hooldust ei vajata
+STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER :{BLACK}Hind: {CURRENCY} Tühimass: {WEIGHT_S}{}Tippkiirus: {VELOCITY} Võimsus: {POWER}{}Käituskulud: {CURRENCY}/aastas{}Kandevõime: {CARGO}
STR_885C_BROKEN_DOWN :{RED}Lagunes
-STR_885D_AGE_RUNNING_COST_YR :{BLACK}Vanus: {LTBLUE}{STRING}{BLACK} Kulud: {LTBLUE}{CURRENCY}/aastas
-STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Mass: {LTBLUE}{WEIGHT_S} {BLACK}Võimsus: {LTBLUE}{POWER}{BLACK} Suurim kiirus: {LTBLUE}{VELOCITY}
-STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Mass: {LTBLUE}{WEIGHT_S} {BLACK}Võimsus: {LTBLUE}{POWER}{BLACK} Max. speed: {LTBLUE}{VELOCITY} {BLACK}Suurim veojõud: {LTBLUE}{FORCE}
+STR_885D_AGE_RUNNING_COST_YR :{BLACK}Vanus: {LTBLUE}{STRING}{BLACK} Käituskulud: {LTBLUE}{CURRENCY}/aastas
+STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Mass: {LTBLUE}{WEIGHT_S} {BLACK}Võimsus: {LTBLUE}{POWER}{BLACK} Tippkiirus: {LTBLUE}{VELOCITY}
+STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Mass: {LTBLUE}{WEIGHT_S} {BLACK}Võimsus: {LTBLUE}{POWER}{BLACK} Tippkiirus: {LTBLUE}{VELOCITY} {BLACK}Veojõud: {LTBLUE}{FORCE}
STR_885F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Selle aasta kasum: {LTBLUE}{CURRENCY} (eelmisel aastal: {CURRENCY})
-STR_8860_RELIABILITY_BREAKDOWNS :{BLACK}Töökindlus: {LTBLUE}{COMMA}% {BLACK}Lagunemisi alates eelmisest hoolduskorrast: {LTBLUE}{COMMA}
+STR_8860_RELIABILITY_BREAKDOWNS :{BLACK}Tehnoseisund: {LTBLUE}{COMMA}% {BLACK}Rikkeid eelmisest hooldusest: {LTBLUE}{COMMA}
STR_8861_STOPPED :{RED}Peatatud
-STR_8862_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Ohu korral ei ole võimalik sundida rongi signaali vahele jätma
+STR_8862_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Ohu korral ei ole võimalik sundida rongi signaale eirama
STR_8863_CRASHED :{RED}Kokkupõrge!
STR_8865_NAME_TRAIN :{WHITE}Anna rongile nimi
@@ -2758,7 +2827,7 @@
STR_TRAIN_STOPPING :{RED}Peatub
STR_TRAIN_STOPPING_VEL :{RED}Peatub, {VELOCITY}
-STR_INCOMPATIBLE_RAIL_TYPES :Ühildamatud raudtee tüübid
+STR_INCOMPATIBLE_RAIL_TYPES :Ühildamatud rööbasteetüübid
STR_TRAIN_NO_POWER :{RED}Vool puudub
STR_TRAIN_START_NO_CATENARY :Selle raja ahel puudub, rong ei saa sõitu alustada
@@ -2767,29 +2836,29 @@
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Uus {STRING} saadaval! - {STRING}
##id 0x9000
-STR_9000_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Maanteesõiduk on teel ees
-STR_9001_ROAD_VEHICLES :{WHITE}{COMPANY} - {COMMA} maanteesõiduk{P "" it}
+STR_9000_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Mootorsõiduk takistab teed
+STR_9001_ROAD_VEHICLES :{WHITE}{COMPANY} - {COMMA} mootorsõiduk{P "" it}
STR_9002 :{WHITE}{VEHICLE}
-STR_9003_ROAD_VEHICLE_DEPOT :{WHITE}Linna {TOWN} maanteesõidukidepoo
-STR_9004_NEW_VEHICLES :{BLACK}Uus maanteesõiduk
-STR_9006_NEW_ROAD_VEHICLES :{WHITE}Uued maanteesõidukid
+STR_9003_ROAD_VEHICLE_DEPOT :{WHITE}Linna {TOWN} mootorsõidukidepoo
+STR_9004_NEW_VEHICLES :{BLACK}Uus mootorsõiduk
+STR_9006_NEW_ROAD_VEHICLES :{WHITE}Uued mootorsõidukid
STR_9007_BUILD_VEHICLE :{BLACK}Ehita veovahend
-STR_9009_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Maanteesõidukit ei saa ehitada...
-STR_900C_DETAILS :{WHITE}{VEHICLE} (Detailid)
-STR_900D_AGE_RUNNING_COST_YR :{BLACK}Vanus: {LTBLUE}{STRING}{BLACK} Hoolduskulud: {LTBLUE}{CURRENCY}/aastas
-STR_900E_MAX_SPEED :{BLACK}Maksimaalne kiirus: {LTBLUE}{VELOCITY}
-STR_900F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Selle aasta kasum: {LTBLUE}{CURRENCY} (viimasel aastal: {CURRENCY})
-STR_9010_RELIABILITY_BREAKDOWNS :{BLACK}Töökindlus: {LTBLUE}{COMMA}% {BLACK}Lagunemisi alates viimasest hooldusest: {LTBLUE}{COMMA}
+STR_9009_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Mootorsõidukit ei saa ehitada...
+STR_900C_DETAILS :{WHITE}{VEHICLE} (üksikasjad)
+STR_900D_AGE_RUNNING_COST_YR :{BLACK}Vanus: {LTBLUE}{STRING}{BLACK} Käituskulud: {LTBLUE}{CURRENCY}/aastas
+STR_900E_MAX_SPEED :{BLACK}Tippkiirus: {LTBLUE}{VELOCITY}
+STR_900F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Selle aasta kasum: {LTBLUE}{CURRENCY} (eelmisel aastal: {CURRENCY})
+STR_9010_RELIABILITY_BREAKDOWNS :{BLACK}Tehnoseisund: {LTBLUE}{COMMA}% {BLACK}Rikkeid eelmisest hooldusest: {LTBLUE}{COMMA}
STR_9011_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Ehitatud: {LTBLUE}{NUM}{BLACK} Väärtus: {LTBLUE}{CURRENCY}
-STR_9012_CAPACITY :{BLACK}Mahutavus: {LTBLUE}{CARGO}
+STR_9012_CAPACITY :{BLACK}Kandevõime: {LTBLUE}{CARGO}
STR_9013_MUST_BE_STOPPED_INSIDE :{WHITE}...peab garaaþis olema
STR_9014_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Ei saa veokit müüa...
STR_9015_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Ei saa veokit peatada, ega startida...
STR_9016_ROAD_VEHICLE_IS_WAITING :{WHITE}Veok {COMMA} ootab garaaþi
STR_HEADING_FOR_ROAD_DEPOT :{ORANGE}Suundub {TOWN} garaaþi
STR_HEADING_FOR_ROAD_DEPOT_VEL :{ORANGE}Suundub {TOWN} garaaþi, {VELOCITY}
-STR_HEADING_FOR_ROAD_DEPOT_SERVICE :{LTBLUE}Teenindus linna {TOWN} depoos
-STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL :{LTBLUE}Teenindus linna {TOWN} depoos, {VELOCITY}
+STR_HEADING_FOR_ROAD_DEPOT_SERVICE :{LTBLUE}Hooldus linna {TOWN} depoos
+STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL :{LTBLUE}Hooldus linna {TOWN} depoos, {VELOCITY}
STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT :{WHITE}Ei saa veokit garaaþi saata
STR_9019_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Ei leia kohalikku garaaþi üles
STR_901A_ROAD_VEHICLES_CLICK_ON :{BLACK}Veokid - info saamiseks vajuta veokile
@@ -2797,41 +2866,43 @@
STR_901C_CURRENT_VEHICLE_ACTION :{BLACK}Transpordivahendi praegune tegevus - selle peatamiseks või startimiseks klõpsa siia
STR_901D_SHOW_VEHICLE_S_ORDERS :{BLACK}Näita veovahendi sihtpunkte
STR_901E_CENTER_MAIN_VIEW_ON_VEHICLE :{BLACK}Keskenda vaade veovahendile
-STR_901F_SEND_VEHICLE_TO_DEPOT :{BLACK}Saada sõiduk garaaži. CTRL+klõps teenindab ainult.
+STR_901F_SEND_VEHICLE_TO_DEPOT :{BLACK}Saada sõiduk garaaži. CTRL+klõps, et ainult teenindada.
STR_9020_FORCE_VEHICLE_TO_TURN_AROUND :{BLACK}Sunni veovahendit ümber pöörama
-STR_9021_SHOW_ROAD_VEHICLE_DETAILS :{BLACK}Näita maanteesõiduki üksikasju
+STR_9021_SHOW_ROAD_VEHICLE_DETAILS :{BLACK}Näita mootorsõiduki üksikasju
STR_9022_VEHICLES_CLICK_ON_VEHICLE :{BLACK}Veovahendid - andmete saamiseks klõpsa veovahendile
-STR_9023_BUILD_NEW_ROAD_VEHICLE :{BLACK}Ehita uus maanteesõiduk
+STR_9023_BUILD_NEW_ROAD_VEHICLE :{BLACK}Ehita uus mootorsõiduk
STR_9024_DRAG_ROAD_VEHICLE_TO_HERE :{BLACK}Et müüa, tiri sõiduk siia
STR_9025_CENTER_MAIN_VIEW_ON_ROAD :{BLACK}Vii vaade garaaþi asukohale
-STR_9026_ROAD_VEHICLE_SELECTION :{BLACK}Nimekiri maanteesõidukitest - maanteesõiduki kohta info saamiseks vajuta sellele
-STR_9027_BUILD_THE_HIGHLIGHTED_ROAD :{BLACK}Ehita valitud maanteesõiduk
-STR_902A_COST_SPEED_RUNNING_COST :{BLACK}Hind: {CURRENCY}{}Kiirus: {VELOCITY}{}Hoolduskulud: {CURRENCY}/aastas{}Mahutavus: {CARGO}
+STR_9026_ROAD_VEHICLE_SELECTION :{BLACK}Mootorsõiduki valimisnimekiri - andmete saamiseks klõpsa sõidukile
+STR_9027_BUILD_THE_HIGHLIGHTED_ROAD :{BLACK}Ehita valitud mootorsõiduk
+STR_902A_COST_SPEED_RUNNING_COST :{BLACK}Hind: {CURRENCY}{}Tippkiirus: {VELOCITY}{}Käituskulud: {CURRENCY}/aastas{}Kandevõime: {CARGO}
-STR_902C_NAME_ROAD_VEHICLE :{WHITE}Nimeta maanteeveok ümber
+STR_902C_NAME_ROAD_VEHICLE :{WHITE}Nimeta mootorsõiduk ümber
STR_902D_CAN_T_NAME_ROAD_VEHICLE :{WHITE}Ei saa maanteveokit ümber nimetada...
-STR_902E_NAME_ROAD_VEHICLE :{BLACK}Nimeta maanteeveok ümber
+STR_902E_NAME_ROAD_VEHICLE :{BLACK}Nimeta mootorsõidukit
STR_902F_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Rahvas rõõmustab . . .{}{STATION} jaama saabus esimene buss!
STR_9030_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Rahvas rõõmustab . . .{} esimene veok saabus {STATION} jaama!
+STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Kodanikud tähistavad . . .{}Esimene reisitramm saabus trammijaama {STATION}!
+STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Kodanikud tähistavad . . .{}Esimene kaubatramm saabus trammijaama {STATION}!
STR_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT}Rongikokkupõrge!{}Juht suri peale õnnetust tules
-STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}Maanteesõiduki kokkupõrge rongiga!{}{COMMA} inimest surnud
+STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}Mootorsõiduki kokkupõrge rongiga!{}{COMMA} inimest suri õnnetuses
STR_9033_CAN_T_MAKE_VEHICLE_TURN :{WHITE}Transpordivahendit ei saa ümber pöörata...
STR_ONLY_TURN_SINGLE_UNIT :{WHITE}Mitmest osast koosnevaid veovahendeid ei saa ümber pöörata
STR_9034_RENAME :{BLACK}Muuda nime
-STR_9035_RENAME_ROAD_VEHICLE_TYPE :{BLACK}Muuda maanteesõiduki tüübinime
-STR_9036_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Muuda maanteesõiduki tüübinime
-STR_9037_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Maanteesõiduki tüübinime ei saa muuta...
+STR_9035_RENAME_ROAD_VEHICLE_TYPE :{BLACK}Muuda mootorsõiduki tüübinime
+STR_9036_RENAME_ROAD_VEHICLE_TYPE :{WHITE}Muuda mootorsõiduki tüübinime
+STR_9037_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}Mootorsõiduki tüübinime ei saa muuta...
STR_9038_GO_TO_ROADVEH_DEPOT :Mine linna {TOWN} garaaþi
-STR_SERVICE_AT_ROADVEH_DEPOT :Hoolda linna {TOWN} maanteesõidukidepoos
+STR_SERVICE_AT_ROADVEH_DEPOT :Hoolda linna {TOWN} mootorsõidukidepoos
-STR_REFIT_ROAD_VEHICLE_TO_CARRY :{BLACK}Seadista maanteesõidukit kandmaks teist tüüpi laadungit
-STR_REFIT_ROAD_VEHICLE :{BLACK}Muuda maanteesõiduki seadistust
-STR_REFIT_ROAD_VEHICLE_TO_CARRY_HIGHLIGHTED :{BLACK}Seadista maanteesõidukit kandma valitud laadungitüüpi
-STR_REFIT_ROAD_VEHICLE_CAN_T :{WHITE}Maanteesõiduki seadistust ei saa ümber muuta
+STR_REFIT_ROAD_VEHICLE_TO_CARRY :{BLACK}Seadista mootorsõidukit kandmaks teist tüüpi veost
+STR_REFIT_ROAD_VEHICLE :{BLACK}Muuda mootorsõiduki seadistust
+STR_REFIT_ROAD_VEHICLE_TO_CARRY_HIGHLIGHTED :{BLACK}Seadista mootorsõidukit kandma valitud veotüüpi
+STR_REFIT_ROAD_VEHICLE_CAN_T :{WHITE}Mootorsõiduki seadistust ei saa ümber muuta
STR_ROAD_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Vali, millist tüüpi laadungit veovahend veab
##id 0x9800
-STR_9800_DOCK_CONSTRUCTION :Sadama ehitus
+STR_9800_DOCK_CONSTRUCTION :Sadamaehitus
STR_9801_DOCK_CONSTRUCTION :{WHITE}Sadama ehitus
STR_9802_CAN_T_BUILD_DOCK_HERE :{WHITE}Siia ei saa sadamat ehitada
STR_9803_SHIP_DEPOT :{WHITE}{TOWN} Paadikuur
@@ -2847,20 +2918,20 @@
STR_980D_CAN_T_BUILD_SHIP :{WHITE}Ei saa laeva ehitada...
STR_980E_SHIP_IN_THE_WAY :{WHITE}Laev on ees
STR_980F :{WHITE}{VEHICLE}
-STR_9811_DETAILS :{WHITE}{VEHICLE} (Detailid)
-STR_9812_AGE_RUNNING_COST_YR :{BLACK}Vanus: {LTBLUE}{STRING}{BLACK} Hoolduskulud: {LTBLUE}{CURRENCY}/aastas
-STR_9813_MAX_SPEED :{BLACK}Maks. kiirus: {LTBLUE}{VELOCITY}
+STR_9811_DETAILS :{WHITE}{VEHICLE} (üksikasjad)
+STR_9812_AGE_RUNNING_COST_YR :{BLACK}Vanus: {LTBLUE}{STRING}{BLACK} Käituskulud: {LTBLUE}{CURRENCY}/aastas
+STR_9813_MAX_SPEED :{BLACK}Tippkiirus: {LTBLUE}{VELOCITY}
STR_9814_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Selle aasta kasum: {LTBLUE}{CURRENCY} (viimasel: {CURRENCY})
-STR_9815_RELIABILITY_BREAKDOWNS :{BLACK}Töökindlus: {LTBLUE}{COMMA}% {BLACK}Lagunemisi alates viimasest hooldusest: {LTBLUE}{COMMA}
+STR_9815_RELIABILITY_BREAKDOWNS :{BLACK}Tehnoseisund: {LTBLUE}{COMMA}% {BLACK}Rikkeid eelmisest hooldusest: {LTBLUE}{COMMA}
STR_9816_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Ehitati: {LTBLUE}{NUM}{BLACK} Väärtus: {LTBLUE}{CURRENCY}
-STR_9817_CAPACITY :{BLACK}Mahutavus: {LTBLUE}{CARGO}
+STR_9817_CAPACITY :{BLACK}Kandevõime: {LTBLUE}{CARGO}
STR_9818_CAN_T_STOP_START_SHIP :{WHITE}Ei saa peatada/käivitada laeva...
STR_9819_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Ei saa laeva paadikuuri saata...
STR_981A_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Ei leia kohalikku paadikuuri
STR_HEADING_FOR_SHIP_DEPOT :{ORANGE}Suundub {TOWN}a paadikuuri
STR_HEADING_FOR_SHIP_DEPOT_VEL :{ORANGE}Suundub {TOWN}a paadikuuri, {VELOCITY}
-STR_HEADING_FOR_SHIP_DEPOT_SERVICE :{LTBLUE}Teenindus linna {TOWN} sadamas
-STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL :{LTBLUE}Teenindus linna {TOWN} sadamas, {VELOCITY}
+STR_HEADING_FOR_SHIP_DEPOT_SERVICE :{LTBLUE}Hooldus linna {TOWN} sadamas
+STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL :{LTBLUE}Hooldus linna {TOWN} sadamas, {VELOCITY}
STR_981C_SHIP_IS_WAITING_IN_DEPOT :{WHITE}Laev {COMMA} ootab sadamas
STR_981D_BUILD_SHIP_DOCK :{BLACK}Ehita laevakuur
STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING :{BLACK}Ehita laevakuur (laevade ehitamiseks ja hoolduseks)
@@ -2877,13 +2948,13 @@
STR_9829_CENTER_MAIN_VIEW_ON_SHIP :{BLACK}Vii vaade laeva asukohale
STR_982A_SEND_SHIP_TO_DEPOT :{BLACK}Saada laev paadikuuri
STR_982B_SHOW_SHIP_DETAILS :{BLACK}Näita laeva detaile
-STR_982E_COST_MAX_SPEED_CAPACITY :{BLACK}Hind: {CURRENCY} Maks. Kiirus: {VELOCITY}{}Mahutavus: {CARGO}{}Hoolduskulud: {CURRENCY}/aasta
+STR_982E_COST_MAX_SPEED_CAPACITY :{BLACK}Hind: {CURRENCY} Tippkiirus: {VELOCITY}{}Kandevõime: {CARGO}{}Käituskulud: {CURRENCY}/aastas
STR_982F_NAME_SHIP :{BLACK}Anna laevale nimi
STR_9831_NAME_SHIP :{WHITE}Anna laevale nimi
STR_9832_CAN_T_NAME_SHIP :{WHITE}Ei saa laeva ümber nimetada...
-STR_9833_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Rahvas rõõmustab . . .{}{STATION} sadamasse saabus esimene laev!
-STR_9834_POSITION_BUOY_WHICH_CAN :{BLACK}Aseta teemärgisena kasutatav poi
+STR_9833_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Rahvas rõõmustab . . .{}{STATION} terminali saabus esimene laev!
+STR_9834_POSITION_BUOY_WHICH_CAN :{BLACK}Raja teemärgisena kasutatav poi
STR_9835_CAN_T_POSITION_BUOY_HERE :{WHITE}Poid ei saa siia asetada...
STR_9836_RENAME :{BLACK}Muuda nime
STR_9837_RENAME_SHIP_TYPE :{BLACK}Nimeta laeva tüüp ümber
@@ -2895,47 +2966,47 @@
STR_983D_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Vali kauba tüüp, mida laev hakkab kandma
STR_983E_REFIT_SHIP_TO_CARRY_HIGHLIGHTED :{BLACK}Seadista laev ümber valitud kaubatüübi jaoks
STR_983F_SELECT_CARGO_TYPE_TO_CARRY :{GOLD}Vali kaubatüüp, mida vedada:
-STR_9840_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Uus mahutavus: {GOLD}{CARGO}{}{BLACK}Laeva ümberseadistamise hind: {GOLD}{CURRENCY}
+STR_9840_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Uus kandevõime: {GOLD}{CARGO}{}{BLACK}Laeva ümberseadistamise hind: {GOLD}{CURRENCY}
STR_9841_CAN_T_REFIT_SHIP :{WHITE}Ei saa laeva ümber seadistada...
STR_9842_REFITTABLE :(ümberseadistatav)
STR_GO_TO_SHIP_DEPOT :Mine {TOWN} paadikuuri
-SERVICE_AT_SHIP_DEPOT :Teenindus {TOWN} paadikuuris
+SERVICE_AT_SHIP_DEPOT :Hooldus {TOWN} paadikuuris
##id 0xA000
-STR_A000_AIRPORTS :{WHITE}Lennujaamad
-STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Ei saa lennujaama siia ehitada...
+STR_A000_AIRPORTS :{WHITE}Lennuväljad
+STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Siia ei saa lennuvälja rajada...
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Lennujaama angaar
STR_A003_NEW_AIRCRAFT :{BLACK}Uus lennuk
STR_CLONE_AIRCRAFT :{BLACK}Klooni lennuk
-STR_CLONE_AIRCRAFT_INFO :{BLACK}See ehitab lennukist koopia. CTRL-klikk jagab sihtpunkte
-STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}See ehitab lennukist koopia. Vajuta sellele nuppule, ning seejärel lennukile angaari sees või väljas. CTRL-klikk jagab sihtpunkte
+STR_CLONE_AIRCRAFT_INFO :{BLACK}See paljundab õhusõidukit. CTRL-klikk jagab sihtpunkte
+STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}See paljundab õhusõidukit. Vajuta sellele nuppule, ning seejärel lennukile angaari sees või väljas. CTRL-klikk jagab sihtpunkte
STR_A005_NEW_AIRCRAFT :{WHITE}Uus lennuk
STR_A006_BUILD_AIRCRAFT :{BLACK}Ehita lennuk
STR_A008_CAN_T_BUILD_AIRCRAFT :{WHITE}Ei saa ehitada lennukit...
STR_A009_AIRCRAFT :{WHITE}{COMPANY} - {COMMA} lennuk{P "" it}
STR_A00A :{WHITE}{VEHICLE}
STR_A00B_ORDERS :{WHITE}{VEHICLE} (sihtpunktid)
-STR_A00C_DETAILS :{WHITE}{VEHICLE} (Detailid)
-STR_A00D_AGE_RUNNING_COST_YR :{BLACK}Vanus: {LTBLUE}{STRING}{BLACK} Hoolduskulud: {LTBLUE}{CURRENCY}/aastas
-STR_A00E_MAX_SPEED :{BLACK}Maks. kiirus: {LTBLUE}{VELOCITY}
+STR_A00C_DETAILS :{WHITE}{VEHICLE} (üksikasjad)
+STR_A00D_AGE_RUNNING_COST_YR :{BLACK}Vanus: {LTBLUE}{STRING}{BLACK} Käituskulud: {LTBLUE}{CURRENCY}/aastas
+STR_A00E_MAX_SPEED :{BLACK}Tippkiirus: {LTBLUE}{VELOCITY}
STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Selle aasta kasum: {LTBLUE}{CURRENCY} (eelmisel aastal: {CURRENCY})
-STR_A010_RELIABILITY_BREAKDOWNS :{BLACK}Töökindlus: {LTBLUE}{COMMA}% {BLACK}Lagunemisi alates viimasest hooldusest: {LTBLUE}{COMMA}
+STR_A010_RELIABILITY_BREAKDOWNS :{BLACK}Tehnoseisund: {LTBLUE}{COMMA}% {BLACK}Rikkeid eelmisest hooldusest: {LTBLUE}{COMMA}
STR_A011_BUILT_VALUE :{LTBLUE}{STRING}{BLACK} Ehitusaasta: {LTBLUE}{NUM}{BLACK} Väärtus: {LTBLUE}{CURRENCY}
STR_A012_CAN_T_SEND_AIRCRAFT_TO :{WHITE}Ei saa lennukit angaari saata...
STR_HEADING_FOR_HANGAR :{ORANGE}Suundub {STATION} Angaari
STR_HEADING_FOR_HANGAR_VEL :{ORANGE}Suundub {STATION} angaari, {VELOCITY}
-STR_HEADING_FOR_HANGAR_SERVICE :{LTBLUE}Teenindus linna {STATION} angaaris
-STR_HEADING_FOR_HANGAR_SERVICE_VEL :{LTBLUE}Teenindus linna {STATION} angaaris, {VELOCITY}
+STR_HEADING_FOR_HANGAR_SERVICE :{LTBLUE}Hooldus linna {STATION} angaaris
+STR_HEADING_FOR_HANGAR_SERVICE_VEL :{LTBLUE}Hooldus linna {STATION} angaaris, {VELOCITY}
STR_A014_AIRCRAFT_IS_WAITING_IN :{WHITE}Lennuk {COMMA} ootab angaaris
STR_A015_AIRCRAFT_IN_THE_WAY :{WHITE}Lennuk on teel
STR_A016_CAN_T_STOP_START_AIRCRAFT :{WHITE}Ei saa lennukit peatada/käivitada...
STR_A017_AIRCRAFT_IS_IN_FLIGHT :{WHITE}Lennuk on õhus
-STR_A019_CAPACITY :{BLACK}Mahutavus: {LTBLUE}{CARGO}, {CARGO}
-STR_A01A_CAPACITY :{BLACK}Mahutavus: {LTBLUE}{CARGO}
+STR_A019_CAPACITY :{BLACK}Kandevõime: {LTBLUE}{CARGO}, {CARGO}
+STR_A01A_CAPACITY :{BLACK}Kandevõime: {LTBLUE}{CARGO}
STR_A01B_AIRCRAFT_MUST_BE_STOPPED :{WHITE}Lennuk peab olema peatatud angaari sees
STR_A01C_CAN_T_SELL_AIRCRAFT :{WHITE}Ei saa lennukit müüa...
-STR_A01D_AIRPORT_CONSTRUCTION :Lennujaama ehitus
-STR_A01E_BUILD_AIRPORT :{BLACK}Ehita lennujaam
+STR_A01D_AIRPORT_CONSTRUCTION :Lennuvälja ehitamine
+STR_A01E_BUILD_AIRPORT :{BLACK}Ehita lennuväli
STR_A01F_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Lennuk - info saamiseks vajuta lennukile
STR_A020_BUILD_NEW_AIRCRAFT_REQUIRES :{BLACK}Ehita uus lennuk (vajab angaariga lennujaama)
STR_A021_AIRCRAFT_CLICK_ON_AIRCRAFT :{BLACK}Lennuk - info saamiseks vajuta lennukile
@@ -2949,12 +3020,12 @@
STR_A029_CENTER_MAIN_VIEW_ON_AIRCRAFT :{BLACK}Vii peavaade lennukile
STR_A02A_SEND_AIRCRAFT_TO_HANGAR :{BLACK}Saada lennuk angaari
STR_A02B_SHOW_AIRCRAFT_DETAILS :{BLACK}Näita lennuki detaile
-STR_A02E_COST_MAX_SPEED_CAPACITY :{BLACK}Hind: {CURRENCY} Maks. kiirus: {VELOCITY}{}Mahutavus: {COMMA} reisijat, {COMMA} kotti kirju{}Hoolduskulud: {CURRENCY}/aastas
+STR_A02E_COST_MAX_SPEED_CAPACITY :{BLACK}Hind: {CURRENCY} Tippkiirus: {VELOCITY}{}Kandevõime: {COMMA} reisijat, {COMMA} kotti kirju{}Käituskulud: {CURRENCY}/aastas
STR_A030_NAME_AIRCRAFT :{WHITE}Anna lennukile nimi
STR_A031_CAN_T_NAME_AIRCRAFT :{WHITE}Ei saa lennukile nime anda
STR_A032_NAME_AIRCRAFT :{BLACK}Nimeta lennuk ümber
-STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Rahvas rõõmustab . . .{}{STATION} lennujaama saabus esimene lennuk!
+STR_A033_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Rahvas rõõmustab . . .{}{STATION} terminali saabus esimene lennuk!
STR_A034_PLANE_CRASH_DIE_IN_FIREBALL :{BLACK}{BIGFONT}Lennuõnnetus!{}{COMMA} surid tules {STATION}s
STR_PLANE_CRASH_OUT_OF_FUEL :{BLACK}{BIGFONT}Lennuõnnetus!{}Lennukil lõppes kütus, {COMMA} surid tules!
STR_A036 :{TINYFONT}{BLACK}{STATION}
@@ -2968,14 +3039,14 @@
STR_A03E_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Vali kauba tüüp, mida lennuk hakkab kandma
STR_A03F_REFIT_AIRCRAFT_TO_CARRY :{BLACK}Seadista lennuk ümber, et kanda valitud kaubatüüpi
STR_A040_SELECT_CARGO_TYPE_TO_CARRY :{GOLD}Vali kaubatüüp, mida kanda:
-STR_A041_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Uus mahutavus: {GOLD}{STRING}{}{BLACK}Ümber seadistamise maksumus: {GOLD}{CURRENCY}
+STR_A041_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Uus kandevõime: {GOLD}{STRING}{}{BLACK}Ümberseadistamise hind: {GOLD}{CURRENCY}
STR_A042_CAN_T_REFIT_AIRCRAFT :{WHITE}Ei saa lennukit ümber seadistada...
-STR_GO_TO_AIRPORT_HANGAR :Mine {STATION} Angaari
-SERVICE_AT_AIRPORT_HANGAR :Teenindus {STATION} angaaris
+STR_GO_TO_AIRPORT_HANGAR :Mine {STATION} angaari
+SERVICE_AT_AIRPORT_HANGAR :Hooldus {STATION} angaaris
##id 0xB000
STR_B000_ZEPPELIN_DISASTER_AT :{BLACK}{BIGFONT}Tsepeliini õnnetus {STATION}s!
-STR_B001_ROAD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Maanteesõiduk plahvatas kokkupõrkes 'UFO-ga'!
+STR_B001_ROAD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Mootorsõiduk plahvatas kokkupõrkes 'UFO-ga'!
STR_B002_OIL_REFINERY_EXPLOSION :{BLACK}{BIGFONT}Naftapuhastusjaama plahvatus {TOWN} lähedal!
STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS :{BLACK}{BIGFONT}Tehas purunes teadmata põhjustel {TOWN} lähedal!
STR_B004_UFO_LANDS_NEAR :{BLACK}{BIGFONT}'UFO' maandus {TOWN} lähedal!
@@ -2996,17 +3067,17 @@
STR_PERFORMANCE_DETAIL_VEHICLES :{BLACK}Sõidukeid:
STR_PERFORMANCE_DETAIL_STATIONS :{BLACK}Jaamu:
STR_PERFORMANCE_DETAIL_MIN_PROFIT :{BLACK}Vähim kasum:
-STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Vähim sissetulek:
-STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Maks. sissetulek:
+STR_PERFORMANCE_DETAIL_MIN_INCOME :{BLACK}Vähim tulu:
+STR_PERFORMANCE_DETAIL_MAX_INCOME :{BLACK}Suurim tulu:
STR_PERFORMANCE_DETAIL_DELIVERED :{BLACK}Transporditud:
STR_PERFORMANCE_DETAIL_CARGO :{BLACK}Kaupu:
STR_PERFORMANCE_DETAIL_MONEY :{BLACK}Raha:
STR_PERFORMANCE_DETAIL_LOAN :{BLACK}Laen:
STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}Kokku:
############ End of order list
-STR_PERFORMANCE_DETAIL_VEHICLES_TIP :{BLACK}Transpordivahendeid kokku; see sisaldab maantee-, raudtee- ja õhusõidukeid, ning laevu
-STR_PERFORMANCE_DETAIL_STATIONS_TIP :{BLACK}Jaamade osade arv. Iga osa jaamast (nt. rongijaam, bussipeatus, lennujaam) loetakse eraldi, isegi kui naad on ühendatud üheks jaamaks
-STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP :{BLACK}Kõige väiksema sissetulekuga sõiduki kasum (kõikidest vähemalt 2 aastastest veovahenditest)
+STR_PERFORMANCE_DETAIL_VEHICLES_TIP :{BLACK}Veeremit kokku; sisaldab sõidutee-, rööbastee- ja õhusõidukeid, ning laevu
+STR_PERFORMANCE_DETAIL_STATIONS_TIP :{BLACK}Jaamablokkide arv. Iga osa jaamast (nt. rongijaam, bussipeatus, lennujaam) loetakse eraldi, isegi kui naad on ühendatud üheks jaamaks
+STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP :{BLACK}Kõige väiksema tuluga sõiduki kasum (kõikidest vähemalt 2 aastastest veovahenditest)
STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP :{BLACK}Väikseim kuukasum viimase 12 kvartali jooksul
STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP :{BLACK}Suurim kuukasum viimase 12 kvartali jooksul
STR_PERFORMANCE_DETAIL_DELIVERED_TIP :{BLACK}Kauba arv, mis on veatud viimase 4 kvartali jooksul
@@ -3049,7 +3120,7 @@
STR_NEWGRF_FILE_TIP :{BLACK}Nimekiri installeerimata NewGRF failidest. Parameetrite muutmiseks klõpsa failil.
STR_NEWGRF_PARAMETER :{BLACK}Parameetrid: {SILVER}{STRING}
STR_NEWGRF_PARAMETER_QUERY :{BLACK}Sisesta NewGRF parameetrid
-STR_NEWGRF_NO_INFO :{BLACK}Informatsioon puudub
+STR_NEWGRF_NO_INFO :{BLACK}Andmed puuduvad
STR_NEWGRF_ADD_CAPTION :{WHITE}Olemasolevad NewGRF failid
STR_NEWGRF_ADD_FILE :{BLACK}Lisa valikule
@@ -3066,7 +3137,7 @@
STR_NEWGRF_DISABLED_WARNING :{WHITE}Puuduvad GRF failid on välja lülitatud
STR_NEWGRF_NOT_FOUND_WARNING :{WHITE}Mängu laadimiseks puudu olevad GRF failid
-STR_CURRENCY_WINDOW :{WHITE}Personaalne valuuta
+STR_CURRENCY_WINDOW :{WHITE}Isiklik valuuta
STR_CURRENCY_EXCHANGE_RATE :{LTBLUE}Vahetuskurss: {ORANGE}{CURRENCY} = £ {COMMA}
STR_CURRENCY_SEPARATOR :{LTBLUE}Vahemärk:
STR_CURRENCY_PREFIX :{LTBLUE}Eesliide:
@@ -3083,20 +3154,21 @@
STR_SHIP :{BLACK}{SHIP}
STR_SCHEDULED_TRAINS :{WHITE}{STATION} - {COMMA} Rong{P "" i}
-STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA} maanteesõiduk{P "" it}
+STR_SCHEDULED_ROAD_VEHICLES :{WHITE}{STATION} - {COMMA} mootorsõiduk{P "" it}
STR_SCHEDULED_AIRCRAFT :{WHITE}{STATION} - {COMMA} Lennuk{P "" it}
STR_SCHEDULED_SHIPS :{WHITE}{STATION} - {COMMA} Laev{P "" a}
-STR_SCHEDULED_TRAINS_TIP :{BLACK}Näita kõiki ronge, mille marsruudis on see jaam
-STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Näita kõiki maanteesõidukeid, mille marsruut sisaldab seda jaama
-STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Näita kõiki lennukeid, mille marsruudis on see lennujaam
-STR_SCHEDULED_SHIPS_TIP :{BLACK}Näita kõiki laevu, mille marsruudis on see sadam
+STR_SCHEDULED_TRAINS_TIP :{BLACK}Näita kõiki ronge, mille sõidugraafik sisaldab seda rongijaama
+STR_SCHEDULED_ROAD_VEHICLES_TIP :{BLACK}Näita kõiki mootorsõidukeid, mille sõidugraafik sisaldab seda jaama
+STR_SCHEDULED_AIRCRAFT_TIP :{BLACK}Näita kõiki lennukeid, mille sõidugraafik sisaldab seda lennujaama
+STR_SCHEDULED_SHIPS_TIP :{BLACK}Näita kõiki laevu, mille sõidugraafik sisaldab seda sadamat
-STR_VEH_WITH_SHARED_ORDERS_LIST :{WHITE}Jagatud marsruut{COMMA} Auto{P "" d}
-STR_VEH_WITH_SHARED_ORDERS_LIST_TIP :{BLACK}Näita kõiki sama marsruudiga maanteesõidukeid
+STR_VEH_WITH_SHARED_ORDERS_LIST :{WHITE}Jagatud sõidugraafik{COMMA} Auto{P "" d}
+STR_VEH_WITH_SHARED_ORDERS_LIST_TIP :{BLACK}Näita kõiki sama sõidugraafikuga mootorsõidukeid
### depot strings
STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Sa oled müümas kõiki depoos asuvaid masinaid. Kas sa oled kindel?
+STR_DEPOT_WRONG_DEPOT_TYPE :Vale depootüüp
STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP :{BLACK}Müü kõik rongid jaamast
STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP :{BLACK}Müü kõik autod garaažist
@@ -3108,10 +3180,10 @@
STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TIP :{BLACK}Võta nimekiri kõikidest laevadest selles sadamas nende käskude järgi
STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP :{BLACK}Võta nimekiri kõikidest lennukitest suvalistest angaaridest selles lennujaamas nende käskude järgi
-STR_DEPOT_AUTOREPLACE_TRAIN_TIP :{BLACK}Asenda automaatselt kõik rongid jaamas
-STR_DEPOT_AUTOREPLACE_ROADVEH_TIP :{BLACK}Asenda automaatselt kõik depoos olevad maanteesõidukid
-STR_DEPOT_AUTOREPLACE_SHIP_TIP :{BLACK}Asenda automaatselt kõik laevad sadamas
-STR_DEPOT_AUTOREPLACE_AIRCRAFT_TIP :{BLACK}Asenda automaatselt kõik lennumasinad angaaris
+STR_DEPOT_AUTOREPLACE_TRAIN_TIP :{BLACK}Asenda kõik rongid jaamas ise
+STR_DEPOT_AUTOREPLACE_ROADVEH_TIP :{BLACK}Asenda kõik depoos olevad mootorsõidukid ise
+STR_DEPOT_AUTOREPLACE_SHIP_TIP :{BLACK}Asenda kõik laevad depoos ise
+STR_DEPOT_AUTOREPLACE_AIRCRAFT_TIP :{BLACK}Asenda kõik lennumasinad angaaris ise
STR_VEHICLE_LIST_TRAIN_DEPOT :{BLACK}{STRING} - {COMMA} Rong{P "" id}
STR_VEHICLE_LIST_ROADVEH_DEPOT :{BLACK}{STRING} - {COMMA} Auto{P "" d}
@@ -3127,11 +3199,11 @@
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Vali uus vedur, millega sa soovid vasakult valitud vedurit välja vahetada.
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Vajuta lõpetamaks vasakult valitud veduri väljavahetust
STR_REPLACE_HELP_START_BUTTON :{BLACK}Vajuta vasakul asuva veduri väljavahetust paremal valitud veduriga
-STR_REPLACE_HELP_RAILTYPE :{BLACK}Vali raudteetüüp millel olevaid vedureid sa soovid vahetada
+STR_REPLACE_HELP_RAILTYPE :{BLACK}Vali rööbasteetüüp mille vedureid sa soovid asendada
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Näitab mis veduriga soovitakse vasakult valitud vedurit vahetada, kui üldse
STR_REPLACE_HELP :{BLACK}See lubab sul vahetada ühe veduritüübi teisega, kui esimest tüüpi rongid sisenevad depoosse
STR_REPLACE_REMOVE_WAGON :{BLACK}Vagunite eemaldus: {ORANGE}{SKIP}{STRING}
-STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Sunni automaatvahetus hoidma rongi pikkust samaks eemaldades vaguneid (alustades eestpoolt), kui vahetatav mootor muudaks rongi pikemaks.
+STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Sunni isevahetust hoidma rongi pikkust selleks (eest alustades) veeremit eemaldades, juhul kui uus vagun muudaks rongi pikemaks.
STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Vahetamisel: {ORANGE}{SKIP}{SKIP}{STRING}
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK} TESTIMISEL! {}Vaheta aken mootori ja vaguni vahetamise aknate vahel.{}Vaguni vahetus tehakse ainult siis kui uus vagun suudetakse muuta kandmaks sama tüüpi kaupa kui vana vagun. See valitakse igale vagunile kui tegelik vahetus käib
STR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Sõiduk pole saadaval
@@ -3148,7 +3220,7 @@
STR_MASS_STOP_HANGAR_TIP :{BLACK}Vajuta, kui tahad seisata kõiki lennukeid angaaris
STR_MASS_START_DEPOT_TRAIN_TIP :{BLACK}Klõpsa kõikide depoos asuvate rongide käivitamiseks
-STR_MASS_START_DEPOT_ROADVEH_TIP :{BLACK}Klõpsa, et käivitada kõik depoos olevad maanteesõidukid
+STR_MASS_START_DEPOT_ROADVEH_TIP :{BLACK}Klõpsa, et käivitada kõik depoos olevad mootorsõidukid
STR_MASS_START_DEPOT_SHIP_TIP :{BLACK}Klõpsa kõikide angaaris asuvate laevade käivitamiseks
STR_MASS_START_HANGAR_TIP :{BLACK}Klõpsa kõikide angaaris asuvate lennukite käivitamiseks
@@ -3171,18 +3243,18 @@
STR_TINY_BLACK :{BLACK}{TINYFONT}{COMMA}
-STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Maksuvus: {GOLD}{CURRENCY}{BLACK} Kaal: {GOLD}{WEIGHT_S}
-STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Kiirus: {GOLD}{VELOCITY}{BLACK} Võimsus: {GOLD}{POWER}
-STR_PURCHASE_INFO_SPEED :{BLACK}Kiirus: {GOLD}{VELOCITY}
-STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Hoolduskulud: {GOLD}{CURRENCY}/aasta
-STR_PURCHASE_INFO_CAPACITY :{BLACK}Mahutavus: {GOLD}{CARGO} {STRING}
+STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Hind: {GOLD}{CURRENCY}{BLACK} Tühimass: {GOLD}{WEIGHT_S}
+STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Tippkiirus: {GOLD}{VELOCITY}{BLACK} Võimsus: {GOLD}{POWER}
+STR_PURCHASE_INFO_SPEED :{BLACK}Tippkiirus: {GOLD}{VELOCITY}
+STR_PURCHASE_INFO_RUNNINGCOST :{BLACK}Käituskulud: {GOLD}{CURRENCY}/aastas
+STR_PURCHASE_INFO_CAPACITY :{BLACK}Kandevõime: {GOLD}{CARGO} {STRING}
STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Kujundatud: {GOLD}{NUM}{BLACK} Vanus: {GOLD}{COMMA} aastat
-STR_PURCHASE_INFO_RELIABILITY :{BLACK}Suurim töökindlus: {GOLD}{COMMA}%
-STR_PURCHASE_INFO_COST :{BLACK}Maksuvus: {GOLD}{CURRENCY}
-STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Kaal: {GOLD}{WEIGHT_S} ({WEIGHT_S})
-STR_PURCHASE_INFO_COST_SPEED :{BLACK}Maksumus: {GOLD}{CURRENCY}{BLACK} Kiirus: {GOLD}{VELOCITY}
-STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Mahutavus: {GOLD}{COMMA} reisijat, {COMMA} kotti kirju
-STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Kiirendavad vagunid: {GOLD}+{POWER}{BLACK} Kaal: {GOLD}+{WEIGHT_S}
+STR_PURCHASE_INFO_RELIABILITY :{BLACK}Parim tehnoseisund: {GOLD}{COMMA}%
+STR_PURCHASE_INFO_COST :{BLACK}Hind: {GOLD}{CURRENCY}
+STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Mass: {GOLD}{WEIGHT_S} ({WEIGHT_S})
+STR_PURCHASE_INFO_COST_SPEED :{BLACK}Hind: {GOLD}{CURRENCY}{BLACK} Tippkiirus: {GOLD}{VELOCITY}
+STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Kandevõime: {GOLD}{COMMA} reisijat, {COMMA} kotti kirju
+STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Kiirendavad vagunid: {GOLD}+{POWER}{BLACK} Mass: {GOLD}+{WEIGHT_S}
STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Ümberseadistatav: {GOLD}
STR_PURCHASE_INFO_ALL_TYPES :Kõik kaubatüübid
STR_PURCHASE_INFO_ALL_BUT :Kõik, välja arvatud {GOLD}
@@ -3248,18 +3320,18 @@
########### String for new airports
STR_SMALL_AIRPORT :{BLACK}Väike
STR_CITY_AIRPORT :{BLACK}Linn
-STR_METRO_AIRPORT :{BLACK}Metropoli lennujaam
-STR_INTERNATIONAL_AIRPORT :{BLACK}Rahvusvaheline lennujaam
+STR_METRO_AIRPORT :{BLACK}Metropoli lennuväli
+STR_INTERNATIONAL_AIRPORT :{BLACK}Rahvusvaheline lennuväli
STR_COMMUTER_AIRPORT :{BLACK}Turisti
-STR_INTERCONTINENTAL_AIRPORT :{BLACK}Ülemaailmne lennujaam
-STR_HELIPORT :{BLACK}Helikopteri jaam
+STR_INTERCONTINENTAL_AIRPORT :{BLACK}Ülemaailmne lennuväli
+STR_HELIPORT :{BLACK}Kopteriväljak
STR_HELIDEPOT :{BLACK}Helikopteridepoo
STR_HELISTATION :{BLACK}Helijaam
-STR_SMALL_AIRPORTS :{BLACK}Väikesed lennujaamad
-STR_LARGE_AIRPORTS :{BLACK}Suured lennujaamad
-STR_HUB_AIRPORTS :{BLACK}Suured lennujaamad
-STR_HELIPORTS :{BLACK}Helikopteri lennujaamad
+STR_SMALL_AIRPORTS :{BLACK}Väikesed lennuväljad
+STR_LARGE_AIRPORTS :{BLACK}Suured lennuväljad
+STR_HUB_AIRPORTS :{BLACK}Suured lennuväljad
+STR_HELIPORTS :{BLACK}Helikopteri lennuväljad
############ Tooltip measurment
@@ -3286,4 +3358,42 @@
STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Vaheta tööstusehitiste läbipaistvust
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Vaheta läbipaistvust ehitistel nagu: jaamad, depood, vahepunktid ja elektriliinid
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Vaheta sildade läbipaistvust
-STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Vaheta läbipaistvust objektidel, nagu: majakad, antennid ja võimalik, et tulevikus ka silmailu
+STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Vaheta läbipaistvust rajatistel, nagu: majakad, antennid ja võimalik, et tulevikus ka silmailu
+
+##### Mass Order
+STR_GROUP_NAME_FORMAT :Üksus {COMMA}
+STR_GROUP_TINY_NAME :{TINYFONT}{GROUP}
+STR_GROUP_ALL_TRAINS :Kõik raudteeveerem
+STR_GROUP_ALL_ROADS :Kõik mootorsõidukid
+STR_GROUP_ALL_SHIPS :Kõik laevad
+STR_GROUP_ALL_AIRCRAFTS :Kõik lennukid
+STR_GROUP_TINY_NUM :{TINYFONT}{COMMA}
+STR_GROUP_ADD_SHARED_VEHICLE :Kõik jagatud sõidukid
+STR_GROUP_REMOVE_ALL_VEHICLES :Eemalda kõik sõidukid
+
+STR_GROUP_TRAINS_CAPTION :{WHITE}{GROUP} - {COMMA} Rong{P "" id}
+STR_GROUP_ROADVEH_CAPTION :{WHITE}{GROUP} - {COMMA} Mootorsõiduk{P "" id}
+STR_GROUP_SHIPS_CAPTION :{WHITE}{GROUP} - {COMMA} Laev{P "" ad}
+STR_GROUP_AIRCRAFTS_CAPTION :{WHITE}{GROUP} - {COMMA} Lennuk{P "" id}
+STR_GROUP_RENAME_CAPTION :{BLACK}Muuda grupi nime
+STR_GROUP_REPLACE_CAPTION :{WHITE}Vaheta kõik grupi "{GROUP}" sõidukid
+
+STR_GROUP_CAN_T_CREATE :{WHITE}Ei saa üksust luua...
+STR_GROUP_CAN_T_DELETE :{WHITE}Ei saa seda üksust eemaldada...
+STR_GROUP_CAN_T_RENAME :{WHITE}Ei saa seda üksust ümber nimetada...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Ei saa kõiki sõidukeid sellest grupist eemaldada...
+STR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Ei saa sõidukit siia üksusesse lisada...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Ei saa jagatud sõidukeid siia üksusesse lisada...
+
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP :{BLACK}Grupid - Klõpsa grupil et kõiki seal olevaid sõidukeid järjestada
+STR_GROUP_CREATE_TIP :{BLACK}Klõpsa grupi loomiseks
+STR_GROUP_DELETE_TIP :{BLACK}Eemalda valitud üksus
+STR_GROUP_RENAME_TIP :{BLACK}Nimeta valitud üksus ümber
+STR_GROUP_REPLACE_PROTECTION_TIP :{BLACK}Klõpsa, et seda üksust üldise iseväljavahetuse eest kaitsta
+
+STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR :{TINYFONT}{BLACK}Selle aasta kasum: {GREEN}{CURRENCY} {BLACK}(eelmisel aastal: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR :{TINYFONT}{BLACK}Selle aasta kasum: {RED}{CURRENCY} {BLACK}(eelmisel aastal: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR :{TINYFONT}{BLACK}Selle aasta kasum: {GREEN}{CURRENCY} {BLACK}(eelmisel aastal: {RED}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR :{TINYFONT}{BLACK}Selle aasta kasum: {RED}{CURRENCY} {BLACK}(eelmisel aastal: {RED}{CURRENCY}{BLACK})
+
+########
--- a/src/lang/finnish.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/finnish.txt Tue Jun 12 18:02:11 2007 +0000
@@ -1045,7 +1045,6 @@
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Epäyhtenäiset asemat: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Uusi globaali tienhakualgor. (NPF, korvaa NTP:n): {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Kerroin rahdin painolle raskaiden junien simuilointiin: {ORANGE}{STRING}
-STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Salli pysähdyspaikkojen läpiajo kylien omistamilla teillä: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Salli aina pienet lentokentät: {ORANGE}{STRING}
@@ -2628,7 +2627,6 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Näytä kunkin ajoneuvon kapasiteetti.
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Näytä junan kokonaiskapasiteetti, eritelty rahtityypin mukaan.
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Aikataulu - napsauta määräystä korostaaksesi.
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Ohita nykyinen pysähdys ja aloita seuraava.
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Poista korostettu määräys.
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Tee korostetusta pysäkistä pysähtymätön.
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Lisää uusi pysähdys ennen valittua, tai lisää listan viimeiseksi.
--- a/src/lang/french.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/french.txt Tue Jun 12 18:02:11 2007 +0000
@@ -884,7 +884,7 @@
STR_TOWNNAME_FRENCH :Français
STR_TOWNNAME_GERMAN :Allemand
STR_TOWNNAME_ADDITIONAL_ENGLISH :Anglais (Additionels)
-STR_TOWNNAME_LATIN_AMERICAN :Latino-Americain
+STR_TOWNNAME_LATIN_AMERICAN :Latino-Americains
STR_TOWNNAME_SILLY :Drôles
STR_TOWNNAME_SWEDISH :Suédois
STR_TOWNNAME_DUTCH :Hollandais
@@ -894,13 +894,13 @@
STR_TOWNNAME_NORWEGIAN :Norvégiens
STR_TOWNNAME_HUNGARIAN :Hongrois
STR_TOWNNAME_AUSTRIAN :Autrichiens
-STR_TOWNNAME_ROMANIAN :Roumain
+STR_TOWNNAME_ROMANIAN :Roumains
STR_TOWNNAME_CZECH :Tchèques
-STR_TOWNNAME_SWISS :Suisse
+STR_TOWNNAME_SWISS :Suisses
STR_TOWNNAME_DANISH :Danois
STR_TOWNNAME_TURKISH :Turques
-STR_TOWNNAME_ITALIAN :Italien
-STR_TOWNNAME_CATALAN :Catalan
+STR_TOWNNAME_ITALIAN :Italiens
+STR_TOWNNAME_CATALAN :Catalans
############ end of townname region
STR_CURR_GBP :Livre (£)
@@ -1398,6 +1398,31 @@
STR_NETWORK_LANG_ENGLISH :Anglais
STR_NETWORK_LANG_GERMAN :Allemand
STR_NETWORK_LANG_FRENCH :Français
+STR_NETWORK_LANG_BRAZILIAN :Brésilien
+STR_NETWORK_LANG_BULGARIAN :Bulgare
+STR_NETWORK_LANG_CHINESE :Chinois
+STR_NETWORK_LANG_CZECH :Tchèque
+STR_NETWORK_LANG_DANISH :Danois
+STR_NETWORK_LANG_DUTCH :Hollandais
+STR_NETWORK_LANG_ESPERANTO :Esperanto
+STR_NETWORK_LANG_FINNISH :Finlandais
+STR_NETWORK_LANG_HUNGARIAN :Hongrois
+STR_NETWORK_LANG_ICELANDIC :Islandais
+STR_NETWORK_LANG_ITALIAN :Italien
+STR_NETWORK_LANG_JAPANESE :Japonais
+STR_NETWORK_LANG_KOREAN :Coréen
+STR_NETWORK_LANG_LITHUANIAN :Lithuanien
+STR_NETWORK_LANG_NORWEGIAN :Norvégien
+STR_NETWORK_LANG_POLISH :Polonais
+STR_NETWORK_LANG_PORTUGUESE :Portuguais
+STR_NETWORK_LANG_ROMANIAN :Roumain
+STR_NETWORK_LANG_RUSSIAN :Russe
+STR_NETWORK_LANG_SLOVAK :Slovaque
+STR_NETWORK_LANG_SLOVENIAN :Slovène
+STR_NETWORK_LANG_SPANISH :Espagnol
+STR_NETWORK_LANG_SWEDISH :Suédois
+STR_NETWORK_LANG_TURKISH :Turc
+STR_NETWORK_LANG_UKRAINIAN :Ukrainien
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Préparation de la partie
@@ -2639,6 +2664,8 @@
STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}Impossible d'insérer un nouvel ordre...
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Impossible de supprimer cet ordre...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Impossible de modifier cet ordre...
+STR_CAN_T_SKIP_ORDER :{WHITE}Impossible de sauter l'ordre courant...
+STR_CAN_T_SKIP_TO_ORDER :{WHITE}Impossible de sauter l'ordre sélectionné...
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Impossible de déplacer le véhicule...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}L'engin de queue suivra toujours sa contre-partie avant
STR_8838_N_A :N/D{SKIP}
@@ -2670,7 +2697,7 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Afficher la capacité de chaque wagon
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Afficher la capacité totale du train, par type de cargaison
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Liste des ordres - Cliquer sur un ordre pour le sélectionner. Cliquer avec Ctrl déplace la vue sur la station
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Sauter l'ordre courant, et enchaîner sur le suivant
+STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Sauter l'ordre courant, et enchaîner sur le suivant. Ctrl-clic pour sauter l'ordre sélectionné
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Supprime l'ordre sélectionné
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Transformer l'ordre sélectionné en Sans-Arrêt
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Insérer un nouvel ordre
--- a/src/lang/galician.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/galician.txt Tue Jun 12 18:02:11 2007 +0000
@@ -3,6 +3,8 @@
##isocode gl_ES
##plural 0
+#
+
##id 0x0000
STR_NULL :
STR_0001_OFF_EDGE_OF_MAP :{WHITE}Fora do borde do mapa
@@ -1074,6 +1076,8 @@
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Habilita-la economía "suave"(máis cambios, pero máis pequenos)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Permiti-la compra de accións por outras compañías
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Cando se arrastre, colocar siniais cada: {ORANGE}{STRING} cadrado(s)
+
+
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Posición da barra de ferramentas principal: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Esquerda
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Centro
@@ -1920,6 +1924,7 @@
STR_SV_STNAME_HELIPORT :{STRING} Heliporto
STR_SV_STNAME_FOREST :{STRING} Bosque
+
############ end of savegame specific region!
##id 0x6800
@@ -2519,7 +2524,6 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Mostra-la capacidade de cada vehículo
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Mostra-la capacidade total do tren, dividida por tipos de carga
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Lista de Ordes - Pincha nunha orde para seleccionala
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Salta-la orde actual, e comezar coa seguinte
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Borra-la orde seleccionada
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Facer que a orde seleccionada sexa de Non Parar
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Insertar unha nova orde despois da seleccionada, o insertar unha nova orde ó final da lista
@@ -2550,6 +2554,8 @@
STR_TRAIN_STOPPING_VEL :{RED}Parando, {VELOCITY}
STR_TRAIN_NO_POWER :{RED}Sen enerxía
+STR_NEW_VEHICLE_NOW_AVAILABLE :{BLACK}{BIGFONT}¡Novo {STRING} agora dispoñible!
+STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{STRING}
##id 0x9000
STR_9000_ROAD_VEHICLE_IN_THE_WAY :{WHITE}Haí un vehículo de estrada no camiño
@@ -2795,6 +2801,7 @@
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Valor do préstamo que ten a compañía
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Puntos totais de puntos posibles
+STR_NEWGRF_SETTINGS_BUTTON :{BLACK}Configuración NewGRF
STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Configuración Newgrf
STR_NEWGRF_APPLY_CHANGES :{BLACK}Aplica-los cambios
STR_NEWGRF_SET_PARAMETERS :{BLACK}Conf. parámetros
@@ -2804,8 +2811,12 @@
STR_NEWGRF_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING}
STR_NEWGRF_MD5SUM :{BLACK}Suma MD5: {SILVER}{STRING}
+STR_NEWGRF_ERROR_MSG_INFO :{SILVER}{STRING}
+STR_NEWGRF_ERROR_MSG_WARNING :{RED}Aviso: {SILVER}{STRING}
+STR_NEWGRF_ERROR_MSG_ERROR :{RED}Erro: {SILVER}{STRING}
STR_NEWGRF_ADD :{BLACK}Engadir
+STR_NEWGRF_ADD_TIP :{BLACK}Engadir un novo arquivo NewGRF á lista
STR_NEWGRF_REMOVE :{BLACK}Eliminar
STR_NEWGRF_REMOVE_TIP :{BLACK}Elimina-lo arquivo NewGRF seleccionado da lista
STR_NEWGRF_MOVEUP :{BLACK}Mover Arriba
@@ -2847,6 +2858,7 @@
STR_VEH_WITH_SHARED_ORDERS_LIST_TIP :{BLACK}Mostrar tódolos vehículos que comparte esta planificación
### depot strings
+STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Vas vender tódolos vehículos do depósito. ¿Estás seguro?
STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP :{BLACK}Vender tódolos trens do depósito
STR_DEPOT_SELL_ALL_BUTTON_SHIP_TIP :{BLACK}Vender tódolos barcos no depósito
@@ -2990,3 +3002,11 @@
STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Habilitar transparencia para industrias
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Habilitar transparencia para construibles como estacións, depósitos, puntos de ruta e catenaria
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Habilitar transparencia para pontes
+
+##### Mass Order
+
+
+
+
+
+########
--- a/src/lang/german.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/german.txt Tue Jun 12 18:02:11 2007 +0000
@@ -4,6 +4,8 @@
##plural 0
##gender m w n
+#
+
##id 0x0000
STR_NULL :
STR_0001_OFF_EDGE_OF_MAP :{WHITE}Zu weit vom Kartenrand entfernt
@@ -1047,6 +1049,7 @@
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Neue globale Wegfindung für alle Fahrzeuge: {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Frachtgewicht erhöhen um schwere Züge zu simulieren: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Erlaube Bushaltestellen an städtischen Straßen: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS :{LTBLUE}Erlaube das Bauen aneinanderliegender Stationen: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Kleine Flughäfen immer erlauben: {ORANGE}{STRING}
@@ -1087,6 +1090,7 @@
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Hubschrauber auf Helipads automatisch warten: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Landschaftsbau-Toolbar an Eisenbahn/Straßen/Hafen/Flughafen-Toolbar binden: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REVERSE_SCROLLING :{LTBLUE}Beim Verschieben mit der Maus die Ansicht in die Gegenrichtung verschieben: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING :{LTBLUE}Weiches Scrollen in den Ansichten: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MEASURE_TOOLTIP :{LTBLUE}Zeige Tooltip mit Abmessungen bei verschiedenen Bauwerkzeugen: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES :{LTBLUE}Anzeigen der Firmenlackierungen: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES_NONE :Keine
@@ -1099,6 +1103,7 @@
STR_CONFIG_PATCHES_SCROLLWHEEL_OFF :Aus
STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER :{LTBLUE}Scrollradgeschwindigkeit auf der Karte: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}Automatische Pause bei Spielstart: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS :{LTBLUE}Erweiterte Fahrzeugliste benutzen: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Maximale Anzahl der Züge pro Spieler: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Maximale Anzahl der Straßenfahrzeuge pro Spieler: {ORANGE}{STRING}
@@ -1393,6 +1398,31 @@
STR_NETWORK_LANG_ENGLISH :Englisch
STR_NETWORK_LANG_GERMAN :Deutsch
STR_NETWORK_LANG_FRENCH :Französisch
+STR_NETWORK_LANG_BRAZILIAN :Brasilianisch
+STR_NETWORK_LANG_BULGARIAN :Bulgarisch
+STR_NETWORK_LANG_CHINESE :Chinesisch
+STR_NETWORK_LANG_CZECH :Tschechisch
+STR_NETWORK_LANG_DANISH :Dänisch
+STR_NETWORK_LANG_DUTCH :Holländisch
+STR_NETWORK_LANG_ESPERANTO :Esperanto
+STR_NETWORK_LANG_FINNISH :Finnisch
+STR_NETWORK_LANG_HUNGARIAN :Ungarisch
+STR_NETWORK_LANG_ICELANDIC :Isländisch
+STR_NETWORK_LANG_ITALIAN :Italienisch
+STR_NETWORK_LANG_JAPANESE :Japanisch
+STR_NETWORK_LANG_KOREAN :Koreanisch
+STR_NETWORK_LANG_LITHUANIAN :Litauisch
+STR_NETWORK_LANG_NORWEGIAN :Norwegisch
+STR_NETWORK_LANG_POLISH :Polnisch
+STR_NETWORK_LANG_PORTUGUESE :Portugiesisch
+STR_NETWORK_LANG_ROMANIAN :Rumänisch
+STR_NETWORK_LANG_RUSSIAN :Russisch
+STR_NETWORK_LANG_SLOVAK :Slowakisch
+STR_NETWORK_LANG_SLOVENIAN :Slowenisch
+STR_NETWORK_LANG_SPANISH :Spanisch
+STR_NETWORK_LANG_SWEDISH :Schwedisch
+STR_NETWORK_LANG_TURKISH :Türkisch
+STR_NETWORK_LANG_UKRAINIAN :Ukrainisch
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Mehrspielerlobby
@@ -1586,6 +1616,13 @@
STR_RAILROAD_TRACK_WITH_PRESIGNALS :Gleis mit Vorsignalen
STR_RAILROAD_TRACK_WITH_EXITSIGNALS :Gleis mit Ausfahrsignalen
STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Gleis mit kombinierten Vor-/Ausfahrsignalen
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS :Eisenbahnschienen mit Vor- und Hauptsignalen
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS :Eisenbahnschienen mit Haupt- und Ausfahrsignalen
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS :Eisenbahnschienen mit Haupt- und Kombinationssignalen
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS :Eisenbahnschienen mit Vor- und Ausfahrsignalen
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS :Eisenbahnschienen mit Vor- und Kombinationssignalen
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS :Eisenbahnschienen mit Ausfahr- und Kombinationssignalen
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Bahnhof muss erst entfernt werden
@@ -1593,22 +1630,39 @@
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Straße muss erst entfernt werden
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Straßenarbeiten sind im Gange
STR_1802_ROAD_CONSTRUCTION :{WHITE}Straßenbau
+STR_1802_TRAMWAY_CONSTRUCTION :{WHITE}Straßenbahnbau
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Brücke wählen
+STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... Einbahnstraßen können keinen Abzweig haben
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Kann hier keine Straße bauen...
+STR_1804_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Kann Straßenbahn hier nicht bauen...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kann diese Straße nicht entfernen...
+STR_1805_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Kann Straßenbahn hier nicht entfernen...
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Fahrzeugdepot-Ausr.
+STR_1806_TRAM_DEPOT_ORIENTATION :{WHITE}Ausrichtung des Straßenbahndepots
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Kann Fahrzeugdepot hier nicht bauen...
+STR_1807_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}Kann Straßenbahndepot hier nicht bauen...
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Kann Busbahnhof nicht bauen...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kann Lkw-Ladeplatz nicht bauen...
+STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Kann Haltestelle hier nicht bauen...
+STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Kann Güterverladestelle hier nicht bauen...
STR_180A_ROAD_CONSTRUCTION :Straßenbau
+STR_180A_TRAMWAY_CONSTRUCTION :Straßenbahnbau
STR_180B_BUILD_ROAD_SECTION :{BLACK}Straße bauen
+STR_180B_BUILD_TRAMWAY_SECTION :{BLACK}Baue Straßenbahnabschnitt
STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Fahrzeugdepot bauen (zum Bau und zur Wartung von Fahrzeugen)
+STR_180C_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Baue Straßenbahndepot (zum Erstellen und Warten von Straßenbahnen)
STR_180D_BUILD_BUS_STATION :{BLACK}Busbahnhof bauen
STR_180E_BUILD_TRUCK_LOADING_BAY :{BLACK}Lkw-Ladeplatz bauen
+STR_180D_BUILD_PASSENGER_TRAM_STATION :{BLACK}Baue Haltestelle
+STR_180E_BUILD_CARGO_TRAM_STATION :{BLACK}Baue Güterverladestelle
STR_180F_BUILD_ROAD_BRIDGE :{BLACK}Straßenbrücke bauen
+STR_180F_BUILD_TRAMWAY_BRIDGE :{BLACK}Baue Straßenbahnbrücke
STR_1810_BUILD_ROAD_TUNNEL :{BLACK}Straßentunnel bauen
+STR_1810_BUILD_TRAMWAY_TUNNEL :{BLACK}Baue Straßenbahntunnel
STR_1811_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Zwischen Bau/Abriss der Straße umschalten
+STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Umschalten zwischen bauen/entfernen für Straßenbahnbau
STR_1813_SELECT_ROAD_VEHICLE_DEPOT :{BLACK}Ausrichtung des Fahrzeugdepots wählen
+STR_1813_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Ausrichtung des Straßenbahndepots wählen
STR_1814_ROAD :Straße
STR_1815_ROAD_WITH_STREETLIGHTS :Straße mit Laternen
STR_1816_TREE_LINED_ROAD :Straße mit Bäumen
@@ -1616,6 +1670,8 @@
STR_1818_ROAD_RAIL_LEVEL_CROSSING :Bahnübergang
STR_CAN_T_REMOVE_BUS_STATION :{WHITE}Kann Bushaltestelle nicht entfernen...
STR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Kann LKW-Ladestelle nicht entfernen...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE} Haltestelle kann nicht entfernt werden...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Güterverladestelle kann nicht entfernt werden...
##id 0x2000
STR_2000_TOWNS :{WHITE}Städte
@@ -1780,8 +1836,12 @@
STR_3041_NOW_ACCEPTS_AND :{WHITE}{STATION} akzeptiert jetzt {STRING} und {STRING}
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Busbahnhof-Ausr.
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Lkw-Ladeplatz-Ausr.
+STR_3042_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Ausrichtung der Haltestelle
+STR_3043_CARGO_TRAM_STATION_ORIENT :{WHITE}Ausrichtung der Güterverladestelle
STR_3046_MUST_DEMOLISH_BUS_STATION :{WHITE}Der Busbahnhof muss erst abgerissen werden
STR_3047_MUST_DEMOLISH_TRUCK_STATION :{WHITE}Der Lkw-Ladeplatz muss erst abgerissen werden
+STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION :{WHITE}Haltestelle muss vorher abgerissen werden
+STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION :{WHITE}Güterverladestelle muss vorher abgerissen werden
STR_3048_STATIONS :{WHITE}{COMPANY} - {COMMA} Haltestelle{P "" n}
STR_3049_0 :{YELLOW}{STATION} {STATIONFEATURES}
STR_304A_NONE :{YELLOW}- Keine -
@@ -1793,6 +1853,8 @@
STR_3050_SELECT_LENGTH_OF_RAILROAD :{BLACK}Bahnsteiglänge wählen
STR_3051_SELECT_BUS_STATION_ORIENTATION :{BLACK}Busbahnhofsausrichtung wählen
STR_3052_SELECT_TRUCK_LOADING_BAY :{BLACK}Ladeplatzausrichtung wählen
+STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Ausrichtung für die Haltestelle wählen
+STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Ausrichtung für die Güterverladestelle wählen
STR_3053_CENTER_MAIN_VIEW_ON_STATION :{BLACK}Ansicht auf die Station zentrieren
STR_3054_SHOW_STATION_RATINGS :{BLACK}Stationsbewertung anzeigen
STR_3055_CHANGE_NAME_OF_STATION :{BLACK}Name der Station ändern
@@ -2013,6 +2075,7 @@
STR_SV_STNAME_HELIPORT :{STRING} Heliport
STR_SV_STNAME_FOREST :{STRING} Wald
+STR_SV_GROUP_NAME :{GROUP}
############ end of savegame specific region!
@@ -2242,6 +2305,8 @@
STR_LIVERY_HELICOPTER :Helikopter
STR_LIVERY_SMALL_PLANE :Kleines Flugzeug
STR_LIVERY_LARGE_PLANE :Großraumflugzeug
+STR_LIVERY_PASSENGER_TRAM :Straßenbahn
+STR_LIVERY_FREIGHT_TRAM :Frachtstraßenbahn
STR_LIVERY_GENERAL_TIP :{BLACK}Allgemeines Farbschema anzeigen
STR_LIVERY_TRAIN_TIP :{BLACK}Zugfarbschema anzeigen
@@ -2599,6 +2664,9 @@
STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}Kann keinen neuen Auftrag hinzufügen...
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Kann den Auftrag nicht löschen...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Kann den Auftrag nicht bearbeiten...
+STR_CAN_T_MOVE_THIS_ORDER :{WHITE}Kann diesen Auftrag nicht verschieben...
+STR_CAN_T_SKIP_ORDER :{WHITE}Kann diesen Auftrag nicht auslassen...
+STR_CAN_T_SKIP_TO_ORDER :{WHITE}Kann nicht zum gewählten Auftrag wechseln...
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Kann das Fahrzeug nicht bewegen...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}Hintere Lok folgt immer der vorderen Lok
STR_8838_N_A :k.A.{SKIP}
@@ -2630,7 +2698,7 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Zeige Kapazität jedes Fahrzeugs
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Frachtübersicht des Zuges anzeigen, aufgeteilt nach Frachttyp
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Auftragsliste - zum Markieren hier anklicken
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Übergehe den laufenden Auftrag, und starte den nächsten
+STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Den aktuellen Auftrag auslassen und den Nächsten starten. STRG + Klick geht zum ausgewählten Auftrag
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Lösche den markierten Auftrag
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Führe den markierten Auftrag ohne Halt durch
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Füge einen neuen Auftrag vor dem markierten Auftrag ein, oder setze ihn ans Ende der Liste
@@ -2715,6 +2783,8 @@
STR_902E_NAME_ROAD_VEHICLE :{BLACK}Name des Fahrzeuges
STR_902F_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Die Stadt feiert . . .{}Der erste Bus erreicht {STATION}!
STR_9030_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Die Stadt feiert . . .{}Der erste Lkw erreicht {STATION}!
+STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Die Einwohner feiern . . .{}Die erste Straßenbahn erreicht {STATION}!
+STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Die Einwohner feiern . . .{}Die erste Frachtstraßenbahn erreicht {STATION}!
STR_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT}Fahrzeug verunglückt!{}Fahrer stirbt in einem Feuerball nach Zusammenstoß mit einem Zug
STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}Fahrzeug verunglückt!{}{COMMA} sterben nach Zusammenstoß mit einem Zug im Feuerball
STR_9033_CAN_T_MAKE_VEHICLE_TURN :{WHITE}Das Fahrzeug kann nicht gewendet werden...
@@ -2999,6 +3069,7 @@
### depot strings
STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Möchtest du alle Fahrzeuge in diesem Depot verkaufen?
+STR_DEPOT_WRONG_DEPOT_TYPE :Falsche Depotart
STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP :{BLACK}Verkaufe alle Züge im Depot
STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP :{BLACK}Verkaufe alle Fahrzeuge im Depot
@@ -3192,6 +3263,7 @@
##### Mass Order
STR_GROUP_NAME_FORMAT :Gruppe {COMMA}
+STR_GROUP_TINY_NAME :{TINYFONT}{GROUP}
STR_GROUP_ALL_TRAINS :Alle Züge
STR_GROUP_ALL_ROADS :Alle Straßenfahrzeuge
STR_GROUP_ALL_SHIPS :Alle Schiffe
--- a/src/lang/hungarian.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/hungarian.txt Tue Jun 12 18:02:11 2007 +0000
@@ -889,8 +889,8 @@
STR_02E6_ROAD_VEHICLES :{BLACK}Közúti járművek
STR_02E7 :{BLACK}{SKIP}{SKIP}{SKIP}{STRING}
STR_02E8_SELECT_SIDE_OF_ROAD_FOR :{BLACK}Válaszd ki,az út melyik oldalán haladjanak a közúti járművek
-STR_02E9_DRIVE_ON_LEFT :Balra hajts
-STR_02EA_DRIVE_ON_RIGHT :Jobbra hajts
+STR_02E9_DRIVE_ON_LEFT :Balra hajtás
+STR_02EA_DRIVE_ON_RIGHT :Jobbra hajtás
STR_02EB_TOWN_NAMES :{BLACK}Városnevek
STR_02EC :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{STRING}
STR_02ED_SELECT_STYLE_OF_TOWN_NAMES :{BLACK}A városnevek stílusának kiválasztása
@@ -1463,6 +1463,31 @@
STR_NETWORK_LANG_ENGLISH :Angol
STR_NETWORK_LANG_GERMAN :Német
STR_NETWORK_LANG_FRENCH :Francia
+STR_NETWORK_LANG_BRAZILIAN :Brazíl
+STR_NETWORK_LANG_BULGARIAN :Bulgár
+STR_NETWORK_LANG_CHINESE :Kínai
+STR_NETWORK_LANG_CZECH :Cseh
+STR_NETWORK_LANG_DANISH :Dán
+STR_NETWORK_LANG_DUTCH :Holland
+STR_NETWORK_LANG_ESPERANTO :Eszperantó
+STR_NETWORK_LANG_FINNISH :Finn
+STR_NETWORK_LANG_HUNGARIAN :Magyar
+STR_NETWORK_LANG_ICELANDIC :Izlandi
+STR_NETWORK_LANG_ITALIAN :Olasz
+STR_NETWORK_LANG_JAPANESE :Japán
+STR_NETWORK_LANG_KOREAN :Koreai
+STR_NETWORK_LANG_LITHUANIAN :Litván
+STR_NETWORK_LANG_NORWEGIAN :Norvég
+STR_NETWORK_LANG_POLISH :Lengyel
+STR_NETWORK_LANG_PORTUGUESE :Portugál
+STR_NETWORK_LANG_ROMANIAN :Román
+STR_NETWORK_LANG_RUSSIAN :Orosz
+STR_NETWORK_LANG_SLOVAK :Szlovák
+STR_NETWORK_LANG_SLOVENIAN :Szlovén
+STR_NETWORK_LANG_SPANISH :Spanyol
+STR_NETWORK_LANG_SWEDISH :Svéd
+STR_NETWORK_LANG_TURKISH :Török
+STR_NETWORK_LANG_UKRAINIAN :Ukrán
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Hálózati-játék lobby
@@ -1656,6 +1681,12 @@
STR_RAILROAD_TRACK_WITH_PRESIGNALS :Vasúti sin előrejelző szemaforral
STR_RAILROAD_TRACK_WITH_EXITSIGNALS :Vasúti sin kijáratjelző szemaforral
STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Vasúti sin vegyes szemaforral
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS :Vasúti sín normál és előrejelzőlámpával
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS :Vasúti sín normál és utójelzőlámpával
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS :Vasúti sín normál és előutójelző lámpával
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS :Vasúti sín elő és utójelző lámpával
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS :Vasúti sín elő és előutójelző lámpával
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS :Vasúti sín utó és előutójelző lámpával
STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Előbb a vasútállomást le kell rombolni
@@ -1666,6 +1697,7 @@
STR_1802_ROAD_CONSTRUCTION :{WHITE}Útépítés
STR_1802_TRAMWAY_CONSTRUCTION :{WHITE}Villamospálya építés
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Közúti híd építése
+STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... egy irányú utaknak nem lehetnek kereszteződéseik...
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Nem építhetsz ide utat...
STR_1804_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Nem lehet villamossínt építeni itt...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Nem rombolhatod le innen az utat...
@@ -1681,6 +1713,7 @@
STR_180A_ROAD_CONSTRUCTION :Útépítés
STR_180A_TRAMWAY_CONSTRUCTION :Villamospálya építés
STR_180B_BUILD_ROAD_SECTION :{BLACK}Út építése
+STR_180B_BUILD_TRAMWAY_SECTION :{BLACK}Villamos-sín építése
STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Garázs építése (járművek vételére és karbantartására)
STR_180C_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Villamos-depó építése (járművek megépítésére és szervizelésére)
STR_180D_BUILD_BUS_STATION :{BLACK}Buszmegálló építése
@@ -2733,6 +2766,9 @@
STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}Nem adhatsz meg új célpontot...
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Nem törölheted ezt a célpontot...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Nem módosíthatod ezt a célpontot...
+STR_CAN_T_MOVE_THIS_ORDER :{WHITE}Úticél mozgatása nem lehetséges...
+STR_CAN_T_SKIP_ORDER :{WHITE}Nem lehet átugrani a jelenlegi úticélt...
+STR_CAN_T_SKIP_TO_ORDER :{WHITE}Nem lehet a kiválasztott úticélra ugrani...
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Nem mozgathatod a járművet...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}A mozdony első felének mindig elöl kell lennie
STR_8838_N_A :Nincs{SKIP}
@@ -2764,7 +2800,7 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}A kocsik kapacitása
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Megmutatja a vonat teljes kapacitását, rakománytípusokra lebontva
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Menetrend - kattints egy célpontra a kijelöléséhez
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Az aktuális célpont kihagyása és ugrás a következőre
+STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Jelenlegi úticél átugrása, és a következő aktiválása. CTRL + kattintásra a kiválasztott úticélra ugrik
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}A kijelölt célpont törlése
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}A kijelölt célpont felé megállás nélkül kell haladni
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Új célpont beillesztése a kijelölt elé vagy a lista végére
--- a/src/lang/icelandic.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/icelandic.txt Tue Jun 12 18:02:11 2007 +0000
@@ -2598,7 +2598,6 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Sýna burðargetu hvers farartækis
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Sýna heildar burðargetu lestar, raðar eftir tegund farms
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Áætlun - smelltu til að velja stöð. CTRL + músartakki færir sjónarhorn að stöðinni
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Sleppa núverandi skipun, og byrja á næstu
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Eyða valdri skipun
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Gera valda skipun viðstöðulausa
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Skeyta inn nýrri skipun á undan valdri skipun, eða bæta við á enda listans
--- a/src/lang/italian.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/italian.txt Tue Jun 12 18:02:11 2007 +0000
@@ -1399,6 +1399,31 @@
STR_NETWORK_LANG_ENGLISH :Inglese
STR_NETWORK_LANG_GERMAN :Tedesco
STR_NETWORK_LANG_FRENCH :Francese
+STR_NETWORK_LANG_BRAZILIAN :Brasiliano
+STR_NETWORK_LANG_BULGARIAN :Bùlgaro
+STR_NETWORK_LANG_CHINESE :Cinese
+STR_NETWORK_LANG_CZECH :Ceco
+STR_NETWORK_LANG_DANISH :Danese
+STR_NETWORK_LANG_DUTCH :Olandese
+STR_NETWORK_LANG_ESPERANTO :Esperanto
+STR_NETWORK_LANG_FINNISH :Finlandese
+STR_NETWORK_LANG_HUNGARIAN :Ungherese
+STR_NETWORK_LANG_ICELANDIC :Islandese
+STR_NETWORK_LANG_ITALIAN :Italiano
+STR_NETWORK_LANG_JAPANESE :Giapponese
+STR_NETWORK_LANG_KOREAN :Coreano
+STR_NETWORK_LANG_LITHUANIAN :Lituano
+STR_NETWORK_LANG_NORWEGIAN :Norvegese
+STR_NETWORK_LANG_POLISH :Polacco
+STR_NETWORK_LANG_PORTUGUESE :Portoghese
+STR_NETWORK_LANG_ROMANIAN :Rumeno
+STR_NETWORK_LANG_RUSSIAN :Russo
+STR_NETWORK_LANG_SLOVAK :Slovacco
+STR_NETWORK_LANG_SLOVENIAN :Sloveno
+STR_NETWORK_LANG_SPANISH :Spagnolo
+STR_NETWORK_LANG_SWEDISH :Svedese
+STR_NETWORK_LANG_TURKISH :Turco
+STR_NETWORK_LANG_UKRAINIAN :Ucraino
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Stanza principale partita multigiocatore
@@ -2640,6 +2665,9 @@
STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}Impossibile inserire un nuovo ordine...
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Impossibile cancellare questo ordine...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Impossibile modificare questo ordine...
+STR_CAN_T_MOVE_THIS_ORDER :{WHITE}Impossibile spostare questo ordine...
+STR_CAN_T_SKIP_ORDER :{WHITE}Impossibile saltare l'ordine corrente...
+STR_CAN_T_SKIP_TO_ORDER :{WHITE}Impossibile saltare all'ordine selezionato...
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Impossibile spostare il veicolo...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}La locomotiva di coda segue sempre quella di testa
STR_8838_N_A :N/A{SKIP}
@@ -2671,7 +2699,7 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Mostra la capienza di ogni veicolo
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Mostra la capacità totale del treno, suddivisa per tipo di carico
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Lista degli ordini - fare clic su un ordine per selezionarlo e CTRL+clic per portarsi sulla stazione corrispondente
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Salta l'ordine corrente e inizia il successivo
+STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Salta l'ordine corrente e inizia il successivo. Tenere premuto CTRL per saltare all'ordine selezionato
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Elimina l'ordine selezionato
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Fa diventare l'ordine selezionato 'non-stop'
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Inserisce un nuovo ordine prima di quello selezionato, o lo aggiunge alla fine della lista
--- a/src/lang/japanese.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/japanese.txt Tue Jun 12 18:02:11 2007 +0000
@@ -1089,6 +1089,7 @@
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}ヘリコプターを自動的ヘリパッドで修理:{ORANGE}{STRING}
STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR :{LTBLUE}地形のツールバーを鉄道/道路/船舶/空港のツールバーに付ける:{ORANGE}{STRING}
STR_CONFIG_PATCHES_REVERSE_SCROLLING :{LTBLUE}スクロールの方面を逆転:{ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING :{LTBLUE}画面のスムーズスクロール機能:{ORANGE}{STRING}
STR_CONFIG_PATCHES_MEASURE_TOOLTIP :{LTBLUE}様々な建設のツールを使用するときに、測定ツールティップを表示:{ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES :{LTBLUE}会社のカラースキームを表示:{ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES_NONE :なし
@@ -1396,6 +1397,31 @@
STR_NETWORK_LANG_ENGLISH :英語
STR_NETWORK_LANG_GERMAN :ドイツ語
STR_NETWORK_LANG_FRENCH :フランス語
+STR_NETWORK_LANG_BRAZILIAN :ポルトガル語(ブラジル)
+STR_NETWORK_LANG_BULGARIAN :ブルガリア語
+STR_NETWORK_LANG_CHINESE :中国語
+STR_NETWORK_LANG_CZECH :チェコ語
+STR_NETWORK_LANG_DANISH :デンマーク語
+STR_NETWORK_LANG_DUTCH :オランダ語
+STR_NETWORK_LANG_ESPERANTO :エスペラント語
+STR_NETWORK_LANG_FINNISH :フィンランド語
+STR_NETWORK_LANG_HUNGARIAN :ハンガリー語
+STR_NETWORK_LANG_ICELANDIC :アイスランド語
+STR_NETWORK_LANG_ITALIAN :イタリア語
+STR_NETWORK_LANG_JAPANESE :日本語
+STR_NETWORK_LANG_KOREAN :韓国語
+STR_NETWORK_LANG_LITHUANIAN :リトアニア語
+STR_NETWORK_LANG_NORWEGIAN :ノルウェイ語
+STR_NETWORK_LANG_POLISH :ポーランド語
+STR_NETWORK_LANG_PORTUGUESE :ポルトガル語
+STR_NETWORK_LANG_ROMANIAN :ルーマニア語
+STR_NETWORK_LANG_RUSSIAN :ロシア語
+STR_NETWORK_LANG_SLOVAK :スロバキア語
+STR_NETWORK_LANG_SLOVENIAN :スロベニア語
+STR_NETWORK_LANG_SPANISH :スペイン語
+STR_NETWORK_LANG_SWEDISH :スウェーデン語
+STR_NETWORK_LANG_TURKISH :トルコ語
+STR_NETWORK_LANG_UKRAINIAN :ウクライナ語
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}多人数ゲームロビー
@@ -1589,6 +1615,12 @@
STR_RAILROAD_TRACK_WITH_PRESIGNALS :前位信号のある線路
STR_RAILROAD_TRACK_WITH_EXITSIGNALS :後位信号のある線路
STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :統合信号のある線路
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS :通常信号と入口従属信号のある鉄道
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS :通常信号と出口従属信号のある鉄道
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS :通常信号と結合信号のある鉄道
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS :入口従属信号と出口従属信号のある鉄道
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS :入口従属信号と結合信号のある鉄道
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS :出口従属信号と結合信号のある鉄道
STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}先に駅を破壊しなければなりません
@@ -1597,16 +1629,27 @@
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}先に道路を破壊しなければなりません
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}道路工事中
STR_1802_ROAD_CONSTRUCTION :{WHITE}道路の建設
+STR_1802_TRAMWAY_CONSTRUCTION :{WHITE}路面電車線の建設
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}道路橋を選択
+STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}...一方通行路上にジャンクションが建設できません
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}ここに道路が建設できません...
+STR_1804_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}ここに路面電車線が建設できません...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}ここから道路が破壊できません...
+STR_1805_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}ここから路面電車線が破壊できません...
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}車庫の配置
+STR_1806_TRAM_DEPOT_ORIENTATION :{WHITE}路面電車庫の配置
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}ここに車庫が建設できません...
+STR_1807_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}ここに路面電車庫が建設できません...
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}バス停が建設できません...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}荷役所が建設できません...
+STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}乗客用路面電車駅が建設できません...
+STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}貨物用路面電車駅が建設できません...
STR_180A_ROAD_CONSTRUCTION :道路の建設
+STR_180A_TRAMWAY_CONSTRUCTION :路面電車線の建設
STR_180B_BUILD_ROAD_SECTION :{BLACK}道路の部分を建設します
+STR_180B_BUILD_TRAMWAY_SECTION :{BLACK}路面電車線を建設します
STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}(バス、トラックの建設、整備のための)車庫を建設します
+STR_180C_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}(路面電車の購入や修理のため)路面電車庫を建設します
STR_180D_BUILD_BUS_STATION :{BLACK}バス停を建設します
STR_180E_BUILD_TRUCK_LOADING_BAY :{BLACK}荷役所を建設します
STR_180D_BUILD_PASSENGER_TRAM_STATION :{BLACK}乗客用路面電車駅を建設
@@ -1616,6 +1659,7 @@
STR_1810_BUILD_ROAD_TUNNEL :{BLACK}道路のトンネルを建設します
STR_1810_BUILD_TRAMWAY_TUNNEL :{BLACK}路面電車用トンネルを建設
STR_1811_TOGGLE_BUILD_REMOVE_FOR :{BLACK}道路の建設/破壊を切り替えます
+STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}路面電車線の建設/破壊を切り替えます
STR_1813_SELECT_ROAD_VEHICLE_DEPOT :{BLACK}車庫の配置の選択
STR_1813_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}路面電車庫の配置を選択
STR_1814_ROAD :道路
@@ -2619,6 +2663,9 @@
STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}新規指令が挿入できません...
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}この指令が削除できません...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}この指令が変更できません...
+STR_CAN_T_MOVE_THIS_ORDER :{WHITE}この指令が移動できません...
+STR_CAN_T_SKIP_ORDER :{WHITE}実行中の指令がスキップできない...
+STR_CAN_T_SKIP_TO_ORDER :{WHITE}選択した指令へスキップできない...
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}この車輌が移動できません...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}ダブルヘッドの場合、後部の機関車は常に前部の機関車について行きます
STR_8838_N_A :N/A{SKIP}
@@ -2650,7 +2697,7 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}各車両の容量を表示します
STR_8852_SHOW_TOTAL_CARGO :{BLACK}貨物種類に並べ替えて列車の合計容量を表示します
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}指令リスト - 指令を選択するにはクリックします
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}現在の指令をスキップして、次へ移動します
+STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}実行中の指令をスキップして、次へ移動します。Control クリックすると、選択した指令へ移動します。
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}選択した指令を削除します
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}選択した指令を「直行便」にします
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}選択した指令の前/リストの終わりに新規指令を挿入します
--- a/src/lang/korean.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/korean.txt Tue Jun 12 18:02:11 2007 +0000
@@ -1398,6 +1398,31 @@
STR_NETWORK_LANG_ENGLISH :영어
STR_NETWORK_LANG_GERMAN :독일어
STR_NETWORK_LANG_FRENCH :프랑스어
+STR_NETWORK_LANG_BRAZILIAN :브라질어
+STR_NETWORK_LANG_BULGARIAN :불가리아어
+STR_NETWORK_LANG_CHINESE :중국어
+STR_NETWORK_LANG_CZECH :체코어
+STR_NETWORK_LANG_DANISH :덴마크어
+STR_NETWORK_LANG_DUTCH :네덜란드어
+STR_NETWORK_LANG_ESPERANTO :에스페란토
+STR_NETWORK_LANG_FINNISH :핀란드어
+STR_NETWORK_LANG_HUNGARIAN :헝가리어
+STR_NETWORK_LANG_ICELANDIC :아이슬란드어
+STR_NETWORK_LANG_ITALIAN :이탈리아어
+STR_NETWORK_LANG_JAPANESE :일본어
+STR_NETWORK_LANG_KOREAN :한국어
+STR_NETWORK_LANG_LITHUANIAN :리투아니아어
+STR_NETWORK_LANG_NORWEGIAN :노르웨이어
+STR_NETWORK_LANG_POLISH :폴란드어
+STR_NETWORK_LANG_PORTUGUESE :포르투갈어
+STR_NETWORK_LANG_ROMANIAN :루마니아어
+STR_NETWORK_LANG_RUSSIAN :러시아어
+STR_NETWORK_LANG_SLOVAK :슬로바키아어
+STR_NETWORK_LANG_SLOVENIAN :슬로베니아어
+STR_NETWORK_LANG_SPANISH :스페인어
+STR_NETWORK_LANG_SWEDISH :스웨덴어
+STR_NETWORK_LANG_TURKISH :터키어
+STR_NETWORK_LANG_UKRAINIAN :우크라이나어
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}멀티플레이 준비
@@ -2639,6 +2664,9 @@
STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}새 경로를 삽입할 수 없습니다...
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}이 경로를 제거할 수 없습니다...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}이 경로를 수정할 수 없습니다...
+STR_CAN_T_MOVE_THIS_ORDER :{WHITE}이 경로를 옮길 수 없습니다...
+STR_CAN_T_SKIP_ORDER :{WHITE}현재 경로를 건너 뛸 수 없습니다...
+STR_CAN_T_SKIP_TO_ORDER :{WHITE}선택한 경로로 건너 뛸 수 없습니다...
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}차량을 옮길 수 없습니다...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}뒷쪽 기관차는 앞쪽것을 항상 따라다닐 것입니다.
STR_8838_N_A :없음{SKIP}
@@ -2670,7 +2698,7 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}각 차량의 수송량 정보를 보여줌
STR_8852_SHOW_TOTAL_CARGO :{BLACK}각 화물 종류에 따른 총 수송량 보여줌
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}이 열차의 경로 - 선택하려면 클릭하세요. CTRL+클릭하시면 그 역이 있는 장소로 이동합니다.
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}현재 경로를 건너뛰고 다음 경로로 진행합니다.
+STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}현재 경로를 건너 뜁니다, 그리고 다음 경로를 시작합니다. Ctrl + 클릭은 선택된 경로로 건너 뜁니다.
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}선택된 경로를 삭제합니다.
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}선택된 경로를 급행으로 변경합니다.
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}선택된 경로 바로 전이나 목록 맨 끝에 새로운 경로를 삽입합니다.
--- a/src/lang/lithuanian.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/lithuanian.txt Tue Jun 12 18:02:11 2007 +0000
@@ -2628,7 +2628,6 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Rodyti detalia vagonu talpos informacija
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Rodyti bendra traukinio talpos informacija pagal kroviniu tipa
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Nurodymų sąrašas - nurodymas pažymimas ant jo spragtelėjus. Spregtelėjimas laikant VALD (CTRL) nukelia į stotį
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Praleisti esama uzduoti, vygdyti sekancia
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Istrinti pazymeta uzduoti
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Nestoti pazymetoje stoteleje
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Iterpti nauja uzduoti pries pazymeta, arba iterpti saraso pabaigoje
--- a/src/lang/norwegian_bokmal.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/norwegian_bokmal.txt Tue Jun 12 18:02:11 2007 +0000
@@ -2630,7 +2630,6 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Vis kapasiteten til vognene
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Vis en total kapasitet på togene oppdelt etter godstype
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Ordreliste - trykk på en ordre for å velge den
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Hopper over gjeldende ordre, og forsett på neste
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Slett den valgte ordren
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Gjør den valgte ordren om til en
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Sett inn en ordre før den valgte ordren, eller i slutten av listen.
--- a/src/lang/norwegian_nynorsk.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/norwegian_nynorsk.txt Tue Jun 12 18:02:11 2007 +0000
@@ -4,6 +4,8 @@
##plural 0
##gender masculine feminine neuter
+#
+
##id 0x0000
STR_NULL :
STR_0001_OFF_EDGE_OF_MAP :{WHITE}Utføre kartet
@@ -1047,6 +1049,7 @@
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Ny global rutesøking (NGR, overstyrer NTK): {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Vektmultiplikator for frakt til å simulere tunge tog: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Tillat å køyre gjennom stoppestadar på vegar som byane eig: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS :{LTBLUE}Tillat å byggje stasjonar inntil andre: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Alltid tillat bygging av små flyplassar: {ORANGE}{STRING}
@@ -1099,6 +1102,7 @@
STR_CONFIG_PATCHES_SCROLLWHEEL_OFF :av
STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER :{LTBLUE}Fart på rullehjul: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}Automatisk pause når ein startar nytt spel: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS :{LTBLUE}Bruk avansert køyretøyliste: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Maks antal tog per speler: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Maks antal køyretøy per spelar: {ORANGE}{STRING}
@@ -1393,6 +1397,31 @@
STR_NETWORK_LANG_ENGLISH :Engelsk
STR_NETWORK_LANG_GERMAN :Tysk
STR_NETWORK_LANG_FRENCH :Fransk
+STR_NETWORK_LANG_BRAZILIAN :Brasiliansk
+STR_NETWORK_LANG_BULGARIAN :Bulgarsk
+STR_NETWORK_LANG_CHINESE :Kinesisk
+STR_NETWORK_LANG_CZECH :Tsjekkisk
+STR_NETWORK_LANG_DANISH :Dansk
+STR_NETWORK_LANG_DUTCH :Nederlandsk
+STR_NETWORK_LANG_ESPERANTO :Esperanto
+STR_NETWORK_LANG_FINNISH :Finsk
+STR_NETWORK_LANG_HUNGARIAN :Ungarsk
+STR_NETWORK_LANG_ICELANDIC :Islandsk
+STR_NETWORK_LANG_ITALIAN :Italiensk
+STR_NETWORK_LANG_JAPANESE :Japansk
+STR_NETWORK_LANG_KOREAN :Koreansk
+STR_NETWORK_LANG_LITHUANIAN :Litauisk
+STR_NETWORK_LANG_NORWEGIAN :Norsk
+STR_NETWORK_LANG_POLISH :Polsk
+STR_NETWORK_LANG_PORTUGUESE :Portugisisk
+STR_NETWORK_LANG_ROMANIAN :Rumensk
+STR_NETWORK_LANG_RUSSIAN :Russisk
+STR_NETWORK_LANG_SLOVAK :Slovakisk
+STR_NETWORK_LANG_SLOVENIAN :Slovensk
+STR_NETWORK_LANG_SPANISH :Spansk
+STR_NETWORK_LANG_SWEDISH :Svensk
+STR_NETWORK_LANG_TURKISH :Tyrkisk
+STR_NETWORK_LANG_UKRAINIAN :Ukrainsk
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Fleirspelarspel-lobby
@@ -1586,6 +1615,13 @@
STR_RAILROAD_TRACK_WITH_PRESIGNALS :Jernbanespor med for-signal
STR_RAILROAD_TRACK_WITH_EXITSIGNALS :Jernbanespor med ut-signal
STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Jernbanespor med samansette signal
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS :Jernbanespor med normale- og pre-signal
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS :Jernbanespor med normale- og exit-spor
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS :Jernbanespor med normale- og blandingssignal
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS :Jernbanespor med pre- og exit-signal
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS :Jernbanespor med pre- og blandingssignal
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS :Jernbanespor med exit- og blandingssignal
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Må fjerne togstasjon først
@@ -1593,22 +1629,39 @@
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Må fjerne veg først
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Vegarbeid pågår
STR_1802_ROAD_CONSTRUCTION :{WHITE}Bygg veg
+STR_1802_TRAMWAY_CONSTRUCTION :{WHITE}Trikkekonstruksjon
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Vel type bru
+STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... einvegskøyrde vegar kan ikkje ha kryss
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Kan ikkje byggje veg her...
+STR_1804_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Kan ikkje byggje trikk her
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Kan ikkje fjerne veg her...
+STR_1805_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Kan ikkje fjerna trikk
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Retning for garasje
+STR_1806_TRAM_DEPOT_ORIENTATION :{WHITE}Retning for trikkedepot
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Kan ikkje byggje garasje her...
+STR_1807_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}Kan ikkje byggje trikkedepot her
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Kan ikkje byggje busstasjon...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Kan ikkje byggje lasteterminal...
+STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Kan ikkje byggje trikkestasjon for passasjerer...
+STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Kan ikkje byggje trikkestasjon for frakt...
STR_180A_ROAD_CONSTRUCTION :Bygg veg
+STR_180A_TRAMWAY_CONSTRUCTION :Trikkekonstruksjon
STR_180B_BUILD_ROAD_SECTION :{BLACK}Bygg veg
+STR_180B_BUILD_TRAMWAY_SECTION :{BLACK}Bygg trikkeseksjon
STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Bygg garasje (trengst for bygging og vedlikehald av køyretøy)
+STR_180C_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Bygg trikkedepot ( for å bygge og vedlikeholde køyretøy)
STR_180D_BUILD_BUS_STATION :{BLACK}Bygg busstasjon
STR_180E_BUILD_TRUCK_LOADING_BAY :{BLACK}Bygg lasteterminal
+STR_180D_BUILD_PASSENGER_TRAM_STATION :{BLACK}Bygg trikkestasjon for passasjerer
+STR_180E_BUILD_CARGO_TRAM_STATION :{BLACK}Bygg trikkestasjon for frakt
STR_180F_BUILD_ROAD_BRIDGE :{BLACK}Bygg bru
+STR_180F_BUILD_TRAMWAY_BRIDGE :{BLACK}Bygg bro for trikk
STR_1810_BUILD_ROAD_TUNNEL :{BLACK}Bygg tunnel
+STR_1810_BUILD_TRAMWAY_TUNNEL :{BLACK}Bygg tunell for trikk
STR_1811_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Vel mellom bygging/fjerning for vegbygging
+STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Byt mellom bygge / fjerne for trikk
STR_1813_SELECT_ROAD_VEHICLE_DEPOT :{BLACK}Vel retninga på garasjen
+STR_1813_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Vel retning for trikkedepot
STR_1814_ROAD :Veg
STR_1815_ROAD_WITH_STREETLIGHTS :Veg med gatelykter
STR_1816_TREE_LINED_ROAD :Aveny
@@ -1616,6 +1669,8 @@
STR_1818_ROAD_RAIL_LEVEL_CROSSING :Jernbaneovergang
STR_CAN_T_REMOVE_BUS_STATION :{WHITE}Kan ikkje fjerne busstasjon
STR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Kan ikkje fjerne lastebilstasjon
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Kan ikkje fjerne trikkestasjon...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Kan ikkje fjerne trikkestasjon...
##id 0x2000
STR_2000_TOWNS :{WHITE}Byar
@@ -1780,8 +1835,12 @@
STR_3041_NOW_ACCEPTS_AND :{WHITE}{STATION} godtek no {STRING} og {STRING}
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Retning på bussterminal
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Retning på lasteterminal
+STR_3042_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Retning på trikkestajon
+STR_3043_CARGO_TRAM_STATION_ORIENT :{WHITE}Retning på trikkestasjon
STR_3046_MUST_DEMOLISH_BUS_STATION :{WHITE}Må rive bussterminal først
STR_3047_MUST_DEMOLISH_TRUCK_STATION :{WHITE}Må rive lasteterminal først
+STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION :{WHITE}Må fjerne trikkestasjon først
+STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION :{WHITE}Må fjerne trikkestajon først
STR_3048_STATIONS :{WHITE}{COMPANY} - {COMMA} Stasjon{P "" ar}
STR_3049_0 :{YELLOW}{STATION} {STATIONFEATURES}
STR_304A_NONE :{YELLOW}- Ingen -
@@ -1793,6 +1852,8 @@
STR_3050_SELECT_LENGTH_OF_RAILROAD :{BLACK}Vel kor lang stasjonen skal vere
STR_3051_SELECT_BUS_STATION_ORIENTATION :{BLACK}Vel retning på bussterminal
STR_3052_SELECT_TRUCK_LOADING_BAY :{BLACK}Vel retning på lasteterminal
+STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Velg retning på trikkestajon
+STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Velg retning på trikkestajon
STR_3053_CENTER_MAIN_VIEW_ON_STATION :{BLACK}Sentrer biletet på stasjonen
STR_3054_SHOW_STATION_RATINGS :{BLACK}Vis stasjonsvurdering
STR_3055_CHANGE_NAME_OF_STATION :{BLACK}Endre namnet på stasjonen
@@ -2013,6 +2074,8 @@
STR_SV_STNAME_HELIPORT :{STRING} helikopterstasjon
STR_SV_STNAME_FOREST :{STRING}skogen
+STR_SV_GROUP_NAME :{GROUP}
+
############ end of savegame specific region!
##id 0x6800
@@ -2241,6 +2304,8 @@
STR_LIVERY_HELICOPTER :Helikopter
STR_LIVERY_SMALL_PLANE :Lite fly
STR_LIVERY_LARGE_PLANE :Stort fly
+STR_LIVERY_PASSENGER_TRAM :Passasjertrikk
+STR_LIVERY_FREIGHT_TRAM :Frakttrikk
STR_LIVERY_GENERAL_TIP :{BLACK}Vis generelle fargetema
STR_LIVERY_TRAIN_TIP :{BLACK}Vis togfargetema
@@ -2598,6 +2663,8 @@
STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}Kan ikkje setje inn ny ordre...
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Kan ikkje slette denne ordren...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Kan ikkje endre denne ordren...
+STR_CAN_T_SKIP_ORDER :{WHITE}Kan ikkje hoppa over gjeldande ordre
+STR_CAN_T_SKIP_TO_ORDER :{WHITE}Kan ikkje hoppa til valde ordre
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Kan ikkje flytte køyretøy...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}Bakmaskinen vil alltid følgje det fremste motstykket
STR_8838_N_A :N/A{SKIP}
@@ -2629,7 +2696,7 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Vis kapasiteten til vognene
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Vis total kapasitet på vognene, sortert etter type vare
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Ordreliste - trykk på ein ordre for å velje han
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Hopp over gjeldande ordre, og start den neste
+STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Hopp over gjedande ordre, og start neste. CTRL + klikk hopper til valde ordre
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Slett den valde ordren
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Gjer den valde ordren om til ein
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Sett inn ein ordre før den valde ordren, eller i slutten av lista
@@ -2714,6 +2781,8 @@
STR_902E_NAME_ROAD_VEHICLE :{BLACK}Namngje køyretøy
STR_902F_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Innbyggjarane jublar . . .{}Første buss kjem til {STATION}!
STR_9030_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Innbyggjarane jublar . . .{}Første lastebil kjem til {STATION}!
+STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Innbygjarane feirer . . .{}Første passasjertrikk kjem til{STATION}!
+STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Innbygjarane feirer . . .{}Første fraktetrikk kjem til {STATION}!
STR_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT}Kollisjon!{}Sjåfør døyr etter kollisjon med tog
STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}Kollisjon!{}{COMMA} døyr etter kollisjon med tog
STR_9033_CAN_T_MAKE_VEHICLE_TURN :{WHITE}Kan ikkje snu...
@@ -2998,6 +3067,7 @@
### depot strings
STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Du er i ferd med å selje alle køyretøya i depotet. Er du sikker?
+STR_DEPOT_WRONG_DEPOT_TYPE :Gal type depot
STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP :{BLACK}Sel alle toga i togstallen
STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP :{BLACK}Sel alle køyretøya i garasjen
@@ -3188,3 +3258,41 @@
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Byt gjennomsyn for bygningar som kan byggast, til dømes depot og vegmerker
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Byt gjennomsyn for bruer
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Byt gjennomsyn for bygningar som fyrtårn og antenner, kanskje i framtida for fine effekter
+
+##### Mass Order
+STR_GROUP_NAME_FORMAT :Gruppe {COMMA}
+STR_GROUP_TINY_NAME :{TINYFONT}{GROUP}
+STR_GROUP_ALL_TRAINS :Alle tog
+STR_GROUP_ALL_ROADS :Alle køyretøty
+STR_GROUP_ALL_SHIPS :Alle skip
+STR_GROUP_ALL_AIRCRAFTS :Alle fly
+STR_GROUP_TINY_NUM :{TINYFONT}{COMMA}
+STR_GROUP_ADD_SHARED_VEHICLE :Legg til delte køyretøy
+STR_GROUP_REMOVE_ALL_VEHICLES :Fjern alle køyretøy
+
+STR_GROUP_TRAINS_CAPTION :{WHITE}{GROUP} - {COMMA} Tog
+STR_GROUP_ROADVEH_CAPTION :{WHITE}{GROUP} - {COMMA} Køyretøy
+STR_GROUP_SHIPS_CAPTION :{WHITE}{GROUP} - {COMMA} Skip
+STR_GROUP_AIRCRAFTS_CAPTION :{WHITE}{GROUP} - {COMMA} Fly
+STR_GROUP_RENAME_CAPTION :{BLACK}Gje nytt namn til ei gruppe
+STR_GROUP_REPLACE_CAPTION :{WHITE}Erstatt køyretøy i "{GROUP}"
+
+STR_GROUP_CAN_T_CREATE :{WHITE}Kan ikkje lage gruppe...
+STR_GROUP_CAN_T_DELETE :{WHITE}Kan ikkje slette denne gruppa...
+STR_GROUP_CAN_T_RENAME :{WHITE}Kan ikkje gje gruppa nytt namn...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Kan ikkje fjerne alle køyretøy fra denne gruppa...
+STR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Kan ikkje legge dette køyretøyet til denne gruppa...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Kan ikkje legge til gruppe for delte køyretøy...
+
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP :{BLACK}Grupper - Klikk på ei gruppe for å få ei liste over alle køyretøya i den
+STR_GROUP_CREATE_TIP :{BLACK}Klikk for å lage ei gruppe
+STR_GROUP_DELETE_TIP :{BLACK}Slett den valde gruppa
+STR_GROUP_RENAME_TIP :{BLACK}Gje den valde gruppa nytt namn
+STR_GROUP_REPLACE_PROTECTION_TIP :{BLACK}Klikk for å beskytte denne gruppa frå å global automatisk erstatning
+
+STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR :{TINYFONT}{BLACK}Forteneste i år: {GREEN}{CURRENCY} {BLACK}(førre år: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR :{TINYFONT}{BLACK}Forteneste i år: {RED}{CURRENCY} {BLACK}(førre år: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR :{TINYFONT}{BLACK}Forteneste i år: {GREEN}{CURRENCY} {BLACK}(førre år: {RED}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR :{TINYFONT}{BLACK}Forteneste i år: {RED}{CURRENCY} {BLACK}(førre år: {RED}{CURRENCY}{BLACK})
+
+########
--- a/src/lang/polish.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/polish.txt Tue Jun 12 18:02:11 2007 +0000
@@ -2756,7 +2756,6 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Pokaż pojemność każdego wagonu
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Pokaż całkowitą pojemność pociągu, według typu ładunku
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Lista poleceń - klik na poleceniu aby zaznaczyć. CTRL + klik przenosi do stacji
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Pomiń obecne polecenie i zacznij następne
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Usuń podświetlone polecenie
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Zrób z tego polecenia 'non-stop'
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Wstaw nowe polecenie na końcu listy lub przed zaznaczonym poleceniem
--- a/src/lang/portuguese.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/portuguese.txt Tue Jun 12 18:02:11 2007 +0000
@@ -1395,6 +1395,31 @@
STR_NETWORK_LANG_ENGLISH :Inglês
STR_NETWORK_LANG_GERMAN :Alemão
STR_NETWORK_LANG_FRENCH :Francês
+STR_NETWORK_LANG_BRAZILIAN :Brasileiro
+STR_NETWORK_LANG_BULGARIAN :Búlgaro
+STR_NETWORK_LANG_CHINESE :Chinês
+STR_NETWORK_LANG_CZECH :Checo
+STR_NETWORK_LANG_DANISH :Dinamarquês
+STR_NETWORK_LANG_DUTCH :Holandês
+STR_NETWORK_LANG_ESPERANTO :Esperanto
+STR_NETWORK_LANG_FINNISH :Finlandês
+STR_NETWORK_LANG_HUNGARIAN :Húngaro
+STR_NETWORK_LANG_ICELANDIC :Islandês
+STR_NETWORK_LANG_ITALIAN :Italiano
+STR_NETWORK_LANG_JAPANESE :Japonês
+STR_NETWORK_LANG_KOREAN :Coreano
+STR_NETWORK_LANG_LITHUANIAN :Lituano
+STR_NETWORK_LANG_NORWEGIAN :Norueguês
+STR_NETWORK_LANG_POLISH :Polaco
+STR_NETWORK_LANG_PORTUGUESE :Português
+STR_NETWORK_LANG_ROMANIAN :Romeno
+STR_NETWORK_LANG_RUSSIAN :Russo
+STR_NETWORK_LANG_SLOVAK :Eslovaco
+STR_NETWORK_LANG_SLOVENIAN :Esloveno
+STR_NETWORK_LANG_SPANISH :Espanhol
+STR_NETWORK_LANG_SWEDISH :Sueco
+STR_NETWORK_LANG_TURKISH :Turco
+STR_NETWORK_LANG_UKRAINIAN :Ucraniano
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Sala de espera de jogo multi-jogador
@@ -2634,7 +2659,6 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Mostrar capacidades de cada veículo
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Mostrar capacidade total do comboio, dividir por tipo de carga
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Lista de ordens - clique numa ordem para a seleccionar
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Saltar a ordem actual, e iniciar a próxima
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Eliminar a ordem seleccionada
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}A ordem seleccionada fará com que o veículo não para noutras estações pelo caminho
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Inserir nova ordem antes da ordem seleccionada, ou adicionar ao fim da lista
@@ -3195,11 +3219,33 @@
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Comutar transparência para estruturas como faróis-terrestres e antenas (talvez, no futuro, para embelezamentos)
##### Mass Order
+STR_GROUP_NAME_FORMAT :Grupo {COMMA}
STR_GROUP_TINY_NAME :{TINYFONT}{GROUP}
+STR_GROUP_ALL_TRAINS :Todos os Comboios
+STR_GROUP_ALL_ROADS :Todos os veículos de estrada
+STR_GROUP_ALL_SHIPS :Todos os barcos
+STR_GROUP_ALL_AIRCRAFTS :Todas as aeronaves
STR_GROUP_TINY_NUM :{TINYFONT}{COMMA}
+STR_GROUP_REMOVE_ALL_VEHICLES :Remover todos os veículos
+STR_GROUP_RENAME_CAPTION :{BLACK}Renomear um grupo
+STR_GROUP_REPLACE_CAPTION :{WHITE}Substituir Veículos de "{GROUP}"
+STR_GROUP_CAN_T_CREATE :{WHITE}Impossível criar grupo...
+STR_GROUP_CAN_T_DELETE :{WHITE}Impossível remover este grupo...
+STR_GROUP_CAN_T_RENAME :{WHITE}Impossível renomear o grupo...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Não é possível remover todos os veículos deste grupo...
+STR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Impossível adicionar o veículo a este grupo...
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP :{BLACK}Grupos - Clique num grupo para listar todos os seus veículos
+STR_GROUP_CREATE_TIP :{BLACK}Clique para criar um grupo
+STR_GROUP_DELETE_TIP :{BLACK}Remover o grupo seleccionado
+STR_GROUP_RENAME_TIP :{BLACK}Mudar o nome do grupo seleccionado
+STR_GROUP_REPLACE_PROTECTION_TIP :{BLACK}Clique para proteger este grupo da autosubstituição global
+STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR :{TINYFONT}{BLACK}Lucro deste ano: {GREEN}{CURRENCY} {BLACK}(ano passado: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR :{TINYFONT}{BLACK}Lucro deste ano: {RED}{CURRENCY} {BLACK}(ano passado: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR :{TINYFONT}{BLACK}Lucro deste ano: {GREEN}{CURRENCY} {BLACK}(ano passado: {RED}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR :{TINYFONT}{BLACK}Lucro deste ano: {RED}{CURRENCY} {BLACK}(ano passado: {RED}{CURRENCY}{BLACK})
########
--- a/src/lang/romanian.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/romanian.txt Tue Jun 12 18:02:11 2007 +0000
@@ -2654,7 +2654,6 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Afiseazã capacitãtile componentelor trenului
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Afiseazã capacitãtile totale ale trenului, diferentiate pe tip de încãrcãturã
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Lista de comenzi - clic pe comandã pentru a o selecta
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Sãri peste comanda curentã si treci la urmãtoarea
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Sterge comanda selectatã
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Circulă fără oprire până la destinaţia selectată
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Introdu o comandã înaintea celei selectate sau adaugã o comandã la sfârsitul listei
--- a/src/lang/russian.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/russian.txt Tue Jun 12 18:02:11 2007 +0000
@@ -2646,7 +2646,6 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Показать вместимость вагонов
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Показать общую вместимость поезда по типам грузов
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Показ списка заданий - щелкните для выделения. Если зажать CTRL - обзор станции.
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Пропустить текущее задание и перейти к следующему
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Удалить выделенное задание
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Ехать по выбранному заданию без остановок
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Вставить новое задание перед выделенным, или в конец списка
--- a/src/lang/simplified_chinese.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/simplified_chinese.txt Tue Jun 12 18:02:11 2007 +0000
@@ -2617,7 +2617,6 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}显示列车的运载能力
STR_8852_SHOW_TOTAL_CARGO :{BLACK}根据不同的挂车种类显示相应的总运力
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}调度列表 - 单击一个调度指令可以使之高亮化. CTRL + 单击可以将视点移动到相应的车站
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}跳过的当前的调度指令并直接执行下一条
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}删除高亮的调度命令
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}命令铁车在高亮的指令对应的车站不停车
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}在调度列表的结尾或高亮项目的前面增加一条新指令
--- a/src/lang/slovak.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/slovak.txt Tue Jun 12 18:02:11 2007 +0000
@@ -1153,6 +1153,7 @@
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Automaticke opravy vrtulnikov v heliporte: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Otvarat panel uprav terenu s panelom stavby trati, ciest, ... : {ORANGE}{STRING}
STR_CONFIG_PATCHES_REVERSE_SCROLLING :{LTBLUE}Pri posuvani mapy mysou posuvat opacnym smerom: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING :{LTBLUE}Plynulé posúvanie pohladu: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MEASURE_TOOLTIP :{LTBLUE}Zobrazit info o rozmerom pri vystavbe: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES :{LTBLUE}Zobrazit farebne schemy spolocnosti: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES_NONE :Ziadne
@@ -1460,6 +1461,30 @@
STR_NETWORK_LANG_ENGLISH :Anglicky
STR_NETWORK_LANG_GERMAN :Nemecky
STR_NETWORK_LANG_FRENCH :Francuzsky
+STR_NETWORK_LANG_BRAZILIAN :Brazílsky
+STR_NETWORK_LANG_BULGARIAN :Bulharsky
+STR_NETWORK_LANG_CHINESE :Cinsky
+STR_NETWORK_LANG_CZECH :Cesky
+STR_NETWORK_LANG_DANISH :Dánsky
+STR_NETWORK_LANG_ESPERANTO :Esperanto
+STR_NETWORK_LANG_FINNISH :Fínsky
+STR_NETWORK_LANG_HUNGARIAN :Madarsky
+STR_NETWORK_LANG_ICELANDIC :Islandsky
+STR_NETWORK_LANG_ITALIAN :Taliansky
+STR_NETWORK_LANG_JAPANESE :Japonsky
+STR_NETWORK_LANG_KOREAN :Kórejsky
+STR_NETWORK_LANG_LITHUANIAN :Litovksy
+STR_NETWORK_LANG_NORWEGIAN :Nórsky
+STR_NETWORK_LANG_POLISH :Polsky
+STR_NETWORK_LANG_PORTUGUESE :Portugalsky
+STR_NETWORK_LANG_ROMANIAN :Rumunsky
+STR_NETWORK_LANG_RUSSIAN :Rusky
+STR_NETWORK_LANG_SLOVAK :Slovensky
+STR_NETWORK_LANG_SLOVENIAN :Slovinsky
+STR_NETWORK_LANG_SPANISH :Spanielsky
+STR_NETWORK_LANG_SWEDISH :Svédsky
+STR_NETWORK_LANG_TURKISH :Turecky
+STR_NETWORK_LANG_UKRAINIAN :Ukrajinsky
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Sietova hra - lobby
@@ -1653,6 +1678,12 @@
STR_RAILROAD_TRACK_WITH_PRESIGNALS :Zeleznicne kolaje s pre-signalmi
STR_RAILROAD_TRACK_WITH_EXITSIGNALS :Zeleznicne kolaje s exit-signalmi
STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Zeleznicne kolaje s combo-signalmi
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS :Železnicné kolaje s normálnymi a pre-signálmi
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS :Železnicné kolaje s normálnymi a exit-signálmi
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS :Železnicné kolaje s normálnymi a combo-signálmi
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS :Železnicné kolaje s pre- a exit-signálmi
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS :Železnicné kolaje s pre- a combo-signálmi
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS :Železnicné kolaje s exit- a combo-signálmi
STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Je potrebné najprv odstránit železnicnú stanicu
@@ -1661,13 +1692,21 @@
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Cesta musi byt najskor odstranena
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Prebiehaju cestne prace
STR_1802_ROAD_CONSTRUCTION :{WHITE}Vystavba cesty
+STR_1802_TRAMWAY_CONSTRUCTION :{WHITE}Výstavba elektrickovej trate
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Vyber cestny most
+STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... na jednosmerných cestách nie sú dovolené križovatky
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Tu sa neda postavit cesta ...
+STR_1804_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Nie je možné postavit elektrickovú trat ...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Tu sa neda odstranit cesta ...
+STR_1805_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Nie je možné odstránit elektrickovú trat ...
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Orientacia garaze
+STR_1806_TRAM_DEPOT_ORIENTATION :{WHITE}Orientácia elektrickového depa
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Tu sa neda postavit garaz ...
+STR_1807_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}Nie je možné postavit elektrickové depo ...
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Nemozno postavit autobusovu zastavku ...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Nemozno postavit vykladku ...
+STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Nie je možné postavit elektrickovú osobnú stanicu ...
+STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Nie je možné postavit elektrickovú nákladnú stanicu ...
STR_180A_ROAD_CONSTRUCTION :Vystavba cesty
STR_180B_BUILD_ROAD_SECTION :{BLACK}Postavit cast cesty
STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Postavit garaz (na vyroby a opravy automobilov)
@@ -2699,7 +2738,6 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Zobrazit kapacitu kazdeho vozidla
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Zobrazit celkovu kapacitu vlaku, rozdelenu podla typu nakladu
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Zoznam prikazov - kliknut na prikaz pre oznacenie
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Vynechat aktualny prikaz - preskocit na dalsi
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Vymazat oznaceny prikaz
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Oznaceny prikaz bude prevedeny bez zastavenia
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Vlozit novy prikaz pred oznaceny prikaz, alebo na koniec zoznamu
--- a/src/lang/slovenian.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/slovenian.txt Tue Jun 12 18:02:11 2007 +0000
@@ -4,6 +4,8 @@
##plural 8
##case r d t
+#
+
##id 0x0000
STR_NULL :
STR_0001_OFF_EDGE_OF_MAP :{WHITE}Čez rob zemljevida
@@ -1088,6 +1090,7 @@
STR_CONFIG_PATCHES_NEW_PATHFINDING_ALL :{LTBLUE}Novo skupno iskanje poti (NPF, prevlada NTP): {ORANGE}{STRING}
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Koeficient teže tovora za simulacijo težkih vlakov: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Dovoli prehodne postaje na cestah v lasti mest: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADJACENT_STATIONS :{LTBLUE}Dovoli gradnjo združljivih postaj: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SMALL_AIRPORTS :{LTBLUE}Vedno dovoli majhna letališča: {ORANGE}{STRING}
@@ -1128,6 +1131,7 @@
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Avtomatski servis helikopterjev na pristajališču: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Pripni orodje za teren k orodju za gradnjo cest/železnic itd.: {ORANGE}{STRING}
STR_CONFIG_PATCHES_REVERSE_SCROLLING :{LTBLUE}Obrni smer premika okna: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING :{LTBLUE}Gladek premik pogleda: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MEASURE_TOOLTIP :{LTBLUE}Prikaz merilnega nasveta med uporabo gradbenih orodij: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES :{LTBLUE}Prikaz znakov podjetij: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LIVERIES_NONE :Brez
@@ -1140,6 +1144,7 @@
STR_CONFIG_PATCHES_SCROLLWHEEL_OFF :Izklopljeno
STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER :{LTBLUE}Hitrost premika s kolescem miške: {ORANGE}{STRING}
STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}Avtomatsko pavziraj ob zagonu nove igre: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS :{LTBLUE}Uporabi napreden seznam vozil: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Največ vlakov na igralca: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Največ cestnih vozil na igralca: {ORANGE}{STRING}
@@ -1434,6 +1439,31 @@
STR_NETWORK_LANG_ENGLISH :Angleški
STR_NETWORK_LANG_GERMAN :Nemški
STR_NETWORK_LANG_FRENCH :Francoski
+STR_NETWORK_LANG_BRAZILIAN :Brazilski
+STR_NETWORK_LANG_BULGARIAN :Bolgarski
+STR_NETWORK_LANG_CHINESE :Kitajski
+STR_NETWORK_LANG_CZECH :Češki
+STR_NETWORK_LANG_DANISH :Danski
+STR_NETWORK_LANG_DUTCH :Nizozemski
+STR_NETWORK_LANG_ESPERANTO :Esperanto
+STR_NETWORK_LANG_FINNISH :Finski
+STR_NETWORK_LANG_HUNGARIAN :Madžarski
+STR_NETWORK_LANG_ICELANDIC :Islandski
+STR_NETWORK_LANG_ITALIAN :Italijanski
+STR_NETWORK_LANG_JAPANESE :Japonski
+STR_NETWORK_LANG_KOREAN :Korejski
+STR_NETWORK_LANG_LITHUANIAN :Litvijski
+STR_NETWORK_LANG_NORWEGIAN :Norveški
+STR_NETWORK_LANG_POLISH :Poljski
+STR_NETWORK_LANG_PORTUGUESE :Portugalski
+STR_NETWORK_LANG_ROMANIAN :Romunski
+STR_NETWORK_LANG_RUSSIAN :Ruski
+STR_NETWORK_LANG_SLOVAK :Slovaški
+STR_NETWORK_LANG_SLOVENIAN :Slovenski
+STR_NETWORK_LANG_SPANISH :Španski
+STR_NETWORK_LANG_SWEDISH :Švedski
+STR_NETWORK_LANG_TURKISH :Turški
+STR_NETWORK_LANG_UKRAINIAN :Ukrajinski
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Seje večigralskih iger
@@ -1627,6 +1657,13 @@
STR_RAILROAD_TRACK_WITH_PRESIGNALS :Železniški tiri s pred-signali
STR_RAILROAD_TRACK_WITH_EXITSIGNALS :Železniški tiri z izhodnimi signali
STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Železniški tiri s kombiniranimi signali
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS :Tiri z normalnimi in uvodnimi signali
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS :Tiri z normalnimi in izhodnimi signali
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS :Tiri z normalnimi in kombiniranimi signali
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS :Tiri z uvodnimi in izhodnimi signali
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS :Tiri z uvodnimi in kombiniranimi signali
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS :Tiri z izhodnimi in kombiniranimi signali
+STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Najprej moraš odstraniti železniško postajo
@@ -1634,22 +1671,39 @@
STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Najprej odstrani cesto
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Cestna dela napredujejo
STR_1802_ROAD_CONSTRUCTION :{WHITE}Cestne gradnje
+STR_1802_TRAMWAY_CONSTRUCTION :{WHITE}Gradnja tramvaj proge
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Izberi cestni most
+STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... enosmerne poti ne morejo imeti odcepov
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Nemogoča gradnja ceste ...
+STR_1804_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Nemogoča gradnja tramvaja tukaj...
STR_1805_CAN_T_REMOVE_ROAD_FROM :{WHITE}Nemogoča odstranitev ceste ...
+STR_1805_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Nemogoče odstraniti tramvaja od tukaj...
STR_1806_ROAD_DEPOT_ORIENTATION :{WHITE}Smer garaže
+STR_1806_TRAM_DEPOT_ORIENTATION :{WHITE}Orijentacija tramvaj garaže
STR_1807_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Nemogoča gradnja garaže tukaj ...
+STR_1807_CAN_T_BUILD_TRAM_VEHICLE :{WHITE}Nemogoča gradnja tramvaj garaže tukaj...
STR_1808_CAN_T_BUILD_BUS_STATION :{WHITE}Nemogoča gradnja avtobusne postaje ...
STR_1809_CAN_T_BUILD_TRUCK_STATION :{WHITE}Nemogoča gradnja tovorne postaje tukaj ...
+STR_1808_CAN_T_BUILD_PASSENGER_TRAM_STATION :{WHITE}Nemogoča gradnja potniške tramvaj postaje...
+STR_1809_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Nemogoča gradnja tovorne tramvaj postaje...
STR_180A_ROAD_CONSTRUCTION :Gradnja ceste
+STR_180A_TRAMWAY_CONSTRUCTION :Gradnja tramvaj proge
STR_180B_BUILD_ROAD_SECTION :{BLACK}Zgradi cestni odsek
+STR_180B_BUILD_TRAMWAY_SECTION :{BLACK}Zgradi odsek proge
STR_180C_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Zgradi garažo (za izdelavo in servis vozil)
+STR_180C_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Zgradi tramvaj garažo (za izdelavo in servisiranje vozil)
STR_180D_BUILD_BUS_STATION :{BLACK}Zgradi avtobusno postajo
STR_180E_BUILD_TRUCK_LOADING_BAY :{BLACK}Zgradi tovorno postajo
+STR_180D_BUILD_PASSENGER_TRAM_STATION :{BLACK}Zgradi potniško tramvaj postajo
+STR_180E_BUILD_CARGO_TRAM_STATION :{BLACK}Zgradi tovorno tramvaj postajo
STR_180F_BUILD_ROAD_BRIDGE :{BLACK}Zgradi cestni most
+STR_180F_BUILD_TRAMWAY_BRIDGE :{BLACK}Zgradi most za tramvaj
STR_1810_BUILD_ROAD_TUNNEL :{BLACK}Zgradi cestni predor
+STR_1810_BUILD_TRAMWAY_TUNNEL :{BLACK}Zgradi predor za tramvaj
STR_1811_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Preklopi gradnja/rušenje cestnih konstrukcij
+STR_1811_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Preklop gradi/odstrani za tramvaj progo
STR_1813_SELECT_ROAD_VEHICLE_DEPOT :{BLACK}Izberi smer garaže
+STR_1813_SELECT_TRAM_VEHICLE_DEPOT :{BLACK}Izberi orijentacijo tramvaj garaže
STR_1814_ROAD :Cesta
STR_1815_ROAD_WITH_STREETLIGHTS :Cesta z razsvetljavo
STR_1816_TREE_LINED_ROAD :Drevored
@@ -1657,6 +1711,8 @@
STR_1818_ROAD_RAIL_LEVEL_CROSSING :Cestno/železniško križišče
STR_CAN_T_REMOVE_BUS_STATION :{WHITE}Ni mogoča odstranitev avtobusne postaje...
STR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Ni mogoča odstranitev tovorne postaje...
+STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Nemogoča odstranitev potniške tramvaj postaje...
+STR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Nemogoča odstranitev tovorne tramvaj postaje...
##id 0x2000
STR_2000_TOWNS :{WHITE}Mesta
@@ -1822,8 +1878,12 @@
STR_3041_NOW_ACCEPTS_AND :{WHITE}{STATION} sedaj sprejema {STRING.t} in {STRING.t}
STR_3042_BUS_STATION_ORIENTATION :{WHITE}Orientacija avtobusne postaje
STR_3043_TRUCK_STATION_ORIENT :{WHITE}Orientacija tovorne postaje
+STR_3042_PASSENGER_TRAM_STATION_ORIENTATION :{WHITE}Orijentacija potniške postaje
+STR_3043_CARGO_TRAM_STATION_ORIENT :{WHITE}Orijentacija tovorne postaje
STR_3046_MUST_DEMOLISH_BUS_STATION :{WHITE}Najprej moraš porušiti avtobusno postajo
STR_3047_MUST_DEMOLISH_TRUCK_STATION :{WHITE}Najprej moraš porušiti tovorno postajo
+STR_3046_MUST_DEMOLISH_PASSENGER_TRAM_STATION :{WHITE}Najprej poruši potniško tramvaj postajo
+STR_3047_MUST_DEMOLISH_CARGO_TRAM_STATION :{WHITE}Najprej poruši tovorno tramvaj postajo
STR_3048_STATIONS :{WHITE}{COMPANY} - {COMMA} Postaj{P a i e ""}
STR_3049_0 :{YELLOW}{STATION} {STATIONFEATURES}
STR_304A_NONE :{YELLOW}- Brez -
@@ -1835,6 +1895,8 @@
STR_3050_SELECT_LENGTH_OF_RAILROAD :{BLACK}Izberi dolžino železniške postaje
STR_3051_SELECT_BUS_STATION_ORIENTATION :{BLACK}Izberi orientacijo železniške postaje
STR_3052_SELECT_TRUCK_LOADING_BAY :{BLACK}Izberi orientacijo tovorne postaje
+STR_3051_SELECT_PASSENGER_TRAM_STATION_ORIENTATION :{BLACK}Izbor orijentacije potniške tramvaj postaje
+STR_3052_SELECT_CARGO_TRAM_STATION_ORIENTATION :{BLACK}Izbor orijentacije tovorne tramvaj postaje
STR_3053_CENTER_MAIN_VIEW_ON_STATION :{BLACK}Pogled na postajo
STR_3054_SHOW_STATION_RATINGS :{BLACK}Prikaz ocen postaje
STR_3055_CHANGE_NAME_OF_STATION :{BLACK}Spremeni ime postaje
@@ -2092,6 +2154,7 @@
STR_SV_STNAME_HELIPORT :{STRING} Pristajališče
STR_SV_STNAME_FOREST :{STRING} Gozd
+STR_SV_GROUP_NAME :{GROUP}
############ end of savegame specific region!
@@ -2321,6 +2384,8 @@
STR_LIVERY_HELICOPTER :Helikopter
STR_LIVERY_SMALL_PLANE :majhno letalo
STR_LIVERY_LARGE_PLANE :Veliko letalo
+STR_LIVERY_PASSENGER_TRAM :Potniški tramvaj
+STR_LIVERY_FREIGHT_TRAM :Tovorni tramvaj
STR_LIVERY_GENERAL_TIP :{BLACK}Prikaz glavnih barvnih shem
STR_LIVERY_TRAIN_TIP :{BLACK}Prikaz barvnih shem vlakov
@@ -2678,6 +2743,8 @@
STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}Ni mogoče vstaviti nov ukaz ...
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Ni mogoče izbrisati ukaza ...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Ni mogoče spreminjati ukaza ...
+STR_CAN_T_SKIP_ORDER :{WHITE}Nemogoč preskok trenutnega ukaza...
+STR_CAN_T_SKIP_TO_ORDER :{WHITE}Nemogoč preskok na izbran ukaz...
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Ni mogoče premakniti vozila ...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}Zadnja lokomotiva vedno sledi prvi
STR_8838_N_A :Ni na voljo{SKIP}
@@ -2709,7 +2776,7 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Prikaži zmogljivosti vsakega vagona
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Prikaži polno zmogljivost vlaka, razdeli glede na tip tovora
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Seznam navodil - klikni na ukaz, da ga izbereš. CTRL+klik prikaže postajo
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Preskoči trenuten ukaz in izvrši naslednjega
+STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Preskoči trenutni ukaz in začni naslednjega. CTRL + klik preskoči na izbran ukaz
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Zbriši izbran ukaz
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Označi izbran ukaz kot brez-postanka
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Vstavi nov ukaz pred izbranega ali pa ga dodaj na koncu seznama
@@ -2794,6 +2861,8 @@
STR_902E_NAME_ROAD_VEHICLE :{BLACK}Poimenuj cestno vozilo
STR_902F_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Prebivalci praznujejo . . .{}Prihod prvega avtobusa na postajo {STATION}!
STR_9030_CITIZENS_CELEBRATE_FIRST :{BLACK}{BIGFONT}Prebivalci praznujejo . . .{}Prihod prvega tovornjaka na postajo {STATION}!
+STR_902F_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Meščani proslavljajo . . .{}Prvi potniški tramvaj je prispel na postajo {STATION}!
+STR_9030_CITIZENS_CELEBRATE_FIRST_TRAM :{BLACK}{BIGFONT}Proslava meščanov . . .{}Prvi tovorni tramvaj je pripeljal na postajo {STATION}!
STR_9031_ROAD_VEHICLE_CRASH_DRIVER :{BLACK}{BIGFONT}Prometna nesreča!{}Voznik umrl v plamenih po trku z vlakom.
STR_9032_ROAD_VEHICLE_CRASH_DIE :{BLACK}{BIGFONT}Prometna nesreča!{}{COMMA} mrt{P ev va vi vih} v plamenih ob trku z vlakom.
STR_9033_CAN_T_MAKE_VEHICLE_TURN :{WHITE}Ni mogoče obrniti smeri vozila ...
@@ -3078,6 +3147,7 @@
### depot strings
STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Pripravljaš se na prodajo vseh vozil v garaži. Zagotovo?
+STR_DEPOT_WRONG_DEPOT_TYPE :Napačna vrsta garaže
STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TIP :{BLACK}Prodaj vse vlake v garaži
STR_DEPOT_SELL_ALL_BUTTON_ROADVEH_TIP :{BLACK}Prodaj vsa vestna vozila v garaži
@@ -3270,9 +3340,39 @@
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Prozoren ali navaden pogled struktur kot so antene, svetilniki...
##### Mass Order
-
+STR_GROUP_NAME_FORMAT :Skupina {COMMA}
+STR_GROUP_TINY_NAME :{TINYFONT}{GROUP}
+STR_GROUP_ALL_TRAINS :Vsi vlaki
+STR_GROUP_ALL_ROADS :Vsa cestna vozila
+STR_GROUP_ALL_SHIPS :Vse ladje
+STR_GROUP_ALL_AIRCRAFTS :Vsa letala
+STR_GROUP_TINY_NUM :{TINYFONT}{COMMA}
+STR_GROUP_ADD_SHARED_VEHICLE :Vsa izmenljiva vozila
+STR_GROUP_REMOVE_ALL_VEHICLES :Odstrani vsa vozila
+STR_GROUP_TRAINS_CAPTION :{WHITE}{GROUP} - {COMMA} Vlak{P "" a i ov}
+STR_GROUP_ROADVEH_CAPTION :{WHITE}{GROUP} - {COMMA} Cestn{P o i a ih} Vozil{P o i a ""}
+STR_GROUP_SHIPS_CAPTION :{WHITE}{GROUP} - {COMMA} Lad{P ja ji je ij}
+STR_GROUP_AIRCRAFTS_CAPTION :{WHITE}{GROUP} - {COMMA} Letal{P o i a ""}
+STR_GROUP_RENAME_CAPTION :{BLACK}Preimenuj eno skupino
+STR_GROUP_REPLACE_CAPTION :{WHITE}Zamenjaj Vozila v "{GROUP}"
+STR_GROUP_CAN_T_CREATE :{WHITE}Nemogoče ustvariti skupino...
+STR_GROUP_CAN_T_DELETE :{WHITE}Nemogoče brisanje te skupine...
+STR_GROUP_CAN_T_RENAME :{WHITE}Nemogoče preimenovanje skupine...
+STR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Nemogoča odstranitev vseh vozil iz te skupine...
+STR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Nemogoče dodati vozilo v to skupino...
+STR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Nemogoče dodati izmenljivo vozilo v to skupino...
+STR_GROUPS_CLICK_ON_GROUP_FOR_TIP :{BLACK}Skupine - Klikni na skupino za seznam vseh vozil v skupini
+STR_GROUP_CREATE_TIP :{BLACK}Klikni za ustvarit skupino
+STR_GROUP_DELETE_TIP :{BLACK}Izbriši izbrano skupino
+STR_GROUP_RENAME_TIP :{BLACK}Preimenuj izbrano skupino
+STR_GROUP_REPLACE_PROTECTION_TIP :{BLACK}Klikni za zaščito skupine pred splošno samoobnovo
+
+STR_PROFIT_GOOD_THIS_YEAR_GOOD_LAST_YEAR :{TINYFONT}{BLACK}Dobiček letos: {GREEN}{CURRENCY} {BLACK}(lani: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_GOOD_LAST_YEAR :{TINYFONT}{BLACK}Dobiček letos: {RED}{CURRENCY} {BLACK}(lani: {GREEN}{CURRENCY}{BLACK})
+STR_PROFIT_GOOD_THIS_YEAR_BAD_LAST_YEAR :{TINYFONT}{BLACK}Dobiček letos: {GREEN}{CURRENCY} {BLACK}(lani: {RED}{CURRENCY}{BLACK})
+STR_PROFIT_BAD_THIS_YEAR_BAD_LAST_YEAR :{TINYFONT}{BLACK}Dobiček letos: {RED}{CURRENCY} {BLACK}(lani: {RED}{CURRENCY}{BLACK})
########
--- a/src/lang/spanish.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/spanish.txt Tue Jun 12 18:02:11 2007 +0000
@@ -2631,7 +2631,6 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Mostrar capacidades de cada vehículo
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Mostrar capacidad total del tren, dividida por tipo de carga
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Lista de órdenes - click en orden para resaltarla
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Saltar orden actual y comenzar la siguiente
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Borrar orden resaltada
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Hacer la orden resaltada sin parada
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Añadir nueva orden antes de la orden resaltada, o añadirla al final de la lista
--- a/src/lang/swedish.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/swedish.txt Tue Jun 12 18:02:11 2007 +0000
@@ -2669,7 +2669,6 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Visa kapaciteter för varje fordon
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Visa tågets totala kapacitet, separera för typ av gods
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Orderlista - klicka på order för att markera det
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Skippa nuvararande order och börja med nästa
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Ta bort markerad order
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Gör markerad order non-stop
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Infoga ny order före markerad order, eller lägg till i slutet av listan
--- a/src/lang/traditional_chinese.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/traditional_chinese.txt Tue Jun 12 18:02:11 2007 +0000
@@ -2659,7 +2659,6 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}顯示車輛的容量
STR_8852_SHOW_TOTAL_CARGO :{BLACK}顯示列車的總容量,照貨物分類
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}指令清單 - 點選指令可選擇。按住 CTRL 點選可跳到車站位置
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}跳過目前指令,繼續下個指令
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}刪除選定指令
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}使選定的指令中途不停
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}在選定的指令前插入新指令,或在最後新增指令
--- a/src/lang/turkish.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/turkish.txt Tue Jun 12 18:02:11 2007 +0000
@@ -2649,7 +2649,6 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Her aracın kapasitesi
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Trenin kargo türlerine ayrilmis toplam kapasitesini göster
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Talimat listesi - seçmek için komutu tıklayın. CTRL + tıklama istasyona kaydırir
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Şimdiki talimatı atlayıp sıradakine geç
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Seçili talimatı sil
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Seçili talimatı durmadan yap
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Seçili talimatın önüne ya da listenin sonuna komut ekle
--- a/src/lang/ukrainian.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/ukrainian.txt Tue Jun 12 18:02:11 2007 +0000
@@ -1523,6 +1523,31 @@
STR_NETWORK_LANG_ENGLISH :Англійська
STR_NETWORK_LANG_GERMAN :Німецька
STR_NETWORK_LANG_FRENCH :Французька
+STR_NETWORK_LANG_BRAZILIAN :Бразильська
+STR_NETWORK_LANG_BULGARIAN :Болгарська
+STR_NETWORK_LANG_CHINESE :Китайська
+STR_NETWORK_LANG_CZECH :Чеська
+STR_NETWORK_LANG_DANISH :Датська
+STR_NETWORK_LANG_DUTCH :Німецька
+STR_NETWORK_LANG_ESPERANTO :Есперанто
+STR_NETWORK_LANG_FINNISH :Фінська
+STR_NETWORK_LANG_HUNGARIAN :Угорська
+STR_NETWORK_LANG_ICELANDIC :Ісландська
+STR_NETWORK_LANG_ITALIAN :Італійська
+STR_NETWORK_LANG_JAPANESE :Японська
+STR_NETWORK_LANG_KOREAN :Корейська
+STR_NETWORK_LANG_LITHUANIAN :Литовська
+STR_NETWORK_LANG_NORWEGIAN :Норвезька
+STR_NETWORK_LANG_POLISH :Польськая
+STR_NETWORK_LANG_PORTUGUESE :Португальська
+STR_NETWORK_LANG_ROMANIAN :Румунська
+STR_NETWORK_LANG_RUSSIAN :Російська
+STR_NETWORK_LANG_SLOVAK :Словацька
+STR_NETWORK_LANG_SLOVENIAN :Словенська
+STR_NETWORK_LANG_SPANISH :Іспанська
+STR_NETWORK_LANG_SWEDISH :Шведська
+STR_NETWORK_LANG_TURKISH :Турецька
+STR_NETWORK_LANG_UKRAINIAN :Українська
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Multiplayer game lobby
@@ -1716,6 +1741,12 @@
STR_RAILROAD_TRACK_WITH_PRESIGNALS :Колія з вхідними сигналами
STR_RAILROAD_TRACK_WITH_EXITSIGNALS :Колія з вихідними сигналами
STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Колія з комбінованими сигналами
+STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS :Залізнична колія зі звичайним та пре-сигналами
+STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS :Залізнична колія зі звичайним та вихід-сигналами
+STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS :Залізнична колія зі звичайним та комбо-сигналами
+STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS :Залізнична колія з пре- та вихід-сигналами
+STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS :Залізнична колія з пре- та комбо-сигналами
+STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS :Залізнична колія з вихід- та комбо-сигналами
STR_MUST_REMOVE_RAILWAY_STATION_FIRST :{WHITE}Спочатку потрібно знести залізничну станцію
@@ -2795,6 +2826,8 @@
STR_8833_CAN_T_INSERT_NEW_ORDER :{WHITE}Неможливо додати наказ...
STR_8834_CAN_T_DELETE_THIS_ORDER :{WHITE}Неможливо видалити наказ...
STR_8835_CAN_T_MODIFY_THIS_ORDER :{WHITE}Неможливо змінити наказ...
+STR_CAN_T_SKIP_ORDER :{WHITE}Не можна пропустити цей наказ...
+STR_CAN_T_SKIP_TO_ORDER :{WHITE}Не можна перейти до цього наказу...
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Неможливо перемістити транспорт...
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}задній потяг зажди слідує follow its front counterpart!!!
STR_8838_N_A :немає{SKIP}
@@ -2826,7 +2859,7 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Показати місткість кожного вагону
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Показати загальну місткість поїзда, розділену за типом вантажу
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Маршрутний лист - клікніть на завданні для його вибору. CTRL + клік показати станцію
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Пропустити це завдання, перейти до наступного
+STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Пропустити поточний наказ, і виконувати наступний. CTRL + клік переходить до вибраного наказу
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Видалити виділене завдання
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Не зупинятися на відміченій станції
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Вставити новий пункт перед відміченим або додати в кінець
--- a/src/lang/unfinished/afrikaans.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/unfinished/afrikaans.txt Tue Jun 12 18:02:11 2007 +0000
@@ -2473,7 +2473,6 @@
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Wys kapasiteite van elke voertuig
STR_8852_SHOW_TOTAL_CARGO :{BLACK}Wys totaale kapasitiet van trein, verdeel by vrag tipe
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Opdraglys - kliek op 'n opdrag om dit te beklemtoon. CTRL + kliek senter op stasie
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Sprong die huidige opdrag, en begin die volgende
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Uitwis die beklemtoonde opdrag
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Maak die beklemtoonde opdrag deurgaande
STR_8856_INSERT_A_NEW_ORDER_BEFORE :{BLACK}Invoeg 'n nuwe opdrag voor die beklemtoonde opdrag, of byvoeg na einde van lys
--- a/src/lang/unfinished/croatian.txt Fri Jun 01 20:54:09 2007 +0000
+++ b/src/lang/unfinished/croatian.txt Tue Jun 12 18:02:11 2007 +0000
@@ -4,6 +4,8 @@
##plural 6
##gender male female middle
+#
+
##id 0x0000
STR_NULL :
STR_0001_OFF_EDGE_OF_MAP :{WHITE}Izvan rubova karte
@@ -723,6 +725,7 @@
STR_028D_PLACE_LIGHTHOUSE :{BLACK}Postavi svjetionik
STR_028E_PLACE_TRANSMITTER :{BLACK}Postavi odašiljač
STR_028F_DEFINE_DESERT_AREA :{BLACK}Odredi pustinjsko područje.{}Pritisni i drži CTRL za uklanjanje
+STR_CREATE_LAKE :
STR_0290_DELETE :{BLACK}Obriši
STR_0291_DELETE_THIS_TOWN_COMPLETELY :{BLACK}Obriši ovaj grad u cjelosti
STR_0292_SAVE_SCENARIO :Spremi scenarij
@@ -797,10 +800,14 @@
STR_02DE_MAP_OF_WORLD :Karta svijeta
STR_EXTRA_VIEW_PORT :Dodatni pogled
STR_SIGN_LIST :Popis znakova
+STR_TRANSPARENCY_OPTIONS :Opcije prozirnosti
STR_02DF_TOWN_DIRECTORY :Direktorij gradova
STR_TOWN_POPULATION :{BLACK}Svjetska populacija: {COMMA}
STR_EXTRA_VIEW_PORT_TITLE :{WHITE}Pogled {COMMA}
STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN :{BLACK}Kopiraj u pogled
+STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT :{BLACK}Kopiraj lokaciju globalnog pogleda na 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 na globalni pogled
STR_02E0_CURRENCY_UNITS :{BLACK}Novčane jedinice
STR_02E1 :{BLACK}{SKIP}{STRING}
@@ -1024,7 +1031,9 @@
STR_CONFIG_PATCHES_BUILDXTRAIND :{LTBLUE}Dopusti izgadnju industrija koje proizvode sirovine: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MULTIPINDTOWN :{LTBLUE}Dopusti više sličnih industrija po gradu: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SAMEINDCLOSE :{LTBLUE}Moguće je graditi spojene industrije iste vrste: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LONGDATE :{LTBLUE}Uvijek prikaži dugi datum u statusnoj traci: {ORANGE}{STRING}
STR_CONFIG_PATCHES_SIGNALSIDE :{LTBLUE}Prikaži znakove na strani po kojoj se vozi: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SHOWFINANCES :{LTBLUE}Prikaži financijski prozor na kraju godine: {ORANGE}{STRING}
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Dozvoli potkupljivanje gradskih vlasti: {ORANGE}{STRING}
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Neujednačene stanice: {ORANGE}{STRING}
@@ -1044,7 +1053,9 @@
STR_CONFIG_PATCHES_INVISIBLE_TREES :{LTBLUE}Nevidljivo drveće (sa prozirnim građevinama): {ORANGE}{STRING}
STR_CONFIG_PATCHES_LAND_GENERATOR_ORIGINAL :Izvorno
+STR_CONFIG_PATCHES_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis
STR_CONFIG_PATCHES_OIL_REF_EDGE_DISTANCE :{LTBLUE}Maksimalna udaljenost Rafinerija nafte od ruba {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN :{LTBLUE}Grubost terena (samo TerraGenesis) : {ORANGE}{STRING}
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Vrlo glatko
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_SMOOTH :Glatko
STR_CONFIG_PATCHES_ROUGHNESS_OF_TERRAIN_ROUGH :Grubo
@@ -1059,8 +1070,16 @@
STR_CONFIG_PATCHES_STATION_SPREAD :{LTBLUE}Maksimalna raširenost stanice: {ORANGE}{STRING} {RED}Pozor: Visoka vrijednost usporuje igru
STR_CONFIG_PATCHES_SERVICEATHELIPAD :{LTBLUE}Automatski servisiraj helikoptere na heliodromima: {ORANGE}{STRING}
STR_CONFIG_PATCHES_LINK_TERRAFORM_TOOLBAR :{LTBLUE}Poveži alatnu traku za krajolik sa alatnim trakama za željeznicu/ceste/vodu/zračne luke: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_SCROLLING :{LTBLUE}Glatko skrolanje kroz mini pogled: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_LIVERIES_NONE :Ništa
STR_CONFIG_PATCHES_LIVERIES_OWN :Vlastita tvrtka
STR_CONFIG_PATCHES_LIVERIES_ALL :Sve tvrtke
+STR_CONFIG_PATCHES_SCROLLWHEEL_ZOOM :Zumiraj kartu
+STR_CONFIG_PATCHES_SCROLLWHEEL_SCROLL :Skrolaj kartom
+STR_CONFIG_PATCHES_SCROLLWHEEL_OFF :Isključeno
+STR_CONFIG_PATCHES_SCROLLWHEEL_MULTIPLIER :{LTBLUE}Brzina kotačića za skrolanje: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}Automatski pauziraj kad pokrećeš novu igru: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS :{LTBLUE}Koristi naprednu listu vozila: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Maksimalan broj vlakova po igraču: {ORANGE}{STRING}
STR_CONFIG_PATCHES_MAX_ROADVEH :{LTBLUE}Maximalan broj cestovnih vozila po igraču: {ORANGE}{STRING}
@@ -1083,16 +1102,32 @@
STR_CONFIG_PATCHES_SERVINT_AIRCRAFT_DISABLED :{LTBLUE}Pretpostavljeni period servisiranja aviona: {ORANGE}onemogućeno
STR_CONFIG_PATCHES_SERVINT_SHIPS :{LTBLUE}Pretpostavljeni period servisiranja brodova: {ORANGE}{STRING} dana/%
STR_CONFIG_PATCHES_SERVINT_SHIPS_DISABLED :{LTBLUE}Pretpostavljeni period servisiranja brodova: {ORANGE}onemogućeno
+STR_CONFIG_PATCHES_WAGONSPEEDLIMITS :{LTBLUE}Uključi ograničenje brzine za vagone: {ORANGE}{STRING}
STR_CONFIG_PATCHES_DISABLE_ELRAILS :{LTBLUE}Onemogući električne tračnice: {ORANGE}{STRING}
STR_CONFIG_PATCHES_COLORED_NEWS_YEAR :{LTBLUE}Vijesti u boji pojavljuju se: {ORANGE}{STRING}
STR_CONFIG_PATCHES_STARTING_YEAR :{LTBLUE}Početna godina: {ORANGE}{STRING}
STR_CONFIG_PATCHES_ENDING_YEAR :{LTBLUE}Završna godina: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Uključi tečnu ekonomiju (više manjih izazova)
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Dopusti kupovanje udjela drugih tvrtki
+STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Automatski izgradi semafore prije: {ORANGE}{STRING}
+
+STR_CONFIG_PATCHES_TOWN_LAYOUT_NO_ROADS :nema više cesta
+STR_CONFIG_PATCHES_TOWN_LAYOUT_DEFAULT :inicijalno
+STR_CONFIG_PATCHES_TOWN_LAYOUT_BETTER_ROADS :bolje ceste
+STR_CONFIG_PATCHES_TOWN_LAYOUT_2X2_GRID :2x2 mreža
+STR_CONFIG_PATCHES_TOWN_LAYOUT_3X3_GRID :3x3 mreža
+
STR_CONFIG_PATCHES_TOOLBAR_POS :{LTBLUE}Položaj glavne alatne trake: {ORANGE}{STRING}
STR_CONFIG_PATCHES_TOOLBAR_POS_LEFT :Lijevo
STR_CONFIG_PATCHES_TOOLBAR_POS_CENTER :Sredina
STR_CONFIG_PATCHES_TOOLBAR_POS_RIGHT :Desno
+STR_CONFIG_PATCHES_TOWN_GROWTH :{LTBLUE}Brzina rasta gradova: {ORANGE}{STRING}
+STR_CONFIG_PATCHES_TOWN_GROWTH_NONE :Ništa
+STR_CONFIG_PATCHES_TOWN_GROWTH_SLOW :Sporo
+STR_CONFIG_PATCHES_TOWN_GROWTH_NORMAL :Normalno
+STR_CONFIG_PATCHES_TOWN_GROWTH_FAST :Brzo
+STR_CONFIG_PATCHES_TOWN_GROWTH_VERY_FAST :Vrlo brzo
STR_CONFIG_PATCHES_GUI :{BLACK}Sučelje
STR_CONFIG_PATCHES_CONSTRUCTION :{BLACK}Izgradnja
@@ -1130,6 +1165,8 @@
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Ide prema {WAYPOINT}
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Ide prema {WAYPOINT}, {VELOCITY}
+STR_GO_TO_WAYPOINT :Idi preko {WAYPOINT}
+STR_GO_NON_STOP_TO_WAYPOINT :Idi non-stop preko {WAYPOINT}
STR_WAYPOINTNAME_CITY : Čvorište{TOWN}
STR_WAYPOINTNAME_CITY_SERIAL :Čvorište {TOWN} #{COMMA}
@@ -1168,6 +1205,7 @@
STR_TREES_RANDOM_TYPE_TIP :{BLACK}Stavi drveće nasumičnog tipa
STR_CANT_BUILD_CANALS :{WHITE}Ovdje ne možeš graditi kanale...
+STR_BUILD_CANALS_TIP :{BLACK}Izgradi kanale.
STR_LANDINFO_CANAL :Kanal
@@ -1321,6 +1359,31 @@
STR_NETWORK_LANG_ENGLISH :Engleski
STR_NETWORK_LANG_GERMAN :Njemački
STR_NETWORK_LANG_FRENCH :Francuski
+STR_NETWORK_LANG_BRAZILIAN :Brazilski
+STR_NETWORK_LANG_BULGARIAN :Bugarski
+STR_NETWORK_LANG_CHINESE :Kineski
+STR_NETWORK_LANG_CZECH :Češki
+STR_NETWORK_LANG_DANISH :Danski
+STR_NETWORK_LANG_DUTCH :Nizozemski
+STR_NETWORK_LANG_ESPERANTO :Esperanto
+STR_NETWORK_LANG_FINNISH :Finski
+STR_NETWORK_LANG_HUNGARIAN :Mađarski
+STR_NETWORK_LANG_ICELANDIC :Islandski
+STR_NETWORK_LANG_ITALIAN :Talijanski
+STR_NETWORK_LANG_JAPANESE :Japanski
+STR_NETWORK_LANG_KOREAN :Korejski
+STR_NETWORK_LANG_LITHUANIAN :Litavski
+STR_NETWORK_LANG_NORWEGIAN :Norveški
+STR_NETWORK_LANG_POLISH :Poljski
+STR_NETWORK_LANG_PORTUGUESE :Portugalski
+STR_NETWORK_LANG_ROMANIAN :Rumunjski
+STR_NETWORK_LANG_RUSSIAN :Ruski
+STR_NETWORK_LANG_SLOVAK :Slovački
+STR_NETWORK_LANG_SLOVENIAN :Slovenski
+STR_NETWORK_LANG_SPANISH :Španjolski
+STR_NETWORK_LANG_SWEDISH :Švedski
+STR_NETWORK_LANG_TURKISH :Turski
+STR_NETWORK_LANG_UKRAINIAN :Ukrajinski
############ End of leave-in-this-order
STR_NETWORK_GAME_LOBBY :{WHITE}Predvorje multiplayer igre
@@ -1939,6 +2002,7 @@
STR_SV_STNAME_HELIPORT :{STRING} Heliodrom
STR_SV_STNAME_FOREST :{STRING} Šuma
+
############ end of savegame specific region!
##id 0x6800
@@ -2415,7 +2479,7 @@
STR_884D_INCREASE_SERVICING_INTERVAL :{BLACK}Povećaj servisni interval
STR_884E_DECREASE_SERVICING_INTERVAL :{BLACK}Smanji servisni interval
STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED :{BLACK}Pokaži detalje prevoženog tereta
-STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Preskoči trenutnu naredbu i počni sa sljedećom
+STR_8853_SKIP_THE_CURRENT_ORDER :
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Obriši označenu naredbu
STR_SERVICE_HINT :{BLACK}Preskoči ovu narudžbu osim ako servis nije potreban
STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER :{BLACK}Trošak: {CURRENCY} Težina: {WEIGHT_S}{}Brzina: {VELOCITY} Snaga: {POWER}{}Troškovi održavanja: {CURRENCY}/god{}Kapacitet: {CARGO}
@@ -2909,3 +2973,12 @@
########
STR_FEEDER_CARGO_VALUE :{BLACK}Prebaci novac: {LTBLUE}{CURRENCY}
+
+
+##### Mass Order
+
+
+
+
+
+########
--- a/src/main_gui.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/main_gui.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -58,6 +58,21 @@
extern bool GenerateTowns();
+void CcGiveMoney(bool success, TileIndex tile, uint32 p1, uint32 p2)
+{
+ if (!success) return;
+
+ char msg[20];
+ /* Inform the player of this action */
+ snprintf(msg, sizeof(msg), "%d", p1);
+
+ if (!_network_server) {
+ SEND_COMMAND(PACKET_CLIENT_CHAT)(NETWORK_ACTION_GIVE_MONEY, DESTTYPE_TEAM, p2, msg);
+ } else {
+ NetworkServer_HandleChat(NETWORK_ACTION_GIVE_MONEY, DESTTYPE_TEAM, p2, msg, NETWORK_SERVER_INDEX);
+ }
+}
+
void HandleOnEditText(const char *str)
{
int id = _rename_id;
@@ -75,21 +90,11 @@
case 3: { // Give money, you can only give money in excess of loan
const Player *p = GetPlayer(_current_player);
int32 money = min(p->money64 - p->current_loan, atoi(str) / _currency->rate);
- char msg[20];
money = clamp(money, 0, 20000000); // Clamp between 20 million and 0
/* Give 'id' the money, and substract it from ourself */
- if (!DoCommandP(0, money, id, NULL, CMD_GIVE_MONEY | CMD_MSG(STR_INSUFFICIENT_FUNDS))) break;
-
- /* Inform the player of this action */
- snprintf(msg, sizeof(msg), "%d", money);
-
- if (!_network_server) {
- SEND_COMMAND(PACKET_CLIENT_CHAT)(NETWORK_ACTION_GIVE_MONEY, DESTTYPE_TEAM, id, msg);
- } else {
- NetworkServer_HandleChat(NETWORK_ACTION_GIVE_MONEY, DESTTYPE_TEAM, id, msg, NETWORK_SERVER_INDEX);
- }
+ DoCommandP(0, money, id, CcGiveMoney, CMD_GIVE_MONEY | CMD_MSG(STR_INSUFFICIENT_FUNDS));
} break;
#endif /* ENABLE_NETWORK */
default: NOT_REACHED();
--- a/src/network/core/config.h Fri Jun 01 20:54:09 2007 +0000
+++ b/src/network/core/config.h Tue Jun 12 18:02:11 2007 +0000
@@ -46,7 +46,7 @@
*/
NETWORK_MAX_GRF_COUNT = 55,
- NETWORK_NUM_LANGUAGES = 4, ///< Number of known languages (to the network protocol) + 1 for 'any'.
+ NETWORK_NUM_LANGUAGES = 29, ///< Number of known languages (to the network protocol) + 1 for 'any'.
/**
* The number of landscapes in OpenTTD.
* This number must be equal to NUM_LANDSCAPE, but as this number is used
--- a/src/network/network.h Fri Jun 01 20:54:09 2007 +0000
+++ b/src/network/network.h Tue Jun 12 18:02:11 2007 +0000
@@ -76,12 +76,38 @@
NETWORK_JOIN_STATUS_GETTING_COMPANY_INFO,
};
-// language ids for server_lang and client_lang
+/* Language ids for server_lang and client_lang. Do NOT modify the order. */
enum NetworkLanguage {
- NETLANG_ANY = 0,
- NETLANG_ENGLISH = 1,
- NETLANG_GERMAN = 2,
- NETLANG_FRENCH = 3,
+ NETLANG_ANY = 0,
+ NETLANG_ENGLISH,
+ NETLANG_GERMAN,
+ NETLANG_FRENCH,
+ NETLANG_BRAZILIAN,
+ NETLANG_BULGARIAN,
+ NETLANG_CHINESE,
+ NETLANG_CZECH,
+ NETLANG_DANISH,
+ NETLANG_DUTCH,
+ NETLANG_ESPERANTO,
+ NETLANG_FINNISH,
+ NETLANG_HUNGARIAN,
+ NETLANG_ICELANDIC,
+ NETLANG_ITALIAN,
+ NETLANG_JAPANESE,
+ NETLANG_KOREAN,
+ NETLANG_LITHUANIAN,
+ NETLANG_NORWEGIAN,
+ NETLANG_POLISH,
+ NETLANG_PORTUGUESE,
+ NETLANG_ROMANIAN,
+ NETLANG_RUSSIAN,
+ NETLANG_SLOVAK,
+ NETLANG_SLOVENIAN,
+ NETLANG_SPANISH,
+ NETLANG_SWEDISH,
+ NETLANG_TURKISH,
+ NETLANG_UKRAINIAN,
+ NETLANG_COUNT
};
VARDEF NetworkGameInfo _network_game_info;
--- a/src/network/network_data.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/network/network_data.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -30,65 +30,61 @@
// Prepare a DoCommand to be send over the network
void NetworkSend_Command(TileIndex tile, uint32 p1, uint32 p2, uint32 cmd, CommandCallback *callback)
{
- CommandPacket *c = MallocT<CommandPacket>(1);
- byte temp_callback;
+ CommandPacket c;
- c->player = _local_player;
- c->next = NULL;
- c->tile = tile;
- c->p1 = p1;
- c->p2 = p2;
- c->cmd = cmd;
- c->callback = 0;
+ c.player = _local_player;
+ c.next = NULL;
+ c.tile = tile;
+ c.p1 = p1;
+ c.p2 = p2;
+ c.cmd = cmd;
- temp_callback = 0;
+ c.callback = 0;
+ while (c.callback < _callback_table_count && _callback_table[c.callback] != callback) {
+ c.callback++;
+ }
- while (temp_callback < _callback_table_count && _callback_table[temp_callback] != callback)
- temp_callback++;
- if (temp_callback == _callback_table_count) {
+ if (c.callback == _callback_table_count) {
DEBUG(net, 0, "Unknown callback. (Pointer: %p) No callback sent", callback);
- temp_callback = 0; /* _callback_table[0] == NULL */
+ c.callback = 0; // _callback_table[0] == NULL
}
+ ttd_strlcpy(c.text, (_cmd_text != NULL) ? _cmd_text : "", lengthof(c.text));
+
if (_network_server) {
- // We are the server, so set the command to be executed next possible frame
- c->frame = _frame_counter_max + 1;
- } else {
- c->frame = 0; // The client can't tell which frame, so just make it 0
- }
-
- ttd_strlcpy(c->text, (_cmd_text != NULL) ? _cmd_text : "", lengthof(c->text));
+ /* If we are the server, we queue the command in our 'special' queue.
+ * In theory, we could execute the command right away, but then the
+ * client on the server can do everything 1 tick faster than others.
+ * So to keep the game fair, we delay the command with 1 tick
+ * which gives about the same speed as most clients.
+ */
+ c.frame = _frame_counter_max + 1;
- if (_network_server) {
- // If we are the server, we queue the command in our 'special' queue.
- // In theory, we could execute the command right away, but then the
- // client on the server can do everything 1 tick faster than others.
- // So to keep the game fair, we delay the command with 1 tick
- // which gives about the same speed as most clients.
- NetworkTCPSocketHandler *cs;
-
- // And we queue it for delivery to the clients
- FOR_ALL_CLIENTS(cs) {
- if (cs->status > STATUS_AUTH) NetworkAddCommandQueue(cs, c);
+ CommandPacket *new_cp = MallocT<CommandPacket>(1);
+ *new_cp = c;
+ if (_local_command_queue == NULL) {
+ _local_command_queue = new_cp;
+ } else {
+ /* Find last packet */
+ CommandPacket *cp = _local_command_queue;
+ while (cp->next != NULL) cp = cp->next;
+ cp->next = new_cp;
}
- // Only the server gets the callback, because clients should not get them
- c->callback = temp_callback;
- if (_local_command_queue == NULL) {
- _local_command_queue = c;
- } else {
- // Find last packet
- CommandPacket *cp = _local_command_queue;
- while (cp->next != NULL) cp = cp->next;
- cp->next = c;
+ /* Only the local client (in this case, the server) gets the callback */
+ c.callback = 0;
+ /* And we queue it for delivery to the clients */
+ NetworkTCPSocketHandler *cs;
+ FOR_ALL_CLIENTS(cs) {
+ if (cs->status > STATUS_AUTH) NetworkAddCommandQueue(cs, &c);
}
-
return;
}
- // Clients send their command to the server and forget all about the packet
- c->callback = temp_callback;
- SEND_COMMAND(PACKET_CLIENT_COMMAND)(c);
+ c.frame = 0; // The client can't tell which frame, so just make it 0
+
+ /* Clients send their command to the server and forget all about the packet */
+ SEND_COMMAND(PACKET_CLIENT_COMMAND)(&c);
}
// Execute a DoCommand we received from the network
--- a/src/network/network_gui.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/network/network_gui.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -85,13 +85,18 @@
INVALID_STRING_ID
};
-static const StringID _language_dropdown[] = {
- STR_NETWORK_LANG_ANY,
- STR_NETWORK_LANG_ENGLISH,
- STR_NETWORK_LANG_GERMAN,
- STR_NETWORK_LANG_FRENCH,
- INVALID_STRING_ID
-};
+static StringID _language_dropdown[NETLANG_COUNT + 1] = {STR_NULL};
+
+void SortNetworkLanguages() {
+ /* Init the strings */
+ if (_language_dropdown[0] == STR_NULL) {
+ for (int i = 0; i < NETLANG_COUNT; i++) _language_dropdown[i] = STR_NETWORK_LANG_ANY + i;
+ _language_dropdown[NETLANG_COUNT] = INVALID_STRING_ID;
+ }
+
+ /* Sort the strings (we don't move 'any' and the 'invalid' one) */
+ qsort(&_language_dropdown[1], NETLANG_COUNT - 1, sizeof(StringID), &StringIDSorter);
+}
enum {
NET_PRC__OFFSET_TOP_WIDGET = 54,
@@ -342,7 +347,7 @@
DrawString(x, y, STR_NETWORK_CLIENTS, 2);
y += 10;
- SetDParam(0, _language_dropdown[sel->info.server_lang]);
+ SetDParam(0, STR_NETWORK_LANG_ANY + sel->info.server_lang);
DrawString(x, y, STR_NETWORK_LANGUAGE, 2); // server language
y += 10;
@@ -609,7 +614,7 @@
SetDParam( 9, _players_dropdown[_network_game_info.clients_max]);
SetDParam(11, _players_dropdown[_network_game_info.companies_max]);
SetDParam(13, _players_dropdown[_network_game_info.spectators_max]);
- SetDParam(15, _language_dropdown[_network_game_info.server_lang]);
+ SetDParam(15, STR_NETWORK_LANG_ANY + _network_game_info.server_lang);
DrawWindowWidgets(w);
GfxFillRect(11, 63, 258, 215, 0xD7);
@@ -679,9 +684,17 @@
case 13: case 14: /* Number of Spectators */
ShowDropDownMenu(w, _players_dropdown, _network_game_info.spectators_max, 14, 0, 0);
break;
- case 15: case 16: /* Language */
- ShowDropDownMenu(w, _language_dropdown, _network_game_info.server_lang, 16, 0, 0);
+ case 15: case 16: { /* Language */
+ uint sel = 0;
+ for (uint i = 0; i < lengthof(_language_dropdown) - 1; i++) {
+ if (_language_dropdown[i] == STR_NETWORK_LANG_ANY + _network_game_info.server_lang) {
+ sel = i;
+ break;
+ }
+ }
+ ShowDropDownMenu(w, _language_dropdown, sel, 16, 0, 0);
break;
+ }
case 17: /* Start game */
_is_network_server = true;
@@ -715,7 +728,9 @@
case 10: _network_game_info.clients_max = e->we.dropdown.index; break;
case 12: _network_game_info.companies_max = e->we.dropdown.index; break;
case 14: _network_game_info.spectators_max = e->we.dropdown.index; break;
- case 16: _network_game_info.server_lang = e->we.dropdown.index; break;
+ case 16:
+ _network_game_info.server_lang = _language_dropdown[e->we.dropdown.index] - STR_NETWORK_LANG_ANY;
+ break;
}
SetWindowDirty(w);
--- a/src/network/network_server.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/network/network_server.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -832,8 +832,6 @@
const NetworkClientInfo *ci;
byte callback;
- CommandPacket *cp = MallocT<CommandPacket>(1);
-
// The client was never joined.. so this is impossible, right?
// Ignore the packet, give the client a warning, and close his connection
if (cs->status < STATUS_DONE_MAP || cs->has_quit) {
@@ -841,6 +839,7 @@
return;
}
+ CommandPacket *cp = MallocT<CommandPacket>(1);
cp->player = (Owner)p->Recv_uint8();
cp->cmd = p->Recv_uint32();
cp->p1 = p->Recv_uint32();
@@ -850,7 +849,10 @@
callback = p->Recv_uint8();
- if (cs->has_quit) return;
+ if (cs->has_quit) {
+ free(cp);
+ return;
+ }
ci = DEREF_CLIENT_INFO(cs);
@@ -858,11 +860,13 @@
if (!IsValidCommand(cp->cmd)) {
IConsolePrintF(_icolour_err, "WARNING: invalid command from client %d (IP: %s).", ci->client_index, GetPlayerIP(ci));
SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_NOT_EXPECTED);
+ free(cp);
return;
}
if (!CheckCommandFlags(cp, ci)) {
SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_KICKED);
+ free(cp);
return;
}
@@ -874,6 +878,7 @@
IConsolePrintF(_icolour_err, "WARNING: player %d (IP: %s) tried to execute a command as player %d, kicking...",
ci->client_playas + 1, GetPlayerIP(ci), cp->player + 1);
SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_PLAYER_MISMATCH);
+ free(cp);
return;
}
@@ -885,6 +890,7 @@
if (cp->cmd == CMD_PLAYER_CTRL) {
if (cp->p1 != 0) {
SEND_COMMAND(PACKET_SERVER_ERROR)(cs, NETWORK_ERROR_CHEATER);
+ free(cp);
return;
}
--- a/src/newgrf.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/newgrf.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -128,6 +128,9 @@
/* Contains the GRF ID of the owner of a vehicle if it has been reserved */
static uint32 _grm_engines[TOTAL_NUM_ENGINES];
+/* Contains the GRF ID of the owner of a cargo if it has been reserved */
+static uint32 _grm_cargos[NUM_CARGO];
+
/** DEBUG() function dedicated to newGRF debugging messages
* Function is essentialy the same as DEBUG(grf, severity, ...) with the
* addition of file:line information when parsing grf files.
@@ -2501,7 +2504,7 @@
/* Don't tell me you don't love duplicated code! */
if (groupid >= _cur_grffile->spritegroups_count || _cur_grffile->spritegroups[groupid] == NULL) {
- grfmsg(1, "FeatureMapSpriteGroup: Spriteset 0x%04X out of range 0x%X or empty, skipping",
+ grfmsg(1, "VehicleMapSpriteGroup: Spriteset 0x%04X out of range 0x%X or empty, skipping",
groupid, _cur_grffile->spritegroups_count);
continue;
}
@@ -2911,7 +2914,7 @@
case 0x0B: // tramways
if (num != 113) {
- grfmsg(1, "GraphicsNews: Tramway graphics sprite count must be 113, skipping");
+ grfmsg(1, "GraphicsNew: Tramway graphics sprite count must be 113, skipping");
return;
}
replace = SPR_TRAMWAY_BASE;
@@ -2944,6 +2947,7 @@
default:
grfmsg(2, "GraphicsNew: Custom graphics (type 0x%02X) sprite block of length %u (unimplemented, ignoring)",
type, num);
+ _skip_sprites = num;
return;
}
@@ -2983,8 +2987,14 @@
case 0x83: // current climate, 0=temp, 1=arctic, 2=trop, 3=toyland
return _opt.landscape;
- case 0x84: // GRF loading stage
- return (_cur_stage > GLS_INIT) | ((_cur_stage == GLS_ACTIVATION) << 9);
+ case 0x84: { // GRF loading stage
+ uint32 res = 0;
+
+ if (_cur_stage > GLS_INIT) SETBIT(res, 0);
+ if (_cur_stage == GLS_RESERVE) SETBIT(res, 8);
+ if (_cur_stage == GLS_ACTIVATION) SETBIT(res, 9);
+ return res;
+ }
case 0x85: // TTDPatch flags, only for bit tests
if (cond_val == NULL) {
@@ -3267,7 +3277,7 @@
_skip_sprites = -1;
/* If an action 8 hasn't been encountered yet, disable the grf. */
- if (_cur_stage != GLS_RESERVE && _cur_grfconfig->status != GCS_ACTIVATED) _cur_grfconfig->status = GCS_DISABLED;
+ if (_cur_grfconfig->status != GCS_ACTIVATED) _cur_grfconfig->status = GCS_DISABLED;
}
}
@@ -3317,7 +3327,7 @@
_cur_grffile->grfid = grfid;
_cur_grffile->grf_version = version;
- _cur_grfconfig->status = _cur_stage < GLS_ACTIVATION ? GCS_INITIALISED : GCS_ACTIVATED;
+ _cur_grfconfig->status = _cur_stage < GLS_RESERVE ? GCS_INITIALISED : GCS_ACTIVATED;
/* Do swap the GRFID for displaying purposes since people expect that */
DEBUG(grf, 1, "GRFInfo: Loaded GRFv%d set %08lX - %s", version, BSWAP32(grfid), name);
@@ -3424,8 +3434,8 @@
/* Skip the error until the activation stage unless bit 7 of the severity
* is set. */
- if (!HASBIT(severity, 7) && _cur_stage < GLS_ACTIVATION) {
- grfmsg(7, "GRFLoadError: Skipping non-fatal GRFLoadError in stage 1");
+ if (!HASBIT(severity, 7) && _cur_stage == GLS_INIT) {
+ grfmsg(7, "GRFLoadError: Skipping non-fatal GRFLoadError in stage %d", _cur_stage);
return;
}
CLRBIT(severity, 7);
@@ -3541,6 +3551,54 @@
}
+static uint32 PerformGRM(uint32 *grm, uint16 num_ids, uint16 count, uint8 op, uint8 target, const char *type)
+{
+ uint start = 0;
+ uint size = 0;
+
+ if (op == 6) {
+ /* Return GRFID of set that reserved ID */
+ return grm[_cur_grffile->param[target]];
+ }
+
+ /* With an operation of 2 or 3, we want to reserve a specific block of IDs */
+ if (op == 2 || op == 3) start = _cur_grffile->param[target];
+
+ for (uint i = start; i < num_ids; i++) {
+ if (grm[i] == 0) {
+ size++;
+ } else {
+ if (op == 2 || op == 3) break;
+ start = i + 1;
+ size = 0;
+ }
+
+ if (size == count) break;
+ }
+
+ if (size == count) {
+ /* Got the slot... */
+ if (op == 0 || op == 3) {
+ grfmsg(2, "ParamSet: GRM: Reserving %d %s at %d", count, type, start);
+ for (uint i = 0; i < count; i++) grm[start + i] = _cur_grffile->grfid;
+ }
+ return start;
+ }
+
+ /* Unable to allocate */
+ if (op != 4 && op != 5) {
+ /* Deactivate GRF */
+ grfmsg(0, "ParamSet: GRM: Unable to allocate %d %s, deactivating", count, type);
+ _cur_grfconfig->status = GCS_DISABLED;
+ _skip_sprites = -1;
+ return UINT_MAX;
+ }
+
+ grfmsg(1, "ParamSet: GRM: Unable to allocate %d %s", count, type);
+ return UINT_MAX;
+}
+
+
/* Action 0x0D */
static void ParamSet(byte *buf, int len)
{
@@ -3611,55 +3669,9 @@
case 0x01: // Road Vehicles
case 0x02: // Ships
case 0x03: // Aircraft
- {
- uint start = 0;
- uint size = 0;
- uint shift = _vehshifts[feature];
-
- if (op == 6) {
- /* Return GRFID of set that reserved ID */
- src1 = _grm_engines[shift + _cur_grffile->param[target]];
- break;
- }
-
- /* With an operation of 2 or 3, we want to reserve a specific block of IDs */
- if (op == 2 || op == 3) start = _cur_grffile->param[target];
-
- for (uint i = start; i < _vehcounts[feature]; i++) {
- if (_grm_engines[shift + i] == 0) {
- size++;
- } else {
- if (op == 2 || op == 3) break;
- start = i + 1;
- size = 0;
- }
-
- if (size == count) break;
- }
-
- if (size == count) {
- /* Got the slot... */
- if (op == 0 || op == 3) {
- grfmsg(2, "ParamSet: GRM: Reserving %d vehicles at %d", count, start);
- for (uint i = 0; i < count; i++) _grm_engines[shift + start + i] = _cur_grffile->grfid;
- }
- src1 = start;
- } else {
- /* Unable to allocate */
- if (op != 4 && op != 5) {
- /* Deactivate GRF */
- grfmsg(0, "ParamSet: GRM: Unable to allocate %d vehicles, deactivating", count);
- _cur_grfconfig->status = GCS_DISABLED;
-
- _skip_sprites = -1;
- return;
- }
-
- grfmsg(1, "ParamSet: GRM: Unable to allocate %d vehicles", count);
- src1 = UINT_MAX;
- }
+ src1 = PerformGRM(&_grm_engines[_vehshifts[feature]], _vehcounts[feature], count, op, target, "vehicles");
+ if (_skip_sprites == -1) return;
break;
- }
case 0x08: // General sprites
switch (op) {
@@ -3688,6 +3700,11 @@
}
break;
+ case 0x0B: // Cargo
+ src1 = PerformGRM(_grm_cargos, NUM_CARGO, count, op, target, "cargos");
+ if (_skip_sprites == -1) return;
+ break;
+
default: grfmsg(1, "ParamSet: GRM: Unsupported feature 0x%X", feature); return;
}
}
@@ -4301,7 +4318,9 @@
for (file = _first_grffile; file != NULL; file = file->next) {
if (file->housespec == NULL) continue;
- for (i = 0; i < HOUSE_MAX; i++) free(file->housespec[i]);
+ for (i = 0; i < HOUSE_MAX; i++) {
+ free(file->housespec[i]);
+ }
free(file->housespec);
file->housespec = NULL;
@@ -4410,6 +4429,7 @@
/* Reset GRM reservations */
memset(&_grm_engines, 0, sizeof(_grm_engines));
+ memset(&_grm_cargos, 0, sizeof(_grm_cargos));
/* Unload sprite group data */
UnloadWagonOverrides();
@@ -4742,7 +4762,7 @@
/* 0x05 */ { SkipAct5, SkipAct5, SkipAct5, SkipAct5, SkipAct5, GraphicsNew, },
/* 0x06 */ { NULL, NULL, NULL, CfgApply, CfgApply, CfgApply, },
/* 0x07 */ { NULL, NULL, NULL, NULL, SkipIf, SkipIf, },
- /* 0x08 */ { ScanInfo, NULL, NULL, GRFInfo, NULL, GRFInfo, },
+ /* 0x08 */ { ScanInfo, NULL, NULL, GRFInfo, GRFInfo, GRFInfo, },
/* 0x09 */ { NULL, NULL, NULL, SkipIf, SkipIf, SkipIf, },
/* 0x0A */ { SkipActA, SkipActA, SkipActA, SkipActA, SkipActA, SpriteReplace, },
/* 0x0B */ { NULL, NULL, NULL, GRFLoadError, GRFLoadError, GRFLoadError, },
@@ -4811,6 +4831,7 @@
if (stage != GLS_FILESCAN && stage != GLS_SAFETYSCAN && stage != GLS_LABELSCAN) {
_cur_grffile = GetFileByFilename(filename);
if (_cur_grffile == NULL) error("File '%s' lost in cache.\n", filename);
+ if (stage == GLS_RESERVE && config->status != GCS_INITIALISED) return;
if (stage == GLS_ACTIVATION && config->status != GCS_INITIALISED) return;
}
@@ -4922,11 +4943,13 @@
if (c->status == GCS_DISABLED || c->status == GCS_NOT_FOUND) continue;
/* @todo usererror() */
- if (!FileExists(c->full_path)) error("NewGRF file is missing '%s'", c->filename);
+ if (!FioCheckFileExists(c->full_path)) error("NewGRF file is missing '%s'", c->filename);
if (stage == GLS_LABELSCAN) InitNewGRFFile(c, _cur_spriteid);
LoadNewGRFFile(c, slot++, stage);
- if (stage == GLS_ACTIVATION) {
+ if (stage == GLS_RESERVE) {
+ if (c->status == GCS_ACTIVATED) c->status = GCS_INITIALISED;
+ } else if (stage == GLS_ACTIVATION) {
ClearTemporaryNewGRFData();
BuildCargoTranslationMap();
DEBUG(sprite, 2, "LoadNewGRF: Currently %i sprites are loaded", _cur_spriteid);
--- a/src/newgrf_commons.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/newgrf_commons.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -6,6 +6,8 @@
#include "stdafx.h"
#include "openttd.h"
+#include "variables.h"
+#include "landscape.h"
#include "town.h"
#include "industry.h"
#include "newgrf.h"
@@ -148,3 +150,97 @@
entity_overrides[i] = invalid_ID;
}
}
+
+/** Method to find an entity ID and to mark it as reserved for the Industry to be included.
+ * @param grf_local_id ID used by the grf file for pre-installation work (equivalent of TTDPatch's setid
+ * @param grfid ID of the current grf file
+ * @param substitute_id industry from which data has been copied
+ * @return a free entity id (slotid) if ever one has been found, or Invalid_ID marker otherwise
+ */
+uint16 IndustryOverrideManager::AddEntityID(byte grf_local_id, uint32 grfid, byte substitute_id)
+{
+ /* This entity hasn't been defined before, so give it an ID now. */
+ for (uint16 id = 0; id < max_new_entities; id++) {
+ /* Get the real live industry */
+ const IndustrySpec *inds = GetIndustrySpec(id);
+
+ /* This industry must be one that is not available(enabled), mostly because of climate.
+ * And it must not already be used by a grf (grffile == NULL).
+ * So reseve this slot here, as it is the chosen one */
+ if (!inds->enabled && inds->grf_prop.grffile == NULL) {
+ EntityIDMapping *map = &mapping_ID[id];
+
+ if (map->entity_id == 0 && map->grfid == 0) {
+ /* winning slot, mark it as been used */
+ map->entity_id = grf_local_id;
+ map->grfid = grfid;
+ map->substitute_id = substitute_id;
+ return id;
+ }
+ }
+ }
+
+ return invalid_ID;
+}
+
+/** Method to install the new indistry data in its proper slot
+ * The slot assigment is internal of this method, since it requires
+ * checking what is available
+ * @param inds Industryspec that comes from the grf decoding process
+ */
+void IndustryOverrideManager::SetEntitySpec(const IndustrySpec *inds)
+{
+ /* First step : We need to find if this industry is already specified in the savegame data */
+ IndustryType ind_id = this->GetID(inds->grf_prop.local_id, inds->grf_prop.grffile->grfid);
+
+ if (ind_id == invalid_ID) { // not found? So this is the introduction of a new industry
+ /* Second step is dealing with the override. */
+ if (inds->grf_prop.override != invalid_ID && _industry_specs[inds->grf_prop.override].grf_prop.override == invalid_ID) {
+ /* this is an override, which means it will take the place of the industry it is
+ * designed to replace. Before we conclude that the override is allowed,
+ * we first need to verify that the slot is not holding another override
+ * If it's the case,it will be considered as a normal substitute */
+ ind_id = inds->grf_prop.override;
+ } else {
+ /* It has already been overriden, so you've lost your place old boy.
+ * Or it is a simple substitute.
+ * In both case, we need to find a free available slot */
+ ind_id = this->AddEntityID(inds->grf_prop.local_id, inds->grf_prop.grffile->grfid, inds->grf_prop.subst_id);
+ }
+ }
+
+ if (ind_id == invalid_ID) {
+ grfmsg(1, "Industry.SetEntitySpec: Too many industries allocated. Ignoring.");
+ return;
+ }
+
+ /* Now that we know we can use the given id, copy the spech to its final destination*/
+ memcpy(&_industry_specs[ind_id], inds, sizeof(*inds));
+ /* and mark it as usable*/
+ _industry_specs[ind_id].enabled = true;
+}
+
+/** Function used by houses (and soon industries) to get information
+ * on type of "terrain" the tile it is queries sits on.
+ * @param tile TileIndex of the tile been queried
+ * @return value corresponding to the grf expected format:
+ * Terrain type: 0 normal, 1 desert, 2 rainforest, 4 on or above snowline */
+uint32 GetTerrainType(TileIndex tile)
+{
+ switch (_opt.landscape) {
+ case LT_TROPIC: return GetTropicZone(tile) == TROPICZONE_DESERT ? 1 : 2;
+ case LT_ARCTIC: return GetTileZ(tile) >= GetSnowLine() ? 4 : 0;
+ default: return 0;
+ }
+}
+
+TileIndex GetNearbyTile(byte parameter, TileIndex tile)
+{
+ int8 x = GB(parameter, 0, 4);
+ int8 y = GB(parameter, 4, 4);
+
+ if (x >= 8) x -= 16;
+ if (y >= 8) y -= 16;
+
+ return tile + TileDiffXY(x, y);
+}
--- a/src/newgrf_commons.h Fri Jun 01 20:54:09 2007 +0000
+++ b/src/newgrf_commons.h Tue Jun 12 18:02:11 2007 +0000
@@ -35,7 +35,6 @@
uint16 invalid_ID; ///< ID used to dected invalid entities;
- virtual uint16 AddEntityID(byte grf_local_id, uint32 grfid, byte substitute_id);
public:
EntityIDMapping *mapping_ID; ///< mapping of ids from grf files. Public out of convenience
@@ -46,6 +45,7 @@
void ResetMapping();
void Add(uint8 local_id, uint entity_type);
+ virtual uint16 AddEntityID(byte grf_local_id, uint32 grfid, byte substitute_id);
uint16 GetSubstituteID(byte entity_id);
uint16 GetID(uint8 grf_local_id, uint32 grfid);
@@ -59,11 +59,27 @@
class HouseOverrideManager : public OverrideManagerBase
{
public:
- HouseOverrideManager(uint16 offset, uint16 maximum, uint16 invalid) : OverrideManagerBase(offset, maximum, invalid) {};
+ HouseOverrideManager(uint16 offset, uint16 maximum, uint16 invalid) :
+ OverrideManagerBase(offset, maximum, invalid) {};
void SetEntitySpec(const HouseSpec *hs);
};
+struct IndustrySpec;
+class IndustryOverrideManager : public OverrideManagerBase
+{
+ public:
+ IndustryOverrideManager(uint16 offset, uint16 maximum, uint16 invalid) :
+ OverrideManagerBase(offset, maximum, invalid) {};
+
+ virtual uint16 AddEntityID(byte grf_local_id, uint32 grfid, byte substitute_id);
+ void SetEntitySpec(const IndustrySpec *inds);
+};
+
extern HouseOverrideManager _house_mngr;
+extern IndustryOverrideManager _industry_mngr;
+
+uint32 GetTerrainType(TileIndex tile);
+TileIndex GetNearbyTile(byte parameter, TileIndex tile);
#endif /* NEWGRF_COMMONS_H */
--- a/src/newgrf_config.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/newgrf_config.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -40,7 +40,7 @@
size_t len;
/* open the file */
- f = fopen(config->full_path, "rb");
+ f = FioFOpenFile(config->full_path);
if (f == NULL) return false;
/* calculate md5sum */
@@ -59,13 +59,14 @@
/* Find the GRFID and calculate the md5sum */
bool FillGRFDetails(GRFConfig *config, bool is_static)
{
- if (!FileExists(config->full_path)) {
+ if (!FioCheckFileExists(config->full_path)) {
config->status = GCS_NOT_FOUND;
return false;
}
if (config->filename == NULL) {
- config->filename = strdup(strrchr(config->full_path, PATHSEPCHAR) + 1);
+ const char *t = strrchr(config->full_path, PATHSEPCHAR);
+ config->filename = strdup(t != NULL ? t + 1 : config->full_path);
}
/* Find and load the Action 8 information */
@@ -278,7 +279,7 @@
extern bool FiosIsValidFile(const char *path, const struct dirent *ent, struct stat *sb);
/* Scan a path for NewGRFs */
-static uint ScanPath(const char *path)
+static uint ScanPath(const char *path, int basepath_length)
{
uint num = 0;
struct stat sb;
@@ -299,7 +300,7 @@
/* Directory */
if (strcmp(d_name, ".") == 0 || strcmp(d_name, "..") == 0) continue;
AppendPathSeparator(filename, lengthof(filename));
- num += ScanPath(filename);
+ num += ScanPath(filename, basepath_length);
} else if (sb.st_mode & S_IFREG) {
/* File */
char *ext = strrchr(filename, '.');
@@ -309,7 +310,7 @@
if (strcasecmp(ext, ".grf") != 0) continue;
GRFConfig *c = CallocT<GRFConfig>(1);
- c->full_path = strdup(filename);
+ c->full_path = strdup(filename + basepath_length);
bool added = true;
if (FillGRFDetails(c, false)) {
@@ -360,8 +361,10 @@
ClearGRFConfigList(&_all_grfs);
DEBUG(grf, 1, "Scanning for NewGRFs");
- num = ScanPath(_paths.data_dir);
- num += ScanPath(_paths.second_data_dir);
+ num = ScanPath(_paths.data_dir, strlen(_paths.data_dir));
+ if (_paths.second_data_dir != NULL) {
+ num += ScanPath(_paths.second_data_dir, strlen(_paths.second_data_dir));
+ }
DEBUG(grf, 1, "Scan complete, found %d files", num);
}
--- a/src/newgrf_engine.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/newgrf_engine.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -528,16 +528,19 @@
}
case 0x42: { // Consist cargo information
- /* XXX Missing support for common refit cycle and property 25 */
const Vehicle *u;
byte cargo_classes = 0;
- uint common_cargo_best = 0;
- uint common_cargos[NUM_CARGO];
+ uint8 common_cargo_best = 0;
+ uint8 common_cargos[NUM_CARGO];
+ uint8 common_subtype_best = 0;
+ uint8 common_subtypes[256];
byte user_def_data = 0;
CargoID common_cargo_type = CT_PASSENGERS;
+ uint8 common_subtype = 0;
/* Reset our arrays */
memset(common_cargos, 0, sizeof(common_cargos));
+ memset(common_subtypes, 0, sizeof(common_subtypes));
for (u = v; u != NULL; u = u->next) {
/* Skip empty engines */
@@ -546,6 +549,7 @@
cargo_classes |= GetCargo(u->cargo_type)->classes;
common_cargos[u->cargo_type]++;
user_def_data |= RailVehInfo(u->engine_type)->user_def_data;
+ common_subtypes[u->cargo_subtype]++;
}
/* Pick the most common cargo type */
@@ -556,7 +560,14 @@
}
}
- return cargo_classes | (common_cargo_type << 8) | (user_def_data << 24);
+ for (uint i = 0; i < lengthof(common_subtypes); i++) {
+ if (common_subtypes[i] > common_subtype_best) {
+ common_subtype_best = common_subtypes[i];
+ common_subtype = i;
+ }
+ }
+
+ return cargo_classes | (common_cargo_type << 8) | (common_subtype << 16) | (user_def_data << 24);
}
case 0x43: // Player information
--- a/src/newgrf_gui.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/newgrf_gui.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -186,8 +186,9 @@
GRFConfig *c = CallocT<GRFConfig>(1);
*c = *src;
c->filename = strdup(src->filename);
- if (src->name != NULL) c->name = strdup(src->name);
- if (src->info != NULL) c->info = strdup(src->info);
+ if (src->full_path != NULL) c->full_path = strdup(src->full_path);
+ if (src->name != NULL) c->name = strdup(src->name);
+ if (src->info != NULL) c->info = strdup(src->info);
c->next = NULL;
/* Append GRF config to configuration list */
--- a/src/newgrf_house.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/newgrf_house.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -169,15 +169,6 @@
return map_class_count << 24 | town_class_count << 16 | map_id_count << 8 | town_id_count;
}
-static uint32 GetTerrainType(TileIndex tile)
-{
- switch (_opt.landscape) {
- case LT_TROPIC: return GetTropicZone(tile) == TROPICZONE_DESERT ? 1 : 2;
- case LT_ARCTIC: return GetTileZ(tile) >= GetSnowLine() ? 4 : 0;
- default: return 0;
- }
-}
-
static uint32 GetGRFParameter(HouseID house_id, byte parameter)
{
const HouseSpec *hs = GetHouseSpecs(house_id);
@@ -187,6 +178,16 @@
return file->param[parameter];
}
+uint32 GetNearbyTileInformation(byte parameter, TileIndex tile)
+{
+ uint32 tile_type;
+
+ tile = GetNearbyTile(parameter, tile);
+ tile_type = GetTerrainType(tile) << 2 | (IsTileType(tile, MP_WATER) ? 1 : 0) << 1;
+
+ return GetTileType(tile) << 24 | (TileHeight(tile) * 8) << 16 | tile_type << 8 | GetTileSlope(tile, NULL);
+}
+
/**
* HouseGetVariable():
*
@@ -238,20 +239,7 @@
}
/* Land info for nearby tiles. */
- case 0x62: {
- int8 x = GB(parameter, 0, 4);
- int8 y = GB(parameter, 4, 4);
- byte tile_type;
-
- if (x >= 8) x -= 16;
- if (y >= 8) y -= 16;
-
- tile += TileDiffXY(x, y);
-
- tile_type = GetTerrainType(tile) << 2 | (IsTileType(tile, MP_WATER) ? 1 : 0) << 1;
-
- return GetTileType(tile) << 24 | (TileHeight(tile) * 8) << 16 | tile_type << 8 | GetTileSlope(tile, NULL);
- }
+ case 0x62: return GetNearbyTileInformation(parameter, tile);
/* Read GRF parameter */
case 0x7F: return GetGRFParameter(object->u.house.house_id, parameter);
--- a/src/newgrf_house.h Fri Jun 01 20:54:09 2007 +0000
+++ b/src/newgrf_house.h Tue Jun 12 18:02:11 2007 +0000
@@ -8,22 +8,6 @@
#include "town.h"
/**
- * Maps a house id stored on the map to a GRF file.
- * House IDs are stored on the map, so there needs to be a way to tie them to
- * GRF files. An array of HouseIDMapping structs is saved with the savegame so
- * that house GRFs can be loaded in a different order, or removed safely. The
- * index in the array is the house ID stored on the map.
- *
- * The substitute ID is the ID of an original house that should be used instead
- * if the GRF containing the new house is not available.
- */
-struct HouseIDMapping {
- uint32 grfid; ///< The GRF ID of the file this house belongs to
- uint8 house_id; ///< The house ID within the GRF file
- uint8 substitute_id; ///< The (original) house ID to use if this GRF is not available
-};
-
-/**
* Makes class IDs unique to each GRF file.
* Houses can be assigned class IDs which are only comparable within the GRF
* file they were defined in. This mapping ensures that if two houses have the
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/newgrf_industries.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -0,0 +1,225 @@
+/* $Id$ */
+
+/** @file newgrf_industries.cpp */
+
+#include "stdafx.h"
+#include "openttd.h"
+#include "debug.h"
+#include "functions.h"
+#include "macros.h"
+#include "industry.h"
+#include "newgrf.h"
+#include "newgrf_callbacks.h"
+#include "newgrf_spritegroup.h"
+#include "newgrf_industries.h"
+#include "newgrf_commons.h"
+
+/* Since the industry IDs defined by the GRF file don't necessarily correlate
+ * to those used by the game, the IDs used for overriding old industries must be
+ * translated when the idustry spec is set. */
+IndustryOverrideManager _industry_mngr(NEW_INDUSTRYOFFSET, NUM_INDUSTRYTYPES, INVALID_INDUSTRYTYPE);
+
+/**
+ * Finds the distance for the closest tile with water/land given a tile
+ * @param tile the tile to find the distance too
+ * @param water whether to find water or land
+ * @note FAILS when an industry should be seen as water
+ */
+static uint GetClosestWaterDistance(TileIndex tile, bool water)
+{
+ TileIndex t;
+ uint best_dist;
+ for (t = 1; t < MapSize(); t++) {
+ if (IsTileType(t, MP_WATER) == water) break;
+ }
+ best_dist = DistanceManhattan(tile, t);
+
+ for (; t < MapSize(); t++) {
+ uint dist = DistanceManhattan(tile, t);
+ if (dist < best_dist) {
+ if (IsTileType(t, MP_WATER) == water) best_dist = dist;
+ } else {
+ /* When the Y distance between the current row and the 'source' tile
+ * is larger than the best distance, we've found the best distance */
+ if (TileY(t) - TileY(tile) > best_dist) return best_dist;
+ if (TileX(tile) > TileX(t)) {
+ /* We can safely skip this many tiles; from here all tiles have a
+ * higher or equal distance than the best distance */
+ t |= MapMaxX();
+ continue;
+ } else {
+ /* We can safely skip this many tiles; up to here all tiles have a
+ * higher or equal distance than the best distance */
+ t += best_dist - dist;
+ continue;
+ }
+ }
+ }
+
+ return best_dist;
+}
+
+/** This function implements the industries variables that newGRF defines.
+ * @param variable that is queried
+ * @param parameter unused
+ * @param available will return false if ever the variable asked for does not exist
+ * @param ind is of course the industry we are inquiring
+ * @return the value stored in the corresponding variable*/
+uint32 IndustryGetVariable(const ResolverObject *object, byte variable, byte parameter, bool *available)
+{
+ const Industry *industry = object->u.industry.ind;
+ TileIndex tile = object->u.industry.tile;
+ const IndustrySpec *indspec = GetIndustrySpec(industry->type);
+
+ switch (variable) {
+ case 0x40:
+ case 0x41:
+ case 0x42: { // waiting cargo, but only if those two callback flags are set
+ uint16 callback = indspec->callback_flags;
+ if (callback & (CBM_IND_PRODUCTION_CARGO_ARRIVAL | callback & CBM_IND_PRODUCTION_256_TICKS)) {
+ return max(industry->cargo_waiting[variable - 0x40], (uint16)0x7FFF);
+ } else {
+ return 0;
+ }
+ }
+ /* TODO: somehow determine whether we're in water or not */
+ case 0x43: return GetClosestWaterDistance(tile, true); // Manhattan distance of closes dry/water tile
+
+ case 0x60: { /* Get industry ID at offset param */
+ /*The parameter of this variable is an offset from the northernmost tile of the industry:
+ * the high nibble contains the Y offset, the low one the X offset; both are unsigned.
+ * The high word of the return value is currently reserved, and the low word can be:
+ * 00xxh if the tile is an industry tile and was defined in the current GRF with ID xx.
+ * FFxxh if the tile is an industry tile of an old type, and has the ID xx.
+ * FFFEh if the tile is an industry tile that was defined in another GRF file
+ * FFFFh if the tile isn't an industry tile, or doesn't belong to the current industry */
+ return GetIndustry(GetNearbyTile(parameter, tile))->type;
+ }
+
+ case 0x61: return 0; // Get random tile bits at offset param
+
+ case 0x62: // Land info of nearby tiles
+ case 0x63: // Animation stage of nerby tiles
+ case 0x64: break; // Distance of nearest industry of given type
+ /* Get town zone and Manhattan distance of closest town */
+ case 0x65: return GetTownRadiusGroup(industry->town, tile) << 16 | min(DistanceManhattan(tile, industry->town->xy), 0xFFFF);
+ /* Get square of Euclidian distance of closes town */
+ case 0x66: return GetTownRadiusGroup(industry->town, tile) << 16 | min(DistanceSquare(tile, industry->town->xy), 0xFFFF);
+
+ /* Count of industry, distance of closest instance
+ * format is rr(reserved) cc(count) dddd(manhattan distance of closest sister)
+ * A lot more should be done, since it has to check for local id, grf id etc...
+ * let's just say it is a beginning ;) */
+ case 0x67: return GetIndustryTypeCount(industry->type) << 16 | 0;
+
+ /* Industry founder information.
+ * 0x10 if randomly created or from a map pre-newindustry.
+ * Else, the company who funded it */
+ case 0xA7: return 0x10;
+
+ case 0xB0: // Date when built since 1920 (in days)
+ case 0xB3: // Construction type
+ case 0xB4: break; // Date last cargo accepted since 1920 (in days)
+
+ /* Industry structure access*/
+ case 0x80: return industry->xy;
+ case 0x81: return GB(industry->xy, 8, 8);
+ /* Pointer to the town the industry is associated with */
+ case 0x82:
+ case 0x83:
+ case 0x84:
+ case 0x85: break; // not supported
+ case 0x86: return industry->width;
+ case 0x87: return industry->height;// xy dimensions
+ /* */
+ case 0x88:
+ case 0x89: return indspec->produced_cargo[variable - 0x88];
+ case 0x8A: return industry->cargo_waiting[0];
+ case 0x8B: return GB(industry->cargo_waiting[0], 8, 8);
+ case 0x8C: return industry->cargo_waiting[1];
+ case 0x8D: return GB(industry->cargo_waiting[1], 8, 8);
+ case 0x8E:
+ case 0x8F: return industry->production_rate[variable - 0x8E];
+ case 0x90:
+ case 0x91:
+ case 0x92: return indspec->accepts_cargo[variable - 0x90];
+ case 0x93: return industry->prod_level;
+ /* amount of cargo produced so far THIS month. */
+ case 0x94: return industry->this_month_production[0];
+ case 0x95: return GB(industry->this_month_production[0], 8, 8);
+ case 0x96: return industry->this_month_production[1];
+ case 0x97: return GB(industry->this_month_production[1], 8, 8);
+ /* amount of cargo transported so far THIS month. */
+ case 0x98: return industry->this_month_transported[0];
+ case 0x99: return GB(industry->this_month_transported[0], 8, 8);
+ case 0x9A: return industry->this_month_transported[1];
+ case 0x9B: return GB(industry->this_month_transported[0], 8, 8);
+ /* fraction of cargo transported LAST month. */
+ case 0x9C:
+ case 0x9D: return industry->last_month_pct_transported[variable - 0x9C];
+ /* amount of cargo produced LAST month. */
+ case 0x9E: return industry->last_month_production[0];
+ case 0x9F: return GB(industry->last_month_production[0], 8, 8);
+ case 0xA0: return industry->last_month_production[1];
+ case 0xA1: return GB(industry->last_month_production[1], 8, 8);
+ /* amount of cargo transported last month. */
+ case 0xA2: return industry->last_month_transported[0];
+ case 0xA3: return GB(industry->last_month_transported[0], 8, 8);
+ case 0xA4: return industry->last_month_transported[1];
+ case 0xA5: return GB(industry->last_month_transported[0], 8, 8);
+
+ case 0xA6: return industry->type;
+
+ case 0xA8: return industry->random_color;
+ case 0xA9: return industry->last_prod_year; // capped?
+ case 0xAA: return industry->counter;
+ case 0xAB: return GB(industry->counter, 8, 8);
+ case 0xAC: return industry->was_cargo_delivered;
+ }
+
+ DEBUG(grf, 1, "Unhandled industry property 0x%X", variable);
+
+ *available = false;
+ return (uint32)-1;
+}
+
+static const SpriteGroup *IndustryResolveReal(const ResolverObject *object, const SpriteGroup *group)
+{
+ /* IndustryTile do not have 'real' groups */
+ return NULL;
+}
+
+static void NewIndustryResolver(ResolverObject *res, IndustryType ind_id, TileIndex tile, Industry *indus)
+{
+ res->GetRandomBits = NULL;//IndustryTileGetRandomBits;
+ res->GetTriggers = NULL;//IndustryTileGetTriggers;
+ res->SetTriggers = NULL;//IndustryTileSetTriggers;
+ res->GetVariable = IndustryGetVariable;
+ res->ResolveReal = IndustryResolveReal;
+
+ res->u.industry.tile = tile;
+ res->u.industry.ind = indus;
+
+ res->callback = 0;
+ res->callback_param1 = 0;
+ res->callback_param2 = 0;
+ res->last_value = 0;
+ res->trigger = 0;
+ res->reseed = 0;
+}
+
+uint16 GetIndustryCallback(uint16 callback, uint32 param1, uint32 param2, Industry *industry, TileIndex tile)
+{
+ ResolverObject object;
+ const SpriteGroup *group;
+
+ NewIndustryResolver(&object, industry->type, tile, industry);
+ object.callback = callback;
+ object.callback_param1 = param1;
+ object.callback_param2 = param2;
+
+ group = Resolve(GetIndustrySpec(industry->type)->grf_prop.spritegroup, &object);
+ if (group == NULL || group->type != SGT_CALLBACK) return CALLBACK_FAILED;
+
+ return group->g.callback.result;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/newgrf_industries.h Tue Jun 12 18:02:11 2007 +0000
@@ -0,0 +1,14 @@
+/* $Id$ */
+
+/** @file newgrf_industries.h */
+
+#ifndef NEWGRF_INDUSTRIES_H
+#define NEWGRF_INDUSTRIES_H
+
+#include "industry.h"
+#include "newgrf_spritegroup.h"
+
+uint32 IndustryGetVariable(const ResolverObject *object, byte variable, byte parameter, bool *available);
+uint16 GetIndustryCallback(uint16 callback, uint32 param1, uint32 param2, Industry *industry, TileIndex tile);
+
+#endif /* NEWGRF_INDUSTRIES_H */
--- a/src/newgrf_spritegroup.h Fri Jun 01 20:54:09 2007 +0000
+++ b/src/newgrf_spritegroup.h Tue Jun 12 18:02:11 2007 +0000
@@ -6,6 +6,7 @@
#define NEWGRF_SPRITEGROUP_H
#include "town.h"
+#include "industry.h"
struct SpriteGroup;
@@ -197,6 +198,10 @@
HouseID house_id;
} house;
struct {
+ TileIndex tile;
+ Industry *ind;
+ } industry;
+ struct {
const struct CargoSpec *cs;
} cargo;
} u;
--- a/src/newgrf_station.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/newgrf_station.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -15,6 +15,7 @@
#include "station_map.h"
#include "newgrf.h"
#include "newgrf_callbacks.h"
+#include "newgrf_commons.h"
#include "newgrf_station.h"
#include "newgrf_spritegroup.h"
#include "date.h"
@@ -388,10 +389,7 @@
/* Calculated station variables */
case 0x40: return GetPlatformInfoHelper(tile, false, false, false);
case 0x41: return GetPlatformInfoHelper(tile, true, false, false);
- case 0x42: // Terrain and rail type
- return ((_opt.landscape == LT_ARCTIC && GetTileZ(tile) > GetSnowLine()) ? 4 : 0) |
- (_opt.landscape == LT_TROPIC ? GetTropicZone(tile) : 0) |
- (GetRailType(tile) << 8);
+ case 0x42: return GetTerrainType(tile) | (GetRailType(tile) << 8);
case 0x43: return st->owner; // Station owner
case 0x44: return 2; // PBS status
case 0x45: return GetRailContinuationInfo(tile);
--- a/src/oldloader.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/oldloader.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -663,18 +663,18 @@
OCL_SVAR( OC_UINT8, Industry, prod_level ),
- OCL_SVAR( OC_UINT16, Industry, last_mo_production[0] ),
- OCL_SVAR( OC_UINT16, Industry, last_mo_production[1] ),
- OCL_SVAR( OC_UINT16, Industry, last_mo_transported[0] ),
- OCL_SVAR( OC_UINT16, Industry, last_mo_transported[1] ),
+ OCL_SVAR( OC_UINT16, Industry, this_month_production[0] ),
+ OCL_SVAR( OC_UINT16, Industry, this_month_production[1] ),
+ OCL_SVAR( OC_UINT16, Industry, this_month_transported[0] ),
+ OCL_SVAR( OC_UINT16, Industry, this_month_transported[1] ),
- OCL_SVAR( OC_UINT8, Industry, pct_transported[0] ),
- OCL_SVAR( OC_UINT8, Industry, pct_transported[1] ),
+ OCL_SVAR( OC_UINT8, Industry, last_month_pct_transported[0] ),
+ OCL_SVAR( OC_UINT8, Industry, last_month_pct_transported[1] ),
- OCL_SVAR( OC_UINT16, Industry, total_production[0] ),
- OCL_SVAR( OC_UINT16, Industry, total_production[1] ),
- OCL_SVAR( OC_UINT16, Industry, total_transported[0] ),
- OCL_SVAR( OC_UINT16, Industry, total_transported[1] ),
+ OCL_SVAR( OC_UINT16, Industry, last_month_production[0] ),
+ OCL_SVAR( OC_UINT16, Industry, last_month_production[1] ),
+ OCL_SVAR( OC_UINT16, Industry, last_month_transported[0] ),
+ OCL_SVAR( OC_UINT16, Industry, last_month_transported[1] ),
OCL_SVAR( OC_UINT8, Industry, type ),
OCL_SVAR( OC_UINT8, Industry, owner ),
--- a/src/openttd.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/openttd.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -65,6 +65,7 @@
#include "newgrf_commons.h"
#include "player_face.h"
#include "group.h"
+#include "blitter/blitter.hpp"
#include "bridge_map.h"
#include "clear_map.h"
@@ -86,6 +87,8 @@
extern Player* DoStartupNewPlayer(bool is_ai);
extern void ShowOSErrorBox(const char *buf);
+const char *_default_blitter = "8bpp-optimzed";
+
/* TODO: usrerror() for errors which are not of an internal nature but
* caused by the user, i.e. missing files or fatal configuration errors.
* Post-0.4.0 since Celestar doesn't want this in SVN before. --pasky */
@@ -160,6 +163,7 @@
" -v drv = Set video driver (see below)\n"
" -s drv = Set sound driver (see below) (param bufsize,hz)\n"
" -m drv = Set music driver (see below)\n"
+ " -b drv = Set the blitter to use (see below)\n"
" -a ai = Force use of specific AI (see below)\n"
" -r res = Set resolution (for instance 800x600)\n"
" -h = Display this help text\n"
@@ -185,6 +189,9 @@
p = GetDriverList(p, lastof(buf));
+ /* List the blitters */
+ p = BlitterFactoryBase::GetBlittersInfo(p, lastof(buf));
+
/* We need to initialize the AI, so it finds the AIs */
AI_Initialize();
p = AIFactoryBase::GetAIConsoleList(p, lastof(buf));
@@ -357,7 +364,7 @@
{
int i;
const char *optformat;
- char musicdriver[32], sounddriver[32], videodriver[32], ai[32];
+ char musicdriver[32], sounddriver[32], videodriver[32], blitter[32], ai[32];
int resolution[2] = {0, 0};
Year startyear = INVALID_YEAR;
uint generation_seed = GENERATE_NEW_SEED;
@@ -371,7 +378,7 @@
uint16 dedicated_port = 0;
#endif /* ENABLE_NETWORK */
- musicdriver[0] = sounddriver[0] = videodriver[0] = ai[0] = '\0';
+ musicdriver[0] = sounddriver[0] = videodriver[0] = blitter[0] = ai[0] = '\0';
_game_mode = GM_MENU;
_switch_mode = SM_MENU;
@@ -383,7 +390,7 @@
* a letter means: it accepts that param (e.g.: -h)
* a ':' behind it means: it need a param (e.g.: -m<driver>)
* a '::' behind it means: it can optional have a param (e.g.: -d<debug>) */
- optformat = "m:s:v:a:hD::n::eit:d::r:g::G:c:xl:"
+ optformat = "m:s:v:b:a:hD::n::eit:d::r:g::G:c:xl:"
#if !defined(__MORPHOS__) && !defined(__AMIGA__) && !defined(WIN32)
"f"
#endif
@@ -396,6 +403,7 @@
case 'm': ttd_strlcpy(musicdriver, mgo.opt, sizeof(musicdriver)); break;
case 's': ttd_strlcpy(sounddriver, mgo.opt, sizeof(sounddriver)); break;
case 'v': ttd_strlcpy(videodriver, mgo.opt, sizeof(videodriver)); break;
+ case 'b': ttd_strlcpy(blitter, mgo.opt, sizeof(blitter)); break;
case 'a': ttd_strlcpy(ai, mgo.opt, sizeof(ai)); break;
#if defined(ENABLE_NETWORK)
case 'D':
@@ -469,6 +477,7 @@
if (!StrEmpty(musicdriver)) ttd_strlcpy(_ini_musicdriver, musicdriver, sizeof(_ini_musicdriver));
if (!StrEmpty(sounddriver)) ttd_strlcpy(_ini_sounddriver, sounddriver, sizeof(_ini_sounddriver));
if (!StrEmpty(videodriver)) ttd_strlcpy(_ini_videodriver, videodriver, sizeof(_ini_videodriver));
+ if (StrEmpty(blitter)) ttd_strlcpy(blitter, _default_blitter, sizeof(blitter));
if (!StrEmpty(ai)) AI_ForceAI(ai);
if (resolution[0] != 0) { _cur_resolution[0] = resolution[0]; _cur_resolution[1] = resolution[1]; }
if (startyear != INVALID_YEAR) _patches_newgame.starting_year = startyear;
@@ -509,6 +518,9 @@
/* Initialize game palette */
GfxInitPalettes();
+ DEBUG(misc, 1, "Loading blitter '%s'...", blitter);
+ if (BlitterFactoryBase::SelectBlitter(blitter) == NULL)
+ error("Failed to select requested blitter '%s'; does it exist?", blitter);
DEBUG(driver, 1, "Loading drivers...");
LoadDriver(SOUND_DRIVER, _ini_sounddriver);
LoadDriver(MUSIC_DRIVER, _ini_musicdriver);
--- a/src/order_cmd.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/order_cmd.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -557,29 +557,27 @@
return 0;
}
-/** Goto next order of order-list.
+/** Goto order of order-list.
* @param tile unused
* @param flags operation to perform
* @param p1 The ID of the vehicle which order is skipped
- * @param p2 unused
+ * @param p2 the selected order to which we want to skip
*/
-int32 CmdSkipOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
+int32 CmdSkipToOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
{
Vehicle *v;
VehicleID veh_id = p1;
+ VehicleOrderID sel_ord = p2;
if (!IsValidVehicleID(veh_id)) return CMD_ERROR;
v = GetVehicle(veh_id);
- if (!CheckOwnership(v->owner)) return CMD_ERROR;
+ if (!CheckOwnership(v->owner) || sel_ord == v->cur_order_index ||
+ sel_ord >= v->num_orders || v->num_orders < 2) return CMD_ERROR;
if (flags & DC_EXEC) {
- /* Goto next order */
- VehicleOrderID b = v->cur_order_index + 1;
- if (b >= v->num_orders) b = 0;
-
- v->cur_order_index = b;
+ v->cur_order_index = sel_ord;
if (v->type == VEH_ROAD) ClearSlot(v);
@@ -600,6 +598,91 @@
return 0;
}
+/**
+ * Move an order inside the orderlist
+ * @param tile unused
+ * @param p1 the ID of the vehicle
+ * @param p2 order to move and target
+ * bit 0-15 : the order to move
+ * bit 16-31 : the target order
+ * @note The target order will move one place down in the orderlist
+ * if you move the order upwards else it'll move it one place down
+ */
+int32 CmdMoveOrder(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
+{
+ VehicleID veh = p1;
+ VehicleOrderID moving_order = GB(p2, 0, 16);
+ VehicleOrderID target_order = GB(p2, 16, 16);
+
+ if (!IsValidVehicleID(veh)) return CMD_ERROR;
+
+ Vehicle *v = GetVehicle(veh);
+ if (!CheckOwnership(v->owner)) return CMD_ERROR;
+
+ /* Don't make senseless movements */
+ if (moving_order >= v->num_orders || target_order >= v->num_orders ||
+ moving_order == target_order || v->num_orders <= 1)
+ return CMD_ERROR;
+
+ Order *moving_one = GetVehicleOrder(v, moving_order);
+ /* Don't move an empty order */
+ if (moving_one == NULL) return CMD_ERROR;
+
+ if (flags & DC_EXEC) {
+ /* Take the moving order out of the pointer-chain */
+ Order *one_before = GetVehicleOrder(v, moving_order - 1);
+ Order *one_past = GetVehicleOrder(v, moving_order + 1);
+
+ if (one_before == NULL) {
+ /* First order edit */
+ v->orders = moving_one->next;
+ } else {
+ one_before->next = moving_one->next;
+ }
+
+ /* Insert the moving_order again in the pointer-chain */
+ one_before = GetVehicleOrder(v, target_order - 1);
+ one_past = GetVehicleOrder(v, target_order);
+
+ moving_one->next = one_past;
+
+ if (one_before == NULL) {
+ /* first order edit */
+ SwapOrders(v->orders, moving_one);
+ v->orders->next = moving_one;
+ } else {
+ one_before->next = moving_one;
+ }
+
+ /* Update shared list */
+ Vehicle *u = GetFirstVehicleFromSharedList(v);
+
+ DeleteOrderWarnings(u);
+
+ for (; u != NULL; u = u->next_shared) {
+ /* Update the first order */
+ if (u->orders != v->orders) u->orders = v->orders;
+
+ /* Update the current order */
+ if (u->cur_order_index == moving_order) {
+ u->cur_order_index = target_order;
+ } else if(u->cur_order_index > moving_order && u->cur_order_index <= target_order) {
+ u->cur_order_index--;
+ } else if(u->cur_order_index < moving_order && u->cur_order_index >= target_order) {
+ u->cur_order_index++;
+ }
+
+ assert(v->orders == u->orders);
+ /* Update any possible open window of the vehicle */
+ InvalidateVehicleOrder(u);
+ }
+
+ /* Make sure to rebuild the whole list */
+ RebuildVehicleLists();
+ }
+
+ return 0;
+}
/** Modify an order in the orderlist of a vehicle.
* @param tile unused
--- a/src/order_gui.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/order_gui.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -44,6 +44,13 @@
ORDER_WIDGET_RESIZE,
};
+/**
+ * Return the memorised selected order.
+ *
+ * @param w current window
+ * @return the memorised order if it is a vaild one
+ * else return the number of orders
+ */
static int OrderGetSel(const Window *w)
{
const Vehicle *v = GetVehicle(w->window_number);
@@ -52,6 +59,33 @@
return (num >= 0 && num < v->num_orders) ? num : v->num_orders;
}
+/**
+ * Calculate the selected order.
+ * The calculation is based on the relative (to the window) y click position and
+ * the position of the scrollbar.
+ *
+ * @param w current window
+ * @param y Y-value of the click relative to the window origin
+ * @param v current vehicle
+ * @return the new selected order if the order is valid else return that
+ * an invalid one has been selected.
+ */
+static int GetOrderFromOrderWndPt(Window *w, int y, const Vehicle *v)
+{
+ /*
+ * Calculation description:
+ * 15 = 14 (w->widget[ORDER_WIDGET_ORDER_LIST].top) + 1 (frame-line)
+ * 10 = order text hight
+ */
+ int sel = (y - 15) / 10;
+
+ if ((uint)sel >= w->vscroll.cap) return INVALID_ORDER;
+
+ sel += w->vscroll.pos;
+
+ return (sel <= v->num_orders && sel >= 0) ? sel : INVALID_ORDER;
+}
+
static StringID StationOrderStrings[] = {
STR_8806_GO_TO,
STR_8807_GO_TO_TRANSFER,
@@ -93,7 +127,7 @@
if (v->owner == _local_player) {
/* skip */
- SetWindowWidgetDisabledState(w, ORDER_WIDGET_SKIP, v->num_orders == 0);
+ SetWindowWidgetDisabledState(w, ORDER_WIDGET_SKIP, v->num_orders <= 1);
/* delete */
SetWindowWidgetDisabledState(w, ORDER_WIDGET_DELETE,
@@ -356,6 +390,12 @@
}
}
+/**
+ * Handle the click on the goto button.
+ *
+ * @param w current window
+ * @param v current vehicle
+ */
static void OrderClick_Goto(Window *w, const Vehicle *v)
{
InvalidateWidget(w, ORDER_WIDGET_GOTO);
@@ -368,36 +408,86 @@
}
}
+/**
+ * Handle the click on the full load button.
+ *
+ * @param w current window
+ * @param v current vehicle
+ */
static void OrderClick_FullLoad(Window *w, const Vehicle *v)
{
DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OFB_FULL_LOAD, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
}
+/**
+ * Handle the click on the unload button.
+ *
+ * @param w current window
+ * @param v current vehicle
+ */
static void OrderClick_Unload(Window *w, const Vehicle *v)
{
DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OFB_UNLOAD, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
}
+/**
+ * Handle the click on the nonstop button.
+ *
+ * @param w current window
+ * @param v current vehicle
+ */
static void OrderClick_Nonstop(Window *w, const Vehicle *v)
{
DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OFB_NON_STOP, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
}
+/**
+ * Handle the click on the transfer button.
+ *
+ * @param w current window
+ * @param v current vehicle
+ */
static void OrderClick_Transfer(Window* w, const Vehicle* v)
{
DoCommandP(v->tile, v->index + (OrderGetSel(w) << 16), OFB_TRANSFER, NULL, CMD_MODIFY_ORDER | CMD_MSG(STR_8835_CAN_T_MODIFY_THIS_ORDER));
}
+/**
+ * Handle the click on the skip button.
+ * If ctrl is pressed skip to selected order.
+ * Else skip to current order + 1
+ *
+ * @param w current window
+ * @param v current vehicle
+ */
static void OrderClick_Skip(Window *w, const Vehicle *v)
{
- DoCommandP(v->tile, v->index, 0, NULL, CMD_SKIP_ORDER);
+ /* Don't skip when there's nothing to skip */
+ if (_ctrl_pressed && v->cur_order_index == OrderGetSel(w)) return;
+
+ DoCommandP(v->tile, v->index, _ctrl_pressed ? OrderGetSel(w) : ((v->cur_order_index + 1) % v->num_orders),
+ NULL, CMD_SKIP_TO_ORDER | CMD_MSG(_ctrl_pressed ? STR_CAN_T_SKIP_TO_ORDER : STR_CAN_T_SKIP_ORDER));
}
+/**
+ * Handle the click on the unload button.
+ *
+ * @param w current window
+ * @param v current vehicle
+ */
static void OrderClick_Delete(Window *w, const Vehicle *v)
{
DoCommandP(v->tile, v->index, OrderGetSel(w), NULL, CMD_DELETE_ORDER | CMD_MSG(STR_8834_CAN_T_DELETE_THIS_ORDER));
}
+/**
+ * Handle the click on the refit button.
+ * If ctrl is pressed cancel refitting.
+ * Else show the refit window.
+ *
+ * @param w current window
+ * @param v current vehicle
+ */
static void OrderClick_Refit(Window *w, const Vehicle *v)
{
if (_ctrl_pressed) {
@@ -410,6 +500,12 @@
typedef void OnButtonVehClick(Window *w, const Vehicle *v);
+/**
+ * Keycode function mapping.
+ *
+ * @see _order_keycodes[]
+ * @note Keep them allways in sync with _order_keycodes[]!
+ */
static OnButtonVehClick* const _order_button_proc[] = {
OrderClick_Skip,
OrderClick_Delete,
@@ -451,14 +547,14 @@
break;
case WE_CLICK: {
- Vehicle *v = GetVehicle(w->window_number);
+ const Vehicle *v = GetVehicle(w->window_number);
switch (e->we.click.widget) {
case ORDER_WIDGET_ORDER_LIST: {
- int sel = (e->we.click.pt.y - 15) / 10;
+ ResetObjectToPlace();
- if ((uint)sel >= w->vscroll.cap) return;
+ int sel = GetOrderFromOrderWndPt(w, e->we.click.pt.y, v);
- sel += w->vscroll.pos;
+ if (sel == INVALID_ORDER) return;
if (_ctrl_pressed && sel < v->num_orders) {
const Order *ord = GetVehicleOrder(v, sel);
@@ -473,10 +569,21 @@
if (xy != 0) ScrollMainWindowToTile(xy);
return;
+ } else {
+ if (sel == WP(w,order_d).sel) {
+ /* Deselect clicked order */
+ WP(w,order_d).sel = -1;
+ } else {
+ /* Select clicked order */
+ WP(w,order_d).sel = sel;
+
+ if (v->owner == _local_player) {
+ /* Activate drag and drop */
+ SetObjectToPlaceWnd(SPR_CURSOR_MOUSE, PAL_NONE, 4, w);
+ }
+ }
}
- if (sel == WP(w,order_d).sel) sel = -1;
- WP(w,order_d).sel = sel;
SetWindowDirty(w);
} break;
@@ -516,6 +623,31 @@
}
} break;
+ case WE_DRAGDROP: {
+ const Vehicle *v = GetVehicle(w->window_number);
+
+ switch (e->we.click.widget) {
+ case ORDER_WIDGET_ORDER_LIST: {
+ int from_order = OrderGetSel(w);
+ int to_order = GetOrderFromOrderWndPt(w, e->we.dragdrop.pt.y, v);
+
+ if (!(from_order == to_order || from_order == INVALID_ORDER || from_order > v->num_orders || to_order == INVALID_ORDER || to_order > v->num_orders) &&
+ DoCommandP(v->tile, v->index, from_order | (to_order << 16), NULL, CMD_MOVE_ORDER | CMD_MSG(STR_CAN_T_MOVE_THIS_ORDER))) {
+ WP(w, order_d).sel = -1;
+ }
+
+ break;
+ }
+
+ case ORDER_WIDGET_DELETE:
+ OrderClick_Delete(w, v);
+ break;
+ }
+
+ ResetObjectToPlace();
+ break;
+ }
+
case WE_KEYPRESS: {
Vehicle *v = GetVehicle(w->window_number);
uint i;
@@ -589,23 +721,32 @@
}
}
+/**
+ * Widget definition for player train orders
+ */
static const Widget _orders_train_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_RIGHT, 14, 11, 398, 0, 13, STR_8829_ORDERS, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PANEL, RESIZE_RB, 14, 0, 386, 14, 75, 0x0, STR_8852_ORDERS_LIST_CLICK_ON_ORDER},
-{ WWT_SCROLLBAR, RESIZE_LRB, 14, 387, 398, 14, 75, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
-{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 52, 76, 87, STR_8823_SKIP, STR_8853_SKIP_THE_CURRENT_ORDER},
-{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 53, 105, 76, 87, STR_8824_DELETE, STR_8854_DELETE_THE_HIGHLIGHTED},
-{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 106, 158, 76, 87, STR_8825_NON_STOP, STR_8855_MAKE_THE_HIGHLIGHTED_ORDER},
-{ WWT_TEXTBTN, RESIZE_TB, 14, 159, 211, 76, 87, STR_8826_GO_TO, STR_8856_INSERT_A_NEW_ORDER_BEFORE},
-{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 212, 264, 76, 87, STR_FULLLOAD_OR_SERVICE, STR_NULL},
-{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 265, 319, 76, 87, STR_8828_UNLOAD, STR_8858_MAKE_THE_HIGHLIGHTED_ORDER},
-{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 265, 319, 76, 87, STR_REFIT, STR_REFIT_TIP},
-{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 320, 372, 76, 87, STR_886F_TRANSFER, STR_886D_MAKE_THE_HIGHLIGHTED_ORDER},
-{ WWT_PUSHIMGBTN, RESIZE_TB, 14, 373, 386, 76, 87, SPR_SHARED_ORDERS_ICON, STR_VEH_WITH_SHARED_ORDERS_LIST_TIP},
-{ WWT_PANEL, RESIZE_RTB, 14, 387, 386, 76, 87, 0x0, STR_NULL},
-{ WWT_RESIZEBOX, RESIZE_LRTB, 14, 387, 398, 76, 87, 0x0, STR_RESIZE_BUTTON},
-{ WIDGETS_END},
+ { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // ORDER_WIDGET_CLOSEBOX
+ { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 398, 0, 13, STR_8829_ORDERS, STR_018C_WINDOW_TITLE_DRAG_THIS}, // ORDER_WIDGET_CAPTION
+
+ { WWT_PANEL, RESIZE_RB, 14, 0, 386, 14, 75, 0x0, STR_8852_ORDERS_LIST_CLICK_ON_ORDER}, // ORDER_WIDGET_ORDER_LIST
+
+ { WWT_SCROLLBAR, RESIZE_LRB, 14, 387, 398, 14, 75, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // ORDER_WIDGET_SCROLLBAR
+
+ { WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 52, 76, 87, STR_8823_SKIP, STR_8853_SKIP_THE_CURRENT_ORDER}, // ORDER_WIDGET_SKIP
+ { WWT_PUSHTXTBTN, RESIZE_TB, 14, 53, 105, 76, 87, STR_8824_DELETE, STR_8854_DELETE_THE_HIGHLIGHTED}, // ORDER_WIDGET_DELETE
+ { WWT_PUSHTXTBTN, RESIZE_TB, 14, 106, 158, 76, 87, STR_8825_NON_STOP, STR_8855_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_NON_STOP
+ { WWT_TEXTBTN, RESIZE_TB, 14, 159, 211, 76, 87, STR_8826_GO_TO, STR_8856_INSERT_A_NEW_ORDER_BEFORE}, // ORDER_WIDGET_GOTO
+ { WWT_PUSHTXTBTN, RESIZE_TB, 14, 212, 264, 76, 87, STR_FULLLOAD_OR_SERVICE, STR_NULL}, // ORDER_WIDGET_FULL_LOAD
+ { WWT_PUSHTXTBTN, RESIZE_TB, 14, 265, 319, 76, 87, STR_8828_UNLOAD, STR_8858_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_UNLOAD
+ { WWT_PUSHTXTBTN, RESIZE_TB, 14, 265, 319, 76, 87, STR_REFIT, STR_REFIT_TIP}, // ORDER_WIDGET_REFIT
+ { WWT_PUSHTXTBTN, RESIZE_TB, 14, 320, 372, 76, 87, STR_886F_TRANSFER, STR_886D_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_TRANSFER
+
+ { WWT_PUSHIMGBTN, RESIZE_TB, 14, 373, 386, 76, 87, SPR_SHARED_ORDERS_ICON, STR_VEH_WITH_SHARED_ORDERS_LIST_TIP}, // ORDER_WIDGET_SHARED_ORDER_LIST
+
+ { WWT_PANEL, RESIZE_RTB, 14, 387, 386, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_RESIZE_BAR
+
+ { WWT_RESIZEBOX, RESIZE_LRTB, 14, 387, 398, 76, 87, 0x0, STR_RESIZE_BUTTON}, // ORDER_WIDGET_RESIZE
+ { WIDGETS_END},
};
static const WindowDesc _orders_train_desc = {
@@ -616,23 +757,32 @@
OrdersWndProc
};
+/**
+ * Widget definition for player orders (!train)
+ */
static const Widget _orders_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_RIGHT, 14, 11, 409, 0, 13, STR_8829_ORDERS, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PANEL, RESIZE_RB, 14, 0, 397, 14, 75, 0x0, STR_8852_ORDERS_LIST_CLICK_ON_ORDER},
-{ WWT_SCROLLBAR, RESIZE_LRB, 14, 398, 409, 14, 75, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
-{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 63, 76, 87, STR_8823_SKIP, STR_8853_SKIP_THE_CURRENT_ORDER},
-{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 64, 128, 76, 87, STR_8824_DELETE, STR_8854_DELETE_THE_HIGHLIGHTED},
-{ WWT_EMPTY, RESIZE_TB, 14, 0, 0, 76, 87, 0x0, 0x0},
-{ WWT_TEXTBTN, RESIZE_TB, 14, 129, 192, 76, 87, STR_8826_GO_TO, STR_8856_INSERT_A_NEW_ORDER_BEFORE},
-{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 193, 256, 76, 87, STR_FULLLOAD_OR_SERVICE, STR_NULL},
-{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 257, 319, 76, 87, STR_8828_UNLOAD, STR_8858_MAKE_THE_HIGHLIGHTED_ORDER},
-{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 257, 319, 76, 87, STR_REFIT, STR_REFIT_TIP},
-{ WWT_PUSHTXTBTN, RESIZE_TB, 14, 320, 383, 76, 87, STR_886F_TRANSFER, STR_886D_MAKE_THE_HIGHLIGHTED_ORDER},
-{ WWT_PUSHIMGBTN, RESIZE_TB, 14, 384, 397, 76, 87, SPR_SHARED_ORDERS_ICON, STR_VEH_WITH_SHARED_ORDERS_LIST_TIP},
-{ WWT_PANEL, RESIZE_RTB, 14, 397, 396, 76, 87, 0x0, STR_NULL},
-{ WWT_RESIZEBOX, RESIZE_LRTB, 14, 398, 409, 76, 87, 0x0, STR_RESIZE_BUTTON},
-{ WIDGETS_END},
+ { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // ORDER_WIDGET_CLOSEBOX
+ { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 409, 0, 13, STR_8829_ORDERS, STR_018C_WINDOW_TITLE_DRAG_THIS}, // ORDER_WIDGET_CAPTION
+
+ { WWT_PANEL, RESIZE_RB, 14, 0, 397, 14, 75, 0x0, STR_8852_ORDERS_LIST_CLICK_ON_ORDER}, // ORDER_WIDGET_ORDER_LIST
+
+ { WWT_SCROLLBAR, RESIZE_LRB, 14, 398, 409, 14, 75, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // ORDER_WIDGET_SCROLLBAR
+
+ { WWT_PUSHTXTBTN, RESIZE_TB, 14, 0, 63, 76, 87, STR_8823_SKIP, STR_8853_SKIP_THE_CURRENT_ORDER}, // ORDER_WIDGET_SKIP
+ { WWT_PUSHTXTBTN, RESIZE_TB, 14, 64, 128, 76, 87, STR_8824_DELETE, STR_8854_DELETE_THE_HIGHLIGHTED}, // ORDER_WIDGET_DELETE
+ { WWT_EMPTY, RESIZE_TB, 14, 0, 0, 76, 87, 0x0, 0x0}, // ORDER_WIDGET_NON_STOP
+ { WWT_TEXTBTN, RESIZE_TB, 14, 129, 192, 76, 87, STR_8826_GO_TO, STR_8856_INSERT_A_NEW_ORDER_BEFORE}, // ORDER_WIDGET_GOTO
+ { WWT_PUSHTXTBTN, RESIZE_TB, 14, 193, 256, 76, 87, STR_FULLLOAD_OR_SERVICE, STR_NULL}, // ORDER_WIDGET_FULL_LOAD
+ { WWT_PUSHTXTBTN, RESIZE_TB, 14, 257, 319, 76, 87, STR_8828_UNLOAD, STR_8858_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_UNLOAD
+ { WWT_PUSHTXTBTN, RESIZE_TB, 14, 257, 319, 76, 87, STR_REFIT, STR_REFIT_TIP}, // ORDER_WIDGET_REFIT
+ { WWT_PUSHTXTBTN, RESIZE_TB, 14, 320, 383, 76, 87, STR_886F_TRANSFER, STR_886D_MAKE_THE_HIGHLIGHTED_ORDER}, // ORDER_WIDGET_TRANSFER
+
+ { WWT_PUSHIMGBTN, RESIZE_TB, 14, 384, 397, 76, 87, SPR_SHARED_ORDERS_ICON, STR_VEH_WITH_SHARED_ORDERS_LIST_TIP}, // ORDER_WIDGET_SHARED_ORDER_LIST
+
+ { WWT_PANEL, RESIZE_RTB, 14, 397, 396, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_RESIZE_BAR
+
+ { WWT_RESIZEBOX, RESIZE_LRTB, 14, 398, 409, 76, 87, 0x0, STR_RESIZE_BUTTON}, // ORDER_WIDGET_RESIZE
+ { WIDGETS_END},
};
static const WindowDesc _orders_desc = {
@@ -643,20 +793,32 @@
OrdersWndProc
};
+/**
+ * Widget definition for competitor orders
+ */
static const Widget _other_orders_widgets[] = {
-{ WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW},
-{ WWT_CAPTION, RESIZE_RIGHT, 14, 11, 331, 0, 13, STR_A00B_ORDERS, STR_018C_WINDOW_TITLE_DRAG_THIS},
-{ WWT_PANEL, RESIZE_RB, 14, 0, 319, 14, 75, 0x0, STR_8852_ORDERS_LIST_CLICK_ON_ORDER},
-{ WWT_SCROLLBAR, RESIZE_LRB, 14, 320, 331, 14, 75, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST},
-{ WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL},
-{ WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL},
-{ WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL},
-{ WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL},
-{ WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL},
-{ WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL},
-{ WWT_PANEL, RESIZE_RTB, 14, 0, 319, 76, 87, 0x0, STR_NULL},
-{ WWT_RESIZEBOX, RESIZE_LRTB, 14, 320, 331, 76, 87, 0x0, STR_RESIZE_BUTTON},
-{ WIDGETS_END},
+ { WWT_CLOSEBOX, RESIZE_NONE, 14, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, // ORDER_WIDGET_CLOSEBOX
+ { WWT_CAPTION, RESIZE_RIGHT, 14, 11, 331, 0, 13, STR_A00B_ORDERS, STR_018C_WINDOW_TITLE_DRAG_THIS}, // ORDER_WIDGET_CAPTION
+
+ { WWT_PANEL, RESIZE_RB, 14, 0, 319, 14, 75, 0x0, STR_8852_ORDERS_LIST_CLICK_ON_ORDER}, // ORDER_WIDGET_ORDER_LIST
+
+ { WWT_SCROLLBAR, RESIZE_LRB, 14, 320, 331, 14, 75, 0x0, STR_0190_SCROLL_BAR_SCROLLS_LIST}, // ORDER_WIDGET_SCROLLBAR
+
+ { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_SKIP
+ { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_DELETE
+ { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_NON_STOP
+ { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_GOTO
+ { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_FULL_LOAD
+ { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_UNLOAD
+ { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_REFIT
+ { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_TRANSFER
+
+ { WWT_EMPTY, RESIZE_NONE, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_SHARED_ORDER_LIST
+
+ { WWT_PANEL, RESIZE_RTB, 14, 0, 319, 76, 87, 0x0, STR_NULL}, // ORDER_WIDGET_RESIZE_BAR
+
+ { WWT_RESIZEBOX, RESIZE_LRTB, 14, 320, 331, 76, 87, 0x0, STR_RESIZE_BUTTON}, // ORDER_WIDGET_RESIZE
+ { WIDGETS_END},
};
static const WindowDesc _other_orders_desc = {
--- a/src/players.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/players.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -193,9 +193,17 @@
p->yearly_expenses[0][_yearly_expenses_type] += cost;
- if (HASBIT(1<<7|1<<8|1<<9|1<<10, _yearly_expenses_type)) {
+ if (HASBIT(1 << EXPENSES_TRAIN_INC |
+ 1 << EXPENSES_ROADVEH_INC |
+ 1 << EXPENSES_AIRCRAFT_INC |
+ 1 << EXPENSES_SHIP_INC, _yearly_expenses_type)) {
p->cur_economy.income -= cost;
- } else if (HASBIT(1<<2|1<<3|1<<4|1<<5|1<<6|1<<11, _yearly_expenses_type)) {
+ } else if (HASBIT(1 << EXPENSES_TRAIN_RUN |
+ 1 << EXPENSES_ROADVEH_RUN |
+ 1 << EXPENSES_AIRCRAFT_RUN |
+ 1 << EXPENSES_SHIP_RUN |
+ 1 << EXPENSES_PROPERTY |
+ 1 << EXPENSES_LOAN_INT, _yearly_expenses_type)) {
p->cur_economy.expenses -= cost;
}
--- a/src/rail_cmd.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/rail_cmd.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -206,20 +206,17 @@
}
/* no special foundation */
- if ((~_valid_tileh_slopes[0][tileh] & rail_bits) == 0)
+ if ((~_valid_tileh_slopes[0][tileh] & rail_bits) == 0) {
return 0;
+ } else if (!_patches.build_on_slopes) {
+ return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION);
+ }
if ((~_valid_tileh_slopes[1][tileh] & rail_bits) == 0 || ( // whole tile is leveled up
(rail_bits == TRACK_BIT_X || rail_bits == TRACK_BIT_Y) &&
(tileh == SLOPE_W || tileh == SLOPE_S || tileh == SLOPE_E || tileh == SLOPE_N)
)) { // partly up
- if (existing != 0) {
- return 0;
- } else if (!_patches.build_on_slopes) {
- return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION);
- } else {
- return _price.terraform;
- }
+ return (existing != 0) ? 0 : _price.terraform;
}
}
return_cmd_error(STR_1000_LAND_SLOPED_IN_WRONG_DIRECTION);
--- a/src/rail_gui.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/rail_gui.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -165,32 +165,27 @@
static void GenericPlaceSignals(TileIndex tile)
{
- byte trackstat;
- uint i;
-
- trackstat = (byte)GetTileTrackStatus(tile, TRANSPORT_RAIL, 0);
+ TrackBits trackbits = (TrackBits)GB(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0), 0, 6);
- if (trackstat & TRACK_BIT_VERT) // N-S direction
- trackstat = (_tile_fract_coords.x <= _tile_fract_coords.y) ? TRACK_BIT_RIGHT : TRACK_BIT_LEFT;
-
- if (trackstat & TRACK_BIT_HORZ) // E-W direction
- trackstat = (_tile_fract_coords.x + _tile_fract_coords.y <= 15) ? TRACK_BIT_UPPER : TRACK_BIT_LOWER;
-
- // Lookup the bit index
- i = 0;
- if (trackstat != 0) {
- for (; !(trackstat & 1); trackstat >>= 1) i++;
+ if (trackbits & TRACK_BIT_VERT) { // N-S direction
+ trackbits = (_tile_fract_coords.x <= _tile_fract_coords.y) ? TRACK_BIT_RIGHT : TRACK_BIT_LEFT;
}
+ if (trackbits & TRACK_BIT_HORZ) { // E-W direction
+ trackbits = (_tile_fract_coords.x + _tile_fract_coords.y <= 15) ? TRACK_BIT_UPPER : TRACK_BIT_LOWER;
+ }
+
+ Track track = TrackBitsToTrack(trackbits);
+
if (!_remove_button_clicked) {
- uint32 p1 = GB(i, 0, 3);
+ uint32 p1 = track;
SB(p1, 3, 1, _ctrl_pressed);
SB(p1, 4, 1, _cur_year < _patches.semaphore_build_before);
DoCommandP(tile, p1, 0, CcPlaySound1E,
CMD_BUILD_SIGNALS | CMD_AUTO | CMD_MSG(STR_1010_CAN_T_BUILD_SIGNALS_HERE));
} else {
- DoCommandP(tile, i, 0, CcPlaySound1E,
+ DoCommandP(tile, track, 0, CcPlaySound1E,
CMD_REMOVE_SIGNALS | CMD_AUTO | CMD_MSG(STR_1013_CAN_T_REMOVE_SIGNALS_FROM));
}
}
--- a/src/road_cmd.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/road_cmd.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -99,6 +99,11 @@
* @param flags operation to perform
* @param p1 bit 0..3 road pieces to remove (RoadBits)
* bit 4..5 road type
+ * bit 6 ignore the fact that the tram track has not been removed
+ * yet when removing the road bits when not actually doing
+ * it. Makes it possible to test whether the road bits can
+ * be removed from a level crossing without physically
+ * removing the tram bits before the test.
* @param p2 unused
*/
int32 CmdRemoveRoad(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
@@ -236,7 +241,7 @@
/* Don't allow road to be removed from the crossing when there is tram;
* we can't draw the crossing without trambits ;) */
- if (rt == ROADTYPE_ROAD && HASBIT(GetRoadTypes(tile), ROADTYPE_TRAM)) return CMD_ERROR;
+ if (rt == ROADTYPE_ROAD && HASBIT(GetRoadTypes(tile), ROADTYPE_TRAM) && ((flags & DC_EXEC) || !HASBIT(p1, 6))) return CMD_ERROR;
if (flags & DC_EXEC) {
if (rt == ROADTYPE_ROAD) {
@@ -797,12 +802,20 @@
#undef M
case ROAD_TILE_CROSSING: {
- int32 ret;
+ RoadTypes rts = GetRoadTypes(tile);
+ int32 ret = 0;
if (flags & DC_AUTO) return_cmd_error(STR_1801_MUST_REMOVE_ROAD_FIRST);
- ret = DoCommand(tile, GetCrossingRoadBits(tile), 0, flags, CMD_REMOVE_ROAD);
- if (CmdFailed(ret)) return CMD_ERROR;
+ /* Must iterate over the roadtypes in a reverse manner because
+ * tram tracks must be removed before the road bits. */
+ for (RoadType rt = ROADTYPE_HWAY; rt >= ROADTYPE_ROAD; rt--) {
+ if (HASBIT(rts, rt)) {
+ int32 tmp_ret = DoCommand(tile, 1 << 6 | rt << 4 | GetCrossingRoadBits(tile), 0, flags, CMD_REMOVE_ROAD);
+ if (CmdFailed(tmp_ret)) return tmp_ret;
+ ret += tmp_ret;
+ }
+ }
if (flags & DC_EXEC) {
DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR);
--- a/src/roadveh_cmd.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/roadveh_cmd.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -1412,7 +1412,7 @@
case TRACKDIR_RVREV_SW: needed = ROAD_NE; break;
case TRACKDIR_RVREV_NW: needed = ROAD_SE; break;
}
- if (!IsTileType(tile, MP_STREET) || GetRoadTileType(tile) != ROAD_TILE_NORMAL || (needed & GetRoadBits(tile, ROADTYPE_TRAM)) == ROAD_NONE) {
+ if (!IsTileType(tile, MP_STREET) || GetRoadTileType(tile) != ROAD_TILE_NORMAL || HasRoadWorks(tile) || (needed & GetRoadBits(tile, ROADTYPE_TRAM)) == ROAD_NONE) {
/* The tram cannot turn here */
v->cur_speed = 0;
return;
--- a/src/saveload.h Fri Jun 01 20:54:09 2007 +0000
+++ b/src/saveload.h Tue Jun 12 18:02:11 2007 +0000
@@ -203,7 +203,7 @@
#define SLE_CONDNULL(length, from, to) SLE_CONDARR(NullStruct, null, SLE_FILE_U8 | SLE_VAR_NULL | SLF_CONFIG_NO, length, from, to)
/* Translate values ingame to different values in the savegame and vv */
-#define SLE_WRITEBYTE(base, variable, game_value, file_value) SLE_GENERAL(SL_WRITEBYTE, base, variable, 0, 0, game_value, file_value)
+#define SLE_WRITEBYTE(base, variable, value) SLE_GENERAL(SL_WRITEBYTE, base, variable, 0, 0, value, value)
/* Load common code and put it into each struct (currently only for vehicles */
#define SLE_INCLUDE(base, variable, include_index) SLE_GENERAL(SL_INCLUDE, base, variable, 0, 0, include_index, 0)
--- a/src/settings.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/settings.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -46,6 +46,7 @@
#include "gfx.h"
#include "fontcache.h"
#endif
+#include "spritecache.h"
/** The patch values that are used for new games and/or modified in config file */
Patches _patches_newgame;
@@ -1251,6 +1252,7 @@
SDTG_VAR("medium_size", SLE_UINT, S, 0, _freetype.medium_size, 10, 0, 72, 0, STR_NULL, NULL),
SDTG_VAR("large_size", SLE_UINT, S, 0, _freetype.large_size, 16, 0, 72, 0, STR_NULL, NULL),
#endif
+ SDTG_VAR("sprite_cache_size",SLE_UINT, S, 0, _sprite_cache_size, 4, 1, 64, 0, STR_NULL, NULL),
SDTG_END()
};
@@ -1278,7 +1280,7 @@
SDTG_VAR("max_spectators", SLE_UINT8, S, 0, _network_game_info.spectators_max, 10, 0, 10, 0, STR_NULL, NULL),
SDTG_VAR("restart_game_year", SLE_INT32, S,D0, _network_restart_game_year, 0, MIN_YEAR, MAX_YEAR, 1, STR_NULL, NULL),
SDTG_VAR("min_players", SLE_UINT8, S, 0, _network_min_players, 0, 0, 10, 0, STR_NULL, NULL),
- SDTG_OMANY("server_lang", SLE_UINT8, S, 0, _network_game_info.server_lang, 0, 3, "ANY|ENGLISH|GERMAN|FRENCH", STR_NULL, NULL),
+ SDTG_OMANY("server_lang", SLE_UINT8, S, 0, _network_game_info.server_lang, 0, 28, "ANY|ENGLISH|GERMAN|FRENCH|BRAZILIAN|BULGARIAN|CHINESE|CZECH|DANISH|DUTCH|ESPERANTO|FINNISH|HUNGARIAN|ICELANDIC|ITALIAN|JAPANESE|KOREAN|LITHUANIAN|NORWEGIAN|POLISH|PORTUGUESE|ROMANIAN|RUSSIAN|SLOVAK|SLOVENIAN|SPANISH|SWEDISH|TURKISH|UKRAINIAN", STR_NULL, NULL),
SDTG_END()
};
#endif /* ENABLE_NETWORK */
--- a/src/settings_gui.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/settings_gui.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -66,6 +66,21 @@
return buf;
}
+static StringID _town_names[SPECSTR_TOWNNAME_LAST - SPECSTR_TOWNNAME_START + 2] = {STR_NULL};
+
+void SortTownGeneratorNames()
+{
+ int nb_town_names = SPECSTR_TOWNNAME_LAST - SPECSTR_TOWNNAME_START + 1;
+ /* Init the strings */
+ if (_town_names[0] == STR_NULL) {
+ for (int i = 0; i < nb_town_names; i++) _town_names[i] = STR_TOWNNAME_ORIGINAL_ENGLISH + i;
+ _town_names[nb_town_names] = INVALID_STRING_ID;
+ }
+
+ /* Sort the strings */
+ qsort(&_town_names[0], nb_town_names, sizeof(StringID), &StringIDSorter);
+}
+
static int GetCurRes()
{
int i;
@@ -136,8 +151,14 @@
ShowDropDownMenu(w, _driveside_dropdown, _opt_ptr->road_side, 11, i, 0);
} return;
case 13: case 14: { /* Setup townname dropdown */
- int i = _opt_ptr->town_name;
- ShowDropDownMenu(w, BuildDynamicDropdown(STR_TOWNNAME_ORIGINAL_ENGLISH, SPECSTR_TOWNNAME_LAST - SPECSTR_TOWNNAME_START + 1), i, 14, (_game_mode == GM_MENU) ? 0 : (-1) ^ (1 << i), 0);
+ uint sel = 0;
+ for (uint i = 0; i < lengthof(_town_names) - 1; i++) {
+ if (_town_names[i] == STR_TOWNNAME_ORIGINAL_ENGLISH + _opt_ptr->town_name) {
+ sel = i;
+ break;
+ }
+ }
+ ShowDropDownMenu(w, _town_names, sel, 14, (_game_mode == GM_MENU) ? 0 : (-1) ^ (1 << sel), 0);
return;
}
case 16: case 17: /* Setup autosave dropdown */
@@ -193,7 +214,7 @@
break;
case 14: /* Town names */
if (_game_mode == GM_MENU) {
- _opt_ptr->town_name = e->we.dropdown.index;
+ _opt_ptr->town_name = _town_names[e->we.dropdown.index] - STR_TOWNNAME_ORIGINAL_ENGLISH;
InvalidateWindow(WC_GAME_OPTIONS, 0);
}
break;
--- a/src/sound.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/sound.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -152,7 +152,7 @@
}
-static const byte _vol_factor_by_zoom[] = {255, 190, 134, 87, 49};
+static const byte _vol_factor_by_zoom[] = {255, 190, 134, 87};
assert_compile(lengthof(_vol_factor_by_zoom) == ZOOM_LVL_END);
static const byte _sound_base_vol[] = {
--- a/src/spritecache.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/spritecache.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -11,10 +11,11 @@
#include "table/sprites.h"
#include "fileio.h"
#include "helpers.hpp"
+#include "spriteloader/grf.hpp"
+#include "blitter/blitter.hpp"
-#ifndef SPRITE_CACHE_SIZE
-# define SPRITE_CACHE_SIZE 2*1024*1024
-#endif /* SPRITE_CACHE_SIZE */
+/* Default of 4MB spritecache */
+uint _sprite_cache_size = 4;
struct SpriteCache {
@@ -115,12 +116,11 @@
return GetSpriteCache(id)->file_pos != 0;
}
-static void* AllocSprite(size_t);
+void* AllocSprite(size_t);
static void* ReadSprite(SpriteCache *sc, SpriteID id)
{
- uint num;
- byte type;
+ uint32 file_pos = sc->file_pos;
DEBUG(sprite, 9, "Load sprite %d", id);
@@ -129,54 +129,33 @@
/* SPR_IMG_QUERY is a BIG FAT RED ? */
id = SPR_IMG_QUERY;
- sc = GetSpriteCache(SPR_IMG_QUERY);
+ file_pos = GetSpriteCache(SPR_IMG_QUERY)->file_pos;
}
- FioSeekToFile(sc->file_pos);
+ FioSeekToFile(file_pos);
- num = FioReadWord();
- type = FioReadByte();
+ /* Read the size and type */
+ int num = FioReadWord();
+ byte type = FioReadByte();
+ /* Type 0xFF indicates either a colormap or some other non-sprite info */
if (type == 0xFF) {
- byte* dest = (byte*)AllocSprite(num);
+ byte *dest = (byte *)AllocSprite(num);
sc->ptr = dest;
FioReadBlock(dest, num);
return dest;
- } else {
- uint height = FioReadByte();
- uint width = FioReadWord();
- Sprite* sprite;
- byte* dest;
-
- num = (type & 0x02) ? width * height : num - 8;
- sprite = (Sprite*)AllocSprite(sizeof(*sprite) + num);
- sc->ptr = sprite;
- sprite->info = type;
- sprite->height = (id != 142) ? height : 10; // Compensate for a TTD bug
- sprite->width = width;
- sprite->x_offs = FioReadWord();
- sprite->y_offs = FioReadWord();
+ }
- dest = sprite->data;
- while (num > 0) {
- int8 i = FioReadByte();
+ SpriteLoaderGrf sprite_loader;
+ SpriteLoader::Sprite sprite;
- if (i >= 0) {
- num -= i;
- for (; i > 0; --i) *dest++ = FioReadByte();
- } else {
- const byte* rel = dest - (((i & 7) << 8) | FioReadByte());
+ if (!sprite_loader.LoadSprite(&sprite, file_pos)) return NULL;
+ if (id == 142) sprite.height = 10; // Compensate for a TTD bug
+ sc->ptr = BlitterFactoryBase::GetCurrentBlitter()->Encode(&sprite, &AllocSprite);
+ free(sprite.data);
- i = -(i >> 3);
- num -= i;
-
- for (; i > 0; --i) *dest++ = *rel++;
- }
- }
-
- return sprite;
- }
+ return sc->ptr;
}
@@ -347,7 +326,7 @@
}
}
-static void* AllocSprite(size_t mem_req)
+void* AllocSprite(size_t mem_req)
{
mem_req += sizeof(MemBlock);
@@ -408,10 +387,10 @@
void GfxInitSpriteMem()
{
/* initialize sprite cache heap */
- if (_spritecache_ptr == NULL) _spritecache_ptr = (MemBlock*)malloc(SPRITE_CACHE_SIZE);
+ if (_spritecache_ptr == NULL) _spritecache_ptr = (MemBlock*)malloc(_sprite_cache_size * 1024 * 1024);
/* A big free block */
- _spritecache_ptr->size = (SPRITE_CACHE_SIZE - sizeof(MemBlock)) | S_FREE_MASK;
+ _spritecache_ptr->size = ((_sprite_cache_size * 1024 * 1024) - sizeof(MemBlock)) | S_FREE_MASK;
/* Sentinel block (identified by size == 0) */
NextBlock(_spritecache_ptr)->size = 0;
--- a/src/spritecache.h Fri Jun 01 20:54:09 2007 +0000
+++ b/src/spritecache.h Tue Jun 12 18:02:11 2007 +0000
@@ -6,7 +6,6 @@
#define SPRITECACHE_H
struct Sprite {
- byte info;
byte height;
uint16 width;
int16 x_offs;
@@ -14,6 +13,8 @@
byte data[VARARRAY_SIZE];
};
+extern uint _sprite_cache_size;
+
const void *GetRawSprite(SpriteID sprite);
bool SpriteExists(SpriteID sprite);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/spriteloader/grf.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -0,0 +1,96 @@
+#include "../stdafx.h"
+#include "../gfx.h"
+#include "../fileio.h"
+#include "../debug.h"
+#include "grf.hpp"
+
+bool SpriteLoaderGrf::LoadSprite(SpriteLoader::Sprite *sprite, uint32 file_pos)
+{
+ /* Open the right file and go to the correct position */
+ FioSeekToFile(file_pos);
+
+ /* Read the size and type */
+ int num = FioReadWord();
+ byte type = FioReadByte();
+
+ /* Type 0xFF indicates either a colormap or some other non-sprite info; we do not handle them here */
+ if (type == 0xFF) return false;
+
+ sprite->height = FioReadByte();
+ sprite->width = FioReadWord();
+ sprite->x_offs = FioReadWord();
+ sprite->y_offs = FioReadWord();
+
+ /* 0x02 indicates it is a compressed sprite, so we can't rely on 'num' to be valid.
+ * In case it is uncompressed, the size is 'num' - 8 (header-size). */
+ num = (type & 0x02) ? sprite->width * sprite->height : num - 8;
+
+ /* XXX -- We should use a pre-located memory segment for this, malloc/free is pretty expensive */
+ byte *dest_orig = MallocT<byte>(num);
+ byte *dest = dest_orig;
+
+ /* Read the file, which has some kind of compression */
+ while (num > 0) {
+ int8 code = FioReadByte();
+
+ if (code >= 0) {
+ /* Plain bytes to read */
+ int size = (code == 0) ? 0x80 : code;
+ num -= size;
+ for (; size > 0; size--) {
+ *dest = FioReadByte();
+ dest++;
+ }
+ } else {
+ /* Copy bytes from earlier in the sprite */
+ const uint data_offset = ((code & 7) << 8) | FioReadByte();
+ int size = -(code >> 3);
+ num -= size;
+ for (; size > 0; size--) {
+ *dest = *(dest - data_offset);
+ dest++;
+ }
+ }
+ }
+
+ assert(num == 0);
+
+ sprite->data = CallocT<SpriteLoader::CommonPixel>(sprite->width * sprite->height);
+
+ /* When there are transparency pixels, this format has an other trick.. decode it */
+ if (type & 0x08) {
+ for (int y = 0; y < sprite->height; y++) {
+ bool last_item = false;
+ /* Look up in the header-table where the real data is stored for this row */
+ int offset = (dest_orig[y * 2 + 1] << 8) | dest_orig[y * 2];
+ /* Go to that row */
+ dest = &dest_orig[offset];
+
+ do {
+ SpriteLoader::CommonPixel *data;
+ /* Read the header:
+ * 0 .. 14 - length
+ * 15 - last_item
+ * 16 .. 31 - transparency bytes */
+ last_item = ((*dest) & 0x80) != 0;
+ int length = (*dest++) & 0x7F;
+ int skip = *dest++;
+
+ data = &sprite->data[y * sprite->width + skip];
+
+ for (int x = 0; x < length; x++) {
+ data->m = *dest;
+ dest++;
+ data++;
+ }
+ } while (!last_item);
+ }
+ } else {
+ dest = dest_orig;
+ for (int i = 0; i < sprite->width * sprite->height; i++)
+ sprite->data[i].m = dest[i];
+ }
+
+ free(dest_orig);
+ return true;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/spriteloader/grf.hpp Tue Jun 12 18:02:11 2007 +0000
@@ -0,0 +1,18 @@
+/* $Id$ */
+
+/** @file grf.hpp */
+
+#ifndef SPRITELOADER_GRF_HPP
+#define SPRITELOADER_GRF_HPP
+
+#include "spriteloader.hpp"
+
+class SpriteLoaderGrf : public SpriteLoader {
+public:
+ /**
+ * Load a sprite from the disk and return a sprite struct which is the same for all loaders.
+ */
+ bool LoadSprite(SpriteLoader::Sprite *sprite, uint32 file_pos);
+};
+
+#endif /* SPRITELOADER_GRF_HPP */
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/spriteloader/spriteloader.hpp Tue Jun 12 18:02:11 2007 +0000
@@ -0,0 +1,34 @@
+/* $Id$ */
+
+/** @file spriteloader.hpp */
+
+#ifndef SPRITELOADER_HPP
+#define SPRITELOADER_HPP
+
+class SpriteLoader {
+public:
+ struct CommonPixel {
+ uint8 r; ///< Red-channel
+ uint8 g; ///< Green-channel
+ uint8 b; ///< Blue-channel
+ uint8 a; ///< Alpha-channel
+ uint8 m; ///< Remap-channel
+ };
+
+ struct Sprite {
+ uint16 height; ///< Height of the sprite
+ uint16 width; ///< Width of the sprite
+ int16 x_offs; ///< The x-offset of where the sprite will be drawn
+ int16 y_offs; ///< The y-offset of where the sprite will be drawn
+ SpriteLoader::CommonPixel *data; ///< The sprite itself
+ };
+
+ /**
+ * Load a sprite from the disk and return a sprite struct which is the same for all loaders.
+ */
+ virtual bool LoadSprite(SpriteLoader::Sprite *sprite, uint32 file_pos) = 0;
+
+ virtual ~SpriteLoader() { }
+};
+
+#endif /* SPRITELOADER_HPP */
--- a/src/station.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/station.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -133,7 +133,7 @@
}
}
-void Station::MarkTilesDirty() const
+void Station::MarkTilesDirty(bool cargo_change) const
{
TileIndex tile = train_tile;
int w, h;
@@ -141,6 +141,15 @@
/* XXX No station is recorded as 0, not INVALID_TILE... */
if (tile == 0) return;
+ /* cargo_change is set if we're refreshing the tiles due to cargo moving
+ * around. */
+ if (cargo_change) {
+ /* Don't waste time updating if there are no custom station graphics
+ * that might change. Even if there are custom graphics, they might
+ * not change. Unfortunately we have no way of telling. */
+ if (this->num_specs == 0) return;
+ }
+
for (h = 0; h < trainst_h; h++) {
for (w = 0; w < trainst_w; w++) {
if (TileBelongsToRailStation(tile)) {
--- a/src/station.h Fri Jun 01 20:54:09 2007 +0000
+++ b/src/station.h Tue Jun 12 18:02:11 2007 +0000
@@ -182,7 +182,7 @@
void AddFacility(byte new_facility_bit, TileIndex facil_xy);
void MarkDirty() const;
- void MarkTilesDirty() const;
+ void MarkTilesDirty(bool cargo_change) const;
bool TileBelongsToRailStation(TileIndex tile) const;
uint GetPlatformLength(TileIndex tile, DiagDirection dir) const;
uint GetPlatformLength(TileIndex tile) const;
--- a/src/station_cmd.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/station_cmd.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -978,7 +978,7 @@
tile_org += tile_delta ^ TileDiffXY(1, 1); // perpendicular to tile_delta
} while (--numtracks);
- st->MarkTilesDirty();
+ st->MarkTilesDirty(false);
UpdateStationVirtCoordDirty(st);
UpdateStationAcceptance(st, false);
RebuildStationLists();
@@ -1105,7 +1105,7 @@
// now we need to make the "spanned" area of the railway station smaller if we deleted something at the edges.
// we also need to adjust train_tile.
MakeRailwayStationAreaSmaller(st);
- st->MarkTilesDirty();
+ st->MarkTilesDirty(false);
UpdateStationSignCoord(st);
// if we deleted the whole station, delete the train facility.
@@ -2484,7 +2484,7 @@
st->goods[type].enroute_from = st->index;
st->goods[type].enroute_from_xy = st->xy;
InvalidateWindow(WC_STATION_VIEW, st->index);
- st->MarkTilesDirty();
+ st->MarkTilesDirty(true);
}
/** Rename a station
--- a/src/stdafx.h Fri Jun 01 20:54:09 2007 +0000
+++ b/src/stdafx.h Tue Jun 12 18:02:11 2007 +0000
@@ -197,6 +197,7 @@
* call to the same function and is not thread- or reentrancy-safe */
#if !defined(STRGEN)
# if defined(WIN32) || defined(WIN64)
+char *getcwd(char *buf, size_t size);
# include <tchar.h>
/* XXX - WinCE without MSVCRT doesn't support wfopen, so it seems */
# if !defined(WINCE)
--- a/src/strings.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/strings.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -1101,6 +1101,9 @@
}
}
+extern void SortNetworkLanguages();
+extern void SortTownGeneratorNames();
+
bool ReadLanguagePack(int lang_index)
{
int tot_count, i;
@@ -1156,6 +1159,8 @@
_dynlang.curr = lang_index;
SetCurrentGrfLangID(_langpack->isocode);
+ SortNetworkLanguages();
+ SortTownGeneratorNames();
return true;
}
@@ -1191,6 +1196,18 @@
return strcmp(cmp1->file, cmp2->file);
}
+int CDECL StringIDSorter(const void *a, const void *b)
+{
+ const StringID va = *(const StringID*)a;
+ const StringID vb = *(const StringID*)b;
+ char stra[512];
+ char strb[512];
+ GetString(stra, va, lastof(stra));
+ GetString(strb, vb, lastof(strb));
+
+ return strcmp(stra, strb);
+}
+
/**
* Checks whether the given language is already found.
* @param langs languages we've found so fa
--- a/src/strings.h Fri Jun 01 20:54:09 2007 +0000
+++ b/src/strings.h Tue Jun 12 18:02:11 2007 +0000
@@ -16,4 +16,6 @@
bool ReadLanguagePack(int index);
void InitializeLanguagePacks();
+int CDECL StringIDSorter(const void *a, const void *b);
+
#endif /* STRINGS_H */
--- a/src/table/build_industry.h Fri Jun 01 20:54:09 2007 +0000
+++ b/src/table/build_industry.h Tue Jun 12 18:02:11 2007 +0000
@@ -1148,7 +1148,7 @@
messages : Closure production up production down */
static const IndustrySpec _origin_industry_specs[NEW_INDUSTRYOFFSET] = {
MI(_tile_table_coal_mine, 0, NULL,
- 210, 2, 3, 0, 0, 8, 8, 0, 0, 215,
+ 1680, 2, 3, 0, 0, 8, 8, 0, 0, 215,
IT_POWER_STATION, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_COAL, 15, CT_INVALID, 0, 5,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1158,7 +1158,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4836_NEW_COAL_SEAM_FOUND_AT, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_power_station, 0, NULL,
- 30, 2, 2, 0, 0, 5, 5, 0, 0, 184,
+ 240, 2, 2, 0, 0, 5, 5, 0, 0, 184,
IT_COAL_MINE, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_INVALID, 0, CT_INVALID, 0, 5,
CT_COAL, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1168,7 +1168,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_sawmill, 1, _sawmill_sounds,
- 28, 2, 0, 0, 0, 5, 0, 0, 0, 194,
+ 224, 2, 0, 0, 0, 5, 0, 0, 0, 194,
IT_FOREST, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_GOODS, 0, CT_INVALID, 0, 5,
CT_WOOD, 256, CT_INVALID, 0, CT_INVALID, 0,
@@ -1178,7 +1178,7 @@
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_forest, 0, NULL,
- 200, 3, 4, 0, 0, 5, 5, 0, 0, 86,
+ 1600, 3, 4, 0, 0, 5, 5, 0, 0, 86,
IT_SAWMILL, IT_PAPER_MILL, IT_INVALID, CHECK_FOREST,
CT_WOOD, 13, CT_INVALID, 0, 30,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1188,7 +1188,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_483A_INSECT_INFESTATION_CAUSES),
MI(_tile_table_oil_refinery, 0, NULL,
- 31, 2, 2, 2, 0, 4, 4, 4, 0, 191,
+ 244, 2, 2, 2, 0, 4, 4, 4, 0, 191,
IT_OIL_RIG, IT_INVALID, IT_INVALID, CHECK_REFINERY,
CT_GOODS, 0, CT_INVALID, 0, 5,
CT_OIL, 256, CT_INVALID, 0, CT_INVALID, 0,
@@ -1198,7 +1198,7 @@
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_oil_rig, 0, NULL,
- 240, 6, 0, 0, 0, 0, 0, 0, 0, 152,
+ 1920, 6, 0, 0, 0, 0, 0, 0, 0, 152,
IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_OIL_RIG,
CT_OIL, 15, CT_PASSENGERS, 2, 5,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1208,7 +1208,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4837_NEW_OIL_RESERVES_FOUND, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_factory, 1, _factory_sounds,
- 26, 2, 0, 0, 0, 5, 0, 0, 0, 174,
+ 208, 2, 0, 0, 0, 5, 0, 0, 0, 174,
IT_FARM, IT_STEEL_MILL, IT_INVALID, CHECK_NOTHING,
CT_GOODS, 0, CT_INVALID, 0, 5,
CT_LIVESTOCK, 256, CT_GRAIN , 256, CT_STEEL, 256,
@@ -1218,7 +1218,7 @@
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_printing_works, 1, _factory_sounds,
- 26, 0, 2, 0, 0, 0, 5, 0, 0, 174,
+ 208, 0, 2, 0, 0, 0, 5, 0, 0, 174,
IT_PAPER_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_GOODS, 0, CT_INVALID, 0, 5,
CT_PAPER, 256, CT_INVALID, 0, CT_INVALID, 0,
@@ -1228,7 +1228,7 @@
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_steel_mill, 0, NULL,
- 27, 2, 0, 0, 0, 5, 0, 0, 0, 10,
+ 215, 2, 0, 0, 0, 5, 0, 0, 0, 10,
IT_IRON_MINE, IT_FACTORY, IT_INVALID, CHECK_NOTHING,
CT_STEEL, 0, CT_INVALID, 0, 5,
CT_IRON_ORE, 256, CT_INVALID, 0, CT_INVALID, 0,
@@ -1238,7 +1238,7 @@
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_farm, 3, _farm_sounds,
- 250, 2, 4, 0, 0, 9, 9, 0, 0, 48,
+ 2000, 2, 4, 0, 0, 9, 9, 0, 0, 48,
IT_FACTORY, IT_FOOD_PROCESS, IT_INVALID, CHECK_FARM,
CT_GRAIN, 10, CT_LIVESTOCK, 10, 5,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1248,7 +1248,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
MI(_tile_table_copper_mine, 0, NULL,
- 205, 0, 0, 3, 0, 0, 0, 4, 0, 10,
+ 1640, 0, 0, 3, 0, 0, 0, 4, 0, 10,
IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_COPPER_ORE, 10, CT_INVALID, 0, 5,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1257,7 +1257,8 @@
STR_480C_COPPER_ORE_MINE, STR_482D_NEW_UNDER_CONSTRUCTION,
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
- MI(_tile_table_oil_well, 0, NULL, 220, 0, 5, 3, 0, 4, 5, 5, 0, 152,
+ MI(_tile_table_oil_well, 0, NULL,
+ 1760, 0, 5, 3, 0, 4, 5, 5, 0, 152,
IT_OIL_REFINERY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_OIL, 12, CT_INVALID, 0, 5,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1267,7 +1268,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4837_NEW_OIL_RESERVES_FOUND, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_bank, 0, NULL,
- 193, 7, 0, 0, 0, 0, 0, 0, 0, 15,
+ 1544, 7, 0, 0, 0, 0, 0, 0, 0, 15,
IT_BANK_TEMP, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_VALUABLES, 6, CT_INVALID, 0, 5,
CT_VALUABLES, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1277,7 +1278,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_food_process, 0, NULL,
- 26, 0, 2, 2, 0, 0, 3, 4, 0, 55,
+ 206, 0, 2, 2, 0, 0, 3, 4, 0, 55,
IT_FRUIT_PLANTATION, IT_FARM, IT_FARM_2, CHECK_NOTHING,
CT_FOOD, 0, CT_INVALID, 0, 5,
CT_FRUIT, 256, CT_MAIZE, 256, CT_INVALID, 0,
@@ -1287,7 +1288,7 @@
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_paper_mill, 1, _sawmill_sounds,
- 28, 0, 2, 0, 0, 0, 5, 0, 0, 10,
+ 227, 0, 2, 0, 0, 0, 5, 0, 0, 10,
IT_FOREST, IT_PRINTING_WORKS, IT_INVALID, CHECK_NOTHING,
CT_PAPER, 0, CT_INVALID, 0, 5,
CT_WOOD, 256, CT_INVALID, 0, CT_INVALID, 0,
@@ -1297,7 +1298,7 @@
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_gold_mine, 0, NULL,
- 208, 0, 3, 0, 0, 0, 4, 0, 0, 194,
+ 1664, 0, 3, 0, 0, 0, 4, 0, 0, 194,
IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_GOLD, 7, CT_INVALID, 0, 5,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1307,7 +1308,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_bank2, 0, NULL,
- 19, 0, 3, 3, 0, 0, 6, 5, 0, 15,
+ 151, 0, 3, 3, 0, 0, 6, 5, 0, 15,
IT_GOLD_MINE, IT_DIAMOND_MINE, IT_INVALID, CHECK_NOTHING,
CT_INVALID, 0, CT_INVALID, 0, 5,
CT_GOLD, 256, CT_INVALID, 0, CT_INVALID, 0,
@@ -1317,7 +1318,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_diamond_mine, 0, NULL,
- 213, 0, 0, 3, 0, 0, 0, 4, 0, 184,
+ 1704, 0, 0, 3, 0, 0, 0, 4, 0, 184,
IT_BANK_TROPIC_ARCTIC, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_DIAMONDS, 7, CT_INVALID, 0, 5,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1327,7 +1328,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_iron_mine, 0, NULL,
- 220, 2, 0, 0, 0, 5, 0, 0, 0, 55,
+ 1760, 2, 0, 0, 0, 5, 0, 0, 0, 55,
IT_STEEL_MILL, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_IRON_ORE, 10, CT_INVALID, 0, 5,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1337,7 +1338,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_fruit_plantation, 0, NULL,
- 225, 0, 0, 2, 0, 0, 0, 4, 0, 86,
+ 1800, 0, 0, 2, 0, 0, 0, 4, 0, 86,
IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
CT_FRUIT, 10, CT_INVALID, 0, 15,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1347,7 +1348,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
MI(_tile_table_rubber_plantation, 0, NULL,
- 218, 0, 0, 3, 0, 0, 0, 4, 0, 39,
+ 1744, 0, 0, 3, 0, 0, 0, 4, 0, 39,
IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
CT_RUBBER, 10, CT_INVALID, 0, 15,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1357,7 +1358,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
MI(_tile_table_water_supply, 0, NULL,
- 199, 0, 0, 3, 0, 0, 0, 4, 0, 37,
+ 1592, 0, 0, 3, 0, 0, 0, 4, 0, 37,
IT_WATER_TOWER, IT_INVALID, IT_INVALID, CHECK_WATER,
CT_WATER, 12, CT_INVALID, 0, 5,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1367,7 +1368,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_water_tower, 0, NULL,
- 14, 0, 0, 4, 0, 0, 0, 8, 0, 208,
+ 115, 0, 0, 4, 0, 0, 0, 8, 0, 208,
IT_WATER_SUPPLY, IT_INVALID, IT_INVALID, CHECK_WATER,
CT_INVALID, 0, CT_INVALID, 0, 5,
CT_WATER, 256, CT_INVALID, 0, CT_INVALID, 0,
@@ -1377,7 +1378,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_factory2, 1, _factory_sounds,
- 26, 0, 0, 2, 0, 0, 0, 4, 0, 174,
+ 208, 0, 0, 2, 0, 0, 0, 4, 0, 174,
IT_RUBBER_PLANTATION, IT_COPPER_MINE, IT_LUMBER_MILL, CHECK_PLANTATION,
CT_GOODS, 0, CT_INVALID, 0, 5,
CT_RUBBER, 256, CT_COPPER_ORE, 256, CT_WOOD, 256,
@@ -1387,7 +1388,7 @@
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_farm2, 0, NULL,
- 250, 0, 0, 1, 0, 0, 0, 2, 0, 48,
+ 2000, 0, 0, 1, 0, 0, 0, 2, 0, 48,
IT_FOOD_PROCESS, IT_INVALID, IT_INVALID, CHECK_PLANTATION,
CT_MAIZE, 11, CT_INVALID, 0, 5,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1397,7 +1398,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
MI(_tile_table_lumber_mill, 0, NULL,
- 17, 0, 0, 0, 0, 0, 0, 0, 0, 194,
+ 135, 0, 0, 0, 0, 0, 0, 0, 0, 194,
IT_FACTORY_2, IT_INVALID, IT_INVALID, CHECK_LUMBERMILL,
CT_WOOD, 0, CT_INVALID, 0, 5,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1407,7 +1408,7 @@
STR_4834_LACK_OF_NEARBY_TREES_CAUSES, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_cotton_candy, 0, NULL,
- 195, 0, 0, 0, 3, 0, 0, 0, 5, 48,
+ 1560, 0, 0, 0, 3, 0, 0, 0, 5, 48,
IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_COTTON_CANDY, 13, CT_INVALID, 0, 30,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1417,7 +1418,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4838_IMPROVED_FARMING_METHODS, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_candy_factory, 0, NULL,
- 26, 0, 0, 0, 3, 0, 0, 0, 5, 174,
+ 206, 0, 0, 0, 3, 0, 0, 0, 5, 174,
IT_COTTON_CANDY, IT_TOFFEE_QUARRY, IT_SUGAR_MINE, CHECK_NOTHING,
CT_CANDY, 0, CT_INVALID, 0, 5,
CT_SUGAR, 256, CT_TOFFEE, 256, CT_COTTON_CANDY, 256,
@@ -1427,7 +1428,7 @@
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_battery_farm, 0, NULL,
- 187, 0, 0, 0, 3, 0, 0, 0, 4, 39,
+ 1496, 0, 0, 0, 3, 0, 0, 0, 4, 39,
IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_BATTERIES, 11, CT_INVALID, 0, 30,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1437,7 +1438,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4838_IMPROVED_FARMING_METHODS, STR_483A_INSECT_INFESTATION_CAUSES),
MI(_tile_table_cola_wells, 0, NULL,
- 193, 0, 0, 0, 3, 0, 0, 0, 5, 55,
+ 1544, 0, 0, 0, 3, 0, 0, 0, 5, 55,
IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_COLA, 12, CT_INVALID, 0, 5,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1447,7 +1448,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_toy_shop, 0, NULL,
- 17, 0, 0, 0, 3, 0, 0, 0, 4, 208,
+ 133, 0, 0, 0, 3, 0, 0, 0, 4, 208,
IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_INVALID, 0, CT_INVALID, 0, 5,
CT_TOYS, 256, CT_INVALID, 0, CT_INVALID, 0,
@@ -1457,7 +1458,7 @@
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_toy_factory, 0, NULL,
- 20, 0, 0, 0, 3, 0, 0, 0, 5, 10,
+ 163, 0, 0, 0, 3, 0, 0, 0, 5, 10,
IT_PLASTIC_FOUNTAINS, IT_BATTERY_FARM, IT_TOY_SHOP, CHECK_NOTHING,
CT_TOYS, 0, CT_INVALID, 0, 5,
CT_PLASTIC, 256, CT_BATTERIES, 256, CT_INVALID, 0,
@@ -1467,7 +1468,7 @@
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_plastic_fountain, 1, _plastic_mine_sounds,
- 192, 0, 0, 0, 3, 0, 0, 0, 5, 37,
+ 1536, 0, 0, 0, 3, 0, 0, 0, 5, 37,
IT_TOY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_PLASTIC, 14, CT_INVALID, 0, 5,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1477,7 +1478,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_fizzy_drink, 0, NULL,
- 22, 0, 0, 0, 3, 0, 0, 0, 4, 184,
+ 177, 0, 0, 0, 3, 0, 0, 0, 4, 184,
IT_COLA_WELLS, IT_BUBBLE_GENERATOR, IT_INVALID, CHECK_NOTHING,
CT_FIZZY_DRINKS, 0, CT_INVALID, 0, 5,
CT_COLA, 256, CT_BUBBLES, 256, CT_INVALID, 0,
@@ -1487,7 +1488,7 @@
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_bubble_generator, 0, NULL,
- 203, 0, 0, 0, 3, 0, 0, 0, 5, 152,
+ 1624, 0, 0, 0, 3, 0, 0, 0, 5, 152,
IT_FIZZY_DRINK_FACTORY, IT_INVALID, IT_INVALID, CHECK_BUBBLEGEN,
CT_BUBBLES, 13, CT_INVALID, 0, 5,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1497,7 +1498,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_toffee_quarry, 0, NULL,
- 213, 0, 0, 0, 3, 0, 0, 0, 5, 194,
+ 1704, 0, 0, 0, 3, 0, 0, 0, 5, 194,
IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_TOFFEE, 10, CT_INVALID, 0, 5,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
@@ -1507,7 +1508,7 @@
STR_4832_ANNOUNCES_IMMINENT_CLOSURE, STR_4835_INCREASES_PRODUCTION, STR_4839_PRODUCTION_DOWN_BY_50),
MI(_tile_table_sugar_mine, 0, NULL,
- 210, 0, 0, 0, 2, 0, 0, 0, 4, 15,
+ 1680, 0, 0, 0, 2, 0, 0, 0, 4, 15,
IT_CANDY_FACTORY, IT_INVALID, IT_INVALID, CHECK_NOTHING,
CT_SUGAR, 11, CT_INVALID, 0, 5,
CT_INVALID, 0, CT_INVALID, 0, CT_INVALID, 0,
--- a/src/table/files.h Fri Jun 01 20:54:09 2007 +0000
+++ b/src/table/files.h Tue Jun 12 18:02:11 2007 +0000
@@ -59,10 +59,11 @@
{ "autorail.grf", { 0xed, 0x44, 0x7f, 0xbb, 0x19, 0x44, 0x48, 0x4c, 0x07, 0x8a, 0xb1, 0xc1, 0x5c, 0x12, 0x3a, 0x60 } },
{ "canalsw.grf", { 0x13, 0x9c, 0x98, 0xcf, 0xb8, 0x7c, 0xd7, 0x1f, 0xca, 0x34, 0xa5, 0x6b, 0x65, 0x31, 0xec, 0x0f } },
{ "elrailsw.grf", { 0x4f, 0xf9, 0xac, 0x79, 0x50, 0x28, 0x9b, 0xe2, 0x15, 0x30, 0xa8, 0x1e, 0xd5, 0xfd, 0xe1, 0xda } },
- { "openttd.grf", { 0x85, 0x4f, 0xf6, 0xb5, 0xd2, 0xf7, 0xbc, 0x1e, 0xb9, 0xdc, 0x44, 0xef, 0x35, 0x5f, 0x64, 0x9b } },
+ { "openttd.grf", { 0x20, 0x64, 0x4a, 0xf6, 0x75, 0x26, 0x5b, 0x92, 0xbb, 0x6f, 0x8d, 0x0e, 0x34, 0x7e, 0xa6, 0xe3 } },
{ "trkfoundw.grf", { 0x12, 0x33, 0x3f, 0xa3, 0xd1, 0x86, 0x8b, 0x04, 0x53, 0x18, 0x9c, 0xee, 0xf9, 0x2d, 0xf5, 0x95 } },
{ "roadstops.grf", { 0x8c, 0xd9, 0x45, 0x21, 0x28, 0x82, 0x96, 0x45, 0x33, 0x22, 0x7a, 0xb9, 0x0d, 0xf3, 0x67, 0x4a } },
{ "group.grf", { 0xe8, 0x52, 0x5f, 0x1c, 0x3e, 0xf9, 0x91, 0x9d, 0x0f, 0x70, 0x8c, 0x8a, 0x21, 0xa4, 0xc7, 0x02 } },
{ "tramtrkw.grf", { 0x83, 0x0a, 0xf4, 0x9f, 0x29, 0x10, 0x48, 0xfd, 0x76, 0xe9, 0xda, 0xac, 0x5d, 0xa2, 0x30, 0x45 } },
{ "oneway.grf", { 0xbb, 0xc6, 0xa3, 0xb2, 0xb3, 0xa0, 0xc9, 0x3c, 0xc9, 0xee, 0x24, 0x7c, 0xb6, 0x51, 0x74, 0x63 } },
+ { "flags.grf", { 0xa1, 0xd7, 0x72, 0x75, 0x0e, 0x81, 0x86, 0x0e, 0xc9, 0xcd, 0xc2, 0x57, 0xb2, 0x19, 0xe1, 0x0c } },
};
--- a/src/table/sprites.h Fri Jun 01 20:54:09 2007 +0000
+++ b/src/table/sprites.h Tue Jun 12 18:02:11 2007 +0000
@@ -47,7 +47,7 @@
SPR_ASCII_SPACE_BIG = 450,
/* Extra graphic spritenumbers */
- OPENTTD_SPRITES_COUNT = 116, // number of gfx-sprites in openttd.grf
+ OPENTTD_SPRITES_COUNT = 112, // number of gfx-sprites in openttd.grf
SPR_SIGNALS_BASE = 4896,
SPR_CANALS_BASE = SPR_SIGNALS_BASE + 486,
SPR_SLOPES_BASE = SPR_CANALS_BASE + 70,
@@ -62,44 +62,43 @@
SPR_PIN_DOWN = SPR_OPENTTD_BASE + 56,
SPR_BOX_EMPTY = SPR_OPENTTD_BASE + 59,
SPR_BOX_CHECKED = SPR_OPENTTD_BASE + 60,
- SPR_WINDOW_RESIZE = SPR_OPENTTD_BASE + 86, // resize icon
- SPR_HOUSE_ICON = SPR_OPENTTD_BASE + 93,
+ SPR_WINDOW_RESIZE = SPR_OPENTTD_BASE + 82, // resize icon
+ SPR_HOUSE_ICON = SPR_OPENTTD_BASE + 89,
// arrow icons pointing in all 4 directions
- SPR_ARROW_DOWN = SPR_OPENTTD_BASE + 87,
- SPR_ARROW_UP = SPR_OPENTTD_BASE + 88,
- SPR_ARROW_LEFT = SPR_OPENTTD_BASE + 89,
- SPR_ARROW_RIGHT = SPR_OPENTTD_BASE + 90,
+ SPR_ARROW_DOWN = SPR_OPENTTD_BASE + 83,
+ SPR_ARROW_UP = SPR_OPENTTD_BASE + 84,
+ SPR_ARROW_LEFT = SPR_OPENTTD_BASE + 85,
+ SPR_ARROW_RIGHT = SPR_OPENTTD_BASE + 86,
SPR_LARGE_SMALL_WINDOW = 682,
/* Clone vehicles stuff */
- SPR_CLONE_TRAIN = SPR_OPENTTD_BASE + 91,
- SPR_CLONE_ROADVEH = SPR_OPENTTD_BASE + 108,
- SPR_CLONE_SHIP = SPR_OPENTTD_BASE + 110,
- SPR_CLONE_AIRCRAFT = SPR_OPENTTD_BASE + 112,
+ SPR_CLONE_TRAIN = SPR_OPENTTD_BASE + 87,
+ SPR_CLONE_ROADVEH = SPR_OPENTTD_BASE + 104,
+ SPR_CLONE_SHIP = SPR_OPENTTD_BASE + 106,
+ SPR_CLONE_AIRCRAFT = SPR_OPENTTD_BASE + 108,
- SPR_SELL_TRAIN = SPR_OPENTTD_BASE + 95,
- SPR_SELL_ROADVEH = SPR_OPENTTD_BASE + 96,
- SPR_SELL_SHIP = SPR_OPENTTD_BASE + 97,
- SPR_SELL_AIRCRAFT = SPR_OPENTTD_BASE + 98,
- SPR_SELL_ALL_TRAIN = SPR_OPENTTD_BASE + 99,
- SPR_SELL_ALL_ROADVEH = SPR_OPENTTD_BASE + 100,
- SPR_SELL_ALL_SHIP = SPR_OPENTTD_BASE + 101,
- SPR_SELL_ALL_AIRCRAFT = SPR_OPENTTD_BASE + 102,
- SPR_REPLACE_TRAIN = SPR_OPENTTD_BASE + 103,
- SPR_REPLACE_ROADVEH = SPR_OPENTTD_BASE + 104,
- SPR_REPLACE_SHIP = SPR_OPENTTD_BASE + 105,
- SPR_REPLACE_AIRCRAFT = SPR_OPENTTD_BASE + 106,
- SPR_SELL_CHAIN_TRAIN = SPR_OPENTTD_BASE + 107,
+ SPR_SELL_TRAIN = SPR_OPENTTD_BASE + 91,
+ SPR_SELL_ROADVEH = SPR_OPENTTD_BASE + 92,
+ SPR_SELL_SHIP = SPR_OPENTTD_BASE + 93,
+ SPR_SELL_AIRCRAFT = SPR_OPENTTD_BASE + 94,
+ SPR_SELL_ALL_TRAIN = SPR_OPENTTD_BASE + 95,
+ SPR_SELL_ALL_ROADVEH = SPR_OPENTTD_BASE + 96,
+ SPR_SELL_ALL_SHIP = SPR_OPENTTD_BASE + 97,
+ SPR_SELL_ALL_AIRCRAFT = SPR_OPENTTD_BASE + 98,
+ SPR_REPLACE_TRAIN = SPR_OPENTTD_BASE + 99,
+ SPR_REPLACE_ROADVEH = SPR_OPENTTD_BASE + 100,
+ SPR_REPLACE_SHIP = SPR_OPENTTD_BASE + 101,
+ SPR_REPLACE_AIRCRAFT = SPR_OPENTTD_BASE + 102,
+ SPR_SELL_CHAIN_TRAIN = SPR_OPENTTD_BASE + 103,
- SPR_SHARED_ORDERS_ICON = SPR_OPENTTD_BASE + 114,
+ SPR_SHARED_ORDERS_ICON = SPR_OPENTTD_BASE + 110,
- SPR_WARNING_SIGN = SPR_OPENTTD_BASE + 115, // warning sign (shown if there are any newgrf errors)
+ SPR_WARNING_SIGN = SPR_OPENTTD_BASE + 111, // warning sign (shown if there are any newgrf errors)
/* Network GUI sprites */
SPR_SQUARE = SPR_OPENTTD_BASE + 20, // colored square (used for newgrf compatibility)
SPR_LOCK = SPR_OPENTTD_BASE + 19, // lock icon (for password protected servers)
- SPR_FLAGS_BASE = SPR_OPENTTD_BASE + 82, // start of the flags block (in same order as enum NetworkLanguage)
SPR_AIRPORTX_BASE = SPR_OPENTTD_BASE + OPENTTD_SPRITES_COUNT, // The sprites used for other airport angles
SPR_NEWAIRPORT_TARMAC = SPR_AIRPORTX_BASE,
@@ -171,6 +170,9 @@
/* One way road sprites */
SPR_ONEWAY_BASE = SPR_TRAMWAY_BASE + 113,
+ /* Flags sprites (in same order as enum NetworkLanguage) */
+ SPR_FLAGS_BASE = SPR_ONEWAY_BASE + 6,
+
/* Manager face sprites */
SPR_GRADIENT = 874, // background gradient behind manager face
@@ -1325,10 +1327,10 @@
SPR_CURSOR_TRUCK_STATION = 2726,
SPR_CURSOR_ROAD_TUNNEL = 2433,
- SPR_CURSOR_CLONE_TRAIN = SPR_OPENTTD_BASE + 92,
- SPR_CURSOR_CLONE_ROADVEH = SPR_OPENTTD_BASE + 109,
- SPR_CURSOR_CLONE_SHIP = SPR_OPENTTD_BASE + 111,
- SPR_CURSOR_CLONE_AIRPLANE = SPR_OPENTTD_BASE + 113,
+ SPR_CURSOR_CLONE_TRAIN = SPR_OPENTTD_BASE + 88,
+ SPR_CURSOR_CLONE_ROADVEH = SPR_OPENTTD_BASE + 105,
+ SPR_CURSOR_CLONE_SHIP = SPR_OPENTTD_BASE + 107,
+ SPR_CURSOR_CLONE_AIRPLANE = SPR_OPENTTD_BASE + 109
};
/// Animation macro in table/animcursors.h (_animcursors[])
--- a/src/texteff.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/texteff.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -353,7 +353,6 @@
case ZOOM_LVL_OUT_4X:
case ZOOM_LVL_OUT_8X:
- case ZOOM_LVL_OUT_16X:
break;
default: NOT_REACHED();
--- a/src/town_cmd.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/town_cmd.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -1096,7 +1096,7 @@
do {
byte bridge_type = RandomRange(MAX_BRIDGES - 1);
if (CheckBridge_Stuff(bridge_type, bridge_len)) {
- if (!CmdFailed(DoCommand(tile, tmptile, 0x8000 + bridge_type, DC_EXEC | DC_AUTO, CMD_BUILD_BRIDGE)))
+ if (!CmdFailed(DoCommand(tile, tmptile, bridge_type | ((0x80 | ROADTYPES_ROAD) << 8), DC_EXEC | DC_AUTO, CMD_BUILD_BRIDGE)))
_grow_town_result = -1;
/* obviously, if building any bridge would fail, there is no need to try other bridge-types */
--- a/src/train_cmd.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/train_cmd.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -626,6 +626,7 @@
u->z_pos = v->z_pos;
u->u.rail.track = TRACK_BIT_DEPOT;
u->vehstatus = v->vehstatus & ~VS_STOPPED;
+ u = new (u) Train();
u->subtype = 0;
SetMultiheaded(u);
u->spritenum = v->spritenum + 1;
@@ -638,7 +639,6 @@
u->build_year = v->build_year;
if (building) v->value >>= 1;
u->value = v->value;
- u = new (u) Train();
u->cur_image = 0xAC2;
u->random_bits = VehicleRandomBits();
VehiclePositionChanged(u);
@@ -839,6 +839,7 @@
Vehicle *u;
for (u = first; GetNextVehicle(u) != v; u = GetNextVehicle(u)) {}
GetLastEnginePart(u)->next = GetNextVehicle(v);
+ v->first = NULL; // we shouldn't point to the old first, since the vehicle isn't in that chain anymore
return first;
}
@@ -1204,6 +1205,9 @@
*/
int32 CmdSellRailWagon(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
{
+ /* Check if we deleted a vehicle window */
+ Window *w = NULL;
+
if (!IsValidVehicleID(p1) || p2 > 2) return CMD_ERROR;
Vehicle *v = GetVehicle(p1);
@@ -1224,7 +1228,8 @@
if (flags & DC_EXEC) {
if (v == first && IsFrontEngine(first)) {
- DeleteWindowById(WC_VEHICLE_VIEW, first->index);
+ w = FindWindowById(WC_VEHICLE_VIEW, first->index);
+ if (w != NULL) DeleteWindow(w);
}
InvalidateWindow(WC_VEHICLE_DEPOT, first->tile);
RebuildVehicleLists();
@@ -1291,7 +1296,8 @@
first->prev_shared = NULL;
first->next_shared = NULL;
- if (IsLocalPlayer()) ShowTrainViewWindow(new_f);
+ /* If we deleted a window then open a new one for the 'new' train */
+ if (IsLocalPlayer() && w != NULL) ShowTrainViewWindow(new_f);
}
}
@@ -1347,6 +1353,15 @@
if (rear != NULL) {
cost -= rear->value;
+
+ /* If this is a multiheaded vehicle with nothing
+ * between the parts, tmp will be pointing to the
+ * rear part, which is unlinked from the train and
+ * deleted here. However, because tmp has already
+ * been set it needs to be updated now so that the
+ * loop never sees the rear part. */
+ if (tmp == rear) tmp = GetNextVehicle(tmp);
+
if (flags & DC_EXEC) {
first = UnlinkWagon(rear, first);
DeleteDepotHighlightOfVehicle(rear);
--- a/src/vehicle.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/vehicle.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -612,11 +612,20 @@
if (v->type == VEH_TRAIN && EngineHasArticPart(v)) DeleteVehicle(v->next);
}
+/**
+ * Deletes all vehicles in a chain.
+ * @param v The first vehicle in the chain.
+ *
+ * @warning This function is not valid for any vehicle containing articulated
+ * parts.
+ */
void DeleteVehicleChain(Vehicle *v)
{
+ assert(v->type != VEH_TRAIN);
+
do {
Vehicle *u = v;
- v = GetNextVehicle(v);
+ v = v->next;
DeleteVehicle(u);
} while (v != NULL);
}
@@ -1816,7 +1825,14 @@
if (v->type == VEH_TRAIN && !IsFrontEngine(v)) {
/* this s a train car
* add this unit to the end of the train */
- DoCommand(0, (w_rear->index << 16) | w->index, 1, flags, CMD_MOVE_RAIL_VEHICLE);
+ int32 result = DoCommand(0, (w_rear->index << 16) | w->index, 1, flags, CMD_MOVE_RAIL_VEHICLE);
+ if (CmdFailed(result)) {
+ /* The train can't be joined to make the same consist as the original.
+ * Sell what we already made (clean up) and return an error. */
+ DoCommand(w_front->tile, w_front->index, 1, flags, GetCmdSellVeh(w_front));
+ DoCommand(w_front->tile, w->index, 1, flags, GetCmdSellVeh(w));
+ return result; // return error and the message returned from CMD_MOVE_RAIL_VEHICLE
+ }
} else {
/* this is a front engine or not a train. It need orders */
w_front = w;
@@ -2586,7 +2602,7 @@
{
if (v->type == VEH_TRAIN) {
return GetEngineColourMap(
- (v->u.rail.first_engine != INVALID_ENGINE && (IsArticulatedPart(v) || UsesWagonOverride(v))) ?
+ (v->u.rail.first_engine != INVALID_ENGINE && (UsesWagonOverride(v) || (IsArticulatedPart(v) && RailVehInfo(v->engine_type)->railveh_type != RAILVEH_WAGON))) ?
v->u.rail.first_engine : v->engine_type,
v->owner, v->u.rail.first_engine, v);
}
@@ -2705,7 +2721,7 @@
static const SaveLoad _train_desc[] = {
- SLE_WRITEBYTE(Vehicle, type, VEH_TRAIN, 0), // Train type. VEH_TRAIN in mem, 0 in file.
+ SLE_WRITEBYTE(Vehicle, type, VEH_TRAIN),
SLE_INCLUDEX(0, INC_VEHICLE_COMMON),
SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRail, crash_anim_pos), SLE_UINT16),
SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRail, force_proceed), SLE_UINT8),
@@ -2723,7 +2739,7 @@
};
static const SaveLoad _roadveh_desc[] = {
- SLE_WRITEBYTE(Vehicle, type, VEH_ROAD, 1), // Road type. VEH_ROAD in mem, 1 in file.
+ SLE_WRITEBYTE(Vehicle, type, VEH_ROAD),
SLE_INCLUDEX(0, INC_VEHICLE_COMMON),
SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRoad, state), SLE_UINT8),
SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleRoad, frame), SLE_UINT8),
@@ -2743,7 +2759,7 @@
};
static const SaveLoad _ship_desc[] = {
- SLE_WRITEBYTE(Vehicle, type, VEH_SHIP, 2), // Ship type. VEH_SHIP in mem, 2 in file.
+ SLE_WRITEBYTE(Vehicle, type, VEH_SHIP),
SLE_INCLUDEX(0, INC_VEHICLE_COMMON),
SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleShip, state), SLE_UINT8),
@@ -2754,7 +2770,7 @@
};
static const SaveLoad _aircraft_desc[] = {
- SLE_WRITEBYTE(Vehicle, type, VEH_AIRCRAFT, 3), // Aircraft type. VEH_AIRCRAFT in mem, 3 in file.
+ SLE_WRITEBYTE(Vehicle, type, VEH_AIRCRAFT),
SLE_INCLUDEX(0, INC_VEHICLE_COMMON),
SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleAir, crashed_counter), SLE_UINT16),
SLE_VARX(cpp_offsetof(Vehicle, u) + cpp_offsetof(VehicleAir, pos), SLE_UINT8),
@@ -2773,7 +2789,7 @@
};
static const SaveLoad _special_desc[] = {
- SLE_WRITEBYTE(Vehicle,type,VEH_SPECIAL, 4),
+ SLE_WRITEBYTE(Vehicle, type, VEH_SPECIAL),
SLE_VAR(Vehicle, subtype, SLE_UINT8),
@@ -2801,7 +2817,7 @@
};
static const SaveLoad _disaster_desc[] = {
- SLE_WRITEBYTE(Vehicle, type, VEH_DISASTER, 5),
+ SLE_WRITEBYTE(Vehicle, type, VEH_DISASTER),
SLE_REF(Vehicle, next, REF_VEHICLE_OLD),
@@ -2872,7 +2888,8 @@
error("Vehicles: failed loading savegame: too many vehicles");
v = GetVehicle(index);
- SlObject(v, (SaveLoad*)_veh_descs[SlReadByte()]);
+ VehicleType vtype = (VehicleType)SlReadByte();
+ SlObject(v, (SaveLoad*)_veh_descs[vtype]);
switch (v->type) {
case VEH_TRAIN: v = new (v) Train(); break;
@@ -2954,7 +2971,7 @@
InvalidateWindow(WC_VEHICLE_DETAILS, this->index);
InvalidateWindow(WC_STATION_VIEW, this->last_station_visited);
- GetStation(this->last_station_visited)->MarkTilesDirty();
+ GetStation(this->last_station_visited)->MarkTilesDirty(true);
this->MarkDirty();
}
--- a/src/viewport.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/viewport.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -858,9 +858,6 @@
}
break;
- case ZOOM_LVL_OUT_16X:
- break;
-
default: NOT_REACHED();
}
}
@@ -931,9 +928,6 @@
}
break;
- case ZOOM_LVL_OUT_16X:
- break;
-
default: NOT_REACHED();
}
}
@@ -1004,9 +998,6 @@
}
break;
- case ZOOM_LVL_OUT_16X:
- break;
-
default: NOT_REACHED();
}
}
@@ -1077,9 +1068,6 @@
}
break;
- case ZOOM_LVL_OUT_16X:
- break;
-
default: NOT_REACHED();
}
}
@@ -1581,9 +1569,6 @@
}
break;
- case ZOOM_LVL_OUT_16X:
- break;
-
default: NOT_REACHED();
}
@@ -1642,9 +1627,6 @@
}
break;
- case ZOOM_LVL_OUT_16X:
- break;
-
default: NOT_REACHED();
}
@@ -1703,9 +1685,6 @@
}
break;
- case ZOOM_LVL_OUT_16X:
- break;
-
default: NOT_REACHED();
}
@@ -1764,9 +1743,6 @@
}
break;
- case ZOOM_LVL_OUT_16X:
- break;
-
default: NOT_REACHED();
}
--- a/src/win32.cpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/win32.cpp Tue Jun 12 18:02:11 2007 +0000
@@ -946,16 +946,30 @@
}
#endif
-void DetermineBasePaths(const char *exe)
+char *getcwd(char *buf, size_t size)
{
- _paths.personal_dir = _paths.game_data_dir = MallocT<char>(MAX_PATH);
- _paths.second_data_dir = NULL;
#if defined(UNICODE)
TCHAR path[MAX_PATH];
GetCurrentDirectory(MAX_PATH - 1, path);
- convert_from_fs(path, _paths.personal_dir, MAX_PATH);
+ convert_from_fs(path, buf, size);
#else
- GetCurrentDirectory(MAX_PATH - 1, _paths.personal_dir);
+ GetCurrentDirectory(size, buf);
+#endif
+ return buf;
+}
+
+extern char *BuildWithFullPath(const char *dir);
+
+void DetermineBasePaths(const char *exe)
+{
+ _paths.personal_dir = MallocT<char>(MAX_PATH);
+ getcwd(_paths.personal_dir, MAX_PATH);
+
+ _paths.game_data_dir = BuildWithFullPath(GAME_DATA_DIR);
+#if defined(SECOND_DATA_DIR)
+ _paths.second_data_dir = BuildWithFullPath(SECOND_DATA_DIR);
+#else
+ _paths.second_data_dir = NULL;
#endif
_paths.personal_dir[0] = toupper(_paths.personal_dir[0]);
--- a/src/zoom.hpp Fri Jun 01 20:54:09 2007 +0000
+++ b/src/zoom.hpp Tue Jun 12 18:02:11 2007 +0000
@@ -11,7 +11,6 @@
ZOOM_LVL_OUT_2X,
ZOOM_LVL_OUT_4X,
ZOOM_LVL_OUT_8X,
- ZOOM_LVL_OUT_16X,
ZOOM_LVL_END,
/* Here we define in which zoom viewports are */
@@ -25,10 +24,10 @@
ZOOM_LVL_ROADVEH = ZOOM_LVL_NORMAL,
ZOOM_LVL_WORLD_SCREENSHOT = ZOOM_LVL_NORMAL,
- ZOOM_LVL_DETAIL = ZOOM_LVL_OUT_2X, //! All zoomlevels below or equal to this, will result in details on the screen, like road-work, ...
+ ZOOM_LVL_DETAIL = ZOOM_LVL_OUT_2X, ///< All zoomlevels below or equal to this, will result in details on the screen, like road-work, ...
ZOOM_LVL_MIN = ZOOM_LVL_NORMAL,
- ZOOM_LVL_MAX = ZOOM_LVL_OUT_16X,
+ ZOOM_LVL_MAX = ZOOM_LVL_OUT_8X,
};
extern ZoomLevel _saved_scrollpos_zoom;
@@ -37,14 +36,14 @@
{
if (zoom == ZOOM_LVL_NORMAL) return value;
int izoom = (int)zoom - (int)ZOOM_LVL_NORMAL;
- return (zoom > ZOOM_LVL_NORMAL) ? value << izoom : value >> -izoom;
+ return (zoom > ZOOM_LVL_NORMAL) ? value << izoom : (value + (1 << -izoom) - 1) >> -izoom;
}
static inline int UnScaleByZoom(int value, ZoomLevel zoom)
{
if (zoom == ZOOM_LVL_NORMAL) return value;
int izoom = (int)zoom - (int)ZOOM_LVL_NORMAL;
- return (zoom > ZOOM_LVL_NORMAL) ? value >> izoom : value << -izoom;
+ return (zoom > ZOOM_LVL_NORMAL) ? (value + (1 << izoom) - 1) >> izoom : value << -izoom;
}
#endif /* ZOOM_HPP */