Compare commits

..
Author SHA1 Message Date
rubidium f322ab97ed (svn r26178) -Release: 1.4.0-beta1 2013-12-24 05:58:54 +00:00
127 changed files with 708 additions and 3281 deletions
+1 -13
View File
@@ -229,22 +229,10 @@ $(OBJS_C): %.o: $(SRC_DIR)/%.c $(DEP_MASK) $(FILE_DEP)
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.c=%.c)'
$(Q)$(CC_HOST) $(CFLAGS) -c -o $@ $<
$(filter-out %sse2.o, $(filter-out %ssse3.o, $(filter-out %sse4.o, $(OBJS_CPP)))): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP)
$(OBJS_CPP): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP)
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_HOST) $(CFLAGS) $(CXXFLAGS) -c -o $@ $<
$(filter %sse2.o, $(OBJS_CPP)): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP)
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_HOST) $(CFLAGS) $(CXXFLAGS) -c -msse2 -o $@ $<
$(filter %ssse3.o, $(OBJS_CPP)): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP)
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_HOST) $(CFLAGS) $(CXXFLAGS) -c -mssse3 -o $@ $<
$(filter %sse4.o, $(OBJS_CPP)): %.o: $(SRC_DIR)/%.cpp $(DEP_MASK) $(FILE_DEP)
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.cpp=%.cpp)'
$(Q)$(CXX_HOST) $(CFLAGS) $(CXXFLAGS) -c -msse4.1 -o $@ $<
$(OBJS_MM): %.o: $(SRC_DIR)/%.mm $(DEP_MASK) $(FILE_DEP)
$(E) '$(STAGE) Compiling $(<:$(SRC_DIR)/%.mm=%.mm)'
$(Q)$(CC_HOST) $(CFLAGS) -c -o $@ $<
+1 -11
View File
@@ -1,13 +1,3 @@
1.4.0-beta2 (2014-01-07)
------------------------------------------------------------------------
- Feature: Blitter autoselection is now based on full animation state, so a non-animated specialised blitter will generally be chosen when animation is turned off (r26217)
- Feature: Specialised animated SSE4 blitter, and non-animated SSE4.1, SSSE3 and SSE2 blitters, improving the blitting significantly in many situations (r26214, r26213, r26212, r26211)
- Feature: Specialised SSE 4.1 sprite sorter, improving the sorting performance significantly (r26205)
- Fix: Validate everything from ini, obg, obs, obs, ... files [FS#5829] (r26206)
- Fix: Allow refitting at station if cargo has already been reserved (r26187)
- Fix: Visual effects did not work for articulated RV parts (r26180)
1.4.0-beta1 (2013-12-24)
------------------------------------------------------------------------
- Feature: [NewGRF] Vehicle variable 4D for determining the position within an articulated vehicle (r26157)
@@ -74,7 +64,7 @@
- Change: Allow to remove unowned objects unless they have the 'unremovable' flag (r25879)
- Change: In scenario editor allow to build all objects which were available at any point in the past to support building scenarios with historic items (r25875)
- Change: Display the cost to upgrade a bridge at the end of bridge that was clicked and not the other end, which could be outside of the screen in some cases (r25854)
- Change: [NewGRF] Lower the limit of airport tile types, house types, industry tile types and object types per NewGRF from 256 to 255 to prevent usage of ID 0xFF in Action3, and thus allowing it to become an extended byte somewhen (r25841, r25839, r25837, r25834)
- Change: [NewGRF] Lower the limit of airport tile types, house types, indurstry tile types and object types per NewGRF from 256 to 255 to prevent usage of ID 0xFF in Action3, and thus allowing it to become an extended byte somewhen (r25841, r25839, r25837, r25834)
- Change: Clarify the relevance of the permissible palettes (r25792)
- Change: [NewGRF] Invalidate vehicle recolour palette during (un)loading [FS#5669] (r25648)
- Change: If an editbox is configured to be cleared with ESC, but the editbox is already empty, unselect the editbox instead (r25647)
-46
View File
@@ -92,7 +92,6 @@ set_default() {
with_ccache="1"
with_nforenum="1"
with_grfcodec="1"
with_sse="1"
save_params_array="
build
@@ -167,7 +166,6 @@ set_default() {
with_ccache
with_grfcodec
with_nforenum
with_sse
CC CXX CFLAGS CXXFLAGS LDFLAGS CFLAGS_BUILD CXXFLAGS_BUILD LDFLAGS_BUILD"
}
@@ -449,10 +447,6 @@ detect_params() {
--with-threads) with_threads="1";;
--with-threads=*) with_threads="$optarg";;
--without-sse) with_sse="0";;
--with-sse) with_sse="1";;
--with-sse=*) with_sse="$optarg";;
CC=* | --CC=*) CC="$optarg";;
CXX=* | --CXX=*) CXX="$optarg";;
CFLAGS=* | --CFLAGS=*) CFLAGS="$optarg";;
@@ -593,7 +587,6 @@ check_params() {
check_makedepend
detect_cputype
detect_sse_capable_architecture
if [ "$enable_static" = "1" ]; then
if [ "$os" = "MINGW" ] || [ "$os" = "CYGWIN" ] || [ "$os" = "MORPHOS" ] || [ "$os" = "DOS" ]; then
@@ -1501,9 +1494,6 @@ make_cflags_and_ldflags() {
if [ "$with_threads" = "0" ]; then
CFLAGS="$CFLAGS -DNO_THREADS"
fi
if [ "$with_sse" = "1" ]; then
CFLAGS="$CFLAGS -DWITH_SSE"
fi
if [ "`echo $1 | cut -c 1-3`" != "icc" ]; then
if [ "$os" = "CYGWIN" ]; then
@@ -3334,40 +3324,6 @@ detect_cputype() {
rm -f tmp.64bit tmp.64bit.cpp
}
detect_sse_capable_architecture() {
# 0 means no, 1 is auto-detect, 2 is force
if [ "$with_sse" = "0" ]; then
log 1 "checking SSE... disabled"
return
fi
echo "#define _SQ64 1" > tmp.sse.cpp
echo "#include <xmmintrin.h>" >> tmp.sse.cpp
echo "#include <smmintrin.h>" >> tmp.sse.cpp
echo "#include <tmmintrin.h>" >> tmp.sse.cpp
echo "int main() { return 0; }" >> tmp.sse.cpp
execute="$cxx_host -msse4.1 $CFLAGS tmp.sse.cpp -o tmp.sse 2>&1"
sse="`eval $execute 2>/dev/null`"
ret=$?
log 2 "executing $execute"
log 2 " returned $sse"
log 2 " exit code $ret"
if [ "$ret" = "0" ]; then
log 1 "detecting SSE... found"
else
# It was forced, so it should be found.
if [ "$with_sse" != "1" ]; then
log 1 "configure: error: SSE couln't be found"
log 1 "configure: error: you force enabled SSE, but it seems unavailable"
exit 1
fi
log 1 "detecting SSE... not found"
with_sse="0"
fi
rm -f tmp.sse tmp.exe tmp.sse.cpp
}
make_sed() {
T_CFLAGS="$CFLAGS"
T_CXXFLAGS="$CXXFLAGS"
@@ -3758,8 +3714,6 @@ showhelp() {
echo " --with-ccache enables ccache support"
echo " --with-distcc enables distcc support"
echo " --without-grfcodec disable usage of grfcodec and re-generation of base sets"
echo " --without-threads disable threading support"
echo " --without-sse disable SSE support (x86/x86_64 only)"
echo ""
echo "Some influential environment variables:"
echo " CC C compiler command"
Vendored
-1
View File
@@ -129,7 +129,6 @@ AWKCOMMAND='
if ($0 == "DIRECTMUSIC" && "'$with_direct_music'" == "0") { next; }
if ($0 == "LIBTIMIDITY" && "'$libtimidity'" == "" ) { next; }
if ($0 == "HAVE_THREAD" && "'$with_threads'" == "0") { next; }
if ($0 == "SSE" && "'$with_sse'" != "1") { next; }
skip += 1;
+2 -2
View File
@@ -1,6 +1,6 @@
OpenTTD's known bugs
Last updated: 2014-01-07
Release version: 1.4.0-beta2
Last updated: 2013-12-24
Release version: 1.4.0-beta1
------------------------------------------------------------------------
+1 -7
View File
@@ -1,14 +1,8 @@
openttd (1.4.0~beta2) unstable; urgency=low
* New upstream release 1.4.0-beta2
-- OpenTTD <info@openttd.org> Tue, 07 Jan 2014 21:00:00 +0100
openttd (1.4.0~beta1) unstable; urgency=low
* New upstream release 1.4.0-beta1
-- OpenTTD <info@openttd.org> Tue, 24 Dec 2013 00:00:00 +0100
-- OpenTTD <info@openttd.org> Tue, 24 Dec 2012 00:00:00 +0100
openttd (1.3.3-0) unstable; urgency=low
+1 -1
View File
@@ -3,7 +3,7 @@ Section: games
Priority: optional
Maintainer: Matthijs Kooijman <matthijs@stdin.nl>
Uploaders: Jordi Mallach <jordi@debian.org>
Build-Depends: debhelper (>= 7.0.50), libsdl-dev, zlib1g-dev, libpng-dev, libfreetype6-dev, libfontconfig-dev, libicu-dev, liblzma-dev, liblzo2-dev
Build-Depends: debhelper (>= 7.0.50), libsdl-dev, zlib1g-dev, libpng-dev, libfreetype6-dev, libfontconfig-dev, libicu-dev, liblzma-dev, liblzo2-dev, libxdg-basedir-dev
Standards-Version: 3.8.4
Vcs-Browser: http://anonscm.debian.org/gitweb/?p=collab-maint/openttd.git
Vcs-Git: git://anonscm.debian.org/collab-maint/openttd.git
+1 -1
View File
@@ -29,7 +29,7 @@ include /usr/share/dpkg/buildflags.mk
# to be explicit about the dependencies, in case we're not running in a
# clean build root.
override_dh_auto_configure:
./configure $(CROSS) --prefix-dir=/usr --install-dir=debian/openttd --without-allegro --with-zlib --with-sdl --with-png --with-freetype --with-fontconfig --with-icu --with-liblzo2 --with-lzma --without-xdg-basedir --without-iconv --disable-strip CFLAGS="$(CFLAGS) $(CPPFLAGS)" CXXFLAGS="$(CXXFLAGS) $(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" CFLAGS_BUILD="$(CFLAGS) $(CPPFLAGS)" CXXFLAGS_BUILD="$(CXXFLAGS) $(CPPFLAGS)" LDFLAGS_BUILD="$(LDFLAGS)"
./configure $(CROSS) --prefix-dir=/usr --install-dir=debian/openttd --without-allegro --with-zlib --with-sdl --with-png --with-freetype --with-fontconfig --with-icu --with-liblzo2 --with-lzma --with-xdg-basedir --without-iconv --disable-strip CFLAGS="$(CFLAGS) $(CPPFLAGS)" CXXFLAGS="$(CXXFLAGS) $(CPPFLAGS)" LDFLAGS="$(LDFLAGS)" CFLAGS_BUILD="$(CFLAGS) $(CPPFLAGS)" CXXFLAGS_BUILD="$(CXXFLAGS) $(CPPFLAGS)" LDFLAGS_BUILD="$(LDFLAGS)"
# Do some extra installation
override_dh_auto_install:
+2 -2
View File
@@ -2,8 +2,8 @@
!define APPV_MAJOR 1
!define APPV_MINOR 4
!define APPV_MAINT 0
!define APPV_BUILD 1
!define APPV_EXTRA "-beta2"
!define APPV_BUILD 0
!define APPV_EXTRA "-beta1"
!define APPNAME "OpenTTD" ; Define application name
!define APPVERSION "${APPV_MAJOR}.${APPV_MINOR}.${APPV_MAINT}${APPV_EXTRA}" ; Define application version
-1
View File
@@ -173,7 +173,6 @@ Function load_main_data(filename, ByRef vcxproj, ByRef filters, ByRef files)
line = "MSVC" Or _
line = "DIRECTMUSIC" Or _
line = "AI" Or _
line = "SSE" Or _
line = "HAVE_THREAD" _
) Then skip = skip + 1
deep = deep + 1
+5 -16
View File
@@ -102,7 +102,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -156,7 +156,7 @@
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>
@@ -204,7 +204,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -256,7 +256,7 @@
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>
@@ -304,7 +304,6 @@
<ClCompile Include="..\src\command.cpp" />
<ClCompile Include="..\src\console.cpp" />
<ClCompile Include="..\src\console_cmds.cpp" />
<ClCompile Include="..\src\cpu.cpp" />
<ClCompile Include="..\src\crashlog.cpp" />
<ClCompile Include="..\src\currency.cpp" />
<ClCompile Include="..\src\date.cpp" />
@@ -355,6 +354,7 @@
<ClCompile Include="..\src\network\network_udp.cpp" />
<ClCompile Include="..\src\openttd.cpp" />
<ClCompile Include="..\src\order_backup.cpp" />
<ClCompile Include="..\src\os_timer.cpp" />
<ClCompile Include="..\src\pbs.cpp" />
<ClCompile Include="..\src\progress.cpp" />
<ClCompile Include="..\src\rail.cpp" />
@@ -385,7 +385,6 @@
<ClCompile Include="..\src\vehicle.cpp" />
<ClCompile Include="..\src\vehiclelist.cpp" />
<ClCompile Include="..\src\viewport.cpp" />
<ClCompile Include="..\src\viewport_sprite_sorter_sse4.cpp" />
<ClCompile Include="..\src\waypoint.cpp" />
<ClCompile Include="..\src\widget.cpp" />
<ClCompile Include="..\src\window.cpp" />
@@ -423,7 +422,6 @@
<ClInclude Include="..\src\console_gui.h" />
<ClInclude Include="..\src\console_internal.h" />
<ClInclude Include="..\src\console_type.h" />
<ClInclude Include="..\src\cpu.h" />
<ClInclude Include="..\src\crashlog.h" />
<ClInclude Include="..\src\currency.h" />
<ClInclude Include="..\src\date_func.h" />
@@ -642,7 +640,6 @@
<ClInclude Include="..\src\vehicle_type.h" />
<ClInclude Include="..\src\vehiclelist.h" />
<ClInclude Include="..\src\viewport_func.h" />
<ClInclude Include="..\src\viewport_sprite_sorter.h" />
<ClInclude Include="..\src\viewport_type.h" />
<ClInclude Include="..\src\water.h" />
<ClInclude Include="..\src\waypoint_base.h" />
@@ -1115,20 +1112,12 @@
<ClCompile Include="..\src\script\api\script_window.cpp" />
<ClCompile Include="..\src\blitter\32bpp_anim.cpp" />
<ClInclude Include="..\src\blitter\32bpp_anim.hpp" />
<ClCompile Include="..\src\blitter\32bpp_anim_sse4.cpp" />
<ClInclude Include="..\src\blitter\32bpp_anim_sse4.hpp" />
<ClCompile Include="..\src\blitter\32bpp_base.cpp" />
<ClInclude Include="..\src\blitter\32bpp_base.hpp" />
<ClCompile Include="..\src\blitter\32bpp_optimized.cpp" />
<ClInclude Include="..\src\blitter\32bpp_optimized.hpp" />
<ClCompile Include="..\src\blitter\32bpp_simple.cpp" />
<ClInclude Include="..\src\blitter\32bpp_simple.hpp" />
<ClCompile Include="..\src\blitter\32bpp_sse2.cpp" />
<ClInclude Include="..\src\blitter\32bpp_sse2.hpp" />
<ClCompile Include="..\src\blitter\32bpp_sse4.cpp" />
<ClInclude Include="..\src\blitter\32bpp_sse4.hpp" />
<ClCompile Include="..\src\blitter\32bpp_ssse3.cpp" />
<ClInclude Include="..\src\blitter\32bpp_ssse3.hpp" />
<ClCompile Include="..\src\blitter\8bpp_base.cpp" />
<ClInclude Include="..\src\blitter\8bpp_base.hpp" />
<ClCompile Include="..\src\blitter\8bpp_optimized.cpp" />
+3 -36
View File
@@ -141,9 +141,6 @@
<ClCompile Include="..\src\console_cmds.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\cpu.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\crashlog.cpp">
<Filter>Source Files</Filter>
</ClCompile>
@@ -294,6 +291,9 @@
<ClCompile Include="..\src\order_backup.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\os_timer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\pbs.cpp">
<Filter>Source Files</Filter>
</ClCompile>
@@ -384,9 +384,6 @@
<ClCompile Include="..\src\viewport.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\viewport_sprite_sorter_sse4.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\src\waypoint.cpp">
<Filter>Source Files</Filter>
</ClCompile>
@@ -498,9 +495,6 @@
<ClInclude Include="..\src\console_type.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\cpu.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\crashlog.h">
<Filter>Header Files</Filter>
</ClInclude>
@@ -1155,9 +1149,6 @@
<ClInclude Include="..\src\viewport_func.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\viewport_sprite_sorter.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\src\viewport_type.h">
<Filter>Header Files</Filter>
</ClInclude>
@@ -2574,12 +2565,6 @@
<ClInclude Include="..\src\blitter\32bpp_anim.hpp">
<Filter>Blitters</Filter>
</ClInclude>
<ClCompile Include="..\src\blitter\32bpp_anim_sse4.cpp">
<Filter>Blitters</Filter>
</ClCompile>
<ClInclude Include="..\src\blitter\32bpp_anim_sse4.hpp">
<Filter>Blitters</Filter>
</ClInclude>
<ClCompile Include="..\src\blitter\32bpp_base.cpp">
<Filter>Blitters</Filter>
</ClCompile>
@@ -2598,24 +2583,6 @@
<ClInclude Include="..\src\blitter\32bpp_simple.hpp">
<Filter>Blitters</Filter>
</ClInclude>
<ClCompile Include="..\src\blitter\32bpp_sse2.cpp">
<Filter>Blitters</Filter>
</ClCompile>
<ClInclude Include="..\src\blitter\32bpp_sse2.hpp">
<Filter>Blitters</Filter>
</ClInclude>
<ClCompile Include="..\src\blitter\32bpp_sse4.cpp">
<Filter>Blitters</Filter>
</ClCompile>
<ClInclude Include="..\src\blitter\32bpp_sse4.hpp">
<Filter>Blitters</Filter>
</ClInclude>
<ClCompile Include="..\src\blitter\32bpp_ssse3.cpp">
<Filter>Blitters</Filter>
</ClCompile>
<ClInclude Include="..\src\blitter\32bpp_ssse3.hpp">
<Filter>Blitters</Filter>
</ClInclude>
<ClCompile Include="..\src\blitter\8bpp_base.cpp">
<Filter>Blitters</Filter>
</ClCompile>
+4 -4
View File
@@ -102,7 +102,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -156,7 +156,7 @@
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>
@@ -204,7 +204,7 @@
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
<OmitFramePointers>true</OmitFramePointers>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;WITH_ASSERT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling>
<ExceptionHandling>Sync</ExceptionHandling>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
@@ -256,7 +256,7 @@
<AdditionalOptions>/MP %(AdditionalOptions)</AdditionalOptions>
<Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR="OpenTTD";_SQ64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>
+8 -52
View File
@@ -52,7 +52,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -156,7 +156,7 @@
AdditionalOptions="/MP"
Optimization="0"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
@@ -257,7 +257,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -362,7 +362,7 @@
AdditionalOptions="/MP"
Optimization="0"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
@@ -486,10 +486,6 @@
RelativePath=".\..\src\console_cmds.cpp"
>
</File>
<File
RelativePath=".\..\src\cpu.cpp"
>
</File>
<File
RelativePath=".\..\src\crashlog.cpp"
>
@@ -690,6 +686,10 @@
RelativePath=".\..\src\order_backup.cpp"
>
</File>
<File
RelativePath=".\..\src\os_timer.cpp"
>
</File>
<File
RelativePath=".\..\src\pbs.cpp"
>
@@ -810,10 +810,6 @@
RelativePath=".\..\src\viewport.cpp"
>
</File>
<File
RelativePath=".\..\src\viewport_sprite_sorter_sse4.cpp"
>
</File>
<File
RelativePath=".\..\src\waypoint.cpp"
>
@@ -966,10 +962,6 @@
RelativePath=".\..\src\console_type.h"
>
</File>
<File
RelativePath=".\..\src\cpu.h"
>
</File>
<File
RelativePath=".\..\src\crashlog.h"
>
@@ -1842,10 +1834,6 @@
RelativePath=".\..\src\viewport_func.h"
>
</File>
<File
RelativePath=".\..\src\viewport_sprite_sorter.h"
>
</File>
<File
RelativePath=".\..\src\viewport_type.h"
>
@@ -3802,14 +3790,6 @@
RelativePath=".\..\src\blitter\32bpp_anim.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_anim_sse4.cpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_anim_sse4.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_base.cpp"
>
@@ -3834,30 +3814,6 @@
RelativePath=".\..\src\blitter\32bpp_simple.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse2.cpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse2.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse4.cpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse4.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_ssse3.cpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_ssse3.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\8bpp_base.cpp"
>
+4 -4
View File
@@ -52,7 +52,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -156,7 +156,7 @@
AdditionalOptions="/MP"
Optimization="0"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
@@ -257,7 +257,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -362,7 +362,7 @@
AdditionalOptions="/MP"
Optimization="0"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
+8 -52
View File
@@ -53,7 +53,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -155,7 +155,7 @@
AdditionalOptions="/MP"
Optimization="0"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
@@ -255,7 +255,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -359,7 +359,7 @@
AdditionalOptions="/MP"
Optimization="0"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
@@ -483,10 +483,6 @@
RelativePath=".\..\src\console_cmds.cpp"
>
</File>
<File
RelativePath=".\..\src\cpu.cpp"
>
</File>
<File
RelativePath=".\..\src\crashlog.cpp"
>
@@ -687,6 +683,10 @@
RelativePath=".\..\src\order_backup.cpp"
>
</File>
<File
RelativePath=".\..\src\os_timer.cpp"
>
</File>
<File
RelativePath=".\..\src\pbs.cpp"
>
@@ -807,10 +807,6 @@
RelativePath=".\..\src\viewport.cpp"
>
</File>
<File
RelativePath=".\..\src\viewport_sprite_sorter_sse4.cpp"
>
</File>
<File
RelativePath=".\..\src\waypoint.cpp"
>
@@ -963,10 +959,6 @@
RelativePath=".\..\src\console_type.h"
>
</File>
<File
RelativePath=".\..\src\cpu.h"
>
</File>
<File
RelativePath=".\..\src\crashlog.h"
>
@@ -1839,10 +1831,6 @@
RelativePath=".\..\src\viewport_func.h"
>
</File>
<File
RelativePath=".\..\src\viewport_sprite_sorter.h"
>
</File>
<File
RelativePath=".\..\src\viewport_type.h"
>
@@ -3799,14 +3787,6 @@
RelativePath=".\..\src\blitter\32bpp_anim.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_anim_sse4.cpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_anim_sse4.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_base.cpp"
>
@@ -3831,30 +3811,6 @@
RelativePath=".\..\src\blitter\32bpp_simple.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse2.cpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse2.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse4.cpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_sse4.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_ssse3.cpp"
>
</File>
<File
RelativePath=".\..\src\blitter\32bpp_ssse3.hpp"
>
</File>
<File
RelativePath=".\..\src\blitter\8bpp_base.cpp"
>
+4 -4
View File
@@ -53,7 +53,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -155,7 +155,7 @@
AdditionalOptions="/MP"
Optimization="0"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
@@ -255,7 +255,7 @@
FavorSizeOrSpeed="2"
OmitFramePointers="true"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
@@ -359,7 +359,7 @@
AdditionalOptions="/MP"
Optimization="0"
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;_SQ64"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
+2 -2
View File
@@ -1,5 +1,5 @@
Last updated: 2014-01-07
Release version: 1.4.0-beta2
Last updated: 2013-12-24
Release version: 1.4.0-beta1
------------------------------------------------------------------------
+1 -18
View File
@@ -12,7 +12,6 @@ cheat.cpp
command.cpp
console.cpp
console_cmds.cpp
cpu.cpp
crashlog.cpp
currency.cpp
date.cpp
@@ -63,6 +62,7 @@ network/network_server.cpp
network/network_udp.cpp
openttd.cpp
order_backup.cpp
os_timer.cpp
pbs.cpp
progress.cpp
rail.cpp
@@ -111,9 +111,6 @@ townname.cpp
vehicle.cpp
vehiclelist.cpp
viewport.cpp
#if SSE
viewport_sprite_sorter_sse4.cpp
#end
waypoint.cpp
widget.cpp
window.cpp
@@ -158,7 +155,6 @@ console_func.h
console_gui.h
console_internal.h
console_type.h
cpu.h
crashlog.h
currency.h
date_func.h
@@ -377,7 +373,6 @@ vehicle_gui_base.h
vehicle_type.h
vehiclelist.h
viewport_func.h
viewport_sprite_sorter.h
viewport_type.h
water.h
waypoint_base.h
@@ -901,24 +896,12 @@ script/api/script_window.cpp
#else
blitter/32bpp_anim.cpp
blitter/32bpp_anim.hpp
#if SSE
blitter/32bpp_anim_sse4.cpp
blitter/32bpp_anim_sse4.hpp
#end
blitter/32bpp_base.cpp
blitter/32bpp_base.hpp
blitter/32bpp_optimized.cpp
blitter/32bpp_optimized.hpp
blitter/32bpp_simple.cpp
blitter/32bpp_simple.hpp
#if SSE
blitter/32bpp_sse2.cpp
blitter/32bpp_sse2.hpp
blitter/32bpp_sse4.cpp
blitter/32bpp_sse4.hpp
blitter/32bpp_ssse3.cpp
blitter/32bpp_ssse3.hpp
#end
blitter/8bpp_base.cpp
blitter/8bpp_base.hpp
blitter/8bpp_optimized.cpp
+5 -4
View File
@@ -15,8 +15,8 @@
#include "32bpp_optimized.hpp"
/** The optimised 32 bpp blitter with palette animation. */
class Blitter_32bppAnim : public Blitter_32bppOptimized {
protected:
class Blitter_32bppAnim FINAL : public Blitter_32bppOptimized {
private:
uint16 *anim_buf; ///< In this buffer we keep track of the 8bpp indexes so we can do palette animation
int anim_buf_width; ///< The width of the animation buffer.
int anim_buf_height; ///< The height of the animation buffer.
@@ -56,9 +56,10 @@ public:
};
/** Factory for the 32bpp blitter with animation. */
class FBlitter_32bppAnim : public BlitterFactory {
class FBlitter_32bppAnim : public BlitterFactory<FBlitter_32bppAnim> {
public:
FBlitter_32bppAnim() : BlitterFactory("32bpp-anim", "32bpp Animation Blitter (palette animation)") {}
/* virtual */ const char *GetName() { return "32bpp-anim"; }
/* virtual */ const char *GetDescription() { return "32bpp Animation Blitter (palette animation)"; }
/* virtual */ Blitter *CreateInstance() { return new Blitter_32bppAnim(); }
};
-405
View File
@@ -1,405 +0,0 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file 32bpp_sse4_anim.cpp Implementation of the SSE4 32 bpp blitter with animation support. */
#ifdef WITH_SSE
#include "../stdafx.h"
#include "../video/video_driver.hpp"
#include "../table/sprites.h"
#include "32bpp_anim_sse4.hpp"
/** Instantiation of the SSE4 32bpp blitter factory. */
static FBlitter_32bppSSE4_Anim iFBlitter_32bppSSE4_Anim;
/**
* Draws a sprite to a (screen) buffer. It is templated to allow faster operation.
*
* @tparam mode blitter mode
* @param bp further blitting parameters
* @param zoom zoom level at which we are drawing
*/
IGNORE_UNINITIALIZED_WARNING_START
template <BlitterMode mode, Blitter_32bppSSE2::ReadMode read_mode, Blitter_32bppSSE2::BlockType bt_last>
inline void Blitter_32bppSSE4_Anim::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom)
{
Colour *dst_line = (Colour *) bp->dst + bp->top * bp->pitch + bp->left;
uint16 *anim_line = this->anim_buf + ((uint32 *)bp->dst - (uint32 *)_screen.dst_ptr) + bp->top * this->anim_buf_width + bp->left;
int effective_width = bp->width;
/* Find where to start reading in the source sprite. */
const byte * const remap = bp->remap;
const Blitter_32bppSSE_Base::SpriteData * const sd = (const Blitter_32bppSSE_Base::SpriteData *) bp->sprite;
const SpriteInfo * const si = &sd->infos[zoom];
const MapValue *src_mv_line = (const MapValue *) &sd->data[si->mv_offset] + bp->skip_top * si->sprite_width;
const Colour *src_rgba_line = (const Colour *) ((const byte *) &sd->data[si->sprite_offset] + bp->skip_top * si->sprite_line_size);
if (read_mode != RM_WITH_MARGIN) {
src_rgba_line += bp->skip_left;
src_mv_line += bp->skip_left;
}
/* Load these variables into register before loop. */
const __m128i a_cm = ALPHA_CONTROL_MASK;
const __m128i pack_low_cm = PACK_LOW_CONTROL_MASK;
const __m128i briAB_cm = BRIGHTNESS_LOW_CONTROL_MASK;
const __m128i div_cleaner = BRIGHTNESS_DIV_CLEANER;
const __m128i ob_check = OVERBRIGHT_PRESENCE_MASK;
const __m128i ob_mask = OVERBRIGHT_VALUE_MASK;
const __m128i ob_cm = OVERBRIGHT_CONTROL_MASK;
const __m128i tr_nom_base = TRANSPARENT_NOM_BASE;
for (int y = bp->height; y != 0; y--) {
Colour *dst = dst_line;
const Colour *src = src_rgba_line + META_LENGTH;
const MapValue *src_mv = src_mv_line;
uint16 *anim = anim_line;
switch (mode) {
default: {
switch (read_mode) {
case RM_WITH_MARGIN: {
src += src_rgba_line[0].data;
dst += src_rgba_line[0].data;
src_mv += src_rgba_line[0].data;
anim += src_rgba_line[0].data;
const int width_diff = si->sprite_width - bp->width;
effective_width = bp->width - (int) src_rgba_line[0].data;
const int delta_diff = (int) src_rgba_line[1].data - width_diff;
const int new_width = effective_width - (delta_diff & ~1);
effective_width = delta_diff > 0 ? new_width : effective_width;
if (effective_width <= 0) break;
/* FALLTHROUGH */
}
case RM_WITH_SKIP: {
uint32 mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
for (uint x = (uint) effective_width/2; x != 0; x--) {
/* Remap colours. */
const byte m0 = mvX2;
if (m0 >= PALETTE_ANIM_START) {
const Colour c0 = (this->LookupColourInPalette(m0).data & 0x00FFFFFF) | (src[0].data & 0xFF000000);
INSR32(AdjustBrightness(c0, (byte) (mvX2 >> 8)).data, srcABCD, 0);
}
const byte m1 = mvX2 >> 16;
if (m1 >= PALETTE_ANIM_START) {
const Colour c1 = (this->LookupColourInPalette(m1).data & 0x00FFFFFF) | (src[1].data & 0xFF000000);
INSR32(AdjustBrightness(c1, (byte) (mvX2 >> 24)).data, srcABCD, 1);
}
/* Update anim buffer. */
const byte a0 = src[0].a;
const byte a1 = src[1].a;
uint32 anim01 = 0;
if (a0 == 255) {
if (a1 == 255) {
*(uint32*) anim = mvX2;
goto bmno_full_opacity;
}
anim01 = (uint16) mvX2;
} else if (a0 == 0) {
if (a1 == 0) {
goto bmno_full_transparency;
} else {
if (a1 == 255) anim[1] = (uint16) (mvX2 >> 16);
goto bmno_alpha_blend;
}
}
if (a1 > 0) {
if (a1 == 255) anim01 |= mvX2 & 0xFFFF0000;
*(uint32*) anim = anim01;
} else {
anim[0] = (uint16) anim01;
}
/* Blend colours. */
bmno_alpha_blend:
ALPHA_BLEND_2(pack_low_cm);
bmno_full_opacity:
srcABCD = _mm_blend_epi16(srcABCD, dstABCD, 0xF0);
src_mv += 2;
mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
src += 2;
anim += 2;
dstABCD = _mm_loadu_si128((__m128i*) (dst+2));
_mm_storeu_si128((__m128i *) dst, srcABCD);
srcABCD = _mm_loadu_si128((const __m128i*) src);
dst += 2;
continue;
bmno_full_transparency:
src_mv += 2;
mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
dst += 2;
src += 2;
anim += 2;
dstABCD = _mm_loadu_si128((__m128i*) dst);
srcABCD = _mm_loadu_si128((const __m128i*) src);
}
if (bt_last == BT_ODD) {
if (src->a == 0) {
} else if (src->a == 255) {
*anim = (uint16) mvX2;
*dst = ((byte) mvX2 >= PALETTE_ANIM_START) ? AdjustBrightness(LookupColourInPalette((byte) mvX2), (byte) (mvX2 >> 8)) : *src;
} else {
*anim = 0;
if ((byte) mvX2 >= PALETTE_ANIM_START) {
ALIGN(16) Colour colour = AdjustBrightness(LookupColourInPalette((byte) mvX2), (byte) (mvX2 >> 8));
colour.a = src->a;
srcABCD = _mm_load_si128((__m128i*) &colour);
}
ALPHA_BLEND_2(pack_low_cm);
(*dst).data = EXTR32(srcABCD, 0);
}
}
break;
}
default: NOT_REACHED();
}
break;
}
case BM_COLOUR_REMAP: {
switch (read_mode) {
case RM_WITH_MARGIN: {
src += src_rgba_line[0].data;
src_mv += src_rgba_line[0].data;
dst += src_rgba_line[0].data;
anim += src_rgba_line[0].data;
const int width_diff = si->sprite_width - bp->width;
effective_width = bp->width - (int) src_rgba_line[0].data;
const int delta_diff = (int) src_rgba_line[1].data - width_diff;
const int nd = effective_width - delta_diff;
effective_width = delta_diff > 0 ? nd : effective_width;
if (effective_width <= 0) break;
/* FALLTHROUGH */
}
case RM_WITH_SKIP: {
uint32 mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
for (uint x = (uint) effective_width / 2; x != 0; x--) {
/* Remap colours. */
const uint m0 = (byte) mvX2;
const uint r0 = remap[m0];
const uint m1 = (byte) (mvX2 >> 16);
const uint r1 = remap[m1];
if (mvX2 & 0x00FF00FF) {
/* Written so the compiler uses CMOV. */
const Colour src0 = src[0];
const Colour c0map = (this->LookupColourInPalette(r0).data & 0x00FFFFFF) | (src0.data & 0xFF000000);
Colour c0 = dst[0];
c0 = r0 == 0 ? c0 : c0map;
c0 = m0 != 0 ? c0 : src0;
INSR32(c0.data, srcABCD, 0);
const Colour src1 = src[1];
const Colour c1map = (this->LookupColourInPalette(r1).data & 0x00FFFFFF) | (src1.data & 0xFF000000);
Colour c1 = dst[1];
c1 = r1 == 0 ? c1 : c1map;
c1 = m1 != 0 ? c1 : src1;
INSR32(c1.data, srcABCD, 1);
if ((mvX2 & 0xFF00FF00) != 0x80008000) {
ADJUST_BRIGHTNESS_2(srcABCD, mvX2);
}
}
/* Update anim buffer. */
const byte a0 = src[0].a;
const byte a1 = src[1].a;
uint32 anim01 = mvX2 & 0xFF00FF00;
if (a0 == 255) {
anim01 |= r0;
if (a1 == 255) {
*(uint32*) anim = anim01 | (r1 << 16);
goto bmcr_full_opacity;
}
} else if (a0 == 0) {
if (a1 == 0) {
goto bmcr_full_transparency;
} else {
if (a1 == 255) {
anim[1] = r1 | (anim01 >> 16);
}
goto bmcr_alpha_blend;
}
}
if (a1 > 0) {
if (a1 == 255) anim01 |= r1 << 16;
*(uint32*) anim = anim01;
} else {
anim[0] = (uint16) anim01;
}
/* Blend colours. */
bmcr_alpha_blend:
ALPHA_BLEND_2(pack_low_cm);
bmcr_full_opacity:
srcABCD = _mm_blend_epi16(srcABCD, dstABCD, 0xF0);
src += 2;
src_mv += 2;
anim += 2;
mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
dstABCD = _mm_loadu_si128((__m128i*) (dst+2));
_mm_storeu_si128((__m128i *) dst, srcABCD);
srcABCD = _mm_loadu_si128((const __m128i*) src);
dst += 2;
continue;
bmcr_full_transparency:
src_mv += 2;
mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
dst += 2;
src += 2;
anim += 2;
dstABCD = _mm_loadu_si128((__m128i*) dst);
srcABCD = _mm_loadu_si128((const __m128i*) src);
}
if (effective_width & 1) {
/* In case the m-channel is zero, do not remap this pixel in any way. */
if (src->a == 0) {
} else if ((byte) mvX2 != 0) {
const uint r = remap[(byte) mvX2];
*anim = (src->a == 255) ? (r | ((uint16) mvX2 & 0xFF00)) : 0;
if (r != 0) {
Colour remapped_colour = AdjustBrightness(LookupColourInPalette(r), (byte) (mvX2 >> 8));
if (src->a == 255) {
*dst = remapped_colour;
} else {
remapped_colour.a = src->a;
INSR32(remapped_colour.data, srcABCD, 0);
goto bmcr_alpha_blend_single;
}
}
} else {
*anim = 0;
if (src->a == 255) {
*dst = *src;
} else {
bmcr_alpha_blend_single:
ALPHA_BLEND_2(pack_low_cm);
(*dst).data = EXTR32(srcABCD, 0);
}
}
}
break;
}
default: NOT_REACHED();
}
break;
}
case BM_TRANSPARENT: {
/* Make the current colour a bit more black, so it looks like this image is transparent. */
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
for (uint x = (uint) bp->width / 2; x > 0; x--) {
__m128i srcAB = _mm_unpacklo_epi8(srcABCD, _mm_setzero_si128());
__m128i dstAB = _mm_unpacklo_epi8(dstABCD, _mm_setzero_si128());
__m128i dstCD = _mm_unpackhi_epi8(dstABCD, _mm_setzero_si128());
__m128i alphaAB = _mm_shuffle_epi8(srcAB, a_cm);
alphaAB = _mm_srli_epi16(alphaAB, 2); // Reduce to 64 levels of shades so the max value fits in 16 bits.
__m128i nom = _mm_sub_epi16(tr_nom_base, alphaAB);
dstAB = _mm_mullo_epi16(dstAB, nom);
dstAB = _mm_srli_epi16(dstAB, 8);
dstAB = _mm_packus_epi16(dstAB, dstCD);
Colour *old_dst = dst;
src += 2;
dst += 2;
anim += 2;
dstABCD = _mm_loadu_si128((__m128i*) dst);
_mm_storeu_si128((__m128i *) old_dst, dstAB);
srcABCD = _mm_loadu_si128((const __m128i*) src);
if (src[-2].a) anim[-2] = 0;
if (src[-1].a) anim[-1] = 0;
}
if (bp->width & 1) {
__m128i srcAB = _mm_unpacklo_epi8(srcABCD, _mm_setzero_si128());
__m128i dstAB = _mm_unpacklo_epi8(dstABCD, _mm_setzero_si128());
__m128i alphaAB = _mm_shuffle_epi8(srcAB, a_cm);
alphaAB = _mm_srli_epi16(alphaAB, 2);
__m128i nom = _mm_sub_epi16(tr_nom_base, alphaAB);
dstAB = _mm_mullo_epi16(dstAB, nom);
dstAB = _mm_srli_epi16(dstAB, 8);
dstAB = _mm_packus_epi16(dstAB, dstAB);
(*dst).data = EXTR32(dstAB, 0);
if (src[0].a) anim[0] = 0;
}
break;
}
}
src_mv_line += si->sprite_width;
src_rgba_line = (const Colour*) ((const byte*) src_rgba_line + si->sprite_line_size);
dst_line += bp->pitch;
anim_line += this->anim_buf_width;
}
}
IGNORE_UNINITIALIZED_WARNING_STOP
/**
* Draws a sprite to a (screen) buffer. Calls adequate templated function.
*
* @param bp further blitting parameters
* @param mode blitter mode
* @param zoom zoom level at which we are drawing
*/
void Blitter_32bppSSE4_Anim::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
{
switch (mode) {
case BM_NORMAL: {
const BlockType bt_last = (BlockType) (bp->width & 1);
if (bp->skip_left != 0 || bp->width <= MARGIN_NORMAL_THRESHOLD) {
switch (bt_last) {
case BT_EVEN: Draw<BM_NORMAL, RM_WITH_SKIP, BT_EVEN>(bp, zoom); return;
case BT_ODD: Draw<BM_NORMAL, RM_WITH_SKIP, BT_ODD>(bp, zoom); return;
default: NOT_REACHED();
}
} else {
switch (bt_last) {
case BT_EVEN: Draw<BM_NORMAL, RM_WITH_MARGIN, BT_EVEN>(bp, zoom); return;
case BT_ODD: Draw<BM_NORMAL, RM_WITH_MARGIN, BT_ODD>(bp, zoom); return;
default: NOT_REACHED();
}
}
break;
}
case BM_COLOUR_REMAP:
if (bp->skip_left != 0 || bp->width <= MARGIN_REMAP_THRESHOLD) {
Draw<BM_COLOUR_REMAP, RM_WITH_SKIP, BT_NONE>(bp, zoom); return;
} else {
Draw<BM_COLOUR_REMAP, RM_WITH_MARGIN, BT_NONE>(bp, zoom); return;
}
case BM_TRANSPARENT: Draw<BM_TRANSPARENT, RM_NONE, BT_NONE>(bp, zoom); return;
default: NOT_REACHED();
}
}
/** Same code as seen in 32bpp_sse2.cpp but some macros are not the same. */
inline Colour Blitter_32bppSSE4_Anim::AdjustBrightness(Colour colour, uint8 brightness)
{
/* Shortcut for normal brightness. */
if (brightness == DEFAULT_BRIGHTNESS) return colour;
return Blitter_32bppSSE4::ReallyAdjustBrightness(colour, brightness);
}
#endif /* WITH_SSE */
-47
View File
@@ -1,47 +0,0 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file 32bpp_sse4_anim.hpp A SSE4 32 bpp blitter with animation support. */
#ifndef BLITTER_32BPP_SSE4_ANIM_HPP
#define BLITTER_32BPP_SSE4_ANIM_HPP
#ifdef WITH_SSE
#include "32bpp_anim.hpp"
#include "32bpp_sse4.hpp"
#undef MARGIN_NORMAL_THRESHOLD
#define MARGIN_NORMAL_THRESHOLD 4
/** The SSE4 32 bpp blitter with palette animation. */
class Blitter_32bppSSE4_Anim FINAL : public Blitter_32bppAnim, public Blitter_32bppSSE_Base {
private:
public:
template <BlitterMode mode, Blitter_32bppSSE_Base::ReadMode read_mode, Blitter_32bppSSE_Base::BlockType bt_last>
/* virtual */ void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom);
/* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
/* virtual */ Colour AdjustBrightness(Colour colour, uint8 brightness);
/* virtual */ Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) {
return Blitter_32bppSSE_Base::Encode(sprite, allocator);
}
/* virtual */ const char *GetName() { return "32bpp-sse4-anim"; }
};
/** Factory for the SSE4 32 bpp blitter (with palette animation). */
class FBlitter_32bppSSE4_Anim: public BlitterFactory {
public:
FBlitter_32bppSSE4_Anim() : BlitterFactory("32bpp-sse4-anim", "SSE4 Blitter (palette animation)", HasCPUIDFlag(1, 2, 19)) {}
/* virtual */ Blitter *CreateInstance() { return new Blitter_32bppSSE4_Anim(); }
};
#endif /* WITH_SSE */
#endif /* BLITTER_32BPP_SSE4_ANIM_HPP */
+3 -2
View File
@@ -32,9 +32,10 @@ public:
};
/** Factory for the optimised 32 bpp blitter (without palette animation). */
class FBlitter_32bppOptimized : public BlitterFactory {
class FBlitter_32bppOptimized : public BlitterFactory<FBlitter_32bppOptimized> {
public:
FBlitter_32bppOptimized() : BlitterFactory("32bpp-optimized", "32bpp Optimized Blitter (no palette animation)") {}
/* virtual */ const char *GetName() { return "32bpp-optimized"; }
/* virtual */ const char *GetDescription() { return "32bpp Optimized Blitter (no palette animation)"; }
/* virtual */ Blitter *CreateInstance() { return new Blitter_32bppOptimized(); }
};
+3 -2
View File
@@ -34,9 +34,10 @@ public:
};
/** Factory for the simple 32 bpp blitter. */
class FBlitter_32bppSimple : public BlitterFactory {
class FBlitter_32bppSimple : public BlitterFactory<FBlitter_32bppSimple> {
public:
FBlitter_32bppSimple() : BlitterFactory("32bpp-simple", "32bpp Simple Blitter (no palette animation)") {}
/* virtual */ const char *GetName() { return "32bpp-simple"; }
/* virtual */ const char *GetDescription() { return "32bpp Simple Blitter (no palette animation)"; }
/* virtual */ Blitter *CreateInstance() { return new Blitter_32bppSimple(); }
};
-379
View File
@@ -1,379 +0,0 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file 32bpp_sse2.cpp Implementation of the SSE2 32 bpp blitter. */
#ifdef WITH_SSE
#include "../stdafx.h"
#include "../zoom_func.h"
#include "../settings_type.h"
#include "32bpp_sse2.hpp"
/** Instantiation of the SSE2 32bpp blitter factory. */
static FBlitter_32bppSSE2 iFBlitter_32bppSSE2;
/**
* Draws a sprite to a (screen) buffer. It is templated to allow faster operation.
*
* @tparam mode blitter mode
* @param bp further blitting parameters
* @param zoom zoom level at which we are drawing
*/
IGNORE_UNINITIALIZED_WARNING_START
template <BlitterMode mode, Blitter_32bppSSE2::ReadMode read_mode, Blitter_32bppSSE2::BlockType bt_last>
inline void Blitter_32bppSSE2::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom)
{
Colour *dst_line = (Colour *) bp->dst + bp->top * bp->pitch + bp->left;
int effective_width = bp->width;
/* Find where to start reading in the source sprite */
const SpriteData * const sd = (const SpriteData *) bp->sprite;
const SpriteInfo * const si = &sd->infos[zoom];
const MapValue *src_mv_line = (const MapValue *) &sd->data[si->mv_offset] + bp->skip_top * si->sprite_width;
const Colour *src_rgba_line = (const Colour *) ((const byte *) &sd->data[si->sprite_offset] + bp->skip_top * si->sprite_line_size);
if (read_mode != RM_WITH_MARGIN) {
src_rgba_line += bp->skip_left;
src_mv_line += bp->skip_left;
}
/* Load these variables into register before loop. */
const __m128i clear_hi = CLEAR_HIGH_BYTE_MASK;
const __m128i tr_nom_base = TRANSPARENT_NOM_BASE;
for (int y = bp->height; y != 0; y--) {
Colour *dst = dst_line;
const Colour *src = src_rgba_line + META_LENGTH;
const MapValue *src_mv = src_mv_line;
switch (mode) {
default: {
switch (read_mode) {
case RM_WITH_MARGIN: {
src += src_rgba_line[0].data;
dst += src_rgba_line[0].data;
const int width_diff = si->sprite_width - bp->width;
effective_width = bp->width - (int) src_rgba_line[0].data;
const int delta_diff = (int) src_rgba_line[1].data - width_diff;
const int new_width = effective_width - (delta_diff & ~1);
effective_width = delta_diff > 0 ? new_width : effective_width;
if (effective_width <= 0) break;
/* FALLTHROUGH */
}
case RM_WITH_SKIP: {
for (uint x = (uint) effective_width / 2; x > 0; x--) {
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
ALPHA_BLEND_2();
*(uint64*) dst = EXTR64(srcABCD, 0);
src += 2;
dst += 2;
}
if (bt_last == BT_ODD) {
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
ALPHA_BLEND_2();
(*dst).data = EXTR32(srcABCD, 0);
}
break;
}
default: NOT_REACHED();
}
break;
}
case BM_COLOUR_REMAP: {
switch (read_mode) {
case RM_WITH_MARGIN: {
src += src_rgba_line[0].data;
src_mv += src_rgba_line[0].data;
dst += src_rgba_line[0].data;
const int width_diff = si->sprite_width - bp->width;
effective_width = bp->width - (int) src_rgba_line[0].data;
const int delta_diff = (int) src_rgba_line[1].data - width_diff;
const int nd = effective_width - delta_diff;
effective_width = delta_diff > 0 ? nd : effective_width;
if (effective_width <= 0) break;
/* FALLTHROUGH */
}
case RM_WITH_SKIP: {
const byte *remap = bp->remap;
for (uint x = (uint) effective_width; x != 0; x--) {
/* In case the m-channel is zero, do not remap this pixel in any way */
if (src_mv->m == 0) {
if (src->a < 255) {
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
ALPHA_BLEND_2();
(*dst).data = EXTR32(srcABCD, 0);
} else {
*dst = src->data;
}
} else {
const uint r = remap[src_mv->m];
if (r != 0) {
Colour remapped_colour = AdjustBrightness(this->LookupColourInPalette(r), src_mv->v);
if (src->a < 255) {
__m128i srcABCD;
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
remapped_colour.a = src->a;
INSR32(remapped_colour.data, srcABCD, 0);
ALPHA_BLEND_2();
(*dst).data = EXTR32(srcABCD, 0);
} else
*dst = remapped_colour;
}
}
src_mv++;
dst++;
src++;
}
break;
}
default: NOT_REACHED();
}
src_mv_line += si->sprite_width;
break;
}
case BM_TRANSPARENT: {
/* Make the current colour a bit more black, so it looks like this image is transparent.
* rgb = rgb * ((256/4) * 4 - (alpha/4)) / ((256/4) * 4)
*/
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
for (uint x = (uint) bp->width / 2; x > 0; x--) {
__m128i srcAB = _mm_unpacklo_epi8(srcABCD, _mm_setzero_si128());
__m128i dstAB = _mm_unpacklo_epi8(dstABCD, _mm_setzero_si128());
__m128i dstCD = _mm_unpackhi_epi8(dstABCD, _mm_setzero_si128());
__m128i alphaAB = _mm_shufflelo_epi16(srcAB, 0x3F);
alphaAB = _mm_shufflehi_epi16(alphaAB, 0x3F);
alphaAB = _mm_srli_epi16(alphaAB, 2); // Reduce to 64 levels of shades so the max value fits in 16 bits.
__m128i nom = _mm_sub_epi16(tr_nom_base, alphaAB);
dstAB = _mm_mullo_epi16(dstAB, nom);
dstAB = _mm_srli_epi16(dstAB, 8);
dstAB = _mm_packus_epi16(dstAB, dstCD);
Colour *old_dst = dst;
src += 2;
dst += 2;
dstABCD = _mm_loadu_si128((__m128i*) dst);
_mm_storeu_si128((__m128i *) old_dst, dstAB);
srcABCD = _mm_loadu_si128((const __m128i*) src);
}
if (bp->width & 1) {
__m128i srcAB = _mm_unpacklo_epi8(srcABCD, _mm_setzero_si128());
__m128i dstAB = _mm_unpacklo_epi8(dstABCD, _mm_setzero_si128());
__m128i alphaAB = _mm_shufflelo_epi16(srcAB, 0x3F);
alphaAB = _mm_shufflehi_epi16(alphaAB, 0x3F);
alphaAB = _mm_srli_epi16(alphaAB, 2);
__m128i nom = _mm_sub_epi16(tr_nom_base, alphaAB);
dstAB = _mm_mullo_epi16(dstAB, nom);
dstAB = _mm_srli_epi16(dstAB, 8);
dstAB = _mm_packus_epi16(dstAB, dstAB);
(*dst).data = EXTR32(dstAB, 0);
}
break;
}
}
src_rgba_line = (const Colour*) ((const byte*) src_rgba_line + si->sprite_line_size);
dst_line += bp->pitch;
}
}
IGNORE_UNINITIALIZED_WARNING_STOP
/**
* Draws a sprite to a (screen) buffer. Calls adequate templated function.
*
* @param bp further blitting parameters
* @param mode blitter mode
* @param zoom zoom level at which we are drawing
*/
void Blitter_32bppSSE2::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
{
switch (mode) {
case BM_NORMAL: {
const BlockType bt_last = (BlockType) (bp->width & 1);
if (bp->skip_left != 0 || bp->width <= MARGIN_NORMAL_THRESHOLD) {
switch (bt_last) {
case BT_EVEN: Draw<BM_NORMAL, RM_WITH_SKIP, BT_EVEN>(bp, zoom); return;
case BT_ODD: Draw<BM_NORMAL, RM_WITH_SKIP, BT_ODD>(bp, zoom); return;
default: NOT_REACHED();
}
} else {
switch (bt_last) {
case BT_EVEN: Draw<BM_NORMAL, RM_WITH_MARGIN, BT_EVEN>(bp, zoom); return;
case BT_ODD: Draw<BM_NORMAL, RM_WITH_MARGIN, BT_ODD>(bp, zoom); return;
default: NOT_REACHED();
}
}
break;
}
case BM_COLOUR_REMAP:
if (bp->skip_left != 0 || bp->width <= MARGIN_REMAP_THRESHOLD) {
Draw<BM_COLOUR_REMAP, RM_WITH_SKIP, BT_NONE>(bp, zoom); return;
} else {
Draw<BM_COLOUR_REMAP, RM_WITH_MARGIN, BT_NONE>(bp, zoom); return;
}
case BM_TRANSPARENT: Draw<BM_TRANSPARENT, RM_NONE, BT_NONE>(bp, zoom); return;
default: NOT_REACHED();
}
}
Sprite *Blitter_32bppSSE_Base::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
{
/* First uint32 of a line = ~1 & the number of transparent pixels from the left.
* Second uint32 of a line = the number of transparent pixels from the right.
* Then all RGBA then all MV.
*/
ZoomLevel zoom_min = ZOOM_LVL_NORMAL;
ZoomLevel zoom_max = ZOOM_LVL_NORMAL;
if (sprite->type != ST_FONT) {
zoom_min = _settings_client.gui.zoom_min;
zoom_max = _settings_client.gui.zoom_max;
if (zoom_max == zoom_min) zoom_max = ZOOM_LVL_MAX;
}
/* Calculate sizes and allocate. */
SpriteData sd;
uint all_sprites_size = 0;
for (ZoomLevel z = zoom_min; z <= zoom_max; z++) {
const SpriteLoader::Sprite *src_sprite = &sprite[z];
sd.infos[z].sprite_width = src_sprite->width;
sd.infos[z].sprite_offset = all_sprites_size;
sd.infos[z].sprite_line_size = sizeof(Colour) * src_sprite->width + sizeof(uint32) * META_LENGTH;
const uint rgba_size = sd.infos[z].sprite_line_size * src_sprite->height;
sd.infos[z].mv_offset = all_sprites_size + rgba_size;
const uint mv_size = sizeof(MapValue) * src_sprite->width * src_sprite->height;
all_sprites_size += rgba_size + mv_size;
}
Sprite *dst_sprite = (Sprite *) allocator(sizeof(Sprite) + sizeof(SpriteData) + all_sprites_size);
dst_sprite->height = sprite->height;
dst_sprite->width = sprite->width;
dst_sprite->x_offs = sprite->x_offs;
dst_sprite->y_offs = sprite->y_offs;
memcpy(dst_sprite->data, &sd, sizeof(SpriteData));
/* Copy colours. */
for (ZoomLevel z = zoom_min; z <= zoom_max; z++) {
const SpriteLoader::Sprite *src_sprite = &sprite[z];
const SpriteLoader::CommonPixel *src = (const SpriteLoader::CommonPixel *) src_sprite->data;
Colour *dst_rgba_line = (Colour *) &dst_sprite->data[sizeof(SpriteData) + sd.infos[z].sprite_offset];
MapValue *dst_mv = (MapValue *) &dst_sprite->data[sizeof(SpriteData) + sd.infos[z].mv_offset];
for (uint y = src_sprite->height; y != 0; y--) {
Colour *dst_rgba = dst_rgba_line + META_LENGTH;
for (uint x = src_sprite->width; x != 0; x--) {
if (src->a != 0) {
dst_rgba->a = src->a;
dst_mv->m = src->m;
if (src->m != 0) {
/* Get brightest value (or default brightness if it's a black pixel). */
const uint8 rgb_max = max(src->r, max(src->g, src->b));
dst_mv->v = (rgb_max == 0) ? Blitter_32bppBase::DEFAULT_BRIGHTNESS : rgb_max;
/* Pre-convert the mapping channel to a RGB value. */
const Colour colour = AdjustBrightness(Blitter_32bppBase::LookupColourInPalette(src->m), dst_mv->v);
dst_rgba->r = colour.r;
dst_rgba->g = colour.g;
dst_rgba->b = colour.b;
} else {
dst_rgba->r = src->r;
dst_rgba->g = src->g;
dst_rgba->b = src->b;
dst_mv->v = Blitter_32bppBase::DEFAULT_BRIGHTNESS;
}
} else {
dst_rgba->data = 0;
*(uint16*) dst_mv = 0;
}
dst_rgba++;
dst_mv++;
src++;
}
/* Count the number of transparent pixels from the left. */
dst_rgba = dst_rgba_line + META_LENGTH;
uint32 nb_pix_transp = 0;
for (uint x = src_sprite->width; x != 0; x--) {
if (dst_rgba->a == 0) nb_pix_transp++;
else break;
dst_rgba++;
}
(*dst_rgba_line).data = nb_pix_transp & ~1; // "& ~1" to preserve the last block type
Colour *nb_right = dst_rgba_line + 1;
dst_rgba_line = (Colour*) ((byte*) dst_rgba_line + sd.infos[z].sprite_line_size);
/* Count the number of transparent pixels from the right. */
dst_rgba = dst_rgba_line - 1;
nb_pix_transp = 0;
for (uint x = src_sprite->width; x != 0; x--) {
if (dst_rgba->a == 0) nb_pix_transp++;
else break;
dst_rgba--;
}
(*nb_right).data = nb_pix_transp; // no "& ~1" here, must be done when we know bp->width
}
}
return dst_sprite;
}
/** ReallyAdjustBrightness() is not called that often.
* Inlining this function implies a far jump, which has a huge latency.
*/
inline Colour Blitter_32bppSSE2::AdjustBrightness(Colour colour, uint8 brightness)
{
/* Shortcut for normal brightness. */
if (brightness == DEFAULT_BRIGHTNESS) return colour;
return Blitter_32bppSSE2::ReallyAdjustBrightness(colour, brightness);
}
IGNORE_UNINITIALIZED_WARNING_START
/* static */ Colour Blitter_32bppSSE2::ReallyAdjustBrightness(Colour colour, uint8 brightness)
{
ALIGN(16) uint64 c16 = colour.b | (uint64) colour.g << 16 | (uint64) colour.r << 32;
c16 *= brightness;
uint64 c16_ob = c16; // Helps out of order execution.
c16 /= DEFAULT_BRIGHTNESS;
c16 &= 0x01FF01FF01FF;
/* Sum overbright (maximum for each rgb is 508, 9 bits, -255 is changed in -256 so we just have to take the 8 lower bits into account). */
c16_ob = (((c16_ob >> (8 + 7)) & 0x0100010001) * 0xFF) & c16;
uint64 ob = (uint16) c16_ob + (uint16) (c16_ob >> 16) + (uint16) (c16_ob >> 32);
const uint32 alpha32 = colour.data & 0xFF000000;
__m128i ret;
INSR64(c16, ret, 0);
if (ob != 0) {
/* Reduce overbright strength. */
ob /= 2;
__m128i ob128;
INSR64(ob | ob << 16 | ob << 32, ob128, 0);
__m128i white = OVERBRIGHT_VALUE_MASK;
__m128i c128 = ret;
ret = _mm_subs_epu16(white, c128); /* PSUBUSW, (255 - rgb) */
ret = _mm_mullo_epi16(ret, ob128); /* PMULLW, ob*(255 - rgb) */
ret = _mm_srli_epi16(ret, 8); /* PSRLW, ob*(255 - rgb)/256 */
ret = _mm_add_epi16(ret, c128); /* PADDW, ob*(255 - rgb)/256 + rgb */
}
ret = _mm_packus_epi16(ret, ret); /* PACKUSWB, saturate and pack. */
return alpha32 | EXTR32(ret, 0);
}
IGNORE_UNINITIALIZED_WARNING_STOP
#endif /* WITH_SSE */
-141
View File
@@ -1,141 +0,0 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file 32bpp_sse2.hpp SSE2 32 bpp blitter. */
#ifndef BLITTER_32BPP_SSE2_HPP
#define BLITTER_32BPP_SSE2_HPP
#ifdef WITH_SSE
#include "32bpp_simple.hpp"
#include "emmintrin.h"
#define META_LENGTH 2 ///< Number of uint32 inserted before each line of pixels in a sprite.
#define MARGIN_NORMAL_THRESHOLD (zoom == ZOOM_LVL_OUT_32X ? 8 : 4) ///< Minimum width to use margins with BM_NORMAL.
#define MARGIN_REMAP_THRESHOLD 4 ///< Minimum width to use margins with BM_COLOUR_REMAP.
#ifdef _MSC_VER
#define ALIGN(n) __declspec(align(n))
#else
#define ALIGN(n) __attribute__ ((aligned (n)))
#endif
typedef union ALIGN(16) um128i {
__m128i m128i;
uint8 m128i_u8[16];
uint16 m128i_u16[8];
uint32 m128i_u32[4];
uint64 m128i_u64[2];
} um128i;
#define CLEAR_HIGH_BYTE_MASK _mm_setr_epi8(-1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0)
#define ALPHA_CONTROL_MASK _mm_setr_epi8( 6, 7, 6, 7, 6, 7, -1, -1, 14, 15, 14, 15, 14, 15, -1, -1)
#define PACK_LOW_CONTROL_MASK _mm_setr_epi8( 0, 2, 4, -1, 8, 10, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1)
#define PACK_HIGH_CONTROL_MASK _mm_setr_epi8(-1, -1, -1, -1, -1, -1, -1, -1, 0, 2, 4, -1, 8, 10, 12, -1)
#define BRIGHTNESS_LOW_CONTROL_MASK _mm_setr_epi8( 1, 2, 1, 2, 1, 2, 0, 2, 3, 2, 3, 2, 3, 2, 0, 2)
#define BRIGHTNESS_DIV_CLEANER _mm_setr_epi8(-1, 1, -1, 1, -1, 1, -1, 0, -1, 1, -1, 1, -1, 1, -1, 0)
#define OVERBRIGHT_PRESENCE_MASK _mm_setr_epi8( 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0)
#define OVERBRIGHT_VALUE_MASK _mm_setr_epi8(-1, 0, -1, 0, -1, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, 0)
#define OVERBRIGHT_CONTROL_MASK _mm_setr_epi8( 0, 1, 0, 1, 0, 1, 7, 7, 2, 3, 2, 3, 2, 3, 7, 7)
#define TRANSPARENT_NOM_BASE _mm_setr_epi16(256, 256, 256, 256, 256, 256, 256, 256)
#define EXTR32(from, rank) (*(um128i*) &from).m128i_u32[rank]
#define EXTR64(from, rank) (*(um128i*) &from).m128i_u64[rank]
#define INSR32(val, into, rank) { \
(*(um128i*) &into).m128i = _mm_insert_epi16((*(um128i*) &into).m128i, val, (rank)*2); \
(*(um128i*) &into).m128i = _mm_insert_epi16((*(um128i*) &into).m128i, (val) >> 16, (rank)*2 + 1); \
}
#define INSR64(val, into, rank) (*(um128i*) &into).m128i_u64[rank] = (val)
/* Alpha blend 2 pixels. */
#define ALPHA_BLEND_2() { \
__m128i srcAB = _mm_unpacklo_epi8(srcABCD, _mm_setzero_si128()); /* PUNPCKLBW, expand each uint8 into uint16 */ \
__m128i dstAB = _mm_unpacklo_epi8(dstABCD, _mm_setzero_si128()); \
\
__m128i alphaAB = _mm_cmpgt_epi16(srcAB, _mm_setzero_si128()); /* PCMPGTW, if (alpha > 0) a++; */ \
alphaAB = _mm_srli_epi16(alphaAB, 15); \
alphaAB = _mm_add_epi16(alphaAB, srcAB); \
alphaAB = _mm_shufflelo_epi16(alphaAB, 0x3F); /* PSHUFLW, put alpha1 in front of each rgb1 */ \
alphaAB = _mm_shufflehi_epi16(alphaAB, 0x3F); /* PSHUFHW, put alpha2 in front of each rgb2 */ \
\
srcAB = _mm_sub_epi16(srcAB, dstAB); /* PSUBW, (r - Cr) */ \
srcAB = _mm_mullo_epi16(srcAB, alphaAB); /* PMULLW, a*(r - Cr) */ \
srcAB = _mm_srli_epi16(srcAB, 8); /* PSRLW, a*(r - Cr)/256 */ \
srcAB = _mm_add_epi16(srcAB, dstAB); /* PADDW, a*(r - Cr)/256 + Cr */ \
srcAB = _mm_and_si128(srcAB, clear_hi); /* PAND, wipe high bytes to keep low bytes when packing */ \
srcABCD = _mm_packus_epi16(srcAB, srcAB); /* PACKUSWB, pack 2 colours (with saturation) */ \
}
/** Base methods for 32bpp SSE blitters. */
class Blitter_32bppSSE_Base {
public:
virtual ~Blitter_32bppSSE_Base() {}
struct MapValue {
uint8 m;
uint8 v;
};
assert_compile(sizeof(MapValue) == 2);
/** Helper for creating specialised functions for specific optimisations. */
enum ReadMode {
RM_WITH_SKIP, ///< Use normal code for skipping empty pixels.
RM_WITH_MARGIN, ///< Use cached number of empty pixels at begin and end of line to reduce work.
RM_NONE, ///< No specialisation.
};
/** Helper for creating specialised functions for the case where the sprite width is odd or even. */
enum BlockType {
BT_EVEN, ///< An even number of pixels in the width; no need for a special case for the last pixel.
BT_ODD, ///< An odd number of pixels in the width; special case for the last pixel.
BT_NONE, ///< No specialisation for either case.
};
/** Data stored about a (single) sprite. */
struct SpriteInfo {
uint32 sprite_offset; ///< The offset to the sprite data.
uint32 mv_offset; ///< The offset to the map value data.
uint16 sprite_line_size; ///< The size of a single line (pitch).
uint16 sprite_width; ///< The width of the sprite.
};
struct SpriteData {
SpriteInfo infos[ZOOM_LVL_COUNT];
byte data[]; ///< Data, all zoomlevels.
};
Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
virtual Colour AdjustBrightness(Colour colour, uint8 brightness) = 0;
};
/** The SSE2 32 bpp blitter (without palette animation). */
class Blitter_32bppSSE2 : public Blitter_32bppSimple, public Blitter_32bppSSE_Base {
public:
virtual Colour AdjustBrightness(Colour colour, uint8 brightness);
static Colour ReallyAdjustBrightness(Colour colour, uint8 brightness);
/* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
template <BlitterMode mode, Blitter_32bppSSE_Base::ReadMode read_mode, Blitter_32bppSSE_Base::BlockType bt_last>
void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom);
/* virtual */ Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) {
return Blitter_32bppSSE_Base::Encode(sprite, allocator);
}
/* virtual */ const char *GetName() { return "32bpp-sse2"; }
};
/** Factory for the SSE2 32 bpp blitter (without palette animation). */
class FBlitter_32bppSSE2 : public BlitterFactory {
public:
FBlitter_32bppSSE2() : BlitterFactory("32bpp-sse2", "32bpp SSE2 Blitter (no palette animation)", HasCPUIDFlag(1, 3, 26)) {}
/* virtual */ Blitter *CreateInstance() { return new Blitter_32bppSSE2(); }
};
#endif /* WITH_SSE */
#endif /* BLITTER_32BPP_SSE2_HPP */
-324
View File
@@ -1,324 +0,0 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file 32bpp_sse4.cpp Implementation of the SSE4 32 bpp blitter. */
#ifdef WITH_SSE
#include "../stdafx.h"
#include "../zoom_func.h"
#include "../settings_type.h"
#include "32bpp_sse4.hpp"
/** Instantiation of the SSE4 32bpp blitter factory. */
static FBlitter_32bppSSE4 iFBlitter_32bppSSE4;
/**
* Draws a sprite to a (screen) buffer. It is templated to allow faster operation.
*
* @tparam mode blitter mode
* @param bp further blitting parameters
* @param zoom zoom level at which we are drawing
*/
IGNORE_UNINITIALIZED_WARNING_START
template <BlitterMode mode, Blitter_32bppSSE2::ReadMode read_mode, Blitter_32bppSSE2::BlockType bt_last>
inline void Blitter_32bppSSE4::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom)
{
const byte * const remap = bp->remap;
Colour *dst_line = (Colour *) bp->dst + bp->top * bp->pitch + bp->left;
int effective_width = bp->width;
/* Find where to start reading in the source sprite. */
const SpriteData * const sd = (const SpriteData *) bp->sprite;
const SpriteInfo * const si = &sd->infos[zoom];
const MapValue *src_mv_line = (const MapValue *) &sd->data[si->mv_offset] + bp->skip_top * si->sprite_width;
const Colour *src_rgba_line = (const Colour *) ((const byte *) &sd->data[si->sprite_offset] + bp->skip_top * si->sprite_line_size);
if (read_mode != RM_WITH_MARGIN) {
src_rgba_line += bp->skip_left;
src_mv_line += bp->skip_left;
}
/* Load these variables into register before loop. */
const __m128i a_cm = ALPHA_CONTROL_MASK;
const __m128i pack_low_cm = PACK_LOW_CONTROL_MASK;
const __m128i briAB_cm = BRIGHTNESS_LOW_CONTROL_MASK;
const __m128i div_cleaner = BRIGHTNESS_DIV_CLEANER;
const __m128i ob_check = OVERBRIGHT_PRESENCE_MASK;
const __m128i ob_mask = OVERBRIGHT_VALUE_MASK;
const __m128i ob_cm = OVERBRIGHT_CONTROL_MASK;
const __m128i tr_nom_base = TRANSPARENT_NOM_BASE;
for (int y = bp->height; y != 0; y--) {
const Colour *src = src_rgba_line + META_LENGTH;
Colour *dst = dst_line;
const MapValue *src_mv = src_mv_line;
switch (mode) {
default: {
switch (read_mode) {
case RM_WITH_MARGIN: {
src += src_rgba_line[0].data;
dst += src_rgba_line[0].data;
const int width_diff = si->sprite_width - bp->width;
effective_width = bp->width - (int) src_rgba_line[0].data;
const int delta_diff = (int) src_rgba_line[1].data - width_diff;
const int new_width = effective_width - (delta_diff & ~1);
effective_width = delta_diff > 0 ? new_width : effective_width;
if (effective_width <= 0) break;
/* FALLTHROUGH */
}
case RM_WITH_SKIP: {
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
for (uint x = (uint) effective_width / 2; x > 0; x--) {
ALPHA_BLEND_2(pack_low_cm);
srcABCD = _mm_blend_epi16(srcABCD, dstABCD, 0xF0);
Colour *old_dst = dst;
src += 2;
dst += 2;
/* It is VERY important to read next data before it gets invalidated in cpu cache.
* And PEXTR latency is a real problem here.
*/
dstABCD = _mm_loadu_si128((__m128i*) dst);
_mm_storeu_si128((__m128i *) old_dst, srcABCD);
srcABCD = _mm_loadu_si128((const __m128i*) src);
}
if (bt_last == BT_ODD) {
ALPHA_BLEND_2(pack_low_cm);
*dst = (Colour) EXTR32(srcABCD, 0);
}
break;
}
default: NOT_REACHED();
}
break;
}
case BM_COLOUR_REMAP: {
switch (read_mode) {
case RM_WITH_MARGIN: {
src += src_rgba_line[0].data;
src_mv += src_rgba_line[0].data;
dst += src_rgba_line[0].data;
const int width_diff = si->sprite_width - bp->width;
effective_width = bp->width - (int) src_rgba_line[0].data;
const int delta_diff = (int) src_rgba_line[1].data - width_diff;
const int nd = effective_width - delta_diff;
effective_width = delta_diff > 0 ? nd : effective_width;
if (effective_width <= 0) break;
/* FALLTHROUGH */
}
case RM_WITH_SKIP: {
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
uint32 mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
for (uint x = (uint) effective_width / 2; x > 0; x--) {
/* Remap colours. */
if (mvX2 & 0x00FF00FF) {
/* Written so the compiler uses CMOV. */
const Colour src0 = src[0];
const uint m0 = (byte) mvX2;
const uint r0 = remap[m0];
const Colour c0map = (this->LookupColourInPalette(r0).data & 0x00FFFFFF) | (src0.data & 0xFF000000);
Colour c0 = 0; // Use alpha of 0 to keep dst as is.
c0 = r0 == 0 ? c0 : c0map;
c0 = m0 != 0 ? c0 : src0;
INSR32(c0.data, srcABCD, 0);
const Colour src1 = src[1];
const uint m1 = (byte) (mvX2 >> 16);
const uint r1 = remap[m1];
const Colour c1map = (this->LookupColourInPalette(r1).data & 0x00FFFFFF) | (src1.data & 0xFF000000);
Colour c1 = 0;
c1 = r1 == 0 ? c1 : c1map;
c1 = m1 != 0 ? c1 : src1;
INSR32(c1.data, srcABCD, 1);
if ((mvX2 & 0xFF00FF00) != 0x80008000) {
ADJUST_BRIGHTNESS_2(srcABCD, mvX2);
}
}
/* Blend colours. */
ALPHA_BLEND_2(pack_low_cm);
srcABCD = _mm_blend_epi16(srcABCD, dstABCD, 0xF0);
Colour *old_dst = dst;
dst += 2;
src += 2;
src_mv += 2;
dstABCD = _mm_loadu_si128((__m128i*) dst);
_mm_storeu_si128((__m128i *) old_dst, srcABCD);
mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
srcABCD = _mm_loadu_si128((const __m128i*) src);
}
if (effective_width & 1) {
/* In case the m-channel is zero, do not remap this pixel in any way. */
if ((byte) mvX2 == 0) {
if (src->a < 255) {
ALPHA_BLEND_2(pack_low_cm);
(*dst).data = EXTR32(srcABCD, 0);
} else
*dst = *src;
} else {
const uint r = remap[(byte) mvX2];
if (r != 0) {
Colour remapped_colour = AdjustBrightness(this->LookupColourInPalette(r), (byte) (mvX2 >> 8));
if (src->a == 255) {
*dst = remapped_colour;
} else {
remapped_colour.a = src->a;
INSR32(remapped_colour.data, srcABCD, 0);
ALPHA_BLEND_2(pack_low_cm);
(*dst).data = EXTR32(srcABCD, 0);
}
}
}
}
break;
}
default: NOT_REACHED();
}
src_mv_line += si->sprite_width;
break;
}
case BM_TRANSPARENT: {
/* Make the current colour a bit more black, so it looks like this image is transparent.
* rgb = rgb * ((256/4) * 4 - (alpha/4)) / ((256/4) * 4)
*/
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
for (uint x = (uint) bp->width / 2; x > 0; x--) {
__m128i srcAB = _mm_unpacklo_epi8(srcABCD, _mm_setzero_si128());
__m128i dstAB = _mm_unpacklo_epi8(dstABCD, _mm_setzero_si128());
__m128i dstCD = _mm_unpackhi_epi8(dstABCD, _mm_setzero_si128());
__m128i alphaAB = _mm_shuffle_epi8(srcAB, a_cm);
alphaAB = _mm_srli_epi16(alphaAB, 2); // Reduce to 64 levels of shades so the max value fits in 16 bits.
__m128i nom = _mm_sub_epi16(tr_nom_base, alphaAB);
dstAB = _mm_mullo_epi16(dstAB, nom);
dstAB = _mm_srli_epi16(dstAB, 8);
dstAB = _mm_packus_epi16(dstAB, dstCD);
Colour *old_dst = dst;
src += 2;
dst += 2;
dstABCD = _mm_loadu_si128((__m128i*) dst);
_mm_storeu_si128((__m128i *) old_dst, dstAB);
srcABCD = _mm_loadu_si128((const __m128i*) src);
}
if (bp->width & 1) {
__m128i srcAB = _mm_unpacklo_epi8(srcABCD, _mm_setzero_si128());
__m128i dstAB = _mm_unpacklo_epi8(dstABCD, _mm_setzero_si128());
__m128i alphaAB = _mm_shuffle_epi8(srcAB, a_cm);
alphaAB = _mm_srli_epi16(alphaAB, 2);
__m128i nom = _mm_sub_epi16(tr_nom_base, alphaAB);
dstAB = _mm_mullo_epi16(dstAB, nom);
dstAB = _mm_srli_epi16(dstAB, 8);
dstAB = _mm_packus_epi16(dstAB, dstAB);
(*dst).data = EXTR32(dstAB, 0);
}
break;
}
}
src_rgba_line = (const Colour*) ((const byte*) src_rgba_line + si->sprite_line_size);
dst_line += bp->pitch;
}
}
IGNORE_UNINITIALIZED_WARNING_STOP
/**
* Draws a sprite to a (screen) buffer. Calls adequate templated function.
*
* @param bp further blitting parameters
* @param mode blitter mode
* @param zoom zoom level at which we are drawing
*/
void Blitter_32bppSSE4::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
{
const BlockType bt_last = (BlockType) (bp->width & 1);
switch (mode) {
case BM_NORMAL: {
if (bp->skip_left != 0 || bp->width <= MARGIN_NORMAL_THRESHOLD) {
switch (bt_last) {
case BT_EVEN: Draw<BM_NORMAL, RM_WITH_SKIP, BT_EVEN>(bp, zoom); return;
case BT_ODD: Draw<BM_NORMAL, RM_WITH_SKIP, BT_ODD>(bp, zoom); return;
default: NOT_REACHED();
}
} else {
switch (bt_last) {
case BT_EVEN: Draw<BM_NORMAL, RM_WITH_MARGIN, BT_EVEN>(bp, zoom); return;
case BT_ODD: Draw<BM_NORMAL, RM_WITH_MARGIN, BT_ODD>(bp, zoom); return;
default: NOT_REACHED();
}
}
break;
}
case BM_COLOUR_REMAP:
if (bp->skip_left != 0 || bp->width <= MARGIN_REMAP_THRESHOLD) {
Draw<BM_COLOUR_REMAP, RM_WITH_SKIP, BT_NONE>(bp, zoom); return;
} else {
Draw<BM_COLOUR_REMAP, RM_WITH_MARGIN, BT_NONE>(bp, zoom); return;
}
case BM_TRANSPARENT: Draw<BM_TRANSPARENT, RM_NONE, BT_NONE>(bp, zoom); return;
default: NOT_REACHED();
}
}
/** Same code as seen in 32bpp_sse2.cpp but some macros are not the same. */
inline Colour Blitter_32bppSSE4::AdjustBrightness(Colour colour, uint8 brightness)
{
/* Shortcut for normal brightness. */
if (brightness == DEFAULT_BRIGHTNESS) return colour;
return Blitter_32bppSSE4::ReallyAdjustBrightness(colour, brightness);
}
IGNORE_UNINITIALIZED_WARNING_START
/* static */ Colour Blitter_32bppSSE4::ReallyAdjustBrightness(Colour colour, uint8 brightness)
{
ALIGN(16) uint64 c16 = colour.b | (uint64) colour.g << 16 | (uint64) colour.r << 32;
c16 *= brightness;
uint64 c16_ob = c16; // Helps out of order execution.
c16 /= DEFAULT_BRIGHTNESS;
c16 &= 0x01FF01FF01FF;
/* Sum overbright (maximum for each rgb is 508, 9 bits, -255 is changed in -256 so we just have to take the 8 lower bits into account). */
c16_ob = (((c16_ob >> (8 + 7)) & 0x0100010001) * 0xFF) & c16;
uint64 ob = (uint16) c16_ob + (uint16) (c16_ob >> 16) + (uint16) (c16_ob >> 32);
const uint32 alpha32 = colour.data & 0xFF000000;
__m128i ret;
INSR64(c16, ret, 0);
if (ob != 0) {
/* Reduce overbright strength. */
ob /= 2;
__m128i ob128;
INSR64(ob | ob << 16 | ob << 32, ob128, 0);
__m128i white = OVERBRIGHT_VALUE_MASK;
__m128i c128 = ret;
ret = _mm_subs_epu16(white, c128); /* PSUBUSW, (255 - rgb) */
ret = _mm_mullo_epi16(ret, ob128); /* PMULLW, ob*(255 - rgb) */
ret = _mm_srli_epi16(ret, 8); /* PSRLW, ob*(255 - rgb)/256 */
ret = _mm_add_epi16(ret, c128); /* PADDW, ob*(255 - rgb)/256 + rgb */
}
ret = _mm_packus_epi16(ret, ret); /* PACKUSWB, saturate and pack. */
return alpha32 | EXTR32(ret, 0);
}
IGNORE_UNINITIALIZED_WARNING_STOP
#endif /* WITH_SSE */
-61
View File
@@ -1,61 +0,0 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file 32bpp_sse4.hpp SSE4 32 bpp blitter. */
#ifndef BLITTER_32BPP_SSE4_HPP
#define BLITTER_32BPP_SSE4_HPP
#ifdef WITH_SSE
#include "32bpp_ssse3.hpp"
#include "smmintrin.h"
#undef EXTR32
#define EXTR32(from, rank) _mm_extract_epi32((*(um128i*) &from).m128i, rank)
#undef INSR32
#define INSR32(val, into, rank) (*(um128i*) &into).m128i = _mm_insert_epi32((*(um128i*) &into).m128i, val, rank)
IGNORE_UNINITIALIZED_WARNING_START
#ifdef _SQ64
#undef INSR64
#define INSR64(val, into, rank) (*(um128i*) &into).m128i = _mm_insert_epi64((*(um128i*) &into).m128i, val, rank)
#else
typedef union { uint64 u64; struct _u32 { uint32 low, high; } u32; } u6432;
#undef INSR64
#define INSR64(val, into, rank) { \
u6432 v; \
v.u64 = val; \
(*(um128i*) &into).m128i = _mm_insert_epi32((*(um128i*) &into).m128i, v.u32.low, (rank)*2); \
(*(um128i*) &into).m128i = _mm_insert_epi32((*(um128i*) &into).m128i, v.u32.high, (rank)*2 + 1); \
}
#endif
IGNORE_UNINITIALIZED_WARNING_STOP
/** The SSE4 32 bpp blitter (without palette animation). */
class Blitter_32bppSSE4 : public Blitter_32bppSSSE3 {
public:
Colour AdjustBrightness(Colour colour, uint8 brightness);
static Colour ReallyAdjustBrightness(Colour colour, uint8 brightness);
/* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
template <BlitterMode mode, Blitter_32bppSSE_Base::ReadMode read_mode, Blitter_32bppSSE_Base::BlockType bt_last>
void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom);
/* virtual */ const char *GetName() { return "32bpp-sse4"; }
};
/** Factory for the SSE4 32 bpp blitter (without palette animation). */
class FBlitter_32bppSSE4: public BlitterFactory {
public:
FBlitter_32bppSSE4() : BlitterFactory("32bpp-sse4", "32bpp SSE4 Blitter (no palette animation)", HasCPUIDFlag(1, 2, 19)) {}
/* virtual */ Blitter *CreateInstance() { return new Blitter_32bppSSE4(); }
};
#endif /* WITH_SSE */
#endif /* BLITTER_32BPP_SSE4_HPP */
-287
View File
@@ -1,287 +0,0 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file 32bpp_ssse3.cpp Implementation of the SSSE3 32 bpp blitter. */
#ifdef WITH_SSE
#include "../stdafx.h"
#include "../zoom_func.h"
#include "../settings_type.h"
#include "32bpp_ssse3.hpp"
/** Instantiation of the SSSE3 32bpp blitter factory. */
static FBlitter_32bppSSSE3 iFBlitter_32bppSSSE3;
#if defined(__GNUC__)
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wunused-variable"
#endif
/**
* Draws a sprite to a (screen) buffer. It is templated to allow faster operation.
*
* @tparam mode blitter mode
* @param bp further blitting parameters
* @param zoom zoom level at which we are drawing
*/
template <BlitterMode mode, Blitter_32bppSSE2::ReadMode read_mode, Blitter_32bppSSE2::BlockType bt_last>
inline void Blitter_32bppSSSE3::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom)
{
const byte * const remap = bp->remap;
Colour *dst_line = (Colour *) bp->dst + bp->top * bp->pitch + bp->left;
int effective_width = bp->width;
/* Find where to start reading in the source sprite */
const SpriteData * const sd = (const SpriteData *) bp->sprite;
const SpriteInfo * const si = &sd->infos[zoom];
const MapValue *src_mv_line = (const MapValue *) &sd->data[si->mv_offset] + bp->skip_top * si->sprite_width;
const Colour *src_rgba_line = (const Colour *) ((const byte *) &sd->data[si->sprite_offset] + bp->skip_top * si->sprite_line_size);
if (read_mode != RM_WITH_MARGIN) {
src_rgba_line += bp->skip_left;
src_mv_line += bp->skip_left;
}
/* Load these variables into register before loop. */
const __m128i a_cm = ALPHA_CONTROL_MASK;
const __m128i pack_hi_cm = PACK_HIGH_CONTROL_MASK;
const __m128i briAB_cm = BRIGHTNESS_LOW_CONTROL_MASK;
const __m128i div_cleaner = BRIGHTNESS_DIV_CLEANER;
const __m128i ob_check = OVERBRIGHT_PRESENCE_MASK;
const __m128i ob_mask = OVERBRIGHT_VALUE_MASK;
const __m128i ob_cm = OVERBRIGHT_CONTROL_MASK;
const __m128i tr_nom_base = TRANSPARENT_NOM_BASE;
for (int y = bp->height; y != 0; y--) {
Colour *dst = dst_line;
const Colour *src = src_rgba_line + META_LENGTH;
const MapValue *src_mv = src_mv_line;
switch (mode) {
default: {
switch (read_mode) {
case RM_WITH_MARGIN: {
src += src_rgba_line[0].data;
dst += src_rgba_line[0].data;
const int width_diff = si->sprite_width - bp->width;
effective_width = bp->width - (int) src_rgba_line[0].data;
const int delta_diff = (int) src_rgba_line[1].data - width_diff;
const int new_width = effective_width - (delta_diff & ~1);
effective_width = delta_diff > 0 ? new_width : effective_width;
if (effective_width <= 0) break;
/* FALLTHROUGH */
}
case RM_WITH_SKIP: {
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
for (uint x = (uint) effective_width / 2; x > 0; x--) {
ALPHA_BLEND_2(pack_hi_cm);
/* With high repack, srcABCD have its 2 blended pixels like: [S0 S1 S2 S3] -> [-- -- BS0 BS1]
* dstABCD shuffled: [D0 D1 D2 D3] -> [D2 D3 D0 D0]
* PALIGNR takes what's in (): [-- -- (BS0 BS1] [D2 D3) D0 D0]
*/
dstABCD = _mm_shuffle_epi32(dstABCD, 0x0E);
srcABCD = _mm_alignr_epi8(dstABCD, srcABCD, 8);
Colour *old_dst = dst;
src += 2;
dst += 2;
/* It is VERY important to read next data before it gets invalidated in cpu cache. */
dstABCD = _mm_loadu_si128((__m128i*) dst);
_mm_storeu_si128((__m128i *) old_dst, srcABCD);
srcABCD = _mm_loadu_si128((const __m128i*) src);
}
if (bt_last == BT_ODD) {
ALPHA_BLEND_2(pack_hi_cm);
(*dst).data = EXTR32(srcABCD, 2);
}
break;
}
default: NOT_REACHED();
}
break;
}
case BM_COLOUR_REMAP: {
switch (read_mode) {
case RM_WITH_MARGIN: {
src += src_rgba_line[0].data;
src_mv += src_rgba_line[0].data;
dst += src_rgba_line[0].data;
const int width_diff = si->sprite_width - bp->width;
effective_width = bp->width - (int) src_rgba_line[0].data;
const int delta_diff = (int) src_rgba_line[1].data - width_diff;
const int nd = effective_width - delta_diff;
effective_width = delta_diff > 0 ? nd : effective_width;
if (effective_width <= 0) break;
/* FALLTHROUGH */
}
case RM_WITH_SKIP: {
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
uint32 mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
for (uint x = (uint) effective_width / 2; x > 0; x--) {
/* Remap colours. */
if (mvX2 & 0x00FF00FF) {
/* Written so the compiler uses CMOV. */
const Colour src0 = src[0];
const uint m0 = (byte) mvX2;
const uint r0 = remap[m0];
const Colour c0map = (this->LookupColourInPalette(r0).data & 0x00FFFFFF) | (src0.data & 0xFF000000);
Colour c0 = 0; // Use alpha of 0 to keep dst as is.
c0 = r0 == 0 ? c0 : c0map;
c0 = m0 != 0 ? c0 : src0;
INSR32(c0.data, srcABCD, 0);
const Colour src1 = src[1];
const uint m1 = (byte) (mvX2 >> 16);
const uint r1 = remap[m1];
const Colour c1map = (this->LookupColourInPalette(r1).data & 0x00FFFFFF) | (src1.data & 0xFF000000);
Colour c1 = 0;
c1 = r1 == 0 ? c1 : c1map;
c1 = m1 != 0 ? c1 : src1;
INSR32(c1.data, srcABCD, 1);
if ((mvX2 & 0xFF00FF00) != 0x80008000) {
ADJUST_BRIGHTNESS_2(srcABCD, mvX2);
}
}
/* Blend colours. */
ALPHA_BLEND_2(pack_hi_cm);
dstABCD = _mm_shuffle_epi32(dstABCD, 0x0E);
srcABCD = _mm_alignr_epi8(dstABCD, srcABCD, 8);
Colour *old_dst = dst;
dst += 2;
src += 2;
src_mv += 2;
dstABCD = _mm_loadu_si128((__m128i*) dst);
_mm_storeu_si128((__m128i *) old_dst, srcABCD);
mvX2 = *((uint32 *) const_cast<MapValue *>(src_mv));
srcABCD = _mm_loadu_si128((const __m128i*) src);
}
if (effective_width & 1) {
/* In case the m-channel is zero, do not remap this pixel in any way */
if (src_mv->m == 0) {
if (src->a < 255) {
ALPHA_BLEND_2(pack_hi_cm);
(*dst).data = EXTR32(srcABCD, 2);
} else {
*dst = src->data;
}
} else {
const uint r = remap[src_mv->m];
if (r != 0) {
Colour remapped_colour = AdjustBrightness(this->LookupColourInPalette(r), src_mv->v);
if (src->a < 255) {
remapped_colour.a = src->a;
INSR32(remapped_colour.data, srcABCD, 0);
ALPHA_BLEND_2(pack_hi_cm);
(*dst).data = EXTR32(srcABCD, 2);
} else
*dst = remapped_colour;
}
}
}
break;
}
default: NOT_REACHED();
}
src_mv_line += si->sprite_width;
break;
}
case BM_TRANSPARENT: {
/* Make the current colour a bit more black, so it looks like this image is transparent.
* rgb = rgb * ((256/4) * 4 - (alpha/4)) / ((256/4) * 4)
*/
__m128i srcABCD = _mm_loadu_si128((const __m128i*) src);
__m128i dstABCD = _mm_loadu_si128((__m128i*) dst);
for (uint x = (uint) bp->width / 2; x > 0; x--) {
__m128i srcAB = _mm_unpacklo_epi8(srcABCD, _mm_setzero_si128());
__m128i dstAB = _mm_unpacklo_epi8(dstABCD, _mm_setzero_si128());
__m128i dstCD = _mm_unpackhi_epi8(dstABCD, _mm_setzero_si128());
__m128i alphaAB = _mm_shuffle_epi8(srcAB, a_cm);
alphaAB = _mm_srli_epi16(alphaAB, 2); // Reduce to 64 levels of shades so the max value fits in 16 bits.
__m128i nom = _mm_sub_epi16(tr_nom_base, alphaAB);
dstAB = _mm_mullo_epi16(dstAB, nom);
dstAB = _mm_srli_epi16(dstAB, 8);
dstAB = _mm_packus_epi16(dstAB, dstCD);
Colour *old_dst = dst;
src += 2;
dst += 2;
dstABCD = _mm_loadu_si128((__m128i*) dst);
_mm_storeu_si128((__m128i *) old_dst, dstAB);
srcABCD = _mm_loadu_si128((const __m128i*) src);
}
if (bp->width & 1) {
__m128i srcAB = _mm_unpacklo_epi8(srcABCD, _mm_setzero_si128());
__m128i dstAB = _mm_unpacklo_epi8(dstABCD, _mm_setzero_si128());
__m128i alphaAB = _mm_shuffle_epi8(srcAB, a_cm);
alphaAB = _mm_srli_epi16(alphaAB, 2);
__m128i nom = _mm_sub_epi16(tr_nom_base, alphaAB);
dstAB = _mm_mullo_epi16(dstAB, nom);
dstAB = _mm_srli_epi16(dstAB, 8);
dstAB = _mm_packus_epi16(dstAB, dstAB);
(*dst).data = EXTR32(dstAB, 0);
}
break;
}
}
src_rgba_line = (const Colour*) ((const byte*) src_rgba_line + si->sprite_line_size);
dst_line += bp->pitch;
}
}
#if defined(__GNUC__)
#pragma GCC diagnostic pop
#endif
/**
* Draws a sprite to a (screen) buffer. Calls adequate templated function.
*
* @param bp further blitting parameters
* @param mode blitter mode
* @param zoom zoom level at which we are drawing
*/
void Blitter_32bppSSSE3::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
{
switch (mode) {
case BM_NORMAL: {
const BlockType bt_last = (BlockType) (bp->width & 1);
if (bp->skip_left != 0 || bp->width <= MARGIN_NORMAL_THRESHOLD) {
switch (bt_last) {
case BT_EVEN: Draw<BM_NORMAL, RM_WITH_SKIP, BT_EVEN>(bp, zoom); return;
case BT_ODD: Draw<BM_NORMAL, RM_WITH_SKIP, BT_ODD>(bp, zoom); return;
default: NOT_REACHED();
}
} else {
switch (bt_last) {
case BT_EVEN: Draw<BM_NORMAL, RM_WITH_MARGIN, BT_EVEN>(bp, zoom); return;
case BT_ODD: Draw<BM_NORMAL, RM_WITH_MARGIN, BT_ODD>(bp, zoom); return;
default: NOT_REACHED();
}
}
break;
}
case BM_COLOUR_REMAP:
if (bp->skip_left != 0 || bp->width <= MARGIN_REMAP_THRESHOLD) {
Draw<BM_COLOUR_REMAP, RM_WITH_SKIP, BT_NONE>(bp, zoom); return;
} else {
Draw<BM_COLOUR_REMAP, RM_WITH_MARGIN, BT_NONE>(bp, zoom); return;
}
case BM_TRANSPARENT: Draw<BM_TRANSPARENT, RM_NONE, BT_NONE>(bp, zoom); return;
default: NOT_REACHED();
}
}
#endif /* WITH_SSE */
-94
View File
@@ -1,94 +0,0 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file 32bpp_ssse3.hpp SSSE3 32 bpp blitter. */
#ifndef BLITTER_32BPP_SSSE3_HPP
#define BLITTER_32BPP_SSSE3_HPP
#ifdef WITH_SSE
#include "32bpp_sse2.hpp"
#include "tmmintrin.h"
/* Alpha blend 2 pixels. */
#undef ALPHA_BLEND_2
#define ALPHA_BLEND_2(m_pack_mask) { \
__m128i srcAB = _mm_unpacklo_epi8(srcABCD, _mm_setzero_si128()); /* PUNPCKLBW, expand each uint8 into uint16 */ \
__m128i dstAB = _mm_unpacklo_epi8(dstABCD, _mm_setzero_si128()); \
\
__m128i alphaAB = _mm_cmpgt_epi16(srcAB, _mm_setzero_si128()); /* PCMPGTW, if (alpha > 0) a++; */ \
alphaAB = _mm_srli_epi16(alphaAB, 15); \
alphaAB = _mm_add_epi16(alphaAB, srcAB); \
alphaAB = _mm_shuffle_epi8(alphaAB, a_cm); /* PSHUFB, put alpha in front of each rgb */ \
\
srcAB = _mm_sub_epi16(srcAB, dstAB); /* PSUBW, (r - Cr) */ \
srcAB = _mm_mullo_epi16(srcAB, alphaAB); /* PMULLW, a*(r - Cr) */ \
srcAB = _mm_srli_epi16(srcAB, 8); /* PSRLW, a*(r - Cr)/256 */ \
srcAB = _mm_add_epi16(srcAB, dstAB); /* PADDW, a*(r - Cr)/256 + Cr */ \
srcABCD = _mm_shuffle_epi8(srcAB, m_pack_mask); /* PSHUFB, pack 2 Colour (without saturation) */ \
}
/* Adjust brightness of 2 pixels. */
#define ADJUST_BRIGHTNESS_2(colourX2, brightnessX2) \
/* The following dataflow differs from the one of AdjustBrightness() only for alpha.
* In order to keep alpha in colAB, insert a 1 in a unused brightness byte (a*1->a).
* OK, not a 1 but DEFAULT_BRIGHTNESS to compensate the div.
*/ \
brightnessX2 &= 0xFF00FF00; \
brightnessX2 += DEFAULT_BRIGHTNESS; \
\
__m128i zero = _mm_setzero_si128(); \
__m128i colAB = _mm_unpacklo_epi8(colourX2, zero); \
\
__m128i briAB; \
INSR64(brightnessX2, briAB, 0); \
briAB = _mm_shuffle_epi8(briAB, briAB_cm); /* DEFAULT_BRIGHTNESS in 0, 0x00 in 2. */ \
colAB = _mm_mullo_epi16(colAB, briAB); \
__m128i colAB_ob = _mm_srli_epi16(colAB, 8+7); \
colAB = _mm_srli_epi16(colAB, 7); \
\
/* Sum overbright.
* Maximum for each rgb is 508 => 9 bits. The highest bit tells if there is overbright.
* -255 is changed in -256 so we just have to take the 8 lower bits into account.
*/ \
colAB = _mm_and_si128(colAB, div_cleaner); \
colAB_ob = _mm_and_si128(colAB_ob, ob_check); \
colAB_ob = _mm_mullo_epi16(colAB_ob, ob_mask); \
colAB_ob = _mm_and_si128(colAB_ob, colAB); \
__m128i obAB = _mm_hadd_epi16(_mm_hadd_epi16(colAB_ob, zero), zero); \
\
obAB = _mm_srli_epi16(obAB, 1); /* Reduce overbright strength. */ \
obAB = _mm_shuffle_epi8(obAB, ob_cm); \
__m128i retAB = ob_mask; /* ob_mask is equal to white. */ \
retAB = _mm_subs_epu16(retAB, colAB); /* (255 - rgb) */ \
retAB = _mm_mullo_epi16(retAB, obAB); /* ob*(255 - rgb) */ \
retAB = _mm_srli_epi16(retAB, 8); /* ob*(255 - rgb)/256 */ \
retAB = _mm_add_epi16(retAB, colAB); /* ob*(255 - rgb)/256 + rgb */ \
\
colourX2 = _mm_packus_epi16(retAB, retAB);
/** The SSSE3 32 bpp blitter (without palette animation). */
class Blitter_32bppSSSE3 : public Blitter_32bppSSE2 {
public:
/* virtual */ void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom);
template <BlitterMode mode, Blitter_32bppSSE_Base::ReadMode read_mode, Blitter_32bppSSE_Base::BlockType bt_last>
void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom);
/* virtual */ const char *GetName() { return "32bpp-ssse3"; }
};
/** Factory for the SSSE3 32 bpp blitter (without palette animation). */
class FBlitter_32bppSSSE3: public BlitterFactory {
public:
FBlitter_32bppSSSE3() : BlitterFactory("32bpp-ssse3", "32bpp SSSE3 Blitter (no palette animation)", HasCPUIDFlag(1, 2, 9)) {}
/* virtual */ Blitter *CreateInstance() { return new Blitter_32bppSSSE3(); }
};
#endif /* WITH_SSE */
#endif /* BLITTER_32BPP_SSSE3_HPP */
+3 -2
View File
@@ -31,9 +31,10 @@ public:
};
/** Factory for the 8bpp blitter optimised for speed. */
class FBlitter_8bppOptimized : public BlitterFactory {
class FBlitter_8bppOptimized : public BlitterFactory<FBlitter_8bppOptimized> {
public:
FBlitter_8bppOptimized() : BlitterFactory("8bpp-optimized", "8bpp Optimized Blitter (compression + all-ZoomLevel cache)") {}
/* virtual */ const char *GetName() { return "8bpp-optimized"; }
/* virtual */ const char *GetDescription() { return "8bpp Optimized Blitter (compression + all-ZoomLevel cache)"; }
/* virtual */ Blitter *CreateInstance() { return new Blitter_8bppOptimized(); }
};
+3 -2
View File
@@ -25,9 +25,10 @@ public:
};
/** Factory for the most trivial 8bpp blitter. */
class FBlitter_8bppSimple : public BlitterFactory {
class FBlitter_8bppSimple : public BlitterFactory<FBlitter_8bppSimple> {
public:
FBlitter_8bppSimple() : BlitterFactory("8bpp-simple", "8bpp Simple Blitter (relative slow, but never wrong)") {}
/* 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(); }
};
+43 -60
View File
@@ -25,12 +25,11 @@ bool QZ_CanDisplay8bpp();
/**
* The base factory, keeping track of all blitters.
*/
class BlitterFactory {
class BlitterFactoryBase {
private:
const char *name; ///< The name of the blitter factory.
const char *description; ///< The description of the blitter.
const char *name; ///< The name of the blitter factory.
typedef std::map<const char *, BlitterFactory *, StringCompare> Blitters; ///< Map of blitter factories.
typedef std::map<const char *, BlitterFactoryBase *, StringCompare> Blitters; ///< Map of blitter factories.
/**
* Get the map with currently known blitters.
@@ -54,38 +53,32 @@ private:
protected:
/**
* Construct the blitter, and register it.
* @param name The name of the blitter.
* @param description A longer description for the blitter.
* @param usable Whether the blitter is usable (on the current computer). For example for disabling SSE blitters when the CPU can't handle them.
* @pre name != NULL.
* @pre description != NULL.
* @pre There is no blitter registered with this name.
* 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.
*/
BlitterFactory(const char *name, const char *description, bool usable = true) :
name(strdup(name)), description(strdup(description))
void RegisterBlitter(const char *name)
{
if (usable) {
/*
* Only add when the blitter is usable. Do not bail out or
* do more special things since the blitters are always
* instantiated upon start anyhow and freed upon shutdown.
*/
std::pair<Blitters::iterator, bool> P = GetBlitters().insert(Blitters::value_type(this->name, this));
assert(P.second);
} else {
DEBUG(driver, 1, "Not registering blitter %s as it is not usable", 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:
virtual ~BlitterFactory()
BlitterFactoryBase() :
name(NULL)
{}
virtual ~BlitterFactoryBase()
{
if (this->name == NULL) return;
GetBlitters().erase(this->name);
if (GetBlitters().empty()) delete &GetBlitters();
free(this->name);
free(this->description);
}
/**
@@ -94,24 +87,6 @@ public:
* @post Sets the blitter so GetCurrentBlitter() returns it too.
*/
static Blitter *SelectBlitter(const char *name)
{
BlitterFactory *b = GetBlitterFactory(name);
if (b == NULL) return NULL;
Blitter *newb = b->CreateInstance();
delete *GetActiveBlitter();
*GetActiveBlitter() = newb;
DEBUG(driver, 1, "Successfully %s blitter '%s'", StrEmpty(name) ? "probed" : "loaded", newb->GetName());
return newb;
}
/**
* Get the blitter factory with the given name.
* @param name the blitter factory to select.
* @return The blitter factory, or NULL when there isn't one with the wanted name.
*/
static BlitterFactory *GetBlitterFactory(const char *name)
{
#if defined(DEDICATED)
const char *default_blitter = "null";
@@ -133,9 +108,14 @@ public:
Blitters::iterator it = GetBlitters().begin();
for (; it != GetBlitters().end(); it++) {
BlitterFactory *b = (*it).second;
BlitterFactoryBase *b = (*it).second;
if (strcasecmp(bname, b->name) == 0) {
return b;
Blitter *newb = b->CreateInstance();
delete *GetActiveBlitter();
*GetActiveBlitter() = newb;
DEBUG(driver, 1, "Successfully %s blitter '%s'", StrEmpty(name) ? "probed" : "loaded", bname);
return newb;
}
}
return NULL;
@@ -160,7 +140,7 @@ public:
p += seprintf(p, last, "List of blitters:\n");
Blitters::iterator it = GetBlitters().begin();
for (; it != GetBlitters().end(); it++) {
BlitterFactory *b = (*it).second;
BlitterFactoryBase *b = (*it).second;
p += seprintf(p, last, "%18s: %s\n", b->name, b->GetDescription());
}
p += seprintf(p, last, "\n");
@@ -168,21 +148,10 @@ public:
return p;
}
/**
* Get the long, human readable, name for the Blitter-class.
*/
const char *GetName() const
{
return this->name;
}
/**
* Get a nice description of the blitter-class.
*/
const char *GetDescription() const
{
return this->description;
}
virtual const char *GetDescription() = 0;
/**
* Create an instance of this Blitter-class.
@@ -190,6 +159,20 @@ public:
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();
};
extern char *_ini_blitter;
extern bool _blitter_autodetected;
+3 -2
View File
@@ -38,9 +38,10 @@ public:
};
/** Factory for the blitter that does nothing. */
class FBlitter_Null : public BlitterFactory {
class FBlitter_Null : public BlitterFactory<FBlitter_Null> {
public:
FBlitter_Null() : BlitterFactory("null", "Null Blitter (does nothing)") {}
/* virtual */ const char *GetName() { return "null"; }
/* virtual */ const char *GetDescription() { return "Null Blitter (does nothing)"; }
/* virtual */ Blitter *CreateInstance() { return new Blitter_Null(); }
};
+1 -1
View File
@@ -215,7 +215,7 @@ bool HandleBootstrap()
if (BaseGraphics::GetUsedSet() != NULL) return true;
/* No user interface, bail out with an error. */
if (BlitterFactory::GetCurrentBlitter()->GetScreenDepth() == 0) goto failure;
if (BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() == 0) goto failure;
/* If there is no network or no freetype, then there is nothing we can do. Go straight to failure. */
#if defined(ENABLE_NETWORK) && defined(WITH_FREETYPE) && (defined(WITH_FONTCONFIG) || defined(WIN32) || defined(__APPLE__))
-37
View File
@@ -1,37 +0,0 @@
/* $Id$ */
/*
* This file is part of OpenTTD.
* OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
* OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
*/
/** @file cpu.h Functions related to CPU specific instructions. */
#ifndef CPU_H
#define CPU_H
/**
* Get the tick counter from the CPU (high precision timing).
* @return The count.
*/
uint64 ottd_rdtsc();
/**
* Get the CPUID information from the CPU.
* @param info The retrieved info. All zeros on architectures without CPUID.
* @param type The information this instruction should retrieve.
*/
void ottd_cpuid(int info[4], int type);
/**
* Check whether the current CPU has the given flag.
* @param type The type to be passing to cpuid (usually 1).
* @param index The index in the returned info array.
* @param bit The bit index that needs to be set.
* @return The value of the bit, or false when there is no CPUID or the type is not available.
*/
bool HasCPUIDFlag(uint type, uint index, uint bit);
#endif /* CPU_H */
+1 -1
View File
@@ -134,7 +134,7 @@ char *CrashLog::LogConfiguration(char *buffer, const char *last) const
" Sound driver: %s\n"
" Sound set: %s (%u)\n"
" Video driver: %s\n\n",
BlitterFactory::GetCurrentBlitter() == NULL ? "none" : BlitterFactory::GetCurrentBlitter()->GetName(),
BlitterFactoryBase::GetCurrentBlitter() == NULL ? "none" : BlitterFactoryBase::GetCurrentBlitter()->GetName(),
BaseGraphics::GetUsedSet() == NULL ? "none" : BaseGraphics::GetUsedSet()->name,
BaseGraphics::GetUsedSet() == NULL ? UINT32_MAX : BaseGraphics::GetUsedSet()->version,
_current_language == NULL ? "none" : _current_language->file,
+6 -2
View File
@@ -12,8 +12,6 @@
#ifndef DEBUG_H
#define DEBUG_H
#include "cpu.h"
/* Debugging messages policy:
* These should be the severities used for direct DEBUG() calls
* maximum debugging level should be 10 if really deep, deep
@@ -67,6 +65,12 @@ const char *GetDebugString();
/* Shorter form for passing filename and linenumber */
#define FILE_LINE __FILE__, __LINE__
/**
* Get the tick counter from the CPU (high precision timing).
* @return The count.
*/
uint64 ottd_rdtsc();
/* Used for profiling
*
* Usage:
+59 -89
View File
@@ -1347,97 +1347,12 @@ static bool IsArticulatedVehicleEmpty(Vehicle *v)
v = v->GetFirstEnginePart();
for (; v != NULL; v = v->HasArticulatedPart() ? v->GetNextArticulatedPart() : NULL) {
if (v->cargo.StoredCount() != 0) return false;
if (v->cargo.TotalCount() != 0) return false;
}
return true;
}
/**
* Refit a vehicle in a station.
* @param v Vehicle to be refitted.
* @param consist_capleft Added cargo capacities in the consist.
* @param st Station the vehicle is loading at.
* @param next_station Possible next stations the vehicle can travel to.
* @param new_cid Target cargo for refit.
*/
static void HandleStationRefit(Vehicle *v, CargoArray &consist_capleft, Station *st, StationIDStack next_station, CargoID new_cid)
{
if (v->type == VEH_AIRCRAFT && (!Aircraft::From(v)->IsNormalAircraft() || v->Next()->cargo.StoredCount() > 0)) {
return;
}
bool is_normal_aircraft = (v->type == VEH_AIRCRAFT && Aircraft::From(v)->IsNormalAircraft());
Vehicle *v_start = v->GetFirstEnginePart();
/* Remove old capacity from consist capacity */
consist_capleft[v_start->cargo_type] -= (v_start->cargo_cap - v_start->cargo.ReservedCount());
for (Vehicle *w = v_start; w->HasArticulatedPart(); ) {
w = w->GetNextArticulatedPart();
consist_capleft[w->cargo_type] -= (w->cargo_cap - w->cargo.ReservedCount());
}
if (is_normal_aircraft) {
consist_capleft[v->Next()->cargo_type] -= (v->Next()->cargo_cap - v->Next()->cargo.ReservedCount());
}
Backup<CompanyByte> cur_company(_current_company, v->owner, FILE_LINE);
/* Check if all articulated parts are empty and collect refit mask. */
uint32 refit_mask = v->GetEngine()->info.refit_mask;
Vehicle *w = v_start;
while (w->HasArticulatedPart()) {
w = w->GetNextArticulatedPart();
refit_mask |= EngInfo(w->engine_type)->refit_mask;
}
if (new_cid == CT_AUTO_REFIT) {
/* Get a refittable cargo type with waiting cargo for next_station or INVALID_STATION. */
CargoID cid;
new_cid = v_start->cargo_type;
FOR_EACH_SET_CARGO_ID(cid, refit_mask) {
if (st->goods[cid].cargo.HasCargoFor(next_station)) {
/* Try to find out if auto-refitting would succeed. In case the refit is allowed,
* the returned refit capacity will be greater than zero. */
DoCommand(v_start->tile, v_start->index, cid | 1U << 6 | 0xFF << 8 | 1U << 16, DC_QUERY_COST, GetCmdRefitVeh(v_start)); // Auto-refit and only this vehicle including artic parts.
/* Try to balance different loadable cargoes between parts of the consist, so that
* all of them can be loaded. Avoid a situation where all vehicles suddenly switch
* to the first loadable cargo for which there is only one packet. */
if (_returned_refit_capacity > 0 && consist_capleft[cid] < consist_capleft[new_cid]) {
new_cid = cid;
}
}
}
}
/* Refit if given a valid cargo. */
if (new_cid < NUM_CARGO && new_cid != v_start->cargo_type) {
StationID next_one = StationIDStack(next_station).Pop();
v_start->cargo.Return(UINT_MAX, &st->goods[v_start->cargo_type].cargo, next_one);
for (w = v_start; w->HasArticulatedPart();) {
w = w->GetNextArticulatedPart();
w->cargo.Return(UINT_MAX, &st->goods[w->cargo_type].cargo, next_one);
}
if (is_normal_aircraft) {
v->Next()->cargo.Return(UINT_MAX, &st->goods[v->Next()->cargo_type].cargo, next_one);
}
CommandCost cost = DoCommand(v_start->tile, v_start->index, new_cid | 1U << 6 | 0xFF << 8 | 1U << 16, DC_EXEC, GetCmdRefitVeh(v_start)); // Auto-refit and only this vehicle including artic parts.
if (cost.Succeeded()) v->First()->profit_this_year -= cost.GetCost() << 8;
}
/* Add new capacity to consist capacity and reserve cargo */
w = v_start;
do {
st->goods[w->cargo_type].cargo.Reserve(w->cargo_cap, &w->cargo, st->xy, next_station);
consist_capleft[w->cargo_type] += w->cargo_cap - w->cargo.RemainingCount();
w = w->HasArticulatedPart() ? w->GetNextArticulatedPart() : NULL;
} while (w != NULL);
if (is_normal_aircraft) {
consist_capleft[v->Next()->cargo_type] += v->Next()->cargo_cap - v->Next()->cargo.RemainingCount();
}
cur_company.Restore();
}
/**
* Loads/unload the vehicle if possible.
* @param front the vehicle to be (un)loaded
@@ -1555,9 +1470,64 @@ static void LoadUnloadVehicle(Vehicle *front)
if (front->current_order.GetLoadType() & OLFB_NO_LOAD || HasBit(front->vehicle_flags, VF_STOP_LOADING)) continue;
/* This order has a refit, if this is the first vehicle part carrying cargo and the whole vehicle is empty, try refitting. */
if (front->current_order.IsRefit() && artic_part == 1 && IsArticulatedVehicleEmpty(v)) {
HandleStationRefit(v, consist_capleft, st, next_station, front->current_order.GetRefitCargo());
ge = &st->goods[v->cargo_type];
if (front->current_order.IsRefit() && artic_part == 1 && IsArticulatedVehicleEmpty(v) &&
(v->type != VEH_AIRCRAFT || (Aircraft::From(v)->IsNormalAircraft() && v->Next()->cargo.TotalCount() == 0))) {
Vehicle *v_start = v->GetFirstEnginePart();
CargoID new_cid = front->current_order.GetRefitCargo();
/* Remove old capacity from consist capacity */
consist_capleft[v_start->cargo_type] -= v_start->cargo_cap;
for (Vehicle *w = v_start; w->HasArticulatedPart(); ) {
w = w->GetNextArticulatedPart();
consist_capleft[w->cargo_type] -= w->cargo_cap;
}
Backup<CompanyByte> cur_company(_current_company, front->owner, FILE_LINE);
/* Check if all articulated parts are empty and collect refit mask. */
uint32 refit_mask = v->GetEngine()->info.refit_mask;
Vehicle *w = v_start;
while (w->HasArticulatedPart()) {
w = w->GetNextArticulatedPart();
if (w->cargo.TotalCount() > 0) new_cid = CT_NO_REFIT;
refit_mask |= EngInfo(w->engine_type)->refit_mask;
}
if (new_cid == CT_AUTO_REFIT) {
/* Get a refittable cargo type with waiting cargo for next_station or INVALID_STATION. */
CargoID cid;
new_cid = v_start->cargo_type;
FOR_EACH_SET_CARGO_ID(cid, refit_mask) {
if (st->goods[cid].cargo.HasCargoFor(next_station)) {
/* Try to find out if auto-refitting would succeed. In case the refit is allowed,
* the returned refit capacity will be greater than zero. */
DoCommand(v_start->tile, v_start->index, cid | 1U << 6 | 0xFF << 8 | 1U << 16, DC_QUERY_COST, GetCmdRefitVeh(v_start)); // Auto-refit and only this vehicle including artic parts.
/* Try to balance different loadable cargoes between parts of the consist, so that
* all of them can be loaded. Avoid a situation where all vehicles suddenly switch
* to the first loadable cargo for which there is only one packet. */
if (_returned_refit_capacity > 0 && consist_capleft[cid] < consist_capleft[new_cid]) {
new_cid = cid;
}
}
}
}
/* Refit if given a valid cargo. */
if (new_cid < NUM_CARGO && new_cid != v_start->cargo_type) {
CommandCost cost = DoCommand(v_start->tile, v_start->index, new_cid | 1U << 6 | 0xFF << 8 | 1U << 16, DC_EXEC, GetCmdRefitVeh(v_start)); // Auto-refit and only this vehicle including artic parts.
if (cost.Succeeded()) front->profit_this_year -= cost.GetCost() << 8;
ge = &st->goods[v->cargo_type];
}
/* Add new capacity to consist capacity and reserve cargo */
w = v_start;
do {
st->goods[w->cargo_type].cargo.Reserve(w->cargo_cap, &w->cargo, st->xy, next_station);
consist_capleft[w->cargo_type] += w->cargo_cap - w->cargo.RemainingCount();
w = w->HasArticulatedPart() ? w->GetNextArticulatedPart() : NULL;
} while (w != NULL);
cur_company.Restore();
}
/* As we're loading here the following link can carry the full capacity of the vehicle. */
+3 -3
View File
@@ -439,7 +439,7 @@ static void *AllocateFont(size_t size)
static bool GetFontAAState(FontSize size)
{
/* AA is only supported for 32 bpp */
if (BlitterFactory::GetCurrentBlitter()->GetScreenDepth() != 32) return false;
if (BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() != 32) return false;
switch (size) {
default: NOT_REACHED();
@@ -494,7 +494,7 @@ const Sprite *FreeTypeFontCache::GetGlyph(GlyphID key)
builtin_questionmark_data
};
Sprite *spr = BlitterFactory::GetCurrentBlitter()->Encode(&builtin_questionmark, AllocateFont);
Sprite *spr = BlitterFactoryBase::GetCurrentBlitter()->Encode(&builtin_questionmark, AllocateFont);
assert(spr != NULL);
new_glyph.sprite = spr;
new_glyph.width = spr->width + (this->fs != FS_NORMAL);
@@ -551,7 +551,7 @@ const Sprite *FreeTypeFontCache::GetGlyph(GlyphID key)
}
}
new_glyph.sprite = BlitterFactory::GetCurrentBlitter()->Encode(&sprite, AllocateFont);
new_glyph.sprite = BlitterFactoryBase::GetCurrentBlitter()->Encode(&sprite, AllocateFont);
new_glyph.width = slot->advance.x >> 6;
this->SetGlyphPtr(key, &new_glyph);
+139 -74
View File
@@ -73,7 +73,7 @@ extern uint _dirty_block_colour;
void GfxScroll(int left, int top, int width, int height, int xo, int yo)
{
Blitter *blitter = BlitterFactory::GetCurrentBlitter();
Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
if (xo == 0 && yo == 0) return;
@@ -105,7 +105,7 @@ void GfxScroll(int left, int top, int width, int height, int xo, int yo)
*/
void GfxFillRect(int left, int top, int right, int bottom, int colour, FillRectMode mode)
{
Blitter *blitter = BlitterFactory::GetCurrentBlitter();
Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
const DrawPixelInfo *dpi = _cur_dpi;
void *dst;
const int otop = top;
@@ -166,7 +166,7 @@ void GfxFillRect(int left, int top, int right, int bottom, int colour, FillRectM
*/
static inline void GfxDoDrawLine(void *video, int x, int y, int x2, int y2, int screen_width, int screen_height, uint8 colour, int width, int dash = 0)
{
Blitter *blitter = BlitterFactory::GetCurrentBlitter();
Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
assert(width > 0);
@@ -817,64 +817,37 @@ void DrawSprite(SpriteID img, PaletteID pal, int x, int y, const SubSprite *sub,
}
}
/**
* The code for setting up the blitter mode and sprite information before finally drawing the sprite.
* @param sprite The sprite to draw.
* @param x The X location to draw.
* @param y The Y location to draw.
* @param mode The settings for the blitter to pass.
* @param sub Whether to only draw a sub set of the sprite.
* @param zoom The zoom level at which to draw the sprites.
* @tparam ZOOM_BASE The factor required to get the sub sprite information into the right size.
* @tparam SCALED_XY Whether the X and Y are scaled or unscaled.
*/
template <int ZOOM_BASE, bool SCALED_XY>
static void GfxBlitter(const Sprite * const sprite, int x, int y, BlitterMode mode, const SubSprite * const sub, SpriteID sprite_id, ZoomLevel zoom)
static void GfxMainBlitterViewport(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub, SpriteID sprite_id)
{
const DrawPixelInfo *dpi = _cur_dpi;
Blitter::BlitterParams bp;
if (SCALED_XY) {
/* Scale it */
x = ScaleByZoom(x, zoom);
y = ScaleByZoom(y, zoom);
}
/* Amount of pixels to clip from the source sprite */
int clip_left = (sub != NULL ? max(0, -sprite->x_offs + sub->left * ZOOM_LVL_BASE ) : 0);
int clip_top = (sub != NULL ? max(0, -sprite->y_offs + sub->top * ZOOM_LVL_BASE ) : 0);
int clip_right = (sub != NULL ? max(0, sprite->width - (-sprite->x_offs + (sub->right + 1) * ZOOM_LVL_BASE)) : 0);
int clip_bottom = (sub != NULL ? max(0, sprite->height - (-sprite->y_offs + (sub->bottom + 1) * ZOOM_LVL_BASE)) : 0);
if (clip_left + clip_right >= sprite->width) return;
if (clip_top + clip_bottom >= sprite->height) return;
/* Move to the correct offset */
x += sprite->x_offs;
y += sprite->y_offs;
if (sub == NULL) {
/* No clipping. */
bp.skip_left = 0;
bp.skip_top = 0;
bp.width = UnScaleByZoom(sprite->width, zoom);
bp.height = UnScaleByZoom(sprite->height, zoom);
} else {
/* Amount of pixels to clip from the source sprite */
int clip_left = max(0, -sprite->x_offs + sub->left * ZOOM_BASE );
int clip_top = max(0, -sprite->y_offs + sub->top * ZOOM_BASE );
int clip_right = max(0, sprite->width - (-sprite->x_offs + (sub->right + 1) * ZOOM_BASE));
int clip_bottom = max(0, sprite->height - (-sprite->y_offs + (sub->bottom + 1) * ZOOM_BASE));
if (clip_left + clip_right >= sprite->width) return;
if (clip_top + clip_bottom >= sprite->height) return;
bp.skip_left = UnScaleByZoomLower(clip_left, zoom);
bp.skip_top = UnScaleByZoomLower(clip_top, zoom);
bp.width = UnScaleByZoom(sprite->width - clip_left - clip_right, zoom);
bp.height = UnScaleByZoom(sprite->height - clip_top - clip_bottom, zoom);
x += ScaleByZoom(bp.skip_left, zoom);
y += ScaleByZoom(bp.skip_top, zoom);
}
/* 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 - clip_left - clip_right, dpi->zoom);
bp.height = UnScaleByZoom(sprite->height - clip_top - clip_bottom, dpi->zoom);
bp.top = 0;
bp.left = 0;
bp.skip_left = UnScaleByZoomLower(clip_left, dpi->zoom);
bp.skip_top = UnScaleByZoomLower(clip_top, dpi->zoom);
x += ScaleByZoom(bp.skip_left, dpi->zoom);
y += ScaleByZoom(bp.skip_top, dpi->zoom);
bp.dst = dpi->dst_ptr;
bp.pitch = dpi->pitch;
@@ -886,50 +859,48 @@ static void GfxBlitter(const Sprite * const sprite, int x, int y, BlitterMode mo
if (bp.width <= 0) return;
if (bp.height <= 0) return;
y -= SCALED_XY ? ScaleByZoom(dpi->top, zoom) : dpi->top;
int y_unscaled = UnScaleByZoom(y, zoom);
y -= dpi->top;
/* Check for top overflow */
if (y < 0) {
bp.height -= -y_unscaled;
bp.height -= -UnScaleByZoom(y, dpi->zoom);
if (bp.height <= 0) return;
bp.skip_top += -y_unscaled;
bp.skip_top += -UnScaleByZoom(y, dpi->zoom);
y = 0;
} else {
bp.top = y_unscaled;
bp.top = UnScaleByZoom(y, dpi->zoom);
}
/* Check for bottom overflow */
y += SCALED_XY ? ScaleByZoom(bp.height - dpi->height, zoom) : ScaleByZoom(bp.height, zoom) - dpi->height;
y += ScaleByZoom(bp.height, dpi->zoom) - dpi->height;
if (y > 0) {
bp.height -= UnScaleByZoom(y, zoom);
bp.height -= UnScaleByZoom(y, dpi->zoom);
if (bp.height <= 0) return;
}
x -= SCALED_XY ? ScaleByZoom(dpi->left, zoom) : dpi->left;
int x_unscaled = UnScaleByZoom(x, zoom);
x -= dpi->left;
/* Check for left overflow */
if (x < 0) {
bp.width -= -x_unscaled;
bp.width -= -UnScaleByZoom(x, dpi->zoom);
if (bp.width <= 0) return;
bp.skip_left += -x_unscaled;
bp.skip_left += -UnScaleByZoom(x, dpi->zoom);
x = 0;
} else {
bp.left = x_unscaled;
bp.left = UnScaleByZoom(x, dpi->zoom);
}
/* Check for right overflow */
x += SCALED_XY ? ScaleByZoom(bp.width - dpi->width, zoom) : ScaleByZoom(bp.width, zoom) - dpi->width;
x += ScaleByZoom(bp.width, dpi->zoom) - dpi->width;
if (x > 0) {
bp.width -= UnScaleByZoom(x, zoom);
bp.width -= UnScaleByZoom(x, dpi->zoom);
if (bp.width <= 0) return;
}
assert(bp.skip_left + bp.width <= UnScaleByZoom(sprite->width, zoom));
assert(bp.skip_top + bp.height <= UnScaleByZoom(sprite->height, zoom));
assert(bp.skip_left + bp.width <= UnScaleByZoom(sprite->width, dpi->zoom));
assert(bp.skip_top + bp.height <= UnScaleByZoom(sprite->height, dpi->zoom));
/* We do not want to catch the mouse. However we also use that spritenumber for unknown (text) sprites. */
if (_newgrf_debug_sprite_picker.mode == SPM_REDRAW && sprite_id != SPR_CURSOR_MOUSE) {
Blitter *blitter = BlitterFactory::GetCurrentBlitter();
Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
void *topleft = blitter->MoveTo(bp.dst, bp.left, bp.top);
void *bottomright = blitter->MoveTo(topleft, bp.width - 1, bp.height - 1);
@@ -943,17 +914,111 @@ static void GfxBlitter(const Sprite * const sprite, int x, int y, BlitterMode mo
}
}
BlitterFactory::GetCurrentBlitter()->Draw(&bp, mode, zoom);
}
static void GfxMainBlitterViewport(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub, SpriteID sprite_id)
{
GfxBlitter<ZOOM_LVL_BASE, false>(sprite, x, y, mode, sub, sprite_id, _cur_dpi->zoom);
BlitterFactoryBase::GetCurrentBlitter()->Draw(&bp, mode, dpi->zoom);
}
static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub, SpriteID sprite_id, ZoomLevel zoom)
{
GfxBlitter<1, true>(sprite, x, y, mode, sub, sprite_id, zoom);
const DrawPixelInfo *dpi = _cur_dpi;
Blitter::BlitterParams bp;
/* Amount of pixels to clip from the source sprite */
int clip_left = (sub != NULL ? max(0, -sprite->x_offs + sub->left ) : 0);
int clip_top = (sub != NULL ? max(0, -sprite->y_offs + sub->top ) : 0);
int clip_right = (sub != NULL ? max(0, sprite->width - (-sprite->x_offs + sub->right + 1)) : 0);
int clip_bottom = (sub != NULL ? max(0, sprite->height - (-sprite->y_offs + sub->bottom + 1)) : 0);
if (clip_left + clip_right >= sprite->width) return;
if (clip_top + clip_bottom >= sprite->height) return;
/* Scale it */
x = ScaleByZoom(x, zoom);
y = ScaleByZoom(y, zoom);
/* Move to the correct offset */
x += sprite->x_offs;
y += sprite->y_offs;
/* 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 - clip_left - clip_right, zoom);
bp.height = UnScaleByZoom(sprite->height - clip_top - clip_bottom, zoom);
bp.top = 0;
bp.left = 0;
bp.skip_left = UnScaleByZoomLower(clip_left, zoom);
bp.skip_top = UnScaleByZoomLower(clip_top, zoom);
x += ScaleByZoom(bp.skip_left, zoom);
y += ScaleByZoom(bp.skip_top, zoom);
bp.dst = dpi->dst_ptr;
bp.pitch = dpi->pitch;
bp.remap = _colour_remap_ptr;
assert(sprite->width > 0);
assert(sprite->height > 0);
if (bp.width <= 0) return;
if (bp.height <= 0) return;
y -= ScaleByZoom(dpi->top, zoom);
/* Check for top overflow */
if (y < 0) {
bp.height -= -UnScaleByZoom(y, zoom);
if (bp.height <= 0) return;
bp.skip_top += -UnScaleByZoom(y, zoom);
y = 0;
} else {
bp.top = UnScaleByZoom(y, zoom);
}
/* Check for bottom overflow */
y += ScaleByZoom(bp.height - dpi->height, zoom);
if (y > 0) {
bp.height -= UnScaleByZoom(y, zoom);
if (bp.height <= 0) return;
}
x -= ScaleByZoom(dpi->left, zoom);
/* Check for left overflow */
if (x < 0) {
bp.width -= -UnScaleByZoom(x, zoom);
if (bp.width <= 0) return;
bp.skip_left += -UnScaleByZoom(x, zoom);
x = 0;
} else {
bp.left = UnScaleByZoom(x, zoom);
}
/* Check for right overflow */
x += ScaleByZoom(bp.width - dpi->width, zoom);
if (x > 0) {
bp.width -= UnScaleByZoom(x, zoom);
if (bp.width <= 0) return;
}
assert(bp.skip_left + bp.width <= UnScaleByZoom(sprite->width, zoom));
assert(bp.skip_top + bp.height <= UnScaleByZoom(sprite->height, zoom));
/* We do not want to catch the mouse. However we also use that spritenumber for unknown (text) sprites. */
if (_newgrf_debug_sprite_picker.mode == SPM_REDRAW && sprite_id != SPR_CURSOR_MOUSE) {
Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
void *topleft = blitter->MoveTo(bp.dst, bp.left, bp.top);
void *bottomright = blitter->MoveTo(topleft, bp.width - 1, bp.height - 1);
void *clicked = _newgrf_debug_sprite_picker.clicked_pixel;
if (topleft <= clicked && clicked <= bottomright) {
uint offset = (((size_t)clicked - (size_t)topleft) / (blitter->GetScreenDepth() / 8)) % bp.pitch;
if (offset < (uint)bp.width) {
_newgrf_debug_sprite_picker.sprites.Include(sprite_id);
}
}
}
BlitterFactoryBase::GetCurrentBlitter()->Draw(&bp, mode, zoom);
}
void DoPaletteAnimations();
@@ -973,7 +1038,7 @@ void DoPaletteAnimations()
static int palette_animation_counter = 0;
palette_animation_counter += 8;
Blitter *blitter = BlitterFactory::GetCurrentBlitter();
Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
const Colour *s;
const ExtraPaletteValues *ev = &_extra_palette_values;
Colour old_val[PALETTE_ANIM_SIZE];
@@ -1173,7 +1238,7 @@ void UndrawMouseCursor()
if (_screen.dst_ptr == NULL) return;
if (_cursor.visible) {
Blitter *blitter = BlitterFactory::GetCurrentBlitter();
Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
_cursor.visible = false;
blitter->CopyFromBuffer(blitter->MoveTo(_screen.dst_ptr, _cursor.draw_pos.x, _cursor.draw_pos.y), _cursor_backup.GetBuffer(), _cursor.draw_size.x, _cursor.draw_size.y);
_video_driver->MakeDirty(_cursor.draw_pos.x, _cursor.draw_pos.y, _cursor.draw_size.x, _cursor.draw_size.y);
@@ -1190,7 +1255,7 @@ void DrawMouseCursor()
/* Don't draw the mouse cursor if the screen is not ready */
if (_screen.dst_ptr == NULL) return;
Blitter *blitter = BlitterFactory::GetCurrentBlitter();
Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
int x;
int y;
int w;
@@ -1443,7 +1508,7 @@ void MarkWholeScreenDirty()
*/
bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int height)
{
Blitter *blitter = BlitterFactory::GetCurrentBlitter();
Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
const DrawPixelInfo *o = _cur_dpi;
n->zoom = ZOOM_LVL_NORMAL;
-1
View File
@@ -137,7 +137,6 @@ void SetDirtyBlocks(int left, int top, int right, int bottom);
void MarkWholeScreenDirty();
void GfxInitPalettes();
void CheckBlitter();
bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int height);
+15 -64
View File
@@ -15,7 +15,6 @@
#include "3rdparty/md5/md5.h"
#include "fontcache.h"
#include "gfx_func.h"
#include "transparency.h"
#include "blitter/factory.hpp"
#include "video/video_driver.hpp"
@@ -226,77 +225,29 @@ static void LoadSpriteTables()
/**
* Check blitter needed by NewGRF config and switch if needed.
* @return False when nothing changed, true otherwise.
*/
static bool SwitchNewGRFBlitter()
static void SwitchNewGRFBlitter()
{
/* Never switch if the blitter was specified by the user. */
if (!_blitter_autodetected) return false;
/* Get blitter of base set. */
bool is_32bpp = BaseGraphics::GetUsedSet()->blitter == BLT_32BPP;
/* Null driver => dedicated server => do nothing. */
if (BlitterFactory::GetCurrentBlitter()->GetScreenDepth() == 0) return false;
/* Get preferred depth. */
uint depth_wanted_by_base = BaseGraphics::GetUsedSet()->blitter == BLT_32BPP ? 32 : 8;
uint depth_wanted_by_grf = 8;
/* Get combined blitter mode of all NewGRFs. */
for (GRFConfig *c = _grfconfig; c != NULL; c = c->next) {
if (c->status == GCS_DISABLED || c->status == GCS_NOT_FOUND || HasBit(c->flags, GCF_INIT_ONLY)) continue;
if (c->palette & GRFP_BLT_32BPP) depth_wanted_by_grf = 32;
if (c->palette & GRFP_BLT_32BPP) is_32bpp = true;
}
/* Search the best blitter. */
struct {
const char *name;
uint animation; ///< 0: no support, 1: do support, 2: both
uint min_base_depth, max_base_depth, min_grf_depth, max_grf_depth;
} replacement_blitters[] = {
#ifdef WITH_SSE
{ "32bpp-sse4", 0, 32, 32, 8, 32 },
{ "32bpp-ssse3", 0, 32, 32, 8, 32 },
{ "32bpp-sse2", 0, 32, 32, 8, 32 },
{ "32bpp-sse4-anim", 1, 32, 32, 8, 32 },
#endif
{ "8bpp-optimized", 2, 8, 8, 8, 8 },
{ "32bpp-optimized", 0, 8, 32, 8, 32 },
{ "32bpp-anim", 1, 8, 32, 8, 32 },
};
const bool animation_wanted = HasBit(_display_opt, DO_FULL_ANIMATION);
const char *cur_blitter = BlitterFactory::GetCurrentBlitter()->GetName();
for (uint i = 0; i < lengthof(replacement_blitters); i++) {
if (animation_wanted && (replacement_blitters[i].animation == 0)) continue;
if (!animation_wanted && (replacement_blitters[i].animation == 1)) continue;
if (!IsInsideMM(depth_wanted_by_base, replacement_blitters[i].min_base_depth, replacement_blitters[i].max_base_depth + 1)) continue;
if (!IsInsideMM(depth_wanted_by_grf, replacement_blitters[i].min_grf_depth, replacement_blitters[i].max_grf_depth + 1)) continue;
const char *repl_blitter = replacement_blitters[i].name;
if (strcmp(repl_blitter, cur_blitter) == 0) return false;
if (BlitterFactory::GetBlitterFactory(repl_blitter) == NULL) continue;
DEBUG(misc, 1, "Switching blitter from '%s' to '%s'... ", cur_blitter, repl_blitter);
Blitter *new_blitter = BlitterFactory::SelectBlitter(repl_blitter);
if (new_blitter == NULL) NOT_REACHED();
DEBUG(misc, 1, "Successfully switched to %s.", repl_blitter);
break;
/* A GRF would like a 32 bpp blitter, switch blitter if needed. Never switch if the blitter was specified by the user. */
if (_blitter_autodetected && is_32bpp && BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() != 0 && BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth() < 16) {
const char *cur_blitter = BlitterFactoryBase::GetCurrentBlitter()->GetName();
if (BlitterFactoryBase::SelectBlitter("32bpp-anim") != NULL) {
if (!_video_driver->AfterBlitterChange()) {
/* Failed to switch blitter, let's hope we can return to the old one. */
if (BlitterFactoryBase::SelectBlitter(cur_blitter) == NULL || !_video_driver->AfterBlitterChange()) usererror("Failed to reinitialize video driver for 32 bpp blitter. Specify a fixed blitter in the config");
}
}
}
if (!_video_driver->AfterBlitterChange()) {
/* Failed to switch blitter, let's hope we can return to the old one. */
if (BlitterFactory::SelectBlitter(cur_blitter) == NULL || !_video_driver->AfterBlitterChange()) usererror("Failed to reinitialize video driver. Specify a fixed blitter in the config");
}
return true;
}
/** Check whether we still use the right blitter, or use another (better) one. */
void CheckBlitter()
{
if (!SwitchNewGRFBlitter()) return;
ClearFontCache();
GfxClearSpriteCache();
}
/** Initialise and load all the sprites. */
-5
View File
@@ -26,8 +26,6 @@ IniItem::IniItem(IniGroup *parent, const char *name, size_t len) : next(NULL), v
if (len == 0) len = strlen(name);
this->name = strndup(name, len);
if (this->name != NULL) str_validate(this->name, this->name + len);
*parent->last_item = this;
parent->last_item = &this->next;
}
@@ -63,8 +61,6 @@ IniGroup::IniGroup(IniLoadFile *parent, const char *name, size_t len) : next(NUL
if (len == 0) len = strlen(name);
this->name = strndup(name, len);
if (this->name != NULL) str_validate(this->name, this->name + len);
this->last_item = &this->item;
*parent->last_group = this;
parent->last_group = &this->next;
@@ -309,7 +305,6 @@ void IniLoadFile::LoadFromDisk(const char *filename, Subdirectory subdir)
/* If the value was not quoted and empty, it must be NULL */
item->value = (!quoted && e == t) ? NULL : strndup(t, e - t);
if (item->value != NULL) str_validate(item->value, item->value + strlen(item->value));
} else {
/* it's an orphan item */
this->ReportFileError("ini: '", buffer, "' outside of group");
+1 -1
View File
@@ -2644,7 +2644,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Maatskappy-besi
STR_ABOUT_OPENTTD :{WHITE}Oor OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Oorspronklike kopiereg {COPYRIGHT} 1995 Chris Sawyer, Alle regte voorbehou
STR_ABOUT_VERSION :{BLACK}OpenTTD uitgawe {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 Die OpenTTD span
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 Die OpenTTD span
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spaar Spel
+16 -16
View File
@@ -22,7 +22,7 @@
STR_NULL :
STR_EMPTY :
STR_UNDEFINED :وصلة غير معرفة
STR_JUST_NOTHING :لا شيئ
STR_JUST_NOTHING :فارغ
# Cargo related strings
# Plural cargo name
@@ -31,13 +31,13 @@ STR_CARGO_PLURAL_PASSENGERS :ركاب
STR_CARGO_PLURAL_COAL :فحم
STR_CARGO_PLURAL_MAIL :بريد
STR_CARGO_PLURAL_OIL :نفط
STR_CARGO_PLURAL_LIVESTOCK :ماشيه
STR_CARGO_PLURAL_LIVESTOCK :مواشي
STR_CARGO_PLURAL_GOODS :بضائع
STR_CARGO_PLURAL_GRAIN :حبوب
STR_CARGO_PLURAL_WOOD :خشب
STR_CARGO_PLURAL_IRON_ORE :خام حديد
STR_CARGO_PLURAL_STEEL :صلب
STR_CARGO_PLURAL_VALUABLES :مقتنيات ثمينه
STR_CARGO_PLURAL_STEEL :حديد
STR_CARGO_PLURAL_VALUABLES :مدخرات
STR_CARGO_PLURAL_COPPER_ORE :منجم نحاس
STR_CARGO_PLURAL_MAIZE :ذرة
STR_CARGO_PLURAL_FRUIT :فواكة
@@ -49,53 +49,53 @@ STR_CARGO_PLURAL_WATER :ماء
STR_CARGO_PLURAL_WHEAT :قمح
STR_CARGO_PLURAL_RUBBER :مطاط
STR_CARGO_PLURAL_SUGAR :سكر
STR_CARGO_PLURAL_TOYS :دُمَي
STR_CARGO_PLURAL_TOYS :العاب
STR_CARGO_PLURAL_CANDY :حلويات
STR_CARGO_PLURAL_COLA :كولا
STR_CARGO_PLURAL_COTTON_CANDY :سكر نبات
STR_CARGO_PLURAL_COTTON_CANDY :الحلاوة القطنية
STR_CARGO_PLURAL_BUBBLES :فقاعات
STR_CARGO_PLURAL_TOFFEE :توفي
STR_CARGO_PLURAL_BATTERIES :بطاريات
STR_CARGO_PLURAL_PLASTIC :بلاستيك
STR_CARGO_PLURAL_FIZZY_DRINKS :مشروبات غازيه
STR_CARGO_PLURAL_FIZZY_DRINKS :شراب مخفوق
# Singular cargo name
STR_CARGO_SINGULAR_NOTHING :
STR_CARGO_SINGULAR_PASSENGER :راكب
STR_CARGO_SINGULAR_PASSENGER :ركاب
STR_CARGO_SINGULAR_COAL :فحم
STR_CARGO_SINGULAR_MAIL :بريد
STR_CARGO_SINGULAR_OIL :نفط
STR_CARGO_SINGULAR_LIVESTOCK :ماشيه
STR_CARGO_SINGULAR_LIVESTOCK :ماشية
STR_CARGO_SINGULAR_GOODS :بضائع
STR_CARGO_SINGULAR_GRAIN :حبوب
STR_CARGO_SINGULAR_WOOD :خشب
STR_CARGO_SINGULAR_IRON_ORE :خام الحديد
STR_CARGO_SINGULAR_STEEL :صلب
STR_CARGO_SINGULAR_STEEL :حديد
STR_CARGO_SINGULAR_VALUABLES :مقتنيات ثمينة
STR_CARGO_SINGULAR_COPPER_ORE :خام نحاس
STR_CARGO_SINGULAR_MAIZE :ذرة
STR_CARGO_SINGULAR_FRUIT :فواكة
STR_CARGO_SINGULAR_DIAMOND :جواهر
STR_CARGO_SINGULAR_FOOD :طعام
STR_CARGO_SINGULAR_PAPER :ورق
STR_CARGO_SINGULAR_PAPER :اوراق
STR_CARGO_SINGULAR_GOLD :ذهب
STR_CARGO_SINGULAR_WATER :ماء
STR_CARGO_SINGULAR_WHEAT :قمح
STR_CARGO_SINGULAR_RUBBER :مطاط
STR_CARGO_SINGULAR_SUGAR :سكر
STR_CARGO_SINGULAR_TOY :دُمِيه
STR_CARGO_SINGULAR_TOY :لعبة
STR_CARGO_SINGULAR_CANDY :حلويات
STR_CARGO_SINGULAR_COLA :كولا
STR_CARGO_SINGULAR_COTTON_CANDY :سكر نبات
STR_CARGO_SINGULAR_COTTON_CANDY :حلاوة قطنية
STR_CARGO_SINGULAR_BUBBLE :فقاعات
STR_CARGO_SINGULAR_TOFFEE :توفي
STR_CARGO_SINGULAR_BATTERY :بطاريات
STR_CARGO_SINGULAR_PLASTIC :بلاستيك
STR_CARGO_SINGULAR_FIZZY_DRINK :مشروب غازى
STR_CARGO_SINGULAR_FIZZY_DRINK :مشروب مخفوق
# Quantity of cargo
STR_QUANTITY_NOTHING :
STR_QUANTITY_PASSENGERS :{COMMA} راكب
STR_QUANTITY_PASSENGERS :{COMMA}راكب
STR_QUANTITY_COAL :{WEIGHT_LONG} من الفحم
STR_QUANTITY_MAIL :{COMMA} صندوق من البريد
STR_QUANTITY_OIL :{VOLUME_LONG} من النفط
@@ -2279,7 +2279,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :ارض مملو
STR_ABOUT_OPENTTD :{WHITE}حول النسخة المفتوحة
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}الحقوق الاصلية {COPYRIGHT} كريس سوير 1995 , جميع الحقوق محفوظة
STR_ABOUT_VERSION :{BLACK}النسخة المفتوحة رقم {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النسخة المفتوحة {COPYRIGHT}2002-2014 فريق النسخة المفتوحة
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}النسخة المفتوحة {COPYRIGHT}2002-2013 فريق النسخة المفتوحة
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}حفظ اللعبة
+1 -1
View File
@@ -2504,7 +2504,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Konpainia jabe
STR_ABOUT_OPENTTD :{WHITE}OpenTTD-ri buruz
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
STR_ABOUT_VERSION :{BLACK}OpenTTD bertsioa {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 The OpenTTD team
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gordetako jokoa
+1 -1
View File
@@ -2976,7 +2976,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Зямля на
STR_ABOUT_OPENTTD :{WHITE}Аб OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Арыґінальныя аўтарскія правы {COPYRIGHT} 1995 Chris Sawyer. Усе правы абароненыя.
STR_ABOUT_VERSION :{BLACK}OpenTTD вэрсія {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 Каманда распрацоўнікаў OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 Каманда распрацоўнікаў OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Захаваць гульню
+2 -5
View File
@@ -1588,7 +1588,7 @@ STR_CONFIG_SETTING_DEMAND_DISTANCE :Efeito da dist
STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Se você definir esse valor para maior que 0, a distância entre a estação de origem A para alguma carga e um possível destino B terá um efeito na quantidade de carga levada de A até B. Quanto mais distante B for da A, menos carga será enviada. Quanto mais alto você definir esse valor, menos carga será levada para estações distantes, e mais carga será levada para estações próximas.
STR_CONFIG_SETTING_DEMAND_SIZE :Quantidade de carga retornada no modo simétrico: {STRING}
STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Definir isso para menos de 100% faz com que a distribuição simétrica comporte-se mais como a assimétrica. Menos carga será devolvida forçosamente se uma certa quantidade for mandada a uma estação. Se você definir a 0%, a distribuição se comportará exatamente como a assimétrica.
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturação de caminhos curtos antes de usar caminhos de alta capacidade: {STRING}
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Saturação de caminhos curtos antes de usar outros caminhos: {STRING}
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Frequentemente há múltiplos caminhos entre duas estações. Cargodist irá saturar o caminho mais curto primeiro, depois usar o segundo caminho mais curto até saturá-lo, e assim por diante. Saturação é determinada pela estimação da capacidade de do uso planejado. Ao saturar todos os caminhos, se ainda houver demanda, irá sobrecarregar todos os caminhos, com preferência aos de maior capacidade. No entanto, na maior parte do tempo o algorítimo não irá estimar a capacidade corretamente. Essa configuração permite você definir até que porcentagem um caminho mais curto deverá ser saturado na primeira passada antes do algorítimo proceder ao próxido. Defina-o para menos de 100% para evitar estações sobrecarregadas no caso de capacidade superestimada.
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Unidade de velocidade: {STRING}
@@ -2644,7 +2644,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :O terreno é pr
STR_ABOUT_OPENTTD :{WHITE}Sobre o OpenTTD...
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Todos os direitos reservados
STR_ABOUT_VERSION :{BLACK}OpenTTD versão {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 A equipe do OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 A equipe do OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvar Jogo
@@ -2892,7 +2892,6 @@ STR_NEWGRF_INVALID_ENGINE :<modelo de veí
STR_NEWGRF_INVALID_INDUSTRYTYPE :<indústria inválida>
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
STR_INVALID_VEHICLE :<veículo inválido>
# NewGRF scanning window
STR_NEWGRF_SCAN_CAPTION :{WHITE}Escaneando NewGRFs
@@ -3945,8 +3944,6 @@ STR_AI_SETTINGS_START_DELAY :Número de dias
STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} Leiame de {STRING}
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} log de mudanças de {STRING}
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} licença de {STRING}
STR_TEXTFILE_WRAP_TEXT :{WHITE}Quebra de linha
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :[BLACK}Quebra linhas automaticamente para que o texto caiba na janela
STR_TEXTFILE_VIEW_README :{BLACK}Ler o Leiame
STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Log de mudanças
STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licença
+1 -1
View File
@@ -2556,7 +2556,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Земя, пр
STR_ABOUT_OPENTTD :{WHITE}Относно OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Авторски права {COPYRIGHT} 1995 Крис Сойер (Chris Sawyer), Всички права са запазени
STR_ABOUT_VERSION :{BLACK}OpenTTD версия {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 The OpenTTD team
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Запази играта
+1 -1
View File
@@ -2644,7 +2644,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :terreny propiet
STR_ABOUT_OPENTTD :{WHITE}Quant a OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Tots els drets reservats
STR_ABOUT_VERSION :{BLACK}OpenTTD versió {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 L'equip d'OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 L'equip d'OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Desa el Joc
+1 -1
View File
@@ -2739,7 +2739,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Zemlja u posjed
STR_ABOUT_OPENTTD :{WHITE}O OpenTTD-u
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Izvorno autorsko pravo {COPYRIGHT} 1995 Chris Sawyer, sva prava pridržana
STR_ABOUT_VERSION :{BLACK}OpenTTD verzija {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD tim
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD tim
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spremi igru
+1 -1
View File
@@ -2731,7 +2731,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Půda vlastněn
STR_ABOUT_OPENTTD :{WHITE}O OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Původní copyright: {COPYRIGHT} 1995 Chris Sawyer, všechna práva vyhrazena
STR_ABOUT_VERSION :{BLACK}OpenTTD verze {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 Tým OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 Tým OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Uložit hru
+1 -1
View File
@@ -2555,7 +2555,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Land ejet af se
STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, Alle rettigheder reserveret
STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD teamet
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD teamet
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gem spil
+1 -1
View File
@@ -2643,7 +2643,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terrein in bedr
STR_ABOUT_OPENTTD :{WHITE}Over OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Originele copyright {COPYRIGHT} 1995 Chris Sawyer, alle rechten voorbehouden
STR_ABOUT_VERSION :{BLACK}OpenTTD versie {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 Het OpenTTD team
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 Het OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spel Opslaan
+1 -1
View File
@@ -2643,7 +2643,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Company-owned l
STR_ABOUT_OPENTTD :{WHITE}About OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 The OpenTTD team
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game
+1 -1
View File
@@ -2643,7 +2643,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Company-owned l
STR_ABOUT_OPENTTD :{WHITE}About OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 The OpenTTD team
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game
+1 -1
View File
@@ -2643,7 +2643,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Company-owned l
STR_ABOUT_OPENTTD :{WHITE}About OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 The OpenTTD team
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Save Game
+1 -1
View File
@@ -2228,7 +2228,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Kompanie poseda
STR_ABOUT_OPENTTD :{WHITE}Pri OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Origina kopirajto {COPYRIGHT} 1995 Chris Sawyer, Ĉiuj rajtoj rezervitaj
STR_ABOUT_VERSION :{BLACK}OpenTTD-versio {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 La teamo de OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 La teamo de OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Konservu Ludon
+39 -39
View File
@@ -286,10 +286,10 @@ STR_LIST_FILTER_OSKTITLE :{BLACK}Sisesta
STR_LIST_FILTER_TOOLTIP :{BLACK}Sisesta märksõna mida loendist otsida
STR_TOOLTIP_GROUP_ORDER :{BLACK}Vali rühmitamise järjestus
STR_TOOLTIP_SORT_ORDER :{BLACK}Vali järjekord (kahanev/kasvav)
STR_TOOLTIP_SORT_CRITERIA :{BLACK}Vali järjekord
STR_TOOLTIP_SORT_ORDER :{BLACK}Vali järjestusviis (kahanev/kasvav)
STR_TOOLTIP_SORT_CRITERIA :{BLACK}Vali järjestusviis
STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Vali sõelumisalused
STR_BUTTON_SORT_BY :{BLACK}Järjekord:
STR_BUTTON_SORT_BY :{BLACK}Järjestusviis:
STR_BUTTON_LOCATION :{BLACK}Asukoht
STR_BUTTON_RENAME :{BLACK}Nimevahetus
@@ -393,7 +393,7 @@ STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Vaheta t
# Extra tooltips for the scenario editor toolbar
STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Kaardi salvestamine, kaardi laadimine, kaarditegemisest lahkumine, mängust väljumine
STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD
STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Stsenaariumiredaktor
STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Kaardiredaktor
STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Alguse liigutamine 1 aasta võrra tagasi
STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Alguse liigutamine 1 aasta võrra edasi
STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Alustamise aasta valikuks klõpsi siin
@@ -1056,7 +1056,7 @@ STR_CURRENCY_PREVIEW :{LTBLUE}Eelvaad
STR_CURRENCY_CUSTOM_CURRENCY_PREVIEW_TOOLTIP :{BLACK}10000 naela (£) sinu valuutas
STR_CURRENCY_CHANGE_PARAMETER :{BLACK}Muuda personaalse valuuta parameetreid
STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Vastaseid kuni: {ORANGE}{COMMA}
STR_DIFFICULTY_LEVEL_SETTING_MAXIMUM_NO_COMPETITORS :{LTBLUE}Vastaste arvu ülemmäär: {ORANGE}{COMMA}
STR_NONE :Pole
STR_FUNDING_ONLY :Ainult rahastatud
@@ -1164,21 +1164,21 @@ STR_CONFIG_SETTING_MAXIMUM_INITIAL_LOAN_HELPTEXT :Suurim summa, m
STR_CONFIG_SETTING_INTEREST_RATE :Intressimäär: {STRING}
STR_CONFIG_SETTING_INTEREST_RATE_HELPTEXT :Laenu intressimäär; ühtlasi juhib inflatsiooni, kui inflatsioon on aktiveeritud
STR_CONFIG_SETTING_RUNNING_COSTS :Käituskulud: {STRING}
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Määrab sõidukite ja taristu hooldus- ja käituskulude hinnataseme
STR_CONFIG_SETTING_RUNNING_COSTS_HELPTEXT :Määra sõidukite ja taristu hoolduse ja töös hoidmise maksumuse tase
STR_CONFIG_SETTING_CONSTRUCTION_SPEED :Ehitustempo: {STRING}
STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Piirab arvuti ehitustoimingute arvu
STR_CONFIG_SETTING_CONSTRUCTION_SPEED_HELPTEXT :Piira tehisintellekti ehitustoimingute arvu
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS :Sõidukirikkeid: {STRING}
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS_HELPTEXT :Muudab hooldamata sõidukite rikkesagedust
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER :Toetuse kordaja: {STRING}
STR_CONFIG_SETTING_SUBSIDY_MULTIPLIER_HELPTEXT :Määra ära kui palju makstakse toetatud liinide eest
STR_CONFIG_SETTING_CONSTRUCTION_COSTS :Ehituse hinnad: {STRING}
STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Määrab ehitus- ja ostukulude hinnataseme
STR_CONFIG_SETTING_CONSTRUCTION_COSTS_HELPTEXT :Määra ehituse ja maa ostu hinna tase
STR_CONFIG_SETTING_RECESSIONS :Majanduslangused: {STRING}
STR_CONFIG_SETTING_RECESSIONS_HELPTEXT :Kui on aktiveeritud siis võib majanduslangus toimuda iga paari aasta tagant. Majanduslanguse ajal on kõik tootmismahud tunduvalt madalamad (majanduslanguse lõppedes taastuvad endised tootmismahud)
STR_CONFIG_SETTING_TRAIN_REVERSING :Keela rongide ümberpöörd jaamades: {STRING}
STR_CONFIG_SETTING_TRAIN_REVERSING_HELPTEXT :Kui on aktiveeritud, siis ei pööra rongid vahejaamades ringi isegi siis kui ringi pööramisel oleks teekond järgmisse sihtpunkti lühem
STR_CONFIG_SETTING_DISASTERS :Katastroofid: {STRING}
STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Lülita sisse/välja katastroofid, mis aeg-ajalt hävitavad sõidukeid ja taristut
STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Lülita sisse/välja katastroofid mis võivad aeg-ajalt hävitada sõidukeid või taristut
STR_CONFIG_SETTING_CITY_APPROVAL :Linnavalitusese suhtumine pinnase restruktureerimisse: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Vali kui suurt mõju tekitavad müra ning keskkonna muudatused ettevõtte mainele ja edasistele ehitustoimingutele antud piirkonnas
@@ -1213,18 +1213,18 @@ STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Kui lubatud, la
STR_CONFIG_SETTING_GRADUAL_LOADING :Veovahendite järkjärguline laadimine: {STRING}
STR_CONFIG_SETTING_GRADUAL_LOADING_HELPTEXT :Järk-järgult laetud sõidukitel kasutatakse sõiduki kindlalt laadimis aega, selle asemel et pealelaadida kõik korraga kindlaks määratud ajaga, mis oleneb ainult laetud lasti summast
STR_CONFIG_SETTING_INFLATION :Inflatsioon: {STRING}
STR_CONFIG_SETTING_INFLATION_HELPTEXT :Tekitab majandusinflatsiooni, kus hinnad tõusevad pisut kiiremini kui maksed
STR_CONFIG_SETTING_INFLATION_HELPTEXT :Võimaldada inflatsioon majanduses, kui kulud suurenevad veidi kiiremini kui maksed
STR_CONFIG_SETTING_SELECTGOODS :Kauba toimetamine jaama ainult nõudluse korral: {STRING}
STR_CONFIG_SETTING_SELECTGOODS_HELPTEXT :Jaama tuleb ainult kaup mis on nõutud vastava sõiduki poolt. See välistab halvad reitingud teistele kaupadele mida sellest jaamast ei transpordita
STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maksimaalne silla pikkus: {STRING}
STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maksimaalne pikkus ehitatud sildadele
STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maksimaalne tunneli pikkus: {STRING}
STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maksimaalne pikkus ehitatud tunnelitele
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Toorainetööstuse rajamise viis: {STRING}
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Toorainetööstuse rajamise viis. Valides 'pole' ei saa üldse toorainetööstuseid rajada, 'uuringutega' rajatakse tööstus suvalisse kohta, ning 'nagu kõik tööstused' ehitatakse toorainetööstuseid nagu töötlevat tööstust
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Põhitööstuse rajamismeetod: {STRING}
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Peamise tootmisharu rahastamise meetod. 'ei ole' tähendab ei ole võimalik rahastada, 'geoloogiliste' tähendab rahastamine on võimalik, kuid ehitis kaardil tekib suvalise kohapeal või võib üldse ebaõnnestuda. 'nagu muid tööstusharud,' tähendab toorest tööstusharu saab ehitada nagu töötleva tööstuse harusid
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Pole
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Nagu kõik tööstused
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Uuringutega
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Nagu muud tööstused
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Eeluuringutega
STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Tasane ala ümber tehaste: {STRING}
STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Summa kui palju tasast maad on ümber tehase. See tagab et ruumi jääb saadavale ehitiste jaoks
STR_CONFIG_SETTING_MULTIPINDTOWN :Samalaadsed tööstused ühes linnas: {STRING}
@@ -1237,9 +1237,9 @@ STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Paremal
STR_CONFIG_SETTING_SHOWFINANCES :Aasta lõpul näidatakse rahavoogude aruannet: {STRING}
STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Sisse lülitamisel ilmub iga aasta lõpus rahavoogude aruanne, mis annab hea ülevaate ettevõtte rahalisest olukorrast
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Ülesanded on esialgselt «Peatusteta»: {STRING}
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Tavaliselt peatub sõiduk igas peatuses, mida ta läbib. Selle seadega sõidab sõiduk lõppsihini ilma vahejaamades peatumata. NB! See seade määrab vaid uute korralduste esialgse seadistuse. Korraldusi saab hiljem eraldi ümber seadistada
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Tavaliselt peatub sõiduk igas peatuses, mida ta läbib. Selle seadega sõidab sõiduk lõppsihini ilma vahejaamades peatumata. NB! See seade määrab vaid uute korralduse esialgse seadistuse. Korraldusi saab hiljem eraldi ümber seadistada
STR_CONFIG_SETTING_STOP_LOCATION :Esialgne platvormi peatumisosa uute rongide ülesannetes: {STRING}
STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Esialgne peatumiskoht rongiplatvormil. «Lõpu lähedal» tähendab sisenemispunkti lähistel. «Keskel» tähendab keset platvormi. «Kaugel lõpus» tähendab kaugel sisenemispunktist. NB! Selle seadega sõidab sõiduk lõppsihini ilma vahejaamades peatumata. NB! See seade määrab vaid uute korralduste esialgse seadistuse. Korraldusi saab hiljem eraldi ümber seadistada
STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Esialgne peatumiskoht rongiplatvormil. «Lõpu lähedal» tähendab sisenemispunkti lähistel. «Keskel» tähendab keset platvormi. «Kaugel lõpus» tähendab kaugel sisenemispunktist. NB! Selle seadega sõidab sõiduk lõppsihini ilma vahejaamades peatumata. NB! See seade määrab vaid uute korralduse esialgse seadistuse. Korraldusi saab hiljem eraldi ümber seadistada
STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :lõpu lähedal
STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :keskel
STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :täiesti lõpus
@@ -1252,13 +1252,13 @@ STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT_FULLSCREEN :Peamine vaateak
STR_CONFIG_SETTING_AUTOSCROLL_MAIN_VIEWPORT :Peamine vaateaken
STR_CONFIG_SETTING_AUTOSCROLL_EVERY_VIEWPORT :Kõik vaateaknad
STR_CONFIG_SETTING_BRIBE :Altkäemaksud kohalikele omavalitsustele: {STRING}
STR_CONFIG_SETTING_BRIBE_HELPTEXT :Võimaldab linna omavalitsusele altkäemaksu pakkuda. Vahele jäämise korral võetakse ettevõttelt kuueks kuuks ära õigus tegutseda linnas
STR_CONFIG_SETTING_BRIBE_HELPTEXT :Luba anda altkäemaksu kohalikule linnavõimule. Kui altkäemaks on inspektori poolt avastatud, siis ei saa ettevõte 6 kuu jooksul linnas mitte midagi ette võtta
STR_CONFIG_SETTING_ALLOW_EXCLUSIVE :Ainuveoõiguste ostmine: {STRING}
STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Kui ettevõte ostab linnalt kaubaveo ainuõiguse, siis teised ettevõtted ei saa üks aasta uusi kaupu ega reisijaid
STR_CONFIG_SETTING_ALLOW_EXCLUSIVE_HELPTEXT :Kui ettevõte ostab linnalt ainuõiguse kaupu transportida, siis vastase jaamadesse (reisijad ja last) ei ilmu kaupu terve aasta
STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS :Luba ehitiste rahastamine: {STRING}
STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Võimaldab ettevõttel linna kinnisvaraehitust rahastada
STR_CONFIG_SETTING_ALLOW_FUND_BUILDINGS_HELPTEXT :Luba ettevõtetel rahastada uute hoonete ehitamist linnas
STR_CONFIG_SETTING_ALLOW_FUND_ROAD :Kohaliku omavalitsuse teede rekonstrueerimise rahastamine: {STRING}
STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Võimaldab ettevõtetel linna tee-ehitustöid rahastada, šaboteerides sellega autode kaubavedu
STR_CONFIG_SETTING_ALLOW_FUND_ROAD_HELPTEXT :Luba ettevõtetel rahastada teede parandust, et saboteerida maantee põhist transporti selles linnas
STR_CONFIG_SETTING_ALLOW_GIVE_MONEY :Raha saatmine teistele ettevõtetele: {STRING}
STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :Luba mitmikmängus kanda raha erinevate ettevõtete vahel
STR_CONFIG_SETTING_FREIGHT_TRAINS :Raskete rongide simuleerimiseks kasutatav raskustegur: {STRING}
@@ -1281,7 +1281,7 @@ STR_CONFIG_SETTING_DYNAMIC_ENGINES :Mitme NewGRF s
STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Ühilduvuse suvand vanadele NewGRF'le. Ärge keelake seda, juhul kui Sa tead täpselt mida sa teed!
STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Sõidukite olemasolul ei saa seda seadet muuta
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Taristu hooldamine: {STRING}
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Taristuga kaasnevad halduskulud. Kulud kasvavad taristu hulga suhtes ebaproportsionaalselt, ning mõjutavad pigem suurettevõtteid
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Kui on aktiveeritud, siis taristu tekitab halduskulusid. Maksumus kasvab ebaproportsionaalselt taristu kasvuga, seega mõjutab suuri ettevõtteid rohkem kui väikeseid
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Aegumatud lennuväljad: {STRING}
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Selle seade sisse lülitamine jätab kõik lennujaamade tüübid avatuks lõpmata ajaks peale nende avanemist
@@ -1473,7 +1473,7 @@ STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Keskmine
STR_CONFIG_SETTING_AI_PROFILE_HARD :Keeruline
STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Tehismõistus mitmikmängus: {STRING}
STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Võimaldab arvutil osaleda mitmikmängudes
STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Luba kõikidel TI mängijatel ühineda mitmikmängudesse
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcode-d ennem skripte on peatatud: {STRING}
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maksimaalne arv arvutamise käike mida skript võib teha ühel sammul
@@ -1532,10 +1532,10 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_SUMMARY :Lühike
STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Täielik
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Värvilised uudised ilmuvad aastast {STRING}
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Värviliste uudiste ilmumise algusaasta. Varasematel aastatel ilmuvad uudised must-valgelt
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Aasta millest alates hakkavad ilmuma värvilised ajalehed. Ennem seda aastat kasutatakse must-valget trükki
STR_CONFIG_SETTING_STARTING_YEAR :Alustamise aeg: {STRING}
STR_CONFIG_SETTING_SMOOTH_ECONOMY :Sujuv majandus (rohkem, kuid väikesed muutused): {STRING}
STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Toodangumahtude muutused on väiksemad ja sagedasemad. Juhul kui tööstused tulevad NewGRF-ist ei oma see seade tavaliselt mõju
STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Kui on aktiveeritud siis muutuvad tööstuste toodangute mahud tihemini ja väiksemate sammudega. Sellel seadel ei ole tavaliselt mingit effekti kui tööstuse tüübid on määratud NewGRF-is
STR_CONFIG_SETTING_ALLOW_SHARES :Aktsiatehingud teiste ettevõtetega: {STRING}
STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Kui on aktiveeritud siis on ettevõtte aktsiate ostmine ja müümine lubatud. Aktsiad on saadaval ainult ettevõtetel mille vanus on üle teatud piiri
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Protsent tuludest mis läheb 'kanna edasi' süsteemis alumistesse lülidesse: {STRING}
@@ -1574,7 +1574,7 @@ STR_CONFIG_SETTING_ALLOW_TOWN_LEVEL_CROSSINGS_HELPTEXT :Selle seade sis
STR_CONFIG_SETTING_NOISE_LEVEL :Lennujaamade mürapiirangud linnades: {STRING}
STR_CONFIG_SETTING_NOISE_LEVEL_HELPTEXT :Kui ei ole aktiveeritud, siis on igas linnas lubatud kuni kaks lennujaama. Kui see seade on aktiveeritud, siis on lubatud igas linnas lennujaamu ehitada vastavalt linna müra vastuvõrlikkuse tasemele, mis sõltub otseselt linna elanike arvust ja lennujaama suurusest ja kaugusest kesklinnast
STR_CONFIG_SETTING_TOWN_FOUNDING :Linnade rajamine keset mängu: {STRING}
STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Võimaldab ettevõttel uusi linnu rajada
STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Selle seade aktiveerimisel on lubatud mängijalt rahastada uute linnade rajamist mängus
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Keelatud
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Lubatud
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Lubatud, koos linnaskeemi valimisega
@@ -1697,7 +1697,7 @@ STR_CONFIG_SETTING_SOUND :{ORANGE}Heliefe
STR_CONFIG_SETTING_NEWS :{ORANGE}Uudised ja sõnumid
STR_CONFIG_SETTING_CONSTRUCTION_SIGNALS :{ORANGE}Signaalid
STR_CONFIG_SETTING_STATIONS_CARGOHANDLING :{ORANGE}Kauba käsitlemine
STR_CONFIG_SETTING_AI_NPC :{ORANGE}Arvuti
STR_CONFIG_SETTING_AI_NPC :{ORANGE}Arvutimängijad
STR_CONFIG_SETTING_VEHICLES_AUTORENEW :{ORANGE}Uuendamine
STR_CONFIG_SETTING_VEHICLES_SERVICING :{ORANGE}Hooldus
STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Marsruutimine
@@ -1801,7 +1801,7 @@ STR_OSNAME_SUNOS :SunOS
# Abandon game
STR_ABANDON_GAME_CAPTION :{WHITE}Mängu lõpetamine
STR_ABANDON_GAME_QUERY :{YELLOW}Kas lõpetada mäng?
STR_ABANDON_SCENARIO_QUERY :{YELLOW}Kas sa oled kindel, et sa tahad stsenaariumi tegemise lõpetada?
STR_ABANDON_SCENARIO_QUERY :{YELLOW}Kas sa oled kindel, et sa tahad kaardi tegemise lõpetada?
# Cheat window
STR_CHEATS :{WHITE}Petmine
@@ -2207,7 +2207,7 @@ STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Server r
# Content downloading window
STR_CONTENT_TITLE :{WHITE}Aineste allalaadimine
STR_CONTENT_TYPE_CAPTION :{BLACK}Liik
STR_CONTENT_TYPE_CAPTION :{BLACK}Tüüp
STR_CONTENT_TYPE_CAPTION_TOOLTIP :{BLACK}Ainese liik
STR_CONTENT_NAME_CAPTION :{BLACK}Nimi
STR_CONTENT_NAME_CAPTION_TOOLTIP :{BLACK}Ainese nimi
@@ -2228,7 +2228,7 @@ STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Külasta
STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Laadi alla
STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Alusta valitud aineste allalaadimist
STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}Allalaadimiste kogusuurus: {WHITE}{BYTES}
STR_CONTENT_DETAIL_TITLE :{SILVER}AINESE KIRJELDUS
STR_CONTENT_DETAIL_TITLE :{SILVER}SISU TEAVE
STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Sa pole seda allalaaditavaks märkinud
STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Te olete valinud selle allalaadimiseks
STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}See sõltuvus on valitud allalaadimiseks
@@ -2237,9 +2237,9 @@ STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}See ei
STR_CONTENT_DETAIL_UPDATE :{SILVER}See on asendus olemasolevale {STRING}
STR_CONTENT_DETAIL_NAME :{SILVER}Nimi: {WHITE}{STRING}
STR_CONTENT_DETAIL_VERSION :{SILVER}Osa: {WHITE}{STRING}
STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Seletus: {WHITE}{STRING}
STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}Kirjeldus: {WHITE}{STRING}
STR_CONTENT_DETAIL_URL :{SILVER}Aadress: {WHITE}{STRING}
STR_CONTENT_DETAIL_TYPE :{SILVER}Liik: {WHITE}{STRING}
STR_CONTENT_DETAIL_TYPE :{SILVER}Tüüp: {WHITE}{STRING}
STR_CONTENT_DETAIL_FILESIZE :{SILVER}Faili maht: {WHITE}{BYTES}
STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}Valitud kuna: {WHITE}{STRING}
STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}Sõltuvused: {WHITE}{STRING}
@@ -2546,8 +2546,8 @@ STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Vali lin
STR_FOUND_TOWN_CITY :{BLACK}Linn
STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Suuremad linnad kasvavad kiiremini kui väikesed{}Sõltuvalt seadetest on need ka alguses suuremad
STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Linna teeplaneering
STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Vali linnas kasutatav teeplaneering
STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Aleviku teeplaneering
STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Vali alevikus kasutatav teeplaneering
STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Algne
STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Paremad teed
STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}2x2 ruudustik
@@ -2558,7 +2558,7 @@ STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Suvaline
STR_FUND_INDUSTRY_CAPTION :{WHITE}Uue tööstuse rahastamine
STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Vali siit nimistust sobiv tööstus
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Palju suvalisi tööstusi
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Katab kaardi suvaliselt paigutatud tööstustega
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Kata kaart suvaliselt paigutatud tööstustega
STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Hind: {YELLOW}{CURRENCY_LONG}
STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Rahasta
STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Ehita
@@ -2700,7 +2700,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ettevõtte maa
STR_ABOUT_OPENTTD :{WHITE}OpenTTD lisainfo
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Algne autorikaitse {COPYRIGHT} 1995 Chris Sawyer, kõik õigused kaitstud
STR_ABOUT_VERSION :{BLACK}OpenTTD osa {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 OpenTTD meeskond
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 OpenTTD meeskond
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Mängu salvestamine
@@ -3642,15 +3642,15 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}Kandevõ
STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}Ülekantud tulu: {LTBLUE}{CURRENCY_LONG}
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Hooldusvälp: {LTBLUE}{COMMA}päeva{BLACK} Viimati hooldatud: {LTBLUE}{DATE_LONG}
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}Hooldusvälp: {LTBLUE}{COMMA}päevad{BLACK} Viimati hooldatud: {LTBLUE}{DATE_LONG}
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}Hooldusvälp: {LTBLUE}{COMMA}%{BLACK} Viimati hooldatud: {LTBLUE}{DATE_LONG}
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Suurenda hooldusvahemiku 10 võrra. Ctrl-klahviga suurendatakse hooldusvahemiku 5 võrra.
STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Vähenda hooldusvahemiku 10 võrra. Ctrl+Klõps vähendab hooldusvahemikku 5 võrra.
STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Muuda hooldusvälba liiki
STR_VEHICLE_DETAILS_DEFAULT :Esialgne
STR_VEHICLE_DETAILS_DAYS :Päevad
STR_VEHICLE_DETAILS_PERCENT :Protsendid
STR_VEHICLE_DETAILS_DAYS :Päeva
STR_VEHICLE_DETAILS_PERCENT :Protsent
STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}Anna rongile nimi
STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}Nimeta mootorsõiduk ümber
@@ -4376,7 +4376,7 @@ STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}Laev pol
STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}Lennuk pole saadaval
STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}Mängus on liiga palju veovahendeid
STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Hooldusvahemikku ei saa muuta...
STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Hooldusvahemiku ei saa muuta...
STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... sõiduk hävitatud
+1 -1
View File
@@ -2443,7 +2443,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ogn hjá fyrit
STR_ABOUT_OPENTTD :{WHITE}Um OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Upprunalig upphavsrættindi {COPYRIGHT} 1995 Chris Sawyer, Øll rættindi umbiðin
STR_ABOUT_VERSION :{BLACK}OpenTTD útgáva {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD toymi
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD toymi
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Goym spæl
+1 -1
View File
@@ -2643,7 +2643,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Yhtiön omistam
STR_ABOUT_OPENTTD :{WHITE}Tietoja OpenTTD:stä
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Alkuperäiset oikeudet {COPYRIGHT} 1995 Chris Sawyer, kaikki oikeudet pidätetään
STR_ABOUT_VERSION :{BLACK}OpenTTD-versio {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 The OpenTTD team
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Tallenna peli
+1 -1
View File
@@ -2644,7 +2644,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terrain apparte
STR_ABOUT_OPENTTD :{WHITE}À propos de OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Tous droits réservés
STR_ABOUT_VERSION :{BLACK}OpenTTD version {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 L'équipe OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 L'équipe OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sauvegarder la partie
+1 -1
View File
@@ -2872,7 +2872,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Tìr a' chompan
STR_ABOUT_OPENTTD :{WHITE}Mu dheidhinn OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Còir-lethbhreac tùsail {COPYRIGHT} 1995 Chris Sawyer, a h-uile còir glèidhte
STR_ABOUT_VERSION :{BLACK}OpenTTD tionndadh {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 An sgioba OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 An sgioba OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sàbhail an geama
+1 -1
View File
@@ -2629,7 +2629,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreo propieda
STR_ABOUT_OPENTTD :{WHITE}Acerca de OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright orixinal {COPYRIGHT} 1995 Chris Sawyer, Tódolos dereitos reservados
STR_ABOUT_VERSION :{BLACK}OpenTTD versión {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 O equipo de OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 O equipo de OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Gravar partida
+2 -2
View File
@@ -1588,7 +1588,7 @@ STR_CONFIG_SETTING_DEMAND_DISTANCE :Einfluss der En
STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Wenn hier ein Wert größer als 0 gewählt wird, so spielt die Entfernung zwischen dem Ursprung und den möglichen Zielen eine Rolle bei der Verteilung von Waren. Je größer die Entfernung und je höher der Wert, desto geringer der Anteil der Waren, die zu der entsprechenden Station geschickt werden.
STR_CONFIG_SETTING_DEMAND_SIZE :Einfluss der Beliebtheit der Zielhaltestelle auf die Transportnachfrage bei symmetrischen Verbindungen: {STRING}
STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Wenn hier weniger als 100% gesetzt wird, so verhält sich die symmetrische Verteilung mehr wie die asymmetrische. Das heißt weniger Waren werden für eine gegebene Menge in einer Richtung reisender Waren zurück geschickt. Wenn hier 0 angegeben wird, verhält sich die symmetrische wie die asymmetrische Verteilung.
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Auslastung der kürzeren Verbindungen bevor längere Verbindungen gewählt werden: {STRING}
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Auslastung der kürzeren Verbindungenen bevor längere Verbindungen gewählt werden: {STRING}
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Häufig gibt es mehrere Verbindungen um von einer Station zu einer anderen zu kommen. Zuerst wird der Algorithmus die kürzesten Verbindungen auslasten, dann die längeren usw. Wenn alle Verbindungen ausgelastet sind, verteilt er die verbliebene Nachfrage gleichmäßig. Diese Einstellung besagt, ab welcher Auslastung eine Verbinudng als "voll" gilt und der Algorithmus in der ersten Runde die nächst längere wählt. Da die Kapazität der Verbindungen geschätzt wird, ist es sinnvoll, hier weniger als 100% anzugeben, um etwas "Luft" für Fehlschätzungen zu lassen.
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Geschwindigkeitseinheit: {STRING}
@@ -2644,7 +2644,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Firmeneigenes G
STR_ABOUT_OPENTTD :{WHITE}OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Transport Tycoon-Urheberrecht {COPYRIGHT} 1995 Chris Sawyer, alle Rechte vorbehalten
STR_ABOUT_VERSION :{BLACK}OpenTTD-Version {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD-Team
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD-Team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spiel speichern
+17 -52
View File
@@ -270,16 +270,12 @@ STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} τόν
STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} τόνο{P ς ι}
STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg
STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA}γαλ
STR_UNITS_VOLUME_SHORT_METRIC :{COMMA}λ
STR_UNITS_VOLUME_SHORT_SI :{COMMA}m³
STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} γαλόν{P "ι" "ια"}
STR_UNITS_VOLUME_LONG_METRIC :{COMMA} λίτρ{P ο α}
STR_UNITS_VOLUME_LONG_SI :{COMMA} m³
STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf
STR_UNITS_FORCE_METRIC :{COMMA} kgf
STR_UNITS_FORCE_SI :{COMMA} kN
STR_UNITS_HEIGHT_IMPERIAL :{COMMA} πόδια
@@ -302,7 +298,7 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Κλεί
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Τίτλος παραθύρου - σύρετε το για να το μετακινήσετε
STR_TOOLTIP_SHADE :{BLACK}Σκίαση παραθύρου - Εμφάνιση μόνο της μπάρας τιτλου
STR_TOOLTIP_DEBUG :{BLACK}Εμφάνιση πληροφοριών αποσφαλμάτωσης για NewGRF
STR_TOOLTIP_STICKY :{BLACK}Σημειώστε αυτό το παραθύρο ωστέ να μην κλείνει από το πλήκτρο «Κλείσιμο Όλων των Παραθύρων». Πατήστε Ctrl+Κλικ για να αποθηκεύσετε την κατάσταση απο επιλογή
STR_TOOLTIP_STICKY :{BLACK}Σημείωση αυτού του παραθύρου να μην κλείνει από το πλήκτρο 'Κλείσιμο Όλων των Παραθύρων'
STR_TOOLTIP_RESIZE :{BLACK}Κάντε κλίκ και σύρετε για να αλλάξετε το μέγεθος του παραθύρου
STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Εναλλαγή μεγάλου/μικρού παραθύρου
STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Μπάρα Κύλισης - μετακινεί την λίστα πάνω/κάτω
@@ -352,10 +348,10 @@ STR_SORT_BY_ENGINE_ID :EngineID (κλ
STR_SORT_BY_COST :Κόστος
STR_SORT_BY_POWER :Δύναμη
STR_SORT_BY_TRACTIVE_EFFORT :Δύναμη έλξης
STR_SORT_BY_INTRO_DATE :Ημερομηνία παρουσιάσης
STR_SORT_BY_RUNNING_COST :Λειτουργικό κόστος
STR_SORT_BY_POWER_VS_RUNNING_COST :Ισχύς/Λειτουργικό κόστος
STR_SORT_BY_CARGO_CAPACITY :Χωρητικότητα φορτίου
STR_SORT_BY_INTRO_DATE :Ημερομηνία Παρουσιάσης
STR_SORT_BY_RUNNING_COST :Λειτουργικό Κόστος
STR_SORT_BY_POWER_VS_RUNNING_COST :Ισχύς/Λειτουργικό Κόστος
STR_SORT_BY_CARGO_CAPACITY :Χωρητικότητα Φορτίου
STR_SORT_BY_RANGE :Εύρος
STR_SORT_BY_POPULATION :Πληθυσμός
STR_SORT_BY_RATING :Εκτίμηση
@@ -805,7 +801,6 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA
STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Εναλλαγή ονομάτων πόλεων στον χάρτη
STR_SMALLMAP_CENTER :{BLACK}Κεντράρισμα του μικρού χάρτη στη τρέχουσα θέση
STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM})
STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING}
STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY}
STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN}
STR_SMALLMAP_DISABLE_ALL :{BLACK}Απενεργοποίηση όλων
@@ -1161,7 +1156,7 @@ STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_DEFAULT :Ρυθμίσε
STR_CONFIG_SETTING_RESTRICT_CHANGED_AGAINST_NEW :Ρυθμίσεις με διαφορετική τιμή από τις ρυθμίσεις νέου παιχνιδιού σας
STR_CONFIG_SETTING_TYPE_DROPDOWN_HELPTEXT :{BLACK}Μειώνει την παρακάτω λίστα σε συγκεκριμένους τύπους ρυθμίσεων
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Όλοι οι τύποι ρυθμίσεων
STR_CONFIG_SETTING_TYPE_DROPDOWN_ALL :Όλες οι ρυθμίσεις
STR_CONFIG_SETTING_TYPE_DROPDOWN_CLIENT :Ρυθμίσεις πελάτη (δεν διατηρούνται στις αποθηκεύσεις· επηρεάζουν όλα τα παιχνίδια)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_MENU :Ρυθμίσεις παιχνιδιού (διατηρούνται στις αποθηκεύσεις· επηρεάζουν μόνο τα νέα παιχνίδια)
STR_CONFIG_SETTING_TYPE_DROPDOWN_GAME_INGAME :Ρυθμίσεις παιχνιδιού (διατηρούνται στις αποθηκεύσεις· επηρεάζουν μόνο το τρέχον παιχνίδι)
@@ -1453,7 +1448,7 @@ STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Παίζει ή
STR_CONFIG_SETTING_SOUND_NEWS :Εφημερίδα: {STRING}
STR_CONFIG_SETTING_SOUND_NEWS_HELPTEXT :Παίζει ήχο όταν εμφανίζονται εφημερίδες
STR_CONFIG_SETTING_SOUND_NEW_YEAR :Στο τέλος του χρόνου: {STRING}
STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Παίζει ηχητικό εφέ στο τέλος του χρόνου που συνοψίζει την επίδοση της εταιρείας κατά την διάρκεια αυτού του χρόνου σε σχέση με τον προηγούμενο χρόνο
STR_CONFIG_SETTING_SOUND_NEW_YEAR_HELPTEXT :Παίζει ηχητικό εφέ στο τέλος του χρόνου συνοψίζοντας την επίδοση της εταιρείας κατά την διάρκεια αυτού του χρόνου σε σχέση με τον προηγούμενο χρόνο
STR_CONFIG_SETTING_SOUND_CONFIRM :Οικοδομή: {STRING}
STR_CONFIG_SETTING_SOUND_CONFIRM_HELPTEXT :Παίζει ηχητικό εφέ σε επιτυχής οικοδομές ή άλλες δράσεις
STR_CONFIG_SETTING_SOUND_CLICK_HELPTEXT :Παίζει ήχο όταν γίνεται κλικ σε κουμπιά
@@ -1461,7 +1456,7 @@ STR_CONFIG_SETTING_SOUND_DISASTER_HELPTEXT :Παίζει ή
STR_CONFIG_SETTING_SOUND_VEHICLE :Οχήματα: {STRING}
STR_CONFIG_SETTING_SOUND_VEHICLE_HELPTEXT :Παίζει τα ηχητικά εφέ των οχημάτων
STR_CONFIG_SETTING_SOUND_AMBIENT :Περιβαλλοντικά: {STRING}
STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Παίζει τους περιβαλλοντικούς ήχους των βιομηχανιών, των πόλεων, και του τοπίου γενικότερα
STR_CONFIG_SETTING_SOUND_AMBIENT_HELPTEXT :Παίζει τους περιβαλλοντικούς ήχους των βιομηχανιών των πόλεων, και του τοπίου γενικότερα
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :Απενεργοποίηση των υποδομών για τα οχήματα που δεν είναι διαθέσιμα: {STRING}
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :Όταν είναι ενεργοποιημένο, οι υποδομές είναι διαθέσιμες μόνο όταν υπάρχουν διαθέσιμα οχήματα, αποτρέποντας σπατάλη χρόνου και χρημάτων σε μη χρησιμοποιήσιμες υποδομές
@@ -1551,7 +1546,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Όταν σύρ
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Ορισμός απόστασης στην οποία θα τοποθετούνται σήματα σε μια γραμμή και μέχρι το επόμενο εμπόδιο (σήμα, διακλάδωση), αν σύρονται τα σήματα
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} τετραγωνίδι{P 0 ο α}
STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Όταν σύρετε, διατηρείται σταθερή απόσταση μεταξύ των σημάτων: {STRING}
STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Επιλέξτε τη συμπεριφορά της τοποθέτησης σημάτων όταν πατάτε Ctrl και σύρετε. Όταν είναι απενεργοποιημένο, τα σήματα τοποθετούνται γύρω από σήραγγες και γέφυρες για να αποφεύγονται μεγάλα τμήματα χωρίς σήματα. Όταν είναι ενεργοποιημένο, τα σήματα τοποθετούνται κάθε n τετραγωνίδια, κάνοντας ευκολότερη την ευθυγράμμιση των σημάτων σε παράλληλες γραμμές
STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Επιλέξτε τη συμπεριφορά της τοποθέτησης σημάτων όταν πατάτε Ctrl και σύρετε. Όταν είναι απενεργοποιημένο, τα σήματα τοποθετούνται γύρω από σήραγγες και γέφυρες για να αποφεύγονται μεγάλα τμήματα χωρίς σήματα. Όταν είναι ενεργοποιημένο, τα σήματα τοποθετούνται κάθε n τετραγωνίδια, κάνοντας την ευθυγράμμιση των σημάτων σε παράλληλες γραμμές ευκολότερη
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Αυτόματο κτίσιμο σηματοφόρων πριν από το: {STRING}
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Ορίζεται το έτος κατά το οποίο θα χρησιμοποιούνται τα ηλεκτρικά σήματα στις σιδηροτροχιές. Πριν από αυτό, θα χρησιμοποιούνται μηχανικά σήματα (που έχουν ακριβώς την ίδια λειτουργία, αλλά έχουν διαφορετική μορφή)
STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Ενεργοποίηση του μενού σηματοδοτών: {STRING}
@@ -1569,7 +1564,7 @@ STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Όλοι
STR_CONFIG_SETTING_TOWN_LAYOUT :Σχέδιο δρόμων για νέες πόλεις: {STRING}
STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Μορφή οδικών δικτύων για τις πόλεις
STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Αρχική
STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :αρχική
STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Καλύτεροι δρόμοι
STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :πλέγμα 2x2
STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :πλέγμα 3x3
@@ -1630,24 +1625,14 @@ STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Μέσο μέγ
STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Να αφαιρούνται παράλογα στοιχεία δρόμων κατά την κατασκευή τους: {STRING}
STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Αφαίρεση αδιέξοδων άκρων κατά την χρηματοδοτούμενη ανακατασκευή δρόμων
STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :χειροκίνητη
STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :μη συμμετρική
STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :συμμετρική
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Μονάδες μέτρησης ταχύτητας: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Μονάδες μέτρησης βάρους: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Μονάδες μέτρησης όγκου: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Μετρικό (l)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Μετρικό (kgf)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Μονάδες μέτρησης ύψους: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Μετρικές (m)
@@ -1883,8 +1868,6 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Αλλα
# Network server list
STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Παιχνίδι πολλών παικτών
STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Όχι
STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Ναι
STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Όνομα παίκτη:
STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Αυτό είναι το όνομα με το οποίο θα σας αναγνωρίζουν οι άλλοι παίκτες
@@ -1943,8 +1926,6 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Το ό
STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Θέση κωδικού
STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Προστατέψτε το παιχνίδι με έναν κωδικό εάν δε θέλετε να είναι δημοσίως προσβάσιμο
STR_NETWORK_START_SERVER_UNADVERTISED :Όχι
STR_NETWORK_START_SERVER_ADVERTISED :Ναι
STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} συμπαίκτ{P ης ες}
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Μέγιστος αριθμός συμμετεχόντων:
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Επιλέξτε τον μέγιστο αριθμό συμμετεχόντων. Δεν είναι ανάγκη να γεμίσουν όλες οι θέσεις
@@ -2111,7 +2092,7 @@ STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Λανθ
STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Ο διακομιστής είναι γεμάτος
STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Έχει απαγορευτεί η είσοδος σας από τον διακομιστή
STR_NETWORK_ERROR_KICKED :{WHITE}Έχετε εκδιωχθεί από το παιχνίδι
STR_NETWORK_ERROR_CHEATER :{WHITE}Η χρήση cheats δεν επιτρέπεται σε αυτόν τον διακομιστή
STR_NETWORK_ERROR_CHEATER :{WHITE}Η χρήση cheats δεν επιτρέπεται σε αυτό το διακομιστή
STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Αποστείλατε πάρα πολλές εντολές στον διακομιστή
STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Χρειαστήκατε πολύ χρόνο για να συμπληρώσετε τον κωδικό
STR_NETWORK_ERROR_TIMEOUT_COMPUTER :{WHITE}Ο υπολογιστής σας είναι πολύ αργός για να διατηρήσει συγχρόνιση με τον διακομιστή
@@ -2258,8 +2239,6 @@ STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Εναλ
STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Επιλέξτε τα αντικείμενα που θα είναι αόρατα αντί για διάφανα
# Linkgraph legend window
STR_LINKGRAPH_LEGEND_ALL :{BLACK}Όλες
STR_LINKGRAPH_LEGEND_NONE :{BLACK}Καμία
# Linkgraph legend window and linkgraph legend in smallmap
@@ -2661,7 +2640,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ιδιοκτη
STR_ABOUT_OPENTTD :{WHITE}Σχετικά με το OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Αρχικά Πνευματικά Δικαιώματα {COPYRIGHT} 1995 Chris Sawyer, Όλα τα δικαιώματα διατηρούνται
STR_ABOUT_VERSION :{BLACK}Έκδοση OpenTTD{REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 Η ομάδα του OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 Η ομάδα του OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Αποθήκευση Παιχνιδιού
@@ -2909,7 +2888,6 @@ STR_NEWGRF_INVALID_ENGINE :<μη έγκυ
STR_NEWGRF_INVALID_INDUSTRYTYPE :<μη έγκυρη βιομηχανία>
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
STR_INVALID_VEHICLE :<μη έγκυρο όχημα>
# NewGRF scanning window
STR_NEWGRF_SCAN_CAPTION :{WHITE}Σαρώνονται ΝewGRF
@@ -2995,8 +2973,6 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Δωρ
STR_GOALS_GLOBAL_TITLE :{BLACK}Καθολικοί στόχοι:
STR_GOALS_TEXT :{ORANGE}{STRING}
STR_GOALS_NONE :{ORANGE}- Κανένας -
STR_GOALS_PROGRESS :{ORANGE}{STRING}
STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING}
STR_GOALS_COMPANY_TITLE :{BLACK}Εταιρικοί στόχοι:
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Κάνετε κλικ στον στόχο για να επικεντρωθεί η οθόνη στη βιομηχανία/πόλη/τετραγωνίδιο. Με Ctrl+Κλικ ανοίγει το παράθυρο θέασης στην τοποθεσία της βιομηχανίας/πόλης/τετραγωνίδιου
@@ -3036,12 +3012,6 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING
STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Κάνετε κλικ στην υπηρεσία για κεντράρισμα στην βιομηχανία/πόλη. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία της βιομηχανίας/πόλης
# Story book window
STR_STORY_BOOK_TITLE :{YELLOW}{STRING}
STR_STORY_BOOK_GENERIC_PAGE_ITEM :Σελίδα {NUM}
STR_STORY_BOOK_PREV_PAGE :{BLACK}Προηγούμενη
STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Μεταβαίνει στη προηγούμενη σελίδα
STR_STORY_BOOK_NEXT_PAGE :{BLACK}Επόμενη
STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Μεταβαίνει στην επόμενη σελίδα
# Station list window
STR_STATION_LIST_TOOLTIP :{BLACK}Ονόματα σταθμών - κάνετε κλικ στο όνομα για κεντράρισμα στο σταθμό. Με Ctrl+Κλικ ανοίγει νέο παράθυρο προβολής στην τοποθεσία του σταθμού
@@ -3070,11 +3040,7 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN
STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Βαθμολογίες
STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Εμφάνιση στατιστικών σταθμού
STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%)
STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} από {STATION}
STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} μέσω {STATION}
STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} προς {STATION}
############ range for rating starts
@@ -4283,7 +4249,7 @@ STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}Δεν
STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}Δεν μπορεί να ονομαστεί το αεροσκάφος...
STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}Δεν μπορεί να σταματήσει/ξεκινήσει το τρένο...
STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Το όχημα δεν μπορεί να ξεκινήσει ή σταματήσει...
STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Δεν μπορεί να σταματήσει/ξεκινήσει το όχημα...
STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}Δεν μπορεί να σταματήσει/ξεκινήσει το πλοίο...
STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}Δεν μπορεί να σταματήσει/ξεκινήσει το αεροσκάφος...
@@ -4577,10 +4543,10 @@ STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_TOY_VAN :Βαγόνι Π
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_BATTERY_TRUCK :Βαγόνι Μπαταριών
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_FIZZY_DRINK_TRUCK :Βαγόνι Αναψυκτικών
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PLASTIC_TRUCK :Βαγόνι Πλαστικού
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 «Leviathan» (Ηλεκτρική)
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 «Cyclops» (Ηλεκτρική)
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 «Pegasus» (Ηλεκτρική)
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 «Chimaera» (Ηλεκτρική)
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV1_LEVIATHAN_ELECTRIC :Lev1 «Leviathan» (Ηλεκτρικό)
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV2_CYCLOPS_ELECTRIC :Lev2 «Cyclops» (Ηλεκτρικό)
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 «Pegasus» (Ηλεκτρικό)
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 «Chimaera» (Ηλεκτρικό)
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Επιβατικό Βαγόνι
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Βαγόνι Αλληλογραφίας
@@ -4823,7 +4789,6 @@ STR_JUST_DATE_ISO :{DATE_ISO}
STR_JUST_STRING :{STRING}
STR_JUST_STRING_STRING :{STRING}{STRING}
STR_JUST_RAW_STRING :{STRING}
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
# Slightly 'raw' stringcodes with colour or size
STR_BLACK_COMMA :{BLACK}{COMMA}
+1 -1
View File
@@ -2557,7 +2557,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :שטח בבעל
STR_ABOUT_OPENTTD :{WHITE}OpenTTD אודות
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}כל הזכויות שמורות , {COPYRIGHT}1995 כריס סויר - {NBSP}זכויות יוצרים מקוריות
STR_ABOUT_VERSION :{BLACK}{REV} גירסה , OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 The OpenTTD team
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}שמור משחק
+1 -8
View File
@@ -1403,8 +1403,6 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Alapértelmezett paletta NewGRF-eknek ha nincs meghatározva: {STRING}
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_HELPTEXT :Alapértelmezett paletta, melyet a NewGRF-ek használnak amennyiben nincs meghatározva, hogy melyikre van szükségük
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Alapértelmezett (D) paletta
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Hagyományos (W) paletta
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatikus szünettel kezdés új játék esetén: {STRING}
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Bekapcsolva a játék szünettel kezdődik, időt hagyva a térkép közelebbi tanulmányozására
@@ -2106,7 +2104,6 @@ STR_NETWORK_CLIENT :Kliens
STR_NETWORK_SPECTATORS :Megfigyelők
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Add meg a küldeni kívánt pénz mennyiségét
STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Megfigyelő
# Network set password
STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ne mentsd el a megadott jelszót
@@ -2707,7 +2704,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Vállalat álta
STR_ABOUT_OPENTTD :{WHITE}Az OpenTTD-ről
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Eredeti copyright {COPYRIGHT} 1995 Chris Sawyer, Minden jog fenntartva
STR_ABOUT_VERSION :{BLACK}OpenTTD {REV} verzió
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 Az OpenTTD csapat
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 Az OpenTTD csapat
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Játék mentése
@@ -2955,7 +2952,6 @@ STR_NEWGRF_INVALID_ENGINE :<érvénytelen
STR_NEWGRF_INVALID_INDUSTRYTYPE :<érvénytelen gazdasági épület>
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
STR_INVALID_VEHICLE :<érvénytelen jármű>
# NewGRF scanning window
STR_NEWGRF_SCAN_CAPTION :{WHITE}NewGRF-ek beolvasása
@@ -3094,7 +3090,6 @@ STR_STORY_BOOK_PREV_PAGE :{BLACK}Előző
STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Előző oldal
STR_STORY_BOOK_NEXT_PAGE :{BLACK}Következő
STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Következő oldal
STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Érvénytelen cél referencia
# Station list window
STR_STATION_LIST_TOOLTIP :{BLACK}Állomásnevek - kattints egy névre az állomás megnézéséhez. Ctrl+kattintásra új látképet nyit az állomás pozíciójára
@@ -4008,8 +4003,6 @@ STR_AI_SETTINGS_START_DELAY :Az előző MI i
STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} {STRING} readme-je
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}A(z) {STRING} {STRING} változásainak listája
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}A(z) {STRING} {STRING} licence
STR_TEXTFILE_WRAP_TEXT :{WHITE}Szöveg törése
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Szöveg törése az ablakban, hogy minden kiférjen és ne kelljen görgetni
STR_TEXTFILE_VIEW_README :{BLACK}Readme megtekintése
STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Változások listája
STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licenc
+1 -1
View File
@@ -2554,7 +2554,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Land í eigu fy
STR_ABOUT_OPENTTD :{WHITE}Um OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Upphaflegur höfundarréttur {COPYRIGHT} 1995 Chris Sawyer, Öll réttindi áskilin
STR_ABOUT_VERSION :{BLACK}OpenTTD útgáfa {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 OpenTTD hópurinn
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 OpenTTD hópurinn
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Vista leik
+37 -40
View File
@@ -29,7 +29,7 @@ STR_JUST_NOTHING :Tidak ada
STR_CARGO_PLURAL_NOTHING :
STR_CARGO_PLURAL_PASSENGERS :Penumpang
STR_CARGO_PLURAL_COAL :Batubara
STR_CARGO_PLURAL_MAIL :Surat
STR_CARGO_PLURAL_MAIL :Barang Pos
STR_CARGO_PLURAL_OIL :Minyak
STR_CARGO_PLURAL_LIVESTOCK :Ternak
STR_CARGO_PLURAL_GOODS :Barang Jadi
@@ -63,7 +63,7 @@ STR_CARGO_PLURAL_FIZZY_DRINKS :Minuman Berdesi
STR_CARGO_SINGULAR_NOTHING :
STR_CARGO_SINGULAR_PASSENGER :Penumpang
STR_CARGO_SINGULAR_COAL :Batubara
STR_CARGO_SINGULAR_MAIL :Surat
STR_CARGO_SINGULAR_MAIL :Barang Pos
STR_CARGO_SINGULAR_OIL :Minyak
STR_CARGO_SINGULAR_LIVESTOCK :Ternak
STR_CARGO_SINGULAR_GOODS :Barang Jadi
@@ -97,7 +97,7 @@ STR_CARGO_SINGULAR_FIZZY_DRINK :Minuman Berdesi
STR_QUANTITY_NOTHING :
STR_QUANTITY_PASSENGERS :{COMMA} penumpang
STR_QUANTITY_COAL :{WEIGHT_LONG} batubara
STR_QUANTITY_MAIL :{COMMA} kantong surat
STR_QUANTITY_MAIL :{COMMA} kantong barang pos
STR_QUANTITY_OIL :{VOLUME_LONG} minyak
STR_QUANTITY_LIVESTOCK :{COMMA} ekor ternak
STR_QUANTITY_GOODS :{COMMA} peti barang jadi
@@ -132,7 +132,7 @@ STR_QUANTITY_N_A :N/A
STR_ABBREV_NOTHING :
STR_ABBREV_PASSENGERS :{TINY_FONT}PN
STR_ABBREV_COAL :{TINY_FONT}BB
STR_ABBREV_MAIL :{TINY_FONT}SR
STR_ABBREV_MAIL :{TINY_FONT}BP
STR_ABBREV_OIL :{TINY_FONT}MY
STR_ABBREV_LIVESTOCK :{TINY_FONT}TR
STR_ABBREV_GOODS :{TINY_FONT}BR
@@ -293,10 +293,10 @@ STR_SORT_BY_ENGINE_ID :IDMesin (klasik
STR_SORT_BY_COST :Biaya
STR_SORT_BY_POWER :Daya
STR_SORT_BY_TRACTIVE_EFFORT :Gaya traksi
STR_SORT_BY_INTRO_DATE :Tanggal Perkenalan
STR_SORT_BY_INTRO_DATE :Tanggal Peluncuran
STR_SORT_BY_RUNNING_COST :Biaya Operasional
STR_SORT_BY_POWER_VS_RUNNING_COST :Daya/Biaya operasional
STR_SORT_BY_CARGO_CAPACITY :Kapasitas muatan
STR_SORT_BY_POWER_VS_RUNNING_COST :Daya/Biaya Ops.
STR_SORT_BY_CARGO_CAPACITY :Kapasitas kargo
STR_SORT_BY_RANGE :Jangkauan
STR_SORT_BY_POPULATION :Populasi
STR_SORT_BY_RATING :Peringkat
@@ -304,7 +304,7 @@ STR_SORT_BY_RATING :Peringkat
# Tooltips for the main toolbar
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Hentikan sementara permainan
STR_TOOLBAR_TOOLTIP_FORWARD :{BLACK}Percepat maju waktu permainan
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Opsi
STR_TOOLBAR_TOOLTIP_OPTIONS :{BLACK}Pilihan
STR_TOOLBAR_TOOLTIP_SAVE_GAME_ABANDON_GAME :{BLACK}Simpan, batalkan, keluar permainan
STR_TOOLBAR_TOOLTIP_DISPLAY_MAP :{BLACK}Tampilkan peta, tambahan viewport atau daftar pengenal
STR_TOOLBAR_TOOLTIP_DISPLAY_TOWN_DIRECTORY :{BLACK}Tampilkan daftar kota
@@ -1221,10 +1221,10 @@ STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Membolehkan kon
STR_CONFIG_SETTING_ADJACENT_STATIONS :Ijinkan membangun stasiun berdampingan: {STRING}
STR_CONFIG_SETTING_ADJACENT_STATIONS_HELPTEXT :Membolehkan stasiun berbeda untuk berhubungan satu sama lain
STR_CONFIG_SETTING_DYNAMIC_ENGINES :Aktifkan beberapa pengaturan mesin NewGRF: {STRING}
STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Opsi kompatibilitas untuk berkas NewGRF tua. Jangan menonaktifkan ini, kecuali Anda tahu persis apa yang Anda lakukan!
STR_CONFIG_SETTING_DYNAMIC_ENGINES_HELPTEXT :Pilihan kompatibilitas untuk NewGRF lama. Jangan mematikan ini, sampai anda tahu apa yang anda lakukan!
STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Tidak diijinkan mengubah setting ini karena kendaraan sudah ada
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Pemeliharaan Infrastruktur: {STRING}
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Jika dinyalakan, infrastruktur membutuhkan biaya pemeliharaan. Biaya berkembang secara proporsional sesuai dengan ukuran jaringan, lebih berdampak pada perusahaan besar dari pada perusahaan kecil
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Perawaran Infrastruktur: {STRING}
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Jika dinyalakan, infrastruktur membutuhkan biaya perawatan. Biaya tumbuh secara proporsional dengan ukuran jaringan, lebih berefek pada perusahaan besar dari pada perusahaan kecil
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Bandara tidak kedaluarsa: {STRING}
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Menyalakan setelan ini membuat semua jenis bandara tetap ada selamanya sejak pendesainanya
@@ -1487,7 +1487,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Saat menyeret,
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_HELPTEXT :Setel jarak sinyal yang akan dibuat di rel sampai obyek lain (sinyal, belokan,dll), jika sinyal di seret
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY_VALUE :{COMMA} kotak
STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :Saat menyeret, buat jarak antara sinyal: {STRING}
STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Pilih perilaku penempatan sinyal ketika Ctrl + menyeret sinyal. Jika dinonaktifkan, sinyal ditempatkan di sekitar terowongan atau jembatan untuk menghindari membentang panjang tanpa sinyal. Jika diaktifkan, sinyal ditempatkan pada setiap ubin, sehingga penyelarasan sinyal pada trek paralel menjadilebih mudah.
STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :Pilih letak penempatan sinyal saat membangun sinyal dengan Ctrl+klik. Jika dimatikan, sinyal ditempatkan di sekitar jembatan dan terowongan. Jika diaktifkan, sinyal akan ditempatkan disetiap rel ''N'', membuat penempatan sinyal di rel paralel lebih mudah
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :Gunakan sinyal semaphore sebelum: {STRING}
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :Setel tahun saat sinyal elektris digunakan untuk kereta. Sebelum tahun ini, sinyal non-elektris akan digunakan (fungsinya sama, tapi dengan penampilan berbeda)
STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :Aktifkan antarmuka sinyal: {STRING}
@@ -1575,8 +1575,8 @@ STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asimetris
STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :simetris
STR_CONFIG_SETTING_DISTRIBUTION_PAX :Modus distribusi untuk penumpang: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"simetris" berarti kira-kira jumlah penumpang yang sama akan pergi dari stasiun A ke stasiun B sebagaimana dari B ke A. "asimetris" berarti jumlah penumpang yang pergi ke kedua arah bisa berbeda-beda. "manual" berarti bahwa tidak ada distribusi otomatis akan dilakukan untuk penumpang.
STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Modus distribusi untuk surat: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"simetris" berarti kira-kira jumlah surat yang sama akan pergi dari stasiun A ke stasiun B sebagaimana dari B ke A. "asimetris" berarti jumlah surat yang pergi ke kedua arah bisa berbeda-beda. "manual" berarti bahwa tidak ada distribusi otomatis akan dilakukan untuk surat.
STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Modus distribusi untuk barang pos: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"simetris" berarti kira-kira jumlah barang pos yang sama akan pergi dari stasiun A ke stasiun B sebagaimana dari B ke A. "asimetris" berarti jumlah barang pos yang pergi ke kedua arah bisa berbeda-beda. "manual" berarti bahwa tidak ada distribusi otomatis akan dilakukan untuk barang pos.
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Modus distribusi untuk kelas kargo BERLAPIS BAJA: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Kelas kargo BERLAPIS BAJA mengandung barang berharga di iklim sedang, intan di sub tropis atau emas di iklim sub arktik. NewGRFs mungkin mengubah itu. "simetris" berarti bahwa kira-kira sama jumlah kargo itu akan pergi dari stasiun A ke stasiun B sebagai dari B ke A. "asimetris" berarti sewenang-wenang jumlah kargo itu bisa pergi di kedua arah. "manual" berarti bahwa tidak ada distribusi otomatis akan dilakukan untuk kargo itu. Disarankan untuk diaturkan ini ke asimetris atau manual ketika bermain sub arktik, sebagai bank tidak mengirim emas apapun kembali ke tambang emas. Untuk iklim sedang dan sub tropis anda juga bisah pilih simetris sebagian bank akan mengirim barang berharga kembali ke bank orisinil dari beberapa banyak barang berharga.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Modus distribusi untuk kelas kargo yang lain: {STRING}
@@ -1587,7 +1587,7 @@ STR_CONFIG_SETTING_DEMAND_DISTANCE :Efek jarak kepa
STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Jika anda mengatur nilai lebih tinggi daripada 0, jarak antara stasiun asal A untuk sebagian kargo dan tujuan mungkin B akan dapat efek untuk jumlah kargo dikirim dari A ke B. Semakin jauh B dari A semakin kurang kargo akan dikirim. Semakin tinggi anda mengatur itu, semakin kurang kargo akan dikirim ke stasiun jauh dan semakin banyak kargo akan dikirim ke stasiun dekat.
STR_CONFIG_SETTING_DEMAND_SIZE :Jumlah kargo yang akan kembali untuk modus simetris: {STRING}
STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Mengaturkan ini kurang dari 100% membuat distribusi simetris bertindak lebih seperti yang asimetris. Lebih kurang kargo akan di paksa dikirim kembali jika jumlah tertentu dikirim ke stasiun. Jika anda mengatur itu ke 0% distribusi simetris bertindak seperti yang asimetris.
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Penjenuhan lintasan pendek sebelum menggunakan lintasan besar: {STRING}
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Penuhnya lintasan pendek sebelum menggunakan lintasan besar: {STRING}
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Biasanya terdapat banyak lintasan antara dua stasiun. Cargodist akan mengisi hingga penuh lintasan yang paling pendek terlebih dahulu, kemudian memenuhkan lintasan terpendek berikutnya dan seterusnya. Penuhnya suatu lintasan akan ditentukan mengikuti perkiraan kapasitas dan penggunaan terencana. Jika semua lintasan sudah penuh, sementara masih ada permintaan, Cargodist akan membebankannya kepada sebarang lintasan, terutama lintasan-lintasan berkapasitas besar. Walau demikian, sering kali algoritma tidak akan memperkirakan kapasitas dengan akurat. Setting ini memungkinkanmu untuk menentukan prosentase maksimum isian sebuah lintasan sebelum mengisi lintasan berikutnya. Aturlah nilainya di bawah 100% untuk menghindarkan stasiun dari kelebihan pengunjung manakala ada kesalahan perkiraan kapasitas.
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Satuan kecepatan: {STRING}
@@ -2042,7 +2042,7 @@ STR_NETWORK_CLIENT :Klien
STR_NETWORK_SPECTATORS :Penonton
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Masukkan jumlah uang yang akan diberikan
STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Pengamat
STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Penonton
# Network set password
STR_COMPANY_PASSWORD_CANCEL :{BLACK}Jangan simpan kata sandi yang telah dimasukkan
@@ -2305,7 +2305,7 @@ STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Membangu
STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Pilih kelas stasiun yang akan ditampilkan
STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Pilih jenis stasiun yang akan dibangun
STR_STATION_CLASS_DFLT :Stasiun standar
STR_STATION_CLASS_DFLT :Stasiun asli/"default"
STR_STATION_CLASS_WAYP :Waypoint
# Signal window
@@ -2345,7 +2345,7 @@ STR_BRIDGE_TUBULAR_SILICON :Pipa, Silikon
# Road construction toolbar
STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Pembangunan Jalan
STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Pembangunan Jalur Trem
STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Pembangunan Jalan Trem
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Bangun bagian jalan. Ctrl untuk mengganti mode bangun/bongkar pada konstruksi jalan. Shift untuk menampilkan perkiraan biaya
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Bangun jalur trem. Ctrl untuk mengganti mode bangun/bongkar pada konstruksi jalur trem. Shift untuk menampilkan perkiraan biaya
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Bangun jalan menggunakan mode Autoroad. Ctrl untuk mengganti mode bangun/bongkar pada konstruksi jalan. Shift untuk menampilkan perkiraan biaya
@@ -2353,7 +2353,7 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}Bangun j
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}Bangun bengkel (untuk pembelian dan perbaikan kendaraan). Shift untuk menampilkan perkiraan biaya
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}Bangun bengkel (untuk pembelian dan perbaikan trem). Shift untuk menampilkan perkiraan biaya
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}Bangun terminal bus. Ctrl untuk mengaktifkan penggabungan terminal. Shift untuk menampilkan perkiraan biaya
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Bangun halte trem penumpang. Ctrl untuk mengaktifkan penggabungan halte. Shift untuk menampilkan perkiraan biaya
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}Bangun stasion trem penumpang. Ctrl untuk mengaktifkan penggabungan stasiun. Shift untuk menampilkan perkiraan biaya
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}Bangun terminal bongkar muat. Ctrl untuk mengaktifkan penggabungan stasiun. Shift untuk menampilkan perkiraan biaya
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_CARGO_TRAM_STATION :{BLACK}Bangun stasiun trem. Ctrl untuk mengaktifkan penggabungan stasiun. Shift untuk menampilkan perkiraan biaya
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_ONE_WAY_ROAD :{BLACK}Aktif/Non Aktifkan jalan satu arah
@@ -2375,8 +2375,8 @@ STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Orientas
STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Pilih arah terminal bus
STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Orientasi stasiun truk
STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Pilih arah terminal bongkar muat truk
STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Orientasi halte trem penumpang
STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Pilih arah halte trem penumpang
STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Orientasi stasiun trem penumpang
STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Pilih arah stasiun trem penumpang
STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Arah stasiun trem angkutan barang
STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Pilih arah stasiun trem angkutan barang
@@ -2643,7 +2643,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Tanah milik Per
STR_ABOUT_OPENTTD :{WHITE}Tentang OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Hak Cipta asli {COPYRIGHT} 1995 Chris Sawyer, Hak Cipta dilindungi
STR_ABOUT_VERSION :{BLACK}OpenTTD versi {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 Tim OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 Tim OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Simpan Permainan
@@ -2891,7 +2891,6 @@ STR_NEWGRF_INVALID_ENGINE :<model kendaraa
STR_NEWGRF_INVALID_INDUSTRYTYPE :<industri tidak valid>
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
STR_INVALID_VEHICLE :<kendaraan tidak berlaku>
# NewGRF scanning window
STR_NEWGRF_SCAN_CAPTION :{WHITE}Memindai NewGRFs
@@ -2923,7 +2922,7 @@ STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} (City)
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}Populasi: {ORANGE}{COMMA}{BLACK} Rumah: {ORANGE}{COMMA}
STR_TOWN_VIEW_PASSENGERS_LAST_MONTH_MAX :{BLACK}Penumpang bulan lalu: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Surat bulan lalu: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
STR_TOWN_VIEW_MAIL_LAST_MONTH_MAX :{BLACK}Dokumen bulan lalu: {ORANGE}{COMMA}{BLACK} maks: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK}Kargo untuk pertumbuhan kota:
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{RED} Butuh {ORANGE}{STRING}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK} dibutuhkan saat musim dingin
@@ -3128,7 +3127,7 @@ STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Biaya Ops
STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Biaya Operasional Kendaraan
STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Biaya Ops. Pesawat
STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Biaya Ops. Kapal Laut
STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Pemeliharaan Properti
STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Perawatan Properti
STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Pendapatan Kereta
STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Pendapatan Kendaraan
STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Pendapatan Pesawat
@@ -3944,8 +3943,6 @@ STR_AI_SETTINGS_START_DELAY :Jalankan AI set
STR_TEXTFILE_README_CAPTION :{WHITE}keterangan {STRING} dari {STRING}
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Catatan perubahan {STRING} dari {STRING}
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}Lisensi {STRING} dari {STRING}
STR_TEXTFILE_WRAP_TEXT :{WHITE}Mengebatkan teks
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Mengebatkan teks dari jendela sehingga akan muat tanpa menggulir
STR_TEXTFILE_VIEW_README :{BLACK}Lihat readme
STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Catatan Perubahan
STR_TEXTFILE_VIEW_LICENCE :{BLACK}Lisensi
@@ -4143,7 +4140,7 @@ STR_ERROR_THERE_IS_NO_STATION :{WHITE}...tidak
STR_ERROR_MUST_DEMOLISH_RAILROAD :{WHITE}Harus menghancurkan jalur rel stasiun terlebih dahul
STR_ERROR_MUST_DEMOLISH_BUS_STATION_FIRST :{WHITE}Harus menghancurkan terminal bus terlebih dahulu
STR_ERROR_MUST_DEMOLISH_TRUCK_STATION_FIRST :{WHITE}Harus menghancurkan stasiun truk terlebih dahulu
STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Harus menghancurkan halte penumpang trem terlebih dahulu
STR_ERROR_MUST_DEMOLISH_PASSENGER_TRAM_STATION_FIRST :{WHITE}Harus menghancurkan terminal penumpang trem terlebih dahulu
STR_ERROR_MUST_DEMOLISH_CARGO_TRAM_STATION_FIRST :{WHITE}Harus menghancurkan terminal kargo trem terlebih dahulu
STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Harus menghancurkan pelabuhan terlebih dahulu
STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Harus menghancurkan bandara terlebih dahulu
@@ -4213,9 +4210,9 @@ STR_ERROR_CAN_T_CONVERT_RAIL :{WHITE}Tidak da
STR_ERROR_MUST_REMOVE_ROAD_FIRST :{WHITE}Harus membongkar jalan terlebih dahulu
STR_ERROR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... jalan satu arah tak bisa memiliki simpangan
STR_ERROR_CAN_T_BUILD_ROAD_HERE :{WHITE}Tidak dapat membangun jalan disini...
STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Tidak dapat membangun jalur trem disini...
STR_ERROR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Tidak dapat membangun jalan trem disini...
STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Tidak dapat membongkar jalan di sini...
STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Tidak dapat membongkar jalur trem disini...
STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Tidak dapat membongkar jalan trem disini...
STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... tidak ada jalan
STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... tidak ada jalur trem
@@ -4526,7 +4523,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_SH_40_ELECTRIC :SH '40' (Listri
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_T_I_M_ELECTRIC :'T.I.M.' (Listrik)
STR_VEHICLE_NAME_TRAIN_ENGINE_RAIL_ASIASTAR_ELECTRIC :'AsiaStar' (Listrik)
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_PASSENGER_CAR :Gerbong Penumpang
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Gerbong Surat
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_MAIL_VAN :Gerbong Barang Pos
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_COAL_CAR :Gerbong Batubara
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_OIL_TANKER :Gerbong Tangki Minyak
STR_VEHICLE_NAME_TRAIN_WAGON_RAIL_LIVESTOCK_VAN :Gerbong Ternak
@@ -4556,7 +4553,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_X2001_ELECTRIC :'X2001' (Listri
STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_MILLENNIUM_Z1_ELECTRIC :'Millennium Z1' (Listrik)
STR_VEHICLE_NAME_TRAIN_ENGINE_MONORAIL_WIZZOWOW_Z99 :Wizzowow Z99
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_PASSENGER_CAR :Gerbong Penumpang
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Gerbong Surat
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_MAIL_VAN :Gerbong Dokumen
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_COAL_CAR :Gerbong Batubara
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_OIL_TANKER :Gerbong Tangki Minyak
STR_VEHICLE_NAME_TRAIN_WAGON_MONORAIL_LIVESTOCK_VAN :Gerbong Ternak
@@ -4588,7 +4585,7 @@ STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV3_PEGASUS_ELECTRIC :Lev3 'Pegasus'
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_LEV4_CHIMAERA_ELECTRIC :Lev4 'Chimaera' (Listrik)
STR_VEHICLE_NAME_TRAIN_ENGINE_MAGLEV_WIZZOWOW_ROCKETEER :Wizzowow Rocketeer
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_PASSENGER_CAR :Gerbong Penumpang
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Gerbong Surat
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_MAIL_VAN :Gerbong Dokumen
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_COAL_CAR :Gerbong Batubara
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_OIL_TANKER :Gerbong Tangki Minyak
STR_VEHICLE_NAME_TRAIN_WAGON_MAGLEV_LIVESTOCK_VAN :Gerbong Ternak
@@ -4624,12 +4621,12 @@ STR_VEHICLE_NAME_ROAD_VEHICLE_PLODDYPHUT_MKIII_BUS :Bus Ploddyphut
STR_VEHICLE_NAME_ROAD_VEHICLE_BALOGH_COAL_TRUCK :Truk Batubara Balogh
STR_VEHICLE_NAME_ROAD_VEHICLE_UHL_COAL_TRUCK :Truk Batubara Uhl
STR_VEHICLE_NAME_ROAD_VEHICLE_DW_COAL_TRUCK :Truk Batubara DW
STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :Truk Pos MPS
STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Truk Pos Reynard
STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Truk Pos Perry
STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :Truk Pos MightyMover
STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Truk Pos Powernaught
STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Truk Pos Wizzowow
STR_VEHICLE_NAME_ROAD_VEHICLE_MPS_MAIL_TRUCK :Truk Dokumen MPS
STR_VEHICLE_NAME_ROAD_VEHICLE_REYNARD_MAIL_TRUCK :Truk Dokumen Reynard
STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_MAIL_TRUCK :Truk Dokumen Perry
STR_VEHICLE_NAME_ROAD_VEHICLE_MIGHTYMOVER_MAIL_TRUCK :Truk Dokumen MightyMover
STR_VEHICLE_NAME_ROAD_VEHICLE_POWERNAUGHT_MAIL_TRUCK :Truk Dokumen Powernaught
STR_VEHICLE_NAME_ROAD_VEHICLE_WIZZOWOW_MAIL_TRUCK :Truk Dokumen Wizzowow
STR_VEHICLE_NAME_ROAD_VEHICLE_WITCOMBE_OIL_TANKER :Truk Tangki minyak Witcombe
STR_VEHICLE_NAME_ROAD_VEHICLE_FOSTER_OIL_TANKER :Truk Tangki minyak Foster
STR_VEHICLE_NAME_ROAD_VEHICLE_PERRY_OIL_TANKER :Truk Tangki minyak Perry
@@ -4711,7 +4708,7 @@ STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Ferry Penumpang
STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Ferry Penumpang Shivershake
STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Kapal Kargo Yate
STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Kapal Kargo Bakewell
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Kapal Barang MightyMover
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :Kapal Kargo MightyMover
STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Kapal Kargo Powernaught
STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52
STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count
+1 -1
View File
@@ -2201,7 +2201,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Talamh faoi úi
STR_ABOUT_OPENTTD :{WHITE}Maidir le OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Cóipcheart bunaidh {COPYRIGHT} 1995 Chris Sawyer, Gach ceart ar cosaint
STR_ABOUT_VERSION :{BLACK}OpenTTD leagan {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 An fhoireann OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 An fhoireann OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sábháil an Cluiche
+1 -1
View File
@@ -2673,7 +2673,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreno possedu
STR_ABOUT_OPENTTD :{WHITE}Informazioni su OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright originale {COPYRIGHT} 1995 Chris Sawyer, Tutti i diritti riservati
STR_ABOUT_VERSION :{BLACK}OpenTTD versione {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 Il team OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 Il team OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salva partita
+1 -1
View File
@@ -2643,7 +2643,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :社有地
STR_ABOUT_OPENTTD :{WHITE}OpenTTDについて
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}オリジナル版権{COPYRIGHT} 1995 Chris Sawyer All rights reserved
STR_ABOUT_VERSION :{BLACK}OpenTTD バージョン {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 The OpenTTD team
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}ゲームを保存
+94 -94
View File
@@ -319,7 +319,7 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}그래
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}회사의 성취도 순위를 표시합니다.
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}새 산업시설에 투자하거나 산업시설의 목록을 표시합니다.
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_TRAINS :{BLACK}각 회사의 열차 목록을 표시합니다. Ctrl+클릭하면 그룹화된 창은 일반 창으로, 일반 창은 그룹화된 창으로 표시됩니다.
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}각 회사의 차 목록을 표시합니다. Ctrl+클릭하면 그룹화된 창은 일반 창으로, 일반 창은 그룹화된 창으로 표시됩니다.
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_ROAD_VEHICLES :{BLACK}각 회사의 자동차 목록을 표시합니다. Ctrl+클릭하면 그룹화된 창은 일반 창으로, 일반 창은 그룹화된 창으로 표시됩니다.
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_SHIPS :{BLACK}각 회사의 선박 목록을 표시합니다. Ctrl+클릭하면 그룹화된 창은 일반 창으로, 일반 창은 그룹화된 창으로 표시됩니다.
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_AIRCRAFT :{BLACK}각 회사의 항공기 목록을 표시합니다. Ctrl+클릭하면 그룹화된 창은 일반 창으로, 일반 창은 그룹화된 창으로 표시됩니다.
STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}화면을 확대합니다.
@@ -595,7 +595,7 @@ STR_PERFORMANCE_DETAIL_MONEY :{BLACK}재정:
STR_PERFORMANCE_DETAIL_LOAN :{BLACK}대출:
STR_PERFORMANCE_DETAIL_TOTAL :{BLACK}종합:
############ End of order list
STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}작년에 수익을 낸 차량의 수를 나타냅니다. 자동차/전차, 열차, 선박, 항공기를 포함합니다.
STR_PERFORMANCE_DETAIL_VEHICLES_TOOLTIP :{BLACK}작년에 수익을 낸 차량의 수를 나타냅니다. 자동차, 열차, 선박, 항공기를 포함합니다.
STR_PERFORMANCE_DETAIL_STATIONS_TOOLTIP :{BLACK}현재 영업 중인 역사의 수를 나타냅니다. 기차역, 버스 정류장, 공항 등은 같은 역으로 묶여있어도 따로 집계됩니다.
STR_PERFORMANCE_DETAIL_MIN_PROFIT_TOOLTIP :{BLACK}가장 낮은 수입을 가진 차량의 이익입니다. (2년 이상된 차량만 계산)
STR_PERFORMANCE_DETAIL_MIN_INCOME_TOOLTIP :{BLACK}지난 12분기동안 최소 이익을 달성한 차량이 번 돈의 양입니다.
@@ -682,7 +682,7 @@ STR_SMALLMAP_TYPE_OWNERS :소유주
STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}높이에 따라 땅을 다른 색으로 표시합니다.
STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}차량을 지도에 표시합니다.
STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}산업시설을 지도에 표시합니다.
STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}지도에 화물 흐름을 표시합니다.
STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}지도에 화물 흐름을 표시
STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}수송 기반시설과 경로를 지도에 표시합니다.
STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}초목을 지도에 표시합니다.
STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}부지의 소유주를 지도에 표시합니다.
@@ -696,7 +696,7 @@ STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS :{TINY_FONT}{BLA
STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES :{TINY_FONT}{BLACK}건물/산업시설
STR_SMALLMAP_LEGENDA_VEHICLES :{TINY_FONT}{BLACK}차량
STR_SMALLMAP_LEGENDA_TRAINS :{TINY_FONT}{BLACK}열차
STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}자동차/전차
STR_SMALLMAP_LEGENDA_ROAD_VEHICLES :{TINY_FONT}{BLACK}자동차
STR_SMALLMAP_LEGENDA_SHIPS :{TINY_FONT}{BLACK}선박
STR_SMALLMAP_LEGENDA_AIRCRAFT :{TINY_FONT}{BLACK}항공기
STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES :{TINY_FONT}{BLACK}운송 경로
@@ -760,13 +760,13 @@ STR_NEWS_FIRST_SHIP_ARRIVAL :{BIG_FONT}{BLAC
STR_NEWS_FIRST_AIRCRAFT_ARRIVAL :{BIG_FONT}{BLACK}시민들이 축하하고 있습니다 . . .{}{STATION}에 처음으로 항공기가 도착했습니다!
STR_NEWS_TRAIN_CRASH :{BIG_FONT}{BLACK}열차 충돌 사고!{}충돌로 인한 폭발로 {COMMA}명의 사망자가 발생하였습니다!
STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}차 충돌!{}열차와의 충돌로 인해 운전가 사망했습니다!
STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}차 충돌!{}열차와의 충돌로 {COMMA}명이 사망했습니다!
STR_NEWS_ROAD_VEHICLE_CRASH_DRIVER :{BIG_FONT}{BLACK}자동차 충돌!{}열차와의 충돌로 운전가 사망했습니다!
STR_NEWS_ROAD_VEHICLE_CRASH :{BIG_FONT}{BLACK}자동차 충돌!{}열차와의 충돌로 {COMMA}명이 사망했습니다!
STR_NEWS_AIRCRAFT_CRASH :{BIG_FONT}{BLACK}항공기 충돌사고 발생!{}{COMMA}명이 {STATION}공항에서 사망하였습니다!
STR_NEWS_PLANE_CRASH_OUT_OF_FUEL :{BIG_FONT}{BLACK}항공기 추락사고 발생!{}연료 부족으로 인하여 {COMMA}명이 사망하였습니다!
STR_NEWS_DISASTER_ZEPPELIN :{BIG_FONT}{BLACK}{STATION}에서 체펠린이 추락했습니다!
STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}'UFO'의 폭격으로 차량이 파괴되었습니다!
STR_NEWS_DISASTER_SMALL_UFO :{BIG_FONT}{BLACK}UFO의 폭격으로 자동차가 파괴되었습니다!
STR_NEWS_DISASTER_AIRPLANE_OIL_REFINERY :{BIG_FONT}{BLACK}{TOWN} 근처의 정유 공장에서 폭발 사고가 발생하였습니다!
STR_NEWS_DISASTER_HELICOPTER_FACTORY :{BIG_FONT}{BLACK}{TOWN} 근처의 공장이 의심스러운 정황으로 인해 파괴되었습니다!
STR_NEWS_DISASTER_BIG_UFO :{BIG_FONT}{BLACK}UFO가 {TOWN} 근처에 착륙했습니다!
@@ -1141,13 +1141,13 @@ STR_CONFIG_SETTING_SMOKE_AMOUNT :차량의 매
STR_CONFIG_SETTING_SMOKE_AMOUNT_HELPTEXT :차량에서 연기나 전기 스파크가 얼마나 많이 일어나는지 설정합니다.
STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL :열차 가속 모델: {STRING}
STR_CONFIG_SETTING_TRAIN_ACCELERATION_MODEL_HELPTEXT :열차 가속 물리 모델을 선택하십시오. "오리지널" 모델은 언덕을 오를 때 무조건 속력이 감소합니다. "현실적" 모델은 열차의 길이나 기관차의 견인력 등의 구성 속성에 따라 언덕과 커브에서 속력이 감소합니다.
STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :자동차/전차 가속 모델: {STRING}
STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :자동차/전차의 가속 물리 모델을 선택하십시오. "오리지널" 모델은 언덕을 오를 때 무조건 속력이 감소합니다. "현실적" 모델은 차량의 견인력 등 차량의 다양한 속성에 따라 언덕을 오를 때 속력이 감소합니다.
STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL :자동차 가속 모델: {STRING}
STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :자동차 가속 물리 모델을 선택하십시오. "오리지널" 모델은 언덕을 오를 때 무조건 속력이 감소합니다. "현실적" 모델은 차량의 견인력 등 차량의 다양한 속성에 따라 언덕을 오를 때 속력이 감소합니다.
STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS :경사도 설정 (열차용): {STRING}
STR_CONFIG_SETTING_TRAIN_SLOPE_STEEPNESS_HELPTEXT :열차에 적용시킬 경사도를 설정합니다. 값이 높을수록 열차가 언덕을 올라가는데 더 힘이 듭니다.
STR_CONFIG_SETTING_PERCENTAGE :{COMMA}%
STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :경사도 설정 (자동차/전차용): {STRING}
STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :자동차/전차에 적용시킬 경사도를 설정합니다. 값이 높을수록 차량이 언덕을 오를 때 더 힘이 듭니다.
STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :경사도 설정 (자동차용): {STRING}
STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :자동차에 적용시킬 경사도를 설정합니다. 값이 높을수록 자동차가 언덕을 오를 때 더 힘이 듭니다.
STR_CONFIG_SETTING_FORBID_90_DEG :열차/선박의 90도 회전을 금지함: {STRING}
STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :─ 모양의 수평 선로와 │ 모양의 수직 선로가 바로 이어져 만날 때 90도 회전이 발생합니다. 이 옵션을 켜면 열차가 칸 가장자리를 통과할 때 90도로 회전할 수 있도록 허용합니다. 이 옵션은 선박의 회전 반경에도 적용됩니다.
STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :역이 같은 방향으로 붙어있지 않아도 같은 이름의 역 짓기 허용: {STRING}
@@ -1187,8 +1187,8 @@ STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :열차가 기
STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :가까운쪽
STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :중간
STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :먼쪽
STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :정류장/적치장이 빌 때까지 앞에서 차량을 대기시킴: {STRING}
STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :자동차가 정류장이나 적치장이 빌 때까지 그 앞쪽에서 기다리도록 합니다.
STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :정장이 빌 때까지 앞에서 자동차를 대기시킴: {STRING}
STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :자동차가 차량 정거장이 빌 때까지 그 앞쪽에서 기다리도록 합니다.
STR_CONFIG_SETTING_AUTOSCROLL :가장자리에 마우스를 가져가면 화면 움직이기: {STRING}
STR_CONFIG_SETTING_AUTOSCROLL_HELPTEXT :이 옵션을 켜면, 마우스를 게임 및 외부 화면 창의 가장자리에 가까이 가져가면 화면을 이동시킵니다.
STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :사용 안 함
@@ -1208,7 +1208,7 @@ STR_CONFIG_SETTING_ALLOW_GIVE_MONEY_HELPTEXT :멀티 플레
STR_CONFIG_SETTING_FREIGHT_TRAINS :화물 무게가중치 (무거운 열차를 구현할 때 사용): {STRING}배
STR_CONFIG_SETTING_FREIGHT_TRAINS_HELPTEXT :열차가 싣고 있는 화물이 열차 속력에 미치는 영향에 대해 설정합니다. 값을 높게 설정하면 화물을 수송하는데 더 큰 힘이 필요합니다. (특히 언덕을 오를 때 심해집니다)
STR_CONFIG_SETTING_PLANE_SPEED :항공기 속력 조절: {STRING}
STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :항공 수송에 대한 수익을 제한하기 위해, 다른 운송 수단의 속력을 1로 보았을 때의 항공기의 속력 비율을 설정합니다.
STR_CONFIG_SETTING_PLANE_SPEED_HELPTEXT :항공 수송에 대한 수익을 제한하기 위해, 자동차/철도/선박의 속력에 대한 항공기의 속력 비율을 설정합니다.
STR_CONFIG_SETTING_PLANE_SPEED_VALUE :(실제 속력) x {COMMA}분의 1
STR_CONFIG_SETTING_PLANE_CRASHES :항공기 추락 빈도수: {STRING}
STR_CONFIG_SETTING_PLANE_CRASHES_HELPTEXT :항공기 충돌 사고가 일어날 수 있는지 여부를 설정합니다.
@@ -1394,8 +1394,8 @@ STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING :사용 가능
STR_CONFIG_SETTING_DISABLE_UNSUITABLE_BUILDING_HELPTEXT :이 옵션을 켜면, 불필요하게 시간과 돈을 낭비하지 않도록 차량이 존재하지 않는 기반시설을 설치할 수 없게 됩니다.
STR_CONFIG_SETTING_MAX_TRAINS :최대 열차 수: {STRING}
STR_CONFIG_SETTING_MAX_TRAINS_HELPTEXT :한 회사가 소유할 수 있는 열차의 최대 수를 제한합니다.
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :최대 자동차/전차 수: {STRING}
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :한 회사가 소유할 수 있는 자동차/전차의 최대 수를 제한합니다.
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES :최대 자동차 수: {STRING}
STR_CONFIG_SETTING_MAX_ROAD_VEHICLES_HELPTEXT :한 회사가 소유할 수 있는 자동차의 최대 수를 제한합니다.
STR_CONFIG_SETTING_MAX_AIRCRAFT :최대 항공기 수: {STRING}
STR_CONFIG_SETTING_MAX_AIRCRAFT_HELPTEXT :한 회사가 소유할 수 있는 항공기의 최대 수를 제한합니다.
STR_CONFIG_SETTING_MAX_SHIPS :최대 선박 수: {STRING}
@@ -1403,8 +1403,8 @@ STR_CONFIG_SETTING_MAX_SHIPS_HELPTEXT :한 회사가
STR_CONFIG_SETTING_AI_BUILDS_TRAINS :컴퓨터의 철도 사용을 허가하지 않음: {STRING}
STR_CONFIG_SETTING_AI_BUILDS_TRAINS_HELPTEXT :이 옵션을 켜면 컴퓨터 플레이어가 철도를 사용할 수 없게 됩니다.
STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :컴퓨터의 자동차/전차 사용을 허가하지 않음: {STRING}
STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :이 옵션을 켜면 컴퓨터 플레이어가 자동차나 전차를 사용할 수 없게 됩니다.
STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES :컴퓨터의 자동차 사용을 허가하지 않음: {STRING}
STR_CONFIG_SETTING_AI_BUILDS_ROAD_VEHICLES_HELPTEXT :이 옵션을 켜면 컴퓨터 플레이어가 자동차를 사용할 수 없게 됩니다.
STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT :컴퓨터의 항공기 사용을 허가하지 않음: {STRING}
STR_CONFIG_SETTING_AI_BUILDS_AIRCRAFT_HELPTEXT :이 옵션을 켜면 컴퓨터 플레이어가 항공기를 사용할 수 없게 됩니다.
STR_CONFIG_SETTING_AI_BUILDS_SHIPS :컴퓨터의 선박 사용을 허가하지 않음: {STRING}
@@ -1427,8 +1427,8 @@ STR_CONFIG_SETTING_SERVINT_TRAINS :열차에 대
STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :열차에 따로 점검 기간이 설정되어있지 않은 경우에 사용할 기본 점검 기간을 설정합니다.
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA} 일/%
STR_CONFIG_SETTING_SERVINT_DISABLED :사용 안 함
STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :차에 대한 기본 점검 기준: {STRING}
STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :자동차/전차에 따로 점검 기간 설정지 않은 경우에 사용할 기본 점검 기간을 설정합니다.
STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :자동차에 대한 기본 점검 기준: {STRING}
STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :자동차에 따로 점검 기간 설정되어있지 않은 경우에 사용할 기본 점검 기간을 설정합니다.
STR_CONFIG_SETTING_SERVINT_AIRCRAFT :항공기에 대한 기본 점검 기준: {STRING}
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :항공기에 따로 점검 기간이 설정되어있지 않은 경우에 사용할 기본 점검 기간을 설정합니다.
STR_CONFIG_SETTING_SERVINT_SHIPS :선박에 대한 기본 점검 기준: {STRING}
@@ -1655,8 +1655,8 @@ STR_CONFIG_SETTING_PATHFINDER_YAPF_RECOMMENDED :YAPF {BLUE}(추
STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS :열차에 사용할 경로 탐색법: {STRING}
STR_CONFIG_SETTING_PATHFINDER_FOR_TRAINS_HELPTEXT :열차에 사용할 경로 탐색 방법을 선택합니다.
STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :자동차/전차에 사용할 경로 탐색법: {STRING}
STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :자동차/전차에 사용할 경로 탐색 방법을 선택합니다.
STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES :자동차에 사용할 경로 탐색법: {STRING}
STR_CONFIG_SETTING_PATHFINDER_FOR_ROAD_VEHICLES_HELPTEXT :자동차에 사용할 경로 탐색 방법을 선택합니다.
STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS :선박에 사용할 경로 탐색법: {STRING}
STR_CONFIG_SETTING_PATHFINDER_FOR_SHIPS_HELPTEXT :선박에 사용할 경로 탐색 방법을 선택합니다.
STR_CONFIG_SETTING_REVERSE_AT_SIGNALS :신호기 앞에서 회차: {STRING}
@@ -1767,14 +1767,14 @@ STR_CHEAT_SETUP_PROD :{LTBLUE}산업
# Livery window
STR_LIVERY_CAPTION :{WHITE}새 색상
STR_LIVERY_GENERAL_TOOLTIP :{BLACK}기본 색상 선택
STR_LIVERY_GENERAL_TOOLTIP :{BLACK}일반 색상 선택
STR_LIVERY_TRAIN_TOOLTIP :{BLACK}열차 색상 선택
STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}자동차/전차 색상 선택
STR_LIVERY_ROAD_VEHICLE_TOOLTIP :{BLACK}자동차 색상 선택
STR_LIVERY_SHIP_TOOLTIP :{BLACK}선박 색상 선택
STR_LIVERY_AIRCRAFT_TOOLTIP :{BLACK}항공기 색상 선택
STR_LIVERY_PRIMARY_TOOLTIP :{BLACK}선택한 색상을 1차 색상으로 선택합니다. Ctrl+클릭하면 모든 항목에 적용됩니다.
STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}선택한 색상을 2차 색상으로 선택합니다. Ctrl+클릭하면 모든 항목에 적용됩니다.
STR_LIVERY_PANEL_TOOLTIP :{BLACK}색상 조합을 바꾸려면 선택하세요. 2개 이상 선택하려면 CTRL+클릭하세요. 네모를 클릭하여 체크하면 해당 색상 조합을 사용하게 됩니다.
STR_LIVERY_PANEL_TOOLTIP :{BLACK}색상 스키마 변경을 원하시면 선택하세요. (2개 이상 선택 CTRL+클릭). 박스를 클릭하여 스키마를 전환합니다.
STR_LIVERY_DEFAULT :기본 색상
STR_LIVERY_STEAM :{G=f}증기 기관차
@@ -1806,15 +1806,15 @@ STR_FACE_CANCEL_TOOLTIP :{BLACK}새 얼
STR_FACE_OK_TOOLTIP :{BLACK}이 얼굴을 선택합니다.
STR_FACE_MALE_BUTTON :{BLACK}남성
STR_FACE_MALE_TOOLTIP :{BLACK}남성 얼굴 선택
STR_FACE_MALE_TOOLTIP :{BLACK}남성 얼굴 선택합니다.
STR_FACE_FEMALE_BUTTON :{BLACK}여성
STR_FACE_FEMALE_TOOLTIP :{BLACK}여성 얼굴 선택
STR_FACE_FEMALE_TOOLTIP :{BLACK}여성 얼굴 선택합니다.
STR_FACE_NEW_FACE_BUTTON :{BLACK}새 얼굴
STR_FACE_NEW_FACE_TOOLTIP :{BLACK}얼굴을 만듭니다.
STR_FACE_ADVANCED :{BLACK}고급
STR_FACE_ADVANCED_TOOLTIP :{BLACK}고급 얼굴 선택 모드로 전환
STR_FACE_ADVANCED_TOOLTIP :{BLACK}고급 얼굴 선택
STR_FACE_SIMPLE :{BLACK}간단
STR_FACE_SIMPLE_TOOLTIP :{BLACK}간 얼굴 선택 모드로 전환
STR_FACE_SIMPLE_TOOLTIP :{BLACK}간단한 얼굴 선택
STR_FACE_LOAD :{BLACK}불러오기
STR_FACE_LOAD_TOOLTIP :{BLACK}즐겨찾는 얼굴 불러오기
STR_FACE_LOAD_DONE :{WHITE}당신이 즐겨찾는 얼굴을 OpenTTD 설정 파일로부터 불러왔습니다.
@@ -2173,9 +2173,9 @@ STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}다운
STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}선택한 콘텐츠의 다운로드를 시작합니다.
STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER}다운로드 할 파일의 총 용량: {WHITE}{BYTES}
STR_CONTENT_DETAIL_TITLE :{SILVER}콘텐츠 정보
STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}이 콘텐츠를 선택하지 않았습니다.
STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}이 콘텐츠를 다운로드하기 위해 선택하였습니다.
STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}이 콘텐츠는 다른 콘텐츠에서 필요하므로 자동 선택되었습니다.
STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}이 콘텐츠를 선택하지 않았습니다. (다운로드 안 함)
STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}이 콘텐츠를 선택하였습니다. (다운로드함)
STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}이것은 다른 콘텐츠에 종속되어 자동선택되었습니다
STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}이미 가지고 있는 콘텐츠입니다.
STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}이 콘텐츠는 알려지지 않은 콘텐츠이고 OpenTTD 게임 상에서 받을 수 없는 것입니다
STR_CONTENT_DETAIL_UPDATE :{SILVER}이 콘텐츠는 기존에 존재하던 {STRING}{G 0 "을" "를"} 업데이트합니다.
@@ -2185,8 +2185,8 @@ STR_CONTENT_DETAIL_DESCRIPTION :{SILVER}설명:
STR_CONTENT_DETAIL_URL :{SILVER}주소: {WHITE}{STRING}
STR_CONTENT_DETAIL_TYPE :{SILVER}종류: {WHITE}{STRING}
STR_CONTENT_DETAIL_FILESIZE :{SILVER}파일 크기: {WHITE}{BYTES}
STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{WHITE}{STRING}{SILVER} 때문에 선택됨
STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}필요한 요소: {WHITE}{STRING}
STR_CONTENT_DETAIL_SELECTED_BECAUSE_OF :{SILVER}다음에 종속됨: {WHITE}{STRING}
STR_CONTENT_DETAIL_DEPENDENCIES :{SILVER}종속: {WHITE}{STRING}
STR_CONTENT_DETAIL_TAGS :{SILVER}태그: {WHITE}{STRING}
STR_CONTENT_NO_ZLIB :{WHITE}OpenTTD가 "zlib" 지원 기능을 포함하지 않고 만들어졌습니다...
STR_CONTENT_NO_ZLIB_SUB :{WHITE}... 콘텐츠 다운로드가 불가능합니다!
@@ -2644,7 +2644,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :회사 소유
STR_ABOUT_OPENTTD :{WHITE}OpenTTD에 대해서
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
STR_ABOUT_VERSION :{BLACK}OpenTTD 버전 {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD 개발팀
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD 개발팀
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}게임 저장
@@ -2903,7 +2903,7 @@ STR_NEWGRF_SCAN_ARCHIVES :자료 검색
# Sign list window
STR_SIGN_LIST_CAPTION :{WHITE}팻말 목록 - 팻말 {COMMA}개
STR_SIGN_LIST_MATCH_CASE :{BLACK}대소문자 구분
STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}팻말의 이름을 비교할 때 검색 문자열의 대소문자 구분할지 여부를 선택합니다.
STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}팻말의 이름을 비교할 때 검색 문자열의 대소문자 구분 여부를 선택합니다
# Sign window
STR_EDIT_SIGN_CAPTION :{WHITE}팻말 내용 고치기
@@ -2938,7 +2938,7 @@ STR_TOWN_VIEW_NOISE_IN_TOWN :{BLACK}현재
STR_TOWN_VIEW_CENTER_TOOLTIP :{BLACK}이 도시의 위치로 시점을 변경합니다. Ctrl+클릭하면 이 도시 위치를 기준으로 새로운 외부 화면을 엽니다.
STR_TOWN_VIEW_LOCAL_AUTHORITY_BUTTON :{BLACK}지역 당국
STR_TOWN_VIEW_LOCAL_AUTHORITY_TOOLTIP :{BLACK}지역 당국의 정보를 보여줍니다.
STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}도시 이름을 변경합니다.
STR_TOWN_VIEW_RENAME_TOOLTIP :{BLACK}도시 이름을 변경합니다.
STR_TOWN_VIEW_EXPAND_BUTTON :{BLACK}확장
STR_TOWN_VIEW_EXPAND_TOOLTIP :{BLACK}도시의 크기를 키웁니다.
@@ -3069,8 +3069,8 @@ STR_STATION_VIEW_WAITING_AMOUNT :양: 대기
STR_STATION_VIEW_PLANNED_STATION :역: 계획
STR_STATION_VIEW_PLANNED_AMOUNT :양: 계획
STR_STATION_VIEW_FROM :{YELLOW}{1:STATION}에서 출발한 {0:CARGO_SHORT}
STR_STATION_VIEW_VIA :{YELLOW}{1:STATION}(을)를 경유하는 {0:CARGO_SHORT}
STR_STATION_VIEW_TO :{YELLOW}{1:STATION}(으)로 가는 {0:CARGO_SHORT}
STR_STATION_VIEW_VIA :{YELLOW}{1:STATION} 역을 경유하는 {0:CARGO_SHORT}
STR_STATION_VIEW_TO :{YELLOW}{1:STATION} 역으로 가는 {0:CARGO_SHORT}
STR_STATION_VIEW_FROM_ANY :{RED}알 수 없는 역에서 출발한 {CARGO_SHORT}
STR_STATION_VIEW_TO_ANY :{RED}아무 역에나 도착하는 {CARGO_SHORT}
STR_STATION_VIEW_VIA_ANY :{RED}어디든 경유하는 {CARGO_SHORT}
@@ -3098,14 +3098,14 @@ STR_CARGO_RATING_OUTSTANDING :매우 훌륭
############ range for rating ends
STR_STATION_VIEW_CENTER_TOOLTIP :{BLACK}이 역의 위치로 시점을 변경합니다. Ctrl+클릭하면 이 역 위치를 기준으로 새로운 외부 화면을 엽니다.
STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK}이 역의 이름 변경합니다.
STR_STATION_VIEW_RENAME_TOOLTIP :{BLACK} 이름 변경
STR_STATION_VIEW_SCHEDULED_TRAINS_TOOLTIP :{BLACK}이 역을 거쳐가는 모든 열차를 표시합니다
STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}이 역을 거쳐가는 모든 자동차/전차를 보여줍니다.
STR_STATION_VIEW_SCHEDULED_ROAD_VEHICLES_TOOLTIP :{BLACK}이 역을 거쳐가는 모든 자동차를 표시합니다
STR_STATION_VIEW_SCHEDULED_AIRCRAFT_TOOLTIP :{BLACK}이 역을 거쳐가는 모든 항공기를 표시합니다
STR_STATION_VIEW_SCHEDULED_SHIPS_TOOLTIP :{BLACK}이 역을 거쳐가는 모든 선박을 표시합니다
STR_STATION_VIEW_RENAME_STATION_CAPTION :이 역의 이름 변경합니다.
STR_STATION_VIEW_RENAME_STATION_CAPTION : 이름 변경
STR_STATION_VIEW_CLOSE_AIRPORT :{BLACK}공항 폐쇄
STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}이 공항에 항공기가 착륙하는 것을 금지합니다.
@@ -3113,7 +3113,7 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}이 공
# Waypoint/buoy view window
STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}이 경유지의 위치로 시점을 변경합니다. Ctrl+클릭하면 이 경유지 위치를 기준으로 새로운 외부 화면을 엽니다.
STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}경유지 이름 변경합니다.
STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}경유지 이름 변경
STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}이 부표의 위치로 시점을 변경합니다. Ctrl+클릭하면 이 부표 위치를 기준으로 새로운 외부화면을 엽니다.
STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}부표 이름 바꾸기
@@ -3126,12 +3126,12 @@ STR_FINANCES_YEAR :{WHITE}{NUM}
STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}건설
STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}신규 차량 구입
STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}열차 유지비
STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}자동차/전차 유지비
STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}자동차 유지비
STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}항공기 유지비
STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}선박 유지비
STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}유지보수비
STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}열차 수익
STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}차 수익
STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}자동차 수익
STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}항공기 수익
STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}선박 수익
STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}이자
@@ -3157,7 +3157,7 @@ STR_COMPANY_VIEW_INAUGURATED_TITLE :{GOLD}설립: {
STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE :{GOLD}색상:
STR_COMPANY_VIEW_VEHICLES_TITLE :{GOLD}차량:
STR_COMPANY_VIEW_TRAINS :{WHITE}열차 {COMMA}대
STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}차 {COMMA}대
STR_COMPANY_VIEW_ROAD_VEHICLES :{WHITE}자동차 {COMMA}대
STR_COMPANY_VIEW_AIRCRAFT :{WHITE}항공기 {COMMA}대
STR_COMPANY_VIEW_SHIPS :{WHITE}선박 {COMMA}대
STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}없음
@@ -3247,19 +3247,19 @@ STR_CONFIG_GAME_PRODUCTION_LEVEL :{WHITE}생산
# Vehicle lists
STR_VEHICLE_LIST_TRAIN_CAPTION :{WHITE}{STRING} - {COMMA}대의 열차
STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA}대의 차
STR_VEHICLE_LIST_ROAD_VEHICLE_CAPTION :{WHITE}{STRING} - {COMMA}대의 자동
STR_VEHICLE_LIST_SHIP_CAPTION :{WHITE}{STRING} - {COMMA}대의 선박
STR_VEHICLE_LIST_AIRCRAFT_CAPTION :{WHITE}{STRING} - {COMMA}대의 항공기
STR_VEHICLE_LIST_TRAIN_LIST_TOOLTIP :{BLACK}열차 - 열차 정보를 보려면 클릭
STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}차 - 자세히 보려면 클릭
STR_VEHICLE_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}자동차 - 자세히 보려면 클릭
STR_VEHICLE_LIST_SHIP_TOOLTIP :{BLACK}선박 - 선박의 정보를 보려면 클릭하세요.
STR_VEHICLE_LIST_AIRCRAFT_TOOLTIP :{BLACK}항공기 - 항공기 정보를 보려면 클릭하세요.
STR_VEHICLE_LIST_PROFIT_THIS_YEAR_LAST_YEAR :{TINY_FONT}{BLACK}올해 수입: {CURRENCY_LONG} (작년: {CURRENCY_LONG})
STR_VEHICLE_LIST_AVAILABLE_TRAINS :사용 가능 열차
STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :사용 가능한 차량
STR_VEHICLE_LIST_AVAILABLE_ROAD_VEHICLES :사용 가능 자동차
STR_VEHICLE_LIST_AVAILABLE_SHIPS :사용 가능 선박
STR_VEHICLE_LIST_AVAILABLE_AIRCRAFT :사용 가능 항공기
STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}이 차량 타입에 사용할 수 있는 기관차의 목록 보기
@@ -3308,7 +3308,7 @@ STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :새 모노레
STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :새 자기부상열차
STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :새 열차
STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :새 차
STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :새 자동
STR_BUY_VEHICLE_SHIP_CAPTION :새 선박
STR_BUY_VEHICLE_AIRCRAFT_CAPTION :새 항공기
@@ -3334,7 +3334,7 @@ STR_PURCHASE_INFO_MAX_TE :{BLACK}최고
STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}항속거리: {GOLD}{COMMA} 칸
STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}열차 선택 목록 - 차량 정보를 보려면 클릭
STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}차량 목록 - 차량 정보를 보려면 클릭
STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}자동차 선택 목록 - 차량 정보를 보려면 클릭
STR_BUY_VEHICLE_SHIP_LIST_TOOLTIP :{BLACK}선박 선택 목록 - 선박의 정보를 보려면 클릭하세요
STR_BUY_VEHICLE_AIRCRAFT_LIST_TOOLTIP :{BLACK}항공기 선택 목록 - 항공기 정보를 보려면 클릭하세요
@@ -3344,7 +3344,7 @@ STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}선박
STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}항공기 구입
STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}선택된 차량을 구입합니다. SHIFT+클릭으로 예상 구입 가격을 볼 수 있습니다.
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}선택한 차량을 구입합니다. Shift+클릭하면 예상 구입 비용을 볼 수 있습니다.
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}선택한 자동차를 구입합니다. SHIFT+클릭으로 예상 구입 비용을 볼 수 있습니다.
STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}선택한 선박을 구입합니다. SHIFT+클릭으로 예상 구입 비용을 볼 수 있습니다.
STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}선택한 항공기를 구입합니다. SHIFT+클릭으로 예상 구입 비용을 볼 수 있습니다.
@@ -3354,12 +3354,12 @@ STR_BUY_VEHICLE_SHIP_RENAME_BUTTON :{BLACK}이름
STR_BUY_VEHICLE_AIRCRAFT_RENAME_BUTTON :{BLACK}이름 지정
STR_BUY_VEHICLE_TRAIN_RENAME_TOOLTIP :{BLACK}열차의 차량 이름을 변경합니다.
STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}차량의 차종명을 변경합니다.
STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK}자동차의 차량 이름을 변경합니다.
STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}선박의 차량 이름을 변경합니다.
STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}항공기의 차량 이름을 변경합니다.
STR_QUERY_RENAME_TRAIN_TYPE_CAPTION :{WHITE}열차의 차량 이름을 변경합니다.
STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}차종명을 변경합니다.
STR_QUERY_RENAME_ROAD_VEHICLE_TYPE_CAPTION :{WHITE}자동차의 차량 이름을 변경합니다.
STR_QUERY_RENAME_SHIP_TYPE_CAPTION :{WHITE}선박의 차량 이름을 변경합니다.
STR_QUERY_RENAME_AIRCRAFT_TYPE_CAPTION :{WHITE}항공기의 차량 이름을 변경합니다.
@@ -3375,24 +3375,24 @@ STR_DEPOT_VEHICLE_TOOLTIP_CHAIN :{BLACK}{NUM}
STR_DEPOT_VEHICLE_TOOLTIP_CARGO :{}{CARGO_LONG} ({CARGO_SHORT})
STR_DEPOT_TRAIN_LIST_TOOLTIP :{BLACK}열차 - 열차에 차량을 추가하거나 제거하려면 차량을 왼쪽 클릭으로 드래그하시고, 열차 정보를 보려면 오른쪽 클릭하십시오. 두 기능을 해당 차량 뒤에 딸려오는 차량에 적용하고 싶다면 Ctrl키를 누르고 계십시오.
STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}차량을 오른쪽 클릭하면 해당 차량의 간단한 정보를 볼 수 있습니다.
STR_DEPOT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}자동차 - 자동차의 정보를 보려면 오른쪽 클릭하세요.
STR_DEPOT_SHIP_LIST_TOOLTIP :{BLACK}선박 - 선박의 정보를 보려면 오른쪽 클릭하세요.
STR_DEPOT_AIRCRAFT_LIST_TOOLTIP :{BLACK}항공기 - 항공기의 정보를 보려면 오른쪽 클릭하세요.
STR_DEPOT_TRAIN_SELL_TOOLTIP :{BLACK}기관차/객차/화물차 한량만 제거하려면 여기로 드래그하세요
STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}차량을 팔려면 여기로 드래그하세요.
STR_DEPOT_ROAD_VEHICLE_SELL_TOOLTIP :{BLACK}자동차를 팔려면 여기로 드래그하세요.
STR_DEPOT_SHIP_SELL_TOOLTIP :{BLACK}선박을 팔려면 여기로 드래그하세요.
STR_DEPOT_AIRCRAFT_SELL_TOOLTIP :{BLACK}항공기를 팔려면 여기로 드래그하세요.
STR_DEPOT_DRAG_WHOLE_TRAIN_TO_SELL_TOOLTIP :{BLACK}열차 전체를 팔려면 기관차를 여기로 드래그하세요
STR_DEPOT_SELL_ALL_BUTTON_TRAIN_TOOLTIP :{BLACK}이 차량기지에 있는 모든 열차를 팝니다.
STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}이 차지에 있는 모든 차량을 팝니다.
STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}이 정박소에 있는 모든 선박을 팝니다.
STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}이 격납고에 있는 모든 항공기를 팝니다.
STR_DEPOT_SELL_ALL_BUTTON_ROAD_VEHICLE_TOOLTIP :{BLACK}이 차량기지에 있는 모든 자동차를 팝니다.
STR_DEPOT_SELL_ALL_BUTTON_SHIP_TOOLTIP :{BLACK}이 차량기지에 있는 모든 선박을 팝니다.
STR_DEPOT_SELL_ALL_BUTTON_AIRCRAFT_TOOLTIP :{BLACK}이 차량기지에 있는 모든 항공기를 팝니다.
STR_DEPOT_AUTOREPLACE_TRAIN_TOOLTIP :{BLACK}이 차량기지에 있는 모든 열차를 자동으로 교체합니다.
STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}이 차고지에 있는 모든 차량을 자동으로 교체합니다.
STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}이 차고지에 있는 모든 자동차를 자동으로 교체합니다.
STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}이 정박소에 있는 모든 선박을 자동으로 교체합니다.
STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}이 격납고에 있는 모든 항공기를 자동으로 교체합니다.
@@ -3401,10 +3401,10 @@ STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}새 차
STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}새 선박
STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}새 항공기
STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}새 열차 구입합니다.
STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}새 차량을 구입합니다.
STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}새 선박 구입합니다.
STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}새 항공기 구입합니다.
STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}새 열차 구입
STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}새 자동차 구입
STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}새 선박 구입
STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}새 항공기 구입
STR_DEPOT_CLONE_TRAIN :{BLACK}열차 복제
STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}차량 복제
@@ -3412,7 +3412,7 @@ STR_DEPOT_CLONE_SHIP :{BLACK}선박
STR_DEPOT_CLONE_AIRCRAFT :{BLACK}항공기 복제
STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}화물칸을 포함한 열차 전체를 복제합니다. 이 버튼을 클릭하고 차량기지 안이나 밖에 있는 열차를 클릭하십시오. Ctrl+클릭하면 경로를 같이 공유합니다.
STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}차량을 복제합니다. 이 버튼을 클릭하고 차고지 안이나 밖에 있는 차량을 클릭하십시오. Ctrl+클릭하면 경로도 함께 공유합니다.
STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}자동차를 복제합니다. 이 버튼을 클릭하고 차고지 안이나 밖에 있는 차량을 클릭하십시오. Ctrl+클릭하면 경로를 같이 공유합니다.
STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}이 선박을 복제합니다. 이 버튼을 누르고 정류소의 안이나 밖에 있는 선박을 클릭하십시오. Ctrl+클릭하면 경로를 같이 공유합니다.
STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}이 항공기를 복제합니다. 격납고 안이나 밖에 있는 항공기를 선택하십시오. Ctrl+클릭하면 경로를 같이 공유합니다.
@@ -3422,17 +3422,17 @@ STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}이 정
STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}이 격납고의 위치로 시점을 이동합니다. Ctrl+클릭하면 이 격납고의 위치를 기준으로 새로운 외부 화면을 엽니다.
STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}이 차량기지를 거쳐가는 모든 열차의 목록을 보여줍니다.
STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}이 차고지를 거쳐가는 모든 차의 목록을 보여줍니다.
STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}이 차고지를 거쳐가는 모든 자동차의 목록을 보여줍니다.
STR_DEPOT_VEHICLE_ORDER_LIST_SHIP_TOOLTIP :{BLACK}이 정박소를 거쳐가는 모든 선박의 목록을 보여줍니다.
STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TOOLTIP :{BLACK}이 격납고를 거쳐가는 모든 항공기의 목록을 보여줍니다.
STR_DEPOT_MASS_STOP_DEPOT_TRAIN_TOOLTIP :{BLACK}이 차량기지 안에 있는 모든 열차의 운행을 중지시킵니다.
STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}이 차고지 안에 있는 모든 차의 운행을 중지시키려면 클릭하세요.
STR_DEPOT_MASS_STOP_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}이 차고지 안에 있는 모든 자동차의 운행을 중지시킵니다.
STR_DEPOT_MASS_STOP_DEPOT_SHIP_TOOLTIP :{BLACK}이 정박소 안에 있는 모든 선박의 운행을 중지시킵니다.
STR_DEPOT_MASS_STOP_HANGAR_TOOLTIP :{BLACK}이 격납고 안에 있는 모든 항공기의 운행을 중지시킵니다.
STR_DEPOT_MASS_START_DEPOT_TRAIN_TOOLTIP :{BLACK}이 차량기지 안에 있는 모든 열차의 운행을 시작합니다.
STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}이 차고지 안에 있는 모든 차의 운행을 시작하려면 클릭하세요.
STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}이 차고지 안에 있는 모든 자동차의 운행을 시작합니다.
STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}이 정박소 안에 있는 모든 선박의 운행을 시작합니다.
STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}이 격납고 안에 있는 모든 항공기의 운행을 시작합니다.
@@ -3442,7 +3442,7 @@ STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}이 안
STR_ENGINE_PREVIEW_CAPTION :{WHITE}차량 개발자로부터의 메시지
STR_ENGINE_PREVIEW_MESSAGE :{GOLD}저희는 이제 막 새로운 {STRING}{G 0 "을" "를"} 개발했습니다. 1년 먼저 이 차량을 사용하셔서 모두에게 공개되기 전에 잘 작동하는지 확인해주시겠습니까?
STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=f}철도 기관차
STR_ENGINE_PREVIEW_ROAD_VEHICLE :자동차/전
STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=f}자동차
STR_ENGINE_PREVIEW_AIRCRAFT :{G=f}항공기
STR_ENGINE_PREVIEW_SHIP :{G=m}선박
STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :{G=f}모노레일 기관차
@@ -3458,7 +3458,7 @@ STR_ENGINE_PREVIEW_COST_MAX_SPEED_RANGE_CAPACITY_RUNCOST :{BLACK}가격:
# Autoreplace window
STR_REPLACE_VEHICLES_WHITE :{WHITE}{STRING} 교체 - {STRING}
STR_REPLACE_VEHICLE_TRAIN :{G=f}열차
STR_REPLACE_VEHICLE_ROAD_VEHICLE :자동차/전
STR_REPLACE_VEHICLE_ROAD_VEHICLE :{G=f}자동차
STR_REPLACE_VEHICLE_SHIP :{G=m}선박
STR_REPLACE_VEHICLE_AIRCRAFT :{G=f}항공기
@@ -3503,17 +3503,17 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}차량
STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}선박을 정박소로 보냅니다. CTRL+클릭하면 점검만 합니다.
STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}항공기를 격납고로 보냅니다. CTRL+클릭하면 점검만 합니다
STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}객차/화차를 포함한 열차 전체를 복제합니다. Ctrl+클릭하면 경로도 함께 공유됩니다.
STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}차량을 복제합니다. Ctrl+클릭하면 경로도 함께 공유됩니다.
STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}선박을 복제합니다. Ctrl+클릭하면 경로도 함께 공유니다.
STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}항공기를 복제합니다. Ctrl+클릭하면 경로도 함께 공유니다.
STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}모든 차량을 포함한 열차 전체를 복제합니다. Ctrl+클릭하면 경로도 같이 공유됩니다.
STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}이 버튼은 이 자동차의 복제를 구입할 것입니다. Ctrl+클릭하면 경로도 같이 공유됩니다.
STR_VEHICLE_VIEW_CLONE_SHIP_INFO :{BLACK}선박을 복제합니다. Ctrl+클릭하면 경로 공유니다.
STR_VEHICLE_VIEW_CLONE_AIRCRAFT_INFO :{BLACK}항공기를 복제합니다. Ctrl+클릭하면 경로를 같이 공유니다.
STR_VEHICLE_VIEW_TRAIN_IGNORE_SIGNAL_TOOLTIP :{BLACK}신호를 무시하고 열차를 진행시킵니다.
STR_VEHICLE_VIEW_TRAIN_REFIT_TOOLTIP :{BLACK}다른 종류의 화물을 실을 수 있도록 열차를 개조
STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}차량이 다른 종류의 화물을 싣을 수 있도록 개조합니다.
STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}이 선박이 다른 종류의 화물을 실을 수 있도록 개조합니다.
STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}이 항공기가 다른 종류의 화물을 실을 수 있도록 개조합니다.
STR_VEHICLE_VIEW_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}자동차가 다른 종류의 화물을 싣도록 개조
STR_VEHICLE_VIEW_SHIP_REFIT_TOOLTIP :{BLACK}이 선박이 다른 종류의 화물을 도록 개조
STR_VEHICLE_VIEW_AIRCRAFT_REFIT_TOOLTIP :{BLACK}이 항공기가 다른 종류의 화물을 도록 개조
STR_VEHICLE_VIEW_TRAIN_REVERSE_TOOLTIP :{BLACK}열차를 회차시킵니다.
STR_VEHICLE_VIEW_ROAD_VEHICLE_REVERSE_TOOLTIP :{BLACK}차량을 U턴시킵니다.
@@ -3523,8 +3523,8 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_ORDERS_TOOLTIP :{BLACK}차량
STR_VEHICLE_VIEW_SHIP_ORDERS_TOOLTIP :{BLACK}선박의 경로를 보여줍니다. Ctrl+클릭하면 선박의 시간표를 보여줍니다.
STR_VEHICLE_VIEW_AIRCRAFT_ORDERS_TOOLTIP :{BLACK}항공기의 경로를 보여줍니다. Ctrl+클릭하면 항공기의 시간표를 보여줍니다.
STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}열차 상세정보여줍니다.
STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}차 상세정보 보기
STR_VEHICLE_VIEW_TRAIN_SHOW_DETAILS_TOOLTIP :{BLACK}열차 상세정보 보
STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}자동차 상세정보 보
STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}선박 상세정보 보기
STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}항공기 상세정보 보기
@@ -3561,7 +3561,7 @@ STR_VEHICLE_DETAILS_CAPTION :{WHITE}{VEHICLE
STR_VEHICLE_NAME_BUTTON :{BLACK}이름
STR_VEHICLE_DETAILS_TRAIN_RENAME :{BLACK}열차 이름 지정
STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}차 이름 지정
STR_VEHICLE_DETAILS_ROAD_VEHICLE_RENAME :{BLACK}자동차 이름 지정
STR_VEHICLE_DETAILS_SHIP_RENAME :{BLACK}선박 이름 지정
STR_VEHICLE_DETAILS_AIRCRAFT_RENAME :{BLACK}항공기 이름 지정
@@ -3597,7 +3597,7 @@ STR_VEHICLE_DETAILS_DAYS :날짜
STR_VEHICLE_DETAILS_PERCENT :신뢰도
STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}열차 이름 지정
STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}차 이름 지정
STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}자동차 이름 지정
STR_QUERY_RENAME_SHIP_CAPTION :{WHITE}선박 이름 지정
STR_QUERY_RENAME_AIRCRAFT_CAPTION :{WHITE}항공기 이름 지정
@@ -3634,17 +3634,17 @@ STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}변경
STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}개조할 차량을 선택하십시오. 마우스로 드래그하면 여러 개의 차량을 선택 가능합니다. 빈 곳을 클릭하면 전체를 선택합니다. CTRL+클릭하시면 전체 차량을 선택 가능합니다.
STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}열차가 수송할 화물의 종류를 선택하세요.
STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}차량이 수송할 화물의 종류를 선택하세요.
STR_REFIT_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}자동차가 수송할 화물의 종류를 선택하십시오.
STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}선박이 운반할 화물의 종류를 선택하십시오
STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}이 항공기가 수송할 화물의 종류를 선택하십시오
STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}열차 개조
STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}차 개조
STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}자동차 개조
STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}선박 개조
STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}항공기 개조
STR_REFIT_TRAIN_REFIT_TOOLTIP :{BLACK}선택된 화물을 수송하도록 열차를 개조
STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}선택한 화물을 싣도록 차량을 개조합니다.
STR_REFIT_ROAD_VEHICLE_REFIT_TOOLTIP :{BLACK}선택한 화물을 싣도록 자동차를 개조
STR_REFIT_SHIP_REFIT_TOOLTIP :{BLACK}선택한 화물을 운반하도록 선박을 개조
STR_REFIT_AIRCRAFT_REFIT_TOOLTIP :{BLACK}선택한 화물을 싣도록 항공기를 개조합니다
@@ -3669,7 +3669,7 @@ STR_ORDER_GO_NON_STOP_VIA :직행 경유
STR_ORDER_TOOLTIP_NON_STOP :{BLACK}선택한 목적지에서의 정차 방식을 변경합니다
STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}아무 화물이나 가득 싣기
STR_ORDER_DROP_LOAD_IF_POSSIBLE :가능한 것만 적재
STR_ORDER_DROP_LOAD_IF_POSSIBLE :가능한것만 적재
STR_ORDER_DROP_FULL_LOAD_ALL :모든 화물을 가득 실음
STR_ORDER_DROP_FULL_LOAD_ANY :아무 화물이나 가득 싣기
STR_ORDER_DROP_NO_LOADING :싣지 않기
@@ -4275,22 +4275,22 @@ STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}이 그
# Generic vehicle errors
STR_ERROR_TRAIN_IN_THE_WAY :{WHITE}중간에 열차가 있습니다
STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}중간에 차량이 있습니다.
STR_ERROR_ROAD_VEHICLE_IN_THE_WAY :{WHITE}중간에 자동차가 있습니다.
STR_ERROR_SHIP_IN_THE_WAY :{WHITE}중간에 선박이 있습니다
STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}중간에 항공기가 있습니다
STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}열차를 개조할 수 없습니다...
STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}차량을 개조할 수 없습니다...
STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}자동차를 개조할 수 없습니다...
STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}선박을 개조할 수 없습니다...
STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}항공기를 개조할 수 없습니다...
STR_ERROR_CAN_T_RENAME_TRAIN :{WHITE}열차 이름을 지정할 수 없습니다...
STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}차의 이름을 지정할 수 없습니다...
STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE :{WHITE}자동차의 이름을 지정할 수 없습니다...
STR_ERROR_CAN_T_RENAME_SHIP :{WHITE}선박의 이름을 바꿀 수 없습니다...
STR_ERROR_CAN_T_RENAME_AIRCRAFT :{WHITE}항공기의 이름을 지정할 수 없습니다...
STR_ERROR_CAN_T_STOP_START_TRAIN :{WHITE}열차를 운행/정지시킬 수 없습니다...
STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}차량을 운행/정지시킬 수 없습니다...
STR_ERROR_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}자동차를 운행/정지시킬 수 없습니다...
STR_ERROR_CAN_T_STOP_START_SHIP :{WHITE}선박을 운행/중지시킬 수 없습니다...
STR_ERROR_CAN_T_STOP_START_AIRCRAFT :{WHITE}항공기를 운행/중지시킬 수 없습니다...
@@ -4300,17 +4300,17 @@ STR_ERROR_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}선박
STR_ERROR_CAN_T_SEND_AIRCRAFT_TO_HANGAR :{WHITE}항공기를 격납고로 보낼 수 없습니다...
STR_ERROR_CAN_T_BUY_TRAIN :{WHITE}열차를 구입할 수 없습니다...
STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}차량을 구입할 수 없습니다...
STR_ERROR_CAN_T_BUY_ROAD_VEHICLE :{WHITE}자동차를 구입할 수 없습니다...
STR_ERROR_CAN_T_BUY_SHIP :{WHITE}선박을 구입할 수 없습니다...
STR_ERROR_CAN_T_BUY_AIRCRAFT :{WHITE}항공기를 구입 할 수 없습니다...
STR_ERROR_CAN_T_RENAME_TRAIN_TYPE :{WHITE}열차의 차량 이름을 다시 지정할 수 없습니다...
STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}차종명을 다시 지정할 수 없습니다...
STR_ERROR_CAN_T_RENAME_ROAD_VEHICLE_TYPE :{WHITE}자동차의 차량 이름을 다시 지정할 수 없습니다...
STR_ERROR_CAN_T_RENAME_SHIP_TYPE :{WHITE}선박의 차량 이름을 다시 지정할 수 없습니다...
STR_ERROR_CAN_T_RENAME_AIRCRAFT_TYPE :{WHITE}항공기의 차량 이름을 다시 지정할 수 없습니다...
STR_ERROR_CAN_T_SELL_TRAIN :{WHITE}열차를 팔 수 없습니다...
STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}차량을 팔 수 없습니다...
STR_ERROR_CAN_T_SELL_ROAD_VEHICLE :{WHITE}자동차를 팔 수 없습니다...
STR_ERROR_CAN_T_SELL_SHIP :{WHITE}선박을 팔 수 없습니다...
STR_ERROR_CAN_T_SELL_AIRCRAFT :{WHITE}항공기를 팔 수 없습니다...
@@ -4334,7 +4334,7 @@ STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}너무
STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}열차를 회차시킬 수 없습니다...
STR_ERROR_TRAIN_START_NO_POWER :동력차가 없습니다
STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}차량을 U턴시킬 수 없습니다...
STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}자동차를 U턴시킬 수 없습니다...
STR_ERROR_AIRCRAFT_IS_IN_FLIGHT :{WHITE}항공기가 운항중입니다
@@ -4463,7 +4463,7 @@ STR_INDUSTRY_NAME_SUGAR_MINE :{G=m}설탕 광
STR_SV_EMPTY :
STR_SV_UNNAMED :{G=m}이름 없음
STR_SV_TRAIN_NAME :열차 {COMMA}
STR_SV_ROAD_VEHICLE_NAME :차 {COMMA}
STR_SV_ROAD_VEHICLE_NAME :자동차 {COMMA}
STR_SV_SHIP_NAME :선박 {COMMA}
STR_SV_AIRCRAFT_NAME :항공기 {COMMA}
+1 -1
View File
@@ -2577,7 +2577,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Uzņēmumam pie
STR_ABOUT_OPENTTD :{WHITE}Par OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Oriģināla autortiesības {COPYRIGHT} 1995 Kriss Sojers. Visas tiesības paturētas
STR_ABOUT_VERSION :{BLACK}OpenTTD versija {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD darba grupa
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD darba grupa
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Saglabāt spēli
+1 -1
View File
@@ -2852,7 +2852,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Kompanijos žem
STR_ABOUT_OPENTTD :{WHITE}Apie OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Pradinės versijos teisės priklauso {COPYRIGHT} 1995 Chris Sawyer, Visos teisės saugomos
STR_ABOUT_VERSION :{BLACK}OpenTTD versija {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 OpenTTD komanda
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 OpenTTD komanda
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Išsaugoti žaidimą
+1 -1
View File
@@ -2643,7 +2643,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Land am Firmenb
STR_ABOUT_OPENTTD :{WHITE}Iwwert OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original Copyright {COPYRIGHT} 1995 Chris Sawyer, All Rechter virbehalen
STR_ABOUT_VERSION :{BLACK}OpenTTD Versioun {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 D'OpenTTD team
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 D'OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spill späicheren
+1 -1
View File
@@ -2379,7 +2379,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Tanah dimiliki
STR_ABOUT_OPENTTD :{WHITE}Tentang OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Hakcipta Asal {COPYRIGHT} 1995 Chris Sawyer, Hakcipta terpelihara
STR_ABOUT_VERSION :{BLACK}OpenTTD versi {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 The OpenTTD team
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Simpankan Permainan
+1 -1
View File
@@ -2645,7 +2645,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Firma-eid lando
STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Opprinnelig opphavsbeskyttet {COPYRIGHT} 1995 Chris Sawyer, Alle rettigheter reservert
STR_ABOUT_VERSION :{BLACK}OpenTTD versjon {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD-teamet
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD-teamet
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lagre spill
+8 -138
View File
@@ -201,28 +201,21 @@ STR_UNITS_POWER_IMPERIAL :{COMMA} hk
STR_UNITS_POWER_METRIC :{COMMA} hk
STR_UNITS_POWER_SI :{COMMA} kW
STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA} t
STR_UNITS_WEIGHT_SHORT_METRIC :{COMMA} t
STR_UNITS_WEIGHT_SHORT_SI :{COMMA} kg
STR_UNITS_WEIGHT_LONG_IMPERIAL :{COMMA} britisk{P "" e} ton
STR_UNITS_WEIGHT_LONG_METRIC :{COMMA} tonn
STR_UNITS_WEIGHT_LONG_SI :{COMMA} kg
STR_UNITS_VOLUME_SHORT_IMPERIAL :{COMMA} gal
STR_UNITS_VOLUME_SHORT_METRIC :{COMMA} l
STR_UNITS_VOLUME_SHORT_SI :{COMMA} m³
STR_UNITS_VOLUME_LONG_IMPERIAL :{COMMA} britisk{P "" e} gallon
STR_UNITS_VOLUME_LONG_METRIC :{COMMA} liter
STR_UNITS_VOLUME_LONG_SI :{COMMA} m³
STR_UNITS_FORCE_IMPERIAL :{COMMA} lbf
STR_UNITS_FORCE_METRIC :{COMMA} kgf
STR_UNITS_FORCE_SI :{COMMA} kN
STR_UNITS_HEIGHT_IMPERIAL :{COMMA} fot
STR_UNITS_HEIGHT_METRIC :{COMMA} m
STR_UNITS_HEIGHT_SI :{COMMA} m
# Common window strings
@@ -230,7 +223,6 @@ STR_LIST_FILTER_TITLE :{BLACK}Søkefil
STR_LIST_FILTER_OSKTITLE :{BLACK}Skriv inn søkefilter
STR_LIST_FILTER_TOOLTIP :{BLACK}Skriv eit nøkkelord for filtrering av lista
STR_TOOLTIP_GROUP_ORDER :{BLACK}Vel rekkefølge for samling
STR_TOOLTIP_SORT_ORDER :{BLACK}Vel sorteringsrekkefølgje (søkkande/stigande)
STR_TOOLTIP_SORT_CRITERIA :{BLACK}Vel sorteringskriterium
STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Vel filtreringskriterium
@@ -242,8 +234,7 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Lukk vin
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Tittel på vindauget - dra for å flytte vindauget
STR_TOOLTIP_SHADE :{BLACK}Minimer vindauget - syn kun tittelfeltet
STR_TOOLTIP_DEBUG :{BLACK}Syn NewGRF-debuggingsinformasjon
STR_TOOLTIP_DEFSIZE :{BLACK}Gjer om vindauget til standard storleik. Ctrl+Click gjer noverande storleik til standard
STR_TOOLTIP_STICKY :{BLACK}Beskytt dette vindauget mot 'Lukk alle vindauge'-knappen. Ctrl+klikk for å sette som standard
STR_TOOLTIP_STICKY :{BLACK}Beskytt dette vindauget mot 'Lukk alle vindauge'-knappen
STR_TOOLTIP_RESIZE :{BLACK}Klikk og dra for å endre storleiken på vindauget
STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Byt mellom stor/liten storleik på vindauga
STR_TOOLTIP_VSCROLL_BAR_SCROLLS_LIST :{BLACK}Rullefelt - blar lista opp/ned
@@ -287,8 +278,6 @@ STR_SORT_BY_LENGTH :Lengde
STR_SORT_BY_LIFE_TIME :Attvarande levetid
STR_SORT_BY_TIMETABLE_DELAY :Rutetabellforseining
STR_SORT_BY_FACILITY :Stasjonstype
STR_SORT_BY_WAITING_TOTAL :Ventande last totalt
STR_SORT_BY_WAITING_AVAILABLE :Tilgjengeleg ventande last
STR_SORT_BY_RATING_MAX :Høgast varevurdering
STR_SORT_BY_RATING_MIN :Lågast varevurdering
STR_SORT_BY_ENGINE_ID :MaskinID (klassisk type)
@@ -301,7 +290,6 @@ STR_SORT_BY_POWER_VS_RUNNING_COST :Kraft/Driftskos
STR_SORT_BY_CARGO_CAPACITY :Varekapasitet
STR_SORT_BY_RANGE :Rekkevidde
STR_SORT_BY_POPULATION :Innbyggjartal
STR_SORT_BY_RATING :Vurdering
# Tooltips for the main toolbar
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pause
@@ -314,8 +302,6 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}Syne sub
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}Syne liste over stasjonane til firmaet
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}Syne firmaenes økonomiske data
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}Syne firmaenes generelle data
STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}Vis histioriebok
STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}Vis målliste
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}Syne grafar
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}Syne firmarangeringstabell
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}Finansier bygging av ny industri
@@ -389,7 +375,6 @@ STR_FILE_MENU_EXIT :Avslutt OpenTTD
# map menu
STR_MAP_MENU_MAP_OF_WORLD :Verdskart
STR_MAP_MENU_EXTRA_VIEW_PORT :Ekstra tilleggsvindauge
STR_MAP_MENU_LINGRAPH_LEGEND :Symbolforklaring for vareflyt
STR_MAP_MENU_SIGN_LIST :Skiltliste
############ range for town menu starts
@@ -676,20 +661,17 @@ STR_SMALLMAP_CAPTION :{WHITE}Kart - {
STR_SMALLMAP_TYPE_CONTOURS :Konturar
STR_SMALLMAP_TYPE_VEHICLES :Køyretøy
STR_SMALLMAP_TYPE_INDUSTRIES :Industriar
STR_SMALLMAP_TYPE_ROUTEMAP :Vareflyt
STR_SMALLMAP_TYPE_ROUTES :Ruter
STR_SMALLMAP_TYPE_VEGETATION :Vegetasjon
STR_SMALLMAP_TYPE_OWNERS :Eigarar
STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP :{BLACK}Syne landkonturar på kartet
STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP :{BLACK}Syne køyretøy på kartet
STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP :{BLACK}Syne inustriar på kartet
STR_SMALLMAP_TOOLTIP_SHOW_LINK_STATS_ON_MAP :{BLACK}Vis vareflyt på kartet
STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Syne transportruter på kartet
STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP :{BLACK}Syne vegetasjon på kartet
STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Syne landeigarar på kartet
STR_SMALLMAP_TOOLTIP_INDUSTRY_SELECTION :{BLACK}Klikk på ein industritype for å syne/gøyme han. Ctrl+klikk deaktiverer alle typer unnteke den valde. Ctrl+klikk på han att for å syne alle industriar.
STR_SMALLMAP_TOOLTIP_COMPANY_SELECTION :{BLACK}Klikk på eit firma for å syne/ikkje syne dets eigedom. Ctrl+Klikk syner kun det valte firma. Ctrl+Klikk igjen for å syne alle firma
STR_SMALLMAP_TOOLTIP_CARGO_SELECTION :{BLACK}Klikk på ein vare for å vise/skjule eigenskaper. Ctrl+klikk viser eigenskapar berre for vald vare. Ctrl+klikk igjen viser eigenskaper for alle varer
STR_SMALLMAP_LEGENDA_ROADS :{TINY_FONT}{BLACK}Vegar
STR_SMALLMAP_LEGENDA_RAILROADS :{TINY_FONT}{BLACK}Jarnbaner
@@ -723,7 +705,6 @@ STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLA
STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Skru av/på bynamn på kartet
STR_SMALLMAP_CENTER :{BLACK}Midtstill oversiktskartet på den gjeldande posisjonen
STR_SMALLMAP_INDUSTRY :{TINY_FONT}{STRING} ({NUM})
STR_SMALLMAP_LINKSTATS :{TINY_FONT}{STRING}
STR_SMALLMAP_COMPANY :{TINY_FONT}{COMPANY}
STR_SMALLMAP_TOWN :{TINY_FONT}{WHITE}{TOWN}
STR_SMALLMAP_DISABLE_ALL :{BLACK}Deaktiver alle
@@ -734,8 +715,6 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_INDUSTRIES :{BLACK}Syne all
STR_SMALLMAP_TOOLTIP_SHOW_HEIGHT :{BLACK}Byt syning av høgdekart
STR_SMALLMAP_TOOLTIP_DISABLE_ALL_COMPANIES :{BLACK}Ikkje syn firmaeigedom på kartet
STR_SMALLMAP_TOOLTIP_ENABLE_ALL_COMPANIES :{BLACK}Syn all firmaeigedom på kartet
STR_SMALLMAP_TOOLTIP_DISABLE_ALL_CARGOS :{BLACK}Ikkje vis varar på kartet
STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Vis alle varar på kartet
# Status bar messages
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Syne siste melding eller nyheit
@@ -897,8 +876,6 @@ STR_GAME_OPTIONS_CURRENCY_LTL :Litauiske Litas
STR_GAME_OPTIONS_CURRENCY_KRW :Sør-Koreanske Won (KRW)
STR_GAME_OPTIONS_CURRENCY_ZAR :Sør-Afrikanske Rand (ZAR)
STR_GAME_OPTIONS_CURRENCY_CUSTOM :Eigendefinert...
STR_GAME_OPTIONS_CURRENCY_GEL :Georgiske Lari (GEL)
STR_GAME_OPTIONS_CURRENCY_IRR :Iranske Rial (IRR)
############ end of currency region
@@ -943,8 +920,8 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_TOOLTIP :{BLACK}Vel inte
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_OFF :Av
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Kvar månad
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_3_MONTHS :Kvar 3. månad
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Kvart halvår
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Kvart år
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_6_MONTHS :Kvar 6. månad
STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_12_MONTHS :Kvar 12. månad
STR_GAME_OPTIONS_LANGUAGE :{BLACK}Språk
STR_GAME_OPTIONS_LANGUAGE_TOOLTIP :{BLACK}Vel språk som skal nyttast
@@ -1146,39 +1123,22 @@ STR_CONFIG_SETTING_ROAD_VEHICLE_ACCELERATION_MODEL_HELPTEXT :Vel fysikkmodel
STR_CONFIG_SETTING_PERCENTAGE :{COMMA}%
STR_CONFIG_SETTING_FORBID_90_DEG :Forby tog og skip å gjere 90-graderssvingar: {STRING}
STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Tillet samanbygging av ikkje direkte tilstøtande stasjonar: {STRING}
STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Tillat å bygge stasjonar som ikkje heng saman. (Ctrl+klikk for å bygge åtskilte delar av stasjonen )
STR_CONFIG_SETTING_IMPROVEDLOAD :Bruk forbetra lastingsalgoritme: {STRING}
STR_CONFIG_SETTING_IMPROVEDLOAD_HELPTEXT :Fyll opp køyretøy etter kvarandre, så eitt køyretøy er fullt før det neste vert lasta. Når det er nok varer på stasjonen blir fleire køyretøy lasta samtidig
STR_CONFIG_SETTING_GRADUAL_LOADING :Last køyretøy gradvis: {STRING}
STR_CONFIG_SETTING_INFLATION :Inflasjon: {STRING}
STR_CONFIG_SETTING_INFLATION_HELPTEXT :Skrur på inflasjon, kor kostnader aukar noko fortare enn innbetalingar
STR_CONFIG_SETTING_SELECTGOODS :Lever varer til ein stasjon kun hvis det er etterspørjing: {STRING}
STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Største brolengde: {STRING}
STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maksimal lengde for brubygging
STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Største tunnellengde: {STRING}
STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maksimal lengde for tunnelbygging
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Konstruksjonsmetode for primærindustri: {STRING}
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Ingen
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Som andre industriar
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Prospekterar
STR_CONFIG_SETTING_INDUSTRY_PLATFORM :Flatt område rundt verksemder: {STRING}
STR_CONFIG_SETTING_INDUSTRY_PLATFORM_HELPTEXT :Kor mykje flatt område som krevst rundt verksemder. Dette sikrar plass for å bygge spor, stasjoner og liknande
STR_CONFIG_SETTING_MULTIPINDTOWN :Tillet fleire like industriar i samme by: {STRING}
STR_CONFIG_SETTING_MULTIPINDTOWN_HELPTEXT :Normalt vil ikkje byer og tettstader ha meir enn ei verksemd av kvar sort. Innstillinga tillet fleire verksemder av samme type i same by eller tettstad
STR_CONFIG_SETTING_SIGNALSIDE :Vis signaler: {STRING}
STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :Vel kva side av sporet signal skal stå på
STR_CONFIG_SETTING_SIGNALSIDE_LEFT :Venstre side
STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :På køyresida
STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Høgre side
STR_CONFIG_SETTING_SHOWFINANCES :Syne rekneskap ved nyttår: {STRING}
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nye ordre er 'direkte' som standard: {STRING}
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Set standard oppførsel for nye ordre til at køyretøy køyrer beint til stoppestaden utan å stoppe undervegs. Vanleg oppførsel er å stoppe på alle stasjonar køyretøyet passerer
STR_CONFIG_SETTING_STOP_LOCATION :Nye togordrar stoppar som standard på {STRING} av plattformen
STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :starten
STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :midten
STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :i andre enden
STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING :Køyretøykøar (med kvantumseffektar): {STRING}
STR_CONFIG_SETTING_ROAD_VEHICLE_QUEUEING_HELPTEXT :Gjer at køyretøy stoppar foran vegsperringar til dei vert fjerna. Alternativet er at dei snur for å finne ein annan veg
STR_CONFIG_SETTING_AUTOSCROLL :Flytt på vindauget dersom pila er nær ytterkantane på skjermen: {STRING}
STR_CONFIG_SETTING_AUTOSCROLL_DISABLED :Deaktivert
STR_CONFIG_SETTING_BRIBE :Tillet bestikkelse av bystyret: {STRING}
@@ -1266,8 +1226,6 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :kort (31-12-200
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31)
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE :Anteke standardpalett for NewGRFer utan spesifisert palett: {STRING}
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_DOS :Standard (D) palett
STR_CONFIG_SETTING_NEWGRF_DEFAULT_PALETTE_WIN :Tradisjonell (W) palett
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatisk pause når ein startar nytt spel: {STRING}
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Når spelet er pausa, tillet: {STRING}
@@ -1435,49 +1393,17 @@ STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD :Fjern absurde v
STR_CONFIG_SETTING_MODIFIED_ROAD_REBUILD_HELPTEXT :Fjern blindvegar under finansiering av vegutbygging
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :Eining for fart: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Bruk vald eining for å vise fart
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Britisk eining (mph)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrisk (km/t)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Eining for kraft: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Bruk vald eining for å vise kraft
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Britisk eining (hk)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Metrisk (hk)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :Eining for vekt: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :Bruk vald eining for å vise vekt
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :Britisk eining (short ton)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :Metrisk (tonn)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :SI (kg)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :Eining for volum: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :Bruk vald eining for å vise volum
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :Britisk eining (gal)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :Metrisk (l)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :SI (m³)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :Eining for trekkraft: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :Bruk vald eining for å vise trekkraft
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :Britisk eining (lbf)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :Metrisk (kgf)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :SI (kN)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :Eining for høgde: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :Bruk vald eining for å vise høgde
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :Britisk eining (ft)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :Metrisk (m)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :SI (m)
STR_CONFIG_SETTING_GUI :{ORANGE}Grensesnitt
STR_CONFIG_SETTING_LOCALISATION :{ORANGE}Plassering
STR_CONFIG_SETTING_CONSTRUCTION :{ORANGE}Konstruksjon
STR_CONFIG_SETTING_VEHICLES :{ORANGE}Køyretøy
STR_CONFIG_SETTING_STATIONS :{ORANGE}Stasjonar
STR_CONFIG_SETTING_ECONOMY :{ORANGE}Økonomi
STR_CONFIG_SETTING_LINKGRAPH :{ORANGE}Varefordeling
STR_CONFIG_SETTING_AI :{ORANGE}Motstandarar
STR_CONFIG_SETTING_DISPLAY_OPTIONS :{ORANGE}Syne innstillingar
STR_CONFIG_SETTING_INTERACTION :{ORANGE}Samhandling
@@ -1564,7 +1490,7 @@ STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Sjå ett
STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Vis AI- og spelscriptinnstillingar
STR_INTRO_TOOLTIP_QUIT :{BLACK}Avslutt 'OpenTTD'
STR_INTRO_TRANSLATION :{BLACK}Denne nynorsk-omsettinga manglar {NUM} tekst{P "" ar}. Du må gjerne verte med i omsettingsgruppa for å hjelpe til å gjere OpenTTD betre. Sjå readme.txt for detaljar.
STR_INTRO_TRANSLATION :{BLACK}Denne nynorsk-oversettelsen mangler {NUM} streng{P "" er}. Vennligst hjelp til å gjøre OpenTTD bedre ved å bli med i oversettergruppen. For detaljer, sjekk readme.txt.
# Quit window
STR_QUIT_CAPTION :{WHITE}Avslutt
@@ -1701,10 +1627,6 @@ STR_FACE_TIE_EARRING_TOOLTIP :{BLACK}Byt slip
# Network server list
STR_NETWORK_SERVER_LIST_CAPTION :{WHITE}Fleirspelar
STR_NETWORK_SERVER_LIST_ADVERTISED :{BLACK}Kunngjort
STR_NETWORK_SERVER_LIST_ADVERTISED_TOOLTIP :{BLACK}Vel mellom spel på internett (kunngjort) og spel på lokalt nett (ikkje kunngjort)
STR_NETWORK_SERVER_LIST_ADVERTISED_NO :Nei
STR_NETWORK_SERVER_LIST_ADVERTISED_YES :Ja
STR_NETWORK_SERVER_LIST_PLAYER_NAME :{BLACK}Spelarnamn:
STR_NETWORK_SERVER_LIST_ENTER_NAME_TOOLTIP :{BLACK}Dette er namnet andre spelarar vil identifisere deg med
@@ -1763,8 +1685,6 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Spelnamn
STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Set passord
STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Beskytt spelet ditt med passord så ikkje kven som helst kan verte med på det
STR_NETWORK_START_SERVER_UNADVERTISED :Nei
STR_NETWORK_START_SERVER_ADVERTISED :Ja
STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klient{P "" er}
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maks. antal tilletne klientar:
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS_TOOLTIP :{BLACK}Vel maks. antal klientar. Alle plassane treng ikkje å verte tekne
@@ -1885,7 +1805,6 @@ STR_NETWORK_CLIENT :Klient
STR_NETWORK_SPECTATORS :Tilskodarar
STR_NETWORK_GIVE_MONEY_CAPTION :{WHITE}Skriv inn kor mykje pengar du ønskar å gje
STR_NETWORK_TOOLBAR_LIST_SPECTATOR :{BLACK}Tilskodar
# Network set password
STR_COMPANY_PASSWORD_CANCEL :{BLACK}Ikkje lagre passordet
@@ -2075,15 +1994,8 @@ STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Byt gjen
STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Gjer objekter usynlege istanden for gjennomsiktige
# Linkgraph legend window
STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Symbolforklaring for vareflyt
STR_LINKGRAPH_LEGEND_ALL :{BLACK}Alle
STR_LINKGRAPH_LEGEND_NONE :{BLACK}Ingen
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Vel selskaper å vise
# Linkgraph legend window and linkgraph legend in smallmap
STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}ubrukt
STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}fullt utnytta
STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}overbelasta
# Base for station construction window(s)
STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}Syne dekningsområde
@@ -2483,7 +2395,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Feltet eigast a
STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Opphaveleg opphavsbeskytta av {COPYRIGHT} 1995 Chris Sawyer, Alle rettigheiter reservert
STR_ABOUT_VERSION :{BLACK}OpenTTD versjon {REV}. Oversett til nynorsk av Thor Morten Skogrand med fleire.
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD-teamet
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD-teamet
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Lagre spel
@@ -2731,7 +2643,6 @@ STR_NEWGRF_INVALID_ENGINE :<invalid vehicl
STR_NEWGRF_INVALID_INDUSTRYTYPE :<invalid industry>
# Placeholders for other invalid stuff, e.g. vehicles that have gone (Game Script).
STR_INVALID_VEHICLE :<ugyldig køyretøy>
# NewGRF scanning window
STR_NEWGRF_SCAN_CAPTION :{WHITE}Skannar NewGRF-er
@@ -2814,14 +2725,9 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Kjøp e
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Bestikk bystyret til å forbetre vurderinga av firmaet, du risikerer bøter dersom du vert oppdaga.{}Kostnad: {CURRENCY_LONG}
# Goal window
STR_GOALS_CAPTION :{WHITE}{COMPANY} Mål
STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globale mål
STR_GOALS_GLOBAL_TITLE :{BLACK}Globale mål:
STR_GOALS_TEXT :{ORANGE}{STRING}
STR_GOALS_NONE :{ORANGE}- Ingen -
STR_GOALS_SPECTATOR_NONE :{ORANGE}- Ikkje relevant -
STR_GOALS_PROGRESS :{ORANGE}{STRING}
STR_GOALS_PROGRESS_COMPLETE :{GREEN}{STRING}
STR_GOALS_COMPANY_TITLE :{BLACK}Målet åt firmaet:
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikk på mål for å gå til industri/by/rute. Ctrl+klikk åpner eit nytt tilleggsvindauge over industrien/byen/ruta sin lokasjon.
@@ -2861,16 +2767,6 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING
STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikk på teneste for å midtstille hovedvisninga på industri/by. Ctrl+klikk syner industri/by i eit nytt tilleggsvindauge.
# Story book window
STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY} Historiebok
STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Global historiebok
STR_STORY_BOOK_TITLE :{YELLOW}{STRING}
STR_STORY_BOOK_GENERIC_PAGE_ITEM :Side {NUM}
STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Vel side å hoppe beint til
STR_STORY_BOOK_PREV_PAGE :{BLACK}Førre
STR_STORY_BOOK_PREV_PAGE_TOOLTIP :{BLACK}Bla til førre sida
STR_STORY_BOOK_NEXT_PAGE :{BLACK}Neste
STR_STORY_BOOK_NEXT_PAGE_TOOLTIP :{BLACK}Bla til neste side
STR_STORY_BOOK_INVALID_GOAL_REF :{RED}Ugyldig mål-referanse
# Station list window
STR_STATION_LIST_TOOLTIP :{BLACK}Stasjonsnamn - Klikk på namnet for å syne stasjonen i hovedvisninga. CTRL+klikk syner stasjonen i eit tilleggsvindauge
@@ -2899,24 +2795,7 @@ STR_STATIOV_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPAN
STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}Vurderingar
STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Syne stasjonsvurdering
STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Månadleg forsyning og lokal prestasjonsvurdering:
STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}%)
STR_STATION_VIEW_GROUP :{BLACK}Samle etter
STR_STATION_VIEW_WAITING_STATION :Stasjon: Ventar...
STR_STATION_VIEW_WAITING_AMOUNT :Beløp: Ventar...
STR_STATION_VIEW_PLANNED_STATION :Stasjon: Planlagt
STR_STATION_VIEW_PLANNED_AMOUNT :Beløp: Planlagt
STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} frå {STATION}
STR_STATION_VIEW_VIA :{YELLOW}{CARGO_SHORT} via {STATION}
STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} til {STATION}
STR_STATION_VIEW_FROM_ANY :{RED}{CARGO_SHORT} frå ein ukjend stasjon
STR_STATION_VIEW_TO_ANY :{RED}{CARGO_SHORT} til kva helst stasjon
STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHORT} via kva helst stasjon
STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} frå den her stasjonen
STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} stoggar her
STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} til den her stasjonen
STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} utan opphald
############ range for rating starts
@@ -3060,7 +2939,6 @@ STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE :{BLACK}Produksj
STR_INDUSTRY_VIEW_TRANSPORTED :{YELLOW}{CARGO_LONG}{STRING}{BLACK} ({COMMA}{NBSP}% transportert)
STR_INDUSTRY_VIEW_LOCATION_TOOLTIP :{BLACK}Midtstill hovedvisninga på industrien. CTRL+klikk syner industrien i eit nytt tilleggsvindauge
STR_INDUSTRY_VIEW_PRODUCTION_LEVEL :{BLACK}Produksjonsnivå: {YELLOW}{COMMA}%
STR_INDUSTRY_VIEW_INDUSTRY_ANNOUNCED_CLOSURE :{YELLOW}Verksemda legg snarleg ned drifta!
############ range for requires starts
STR_INDUSTRY_VIEW_REQUIRES_CARGO :{BLACK}Treng: {YELLOW}{STRING}{STRING}
@@ -3663,7 +3541,6 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Denne ru
STR_TIMETABLE_STATUS_START_AT :{BLACK}Startdato for denne rutetabellen er {STRING}
STR_TIMETABLE_STARTING_DATE :{BLACK}Startdato
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Vel startdato for timeplanen. Ctrl+klikk set starttidspunkt for tabellen og spreier køyretøya jamt utover
STR_TIMETABLE_CHANGE_TIME :{BLACK}Byt Tid
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Byt tida den merka ordra skal bruke
@@ -3777,8 +3654,6 @@ STR_AI_SETTINGS_START_DELAY :Antall dagar de
STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} lesmeg for {STRING}
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} endringslogg for {STRING}
STR_TEXTFILE_LICENCE_CAPTION :{WHITE}{STRING} lisens for {STRING}
STR_TEXTFILE_WRAP_TEXT :{WHITE}Bryt tekst
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Bryt teksten etter storleiken på vindauget
STR_TEXTFILE_VIEW_README :{BLACK}Vis lesmeg
STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Endringslogg
STR_TEXTFILE_VIEW_LICENCE :{BLACK}Lisens
@@ -4156,10 +4031,6 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}Kan ikkj
STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... køyretøy er øydelagd
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}Ingen køyretøy vert tilgjengelege
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Byt NewGRF-innstillingar
STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Det finst ikkje nokon køyretøy enno
STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Start spelet etter {DATE_SHORT} eller bruk ein GRF som har køyretøy frå tidlegare tider
# Specific vehicle errors
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Kan ikkje tvinge tog til å passere signal ved fare...
@@ -4542,10 +4413,10 @@ STR_VEHICLE_NAME_SHIP_FFP_PASSENGER_FERRY :FFP-passasjerfe
STR_VEHICLE_NAME_SHIP_BAKEWELL_300_HOVERCRAFT :Bakewell 300-luftputeskip
STR_VEHICLE_NAME_SHIP_CHUGGER_CHUG_PASSENGER :Chugger-Chug-passasjerferje
STR_VEHICLE_NAME_SHIP_SHIVERSHAKE_PASSENGER_FERRY :Shivershake-passasjerferje
STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate konteinarskip
STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell konteinarskip
STR_VEHICLE_NAME_SHIP_YATE_CARGO_SHIP :Yate-konteinarskip
STR_VEHICLE_NAME_SHIP_BAKEWELL_CARGO_SHIP :Bakewell-konteinarskip
STR_VEHICLE_NAME_SHIP_MIGHTYMOVER_CARGO_SHIP :MightyMover-konteinarskip
STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut konteinarskip
STR_VEHICLE_NAME_SHIP_POWERNAUT_CARGO_SHIP :Powernaut-konteinarskip
STR_VEHICLE_NAME_AIRCRAFT_SAMPSON_U52 :Sampson U52
STR_VEHICLE_NAME_AIRCRAFT_COLEMAN_COUNT :Coleman Count
STR_VEHICLE_NAME_AIRCRAFT_FFP_DART :FFP Dart
@@ -4661,7 +4532,6 @@ STR_JUST_DATE_ISO :{DATE_ISO}
STR_JUST_STRING :{STRING}
STR_JUST_STRING_STRING :{STRING}{STRING}
STR_JUST_RAW_STRING :{STRING}
STR_JUST_BIG_RAW_STRING :{BIG_FONT}{STRING}
# Slightly 'raw' stringcodes with colour or size
STR_BLACK_COMMA :{BLACK}{COMMA}
+1 -1
View File
@@ -3023,7 +3023,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Teren w posiada
STR_ABOUT_OPENTTD :{WHITE}OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Prawa Autorskie {COPYRIGHT} 1995 Chris Sawyer, Wszelkie prawa zastrzeżone
STR_ABOUT_VERSION :{BLACK}OpenTTD wersja {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 Zespół OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 Zespół OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Zapisz grę
+1 -1
View File
@@ -2644,7 +2644,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreno proprie
STR_ABOUT_OPENTTD :{WHITE}Sobre o OpenTTD...
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Direitos de autor originais {COPYRIGHT} 1995 Chris Sawyer, Todos os direitos reservados
STR_ABOUT_VERSION :{BLACK}OpenTTD versão {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 A equipa do OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 A equipa do OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Guardar Jogo
+1 -1
View File
@@ -2628,7 +2628,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Teren în propr
STR_ABOUT_OPENTTD :{WHITE}Despre OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright original {COPYRIGHT} 1995 Chris Sawyer, Toate drepturile rezervate
STR_ABOUT_VERSION :{BLACK}OpenTTD versiunea {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 Echipa OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 Echipa OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Salvează joc
+1 -1
View File
@@ -2823,7 +2823,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Земля в
STR_ABOUT_OPENTTD :{WHITE}Об OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Оригинальные авторские права {COPYRIGHT} 1995 Chris Sawyer. Все права защищены.
STR_ABOUT_VERSION :{BLACK}OpenTTD версия {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 Команда разработчиков OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 Команда разработчиков OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Сохранить игру
+1 -1
View File
@@ -2736,7 +2736,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Zemljište u po
STR_ABOUT_OPENTTD :{WHITE}O OpenTTD-u
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Originalni kopirajt {COPYRIGHT} 1995 Chris Sawyer, Sva prava zadržana
STR_ABOUT_VERSION :{BLACK}OpenTTD verzija {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD tim
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD tim
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Sačuvaj poziciju
+1 -1
View File
@@ -2643,7 +2643,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :公司属地
STR_ABOUT_OPENTTD :{WHITE}关于 OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}原始版权由 {COPYRIGHT} 1995 Chris Sawyer 所有,保留一切权力。
STR_ABOUT_VERSION :{BLACK}OpenTTD 版本 {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 OpenTTD 团队
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 OpenTTD 团队
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}保存游戏
+1 -1
View File
@@ -2711,7 +2711,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Spoločnosťou
STR_ABOUT_OPENTTD :{WHITE}OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Pôvodný copyright: {COPYRIGHT} 1995 Chris Sawyer, všetky práva vyhradené
STR_ABOUT_VERSION :{BLACK}OpenTTD verzia {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 team OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 team OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Uložiť hru
+1 -1
View File
@@ -2795,7 +2795,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ozemlje v lasti
STR_ABOUT_OPENTTD :{WHITE}O OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Prvotne avtorske pravice {COPYRIGHT} 1995 Chris Sawyer, vse pravice pridržane
STR_ABOUT_VERSION :{BLACK}OpenTTD različica {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 ekipa OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 ekipa OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Shrani igro
+1 -1
View File
@@ -2644,7 +2644,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Terreno propied
STR_ABOUT_OPENTTD :{WHITE}Acerca de OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Copyright Original {COPYRIGHT} 1995 Chris Sawyer, Todos los derechos reservados
STR_ABOUT_VERSION :{BLACK}OpenTTD versión {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 El equipo OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 El equipo OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Guardar Juego
+1 -1
View File
@@ -2638,7 +2638,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Mark som ägs a
STR_ABOUT_OPENTTD :{WHITE}Om OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Ursprunglig äganderätt {COPYRIGHT} 1995 Chris Sawyer, Alla rättigheter hävdas
STR_ABOUT_VERSION :{BLACK}OpenTTD-version {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD-teamet
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD-teamet
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spara spel
+1 -1
View File
@@ -2347,7 +2347,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :நிறுவ
STR_ABOUT_OPENTTD :{WHITE}OpenTTD-ஐ பற்றி
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}அசல் உரிமைகள் {COPYRIGHT} 1995 கிறிஸ் சாயர், எல்லா உரிமைகளும் பதிவுசெய்யப்பட்டது
STR_ABOUT_VERSION :{BLACK}OpenTTD பதிப்பு {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD குழுமம்
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD குழுமம்
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}ஆட்டத்தை பதிவு செய்
+1 -1
View File
@@ -2643,7 +2643,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :บริษั
STR_ABOUT_OPENTTD :{WHITE}เกี่ยวกับ OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}ลิขสิทธิ์เดิม {COPYRIGHT} ค.ศ.1995 ของ Chris Sawyer, สงวนลิขสิทธิ์
STR_ABOUT_VERSION :{BLACK}OpenTTD รุ่นที่ {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}ลิขสิทธิ์ OpenTTD {COPYRIGHT}2002-2014 ของ The OpenTTD team
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}ลิขสิทธิ์ OpenTTD {COPYRIGHT}2002-2013 ของ The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}บันทึกเกม
+1 -1
View File
@@ -2643,7 +2643,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :公司所有土
STR_ABOUT_OPENTTD :{WHITE}關於 OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}原著作權為 {COPYRIGHT} 1995 Chris Sawyer,保留所有權利
STR_ABOUT_VERSION :{BLACK}OpenTTD 版本 {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD 開發小組
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD 開發小組
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}儲存遊戲
+1 -1
View File
@@ -2644,7 +2644,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Satın alınmı
STR_ABOUT_OPENTTD :{WHITE}OpenTTD Hakkında
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Telif hakkı {COPYRIGHT} 1995 Chris Sawyer, Her hakkı saklıdır
STR_ABOUT_VERSION :{BLACK}OpenTTD sürüm {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 OpenTTD ekibi
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 OpenTTD ekibi
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Oyunu Kaydet
+1 -1
View File
@@ -2762,7 +2762,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Ця ділян
STR_ABOUT_OPENTTD :{WHITE}Про OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Авторське право {COPYRIGHT} 1995 Кріс Сойєр, Всі права захищені
STR_ABOUT_VERSION :{BLACK}OpenTTD версія {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2014 команда OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT} 2002-2013 команда OpenTTD
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Зберегти гру
+1 -1
View File
@@ -1883,7 +1883,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Lân fan bedriu
STR_ABOUT_OPENTTD :{WHITE}Oer OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Orizjineel copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
STR_ABOUT_VERSION :{BLACK}OpenTTD-ferzje {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 It OpenTTD team
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 It OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}Spul Opslaan
+1 -1
View File
@@ -773,7 +773,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_HEADQUARTERS :Stabeyo di komp
# About OpenTTD window
STR_ABOUT_VERSION :{BLACK}OpenTTD versiono {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 La kruo OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 La kruo OpenTTD
# Save/load game/scenario
STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Ludo Detali
+1 -1
View File
@@ -1185,7 +1185,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :Компани
STR_ABOUT_OPENTTD :{WHITE}За OpenTTD
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Оригинален copyright {COPYRIGHT} 1995 Chris Sawyer, Сите права се задржани
STR_ABOUT_VERSION :{BLACK}OpenTTD верзија {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 OpenTTD тимот
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 OpenTTD тимот
# Save/load game/scenario
STR_SAVELOAD_LOAD_BUTTON :{BLACK}Оптоварување
+1 -1
View File
@@ -2333,7 +2333,7 @@ STR_LAI_OBJECT_DESCRIPTION_COMPANY_OWNED_LAND :زمین خری
STR_ABOUT_OPENTTD :{WHITE}OpenTTD در باره ی
STR_ABOUT_ORIGINAL_COPYRIGHT :{BLACK}Original copyright {COPYRIGHT} 1995 Chris Sawyer, All rights reserved
STR_ABOUT_VERSION :{BLACK}OpenTTD ویرایش {REV}
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2014 The OpenTTD team
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-2013 The OpenTTD team
# Save/load game/scenario
STR_SAVELOAD_SAVE_CAPTION :{WHITE}ذخیره ی بازی

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