mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2026-09-14 12:29:39 +00:00
Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f322ab97ed |
+1
-13
@@ -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
@@ -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
@@ -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"
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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,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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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" />
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_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"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -156,7 +156,7 @@
|
||||
AdditionalOptions="/MP"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_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\""
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="0"
|
||||
@@ -257,7 +257,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64;WITH_ASSERT"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_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"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -362,7 +362,7 @@
|
||||
AdditionalOptions="/MP"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_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"
|
||||
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"
|
||||
>
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_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"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -156,7 +156,7 @@
|
||||
AdditionalOptions="/MP"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_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\""
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="0"
|
||||
@@ -257,7 +257,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64;WITH_ASSERT"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_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"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -362,7 +362,7 @@
|
||||
AdditionalOptions="/MP"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_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"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="0"
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_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"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -155,7 +155,7 @@
|
||||
AdditionalOptions="/MP"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_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\""
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="0"
|
||||
@@ -255,7 +255,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64;WITH_ASSERT"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_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"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -359,7 +359,7 @@
|
||||
AdditionalOptions="/MP"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_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"
|
||||
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"
|
||||
>
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_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"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -155,7 +155,7 @@
|
||||
AdditionalOptions="/MP"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_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\""
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="0"
|
||||
@@ -255,7 +255,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64;WITH_ASSERT"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WITH_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"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -359,7 +359,7 @@
|
||||
AdditionalOptions="/MP"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\objs\langs;..\objs\settings;..\src\3rdparty\squirrel\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_SSE;WITH_ZLIB;WITH_LZO;WITH_LZMA;LZMA_API_STATIC;WITH_PNG;WITH_FREETYPE;WITH_ICU;U_STATIC_IMPLEMENTATION;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";_SQ64"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;WITH_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"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="0"
|
||||
|
||||
+2
-2
@@ -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
@@ -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
|
||||
|
||||
@@ -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(); }
|
||||
};
|
||||
|
||||
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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(); }
|
||||
};
|
||||
|
||||
|
||||
@@ -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(); }
|
||||
};
|
||||
|
||||
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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 */
|
||||
@@ -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(); }
|
||||
};
|
||||
|
||||
|
||||
@@ -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
@@ -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;
|
||||
|
||||
|
||||
@@ -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(); }
|
||||
};
|
||||
|
||||
|
||||
@@ -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__))
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
@@ -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
@@ -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. */
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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}Захаваць гульню
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}Запази играта
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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}שמור משחק
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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ą
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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ę
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}Сохранить игру
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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}บันทึกเกม
|
||||
|
||||
@@ -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}儲存遊戲
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}Зберегти гру
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}Оптоварување
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user