Merge tag '1.11.0-beta2' into jgrpp

# Conflicts:
#	.github/workflows/ci-build.yml
#	.github/workflows/release.yml
#	CMakeLists.txt
#	src/blitter/32bpp_optimized.cpp
#	src/debug.cpp
#	src/gfx.cpp
#	src/gfx_func.h
#	src/lang/czech.txt
#	src/lang/english.txt
#	src/lang/italian.txt
#	src/lang/swedish.txt
#	src/lang/ukrainian.txt
#	src/network/network_server.cpp
#	src/os/windows/crashlog_win.cpp
#	src/os/windows/win32.cpp
#	src/pathfinder/follow_track.hpp
#	src/screenshot.cpp
#	src/settings_type.h
#	src/spritecache.cpp
#	src/vehicle_gui.cpp
#	src/video/sdl2_v.cpp
#	src/video/video_driver.cpp
#	src/video/video_driver.hpp
#	src/video/win32_v.cpp
pull/221/head
Jonathan G Rennison 3 years ago
commit f4e29071be

@ -39,7 +39,7 @@ jobs:
echo "::group::Build"
echo "Running on $(nproc) cores"
make -j$(nproc) tools
cmake --build . -j $(nproc) --target tools
echo "::endgroup::"
- name: Install GCC problem matcher
@ -56,7 +56,7 @@ jobs:
echo "::group::Build"
echo "Running on $(nproc) cores"
emmake make -j$(nproc)
cmake --build . -j $(nproc)
echo "::endgroup::"
linux:
@ -135,11 +135,11 @@ jobs:
echo "::group::Build"
echo "Running on $(nproc) cores"
make -j$(nproc)
cmake --build . -j $(nproc)
echo "::endgroup::"
windows:
name: Windows
macos:
name: Mac OS
strategy:
fail-fast: false
@ -156,14 +156,26 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: Prepare vcpkg (with cache)
uses: lukka/run-vcpkg@v6
- name: Prepare cache key
id: key
run: |
echo "::set-output name=image::$ImageOS-$ImageVersion"
- name: Enable vcpkg cache
uses: actions/cache@v2
with:
vcpkgDirectory: '/usr/local/share/vcpkg'
doNotUpdateVcpkg: false
vcpkgGitCommitId: 2a42024b53ebb512fb5dd63c523338bf26c8489c
vcpkgArguments: 'liblzma libpng lzo zstd'
vcpkgTriplet: '${{ matrix.arch }}-osx'
path: /usr/local/share/vcpkg/installed
key: ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }}
- name: Prepare vcpkg
run: |
vcpkg install --triplet=${{ matrix.arch }}-osx \
liblzma \
libpng \
lzo \
zlib \
zstd \
# EOF
- name: Install OpenGFX
run: |
@ -198,11 +210,11 @@ jobs:
echo "::group::Build"
echo "Running on $(sysctl -n hw.logicalcpu) cores"
make -j$(sysctl -n hw.logicalcpu)
cmake --build . -j $(sysctl -n hw.logicalcpu)
echo "::endgroup::"
macos:
name: Mac OS
windows:
name: Windows
strategy:
fail-fast: false
@ -216,25 +228,31 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
# "restore-cache" which is done by "run-vcpkg" uses Windows tar.
# A git clone on windows marks a few files as read-only; when Windows tar
# tries to extract the cache over this folder, it fails, despite the files
# being identical. This failure shows up as an warning in the logs. We
# avoid this by simply removing the read-only mark from the git folder.
# In other words: this is a hack!
# See: https://github.com/lukka/run-vcpkg/issues/61
- name: Remove read-only flag from vcpkg git folder
- name: Prepare cache key
id: key
shell: powershell
run: |
attrib -r "c:\vcpkg\.git\*.*" /s
# Work around caching failure with GNU tar
New-Item -Type Junction -Path vcpkg -Target c:\vcpkg
Write-Output "::set-output name=image::$env:ImageOS-$env:ImageVersion"
- name: Prepare vcpkg (with cache)
uses: lukka/run-vcpkg@v6
- name: Enable vcpkg cache
uses: actions/cache@v2
with:
vcpkgDirectory: 'c:/vcpkg'
doNotUpdateVcpkg: true
vcpkgArguments: 'liblzma libpng lzo zlib zstd'
vcpkgTriplet: '${{ matrix.arch }}-windows-static'
path: vcpkg/installed
key: ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }}
- name: Prepare vcpkg
shell: bash
run: |
vcpkg install --triplet=${{ matrix.arch }}-windows-static \
liblzma \
libpng \
lzo \
zlib \
zstd \
# EOF
- name: Install OpenGFX
shell: bash
@ -255,5 +273,25 @@ jobs:
- name: Install MSVC problem matcher
uses: ammaraskar/msvc-problem-matcher@master
- name: Configure developer command prompt for ${{ matrix.arch }}
uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.arch }}
- name: Build
run: cd build && make -j2
shell: bash
run: |
mkdir build
cd build
echo "::group::CMake"
cmake .. \
-GNinja \
-DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-windows-static \
-DCMAKE_TOOLCHAIN_FILE="c:\vcpkg\scripts\buildsystems\vcpkg.cmake" \
# EOF
echo "::endgroup::"
echo "::group::Build"
cmake --build .
echo "::endgroup::"

@ -230,7 +230,7 @@ jobs:
echo "::endgroup::"
echo "::group::Build"
make docs
cmake --build . --target docs
echo "::endgroup::"
- name: Create bundles
@ -317,8 +317,8 @@ jobs:
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=/usr
make -j$(nproc)
make install
cmake --build . -j $(nproc)
cmake --install .
)
echo "::endgroup::"
@ -339,12 +339,21 @@ jobs:
echo "::group::Build"
echo "Running on $(nproc) cores"
make -j$(nproc) package
cmake --build . -j $(nproc)
echo "::endgroup::"
- name: Create bundles
run: |
cd ${GITHUB_WORKSPACE}/build
echo "::group::Run CPack"
cpack
echo "::endgroup::"
echo "::group::Cleanup"
# Remove the sha256 files CPack generates; we will do this ourself at
# the end of this workflow.
rm -f bundles/*.sha256
echo "::endgroup::"
- name: Store bundles
uses: actions/upload-artifact@v2
@ -431,12 +440,22 @@ jobs:
echo "::group::Build"
echo "Running on $(nproc) cores"
make -j$(nproc) package
# Ubuntu 18.04 cmake does not support -j so we pass the option to the native tool
cmake --build . -- -j $(nproc)
echo "::endgroup::"
- name: Create bundles
run: |
cd ${GITHUB_WORKSPACE}/build
echo "::group::Run CPack"
cpack
echo "::endgroup::"
echo "::group::Cleanup"
# Remove the sha256 files CPack generates; we will do this ourself at
# the end of this workflow.
rm -f bundles/*.sha256
echo "::endgroup::"
- name: Store bundles
uses: actions/upload-artifact@v2
@ -470,21 +489,34 @@ jobs:
run: |
brew install pandoc
# The following step can be removed when the build VM is updated with a revision of
# vcpkg dating from roughly 01/01/2021 or later. At that point, `doNotUpdateVcpkg`
# can be set to `true` and the `vcpkgGitCommitId` can be removed.
- name: Update vcpkg
- name: Prepare cache key
id: key
run: |
cd /usr/local/share/vcpkg
git fetch --unshallow
echo "::set-output name=image::$ImageOS-$ImageVersion"
- name: Prepare vcpkg (with cache)
uses: lukka/run-vcpkg@v6
- name: Enable vcpkg cache
uses: actions/cache@v2
with:
vcpkgDirectory: '/usr/local/share/vcpkg'
doNotUpdateVcpkg: false
vcpkgGitCommitId: 2a42024b53ebb512fb5dd63c523338bf26c8489c
vcpkgArguments: 'liblzma:x64-osx libpng:x64-osx lzo:x64-osx zstd:x64-osx liblzma:arm64-osx libpng:arm64-osx lzo:arm64-osx zstd:arm64-osx'
path: /usr/local/share/vcpkg/installed
key: ${{ steps.key.outputs.image }}-vcpkg-release
- name: Prepare vcpkg
run: |
vcpkg install \
liblzma:x64-osx \
liblzma:arm64-osx \
libpng:x64-osx \
libpng:arm64-osx \
lzo:x64-osx \
lzo:arm64-osx \
zlib:x64-osx \
zlib:arm64-osx \
zstd:x64-osx \
zstd:arm64-osx \
# EOF
- name: Install GCC problem matcher
uses: ammaraskar/gcc-problem-matcher@master
- name: Build tools
run: |
@ -500,12 +532,9 @@ jobs:
echo "::group::Build tools"
echo "Running on $(sysctl -n hw.logicalcpu) cores"
make -j$(sysctl -n hw.logicalcpu) tools
cmake --build . -j $(sysctl -n hw.logicalcpu) --target tools
echo "::endgroup::"
- name: Install GCC problem matcher
uses: ammaraskar/gcc-problem-matcher@master
- name: Import code signing certificates
uses: Apple-Actions/import-codesign-certs@v1
with:
@ -533,7 +562,7 @@ jobs:
echo "::group::Build"
echo "Running on $(sysctl -n hw.logicalcpu) cores"
make -j$(sysctl -n hw.logicalcpu)
cmake --build . -j $(sysctl -n hw.logicalcpu)
echo "::endgroup::"
- name: Build x64
@ -556,25 +585,28 @@ jobs:
echo "::group::Build"
echo "Running on $(sysctl -n hw.logicalcpu) cores"
make -j$(sysctl -n hw.logicalcpu)
cmake --build . -j $(sysctl -n hw.logicalcpu)
echo "::endgroup::"
- name: Build package
- name: Create bundles
run: |
cd build-x64
echo "::group::Create universal binary"
# Combine the `openttd` binaries from each build into a single file
lipo -create -output openttd-universal ../build-*/openttd
mv openttd-universal openttd
echo "::endgroup::"
echo "::group::Build"
echo "Running on $(sysctl -n hw.logicalcpu) cores"
make -j$(sysctl -n hw.logicalcpu) package
echo "::group::Run CPack"
cpack
echo "::endgroup::"
echo "::group::Cleanup"
# Remove the sha256 files CPack generates; we will do this ourself at
# the end of this workflow.
rm -f bundles/*.sha256
echo "::endgroup::"
- name: Install gon
env:
@ -631,8 +663,11 @@ jobs:
matrix:
include:
- arch: x86
host: x86
- arch: x64
host: x64
- arch: arm64
host: x64_arm64
runs-on: windows-latest
@ -652,55 +687,104 @@ jobs:
run: |
choco install pandoc
# "restore-cache" which is done by "run-vcpkg" uses Windows tar.
# A git clone on windows marks a few files as read-only; when Windows tar
# tries to extract the cache over this folder, it fails, despite the files
# being identical. This failure shows up as an warning in the logs. We
# avoid this by simply removing the read-only mark from the git folder.
# In other words: this is a hack!
# See: https://github.com/lukka/run-vcpkg/issues/61
- name: Remove read-only flag from vcpkg git folder
- name: Prepare cache key
id: key
shell: powershell
run: |
attrib -r "c:\vcpkg\.git\*.*" /s
# Work around caching failure with GNU tar
New-Item -Type Junction -Path vcpkg -Target c:\vcpkg
- name: Prepare vcpkg (with cache)
uses: lukka/run-vcpkg@v6
with:
vcpkgDirectory: 'c:/vcpkg'
doNotUpdateVcpkg: true
vcpkgArguments: 'liblzma libpng lzo zlib zstd'
vcpkgTriplet: '${{ matrix.arch }}-windows-static'
Write-Output "::set-output name=image::$env:ImageOS-$env:ImageVersion"
- name: Build tools
uses: lukka/run-cmake@v3
- name: Enable vcpkg cache
uses: actions/cache@v2
with:
cmakeListsOrSettingsJson: CMakeListsTxtAdvanced
useVcpkgToolchainFile: false
buildDirectory: '${{ github.workspace }}/build-host'
buildWithCMakeArgs: '--target tools'
cmakeAppendedArgs: ' -GNinja -DOPTION_TOOLS_ONLY=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo'
path: vcpkg/installed
key: ${{ steps.key.outputs.image }}-vcpkg-${{ matrix.arch }}
- name: Prepare vcpkg
shell: bash
run: |
vcpkg install --triplet=${{ matrix.arch }}-windows-static \
liblzma \
libpng \
lzo \
zlib \
# EOF
- name: Install MSVC problem matcher
uses: ammaraskar/msvc-problem-matcher@master
- name: Configure developer command prompt for tools
uses: ilammy/msvc-dev-cmd@v1
with:
arch: x64
- name: Build tools
shell: bash
run: |
mkdir build-host
cd build-host
echo "::group::CMake"
cmake ${GITHUB_WORKSPACE} \
-GNinja \
-DOPTION_TOOLS_ONLY=ON \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
# EOF
echo "::endgroup::"
echo "::group::Build"
cmake --build . --target tools
echo "::endgroup::"
- name: Configure developer command prompt for ${{ matrix.arch }}
uses: ilammy/msvc-dev-cmd@v1
with:
arch: ${{ matrix.host }}
- name: Build (with installer)
if: needs.source.outputs.is_tag == 'true'
uses: lukka/run-cmake@v3
with:
cmakeListsOrSettingsJson: CMakeListsTxtAdvanced
useVcpkgToolchainFile: true
buildDirectory: '${{ github.workspace }}/build'
cmakeAppendedArgs: ' -GNinja -DOPTION_USE_NSIS=ON -DHOST_BINARY_DIR=${{ github.workspace }}/build-host -DCMAKE_BUILD_TYPE=RelWithDebInfo'
shell: bash
run: |
mkdir build
cd build
echo "::group::CMake"
cmake ${GITHUB_WORKSPACE} \
-GNinja \
-DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-windows-static \
-DCMAKE_TOOLCHAIN_FILE="c:\vcpkg\scripts\buildsystems\vcpkg.cmake" \
-DOPTION_USE_NSIS=ON \
-DHOST_BINARY_DIR=${GITHUB_WORKSPACE}/build-host \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
# EOF
echo "::endgroup::"
echo "::group::Build"
cmake --build .
echo "::endgroup::"
- name: Build (without installer)
if: needs.source.outputs.is_tag != 'true'
uses: lukka/run-cmake@v3
with:
cmakeListsOrSettingsJson: CMakeListsTxtAdvanced
useVcpkgToolchainFile: true
buildDirectory: '${{ github.workspace }}/build'
cmakeAppendedArgs: ' -GNinja -DHOST_BINARY_DIR=${{ github.workspace }}/build-host -DCMAKE_BUILD_TYPE=RelWithDebInfo'
shell: bash
run: |
mkdir build
cd build
echo "::group::CMake"
cmake ${GITHUB_WORKSPACE} \
-GNinja \
-DVCPKG_TARGET_TRIPLET=${{ matrix.arch }}-windows-static \
-DCMAKE_TOOLCHAIN_FILE="c:\vcpkg\scripts\buildsystems\vcpkg.cmake" \
-DHOST_BINARY_DIR=${GITHUB_WORKSPACE}/build-host \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
# EOF
echo "::endgroup::"
echo "::group::Build"
cmake --build .
echo "::endgroup::"
- name: Create bundles
shell: bash

@ -89,6 +89,11 @@ if(OPTION_TOOLS_ONLY)
return()
endif()
if(APPLE)
# Avoid searching for headers in Frameworks, and libraries in LIBDIR.
set(CMAKE_FIND_FRAMEWORK LAST)
endif()
# Prefer -pthread over -lpthread, which is often the better option of the two.
set(CMAKE_THREAD_PREFER_PTHREAD YES)
# Make sure we have Threads available.
@ -123,6 +128,10 @@ if(NOT WIN32)
endif()
endif()
if(NOT EMSCRIPTEN)
find_package(OpenGL COMPONENTS OpenGL)
endif()
if(MSVC)
find_package(Editbin REQUIRED)
else()
@ -306,6 +315,16 @@ if(NOT OPTION_DEDICATED)
link_package(Fcitx)
link_package(DBus1)
link_package(X11)
if(SDL2_FOUND AND OPENGL_FOUND AND UNIX)
# SDL2 dynamically loads OpenGL if needed, so do not link to OpenGL when
# on Linux. For Windows, we need to link to OpenGL as we also have a win32
# driver using it.
add_definitions(-DWITH_OPENGL)
message(STATUS "OpenGL found -- -DWITH_OPENGL -- (via SDL2)")
else()
link_package(OpenGL TARGET OpenGL::GL)
endif()
endif()
if(APPLE)

@ -1,3 +1,57 @@
1.11.0-beta2 (2021-02-28)
------------------------------------------------------------------------
Feature: Add setting to limit fast-forward speed (#8766)
Feature: Significant performance improvements to all video drivers (#8605, #8652, #8660, #8685, #8702, #8703, #8707, #8726, #8740)
Feature: Configurable display refresh-rate, default to 60fps (#8680)
Feature: Automatically upload releases to Steam (#8644)
Feature: Generic Linux builds (#8641)
Feature: [GS] Allow non-question type windows to have no buttons (#8638)
Feature: [macOS] ZIP build (#8614)
Feature: Object class selection string filtering (#8603)
Feature: 'Remove all industries' button in scenario editor (#8550)
Feature: Automatic UI and font zoom levels when supported by the OS (#8537)
Feature: [macOS] Render screen at native resolution by default for HiDPI screens (#8519)
Feature: OpenGL video driver (#7744)
Add: Indonesia Rupiah currency (#8616)
Change: Improve graph period markings (#8732)
Change: Make pathfinder account for maximum order speed, if set (#8722)
Change: Darken graph grid lines for legibility (#8690)
Change: Make order window hotkeys toggle for load & unload variants (#8669)
Change: Use a more specific error message when attempting to bulldoze your own HQ (#8667)
Change: Convert .md to .rtf for Windows/Mac packages (#8617)
Change: Move the 'tree placer algorithm' & 'road drive side' settings to the Settings window (#8566)
Change: Move town name generator selection to mapgen GUI (#8566)
Change: [macOS] Native font rendering (#8518)
Fix: Display of network lobby windows for different GUI sizes (#8765)
Fix: Don't desync if client leaves before you finish downloading map (#8755)
Fix: Allow estimating vehicle clone cost even if short on money (#8748)
Fix: Don't notify twice that a client left because of a timeout (#8746)
Fix: Vehicle cursor size did not account for the interface zoom level (#8739)
Fix #8123: Trams on half-tiles couldn't find depots (#8738)
Fix #8276: [NewGRF] Crash when an object's size was not set (#8719)
Fix #8349: Close depot vehicle list windows when closing the depot window (#8717)
Fix #8594: [NRT] Road pathfinder did not account for roadtype speed limits or lengths of tunnels/bridges (#8710)
Fix: Whole status bar instead of money widget refreshed on money change (#8692)
Fix: Unnecessary status bar redraws when there is no news to show (#8691)
Fix: New orders are non-stop by default (#8689)
Fix: Framerate window showed a slightly higher rate than actually measured (#8682)
Fix: Autorenew failure advice due to bad refit being shown to all companies (#8681)
Fix #8625: Wrong ending year was displayed in highscore table (#8672)
Fix #8620: Scale spacing between date & news in history window according to font scaling (#8671)
Fix: [Win32] Set minimum resolution for timers to 1ms (#8660)
Fix: Mention our websites with https:// (instead of http://) (#8657)
Fix: [Emscripten] Open links in browser (#8655)
Fix: Don't crash when towns upgrade road tiles during expansion (#8651)
Fix #8029: [SDL2] Blank display when under Wayland (#8648)
Fix: Default Network Server List sorter put compatible servers in wrong order (#8626)
Fix: Use non-pulsating red highlight for coverage (#8622)
Fix: Center text and image in vehicle statusbar vertically (#8602)
Fix: Don't walk out of the map when trying to build tunnels (#8600)
Fix: Off-by-one error in desert/rainforest positioning at world gen (#8588)
Fix #8037: Crash when restarting AI that is controlling the same company as the player (#8587)
Fix: Stopped ships shouldn't block depots (#8578)
1.11.0-beta1 (2021-01-22)
------------------------------------------------------------------------
Feature: [GS] Ability to set some extra text in the industry window (#8576)

@ -10,8 +10,8 @@ macro(create_regression)
# build folder before we can run the regression
file(GLOB_RECURSE REGRESSION_SOURCE_FILES ${CMAKE_SOURCE_DIR}/regression/*)
foreach(REGRESSION_SOURCE_FILE IN LISTS REGRESSION_SOURCE_FILES)
string(REGEX REPLACE "^${CMAKE_SOURCE_DIR}/regression/" "${CMAKE_BINARY_DIR}/ai/" REGRESSION_BINARY_FILE "${REGRESSION_SOURCE_FILE}")
string(REGEX REPLACE "^${CMAKE_SOURCE_DIR}/regression/" "" REGRESSION_SOURCE_FILE_NAME "${REGRESSION_SOURCE_FILE}")
string(REPLACE "${CMAKE_SOURCE_DIR}/regression/" "" REGRESSION_SOURCE_FILE_NAME "${REGRESSION_SOURCE_FILE}")
string(CONCAT REGRESSION_BINARY_FILE "${CMAKE_BINARY_DIR}/ai/" "${REGRESSION_SOURCE_FILE_NAME}")
if("${REGRESSION_SOURCE_FILE_NAME}" STREQUAL "regression.cfg")
continue()

@ -16,6 +16,7 @@ source_group("Sprite loaders" REGULAR_EXPRESSION "src/spriteloader/")
source_group("Squirrel" REGULAR_EXPRESSION "src/3rdparty/squirrel/squirrel/")
source_group("Tables" REGULAR_EXPRESSION "src/table/")
source_group("Video" REGULAR_EXPRESSION "src/video/")
source_group("Video/GL" REGULAR_EXPRESSION "src/3rdparty/opengl/")
source_group("Widgets" REGULAR_EXPRESSION "src/widgets/")
source_group("Windows files" REGULAR_EXPRESSION "src/os/windows/|\.rc$")

@ -16,11 +16,18 @@ endif()
set(ARGC 1)
set(ARG_READ NO)
# For MSVC CMake runs this script from a batch file using || to detect errors,
# depending on source path it may quote args, and cause cmd to not understand ||
# and pass it as argument to ourself.
# Read all the arguments given to CMake; we are looking for -- and everything
# that follows. Those are our api files.
# that follows, until ||. Those are our api files.
while(ARGC LESS CMAKE_ARGC)
set(ARG ${CMAKE_ARGV${ARGC}})
if(ARG STREQUAL "||")
set(ARG_READ NO)
endif()
if(ARG_READ)
list(APPEND SCRIPT_API_BINARY_FILES "${ARG}")
endif()

@ -1,6 +1,6 @@
OpenTTD's known bugs
Last updated: 2021-01-22
Release version: 1.11.0-beta1
Last updated: 2021-02-28
Release version: 1.11.0-beta2
------------------------------------------------------------------------
@ -364,35 +364,6 @@ Trains might not stop at platforms that are currently being changed [#5553]:
list multiple times in a row or if there is only one station
in theorder list (see #5684).
Inconsistent catchment areas [#5661]:
Due to performance decisions the catchment area for cargo accepted by a
station for delivery to houses or industries differs from the catchment
area for cargo that is delivered to stations from houses or industries.
Conceptually they work the same, but the effect in game differs. They
work by finding the closest destination "around" the source which is
within a certain distance. This distance depends on the type of station,
e.g. road stops have a smaller catchment area than large airports.
In both cases the bounding box, the smallest rectangle that contains
all tiles of something, is searched for the target of the cargo,
and then spiraling outwards finding the closest tile of the target.
In the case of a station with two tiles spread far apart with a house
that is within the station's bounding box, it would be possible that
the spiraling search from the house does not reach one of the station
tiles before the search ends, i.e. all tiles within that distance
are searched. So the house does not deliver cargo to the station.
On the other hand, the station will deliver cargo because the house
falls within the bounding box, and thus search area.
It is possible to make these consistent, but then cargo from a house
to a station needs to search up to 32 tiles around itself, i.e. 64
by 64 tiles, to find all possible stations it could deliver to
instead of 10 by 10 tiles (40 times more tiles). Alternatively the
search from a station could be changed to use the actual tiles, but
that would require considering checking 10 by 10 tiles for each of
the tiles of a station, instead of just once.
Some houses and industries are not affected by transparency [#5817]:
Some of the default houses and industries (f.e. the iron ore mine) are
not affected by the transparency options. This is because the graphics

@ -1,5 +1,6 @@
add_subdirectory(md5)
add_subdirectory(squirrel)
add_subdirectory(opengl)
add_subdirectory(os2)
add_subdirectory(cpp-btree)
add_subdirectory(mingw-std-threads)

@ -0,0 +1,10 @@
add_files(
khrplatform.h
glext.h
CONDITION OPENGL_FOUND
)
add_files(
wglext.h
CONDITION WIN32 AND OPENGL_FOUND
)

File diff suppressed because it is too large Load Diff

@ -0,0 +1,290 @@
#ifndef __khrplatform_h_
#define __khrplatform_h_
/*
** Copyright (c) 2008-2018 The Khronos Group Inc.
**
** Permission is hereby granted, free of charge, to any person obtaining a
** copy of this software and/or associated documentation files (the
** "Materials"), to deal in the Materials without restriction, including
** without limitation the rights to use, copy, modify, merge, publish,
** distribute, sublicense, and/or sell copies of the Materials, and to
** permit persons to whom the Materials are furnished to do so, subject to
** the following conditions:
**
** The above copyright notice and this permission notice shall be included
** in all copies or substantial portions of the Materials.
**
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
*/
/* Khronos platform-specific types and definitions.
*
* The master copy of khrplatform.h is maintained in the Khronos EGL
* Registry repository at https://github.com/KhronosGroup/EGL-Registry
* The last semantic modification to khrplatform.h was at commit ID:
* 67a3e0864c2d75ea5287b9f3d2eb74a745936692
*
* Adopters may modify this file to suit their platform. Adopters are
* encouraged to submit platform specific modifications to the Khronos
* group so that they can be included in future versions of this file.
* Please submit changes by filing pull requests or issues on
* the EGL Registry repository linked above.
*
*
* See the Implementer's Guidelines for information about where this file
* should be located on your system and for more details of its use:
* http://www.khronos.org/registry/implementers_guide.pdf
*
* This file should be included as
* #include <KHR/khrplatform.h>
* by Khronos client API header files that use its types and defines.
*
* The types in khrplatform.h should only be used to define API-specific types.
*
* Types defined in khrplatform.h:
* khronos_int8_t signed 8 bit
* khronos_uint8_t unsigned 8 bit
* khronos_int16_t signed 16 bit
* khronos_uint16_t unsigned 16 bit
* khronos_int32_t signed 32 bit
* khronos_uint32_t unsigned 32 bit
* khronos_int64_t signed 64 bit
* khronos_uint64_t unsigned 64 bit
* khronos_intptr_t signed same number of bits as a pointer
* khronos_uintptr_t unsigned same number of bits as a pointer
* khronos_ssize_t signed size
* khronos_usize_t unsigned size
* khronos_float_t signed 32 bit floating point
* khronos_time_ns_t unsigned 64 bit time in nanoseconds
* khronos_utime_nanoseconds_t unsigned time interval or absolute time in
* nanoseconds
* khronos_stime_nanoseconds_t signed time interval in nanoseconds
* khronos_boolean_enum_t enumerated boolean type. This should
* only be used as a base type when a client API's boolean type is
* an enum. Client APIs which use an integer or other type for
* booleans cannot use this as the base type for their boolean.
*
* Tokens defined in khrplatform.h:
*
* KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values.
*
* KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0.
* KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0.
*
* Calling convention macros defined in this file:
* KHRONOS_APICALL
* KHRONOS_APIENTRY
* KHRONOS_APIATTRIBUTES
*
* These may be used in function prototypes as:
*
* KHRONOS_APICALL void KHRONOS_APIENTRY funcname(
* int arg1,
* int arg2) KHRONOS_APIATTRIBUTES;
*/
#if defined(__SCITECH_SNAP__) && !defined(KHRONOS_STATIC)
# define KHRONOS_STATIC 1
#endif
/*-------------------------------------------------------------------------
* Definition of KHRONOS_APICALL
*-------------------------------------------------------------------------
* This precedes the return type of the function in the function prototype.
*/
#if defined(KHRONOS_STATIC)
/* If the preprocessor constant KHRONOS_STATIC is defined, make the
* header compatible with static linking. */
# define KHRONOS_APICALL
#elif defined(_WIN32)
# define KHRONOS_APICALL __declspec(dllimport)
#elif defined (__SYMBIAN32__)
# define KHRONOS_APICALL IMPORT_C
#elif defined(__ANDROID__)
# define KHRONOS_APICALL __attribute__((visibility("default")))
#else
# define KHRONOS_APICALL
#endif
/*-------------------------------------------------------------------------
* Definition of KHRONOS_APIENTRY
*-------------------------------------------------------------------------
* This follows the return type of the function and precedes the function
* name in the function prototype.
*/
#if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__)
/* Win32 but not WinCE */
# define KHRONOS_APIENTRY __stdcall
#else
# define KHRONOS_APIENTRY
#endif
/*-------------------------------------------------------------------------
* Definition of KHRONOS_APIATTRIBUTES
*-------------------------------------------------------------------------
* This follows the closing parenthesis of the function prototype arguments.
*/
#if defined (__ARMCC_2__)
#define KHRONOS_APIATTRIBUTES __softfp
#else
#define KHRONOS_APIATTRIBUTES
#endif
/*-------------------------------------------------------------------------
* basic type definitions
*-----------------------------------------------------------------------*/
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__)
/*
* Using <stdint.h>
*/
#include <stdint.h>
typedef int32_t khronos_int32_t;
typedef uint32_t khronos_uint32_t;
typedef int64_t khronos_int64_t;
typedef uint64_t khronos_uint64_t;
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#elif defined(__VMS ) || defined(__sgi)
/*
* Using <inttypes.h>
*/
#include <inttypes.h>
typedef int32_t khronos_int32_t;
typedef uint32_t khronos_uint32_t;
typedef int64_t khronos_int64_t;
typedef uint64_t khronos_uint64_t;
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#elif defined(_WIN32) && !defined(__SCITECH_SNAP__)
/*
* Win32
*/
typedef __int32 khronos_int32_t;
typedef unsigned __int32 khronos_uint32_t;
typedef __int64 khronos_int64_t;
typedef unsigned __int64 khronos_uint64_t;
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#elif defined(__sun__) || defined(__digital__)
/*
* Sun or Digital
*/
typedef int khronos_int32_t;
typedef unsigned int khronos_uint32_t;
#if defined(__arch64__) || defined(_LP64)
typedef long int khronos_int64_t;
typedef unsigned long int khronos_uint64_t;
#else
typedef long long int khronos_int64_t;
typedef unsigned long long int khronos_uint64_t;
#endif /* __arch64__ */
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#elif 0
/*
* Hypothetical platform with no float or int64 support
*/
typedef int khronos_int32_t;
typedef unsigned int khronos_uint32_t;
#define KHRONOS_SUPPORT_INT64 0
#define KHRONOS_SUPPORT_FLOAT 0
#else
/*
* Generic fallback
*/
#include <stdint.h>
typedef int32_t khronos_int32_t;
typedef uint32_t khronos_uint32_t;
typedef int64_t khronos_int64_t;
typedef uint64_t khronos_uint64_t;
#define KHRONOS_SUPPORT_INT64 1
#define KHRONOS_SUPPORT_FLOAT 1
#endif
/*
* Types that are (so far) the same on all platforms
*/
typedef signed char khronos_int8_t;
typedef unsigned char khronos_uint8_t;
typedef signed short int khronos_int16_t;
typedef unsigned short int khronos_uint16_t;
/*
* Types that differ between LLP64 and LP64 architectures - in LLP64,
* pointers are 64 bits, but 'long' is still 32 bits. Win64 appears
* to be the only LLP64 architecture in current use.
*/
#ifdef _WIN64
typedef signed long long int khronos_intptr_t;
typedef unsigned long long int khronos_uintptr_t;
typedef signed long long int khronos_ssize_t;
typedef unsigned long long int khronos_usize_t;
#else
typedef signed long int khronos_intptr_t;
typedef unsigned long int khronos_uintptr_t;
typedef signed long int khronos_ssize_t;
typedef unsigned long int khronos_usize_t;
#endif
#if KHRONOS_SUPPORT_FLOAT
/*
* Float type
*/
typedef float khronos_float_t;
#endif
#if KHRONOS_SUPPORT_INT64
/* Time types
*
* These types can be used to represent a time interval in nanoseconds or
* an absolute Unadjusted System Time. Unadjusted System Time is the number
* of nanoseconds since some arbitrary system event (e.g. since the last
* time the system booted). The Unadjusted System Time is an unsigned
* 64 bit value that wraps back to 0 every 584 years. Time intervals
* may be either signed or unsigned.
*/
typedef khronos_uint64_t khronos_utime_nanoseconds_t;
typedef khronos_int64_t khronos_stime_nanoseconds_t;
#endif
/*
* Dummy value used to pad enum types to 32 bits.
*/
#ifndef KHRONOS_MAX_ENUM
#define KHRONOS_MAX_ENUM 0x7FFFFFFF
#endif
/*
* Enumerated boolean type
*
* Values other than zero should be considered to be true. Therefore
* comparisons should not be made against KHRONOS_TRUE.
*/
typedef enum {
KHRONOS_FALSE = 0,
KHRONOS_TRUE = 1,
KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM
} khronos_boolean_enum_t;
#endif /* __khrplatform_h_ */

@ -0,0 +1,845 @@
#ifndef __wgl_wglext_h_
#define __wgl_wglext_h_ 1
#ifdef __cplusplus
extern "C" {
#endif
/*
** Copyright 2013-2020 The Khronos Group Inc.
** SPDX-License-Identifier: MIT
**
** This header is generated from the Khronos OpenGL / OpenGL ES XML
** API Registry. The current version of the Registry, generator scripts
** used to make the header, and the header can be found at
** https://github.com/KhronosGroup/OpenGL-Registry
*/
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
#define WIN32_LEAN_AND_MEAN 1
#include <windows.h>
#endif
#define WGL_WGLEXT_VERSION 20200813
/* Generated C header for:
* API: wgl
* Versions considered: .*
* Versions emitted: _nomatch_^
* Default extensions included: wgl
* Additional extensions included: _nomatch_^
* Extensions removed: _nomatch_^
*/
#ifndef WGL_ARB_buffer_region
#define WGL_ARB_buffer_region 1
#define WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001
#define WGL_BACK_COLOR_BUFFER_BIT_ARB 0x00000002
#define WGL_DEPTH_BUFFER_BIT_ARB 0x00000004
#define WGL_STENCIL_BUFFER_BIT_ARB 0x00000008
typedef HANDLE (WINAPI * PFNWGLCREATEBUFFERREGIONARBPROC) (HDC hDC, int iLayerPlane, UINT uType);
typedef VOID (WINAPI * PFNWGLDELETEBUFFERREGIONARBPROC) (HANDLE hRegion);
typedef BOOL (WINAPI * PFNWGLSAVEBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height);
typedef BOOL (WINAPI * PFNWGLRESTOREBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc);
#ifdef WGL_WGLEXT_PROTOTYPES
HANDLE WINAPI wglCreateBufferRegionARB (HDC hDC, int iLayerPlane, UINT uType);
VOID WINAPI wglDeleteBufferRegionARB (HANDLE hRegion);
BOOL WINAPI wglSaveBufferRegionARB (HANDLE hRegion, int x, int y, int width, int height);
BOOL WINAPI wglRestoreBufferRegionARB (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc);
#endif
#endif /* WGL_ARB_buffer_region */
#ifndef WGL_ARB_context_flush_control
#define WGL_ARB_context_flush_control 1
#define WGL_CONTEXT_RELEASE_BEHAVIOR_ARB 0x2097
#define WGL_CONTEXT_RELEASE_BEHAVIOR_NONE_ARB 0
#define WGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_ARB 0x2098
#endif /* WGL_ARB_context_flush_control */
#ifndef WGL_ARB_create_context
#define WGL_ARB_create_context 1
#define WGL_CONTEXT_DEBUG_BIT_ARB 0x00000001
#define WGL_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB 0x00000002
#define WGL_CONTEXT_MAJOR_VERSION_ARB 0x2091
#define WGL_CONTEXT_MINOR_VERSION_ARB 0x2092
#define WGL_CONTEXT_LAYER_PLANE_ARB 0x2093
#define WGL_CONTEXT_FLAGS_ARB 0x2094
#define ERROR_INVALID_VERSION_ARB 0x2095
typedef HGLRC (WINAPI * PFNWGLCREATECONTEXTATTRIBSARBPROC) (HDC hDC, HGLRC hShareContext, const int *attribList);
#ifdef WGL_WGLEXT_PROTOTYPES
HGLRC WINAPI wglCreateContextAttribsARB (HDC hDC, HGLRC hShareContext, const int *attribList);
#endif
#endif /* WGL_ARB_create_context */
#ifndef WGL_ARB_create_context_no_error
#define WGL_ARB_create_context_no_error 1
#define WGL_CONTEXT_OPENGL_NO_ERROR_ARB 0x31B3
#endif /* WGL_ARB_create_context_no_error */
#ifndef WGL_ARB_create_context_profile
#define WGL_ARB_create_context_profile 1
#define WGL_CONTEXT_PROFILE_MASK_ARB 0x9126
#define WGL_CONTEXT_CORE_PROFILE_BIT_ARB 0x00000001
#define WGL_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB 0x00000002
#define ERROR_INVALID_PROFILE_ARB 0x2096
#endif /* WGL_ARB_create_context_profile */
#ifndef WGL_ARB_create_context_robustness
#define WGL_ARB_create_context_robustness 1
#define WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB 0x00000004
#define WGL_LOSE_CONTEXT_ON_RESET_ARB 0x8252
#define WGL_CONTEXT_RESET_NOTIFICATION_STRATEGY_ARB 0x8256
#define WGL_NO_RESET_NOTIFICATION_ARB 0x8261
#endif /* WGL_ARB_create_context_robustness */
#ifndef WGL_ARB_extensions_string
#define WGL_ARB_extensions_string 1
typedef const char *(WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc);
#ifdef WGL_WGLEXT_PROTOTYPES
const char *WINAPI wglGetExtensionsStringARB (HDC hdc);
#endif
#endif /* WGL_ARB_extensions_string */
#ifndef WGL_ARB_framebuffer_sRGB
#define WGL_ARB_framebuffer_sRGB 1
#define WGL_FRAMEBUFFER_SRGB_CAPABLE_ARB 0x20A9
#endif /* WGL_ARB_framebuffer_sRGB */
#ifndef WGL_ARB_make_current_read
#define WGL_ARB_make_current_read 1
#define ERROR_INVALID_PIXEL_TYPE_ARB 0x2043
#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054
typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTARBPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCARBPROC) (void);
#ifdef WGL_WGLEXT_PROTOTYPES
BOOL WINAPI wglMakeContextCurrentARB (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
HDC WINAPI wglGetCurrentReadDCARB (void);
#endif
#endif /* WGL_ARB_make_current_read */
#ifndef WGL_ARB_multisample
#define WGL_ARB_multisample 1
#define WGL_SAMPLE_BUFFERS_ARB 0x2041
#define WGL_SAMPLES_ARB 0x2042
#endif /* WGL_ARB_multisample */
#ifndef WGL_ARB_pbuffer
#define WGL_ARB_pbuffer 1
DECLARE_HANDLE(HPBUFFERARB);
#define WGL_DRAW_TO_PBUFFER_ARB 0x202D
#define WGL_MAX_PBUFFER_PIXELS_ARB 0x202E
#define WGL_MAX_PBUFFER_WIDTH_ARB 0x202F
#define WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030
#define WGL_PBUFFER_LARGEST_ARB 0x2033
#define WGL_PBUFFER_WIDTH_ARB 0x2034
#define WGL_PBUFFER_HEIGHT_ARB 0x2035
#define WGL_PBUFFER_LOST_ARB 0x2036
typedef HPBUFFERARB (WINAPI * PFNWGLCREATEPBUFFERARBPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
typedef HDC (WINAPI * PFNWGLGETPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer);
typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer, HDC hDC);
typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFERARBPROC) (HPBUFFERARB hPbuffer);
typedef BOOL (WINAPI * PFNWGLQUERYPBUFFERARBPROC) (HPBUFFERARB hPbuffer, int iAttribute, int *piValue);
#ifdef WGL_WGLEXT_PROTOTYPES
HPBUFFERARB WINAPI wglCreatePbufferARB (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
HDC WINAPI wglGetPbufferDCARB (HPBUFFERARB hPbuffer);
int WINAPI wglReleasePbufferDCARB (HPBUFFERARB hPbuffer, HDC hDC);
BOOL WINAPI wglDestroyPbufferARB (HPBUFFERARB hPbuffer);
BOOL WINAPI wglQueryPbufferARB (HPBUFFERARB hPbuffer, int iAttribute, int *piValue);
#endif
#endif /* WGL_ARB_pbuffer */
#ifndef WGL_ARB_pixel_format
#define WGL_ARB_pixel_format 1
#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
#define WGL_DRAW_TO_WINDOW_ARB 0x2001
#define WGL_DRAW_TO_BITMAP_ARB 0x2002
#define WGL_ACCELERATION_ARB 0x2003
#define WGL_NEED_PALETTE_ARB 0x2004
#define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005
#define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006
#define WGL_SWAP_METHOD_ARB 0x2007
#define WGL_NUMBER_OVERLAYS_ARB 0x2008
#define WGL_NUMBER_UNDERLAYS_ARB 0x2009
#define WGL_TRANSPARENT_ARB 0x200A
#define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037
#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
#define WGL_SHARE_DEPTH_ARB 0x200C
#define WGL_SHARE_STENCIL_ARB 0x200D
#define WGL_SHARE_ACCUM_ARB 0x200E
#define WGL_SUPPORT_GDI_ARB 0x200F
#define WGL_SUPPORT_OPENGL_ARB 0x2010
#define WGL_DOUBLE_BUFFER_ARB 0x2011
#define WGL_STEREO_ARB 0x2012
#define WGL_PIXEL_TYPE_ARB 0x2013
#define WGL_COLOR_BITS_ARB 0x2014
#define WGL_RED_BITS_ARB 0x2015
#define WGL_RED_SHIFT_ARB 0x2016
#define WGL_GREEN_BITS_ARB 0x2017
#define WGL_GREEN_SHIFT_ARB 0x2018
#define WGL_BLUE_BITS_ARB 0x2019
#define WGL_BLUE_SHIFT_ARB 0x201A
#define WGL_ALPHA_BITS_ARB 0x201B
#define WGL_ALPHA_SHIFT_ARB 0x201C
#define WGL_ACCUM_BITS_ARB 0x201D
#define WGL_ACCUM_RED_BITS_ARB 0x201E
#define WGL_ACCUM_GREEN_BITS_ARB 0x201F
#define WGL_ACCUM_BLUE_BITS_ARB 0x2020
#define WGL_ACCUM_ALPHA_BITS_ARB 0x2021
#define WGL_DEPTH_BITS_ARB 0x2022
#define WGL_STENCIL_BITS_ARB 0x2023
#define WGL_AUX_BUFFERS_ARB 0x2024
#define WGL_NO_ACCELERATION_ARB 0x2025
#define WGL_GENERIC_ACCELERATION_ARB 0x2026
#define WGL_FULL_ACCELERATION_ARB 0x2027
#define WGL_SWAP_EXCHANGE_ARB 0x2028
#define WGL_SWAP_COPY_ARB 0x2029
#define WGL_SWAP_UNDEFINED_ARB 0x202A
#define WGL_TYPE_RGBA_ARB 0x202B
#define WGL_TYPE_COLORINDEX_ARB 0x202C
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues);
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, FLOAT *pfValues);
typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATARBPROC) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
#ifdef WGL_WGLEXT_PROTOTYPES
BOOL WINAPI wglGetPixelFormatAttribivARB (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues);
BOOL WINAPI wglGetPixelFormatAttribfvARB (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, FLOAT *pfValues);
BOOL WINAPI wglChoosePixelFormatARB (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
#endif
#endif /* WGL_ARB_pixel_format */
#ifndef WGL_ARB_pixel_format_float
#define WGL_ARB_pixel_format_float 1
#define WGL_TYPE_RGBA_FLOAT_ARB 0x21A0
#endif /* WGL_ARB_pixel_format_float */
#ifndef WGL_ARB_render_texture
#define WGL_ARB_render_texture 1
#define WGL_BIND_TO_TEXTURE_RGB_ARB 0x2070
#define WGL_BIND_TO_TEXTURE_RGBA_ARB 0x2071
#define WGL_TEXTURE_FORMAT_ARB 0x2072
#define WGL_TEXTURE_TARGET_ARB 0x2073
#define WGL_MIPMAP_TEXTURE_ARB 0x2074
#define WGL_TEXTURE_RGB_ARB 0x2075
#define WGL_TEXTURE_RGBA_ARB 0x2076
#define WGL_NO_TEXTURE_ARB 0x2077
#define WGL_TEXTURE_CUBE_MAP_ARB 0x2078
#define WGL_TEXTURE_1D_ARB 0x2079
#define WGL_TEXTURE_2D_ARB 0x207A
#define WGL_MIPMAP_LEVEL_ARB 0x207B
#define WGL_CUBE_MAP_FACE_ARB 0x207C
#define WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x207D
#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x207E
#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x207F
#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x2080
#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x2081
#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x2082
#define WGL_FRONT_LEFT_ARB 0x2083
#define WGL_FRONT_RIGHT_ARB 0x2084
#define WGL_BACK_LEFT_ARB 0x2085
#define WGL_BACK_RIGHT_ARB 0x2086
#define WGL_AUX0_ARB 0x2087
#define WGL_AUX1_ARB 0x2088
#define WGL_AUX2_ARB 0x2089
#define WGL_AUX3_ARB 0x208A
#define WGL_AUX4_ARB 0x208B
#define WGL_AUX5_ARB 0x208C
#define WGL_AUX6_ARB 0x208D
#define WGL_AUX7_ARB 0x208E
#define WGL_AUX8_ARB 0x208F
#define WGL_AUX9_ARB 0x2090
typedef BOOL (WINAPI * PFNWGLBINDTEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer);
typedef BOOL (WINAPI * PFNWGLRELEASETEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer);
typedef BOOL (WINAPI * PFNWGLSETPBUFFERATTRIBARBPROC) (HPBUFFERARB hPbuffer, const int *piAttribList);
#ifdef WGL_WGLEXT_PROTOTYPES
BOOL WINAPI wglBindTexImageARB (HPBUFFERARB hPbuffer, int iBuffer);
BOOL WINAPI wglReleaseTexImageARB (HPBUFFERARB hPbuffer, int iBuffer);
BOOL WINAPI wglSetPbufferAttribARB (HPBUFFERARB hPbuffer, const int *piAttribList);
#endif
#endif /* WGL_ARB_render_texture */
#ifndef WGL_ARB_robustness_application_isolation
#define WGL_ARB_robustness_application_isolation 1
#define WGL_CONTEXT_RESET_ISOLATION_BIT_ARB 0x00000008
#endif /* WGL_ARB_robustness_application_isolation */
#ifndef WGL_ARB_robustness_share_group_isolation
#define WGL_ARB_robustness_share_group_isolation 1
#endif /* WGL_ARB_robustness_share_group_isolation */
#ifndef WGL_3DFX_multisample
#define WGL_3DFX_multisample 1
#define WGL_SAMPLE_BUFFERS_3DFX 0x2060
#define WGL_SAMPLES_3DFX 0x2061
#endif /* WGL_3DFX_multisample */
#ifndef WGL_3DL_stereo_control
#define WGL_3DL_stereo_control 1
#define WGL_STEREO_EMITTER_ENABLE_3DL 0x2055
#define WGL_STEREO_EMITTER_DISABLE_3DL 0x2056
#define WGL_STEREO_POLARITY_NORMAL_3DL 0x2057
#define WGL_STEREO_POLARITY_INVERT_3DL 0x2058
typedef BOOL (WINAPI * PFNWGLSETSTEREOEMITTERSTATE3DLPROC) (HDC hDC, UINT uState);
#ifdef WGL_WGLEXT_PROTOTYPES
BOOL WINAPI wglSetStereoEmitterState3DL (HDC hDC, UINT uState);
#endif
#endif /* WGL_3DL_stereo_control */
#ifndef WGL_AMD_gpu_association
#define WGL_AMD_gpu_association 1
#define WGL_GPU_VENDOR_AMD 0x1F00
#define WGL_GPU_RENDERER_STRING_AMD 0x1F01
#define WGL_GPU_OPENGL_VERSION_STRING_AMD 0x1F02
#define WGL_GPU_FASTEST_TARGET_GPUS_AMD 0x21A2
#define WGL_GPU_RAM_AMD 0x21A3
#define WGL_GPU_CLOCK_AMD 0x21A4
#define WGL_GPU_NUM_PIPES_AMD 0x21A5
#define WGL_GPU_NUM_SIMD_AMD 0x21A6
#define WGL_GPU_NUM_RB_AMD 0x21A7
#define WGL_GPU_NUM_SPI_AMD 0x21A8
typedef UINT (WINAPI * PFNWGLGETGPUIDSAMDPROC) (UINT maxCount, UINT *ids);
typedef INT (WINAPI * PFNWGLGETGPUINFOAMDPROC) (UINT id, INT property, GLenum dataType, UINT size, void *data);
typedef UINT (WINAPI * PFNWGLGETCONTEXTGPUIDAMDPROC) (HGLRC hglrc);
typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTAMDPROC) (UINT id);
typedef HGLRC (WINAPI * PFNWGLCREATEASSOCIATEDCONTEXTATTRIBSAMDPROC) (UINT id, HGLRC hShareContext, const int *attribList);
typedef BOOL (WINAPI * PFNWGLDELETEASSOCIATEDCONTEXTAMDPROC) (HGLRC hglrc);
typedef BOOL (WINAPI * PFNWGLMAKEASSOCIATEDCONTEXTCURRENTAMDPROC) (HGLRC hglrc);
typedef HGLRC (WINAPI * PFNWGLGETCURRENTASSOCIATEDCONTEXTAMDPROC) (void);
typedef VOID (WINAPI * PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC) (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
#ifdef WGL_WGLEXT_PROTOTYPES
UINT WINAPI wglGetGPUIDsAMD (UINT maxCount, UINT *ids);
INT WINAPI wglGetGPUInfoAMD (UINT id, INT property, GLenum dataType, UINT size, void *data);
UINT WINAPI wglGetContextGPUIDAMD (HGLRC hglrc);
HGLRC WINAPI wglCreateAssociatedContextAMD (UINT id);
HGLRC WINAPI wglCreateAssociatedContextAttribsAMD (UINT id, HGLRC hShareContext, const int *attribList);
BOOL WINAPI wglDeleteAssociatedContextAMD (HGLRC hglrc);
BOOL WINAPI wglMakeAssociatedContextCurrentAMD (HGLRC hglrc);
HGLRC WINAPI wglGetCurrentAssociatedContextAMD (void);
VOID WINAPI wglBlitContextFramebufferAMD (HGLRC dstCtx, GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
#endif
#endif /* WGL_AMD_gpu_association */
#ifndef WGL_ATI_pixel_format_float
#define WGL_ATI_pixel_format_float 1
#define WGL_TYPE_RGBA_FLOAT_ATI 0x21A0
#endif /* WGL_ATI_pixel_format_float */
#ifndef WGL_ATI_render_texture_rectangle
#define WGL_ATI_render_texture_rectangle 1
#define WGL_TEXTURE_RECTANGLE_ATI 0x21A5
#endif /* WGL_ATI_render_texture_rectangle */
#ifndef WGL_EXT_colorspace
#define WGL_EXT_colorspace 1
#define WGL_COLORSPACE_EXT 0x309D
#define WGL_COLORSPACE_SRGB_EXT 0x3089
#define WGL_COLORSPACE_LINEAR_EXT 0x308A
#endif /* WGL_EXT_colorspace */
#ifndef WGL_EXT_create_context_es2_profile
#define WGL_EXT_create_context_es2_profile 1
#define WGL_CONTEXT_ES2_PROFILE_BIT_EXT 0x00000004
#endif /* WGL_EXT_create_context_es2_profile */
#ifndef WGL_EXT_create_context_es_profile
#define WGL_EXT_create_context_es_profile 1
#define WGL_CONTEXT_ES_PROFILE_BIT_EXT 0x00000004
#endif /* WGL_EXT_create_context_es_profile */
#ifndef WGL_EXT_depth_float
#define WGL_EXT_depth_float 1
#define WGL_DEPTH_FLOAT_EXT 0x2040
#endif /* WGL_EXT_depth_float */
#ifndef WGL_EXT_display_color_table
#define WGL_EXT_display_color_table 1
typedef GLboolean (WINAPI * PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC) (GLushort id);
typedef GLboolean (WINAPI * PFNWGLLOADDISPLAYCOLORTABLEEXTPROC) (const GLushort *table, GLuint length);
typedef GLboolean (WINAPI * PFNWGLBINDDISPLAYCOLORTABLEEXTPROC) (GLushort id);
typedef VOID (WINAPI * PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC) (GLushort id);
#ifdef WGL_WGLEXT_PROTOTYPES
GLboolean WINAPI wglCreateDisplayColorTableEXT (GLushort id);
GLboolean WINAPI wglLoadDisplayColorTableEXT (const GLushort *table, GLuint length);
GLboolean WINAPI wglBindDisplayColorTableEXT (GLushort id);
VOID WINAPI wglDestroyDisplayColorTableEXT (GLushort id);
#endif
#endif /* WGL_EXT_display_color_table */
#ifndef WGL_EXT_extensions_string
#define WGL_EXT_extensions_string 1
typedef const char *(WINAPI * PFNWGLGETEXTENSIONSSTRINGEXTPROC) (void);
#ifdef WGL_WGLEXT_PROTOTYPES
const char *WINAPI wglGetExtensionsStringEXT (void);
#endif
#endif /* WGL_EXT_extensions_string */
#ifndef WGL_EXT_framebuffer_sRGB
#define WGL_EXT_framebuffer_sRGB 1
#define WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20A9
#endif /* WGL_EXT_framebuffer_sRGB */
#ifndef WGL_EXT_make_current_read
#define WGL_EXT_make_current_read 1
#define ERROR_INVALID_PIXEL_TYPE_EXT 0x2043
typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTEXTPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCEXTPROC) (void);
#ifdef WGL_WGLEXT_PROTOTYPES
BOOL WINAPI wglMakeContextCurrentEXT (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
HDC WINAPI wglGetCurrentReadDCEXT (void);
#endif
#endif /* WGL_EXT_make_current_read */
#ifndef WGL_EXT_multisample
#define WGL_EXT_multisample 1
#define WGL_SAMPLE_BUFFERS_EXT 0x2041
#define WGL_SAMPLES_EXT 0x2042
#endif /* WGL_EXT_multisample */
#ifndef WGL_EXT_pbuffer
#define WGL_EXT_pbuffer 1
DECLARE_HANDLE(HPBUFFEREXT);
#define WGL_DRAW_TO_PBUFFER_EXT 0x202D
#define WGL_MAX_PBUFFER_PIXELS_EXT 0x202E
#define WGL_MAX_PBUFFER_WIDTH_EXT 0x202F
#define WGL_MAX_PBUFFER_HEIGHT_EXT 0x2030
#define WGL_OPTIMAL_PBUFFER_WIDTH_EXT 0x2031
#define WGL_OPTIMAL_PBUFFER_HEIGHT_EXT 0x2032
#define WGL_PBUFFER_LARGEST_EXT 0x2033
#define WGL_PBUFFER_WIDTH_EXT 0x2034
#define WGL_PBUFFER_HEIGHT_EXT 0x2035
typedef HPBUFFEREXT (WINAPI * PFNWGLCREATEPBUFFEREXTPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
typedef HDC (WINAPI * PFNWGLGETPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer);
typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer, HDC hDC);
typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer);
typedef BOOL (WINAPI * PFNWGLQUERYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer, int iAttribute, int *piValue);
#ifdef WGL_WGLEXT_PROTOTYPES
HPBUFFEREXT WINAPI wglCreatePbufferEXT (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
HDC WINAPI wglGetPbufferDCEXT (HPBUFFEREXT hPbuffer);
int WINAPI wglReleasePbufferDCEXT (HPBUFFEREXT hPbuffer, HDC hDC);
BOOL WINAPI wglDestroyPbufferEXT (HPBUFFEREXT hPbuffer);
BOOL WINAPI wglQueryPbufferEXT (HPBUFFEREXT hPbuffer, int iAttribute, int *piValue);
#endif
#endif /* WGL_EXT_pbuffer */
#ifndef WGL_EXT_pixel_format
#define WGL_EXT_pixel_format 1
#define WGL_NUMBER_PIXEL_FORMATS_EXT 0x2000
#define WGL_DRAW_TO_WINDOW_EXT 0x2001
#define WGL_DRAW_TO_BITMAP_EXT 0x2002
#define WGL_ACCELERATION_EXT 0x2003
#define WGL_NEED_PALETTE_EXT 0x2004
#define WGL_NEED_SYSTEM_PALETTE_EXT 0x2005
#define WGL_SWAP_LAYER_BUFFERS_EXT 0x2006
#define WGL_SWAP_METHOD_EXT 0x2007
#define WGL_NUMBER_OVERLAYS_EXT 0x2008
#define WGL_NUMBER_UNDERLAYS_EXT 0x2009
#define WGL_TRANSPARENT_EXT 0x200A
#define WGL_TRANSPARENT_VALUE_EXT 0x200B
#define WGL_SHARE_DEPTH_EXT 0x200C
#define WGL_SHARE_STENCIL_EXT 0x200D
#define WGL_SHARE_ACCUM_EXT 0x200E
#define WGL_SUPPORT_GDI_EXT 0x200F
#define WGL_SUPPORT_OPENGL_EXT 0x2010
#define WGL_DOUBLE_BUFFER_EXT 0x2011
#define WGL_STEREO_EXT 0x2012
#define WGL_PIXEL_TYPE_EXT 0x2013
#define WGL_COLOR_BITS_EXT 0x2014
#define WGL_RED_BITS_EXT 0x2015
#define WGL_RED_SHIFT_EXT 0x2016
#define WGL_GREEN_BITS_EXT 0x2017
#define WGL_GREEN_SHIFT_EXT 0x2018
#define WGL_BLUE_BITS_EXT 0x2019
#define WGL_BLUE_SHIFT_EXT 0x201A
#define WGL_ALPHA_BITS_EXT 0x201B
#define WGL_ALPHA_SHIFT_EXT 0x201C
#define WGL_ACCUM_BITS_EXT 0x201D
#define WGL_ACCUM_RED_BITS_EXT 0x201E
#define WGL_ACCUM_GREEN_BITS_EXT 0x201F
#define WGL_ACCUM_BLUE_BITS_EXT 0x2020
#define WGL_ACCUM_ALPHA_BITS_EXT 0x2021
#define WGL_DEPTH_BITS_EXT 0x2022
#define WGL_STENCIL_BITS_EXT 0x2023
#define WGL_AUX_BUFFERS_EXT 0x2024
#define WGL_NO_ACCELERATION_EXT 0x2025
#define WGL_GENERIC_ACCELERATION_EXT 0x2026
#define WGL_FULL_ACCELERATION_EXT 0x2027
#define WGL_SWAP_EXCHANGE_EXT 0x2028
#define WGL_SWAP_COPY_EXT 0x2029
#define WGL_SWAP_UNDEFINED_EXT 0x202A
#define WGL_TYPE_RGBA_EXT 0x202B
#define WGL_TYPE_COLORINDEX_EXT 0x202C
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, int *piValues);
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, FLOAT *pfValues);
typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATEXTPROC) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
#ifdef WGL_WGLEXT_PROTOTYPES
BOOL WINAPI wglGetPixelFormatAttribivEXT (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, int *piValues);
BOOL WINAPI wglGetPixelFormatAttribfvEXT (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, FLOAT *pfValues);
BOOL WINAPI wglChoosePixelFormatEXT (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
#endif
#endif /* WGL_EXT_pixel_format */
#ifndef WGL_EXT_pixel_format_packed_float
#define WGL_EXT_pixel_format_packed_float 1
#define WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT 0x20A8
#endif /* WGL_EXT_pixel_format_packed_float */
#ifndef WGL_EXT_swap_control
#define WGL_EXT_swap_control 1
typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int interval);
typedef int (WINAPI * PFNWGLGETSWAPINTERVALEXTPROC) (void);
#ifdef WGL_WGLEXT_PROTOTYPES
BOOL WINAPI wglSwapIntervalEXT (int interval);
int WINAPI wglGetSwapIntervalEXT (void);
#endif
#endif /* WGL_EXT_swap_control */
#ifndef WGL_EXT_swap_control_tear
#define WGL_EXT_swap_control_tear 1
#endif /* WGL_EXT_swap_control_tear */
#ifndef WGL_I3D_digital_video_control
#define WGL_I3D_digital_video_control 1
#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D 0x2050
#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D 0x2051
#define WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D 0x2052
#define WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D 0x2053
typedef BOOL (WINAPI * PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int *piValue);
typedef BOOL (WINAPI * PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int *piValue);
#ifdef WGL_WGLEXT_PROTOTYPES
BOOL WINAPI wglGetDigitalVideoParametersI3D (HDC hDC, int iAttribute, int *piValue);
BOOL WINAPI wglSetDigitalVideoParametersI3D (HDC hDC, int iAttribute, const int *piValue);
#endif
#endif /* WGL_I3D_digital_video_control */
#ifndef WGL_I3D_gamma
#define WGL_I3D_gamma 1
#define WGL_GAMMA_TABLE_SIZE_I3D 0x204E
#define WGL_GAMMA_EXCLUDE_DESKTOP_I3D 0x204F
typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int *piValue);
typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int *piValue);
typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, USHORT *puRed, USHORT *puGreen, USHORT *puBlue);
typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, const USHORT *puRed, const USHORT *puGreen, const USHORT *puBlue);
#ifdef WGL_WGLEXT_PROTOTYPES
BOOL WINAPI wglGetGammaTableParametersI3D (HDC hDC, int iAttribute, int *piValue);
BOOL WINAPI wglSetGammaTableParametersI3D (HDC hDC, int iAttribute, const int *piValue);
BOOL WINAPI wglGetGammaTableI3D (HDC hDC, int iEntries, USHORT *puRed, USHORT *puGreen, USHORT *puBlue);
BOOL WINAPI wglSetGammaTableI3D (HDC hDC, int iEntries, const USHORT *puRed, const USHORT *puGreen, const USHORT *puBlue);
#endif
#endif /* WGL_I3D_gamma */
#ifndef WGL_I3D_genlock
#define WGL_I3D_genlock 1
#define WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044
#define WGL_GENLOCK_SOURCE_EXTERNAL_SYNC_I3D 0x2045
#define WGL_GENLOCK_SOURCE_EXTERNAL_FIELD_I3D 0x2046
#define WGL_GENLOCK_SOURCE_EXTERNAL_TTL_I3D 0x2047
#define WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048
#define WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049
#define WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A
#define WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B
#define WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C
typedef BOOL (WINAPI * PFNWGLENABLEGENLOCKI3DPROC) (HDC hDC);
typedef BOOL (WINAPI * PFNWGLDISABLEGENLOCKI3DPROC) (HDC hDC);
typedef BOOL (WINAPI * PFNWGLISENABLEDGENLOCKI3DPROC) (HDC hDC, BOOL *pFlag);
typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEI3DPROC) (HDC hDC, UINT uSource);
typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEI3DPROC) (HDC hDC, UINT *uSource);
typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT uEdge);
typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT *uEdge);
typedef BOOL (WINAPI * PFNWGLGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT uRate);
typedef BOOL (WINAPI * PFNWGLGETGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT *uRate);
typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT uDelay);
typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT *uDelay);
typedef BOOL (WINAPI * PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC) (HDC hDC, UINT *uMaxLineDelay, UINT *uMaxPixelDelay);
#ifdef WGL_WGLEXT_PROTOTYPES
BOOL WINAPI wglEnableGenlockI3D (HDC hDC);
BOOL WINAPI wglDisableGenlockI3D (HDC hDC);
BOOL WINAPI wglIsEnabledGenlockI3D (HDC hDC, BOOL *pFlag);
BOOL WINAPI wglGenlockSourceI3D (HDC hDC, UINT uSource);
BOOL WINAPI wglGetGenlockSourceI3D (HDC hDC, UINT *uSource);
BOOL WINAPI wglGenlockSourceEdgeI3D (HDC hDC, UINT uEdge);
BOOL WINAPI wglGetGenlockSourceEdgeI3D (HDC hDC, UINT *uEdge);
BOOL WINAPI wglGenlockSampleRateI3D (HDC hDC, UINT uRate);
BOOL WINAPI wglGetGenlockSampleRateI3D (HDC hDC, UINT *uRate);
BOOL WINAPI wglGenlockSourceDelayI3D (HDC hDC, UINT uDelay);
BOOL WINAPI wglGetGenlockSourceDelayI3D (HDC hDC, UINT *uDelay);
BOOL WINAPI wglQueryGenlockMaxSourceDelayI3D (HDC hDC, UINT *uMaxLineDelay, UINT *uMaxPixelDelay);
#endif
#endif /* WGL_I3D_genlock */
#ifndef WGL_I3D_image_buffer
#define WGL_I3D_image_buffer 1
#define WGL_IMAGE_BUFFER_MIN_ACCESS_I3D 0x00000001
#define WGL_IMAGE_BUFFER_LOCK_I3D 0x00000002
typedef LPVOID (WINAPI * PFNWGLCREATEIMAGEBUFFERI3DPROC) (HDC hDC, DWORD dwSize, UINT uFlags);
typedef BOOL (WINAPI * PFNWGLDESTROYIMAGEBUFFERI3DPROC) (HDC hDC, LPVOID pAddress);
typedef BOOL (WINAPI * PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const HANDLE *pEvent, const LPVOID *pAddress, const DWORD *pSize, UINT count);
typedef BOOL (WINAPI * PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const LPVOID *pAddress, UINT count);
#ifdef WGL_WGLEXT_PROTOTYPES
LPVOID WINAPI wglCreateImageBufferI3D (HDC hDC, DWORD dwSize, UINT uFlags);
BOOL WINAPI wglDestroyImageBufferI3D (HDC hDC, LPVOID pAddress);
BOOL WINAPI wglAssociateImageBufferEventsI3D (HDC hDC, const HANDLE *pEvent, const LPVOID *pAddress, const DWORD *pSize, UINT count);
BOOL WINAPI wglReleaseImageBufferEventsI3D (HDC hDC, const LPVOID *pAddress, UINT count);
#endif
#endif /* WGL_I3D_image_buffer */
#ifndef WGL_I3D_swap_frame_lock
#define WGL_I3D_swap_frame_lock 1
typedef BOOL (WINAPI * PFNWGLENABLEFRAMELOCKI3DPROC) (void);
typedef BOOL (WINAPI * PFNWGLDISABLEFRAMELOCKI3DPROC) (void);
typedef BOOL (WINAPI * PFNWGLISENABLEDFRAMELOCKI3DPROC) (BOOL *pFlag);
typedef BOOL (WINAPI * PFNWGLQUERYFRAMELOCKMASTERI3DPROC) (BOOL *pFlag);
#ifdef WGL_WGLEXT_PROTOTYPES
BOOL WINAPI wglEnableFrameLockI3D (void);
BOOL WINAPI wglDisableFrameLockI3D (void);
BOOL WINAPI wglIsEnabledFrameLockI3D (BOOL *pFlag);
BOOL WINAPI wglQueryFrameLockMasterI3D (BOOL *pFlag);
#endif
#endif /* WGL_I3D_swap_frame_lock */
#ifndef WGL_I3D_swap_frame_usage
#define WGL_I3D_swap_frame_usage 1
typedef BOOL (WINAPI * PFNWGLGETFRAMEUSAGEI3DPROC) (float *pUsage);
typedef BOOL (WINAPI * PFNWGLBEGINFRAMETRACKINGI3DPROC) (void);
typedef BOOL (WINAPI * PFNWGLENDFRAMETRACKINGI3DPROC) (void);
typedef BOOL (WINAPI * PFNWGLQUERYFRAMETRACKINGI3DPROC) (DWORD *pFrameCount, DWORD *pMissedFrames, float *pLastMissedUsage);
#ifdef WGL_WGLEXT_PROTOTYPES
BOOL WINAPI wglGetFrameUsageI3D (float *pUsage);
BOOL WINAPI wglBeginFrameTrackingI3D (void);
BOOL WINAPI wglEndFrameTrackingI3D (void);
BOOL WINAPI wglQueryFrameTrackingI3D (DWORD *pFrameCount, DWORD *pMissedFrames, float *pLastMissedUsage);
#endif
#endif /* WGL_I3D_swap_frame_usage */
#ifndef WGL_NV_DX_interop
#define WGL_NV_DX_interop 1
#define WGL_ACCESS_READ_ONLY_NV 0x00000000
#define WGL_ACCESS_READ_WRITE_NV 0x00000001
#define WGL_ACCESS_WRITE_DISCARD_NV 0x00000002
typedef BOOL (WINAPI * PFNWGLDXSETRESOURCESHAREHANDLENVPROC) (void *dxObject, HANDLE shareHandle);
typedef HANDLE (WINAPI * PFNWGLDXOPENDEVICENVPROC) (void *dxDevice);
typedef BOOL (WINAPI * PFNWGLDXCLOSEDEVICENVPROC) (HANDLE hDevice);
typedef HANDLE (WINAPI * PFNWGLDXREGISTEROBJECTNVPROC) (HANDLE hDevice, void *dxObject, GLuint name, GLenum type, GLenum access);
typedef BOOL (WINAPI * PFNWGLDXUNREGISTEROBJECTNVPROC) (HANDLE hDevice, HANDLE hObject);
typedef BOOL (WINAPI * PFNWGLDXOBJECTACCESSNVPROC) (HANDLE hObject, GLenum access);
typedef BOOL (WINAPI * PFNWGLDXLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE *hObjects);
typedef BOOL (WINAPI * PFNWGLDXUNLOCKOBJECTSNVPROC) (HANDLE hDevice, GLint count, HANDLE *hObjects);
#ifdef WGL_WGLEXT_PROTOTYPES
BOOL WINAPI wglDXSetResourceShareHandleNV (void *dxObject, HANDLE shareHandle);
HANDLE WINAPI wglDXOpenDeviceNV (void *dxDevice);
BOOL WINAPI wglDXCloseDeviceNV (HANDLE hDevice);
HANDLE WINAPI wglDXRegisterObjectNV (HANDLE hDevice, void *dxObject, GLuint name, GLenum type, GLenum access);
BOOL WINAPI wglDXUnregisterObjectNV (HANDLE hDevice, HANDLE hObject);
BOOL WINAPI wglDXObjectAccessNV (HANDLE hObject, GLenum access);
BOOL WINAPI wglDXLockObjectsNV (HANDLE hDevice, GLint count, HANDLE *hObjects);
BOOL WINAPI wglDXUnlockObjectsNV (HANDLE hDevice, GLint count, HANDLE *hObjects);
#endif
#endif /* WGL_NV_DX_interop */
#ifndef WGL_NV_DX_interop2
#define WGL_NV_DX_interop2 1
#endif /* WGL_NV_DX_interop2 */
#ifndef WGL_NV_copy_image
#define WGL_NV_copy_image 1
typedef BOOL (WINAPI * PFNWGLCOPYIMAGESUBDATANVPROC) (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
#ifdef WGL_WGLEXT_PROTOTYPES
BOOL WINAPI wglCopyImageSubDataNV (HGLRC hSrcRC, GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, HGLRC hDstRC, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei width, GLsizei height, GLsizei depth);
#endif
#endif /* WGL_NV_copy_image */
#ifndef WGL_NV_delay_before_swap
#define WGL_NV_delay_before_swap 1
typedef BOOL (WINAPI * PFNWGLDELAYBEFORESWAPNVPROC) (HDC hDC, GLfloat seconds);
#ifdef WGL_WGLEXT_PROTOTYPES
BOOL WINAPI wglDelayBeforeSwapNV (HDC hDC, GLfloat seconds);
#endif
#endif /* WGL_NV_delay_before_swap */
#ifndef WGL_NV_float_buffer
#define WGL_NV_float_buffer 1
#define WGL_FLOAT_COMPONENTS_NV 0x20B0
#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1
#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2
#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3
#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4
#define WGL_TEXTURE_FLOAT_R_NV 0x20B5
#define WGL_TEXTURE_FLOAT_RG_NV 0x20B6
#define WGL_TEXTURE_FLOAT_RGB_NV 0x20B7
#define WGL_TEXTURE_FLOAT_RGBA_NV 0x20B8
#endif /* WGL_NV_float_buffer */
#ifndef WGL_NV_gpu_affinity
#define WGL_NV_gpu_affinity 1
DECLARE_HANDLE(HGPUNV);
struct _GPU_DEVICE {
DWORD cb;
CHAR DeviceName[32];
CHAR DeviceString[128];
DWORD Flags;
RECT rcVirtualScreen;
};
typedef struct _GPU_DEVICE *PGPU_DEVICE;
#define ERROR_INCOMPATIBLE_AFFINITY_MASKS_NV 0x20D0
#define ERROR_MISSING_AFFINITY_MASK_NV 0x20D1
typedef BOOL (WINAPI * PFNWGLENUMGPUSNVPROC) (UINT iGpuIndex, HGPUNV *phGpu);
typedef BOOL (WINAPI * PFNWGLENUMGPUDEVICESNVPROC) (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice);
typedef HDC (WINAPI * PFNWGLCREATEAFFINITYDCNVPROC) (const HGPUNV *phGpuList);
typedef BOOL (WINAPI * PFNWGLENUMGPUSFROMAFFINITYDCNVPROC) (HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu);
typedef BOOL (WINAPI * PFNWGLDELETEDCNVPROC) (HDC hdc);
#ifdef WGL_WGLEXT_PROTOTYPES
BOOL WINAPI wglEnumGpusNV (UINT iGpuIndex, HGPUNV *phGpu);
BOOL WINAPI wglEnumGpuDevicesNV (HGPUNV hGpu, UINT iDeviceIndex, PGPU_DEVICE lpGpuDevice);
HDC WINAPI wglCreateAffinityDCNV (const HGPUNV *phGpuList);
BOOL WINAPI wglEnumGpusFromAffinityDCNV (HDC hAffinityDC, UINT iGpuIndex, HGPUNV *hGpu);
BOOL WINAPI wglDeleteDCNV (HDC hdc);
#endif
#endif /* WGL_NV_gpu_affinity */
#ifndef WGL_NV_multigpu_context
#define WGL_NV_multigpu_context 1
#define WGL_CONTEXT_MULTIGPU_ATTRIB_NV 0x20AA
#define WGL_CONTEXT_MULTIGPU_ATTRIB_SINGLE_NV 0x20AB
#define WGL_CONTEXT_MULTIGPU_ATTRIB_AFR_NV 0x20AC
#define WGL_CONTEXT_MULTIGPU_ATTRIB_MULTICAST_NV 0x20AD
#define WGL_CONTEXT_MULTIGPU_ATTRIB_MULTI_DISPLAY_MULTICAST_NV 0x20AE
#endif /* WGL_NV_multigpu_context */
#ifndef WGL_NV_multisample_coverage
#define WGL_NV_multisample_coverage 1
#define WGL_COVERAGE_SAMPLES_NV 0x2042
#define WGL_COLOR_SAMPLES_NV 0x20B9
#endif /* WGL_NV_multisample_coverage */
#ifndef WGL_NV_present_video
#define WGL_NV_present_video 1
DECLARE_HANDLE(HVIDEOOUTPUTDEVICENV);
#define WGL_NUM_VIDEO_SLOTS_NV 0x20F0
typedef int (WINAPI * PFNWGLENUMERATEVIDEODEVICESNVPROC) (HDC hDc, HVIDEOOUTPUTDEVICENV *phDeviceList);
typedef BOOL (WINAPI * PFNWGLBINDVIDEODEVICENVPROC) (HDC hDc, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int *piAttribList);
typedef BOOL (WINAPI * PFNWGLQUERYCURRENTCONTEXTNVPROC) (int iAttribute, int *piValue);
#ifdef WGL_WGLEXT_PROTOTYPES
int WINAPI wglEnumerateVideoDevicesNV (HDC hDc, HVIDEOOUTPUTDEVICENV *phDeviceList);
BOOL WINAPI wglBindVideoDeviceNV (HDC hDc, unsigned int uVideoSlot, HVIDEOOUTPUTDEVICENV hVideoDevice, const int *piAttribList);
BOOL WINAPI wglQueryCurrentContextNV (int iAttribute, int *piValue);
#endif
#endif /* WGL_NV_present_video */
#ifndef WGL_NV_render_depth_texture
#define WGL_NV_render_depth_texture 1
#define WGL_BIND_TO_TEXTURE_DEPTH_NV 0x20A3
#define WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4
#define WGL_DEPTH_TEXTURE_FORMAT_NV 0x20A5
#define WGL_TEXTURE_DEPTH_COMPONENT_NV 0x20A6
#define WGL_DEPTH_COMPONENT_NV 0x20A7
#endif /* WGL_NV_render_depth_texture */
#ifndef WGL_NV_render_texture_rectangle
#define WGL_NV_render_texture_rectangle 1
#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0
#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1
#define WGL_TEXTURE_RECTANGLE_NV 0x20A2
#endif /* WGL_NV_render_texture_rectangle */
#ifndef WGL_NV_swap_group
#define WGL_NV_swap_group 1
typedef BOOL (WINAPI * PFNWGLJOINSWAPGROUPNVPROC) (HDC hDC, GLuint group);
typedef BOOL (WINAPI * PFNWGLBINDSWAPBARRIERNVPROC) (GLuint group, GLuint barrier);
typedef BOOL (WINAPI * PFNWGLQUERYSWAPGROUPNVPROC) (HDC hDC, GLuint *group, GLuint *barrier);
typedef BOOL (WINAPI * PFNWGLQUERYMAXSWAPGROUPSNVPROC) (HDC hDC, GLuint *maxGroups, GLuint *maxBarriers);
typedef BOOL (WINAPI * PFNWGLQUERYFRAMECOUNTNVPROC) (HDC hDC, GLuint *count);
typedef BOOL (WINAPI * PFNWGLRESETFRAMECOUNTNVPROC) (HDC hDC);
#ifdef WGL_WGLEXT_PROTOTYPES
BOOL WINAPI wglJoinSwapGroupNV (HDC hDC, GLuint group);
BOOL WINAPI wglBindSwapBarrierNV (GLuint group, GLuint barrier);
BOOL WINAPI wglQuerySwapGroupNV (HDC hDC, GLuint *group, GLuint *barrier);
BOOL WINAPI wglQueryMaxSwapGroupsNV (HDC hDC, GLuint *maxGroups, GLuint *maxBarriers);
BOOL WINAPI wglQueryFrameCountNV (HDC hDC, GLuint *count);
BOOL WINAPI wglResetFrameCountNV (HDC hDC);
#endif
#endif /* WGL_NV_swap_group */
#ifndef WGL_NV_vertex_array_range
#define WGL_NV_vertex_array_range 1
typedef void *(WINAPI * PFNWGLALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
typedef void (WINAPI * PFNWGLFREEMEMORYNVPROC) (void *pointer);
#ifdef WGL_WGLEXT_PROTOTYPES
void *WINAPI wglAllocateMemoryNV (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
void WINAPI wglFreeMemoryNV (void *pointer);
#endif
#endif /* WGL_NV_vertex_array_range */
#ifndef WGL_NV_video_capture
#define WGL_NV_video_capture 1
DECLARE_HANDLE(HVIDEOINPUTDEVICENV);
#define WGL_UNIQUE_ID_NV 0x20CE
#define WGL_NUM_VIDEO_CAPTURE_SLOTS_NV 0x20CF
typedef BOOL (WINAPI * PFNWGLBINDVIDEOCAPTUREDEVICENVPROC) (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice);
typedef UINT (WINAPI * PFNWGLENUMERATEVIDEOCAPTUREDEVICESNVPROC) (HDC hDc, HVIDEOINPUTDEVICENV *phDeviceList);
typedef BOOL (WINAPI * PFNWGLLOCKVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
typedef BOOL (WINAPI * PFNWGLQUERYVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int *piValue);
typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOCAPTUREDEVICENVPROC) (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
#ifdef WGL_WGLEXT_PROTOTYPES
BOOL WINAPI wglBindVideoCaptureDeviceNV (UINT uVideoSlot, HVIDEOINPUTDEVICENV hDevice);
UINT WINAPI wglEnumerateVideoCaptureDevicesNV (HDC hDc, HVIDEOINPUTDEVICENV *phDeviceList);
BOOL WINAPI wglLockVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
BOOL WINAPI wglQueryVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice, int iAttribute, int *piValue);
BOOL WINAPI wglReleaseVideoCaptureDeviceNV (HDC hDc, HVIDEOINPUTDEVICENV hDevice);
#endif
#endif /* WGL_NV_video_capture */
#ifndef WGL_NV_video_output
#define WGL_NV_video_output 1
DECLARE_HANDLE(HPVIDEODEV);
#define WGL_BIND_TO_VIDEO_RGB_NV 0x20C0
#define WGL_BIND_TO_VIDEO_RGBA_NV 0x20C1
#define WGL_BIND_TO_VIDEO_RGB_AND_DEPTH_NV 0x20C2
#define WGL_VIDEO_OUT_COLOR_NV 0x20C3
#define WGL_VIDEO_OUT_ALPHA_NV 0x20C4
#define WGL_VIDEO_OUT_DEPTH_NV 0x20C5
#define WGL_VIDEO_OUT_COLOR_AND_ALPHA_NV 0x20C6
#define WGL_VIDEO_OUT_COLOR_AND_DEPTH_NV 0x20C7
#define WGL_VIDEO_OUT_FRAME 0x20C8
#define WGL_VIDEO_OUT_FIELD_1 0x20C9
#define WGL_VIDEO_OUT_FIELD_2 0x20CA
#define WGL_VIDEO_OUT_STACKED_FIELDS_1_2 0x20CB
#define WGL_VIDEO_OUT_STACKED_FIELDS_2_1 0x20CC
typedef BOOL (WINAPI * PFNWGLGETVIDEODEVICENVPROC) (HDC hDC, int numDevices, HPVIDEODEV *hVideoDevice);
typedef BOOL (WINAPI * PFNWGLRELEASEVIDEODEVICENVPROC) (HPVIDEODEV hVideoDevice);
typedef BOOL (WINAPI * PFNWGLBINDVIDEOIMAGENVPROC) (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer);
typedef BOOL (WINAPI * PFNWGLRELEASEVIDEOIMAGENVPROC) (HPBUFFERARB hPbuffer, int iVideoBuffer);
typedef BOOL (WINAPI * PFNWGLSENDPBUFFERTOVIDEONVPROC) (HPBUFFERARB hPbuffer, int iBufferType, unsigned long *pulCounterPbuffer, BOOL bBlock);
typedef BOOL (WINAPI * PFNWGLGETVIDEOINFONVPROC) (HPVIDEODEV hpVideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo);
#ifdef WGL_WGLEXT_PROTOTYPES
BOOL WINAPI wglGetVideoDeviceNV (HDC hDC, int numDevices, HPVIDEODEV *hVideoDevice);
BOOL WINAPI wglReleaseVideoDeviceNV (HPVIDEODEV hVideoDevice);
BOOL WINAPI wglBindVideoImageNV (HPVIDEODEV hVideoDevice, HPBUFFERARB hPbuffer, int iVideoBuffer);
BOOL WINAPI wglReleaseVideoImageNV (HPBUFFERARB hPbuffer, int iVideoBuffer);
BOOL WINAPI wglSendPbufferToVideoNV (HPBUFFERARB hPbuffer, int iBufferType, unsigned long *pulCounterPbuffer, BOOL bBlock);
BOOL WINAPI wglGetVideoInfoNV (HPVIDEODEV hpVideoDevice, unsigned long *pulCounterOutputPbuffer, unsigned long *pulCounterOutputVideo);
#endif
#endif /* WGL_NV_video_output */
#ifndef WGL_OML_sync_control
#define WGL_OML_sync_control 1
typedef BOOL (WINAPI * PFNWGLGETSYNCVALUESOMLPROC) (HDC hdc, INT64 *ust, INT64 *msc, INT64 *sbc);
typedef BOOL (WINAPI * PFNWGLGETMSCRATEOMLPROC) (HDC hdc, INT32 *numerator, INT32 *denominator);
typedef INT64 (WINAPI * PFNWGLSWAPBUFFERSMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder);
typedef INT64 (WINAPI * PFNWGLSWAPLAYERBUFFERSMSCOMLPROC) (HDC hdc, INT fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder);
typedef BOOL (WINAPI * PFNWGLWAITFORMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64 *ust, INT64 *msc, INT64 *sbc);
typedef BOOL (WINAPI * PFNWGLWAITFORSBCOMLPROC) (HDC hdc, INT64 target_sbc, INT64 *ust, INT64 *msc, INT64 *sbc);
#ifdef WGL_WGLEXT_PROTOTYPES
BOOL WINAPI wglGetSyncValuesOML (HDC hdc, INT64 *ust, INT64 *msc, INT64 *sbc);
BOOL WINAPI wglGetMscRateOML (HDC hdc, INT32 *numerator, INT32 *denominator);
INT64 WINAPI wglSwapBuffersMscOML (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder);
INT64 WINAPI wglSwapLayerBuffersMscOML (HDC hdc, INT fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder);
BOOL WINAPI wglWaitForMscOML (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64 *ust, INT64 *msc, INT64 *sbc);
BOOL WINAPI wglWaitForSbcOML (HDC hdc, INT64 target_sbc, INT64 *ust, INT64 *msc, INT64 *sbc);
#endif
#endif /* WGL_OML_sync_control */
#ifdef __cplusplus
}
#endif
#endif

@ -126,6 +126,18 @@ public:
return ((r * 13063) + (g * 25647) + (b * 4981)) / 65536;
}
/**
* Make a colour dark grey, for specialized 32bpp remapping.
* @param colour the colour to make dark.
* @return the new colour, now darker.
*/
static inline Colour MakeDark(Colour colour)
{
uint8 d = MakeDark(colour.r, colour.g, colour.b);
return Colour(d, d, d);
}
/**
* Make a colour grey - based.
* @param colour the colour to make grey.
@ -156,6 +168,16 @@ public:
return ReallyAdjustBrightness(colour, brightness);
}
static inline uint8 GetColourBrightness(Colour colour)
{
uint8 rgb_max = std::max(colour.r, std::max(colour.g, colour.b));
/* Black pixel (8bpp or old 32bpp image), so use default value */
if (rgb_max == 0) rgb_max = DEFAULT_BRIGHTNESS;
return rgb_max;
}
};
#endif /* BLITTER_32BPP_BASE_HPP */

@ -263,7 +263,7 @@ void Blitter_32bppOptimized::Draw(Blitter::BlitterParams *bp, BlitterMode mode,
}
}
Sprite *Blitter_32bppOptimized::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
template <bool Tpal_to_rgb> Sprite *Blitter_32bppOptimized::EncodeInternal(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
{
/* streams of pixels (a, r, g, b channels)
*
@ -336,7 +336,7 @@ Sprite *Blitter_32bppOptimized::Encode(const SpriteLoader::Sprite *sprite, Alloc
dst_px->a = a;
if (a != 0 && a != 255) flags |= SF_TRANSLUCENT;
*dst_n = src->m;
if (src->m != 0) {
if (Tpal_to_rgb && src->m != 0) {
flags &= ~SF_NO_REMAP;
if (src->m >= PALETTE_ANIM_START) flags &= ~SF_NO_ANIM;
@ -416,3 +416,11 @@ Sprite *Blitter_32bppOptimized::Encode(const SpriteLoader::Sprite *sprite, Alloc
return dest_sprite;
}
template Sprite *Blitter_32bppOptimized::EncodeInternal<true>(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
template Sprite *Blitter_32bppOptimized::EncodeInternal<false>(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
Sprite *Blitter_32bppOptimized::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
{
return this->EncodeInternal<true>(sprite, allocator);
}

@ -28,6 +28,9 @@ public:
const char *GetName() override { return "32bpp-optimized"; }
template <BlitterMode mode> void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom);
protected:
template <bool Tpal_to_rgb> Sprite *EncodeInternal(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
};
/** Factory for the optimised 32 bpp blitter (without palette animation). */

@ -43,7 +43,7 @@ typedef union ALIGN(16) 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_LOW_CONTROL_MASK _mm_setr_epi8( 0, 2, 4, 6, 8, 10, 12, 14, -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)

@ -0,0 +1,552 @@
/* $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 40bpp_optimized.cpp Implementation of the optimized 40 bpp blitter. */
#include "../stdafx.h"
#include "../zoom_func.h"
#include "../settings_type.h"
#include "../video/video_driver.hpp"
#include "40bpp_anim.hpp"
#include "common.hpp"
#include "../table/sprites.h"
#include "../safeguards.h"
/** Instantiation of the 40bpp with animation blitter factory. */
static FBlitter_40bppAnim iFBlitter_40bppAnim;
/** Cached black value. */
static const Colour _black_colour(0, 0, 0);
void Blitter_40bppAnim::SetPixel(void *video, int x, int y, uint8 colour)
{
if (_screen_disable_anim) {
Blitter_32bppOptimized::SetPixel(video, x, y, colour);
} else {
*((Colour *)video + x + y * _screen.pitch) = _black_colour;
VideoDriver::GetInstance()->GetAnimBuffer()[((uint32 *)video - (uint32 *)_screen.dst_ptr) + x + y * _screen.pitch] = colour;
}
}
void Blitter_40bppAnim::SetRect(void *video, int x, int y, const uint8 *colours, uint lines, uint width, uint pitch)
{
if (_screen_disable_anim) {
Blitter_32bppOptimized::SetRect(video, x, y, colours, lines, width, pitch);
} else {
Colour *dst = (Colour *)video + x + y * _screen.pitch;
uint8 *dstanim = ((uint32 *)dst - (uint32 *)_screen.dst_ptr) + VideoDriver::GetInstance()->GetAnimBuffer();
do {
memset((uint32 *)dst, _black_colour.data, width * sizeof(uint32));
memcpy(dstanim, colours, width * sizeof(uint8));
dst += _screen.pitch;
dstanim += _screen.pitch;
colours += pitch;
} while (--lines);
}
}
void Blitter_40bppAnim::SetRect32(void *video, int x, int y, const uint32 *colours, uint lines, uint width, uint pitch)
{
if (_screen_disable_anim) {
Blitter_32bppOptimized::SetRect32(video, x, y, colours, lines, width, pitch);
} else {
Colour *dst = (Colour *)video + x + y * _screen.pitch;
uint8 *dstanim = ((uint32 *)dst - (uint32 *)_screen.dst_ptr) + VideoDriver::GetInstance()->GetAnimBuffer();
do {
memcpy((uint32 *)dst, colours, width * sizeof(uint32));
memset(dstanim, 0, width * sizeof(uint8));
dst += _screen.pitch;
dstanim += _screen.pitch;
colours += pitch;
} while (--lines);
}
}
void Blitter_40bppAnim::DrawRect(void *video, int width, int height, uint8 colour)
{
if (_screen_disable_anim) {
/* This means our output is not to the screen, so we can't be doing any animation stuff, so use our parent DrawRect() */
Blitter_32bppOptimized::DrawRect(video, width, height, colour);
return;
}
assert(VideoDriver::GetInstance()->GetAnimBuffer() != nullptr);
uint8 *anim_line = ((uint32 *)video - (uint32 *)_screen.dst_ptr) + VideoDriver::GetInstance()->GetAnimBuffer();
do {
Colour *dst = (Colour *)video;
uint8 *anim = anim_line;
for (int i = width; i > 0; i--) {
*dst = _black_colour;
*anim = colour;
dst++;
anim++;
}
video = (uint32 *)video + _screen.pitch;
anim_line += _screen.pitch;
} while (--height);
}
void Blitter_40bppAnim::DrawLine(void *video, int x, int y, int x2, int y2, int screen_width, int screen_height, uint8 colour, int width, int dash)
{
if (_screen_disable_anim) {
/* This means our output is not to the screen, so we can't be doing any animation stuff, so use our parent DrawRect() */
Blitter_32bppOptimized::DrawLine(video, x, y, x2, y2, screen_width, screen_height, colour, width, dash);
return;
}
assert(VideoDriver::GetInstance()->GetAnimBuffer() != nullptr);
uint8 *anim = ((uint32 *)video - (uint32 *)_screen.dst_ptr) + VideoDriver::GetInstance()->GetAnimBuffer();
this->DrawLineGeneric(x, y, x2, y2, screen_width, screen_height, width, dash, [=](int x, int y) {
*((Colour *)video + x + y * _screen.pitch) = _black_colour;
*(anim + x + y * _screen.pitch) = colour;
});
}
/**
* 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>
inline void Blitter_40bppAnim::Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom)
{
const SpriteData *src = (const SpriteData *)bp->sprite;
/* src_px : each line begins with uint32 n = 'number of bytes in this line',
* then n times is the Colour struct for this line */
const Colour *src_px = (const Colour *)(src->data + src->offset[zoom][0]);
/* src_n : each line begins with uint32 n = 'number of bytes in this line',
* then interleaved stream of 'm' and 'n' channels. 'm' is remap,
* 'n' is number of bytes with the same alpha channel class */
const uint16 *src_n = (const uint16 *)(src->data + src->offset[zoom][1]);
/* skip upper lines in src_px and src_n */
for (uint i = bp->skip_top; i != 0; i--) {
src_px = (const Colour *)((const byte *)src_px + *(const uint32 *)src_px);
src_n = (const uint16 *)((const byte *)src_n + *(const uint32 *)src_n);
}
/* skip lines in dst */
Colour *dst = (Colour *)bp->dst + bp->top * bp->pitch + bp->left;
assert(VideoDriver::GetInstance()->GetAnimBuffer() != nullptr);
uint8 *anim = VideoDriver::GetInstance()->GetAnimBuffer() + ((uint32 *)bp->dst - (uint32 *)_screen.dst_ptr) + bp->top * bp->pitch + bp->left;
/* store so we don't have to access it via bp everytime (compiler assumes pointer aliasing) */
const byte *remap = bp->remap;
for (int y = 0; y < bp->height; y++) {
/* next dst line begins here */
Colour *dst_ln = dst + bp->pitch;
uint8 *anim_ln = anim + bp->pitch;
/* next src line begins here */
const Colour *src_px_ln = (const Colour *)((const byte *)src_px + *(const uint32 *)src_px);
src_px++;
/* next src_n line begins here */
const uint16 *src_n_ln = (const uint16 *)((const byte *)src_n + *(const uint32 *)src_n);
src_n += 2;
/* we will end this line when we reach this point */
Colour *dst_end = dst + bp->skip_left;
/* number of pixels with the same alpha channel class */
uint n;
while (dst < dst_end) {
n = *src_n++;
if (src_px->a == 0) {
dst += n;
src_px++;
src_n++;
if (dst > dst_end) anim += dst - dst_end;
} else {
if (dst + n > dst_end) {
uint d = dst_end - dst;
src_px += d;
src_n += d;
dst = dst_end - bp->skip_left;
dst_end = dst + bp->width;
n = std::min<uint>(n - d, (uint)bp->width);
goto draw;
}
dst += n;
src_px += n;
src_n += n;
}
}
dst -= bp->skip_left;
dst_end -= bp->skip_left;
dst_end += bp->width;
while (dst < dst_end) {
n = std::min<uint>(*src_n++, (uint)(dst_end - dst));
if (src_px->a == 0) {
anim += n;
dst += n;
src_px++;
src_n++;
continue;
}
draw:;
switch (mode) {
case BM_COLOUR_REMAP:
case BM_CRASH_REMAP:
if (src_px->a == 255) {
do {
uint8 m = GB(*src_n, 0, 8);
/* In case the m-channel is zero, only apply the crash remap by darkening the RGB colour. */
if (m == 0) {
*dst = mode == BM_CRASH_REMAP ? this->MakeDark(*src_px) : *src_px;
*anim = 0;
} else {
uint r = remap[m];
if (r != 0) {
*dst = src_px->data;
*anim = r;
}
}
anim++;
dst++;
src_px++;
src_n++;
} while (--n != 0);
} else {
do {
uint8 m = GB(*src_n, 0, 8);
Colour b = this->RealizeBlendedColour(*anim, *dst);
if (m == 0) {
Colour c = mode == BM_CRASH_REMAP ? this->MakeDark(*src_px) : *src_px;
*dst = this->ComposeColourRGBANoCheck(c.r, c.g, c.b, src_px->a, b);
*anim = 0;
} else {
uint r = remap[m];
if (r != 0) {
*dst = this->ComposeColourPANoCheck(this->LookupColourInPalette(r), src_px->a, b);
*anim = 0; // Animation colours don't work with alpha-blending.
}
}
anim++;
dst++;
src_px++;
src_n++;
} while (--n != 0);
}
break;
case BM_BLACK_REMAP:
do {
*anim++ = 0;
*dst++ = _black_colour;
src_px++;
src_n++;
} while (--n != 0);
break;
case BM_TRANSPARENT:
/* TODO -- We make an assumption here that the remap in fact is transparency, not some colour.
* This is never a problem with the code we produce, but newgrfs can make it fail... or at least:
* we produce a result the newgrf maker didn't expect ;) */
/* Make the current colour a bit more black, so it looks like this image is transparent */
src_n += n;
if (src_px->a == 255) {
src_px += n;
do {
/* If the anim buffer contains a color value, the image composition will
* only look at the RGB brightness value. As such, we can simply darken the
* RGB value to darken the anim color. */
Colour b = *anim != 0 ? Colour(this->GetColourBrightness(*dst), 0, 0) : *dst;
*dst = this->MakeTransparent(b, 3, 4);
anim++;
dst++;
} while (--n != 0);
} else {
do {
Colour b = this->RealizeBlendedColour(*anim, *dst);
*dst = this->MakeTransparent(b, (256 * 4 - src_px->a), 256 * 4);
*anim = 0; // Animation colours don't work with alpha-blending.
anim++;
dst++;
src_px++;
} while (--n != 0);
}
break;
default:
if (src_px->a == 255) {
do {
*anim++ = GB(*src_n, 0, 8);
*dst++ = src_px->data;
src_px++;
src_n++;
} while (--n != 0);
break;
} else {
do {
uint8 m = GB(*src_n, 0, 8);
Colour b = this->RealizeBlendedColour(*anim, *dst);
if (m == 0) {
*dst = this->ComposeColourRGBANoCheck(src_px->r, src_px->g, src_px->b, src_px->a, b);
*anim = 0;
} else {
*dst = this->ComposeColourPANoCheck(this->LookupColourInPalette(m), src_px->a, b);
*anim = m;
}
anim++;
dst++;
src_px++;
src_n++;
} while (--n != 0);
}
}
}
dst = dst_ln;
anim = anim_ln;
src_px = src_px_ln;
src_n = src_n_ln;
}
}
/**
* 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_40bppAnim::Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
{
assert(_screen.dst_ptr != nullptr);
if (_screen_disable_anim || VideoDriver::GetInstance()->GetAnimBuffer() == nullptr) {
/* This means our output is not to the screen, so we can't be doing any animation stuff, so use our parent Draw() */
Blitter_32bppOptimized::Draw(bp, mode, zoom);
return;
}
switch (mode) {
default: NOT_REACHED();
case BM_NORMAL: Draw<BM_NORMAL> (bp, zoom); return;
case BM_COLOUR_REMAP: Draw<BM_COLOUR_REMAP>(bp, zoom); return;
case BM_TRANSPARENT: Draw<BM_TRANSPARENT> (bp, zoom); return;
case BM_CRASH_REMAP: Draw<BM_CRASH_REMAP> (bp, zoom); return;
case BM_BLACK_REMAP: Draw<BM_BLACK_REMAP> (bp, zoom); return;
}
}
void Blitter_40bppAnim::DrawColourMappingRect(void *dst, int width, int height, PaletteID pal)
{
if (_screen_disable_anim) {
/* This means our output is not to the screen, so we can't be doing any animation stuff, so use our parent DrawColourMappingRect() */
Blitter_32bppOptimized::DrawColourMappingRect(dst, width, height, pal);
return;
}
Colour *udst = (Colour *)dst;
uint8 *anim = VideoDriver::GetInstance()->GetAnimBuffer() + ((uint32 *)dst - (uint32 *)_screen.dst_ptr);
if (pal == PALETTE_TO_TRANSPARENT) {
/* If the anim buffer contains a color value, the image composition will
* only look at the RGB brightness value. As such, we can simply darken the
* RGB value to darken the anim color. */
do {
for (int i = 0; i != width; i++) {
Colour b = *anim != 0 ? Colour(this->GetColourBrightness(*udst), 0, 0) : *udst;
*udst = MakeTransparent(b, 154);
udst++;
anim++;
}
udst = udst - width + _screen.pitch;
anim = anim - width + _screen.pitch;
} while (--height);
} else if (pal == PALETTE_NEWSPAPER) {
const uint8 *remap = GetNonSprite(pal, ST_RECOLOUR) + 1;
do {
for (int i = 0; i != width; i++) {
if (*anim == 0) *udst = MakeGrey(*udst);
*anim = remap[*anim];
udst++;
anim++;
}
udst = udst - width + _screen.pitch;
anim = anim - width + _screen.pitch;
} while (--height);
} else {
const uint8 *remap = GetNonSprite(pal, ST_RECOLOUR) + 1;
do {
for (int i = 0; i != width; i++) {
*anim = remap[*anim];
anim++;
}
anim = anim - width + _screen.pitch;
} while (--height);
}
}
Sprite *Blitter_40bppAnim::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
{
return this->EncodeInternal<false>(sprite, allocator);
}
void Blitter_40bppAnim::CopyFromBuffer(void *video, const void *src, int width, int height)
{
assert(!_screen_disable_anim);
assert(video >= _screen.dst_ptr && video <= (uint32 *)_screen.dst_ptr + _screen.width + _screen.height * _screen.pitch);
uint32 *dst = (uint32 *)video;
const uint32 *usrc = (const uint32 *)src;
uint8 *anim_buf = VideoDriver::GetInstance()->GetAnimBuffer();
if (anim_buf == nullptr) return;
uint8 *anim_line = ((uint32 *)video - (uint32 *)_screen.dst_ptr) + anim_buf;
for (; height > 0; height--) {
memcpy(dst, usrc, width * sizeof(uint32));
usrc += width;
dst += _screen.pitch;
/* Copy back the anim-buffer */
memcpy(anim_line, usrc, width * sizeof(uint8));
usrc = (const uint32 *)((const uint8 *)usrc + width);
anim_line += _screen.pitch;
}
}
void Blitter_40bppAnim::CopyToBuffer(const void *video, void *dst, int width, int height)
{
assert(!_screen_disable_anim);
assert(video >= _screen.dst_ptr && video <= (uint32 *)_screen.dst_ptr + _screen.width + _screen.height * _screen.pitch);
uint32 *udst = (uint32 *)dst;
const uint32 *src = (const uint32 *)video;
uint8 *anim_buf = VideoDriver::GetInstance()->GetAnimBuffer();
if (anim_buf == nullptr) return;
const uint8 *anim_line = ((const uint32 *)video - (uint32 *)_screen.dst_ptr) + anim_buf;
for (; height > 0; height--) {
memcpy(udst, src, width * sizeof(uint32));
src += _screen.pitch;
udst += width;
/* Copy the anim-buffer */
memcpy(udst, anim_line, width * sizeof(uint8));
udst = (uint32 *)((uint8 *)udst + width);
anim_line += _screen.pitch;
}
}
void Blitter_40bppAnim::CopyImageToBuffer(const void *video, void *dst, int width, int height, int dst_pitch)
{
uint8 *anim_buf = VideoDriver::GetInstance()->GetAnimBuffer();
if (anim_buf == nullptr) {
Blitter_32bppOptimized::CopyImageToBuffer(video, dst, width, height, dst_pitch);
return;
}
uint32 *udst = (uint32 *)dst;
const uint32 *src = (const uint32 *)video;
const uint8 *anim_line = ((const uint32 *)video - (uint32 *)_screen.dst_ptr) + anim_buf;
for (; height > 0; height--) {
for (int x = 0; x < width; x++) {
udst[x] = this->RealizeBlendedColour(anim_line[x], src[x]).data;
}
src += _screen.pitch;
anim_line += _screen.pitch;
udst += dst_pitch;
}
}
void Blitter_40bppAnim::ScrollBuffer(void *video, int left, int top, int width, int height, int scroll_x, int scroll_y)
{
assert(!_screen_disable_anim);
assert(video >= _screen.dst_ptr && video <= (uint32 *)_screen.dst_ptr + _screen.width + _screen.height * _screen.pitch);
uint8 *anim_buf = VideoDriver::GetInstance()->GetAnimBuffer();
uint8 *dst, *src;
/* We need to scroll the anim-buffer too */
if (scroll_y > 0) {
dst = anim_buf + left + (top + height - 1) * _screen.pitch;
src = dst - scroll_y * _screen.pitch;
/* Adjust left & width */
if (scroll_x >= 0) {
dst += scroll_x;
} else {
src -= scroll_x;
}
uint tw = width + (scroll_x >= 0 ? -scroll_x : scroll_x);
uint th = height - scroll_y;
for (; th > 0; th--) {
memcpy(dst, src, tw * sizeof(uint8));
src -= _screen.pitch;
dst -= _screen.pitch;
}
} else {
/* Calculate pointers */
dst = anim_buf + left + top * _screen.pitch;
src = dst - scroll_y * _screen.pitch;
/* Adjust left & width */
if (scroll_x >= 0) {
dst += scroll_x;
} else {
src -= scroll_x;
}
/* the y-displacement may be 0 therefore we have to use memmove,
* because source and destination may overlap */
uint tw = width + (scroll_x >= 0 ? -scroll_x : scroll_x);
uint th = height + scroll_y;
for (; th > 0; th--) {
memmove(dst, src, tw * sizeof(uint8));
src += _screen.pitch;
dst += _screen.pitch;
}
}
Blitter_32bppBase::ScrollBuffer(video, left, top, width, height, scroll_x, scroll_y);
}
int Blitter_40bppAnim::BufferSize(int width, int height)
{
return width * height * (sizeof(uint32) + sizeof(uint8));
}
Blitter::PaletteAnimation Blitter_40bppAnim::UsePaletteAnimation()
{
return Blitter::PALETTE_ANIMATION_VIDEO_BACKEND;
}
bool Blitter_40bppAnim::NeedsAnimationBuffer()
{
return true;
}

@ -0,0 +1,66 @@
/* $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 40bpp_optimized.hpp Optimized 40 bpp blitter. */
#ifndef BLITTER_40BPP_OPTIMIZED_HPP
#define BLITTER_40BPP_OPTIMIZED_HPP
#include "32bpp_optimized.hpp"
#include "../video/video_driver.hpp"
/** The optimized 40 bpp blitter (for OpenGL video driver). */
class Blitter_40bppAnim : public Blitter_32bppOptimized {
public:
// void *MoveTo(void *video, int x, int y) override;
void SetPixel(void *video, int x, int y, uint8 colour) override;
void SetRect(void *video, int x, int y, const uint8 *colours, uint lines, uint width, uint pitch) override;
void SetRect32(void *video, int x, int y, const uint32 *colours, uint lines, uint width, uint pitch) override;
void DrawRect(void *video, int width, int height, uint8 colour) override;
void DrawLine(void *video, int x, int y, int x2, int y2, int screen_width, int screen_height, uint8 colour, int width, int dash) override;
void CopyFromBuffer(void *video, const void *src, int width, int height) override;
void CopyToBuffer(const void *video, void *dst, int width, int height) override;
void CopyImageToBuffer(const void *video, void *dst, int width, int height, int dst_pitch) override;
void ScrollBuffer(void *video, int left, int top, int width, int height, int scroll_x, int scroll_y) override;
void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override;
void DrawColourMappingRect(void *dst, int width, int height, PaletteID pal) override;
Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) override;
int BufferSize(int width, int height) override;
Blitter::PaletteAnimation UsePaletteAnimation() override;
bool NeedsAnimationBuffer() override;
const char *GetName() override { return "40bpp-anim"; }
int GetBytesPerPixel() override { return 5; }
template <BlitterMode mode> void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom);
protected:
static inline Colour RealizeBlendedColour(uint8 anim, Colour c)
{
return anim != 0 ? AdjustBrightness(LookupColourInPalette(anim), GetColourBrightness(c)) : c;
}
};
/** Factory for the 40 bpp animated blitter (for OpenGL). */
class FBlitter_40bppAnim : public BlitterFactory {
protected:
bool IsUsable() const override
{
return VideoDriver::GetInstance() == nullptr || VideoDriver::GetInstance()->HasAnimBuffer();
}
public:
FBlitter_40bppAnim() : BlitterFactory("40bpp-anim", "40bpp Animation Blitter (OpenGL)") {}
Blitter *CreateInstance() override { return new Blitter_40bppAnim(); }
};
#endif /* BLITTER_40BPP_OPTIMIZED_HPP */

@ -32,6 +32,13 @@ add_files(
CONDITION NOT OPTION_DEDICATED AND SSE_FOUND
)
add_files(
40bpp_anim.cpp
40bpp_anim.hpp
CONDITION NOT OPTION_DEDICATED AND OPENGL_FOUND
)
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
set_compile_flags(
32bpp_anim_sse2.cpp

@ -43,7 +43,7 @@ DECLARE_ENUM_AS_BIT_SET(BlitterSpriteFlags);
/**
* How all blitters should look like. Extend this class to make your own.
*/
class Blitter {
class Blitter : public SpriteEncoder {
public:
/** Parameters related to blitting. */
struct BlitterParams {
@ -77,6 +77,11 @@ public:
*/
virtual uint8 GetScreenDepth() = 0;
bool Is32BppSupported() override
{
return this->GetScreenDepth() > 8;
}
/**
* Draw an image to the screen, given an amount of params defined above.
*/
@ -93,11 +98,6 @@ public:
*/
virtual void DrawColourMappingRect(void *dst, int width, int height, PaletteID pal) = 0;
/**
* Convert a sprite from the loader to our own format.
*/
virtual Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) = 0;
/**
* Move the destination pointer the requested amount x and y, keeping in mind
* any pitch and bpp of the renderer.
@ -228,6 +228,14 @@ public:
*/
virtual Blitter::PaletteAnimation UsePaletteAnimation() = 0;
/**
* Does this blitter require a separate animation buffer from the video backend?
*/
virtual bool NeedsAnimationBuffer()
{
return false;
}
/**
* Get the name of the blitter, the same as the Factory-instance returns.
*/

@ -73,6 +73,15 @@ protected:
}
}
/**
* Is the blitter usable with the current drivers and hardware config?
* @return True if the blitter can be instantiated.
*/
virtual bool IsUsable() const
{
return true;
}
public:
virtual ~BlitterFactory()
{
@ -119,7 +128,7 @@ public:
for (; it != GetBlitters().end(); it++) {
BlitterFactory *b = (*it).second;
if (strcasecmp(bname, b->name.c_str()) == 0) {
return b;
return b->IsUsable() ? b : nullptr;
}
}
return nullptr;

@ -182,7 +182,7 @@ static void debug_print(const char *dbg, const char *buf)
* crashing, and NetworkTextMessage includes these */
#if defined(_WIN32)
if (strcmp(dbg, "desync") != 0) {
TCHAR system_buf[512];
wchar_t system_buf[512];
convert_to_fs(buffer, system_buf, lengthof(system_buf), true);
_fputts(system_buf, stderr);
}

@ -340,7 +340,7 @@ std::string FioFindDirectory(Subdirectory subdir)
static FILE *FioFOpenFileSp(const std::string &filename, const char *mode, Searchpath sp, Subdirectory subdir, size_t *filesize, std::string *output_filename)
{
#if defined(_WIN32) && defined(UNICODE)
#if defined(_WIN32)
/* fopen is implemented as a define with ellipses for
* Unicode support (prepend an L). As we are not sending
* a string, but a variable, it 'renames' the variable,

@ -107,14 +107,14 @@ DECLARE_ENUM_AS_BIT_SET(TarScanner::Mode)
struct DIR;
struct dirent { // XXX - only d_name implemented
TCHAR *d_name; // name of found file
wchar_t *d_name; // name of found file
/* little hack which will point to parent DIR struct which will
* save us a call to GetFileAttributes if we want information
* about the file (for example in function fio_bla) */
DIR *dir;
};
DIR *opendir(const TCHAR *path);
DIR *opendir(const wchar_t *path);
struct dirent *readdir(DIR *d);
int closedir(DIR *d);
#else

@ -274,17 +274,12 @@ void TrueTypeFontCache::SetGlyphPtr(GlyphID key, const GlyphEntry *glyph, bool d
this->glyph_to_sprite[GB(key, 8, 8)][GB(key, 0, 8)].duplicate = duplicate;
}
void *AllocateFont(size_t size)
{
return MallocT<byte>(size);
}
/* Check if a glyph should be rendered with anti-aliasing. */
static bool GetFontAAState(FontSize size)
static bool GetFontAAState(FontSize size, bool check_blitter = true)
{
/* AA is only supported for 32 bpp */
if (BlitterFactory::GetCurrentBlitter()->GetScreenDepth() != 32) return false;
if (check_blitter && BlitterFactory::GetCurrentBlitter()->GetScreenDepth() != 32) return false;
switch (size) {
default: NOT_REACHED();
@ -348,10 +343,11 @@ const Sprite *TrueTypeFontCache::GetGlyph(GlyphID key)
0, // x_offs
0, // y_offs
ST_FONT,
SCC_PAL,
builtin_questionmark_data
};
Sprite *spr = BlitterFactory::GetCurrentBlitter()->Encode(&builtin_questionmark, AllocateFont);
Sprite *spr = BlitterFactory::GetCurrentBlitter()->Encode(&builtin_questionmark, SimpleSpriteAlloc);
assert(spr != nullptr);
GlyphEntry new_glyph;
new_glyph.sprite = spr;
@ -613,6 +609,7 @@ const Sprite *FreeTypeFontCache::InternalGetGlyph(GlyphID key, bool aa)
SpriteLoader::Sprite sprite;
sprite.AllocateData(ZOOM_LVL_NORMAL, width * height);
sprite.type = ST_FONT;
sprite.colours = (aa ? SCC_PAL | SCC_ALPHA : SCC_PAL);
sprite.width = width;
sprite.height = height;
sprite.x_offs = slot->bitmap_left;
@ -640,7 +637,7 @@ const Sprite *FreeTypeFontCache::InternalGetGlyph(GlyphID key, bool aa)
}
GlyphEntry new_glyph;
new_glyph.sprite = BlitterFactory::GetCurrentBlitter()->Encode(&sprite, AllocateFont);
new_glyph.sprite = BlitterFactory::GetCurrentBlitter()->Encode(&sprite, SimpleSpriteAlloc);
new_glyph.width = slot->advance.x >> 6;
this->SetGlyphPtr(key, &new_glyph);
@ -675,7 +672,6 @@ const void *FreeTypeFontCache::InternalGetFontTable(uint32 tag, size_t &length)
length = len;
return result;
}
#endif /* WITH_FREETYPE */
@ -719,6 +715,19 @@ void UninitFreeType()
#endif /* WITH_FREETYPE */
}
/**
* Should any of the active fonts be anti-aliased?
* @return True if any of the loaded fonts want anti-aliased drawing.
*/
bool HasAntialiasedFonts()
{
for (FontSize fs = FS_BEGIN; fs < FS_END; fs++) {
if (!FontCache::Get(fs)->IsBuiltInFont() && GetFontAAState(fs, false)) return true;
}
return false;
}
#if !defined(_WIN32) && !defined(__APPLE__) && !defined(WITH_FONTCONFIG) && !defined(WITH_COCOA)
#ifdef WITH_FREETYPE

@ -237,5 +237,6 @@ extern FreeTypeSettings _freetype;
void InitFreeType(bool monospace);
void UninitFreeType();
bool HasAntialiasedFonts();
#endif /* FONTCACHE_H */

@ -81,6 +81,4 @@ public:
bool IsBuiltInFont() override { return false; }
};
void *AllocateFont(size_t size);
#endif /* FONTCACHE_INTERNAL_H */

@ -1377,6 +1377,9 @@ void ScreenSizeChanged()
void UndrawMouseCursor()
{
/* Don't undraw mouse cursor if it is handled by the video driver. */
if (VideoDriver::GetInstance()->UseSystemCursor()) return;
/* Don't undraw the mouse cursor if the screen is not ready */
if (_screen.dst_ptr == nullptr) return;
@ -1390,6 +1393,9 @@ void UndrawMouseCursor()
void DrawMouseCursor()
{
/* Don't draw mouse cursor if it is handled by the video driver. */
if (VideoDriver::GetInstance()->UseSystemCursor()) return;
/* Don't draw the mouse cursor if the screen is not ready */
if (_screen.dst_ptr == nullptr) return;

@ -309,11 +309,13 @@ static bool SwitchNewGRFBlitter()
* between multiple 32bpp blitters, which perform differently with 8bpp sprites.
*/
uint depth_wanted_by_base = BaseGraphics::GetUsedSet()->blitter == BLT_32BPP ? 32 : 8;
uint depth_wanted_by_grf = _support8bpp == S8BPP_NONE ? 32 : 8;
uint depth_wanted_by_grf = _support8bpp != S8BPP_NONE ? 8 : 32;
for (GRFConfig *c = _grfconfig; c != nullptr; 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;
}
/* We need a 32bpp blitter for font anti-alias. */
if (HasAntialiasedFonts()) depth_wanted_by_grf = 32;
/* Search the best blitter. */
static const struct {
@ -321,13 +323,14 @@ static bool SwitchNewGRFBlitter()
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[] = {
{ "8bpp-optimized", 2, 8, 8, 8, 8 },
{ "40bpp-anim", 2, 8, 32, 8, 32 },
#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 },
#ifdef WITH_SSE
{ "32bpp-sse2-anim", 1, 8, 32, 8, 32 },
@ -497,6 +500,7 @@ void GfxLoadSprites()
_grf_bug_too_many_strings = false;
SwitchNewGRFBlitter();
VideoDriver::GetInstance()->ClearSystemSprites();
ClearFontCache();
GfxInitSpriteMem();
LoadSpriteTables();

@ -165,10 +165,15 @@ struct ValuesInterval {
struct BaseGraphWindow : Window {
protected:
static const int GRAPH_MAX_DATASETS = 64;
static const int GRAPH_BASE_COLOUR = GREY_SCALE(2);
static const int GRAPH_GRID_COLOUR = GREY_SCALE(3);
static const int GRAPH_AXIS_LINE_COLOUR = GREY_SCALE(1);
static const int GRAPH_ZERO_LINE_COLOUR = GREY_SCALE(8);
static const int GRAPH_YEAR_LINE_COLOUR = GREY_SCALE(5);
static const int GRAPH_NUM_MONTHS = 24; ///< Number of months displayed in the graph.
static const TextColour GRAPH_AXIS_LABEL_COLOUR = TC_BLACK; ///< colour of the graph axis label.
static const int MIN_GRAPH_NUM_LINES_Y = 9; ///< Minimal number of horizontal lines to draw.
static const int MIN_GRID_PIXEL_SIZE = 20; ///< Minimum distance between graph lines.
@ -176,7 +181,6 @@ protected:
byte num_dataset;
byte num_on_x_axis;
byte num_vert_lines;
static const TextColour graph_axis_label_colour = TC_BLACK; ///< colour of the graph axis label.
/* The starting month and year that values are plotted against. If month is
* 0xFF, use x_values_start and x_values_increment below instead. */
@ -293,12 +297,10 @@ protected:
static_assert(GRAPH_MAX_DATASETS >= (int)NUM_CARGO && GRAPH_MAX_DATASETS >= (int)MAX_COMPANIES);
assert(this->num_vert_lines > 0);
byte grid_colour = GREY_SCALE(3);
/* Rect r will be adjusted to contain just the graph, with labels being
* placed outside the area. */
r.top += 5 + GetCharacterHeight(FS_SMALL) / 2;
r.bottom -= (this->month == 0xFF ? 1 : 3) * GetCharacterHeight(FS_SMALL) + 4;
r.bottom -= (this->month == 0xFF ? 1 : 2) * GetCharacterHeight(FS_SMALL) + 4;
r.left += 9;
r.right -= 5;
@ -327,7 +329,7 @@ protected:
x_axis_offset = (int)((r.bottom - r.top) * (double)interval.highest / (double)interval_size);
/* Draw the background of the graph itself. */
GfxFillRect(r.left, r.top, r.right, r.bottom, GREY_SCALE(2));
GfxFillRect(r.left, r.top, r.right, r.bottom, GRAPH_BASE_COLOUR);
/* Draw the vertical grid lines. */
@ -335,7 +337,7 @@ protected:
x = r.left + x_sep;
for (int i = 0; i < this->num_vert_lines; i++) {
GfxFillRect(x, r.top, x, r.bottom, grid_colour);
GfxFillRect(x, r.top, x, r.bottom, GRAPH_GRID_COLOUR);
x += x_sep;
}
@ -344,7 +346,7 @@ protected:
for (int i = 0; i < (num_hori_lines + 1); i++) {
GfxFillRect(r.left - 3, y, r.left - 1, y, GRAPH_AXIS_LINE_COLOUR);
GfxFillRect(r.left, y, r.right, y, grid_colour);
GfxFillRect(r.left, y, r.right, y, GRAPH_GRID_COLOUR);
y -= y_sep;
}
@ -370,13 +372,13 @@ protected:
for (int i = 0; i < (num_hori_lines + 1); i++) {
SetDParam(0, this->format_str_y_axis);
SetDParam(1, y_label);
DrawString(r.left - label_width - 4, r.left - 4, y, STR_GRAPH_Y_LABEL, graph_axis_label_colour, SA_RIGHT);
DrawString(r.left - label_width - 4, r.left - 4, y, STR_GRAPH_Y_LABEL, GRAPH_AXIS_LABEL_COLOUR, SA_RIGHT);
y_label -= y_label_separation;
y += y_sep;
}
/* draw strings on the x axis */
/* Draw x-axis labels and markings for graphs based on financial quarters and years. */
if (this->month != 0xFF) {
x = r.left;
y = r.bottom + 2;
@ -384,26 +386,28 @@ protected:
Year year = this->year;
for (int i = 0; i < this->num_on_x_axis; i++) {
SetDParam(0, month + STR_MONTH_ABBREV_JAN);
SetDParam(1, month + STR_MONTH_ABBREV_JAN + 2);
SetDParam(2, year);
DrawStringMultiLine(x, x + x_sep, y, this->height, month == 0 ? STR_GRAPH_X_LABEL_MONTH_YEAR : STR_GRAPH_X_LABEL_MONTH, graph_axis_label_colour);
SetDParam(1, year);
DrawStringMultiLine(x, x + x_sep, y, this->height, month == 0 ? STR_GRAPH_X_LABEL_MONTH_YEAR : STR_GRAPH_X_LABEL_MONTH, GRAPH_AXIS_LABEL_COLOUR, SA_LEFT);
month += 3;
if (month >= 12) {
month = 0;
year++;
/* Draw a lighter grid line between years. Top and bottom adjustments ensure we don't draw over top and bottom horizontal grid lines. */
GfxFillRect(x + x_sep, r.top + 1, x + x_sep, r.bottom - 1, GRAPH_YEAR_LINE_COLOUR);
}
x += x_sep;
}
} else {
/* Draw the label under the data point rather than on the grid line. */
/* Draw x-axis labels for graphs not based on quarterly performance (cargo payment rates). */
x = r.left;
y = r.bottom + 2;
uint16 label = this->x_values_start;
for (int i = 0; i < this->num_on_x_axis; i++) {
SetDParam(0, label);
DrawString(x + 1, x + x_sep - 1, y, STR_GRAPH_Y_LABEL_NUMBER, graph_axis_label_colour, SA_HOR_CENTER);
DrawString(x + 1, x + x_sep - 1, y, STR_GRAPH_Y_LABEL_NUMBER, GRAPH_AXIS_LABEL_COLOUR, SA_HOR_CENTER);
label += this->x_values_increment;
x += x_sep;
@ -493,13 +497,13 @@ public:
uint x_label_width = 0;
/* Draw x-axis labels and markings for graphs based on financial quarters and years. */
if (this->month != 0xFF) {
byte month = this->month;
Year year = this->year;
for (int i = 0; i < this->num_on_x_axis; i++) {
SetDParam(0, month + STR_MONTH_ABBREV_JAN);
SetDParam(1, month + STR_MONTH_ABBREV_JAN + 2);
SetDParam(2, year);
SetDParam(1, year);
x_label_width = std::max(x_label_width, GetStringBoundingBox(month == 0 ? STR_GRAPH_X_LABEL_MONTH_YEAR : STR_GRAPH_X_LABEL_MONTH).width);
month += 3;
@ -509,7 +513,7 @@ public:
}
}
} else {
/* Draw the label under the data point rather than on the grid line. */
/* Draw x-axis labels for graphs not based on quarterly performance (cargo payment rates). */
SetDParamMaxValue(0, this->x_values_start + this->num_on_x_axis * this->x_values_increment, 0, FS_SMALL);
x_label_width = GetStringBoundingBox(STR_GRAPH_Y_LABEL_NUMBER).width;
}

@ -92,17 +92,15 @@ bool IniFile::SaveToDisk(const std::string &filename)
#endif
#if defined(_WIN32)
/* _tcsncpy = strcpy is TCHAR is char, but isn't when TCHAR is wchar. */
# undef strncpy
/* Allocate space for one more \0 character. */
TCHAR tfilename[MAX_PATH + 1], tfile_new[MAX_PATH + 1];
_tcsncpy(tfilename, OTTD2FS(filename.c_str()), MAX_PATH);
_tcsncpy(tfile_new, OTTD2FS(file_new.c_str()), MAX_PATH);
wchar_t tfilename[MAX_PATH + 1], tfile_new[MAX_PATH + 1];
wcsncpy(tfilename, OTTD2FS(filename.c_str()), MAX_PATH);
wcsncpy(tfile_new, OTTD2FS(file_new.c_str()), MAX_PATH);
/* SHFileOperation wants a double '\0' terminated string. */
tfilename[MAX_PATH - 1] = '\0';
tfile_new[MAX_PATH - 1] = '\0';
tfilename[_tcslen(tfilename) + 1] = '\0';
tfile_new[_tcslen(tfile_new) + 1] = '\0';
tfilename[wcslen(tfilename) + 1] = '\0';
tfile_new[wcslen(tfile_new) + 1] = '\0';
/* Rename file without any user confirmation. */
SHFILEOPSTRUCT shfopt;

@ -570,8 +570,8 @@ STR_MONTH_DEC :Desember
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Sleutel
STR_GRAPH_KEY_TOOLTIP :{BLACK}Wys sleutel van grafieke
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -539,8 +539,8 @@ STR_MONTH_DEC :ديسمبر
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}مفتاح
STR_GRAPH_KEY_TOOLTIP :{BLACK}اظهار مفتاح الرسم البياني
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -556,8 +556,8 @@ STR_MONTH_DEC :Abendua
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Giltza
STR_GRAPH_KEY_TOOLTIP :{BLACK}Erakutsi giltza grafikoetan
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -879,8 +879,8 @@ STR_MONTH_DEC :Сьнежан
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Леґенда
STR_GRAPH_KEY_TOOLTIP :{BLACK}Паказаць леґенду да ґрафікаў
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -570,8 +570,8 @@ STR_MONTH_DEC :Dezembro
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Chave
STR_GRAPH_KEY_TOOLTIP :{BLACK}Exibir chave aos gráficos
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{} {NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -562,8 +562,8 @@ STR_MONTH_DEC :Декемвр
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Легенда
STR_GRAPH_KEY_TOOLTIP :{BLACK}Покажи легендата на графиката
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -578,8 +578,8 @@ STR_MONTH_DEC :Desembre
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Llegenda
STR_GRAPH_KEY_TOOLTIP :{BLACK}Mostra la llegenda dels gràfics
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
@ -948,6 +948,7 @@ STR_GAME_OPTIONS_CURRENCY_NTD :Nou dòlar taiw
STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi xinès (CNY)
STR_GAME_OPTIONS_CURRENCY_HKD :Dòlar de Hong Kong (HKD)
STR_GAME_OPTIONS_CURRENCY_INR :Rúpia índia (INR)
STR_GAME_OPTIONS_CURRENCY_IDR :Rupia indonèsia (IDR)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Conducció per l'esquerra

@ -665,8 +665,8 @@ STR_MONTH_DEC :Prosinac
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Ključ
STR_GRAPH_KEY_TOOLTIP :{BLACK}Pokaži ključeve na grafikonima
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -269,6 +269,7 @@ STR_COLOUR_DEFAULT :Výchozí
STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}m{P íle íle il}/h
STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h
STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s
STR_UNITS_VELOCITY_GAMEUNITS :{DECIMAL}{NBSP}políčka/den
STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp
STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp
@ -361,7 +362,7 @@ STR_SORT_BY_PRODUCTION :produkce
STR_SORT_BY_TYPE :typu
STR_SORT_BY_TRANSPORTED :přepravy
STR_SORT_BY_NUMBER :čísla
STR_SORT_BY_PROFIT_LAST_YEAR :hrubého zisku minulý rok
STR_SORT_BY_PROFIT_LAST_YEAR :hrubého zisku loňský rok
STR_SORT_BY_PROFIT_THIS_YEAR :hrubého zisku za tento rok
STR_SORT_BY_PROFIT_LIFETIME :hrubého zisku po celou dobu
STR_SORT_BY_AGE :stáří
@ -390,8 +391,15 @@ STR_SORT_BY_CARGO_CAPACITY :přepravní kap
STR_SORT_BY_RANGE :dosah
STR_SORT_BY_POPULATION :Podle populace
STR_SORT_BY_RATING :Hodnocení
STR_SORT_BY_NUM_VEHICLES :Počet vozidel
STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Letošní celkový zisk
STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Celkový letošní zisk
STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Loňský průměrný zisk
STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Průměrný letošní zisk
# Group by options for vehicle list
STR_GROUP_BY_NONE :Neseskupovat
STR_GROUP_BY_SHARED_ORDERS :Sdílené příkazy
# Tooltips for the main toolbar
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauza
@ -662,8 +670,8 @@ STR_MONTH_DEC.gen :prosince
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Legenda
STR_GRAPH_KEY_TOOLTIP :{BLACK}Zobrazit legendu ke grafům
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
@ -833,6 +841,7 @@ STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLA
STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Hrbolatá zem
STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Travnatá zem
STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Holá zem
STR_SMALLMAP_LEGENDA_RAINFOREST :{TINY_FONT}{BLACK}Deštný prales
STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Pole
STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Stromy
STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Kameny
@ -864,8 +873,8 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Zobraz v
# Status bar messages
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Ukázat poslední zprávu nebo článek
STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - -
STR_STATUSBAR_PAUSED :{YELLOW}* * PAUZA * *
STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * PAUZA (čekání na aktualizaci propojení grafu) * *
STR_STATUSBAR_PAUSED :{YELLOW}* * PAUZA * *
STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * POZASTAVENO (čekám na aktualizaci grafu spojení) * *
STR_STATUSBAR_AUTOSAVE :{RED}Automatické ukládání
STR_STATUSBAR_SAVING_GAME :{RED}* * HRA SE UKLÁDÁ * *
@ -1033,6 +1042,7 @@ STR_GAME_OPTIONS_CURRENCY_NTD :Nový taiwansk
STR_GAME_OPTIONS_CURRENCY_CNY :Čínský renminbi (CNY)
STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongský dolar (HKD)
STR_GAME_OPTIONS_CURRENCY_INR :Indická rupie (INR)
STR_GAME_OPTIONS_CURRENCY_IDR :Indonéská rupie (IDR)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Vlevo
@ -1089,6 +1099,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :jiné
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Velikost rozhraní
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Zvolit velikost prvků uživatelského rozhraní
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_AUTO :(zjistit automaticky)
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normální
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dvojnásobná velikost
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Čtyřnásobná velikost
@ -1096,6 +1107,7 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Čtyřnásobná
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Velikost písma
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Zvolit velikost písma
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_AUTO :(zjistit automaticky)
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Běžné
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Dvojnásobná velikost
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Čtyřnásobná velikost
@ -1662,6 +1674,8 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Nevypínat po p
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Nechat nástroje pro stavbu mostů, tunelů, atd. po použití otevřené
STR_CONFIG_SETTING_EXPENSES_LAYOUT :Zobrazovat odděleně příjmy a výdaje v přehledu financí: {STRING}
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Určuje rozložení okna s firemními výdaji
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automaticky odstraňovat návěstidla během výstavby železnice: {STRING}
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automaticky odstraňovat návěstidla, pokud překáží během výstavby železnice. Poznámka: Může způsobit kolize vlaků.
STR_CONFIG_SETTING_ENABLE_BUILD_RIVER :Povolit stavbu řek: {STRING}
STR_CONFIG_SETTING_ENABLE_BUILD_RIVER_HELPTEXT :Povolí stavbu řek mimo editor scénáře
@ -1796,6 +1810,11 @@ STR_CONFIG_SETTING_ENDING_YEAR :Rok vyhodnocen
STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Rok, kdy je ve hře uzavřeno hodnocení společností. Na konci tohoto roku je zaznamenáno skóre společností a je zobrazena tabulka nejlepších společností, ale ve hře je možné pokračovat i dál.{}Pokud je nastaven rok před rokem počátku hry, tabulka s hodnocením nebude zobrazena nikdy.
STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM}
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Nikdy
STR_CONFIG_SETTING_ECONOMY_TYPE :Druh ekonomiky: {STRING}
STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Plynulá ekonomika dělá změny produkce častěji, ale v menších krocích. Zmražená ekonomika zastaví změny v produkci a zavírání průmyslu. Toto nastavení nemusí mít vliv na typy průmyslu vycházející z "NewGRF".
STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Původní
STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Plynulá
STR_CONFIG_SETTING_ECONOMY_TYPE_FROZEN :Zmražená
STR_CONFIG_SETTING_ALLOW_SHARES :Povolit kupování podílu z ostatních společností: {STRING}
STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Pokud je zapnuto, umožní kupovaní akcií ve společnostech. Akcie jsou k dispozici pouze u společností od určitého stáří
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Minimální stáří společnosti pro obchod s akciemi: {STRING}
@ -1853,6 +1872,10 @@ STR_CONFIG_SETTING_TOWN_CARGO_FACTOR_HELPTEXT :Cestující, po
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Umístění stromů ve hře: {STRING}
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Náhodné umisťování stromů během hry. Může ovlivnit průmysl závisející na růstu stromů, například pily.
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD :Růst, ale nerozšiřovat{RED}(rozbije pilu)
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_RAINFOREST :Růst, ale rozšiřovat pouze v deštných pralesech
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_ALL :Růst a rozšiřovat všude
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_GROWTH_NO_SPREAD :Nerůst, nerozšiřovat {RED}(rozbije pilu)
STR_CONFIG_SETTING_TREES_AROUND_SNOWLINE :Upravené umístění arktických stromů: {STRING}
STR_CONFIG_SETTING_TREES_AROUND_SNOWLINE_HELPTEXT :Upraví umístění stromů kolem sněhové čáry v sub-arktickém klimatu. Stromy nad sněhovou čarou řídnou. Stromy jsou směsí arktických a mírných těsně pod sněhovou čarou. Níže jsou už pouze stromy mírného pásma.
@ -1952,6 +1975,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Kdykoliv se ryc
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperiální (mph)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrické (km/h)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS :Herní jednotky (políčko/den)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Jednotky výkonu vozidla: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Kdykoliv se výkon vozidla zobrazí v uživatelském rozhraní, bude ve zvolených jednotkách
@ -2143,6 +2167,7 @@ STR_INTRO_TRANSLATION :{BLACK}Tento p
# Quit window
STR_QUIT_CAPTION :{WHITE}Konec
STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Opravdu chceš ukončit OpenTTD?
STR_QUIT_YES :{BLACK}Ano
STR_QUIT_NO :{BLACK}Ne
@ -2154,6 +2179,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Určite
# Cheat window
STR_CHEATS :{WHITE}Cheaty
STR_CHEATS_TOOLTIP :{BLACK}Zaškrtávací políčka ukazují, jestli jsi tento cheat už použil
STR_CHEATS_NOTE :{BLACK}Poznámka: jakékoliv použití těchto nastavení bude zaznamenáno v uložené hře
STR_CHEAT_MONEY :{LTBLUE}Navýšit peníze o {CURRENCY_LONG}
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Hrát jako společnost: {ORANGE}{COMMA}
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magický buldozer (odstraní průmysl a další objekty): {ORANGE}{STRING}
@ -2309,6 +2335,10 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Přidat
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Obnovit info
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Znovu načte informace o serveru
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :{BLACK}Prohledat internet
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Hledat veřejné servery v internetu
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :{BLACK}Prohledat místní siť
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :{BLACK}Hledat servery v místní síti
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Přidat server
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Přidá server do seznamu, ve kterém se budou hledat běžící hry
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Spustit server
@ -2533,14 +2563,14 @@ STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Hra pozastavena
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Hra stále pozastavena ({STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Hra stále pozastavena ({STRING}, {STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Hra stále pozastavena ({STRING}, {STRING}, {STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Hra stále pozastavena ({STRING}, {STRING}, {STRING}, {STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_5 :Hra stále pozastavena ({STRING}, {STRING}, {STRING}, {STRING}, {STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Hra je stále pozastavena ({STRING}, {STRING}, {STRING}, {STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_5 :Hra je stále pozastavena ({STRING}, {STRING}, {STRING}, {STRING}, {STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Hra obnovena ({STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :nedostatek hráčů
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :připojují se klienti
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :ručně
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :herní skript
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :čekání na aktualizaci propojení grafu
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :čekám na aktualizaci grafu spojení
############ End of leave-in-this-order
STR_NETWORK_MESSAGE_CLIENT_LEAVING :odpojování
STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} se připojil do hry
@ -2552,7 +2582,7 @@ STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} op
STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} si mění jméno na {STRING}
STR_NETWORK_MESSAGE_GIVE_MONEY_RECEIVE :*** {STRING} poslal(a) tvé společnosti {2:CURRENCY_LONG}
STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Dal(a) jsi {1:STRING} {2:CURRENCY_LONG}
STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} dal {1:STRING} {2:CURRENCY_LONG}
STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} poslal(a) {2:CURRENCY_LONG} společnosti {1:STRING}
STR_NETWORK_MESSAGE_MONEY_GIVE_SRC_DESCRIPTION :{STRING} ({COMPANY})
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Server ukončil relaci
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Server se restartuje...{}Počkejte prosím...
@ -2674,6 +2704,7 @@ STR_JOIN_WAYPOINT_CAPTION :{WHITE}Spojová
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Postavit samostatné směrování
# Generic toolbar
STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE :{BLACK}Zakázáno, protože pro tento typ infrastruktury aktuálně nejsou dostupná žádná vozidla
# Rail construction toolbar
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Výstavba železnice
@ -3135,6 +3166,12 @@ STR_TREES_RANDOM_TYPE :{BLACK}Různé
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Umístit nahodné stromy. Stisknutý Shift pro zobrazení odhadu ceny
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Náhodné stromy
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Umístit stromy náhodně po krajině
STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normální
STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Vysadit jednotlivé stromy tažením přes krajinu.
STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Háj
STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Vysadit malé lesy tažením přes krajinu
STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Les
STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Vysadit velké lesy tažením přes krajinu
# Land generation window (SE)
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Generovat zemi
@ -3185,12 +3222,18 @@ STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Náhodn
# Fund new industry window
STR_FUND_INDUSTRY_CAPTION :{WHITE}Investovat do průmyslu
STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Vyber si vhodnou továrnu ze seznamu
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Hodně náhodného průmyslu
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Vytvořit náhodný průmysl
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Pokryje krajinu náhodným průmyslem
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_CAPTION :{WHITE}Vytvořit náhodný průmysl
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_QUERY :{YELLOW}Opravdu chceš vytvořit tolik náhodného průmyslu?
STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Cena: {YELLOW}{CURRENCY_LONG}
STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Hledat
STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Postavit
STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Financovat
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES :{BLACK}Odstranit veškerý průmysl
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_TOOLTIP :{BLACK}Odstranit veškerý aktuálně přítomný průmysl
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_CAPTION :{WHITE}Odstranit veškerý průmysl
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_QUERY :{YELLOW}Opravdu chceš odstranit veškerý průmysl?
# Industry cargoes window
STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Průmyslový řetěz pro průmysl {STRING}
@ -3217,6 +3260,7 @@ STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Vyber pr
# Land area window
STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informace o uzemí
STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na políčko. Ctrl+Klik otevře nové okno náhledu
STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Cena za vyčištění: {LTBLUE}N/A
STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Cena za vyčištění: {RED}{CURRENCY_LONG}
STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Příjem za odklizení: {LTBLUE}{CURRENCY_LONG}
@ -3426,6 +3470,8 @@ STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}Grafiky
STR_SAVELOAD_FILTER_TITLE :{BLACK}Filtr:
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Přepsat soubor
STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Opravdu chcete přepsat existující soubor?
STR_SAVELOAD_DIRECTORY :{STRING} (Adresář)
STR_SAVELOAD_PARENT_DIRECTORY :{STRING} (rodičovský adresář)
STR_SAVELOAD_OSKTITLE :{BLACK}Zadej jméno pro uloženou hru
@ -3684,6 +3730,7 @@ STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Přepne
# Sign window
STR_EDIT_SIGN_CAPTION :{WHITE}Upravit text popisku
STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na značku. Ctrl+Klik otevře nový pohled
STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Na další návěstidlo
STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Na předešlé návěstidlo
@ -3767,10 +3814,10 @@ STR_GOALS_COMPANY_TITLE :{BLACK}Cíle sp
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klikni na cíl pro zaměření pohledu na průmysl/město/pole. Ctrl+kliknutí otevře nové okno s pohledem na průmyslu/městu/poli.
# Goal question window
STR_GOAL_QUESTION_CAPTION_QUESTION :Dotaz
STR_GOAL_QUESTION_CAPTION_INFORMATION :Informace
STR_GOAL_QUESTION_CAPTION_WARNING :Varování
STR_GOAL_QUESTION_CAPTION_ERROR :Chyba
STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Dotaz
STR_GOAL_QUESTION_CAPTION_INFORMATION :{BLACK}Informace
STR_GOAL_QUESTION_CAPTION_WARNING :{BLACK}Varování
STR_GOAL_QUESTION_CAPTION_ERROR :{YELLOW}Chyba
############ Start of Goal Question button list
STR_GOAL_QUESTION_BUTTON_CANCEL :Zrušit
@ -3895,7 +3942,7 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Zabráni
STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Vystředit pohled na směrování. Ctrl+kliknutí otevře nový pohled
STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Přejmenovat směrování
STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Vystředit pohled na bójku. Ctrl+kliknutí otevře nový pohled
STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Vystředit pohled na bójku. Ctrl+Klik otevře nové okno náhledu
STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Přejmenovat bójku
STR_EDIT_WAYPOINT_NAME :{WHITE}Přejmenovat směrování
@ -3960,7 +4007,8 @@ STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Přesíd
STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Sídlo společnosti můžeš vystavit jinde za 1{NBSP}% její hodnoty. Stisknutý Shift pro zobrazení odhadu ceny
STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detaily
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Zobrazit detaily a souhrny o infrastruktuře
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Darovat peníze
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Poslat peníze
STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Poslat peníze této společnosti
STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nový obličej
STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Zvol nový obličej prezidenta
@ -3978,7 +4026,7 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Prodat 2
STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Jméno společnosti
STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Jméno prezidenta
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Napiš částku, kterou chceš poskytnout
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Zadej částku, kterou chceš poslat
STR_BUY_COMPANY_MESSAGE :{WHITE}Hledáme společnost, která převezme naši společnost.{}{}Chcete zakoupit {COMPANY} za {CURRENCY_LONG}?
@ -4246,10 +4294,10 @@ STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Vytvoř
STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Vytvoří se kopie lodě. Klepni na toto tlačítko a pak na loď v nebo vně lodního depa. Se stisknutým Ctrl se budou sdílet příkazy. Stisknutý Shift pro zobrazení odhadu ceny
STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Vytvoří se kopie letadla. Klepni na toto tlačítko a pak na letadlo v nebo vně hangáru. Se stisknutým Ctrl se budou sdílet příkazy. Stisknutý Shift pro zobrazení odhadu ceny
STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na vlakové depo. Ctrl+kliknutí otevře nový pohled
STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na garáž. Ctrl+kliknutí otevře nový pohled
STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na lodní depo. Ctrl+kliknutí otevře nový pohled
STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na hangár. Ctrl+kliknutí otevře nový pohled
STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na vlakové depo. Ctrl+Klik otevře nový pohled
STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na garáž. Ctrl+Klik otevře nové okno náhledu
STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na lodní depo. Ctrl+Klik otevře nové okno náhledu
STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na hangár. Ctrl+Klik otevře nové okno náhledu
STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Ukázat seznam všech vlaků, které mají toto depo v jízdním řádu
STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Ukázat seznam všech silničních vozidel, které mají toto depo v jízdním řádu
@ -4342,6 +4390,11 @@ STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Funkce a
# Vehicle view
STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE}
STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}Vystředit pohled na vlak. Dvojklikem budeš následovat vlak v hlavním okně. Ctrl+Klik otevře nové okno náhledu
STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Vystředit pohled na vozidlo. Dvojklikem budeš následovat vozidlo v hlavním okně. Ctrl+Klik otevře nové okno náhledu
STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Vystředit pohled na loď. Dvojklikem budeš loď následovat v hlavním okně. Ctrl+Klik otevře nový pohled
STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Vystředit pohled na letadlo. Dvojklikem budeš následovat letadlo v hlavním okně. Ctrl+Klik otevře nové okno náhledu
STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Poslat vlak do depa. Ctrl+kliknutí pouze pro provedení oprav
STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Pošli vozidlo do garáže. Ctrl+kliknutí pouze provede opravy
STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}Poslat loď do doku
@ -4372,7 +4425,12 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Ukaž de
STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Ukázat detaily lodi
STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Ukázat detaily letadla
STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}Stávající činnost - klikni pro zastavení/rozjez vlaku
STR_VEHICLE_VIEW_ROAD_VEHICLE_STATUS_START_STOP_TOOLTIP :{BLACK}Stávající činnost - klikni pro zastavení/rozjezd vozidla
STR_VEHICLE_VIEW_SHIP_STATE_STATUS_STOP_TOOLTIP :{BLACK}Stávající činnost - klikni pro zastavení/rozjezd lodě
STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Stávající činnost - klikni pro zastavení/odlet letadla
STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Vystředit pohled na cíl přikazu. Ctrl+Klik otevře nový pohled
# Messages in the start stop button in the vehicle view
STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Nakládá nebo vykládá
@ -4600,6 +4658,7 @@ STR_ORDER_REFIT_STOP_ORDER :(Přestavět na
STR_ORDER_STOP_ORDER :(Zastavit)
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Nemůže použít stanici){POP_COLOUR} {STRING} {STATION} {STRING}
STR_ORDER_IMPLICIT :(Automaticky)
@ -4844,6 +4903,7 @@ STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Uložená hra j
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Soubor je nečitelný
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Do souboru nelze zapisovat
STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Kontrola integrity dat selhala
STR_GAME_SAVELOAD_ERROR_PATCHPACK :Uložená hra byla pořízena v upravené verzi
STR_GAME_SAVELOAD_NOT_AVAILABLE :<nedostupné>
STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Hra byla uložena ve verzi bez podpory tramvají. Všechny tramvaje se odstraní
@ -4924,6 +4984,7 @@ STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... žá
STR_ERROR_CURRENCY_REQUIRED :{WHITE}... je potřeba {CURRENCY_LONG}
STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Nelze splatit dluh...
STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Nelze darovat peníze půjčené z banky...
STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}Této společnosti nemůžeš poslat peníze...
STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Nelze koupit společnost...
STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Nelze postavit ředitelství společnosti...
STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Nelze koupit podíl v této společnosti...
@ -5050,6 +5111,8 @@ STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Nevhodný druh
STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} je po výměně moc dlouhý
STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Žádné pravidlo pro výměnu vozidel se nepoužilo
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(finanční limit)
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_CARGO :{WHITE}Nové vozidlo nemůže převážet {STRING}
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}Nové vozidlo nemůže být přestavěno (příkaz {NUM})
# Rail construction errors
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Nemožná kombinace kolejí
@ -5454,10 +5517,10 @@ STR_INDUSTRY_NAME_SUGAR_MINE.small :cukerný důl
##id 0x6000
STR_SV_EMPTY :
STR_SV_UNNAMED :Beze jména
STR_SV_TRAIN_NAME :{G=m}Vlak {COMMA}
STR_SV_ROAD_VEHICLE_NAME :{G=n}Silniční vozidlo {COMMA}
STR_SV_SHIP_NAME :{G=f}Loď {COMMA}
STR_SV_AIRCRAFT_NAME :{G=n}Letadlo {COMMA}
STR_SV_TRAIN_NAME :Vlak #{COMMA}
STR_SV_ROAD_VEHICLE_NAME :{G=n}Silniční vozidlo #{COMMA}
STR_SV_SHIP_NAME :Loď #{COMMA}
STR_SV_AIRCRAFT_NAME :Letadlo #{COMMA}
STR_SV_STNAME :{STRING}
STR_SV_STNAME_NORTH :{STRING} sever
@ -5760,6 +5823,7 @@ STR_FORMAT_BUOY_NAME :Bójka {TOWN}
STR_FORMAT_BUOY_NAME_SERIAL :Bójka {TOWN} č. {COMMA}
STR_FORMAT_COMPANY_NUM :(společnost {COMMA})
STR_FORMAT_GROUP_NAME :Skupina {COMMA}
STR_FORMAT_GROUP_VEHICLE_NAME :{GROUP} #{COMMA}
STR_FORMAT_INDUSTRY_NAME :{1:STRING} {0:TOWN}
STR_FORMAT_INDUSTRY_NAME.gen :{1:STRING.gen} {0:TOWN}
STR_FORMAT_INDUSTRY_NAME.loc :{1:STRING.loc} {0:TOWN}

@ -570,8 +570,8 @@ STR_MONTH_DEC :december
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Nøgle
STR_GRAPH_KEY_TOOLTIP :{BLACK}Vis nøglen til grafer
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -577,8 +577,8 @@ STR_MONTH_DEC :December
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Legenda
STR_GRAPH_KEY_TOOLTIP :{BLACK}Legenda bij deze grafiek weergeven
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
@ -947,6 +947,7 @@ STR_GAME_OPTIONS_CURRENCY_NTD :Nieuwe Taiwanse
STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminbi (CNY)
STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar (HKD)
STR_GAME_OPTIONS_CURRENCY_INR :Indiase rupee (INR)
STR_GAME_OPTIONS_CURRENCY_IDR :Indonesische roepia (IDR)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Links rijden

@ -586,8 +586,8 @@ STR_MONTH_DEC :December
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Key
STR_GRAPH_KEY_TOOLTIP :{BLACK}Show key to graphs
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING2}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -551,8 +551,8 @@ STR_MONTH_DEC :December
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Key
STR_GRAPH_KEY_TOOLTIP :{BLACK}Show key to graphs
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -577,8 +577,8 @@ STR_MONTH_DEC :December
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Key
STR_GRAPH_KEY_TOOLTIP :{BLACK}Show key to graphs
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
@ -1322,6 +1322,7 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL :Show town popul
STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Display the population of towns in their label on the map
STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Thickness of lines in graphs: {STRING}
STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Width of the line in the graphs. A thin line is more precisely readable, a thicker line is easier to see and colors are easier to distinguish
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Show the NewGRF's name in the build vehicle window: {STRING}
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Add a line to the build vehicle window, showing which NewGRF the selected vehicle comes from.
STR_CONFIG_SETTING_LANDSCAPE :Landscape: {STRING}
@ -1451,6 +1452,7 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Keep building t
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Keep the building tools for bridges, tunnels, etc. open after use
STR_CONFIG_SETTING_EXPENSES_LAYOUT :Group expenses in company finance window: {STRING}
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Define the layout for the company expenses window
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automatically remove signals during track construction: {STRING}
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automatically remove signals during track construction if the signals are in the way. Note that this can potentially lead to train crashes.
STR_CONFIG_SETTING_SOUND_TICKER :News ticker: {STRING}
@ -1565,6 +1567,7 @@ STR_CONFIG_SETTING_ENDING_YEAR :Scoring end yea
STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Year the game ends for scoring purposes. At the end of this year, the company's score is recorded and the high-score screen is displayed, but the players can continue playing after that.{}If this is before the starting year, the high-score screen is never displayed.
STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM}
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Never
STR_CONFIG_SETTING_ECONOMY_TYPE :Economy type: {STRING}
STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Smooth economy makes production changes more often, and in smaller steps. Frozen economy stops production changes and industry closures. This setting may have no effect if industry types are provided by a NewGRF.
STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Original
STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Smooth
@ -1823,6 +1826,7 @@ STR_INTRO_TRANSLATION :{BLACK}This tra
# Quit window
STR_QUIT_CAPTION :{WHITE}Quit
STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Are you sure you want to exit OpenTTD?
STR_QUIT_YES :{BLACK}Yes
STR_QUIT_NO :{BLACK}No
@ -2173,6 +2177,7 @@ STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Wrong pa
STR_NETWORK_ERROR_SERVER_FULL :{WHITE}The server is full
STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}You are banned from this server
STR_NETWORK_ERROR_KICKED :{WHITE}You were kicked out of the game
STR_NETWORK_ERROR_KICK_MESSAGE :{WHITE}Reason: {STRING}
STR_NETWORK_ERROR_CHEATER :{WHITE}Cheating is not allowed on this server
STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}You were sending too many commands to the server
STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}You took too long to enter the password
@ -2230,8 +2235,10 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ha
STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} has started a new company (#{2:NUM})
STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} has left the game ({2:STRING})
STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} has changed his/her name to {STRING}
STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} gave {2:CURRENCY_LONG} to {1:STRING}
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}The server closed the session
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}The server is restarting...{}Please wait...
STR_NETWORK_MESSAGE_KICKED :*** {STRING} was kicked. Reason: ({STRING})
# Content downloading window
STR_CONTENT_TITLE :{WHITE}Content downloading
@ -2842,6 +2849,8 @@ STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF:
STR_SAVELOAD_FILTER_TITLE :{BLACK}Filter string:
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Overwrite File
STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Are you sure you want to overwrite the existing file?
STR_SAVELOAD_DIRECTORY :{STRING} (Directory)
STR_SAVELOAD_PARENT_DIRECTORY :{STRING} (Parent directory)
STR_SAVELOAD_OSKTITLE :{BLACK}Enter a name for the savegame
@ -3418,7 +3427,12 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENC
# Industry directory
STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Industries
STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- None -
STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% transported){BLACK}
STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY}
STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUSTRY} {STRING}
STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING}
STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING}
STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} and {NUM} more...
STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industry names - click on name to center main view on industry. Ctrl+Click opens a new viewport on industry location
STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Accepted cargo: {SILVER}{STRING}
STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Produced cargo: {SILVER}{STRING}
@ -4022,6 +4036,7 @@ STR_ORDER_REFIT_STOP_ORDER :(Refit to {STRI
STR_ORDER_STOP_ORDER :(Stop)
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Can't use station){POP_COLOUR} {STRING} {STATION} {STRING}
STR_ORDER_IMPLICIT :(Implicit)

@ -554,8 +554,8 @@ STR_MONTH_DEC :Decembro
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Ŝlosilo
STR_GRAPH_KEY_TOOLTIP :{BLACK}Montru ŝlosilon al grafikoj
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -634,8 +634,8 @@ STR_MONTH_DEC :Detsember
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Selgitus
STR_GRAPH_KEY_TOOLTIP :{BLACK}Näita selgitust graafikute juures
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
@ -3344,7 +3344,7 @@ STR_STATION_VIEW_VIA_ANY :{RED}{CARGO_SHO
STR_STATION_VIEW_FROM_HERE :{GREEN}{CARGO_SHORT} sellest jaamast
STR_STATION_VIEW_VIA_HERE :{GREEN}{CARGO_SHORT} peatumas selles jaamas
STR_STATION_VIEW_TO_HERE :{GREEN}{CARGO_SHORT} siia jaama
STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} ilma peatumata
STR_STATION_VIEW_NONSTOP :{YELLOW}{CARGO_SHORT} vahepeatusteta
STR_STATION_VIEW_GROUP_S_V_D :Algus-, vahe- ja sihtpunkt
STR_STATION_VIEW_GROUP_S_D_V :Algus-, siht- ja vahepunkt
@ -4070,7 +4070,7 @@ STR_ORDER_GO_TO_NEAREST_DEPOT :Siht lähim dep
STR_ORDER_GO_TO_NEAREST_HANGAR :Siht lähim angaar
STR_ORDER_CONDITIONAL :Korralduste tinglik vahelejätmine
STR_ORDER_SHARE :Korralduste jagamine
STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Lisa valitud käsu ette uus korraldus, või kui korraldust ei ole valitud, siis nimekirja lõppu. «Ctrl» määrab jaama puhul korralduseks «peale laadida üks kaup», meldepunkti puhul «peatuseta» ja depoo puhul «hooldus». «Jaga korraldusi» või «Ctrl» klahv lubab sellel sõidukil jagada korraldusi valitud sõidukiga. Klõpsates teisel sõidukil, dubleeritakse selle korraldused
STR_ORDERS_GO_TO_TOOLTIP :{BLACK}Lisa uus korraldus valitud korralduse ette, või nimekirja lõppu. «Ctrl» annab jaamas korralduse «täislaadida üks veos», meldepunktis korralduse «peatuseta», ning depoos korralduse «hooldus». «Korralduste jagamine» või «Ctrl» laseb sellel sõidukil jagada korraldusi valitud sõidukiga. Sõidukil klõpsates dubleeritakse selle korraldused. Depookorralduste olemasolul sõiduk ise hoolduses ei käi
STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}Näita kõiki sama sõidugraafikuga mootorsõidukeid
@ -4079,7 +4079,7 @@ STR_ORDER_GO_TO_WAYPOINT :Siht läbida {W
STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Siht peatumata läbida {WAYPOINT}
STR_ORDER_SERVICE_AT :Hooldus
STR_ORDER_SERVICE_NON_STOP_AT :Hooldus ilma peatumata
STR_ORDER_SERVICE_NON_STOP_AT :Hooldus vahepeatusteta
STR_ORDER_NEAREST_DEPOT :lähim
STR_ORDER_NEAREST_HANGAR :lähim angaar
@ -4836,10 +4836,10 @@ STR_INDUSTRY_NAME_SUGAR_MINE :suhkrukaevandus
##id 0x6000
STR_SV_EMPTY :
STR_SV_UNNAMED :Nimetu
STR_SV_TRAIN_NAME :Rong #{COMMA}
STR_SV_ROAD_VEHICLE_NAME :Mootorsõiduk #{COMMA}
STR_SV_SHIP_NAME :Laev #{COMMA}
STR_SV_AIRCRAFT_NAME :Õhusõiduk #{COMMA}
STR_SV_TRAIN_NAME :Rong nr {COMMA}
STR_SV_ROAD_VEHICLE_NAME :Mootorsõiduk nr {COMMA}
STR_SV_SHIP_NAME :Laev nr {COMMA}
STR_SV_AIRCRAFT_NAME :Õhusõiduk nr {COMMA}
STR_SV_STNAME :{STRING}
STR_SV_STNAME_NORTH :Põhja {STRING}

@ -539,8 +539,8 @@ STR_MONTH_DEC :Desembur
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Lykil
STR_GRAPH_KEY_TOOLTIP :{BLACK}Vís lykil til graf
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -577,8 +577,8 @@ STR_MONTH_DEC :Joulukuu
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Selite
STR_GRAPH_KEY_TOOLTIP :{BLACK}Näytä kuvaajan selite
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -578,8 +578,8 @@ STR_MONTH_DEC :Décembre
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Légende
STR_GRAPH_KEY_TOOLTIP :{BLACK}Afficher la légende
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -759,8 +759,8 @@ STR_MONTH_DEC.dat :Dùbhlachd
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Iuchair
STR_GRAPH_KEY_TOOLTIP :{BLACK}Seall iuchair nan graf
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -570,8 +570,8 @@ STR_MONTH_DEC :Decembro
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Lenda
STR_GRAPH_KEY_TOOLTIP :{BLACK}Amosa-la lenda das gráficas
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -587,8 +587,8 @@ STR_MONTH_DEC :Dezember
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Legende
STR_GRAPH_KEY_TOOLTIP :{BLACK}Legende des Diagramms anzeigen
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
@ -924,14 +924,14 @@ STR_GAME_OPTIONS_CURRENCY_USD :US-Dollar (USD)
STR_GAME_OPTIONS_CURRENCY_EUR :Euro (EUR)
STR_GAME_OPTIONS_CURRENCY_JPY :Japanische Yen (JPY)
STR_GAME_OPTIONS_CURRENCY_ATS :Österreichische Schilling (ATS)
STR_GAME_OPTIONS_CURRENCY_BEF :Belgische Francs (BEF)
STR_GAME_OPTIONS_CURRENCY_BEF :Belgische Franken (BEF)
STR_GAME_OPTIONS_CURRENCY_CHF :Schweizer Franken (CHF)
STR_GAME_OPTIONS_CURRENCY_CZK :Tschechische Kronen (CZK)
STR_GAME_OPTIONS_CURRENCY_DEM :Deutsche Mark (DEM)
STR_GAME_OPTIONS_CURRENCY_DKK :Dänische Kronen (DKK)
STR_GAME_OPTIONS_CURRENCY_ESP :Spanische Peseten (ESP)
STR_GAME_OPTIONS_CURRENCY_FIM :Finnische Mark (FIM)
STR_GAME_OPTIONS_CURRENCY_FRF :Französische Francs (FRF)
STR_GAME_OPTIONS_CURRENCY_FRF :Französische Franken (FRF)
STR_GAME_OPTIONS_CURRENCY_GRD :Griechische Drachmen (GRD)
STR_GAME_OPTIONS_CURRENCY_HUF :Ungarische Forint (HUF)
STR_GAME_OPTIONS_CURRENCY_ISK :Isländische Kronen (ISK)
@ -948,17 +948,18 @@ STR_GAME_OPTIONS_CURRENCY_SKK :Slowakische Kro
STR_GAME_OPTIONS_CURRENCY_BRL :Brasilianische Reais (BRL)
STR_GAME_OPTIONS_CURRENCY_EEK :Estnische Kronen (EEK)
STR_GAME_OPTIONS_CURRENCY_LTL :Litauische Litas (LTL)
STR_GAME_OPTIONS_CURRENCY_KRW :Südkoreanischer Won (KRW)
STR_GAME_OPTIONS_CURRENCY_ZAR :Südafrikanischer Rand (ZAR)
STR_GAME_OPTIONS_CURRENCY_KRW :Südkoreanische Won (KRW)
STR_GAME_OPTIONS_CURRENCY_ZAR :Südafrikanische Rand (ZAR)
STR_GAME_OPTIONS_CURRENCY_CUSTOM :Eigene ...
STR_GAME_OPTIONS_CURRENCY_GEL :Georgischer Lari (GEL)
STR_GAME_OPTIONS_CURRENCY_IRR :Iranischer Rial (IRR)
STR_GAME_OPTIONS_CURRENCY_GEL :Georgische Lari (GEL)
STR_GAME_OPTIONS_CURRENCY_IRR :Iranische Rial (IRR)
STR_GAME_OPTIONS_CURRENCY_RUB :Neue Russische Rubel (RUB)
STR_GAME_OPTIONS_CURRENCY_MXN :Mexikanischer Peso (MXN)
STR_GAME_OPTIONS_CURRENCY_MXN :Mexikanische Pesos (MXN)
STR_GAME_OPTIONS_CURRENCY_NTD :Neuer Taiwan-Dollar (NTD)
STR_GAME_OPTIONS_CURRENCY_CNY :Chinesischer Yuan (CNY)
STR_GAME_OPTIONS_CURRENCY_CNY :Chinesische Yuan (CNY)
STR_GAME_OPTIONS_CURRENCY_HKD :Hongkong-Dollar (HKD)
STR_GAME_OPTIONS_CURRENCY_INR :Indische Rupie (INR)
STR_GAME_OPTIONS_CURRENCY_IDR :Indonesische Rupiah (IDR)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Linksverkehr
@ -2172,11 +2173,11 @@ STR_LIVERY_PANEL_TOOLTIP :{BLACK}Farbsche
STR_LIVERY_DEFAULT :Standardlackierung
STR_LIVERY_STEAM :Dampflok
STR_LIVERY_DIESEL :Diesellok
STR_LIVERY_ELECTRIC :E-Lok
STR_LIVERY_ELECTRIC :Elektrolok
STR_LIVERY_MONORAIL :Einschienenbahn
STR_LIVERY_MAGLEV :Magnetschwebebahn
STR_LIVERY_DMU :VT
STR_LIVERY_EMU :ET
STR_LIVERY_DMU :Dieseltriebwagen
STR_LIVERY_EMU :Elektrotriebwagen
STR_LIVERY_PASSENGER_WAGON_STEAM :Passagierwaggon (Dampf)
STR_LIVERY_PASSENGER_WAGON_DIESEL :Passagierwaggon (Diesel)
STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Passagierwaggon (Elektrisch)
@ -4538,12 +4539,12 @@ STR_ENGINE_PREVIEW_CAPTION :{WHITE}Nachrich
STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Wir haben {G "einen" "eine" "ein" ""} neue{G n "" s ""} {0:STRING} entwickelt.{}Besteht Interesse, {G 0 den die das die} {0:STRING} ein Jahr lang exklusiv zu nutzen, so dass wir die Funktionen testen können, bevor {G 0 er sie es sie} allgemein zur Verfügung gestellt {G 0 wird wird wird werden}?
STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=w}Lokomotive
STR_ENGINE_PREVIEW_ELRAIL_LOCOMOTIVE :Elektrifizierte Lokomotive
STR_ENGINE_PREVIEW_ELRAIL_LOCOMOTIVE :Elektrolokomotive
STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :{G=w}Einschienenbahn
STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=w}Magnetschwebebahn
STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=n}Straßenfahrzeug
STR_ENGINE_PREVIEW_TRAM_VEHICLE :Straßenbahnfahrzeug
STR_ENGINE_PREVIEW_TRAM_VEHICLE :Straßenbahn
STR_ENGINE_PREVIEW_AIRCRAFT :{G=n}Flugzeug
STR_ENGINE_PREVIEW_SHIP :{G=n}Schiff
@ -5875,9 +5876,9 @@ STR_SV_STNAME_LAKESIDE :{STRING} Seebli
STR_SV_STNAME_EXCHANGE :{STRING} Abzweigung
STR_SV_STNAME_AIRPORT :{STRING} Flughafen
STR_SV_STNAME_OILFIELD :{STRING} Ölfeld
STR_SV_STNAME_MINES :{STRING} Mine
STR_SV_STNAME_MINES :{STRING} Bergwerk
STR_SV_STNAME_DOCKS :{STRING} Hafen
STR_SV_STNAME_BUOY :{STRING}
STR_SV_STNAME_BUOY :{STRING} Boje
STR_SV_STNAME_WAYPOINT :{STRING}
##id 0x6020
STR_SV_STNAME_ANNEXE :{STRING} Anbau

@ -671,8 +671,8 @@ STR_MONTH_DEC :Δεκέμβρ
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Υπόμνημα
STR_GRAPH_KEY_TOOLTIP :{BLACK}Εμφάνιση υπομνήματος στα γραφήματα
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -575,8 +575,8 @@ STR_MONTH_DEC :דצמבר
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}
STR_GRAPH_KEY_TOOLTIP :{BLACK}הצג מפתחות לגרפים
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -632,8 +632,8 @@ STR_MONTH_DEC :december
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Jelkulcs
STR_GRAPH_KEY_TOOLTIP :{BLACK}A grafikonok jelmagyarázata
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -538,8 +538,8 @@ STR_MONTH_DEC :Desember
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Lykill
STR_GRAPH_KEY_TOOLTIP :{BLACK}Sýna lykilmynd
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -577,8 +577,8 @@ STR_MONTH_DEC :Desember
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Item
STR_GRAPH_KEY_TOOLTIP :{BLACK}Tampilkan grafik item
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -560,8 +560,8 @@ STR_MONTH_DEC :Nollaig
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Eochair
STR_GRAPH_KEY_TOOLTIP :{BLACK}Taispeáin eochair na ngraf
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -196,6 +196,7 @@ STR_COLOUR_DEFAULT :Predefinito
STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph
STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h
STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s
STR_UNITS_VELOCITY_GAMEUNITS :{DECIMAL}{NBSP}riquadri/giorno
STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp
STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hp
@ -315,8 +316,15 @@ STR_SORT_BY_CARGO_CAPACITY :Capacità di ca
STR_SORT_BY_RANGE :{G=f}Autonomia
STR_SORT_BY_POPULATION :Popolazione
STR_SORT_BY_RATING :Valutazione
STR_SORT_BY_NUM_VEHICLES :Numero di veicoli
STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Profitto totale dell'anno scorso
STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Profitto totale di quest'anno
STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Profitto medio dell'anno scorso
STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Profitto medio di quest'anno
# Group by options for vehicle list
STR_GROUP_BY_NONE :Nessuno
STR_GROUP_BY_SHARED_ORDERS :Ordini condivisi
# Tooltips for the main toolbar
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pausa
@ -428,7 +436,7 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :Grafico tariffe
############ range ends here
############ range for company league menu starts
STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Classifica società
STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :Classifica compagnie
STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :Valutazione dettagliata prestazioni
STR_GRAPH_MENU_HIGHSCORE :Punteggi migliori
############ range ends here
@ -571,8 +579,8 @@ STR_MONTH_DEC :Dicembre
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Legenda
STR_GRAPH_KEY_TOOLTIP :{BLACK}Mostra la legenda del grafico
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
@ -605,9 +613,9 @@ STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ENGINEER :Ingegnere
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRAFFIC_MANAGER :Direttore del traffico
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TRANSPORT_COORDINATOR :Coordinatore dei trasporti
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_ROUTE_SUPERVISOR :Supervisore degli itinerari
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Dirigente
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Manager
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Amministratore delegato
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_DIRECTOR :Direttore
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHIEF_EXECUTIVE :Amministratore delegato
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_CHAIRMAN :Presidente del consiglio di amministazione
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_PRESIDENT :Presidente
STR_COMPANY_LEAGUE_PERFORMANCE_TITLE_TYCOON :Magnate
@ -742,6 +750,7 @@ STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLA
STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Terreno accidentato
STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Terreno erboso
STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Terreno spoglio
STR_SMALLMAP_LEGENDA_RAINFOREST :{TINY_FONT}{BLACK}Foresta pluviale
STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Campi
STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Alberi
STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Rocce
@ -773,6 +782,7 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Mostra t
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Mostra l'ultimo messaggio o notizia
STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - -
STR_STATUSBAR_PAUSED :{YELLOW}* * IN PAUSA * *
STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * IN PAUSA (in attesa di aggiornamento del grafo delle rotte) * *
STR_STATUSBAR_AUTOSAVE :{RED}SALVATAGGIO AUTOMATICO
STR_STATUSBAR_SAVING_GAME :{RED}* * SALVATAGGIO PARTITA * *
@ -939,6 +949,7 @@ STR_GAME_OPTIONS_CURRENCY_NTD :Nuovo dollaro t
STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi cinese (CNY)
STR_GAME_OPTIONS_CURRENCY_HKD :Dollaro di Hong Kong (HKD)
STR_GAME_OPTIONS_CURRENCY_INR :Rupia indiana (INR)
STR_GAME_OPTIONS_CURRENCY_IDR :Rupia indonesiana (IDR)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Guida a sinistra
@ -995,6 +1006,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :Altra
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Dimensione interfaccia
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Seleziona la dimensione deglie elementi dell'interfaccia grafica
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_AUTO :(rileva automaticamente)
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normale
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Doppia
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Quadrupla
@ -1002,6 +1014,7 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Quadrupla
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Dimensione caratteri
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Seleziona la dimensione dei caratteri dell'interfaccia
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_AUTO :(rileva automaticamente)
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normale
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Doppia
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Quadrupla
@ -1463,6 +1476,8 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Mantieni aperte
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Mantiene aperti dopo l'uso gli strumenti di costruzione di ponti, tunnel, etc.
STR_CONFIG_SETTING_EXPENSES_LAYOUT :Raggruppa voci nella finestra delle finanze: {STRING}
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Determina l'orginalizzazione della finestra delle finanze della compagnia
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Rimuove automaticamente i segnali durante la costruzione di binari: {STRING}
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Rimuove automaticamente i segnali d'intralcio durante la costruzione di binari. Notare che questo può potenzialmente causare incidenti ferroviari.
STR_CONFIG_SETTING_SOUND_TICKER :Notiziari: {STRING}
STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Emette un suono per i messaggi di riepilogo delle notizie
@ -1576,6 +1591,11 @@ STR_CONFIG_SETTING_ENDING_YEAR :Punteggi a fine
STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Anno in cui il gioco finisce per poter calcolare i punteggi. Alla fine di ques'tanno il punteggio della compagnia viene registrato e viene mostrata la schermata con i punteggi più alti, ma il giocatore può continuare a giocare anche dopo.{}Se quest'anno precede quello di inizio, la schermata dei punteggi non verrà mai mostrata.
STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM}
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Mai
STR_CONFIG_SETTING_ECONOMY_TYPE :Tipo di economia: {STRING}
STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Un'economia morbida fa cambiare la produzione più spesso, ma a piccoli step. Un'economia congelata impedisce cambiamenti di produzione e chiusure di industrie. Questa impostazione potrebbe non avere effetto per le tipologie industriali introdotte da NewGRF.
STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Originale
STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Morbida
STR_CONFIG_SETTING_ECONOMY_TYPE_FROZEN :Congelata
STR_CONFIG_SETTING_ALLOW_SHARES :Permetti l'acquisto di azioni di altre compagnie: {STRING}
STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Se abilitata, consente l'acquisto e la vendita di azioni delle compagnie. Le azioni sono disponibili solo per le compagnie che hanno raggiunto una certa età minima
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Età minima della compagnia per lo scambio delle sue azioni: {STRING}
@ -1627,6 +1647,10 @@ STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Lineare
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Collocazione di alberi durante la partita: {STRING}
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Controlla la comparsa casuale di alberi durante una partita. Può influenzare le industrie che dipendono dalla crescita degli alberi, come le segherie
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD :Cresce ma non si diffonde {RED}(distrugge la falegnameria)
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_RAINFOREST :Cresce ma si diffonde solo in foreste pluviali
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_ALL :Cresce e si diffonde ovunque
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_GROWTH_NO_SPREAD :Non cresce e non si diffonde {RED}(distrugge la falegnameria)
STR_CONFIG_SETTING_TOOLBAR_POS :Posizione barra degli strumenti principale: {STRING}
STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Posizione orizzontale della barra degli strumenti principale sul bordo superiore dello schermo
@ -1693,6 +1717,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Seleziona le un
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperiali (mph)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metriche (km/h)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS :Unità di gioco (riquadri/giorno)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Unità di potenza veicoli: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Seleziona le unità di misura da utilizzare per mostrare i valori di potenza dei veicoli nell'interfaccia utente
@ -1825,6 +1850,7 @@ STR_INTRO_TRANSLATION :{BLACK}A questa
# Quit window
STR_QUIT_CAPTION :{WHITE}Esci
STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Si è sicuri di voler uscire da OpenTTD?
STR_QUIT_YES :{BLACK}Sì
STR_QUIT_NO :{BLACK}No
@ -1836,6 +1862,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Si è s
# Cheat window
STR_CHEATS :{WHITE}Trucchi
STR_CHEATS_TOOLTIP :{BLACK}Le caselle indicano se un trucco è già stato usato una volta
STR_CHEATS_NOTE :{BLACK}Nota: qualsiasi utilizzo di queste impostazioni sarà registrato nel salvataggio
STR_CHEAT_MONEY :{LTBLUE}Aumenta denaro di {CURRENCY_LONG}
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Compagnia controllata: {ORANGE}{COMMA}
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Bulldozer magico (rimuove industrie e oggetti fissi): {ORANGE}{STRING}
@ -1987,6 +2014,10 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Entra ne
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Aggiorna
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Aggiorna le informazioni sul server
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :{BLACK}Cerca su Internet
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Cerca server pubblici su Internet
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :{BLACK}Cerca nella LAN
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :{BLACK}Cerca server nella LAN
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Aggiungi server
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Aggiunge un server alla lista di server in cui cercare sempre partite in corso
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Avvia server
@ -2212,11 +2243,13 @@ STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Partita ancora
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Partita ancora in pausa ({STRING}, {STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Partita ancora in pausa ({STRING}, {STRING}, {STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Partita ancora in pausa ({STRING}, {STRING}, {STRING}, {STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_5 :Partita ancora in pausa ({STRING}, {STRING}, {STRING}, {STRING}, {STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Partita ripresa ({STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :numero di giocatori
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :connessione client in corso
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuale
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :script
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :in attesa di aggiornamento del grafo delle rotte
############ End of leave-in-this-order
STR_NETWORK_MESSAGE_CLIENT_LEAVING :abbandono della partita
STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} è entrato nella partita
@ -2226,6 +2259,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} è
STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} ha avviato una nuova compagnia (#{2:NUM})
STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} ha abbandonato la partita ({2:STRING})
STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} ha cambiato nome in {STRING}
STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} ha dato {2:CURRENCY_LONG} a {1:STRING}
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Il server ha chiuso la sessione
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Il server si sta riavviando...{}Attendere prego...
STR_NETWORK_MESSAGE_KICKED :*** {STRING} è stato espulso. Motivo: ({STRING})
@ -2347,6 +2381,7 @@ STR_JOIN_WAYPOINT_CAPTION :{WHITE}Unisci w
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Costruisci waypoint separato
# Generic toolbar
STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE :{BLACK}Disabilitato perché non ci sono veicoli disponibili per questa infrastruttura
# Rail construction toolbar
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Costruzione ferrovie
@ -2546,6 +2581,12 @@ STR_TREES_RANDOM_TYPE :{BLACK}Alberi c
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Pianta alberi di specie a caso. MAIUSC alterna fra costruzione e stima dei costi
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Alberi casuali
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Pianta alberi casualmente nel paesaggio
STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normale
STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Pianta singoli alberi trascinando il mouse sopra il paesaggio.
STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Bosco
STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Pianta piccole foreste trascinando il mouse sopra il paesaggio.
STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Foresta
STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Pianta grandi foreste trascinando il mouse sopra il paesaggio.
# Land generation window (SE)
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Generazione terreno
@ -2596,12 +2637,18 @@ STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Casuale
# Fund new industry window
STR_FUND_INDUSTRY_CAPTION :{WHITE}Finanzia nuova industria
STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Selezionare l'industria appropriata dalla lista
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Alcune industrie casuali
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Crea industrie casuali
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Copre la mappa con industrie posizionate casualmente
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_CAPTION :{WHITE}Crea industrie casuali
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_QUERY :{YELLOW}Si è sicuri di voler creare casualmente molte industrie?
STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Costo: {YELLOW}{CURRENCY_LONG}
STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Esegui prospezione
STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Costruisci
STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Finanzia
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES :{BLACK}Rimuovi tutte le industrie
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_TOOLTIP :{BLACK}Rimuove tutte le industrie presenti sulla mappa
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_CAPTION :{WHITE}Rimuovi tutte le industrie
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_QUERY :{YELLOW}Si è sicuri di voler rimuovere tutte le industrie?
# Industry cargoes window
STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Catena di distribuzione di {G un un' una} {STRING}
@ -2622,6 +2669,7 @@ STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Selezion
# Land area window
STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informazioni sull'area di terreno
STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del riquadro. CTRL+clic la mostra in una mini visuale
STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Costo di demolizione: {LTBLUE}N/A
STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Costo di demolizione: {RED}{CURRENCY_LONG}
STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Ricavo da demolizione: {LTBLUE}{CURRENCY_LONG}
@ -2831,6 +2879,8 @@ STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF:
STR_SAVELOAD_FILTER_TITLE :{BLACK}Filtro:
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Sovrascrivi file
STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Si è sicuri di voler sovrascrivere il file esistente?
STR_SAVELOAD_DIRECTORY :{STRING} (Cartella)
STR_SAVELOAD_PARENT_DIRECTORY :{STRING} (Cartella superiore)
STR_SAVELOAD_OSKTITLE :{BLACK}Inserire un nome per il salvataggio
@ -2980,8 +3030,8 @@ STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Numero
# NewGRF inspect window
STR_NEWGRF_INSPECT_CAPTION :{WHITE}Ispeziona - {STRING}
STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Padre
STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Ispeziona l'oggetto dell'ambito padre
STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Superiore
STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Ispeziona l'oggetto dell'ambito superiore
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING} a {HEX}
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Oggetto
@ -3091,6 +3141,7 @@ STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Attiva/d
# Sign window
STR_EDIT_SIGN_CAPTION :{WHITE}Modifica testo del cartello
STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del cartello. CTRL+clic lo mostra in una mini visuale
STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Va al cartello successivo
STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Va al cartello precedente
@ -3174,10 +3225,10 @@ STR_GOALS_COMPANY_TITLE :{BLACK}Obiettiv
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Fare clic su un obiettivo per centrare la visuale principale sull'industria, città o riquadro. CTRL+clic mostra l'industria/città/riquadro in una mini visuale
# Goal question window
STR_GOAL_QUESTION_CAPTION_QUESTION :Domanda
STR_GOAL_QUESTION_CAPTION_INFORMATION :Informazione
STR_GOAL_QUESTION_CAPTION_WARNING :Avviso
STR_GOAL_QUESTION_CAPTION_ERROR :Errore
STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Domanda
STR_GOAL_QUESTION_CAPTION_INFORMATION :{BLACK}Informazioni
STR_GOAL_QUESTION_CAPTION_WARNING :{BLACK}Avviso
STR_GOAL_QUESTION_CAPTION_ERROR :{YELLOW}Errore
############ Start of Goal Question button list
STR_GOAL_QUESTION_BUTTON_CANCEL :Annulla
@ -3302,7 +3353,7 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Impedisc
STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del waypoint. CTRL+clic lo mostra in una mini visuale.
STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Cambia il nome del waypoint
STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione della boa. CTRL+clic la mostra in una mini visuale.
STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione della boa. CTRL+clic la mostra in una mini visuale
STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Cambia il nome della boa
STR_EDIT_WAYPOINT_NAME :{WHITE}Rinomina il waypoint
@ -3367,8 +3418,8 @@ STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Sposta s
STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Ricostruisce la sede della compagnia in un altro luogo pagando l'1% del valore della compagnia. MAIUSC+clic mostra il costo stimato senza ricostruire la sede
STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Dettagli
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Visualizza i conteggi dettagliati delle infrastrutture
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Dona denaro
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Trasferisci denaro
STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Trasferisci denaro a questa compagnia
STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nuova faccia
STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Seleziona una nuova faccia per il presidente
STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON :{BLACK}Colori compagnia
@ -3385,9 +3436,9 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Vende un
STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Nome della compagnia
STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Nome del presidente
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Inserire la quantità di denaro da donare
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Inserisci l'ammontare di denaro che vuoi trasferire
STR_BUY_COMPANY_MESSAGE :{WHITE}Stiamo cercando una compagnia di trasporti disposta a rilevare la nostra società.{}{} Vorrebbe acquistare la {COMPANY} per {CURRENCY_LONG}?
STR_BUY_COMPANY_MESSAGE :{WHITE}Stiamo cercando una società di trasporti disposta a rilevare la nostra compagnia.{}{} Vorrebbe acquistare {COMPANY} per {CURRENCY_LONG}?
# Company infrastructure window
STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastrutture della {COMPANY}
@ -3498,8 +3549,8 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Rimuovi tutti i
STR_GROUP_RENAME_CAPTION :{BLACK}Rinomina un gruppo
STR_GROUP_PROFIT_THIS_YEAR :Profitto quest'anno:
STR_GROUP_PROFIT_LAST_YEAR :Profitto anno scorso:
STR_GROUP_PROFIT_THIS_YEAR :Profitto di quest'anno:
STR_GROUP_PROFIT_LAST_YEAR :Profitto dell'anno scorso:
STR_GROUP_OCCUPANCY :Utilizzo corrente:
STR_GROUP_OCCUPANCY_VALUE :{NUM}%
@ -3653,10 +3704,10 @@ STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Compra u
STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Compra una copia di una nave. Fare clic su questo pulsante e quindi su una nave dentro o fuori dal deposito. Tenere premuto CTRL per condividere gli ordini. MAIUSC+clic mostra il costo stimato senza comprare
STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Compra una copia di un aeromobile. Fare clic su questo pulsante e quindi su un aeromobile dentro o fuori dall'hangar. Tenere premuto CTRL per condividere gli ordini. MAIUSC+clic mostra il costo stimato senza comprare
STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del deposito ferroviario. CTRL+clic lo mostra in una mini visuale.
STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del deposito automezzi. CTRL+clic lo mostra in una mini visuale.
STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del deposito navale. CTRL+clic lo mostra in una mini visuale.
STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione dell'hangar. CTRL+clic lo mostra in una mini visuale.
STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del deposito ferroviario. CTRL+clic lo mostra in una mini visuale
STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del deposito automezzi. CTRL+clic lo mostra in una mini visuale
STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del deposito navale. CTRL+clic lo mostra in una mini visuale
STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione dell'hangar. CTRL+clic lo mostra in una mini visuale
STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Elenca tutti i treni che hanno questo deposito nei loro ordini
STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Elenca tutti gli automezzi che hanno questo deposito nei loro ordini
@ -3673,7 +3724,7 @@ STR_DEPOT_MASS_START_DEPOT_ROAD_VEHICLE_TOOLTIP :{BLACK}Fare cli
STR_DEPOT_MASS_START_DEPOT_SHIP_TOOLTIP :{BLACK}Fare clic per avviare tutte le navi nel deposito
STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}Fare clic per avviare tutti gli aeromobili nell'hangar
STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Stai per vendere tutti i veicoli nel deposito. Sei sicuro?
STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Si stano per vendere tutti i veicoli nel deposito. Si è sicuri?
# Engine preview window
STR_ENGINE_PREVIEW_CAPTION :{WHITE}Messaggio da un costruttore di veicoli
@ -3746,6 +3797,10 @@ STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Fa sì c
# Vehicle view
STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE}
STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del treno. Doppio clic lo segue nella visuale principale. CTRL+clic lo mostra in una mini visuale
STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione del veicolo. Doppio click lo segue nella visuale principale. CTRL+Click lo mostra in una mini visuale
STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione della nave. Doppio clic la segue nella visuale principale. CTRL+clic la mostra in una mini visuale
STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Centra la visuale principale sulla posizione dell'aeromobile. Doppio click lo segue nella visuale principale. CTRL+Click lo mostra in una mini visuale
STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Manda il treno al deposito. CTRL+clic per eseguire solo una manutenzione
STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Manda l'automezzo al deposito. CTRL+clic per eseguire solo una manutenzione
@ -3777,7 +3832,12 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Mostra i
STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Mostra i dettagli sulla nave
STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Mostra i dettagli sull'aeromobile
STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}Azione in corso del treno - clicca per fermare o far partire il treno
STR_VEHICLE_VIEW_ROAD_VEHICLE_STATUS_START_STOP_TOOLTIP :{BLACK}Azione in corso del veicolo - clicca per fermare o far partire il veicolo
STR_VEHICLE_VIEW_SHIP_STATE_STATUS_STOP_TOOLTIP :{BLACK}Azione in corso della nave - clicca per fermare o far partire la nave
STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Azione in corso dell'aeromobile - clicca per fermare o far partire l'aeromobile
STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Centra la visuale principale sulla destinazione dell'ordine. CTRL+clic la mostra in una mini visuale.
# Messages in the start stop button in the vehicle view
STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Caricamento / Scaricamento
@ -4005,6 +4065,7 @@ STR_ORDER_REFIT_STOP_ORDER :(Riadatta per {
STR_ORDER_STOP_ORDER :(Ferma)
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Impossibile usare la stazione){POP_COLOUR} {STRING} {STATION} {STRING}
STR_ORDER_IMPLICIT :(Implicito)
@ -4249,6 +4310,7 @@ STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Salvataggio cre
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :File non leggibile
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :File non scrivibile
STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Controllo integrità dati non riuscito
STR_GAME_SAVELOAD_ERROR_PATCHPACK :Salvataggio creato con una versione modificata
STR_GAME_SAVELOAD_NOT_AVAILABLE :<non disponibile>
STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}La partita è stata salvata in una versione senza il supporto per i tram. Tutti i tram sono stati rimossi
@ -4328,7 +4390,8 @@ STR_ERROR_CAN_T_BORROW_ANY_MORE_MONEY :{WHITE}Impossib
STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... debito già estinto
STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} richiesti
STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Impossibile ripagare il prestito...
STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Impossibile donare denaro prestato dalla banca...
STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Impossibile trasferire denaro prestato dalla banca...
STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}Impossibile trasferire denaro a questa compagnia...
STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Impossibile comprare la compagnia...
STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Impossibile costruire la sede della compagnia...
STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Impossibile comprare il 25% delle azioni...
@ -4455,6 +4518,8 @@ STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Tipo di deposit
STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} è diventato troppo lungo dopo la sostituzione
STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Nessuna regola di rimpiazzo/rinnovo automatico applicata
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(limite denaro)
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_CARGO :{WHITE}Il nuovo veicolo non può trasportare {STRING}
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}Il nuovo veicolo non può riadattare il carico nell'ordine {NUM}
# Rail construction errors
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Combinazione di binari impossibile
@ -4539,7 +4604,7 @@ STR_ERROR_YOU_ALREADY_OWN_IT :{WHITE}... già
STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Impossibile creare il gruppo...
STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Impossibile eliminare il gruppo...
STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Impossibile rinominare il gruppo...
STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Impossibile impostare il gruppo contenitore...
STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Impossibile impostare il gruppo superiore...
STR_ERROR_GROUP_CAN_T_SET_PARENT_RECURSION :{WHITE}... non sono ammessi cicli nella gerarchia dei gruppi
STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Impossibile rimuovere tutti i veicoli del gruppo...
STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Impossibile aggiungere il veicolo al gruppo...
@ -4741,10 +4806,10 @@ STR_INDUSTRY_NAME_SUGAR_MINE :{G=f}Miniera di
##id 0x6000
STR_SV_EMPTY :
STR_SV_UNNAMED :Senza nome
STR_SV_TRAIN_NAME :Treno {COMMA}
STR_SV_ROAD_VEHICLE_NAME :Automezzo {COMMA}
STR_SV_SHIP_NAME :Nave {COMMA}
STR_SV_AIRCRAFT_NAME :Aeromobile {COMMA}
STR_SV_TRAIN_NAME :Treno #{COMMA}
STR_SV_ROAD_VEHICLE_NAME :Automezzo #{COMMA}
STR_SV_SHIP_NAME :Nave #{COMMA}
STR_SV_AIRCRAFT_NAME :Aeromobile #{COMMA}
STR_SV_STNAME :{STRING}
STR_SV_STNAME_NORTH :{STRING} Nord
@ -5046,6 +5111,7 @@ STR_FORMAT_BUOY_NAME :Boa di {TOWN}
STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Boa #{COMMA}
STR_FORMAT_COMPANY_NUM :(Compagnia {COMMA})
STR_FORMAT_GROUP_NAME :Gruppo {COMMA}
STR_FORMAT_GROUP_VEHICLE_NAME :{GROUP} #{COMMA}
STR_FORMAT_INDUSTRY_NAME :{1:STRING} di {0:TOWN}
STR_FORMAT_WAYPOINT_NAME :Waypoint di {TOWN}
STR_FORMAT_WAYPOINT_NAME_SERIAL :Waypoint di {TOWN} #{COMMA}

@ -563,8 +563,6 @@ STR_MONTH_DEC :12
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}凡例
STR_GRAPH_KEY_TOOLTIP :{BLACK}この凡例の表示/非表示を切り替えます
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}月{} {STRING}月
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}月{} {STRING}月{}{NUM}年
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -586,8 +586,8 @@ STR_MONTH_DEC :{G=m}12월
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}범례
STR_GRAPH_KEY_TOOLTIP :{BLACK}그래프의 범례를 보여줍니다.
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -751,8 +751,8 @@ STR_MONTH_DEC :Decembris
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Clavis
STR_GRAPH_KEY_TOOLTIP :{BLACK}Monstrare formularum clavem
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -579,8 +579,8 @@ STR_MONTH_DEC :Decembris
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Apzīmējumu atslēga
STR_GRAPH_KEY_TOOLTIP :{BLACK}Diagrammās rādīt apzīmējumu atslēgas
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -756,8 +756,8 @@ STR_MONTH_DEC :Gruodis
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Spalva
STR_GRAPH_KEY_TOOLTIP :{BLACK}Rodo žaidėjų spalvas
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -569,8 +569,8 @@ STR_MONTH_DEC :Dezember
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Legend
STR_GRAPH_KEY_TOOLTIP :{BLACK}Weis d'Legend vun der Grafik
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -542,8 +542,8 @@ STR_MONTH_DEC :Disember
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Kunci
STR_GRAPH_KEY_TOOLTIP :{BLACK}Tunjukkan kunci kepada graf
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -579,8 +579,8 @@ STR_MONTH_DEC :desember
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Nøkkel
STR_GRAPH_KEY_TOOLTIP :{BLACK}Vis nøkkel for grafene
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
@ -949,6 +949,7 @@ STR_GAME_OPTIONS_CURRENCY_NTD :Ny Taiwan Dolla
STR_GAME_OPTIONS_CURRENCY_CNY :Chinese Renminbi (CNY)
STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Dollar (HKD)
STR_GAME_OPTIONS_CURRENCY_INR :Indisk rupi (INR)
STR_GAME_OPTIONS_CURRENCY_IDR :Indonesisk Rupi (IDR)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Venstrekjøring
@ -1005,6 +1006,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :annet
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Grensesnitt-størrelse
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Velg grensesnitt-størrelsen som skal benyttes
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_AUTO :(finn automatisk)
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :2 ganger størrelse
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :4 ganger størrelse
@ -1012,6 +1014,7 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :4 ganger størr
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Skriftstørrelse
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Velg skriftstørrelse for grensesnitt
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_AUTO :(finn automatisk)
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Dobbel størrelse
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Firedobbel størrelse
@ -2608,12 +2611,18 @@ STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Tilfeldi
# Fund new industry window
STR_FUND_INDUSTRY_CAPTION :{WHITE}Finansier ny industri
STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Velg passende industri fra listen
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Mange tilfeldige industrier
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Mange tilfeldige industrier
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Dekk kartet med tilfeldig plasserte industrier
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_CAPTION :{WHITE}Opprett tilfeldig industrier
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_QUERY :{YELLOW}Er du sikker på at du vil lage mange tilfeldige industrier?
STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Koster: {YELLOW}{CURRENCY_LONG}
STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Prospekt
STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Bygg
STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Finansier
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES :{BLACK}Fjern alle industrier
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_TOOLTIP :{BLACK}Fjern alle industrier på kartet
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_CAPTION :{WHITE}Fjern alle industrier
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_QUERY :{YELLOW}Er du sikker på at du vil fjerne alle industriene?
# Industry cargoes window
STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Industrikjede for {STRING}
@ -2844,6 +2853,8 @@ STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF:
STR_SAVELOAD_FILTER_TITLE :{BLACK}Filtrer streng:
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Overskriv fil
STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Er du sikker på at du vil overskrive eksisterende fil?
STR_SAVELOAD_DIRECTORY :{STRING} (Liste)
STR_SAVELOAD_PARENT_DIRECTORY :{STRING} (Foreldrekatalog)
STR_SAVELOAD_OSKTITLE :{BLACK}Skriv inn et navn på spillet som skal lagres

@ -562,8 +562,8 @@ STR_MONTH_DEC :desember
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Nøkkel
STR_GRAPH_KEY_TOOLTIP :{BLACK}Syne nøkkel til grafer
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -956,8 +956,8 @@ STR_MONTH_DEC :Grudzień
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Legenda
STR_GRAPH_KEY_TOOLTIP :{BLACK}Pokaż legendę na wykresie
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
@ -2374,8 +2374,8 @@ STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :Przeszukaj inte
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Znajdź w internecie serwery publiczne
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :Przeszukaj LAN
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :Znajdź serwery w sieci lokalnej
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Dodaj serwer
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Dodaj serwer do listy, która będzie przeszukiwana w poszukiwaniu uruchomionych gier
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Zapisz serwer
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Zapisz serwer na liście serwerów, które będą zawsze sprawdzane w poszukiwaniu uruchomionych gier
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Uruchom serwer
STR_NETWORK_SERVER_LIST_START_SERVER_TOOLTIP :{BLACK}Uruchom własny serwer

@ -572,8 +572,8 @@ STR_MONTH_DEC :Dezembro
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Chave
STR_GRAPH_KEY_TOOLTIP :{BLACK}Mostrar chave dos gráficos
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -187,6 +187,7 @@ STR_COLOUR_ORANGE :Portocaliu
STR_COLOUR_BROWN :Maro
STR_COLOUR_GREY :Gri
STR_COLOUR_WHITE :Alb
STR_COLOUR_RANDOM :Aleator
STR_COLOUR_DEFAULT :Prestabilit
# Units used in OpenTTD
@ -466,6 +467,7 @@ STR_TOOLBAR_SOUND_MUSIC :Sunet/muzică
############ range for message menu starts
STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Ultimul mesaj/ultima ştire
STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Lista ultimelor mesaje
STR_NEWS_MENU_DELETE_ALL_MESSAGES :Șterge toate mesajele
############ range ends here
############ range for about menu starts
@ -564,8 +566,8 @@ STR_MONTH_DEC :decembrie
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Legendă
STR_GRAPH_KEY_TOOLTIP :{BLACK}Afişează legenda graficelor
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
@ -1166,6 +1168,7 @@ STR_CONFIG_SETTING_AUTOSLOPE :Permite terra-f
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permite terraformarea sub clădiri şi şine fără eliminarea acestora
STR_CONFIG_SETTING_CATCHMENT :Permite arii de cuprindere mai realiste: {STRING}
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Permite zone diferite de captare pentru tipuri diferite de staţii şi aeroporturi
STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :Dacă este activată, industriile cu stații atașate (cum ar fi Platforma petrolieră) pot fi deservite și de stațiile alăturate ale companiilor. Dacă e dezactivată, aceste industrii nu vor putea fi servite decât prin intermediul stațiilor atașate. Nicio stație din preajmă a unei companii nu le va putea deservi, iar stația atașată nu va putea deservi decât industria sa.
STR_CONFIG_SETTING_EXTRADYNAMITE :Permite demolarea unui nr. mai mare de construcţii deţinute de oraş: {STRING}
STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Facilitează eliminarea de clădiri şi infrastructură deţinute de oraş
STR_CONFIG_SETTING_TRAIN_LENGTH :Lungimea maximă a trenurilor: {STRING}
@ -1404,6 +1407,7 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Pastrează acti
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Menține barele de construcție pentru tunele, poduri șamd deschise după folosire
STR_CONFIG_SETTING_EXPENSES_LAYOUT :Grupează cheltuielile în raportul financiar al companiei: {STRING}
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definește stilul ferestrei care afișează cheltuielile companiei
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Elimină automat semnalele când construiești căi ferate dacă ele îți vin în cale. Nu uita că asta ar putea conduce la accidente feroviare.
STR_CONFIG_SETTING_SOUND_TICKER :Afișaj știri: {STRING}
STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Redă sunet la afișarea sumarului știrilor
@ -1511,6 +1515,7 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Pe larg
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Ştirile color apar în: {STRING}
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Anul începând cu care anunțurile din ziar sunt tipărite color. Înainte de acest an, anunturile sunt monocrome (alb/negru)
STR_CONFIG_SETTING_STARTING_YEAR :Anul de început al jocului: {STRING}
STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM}
STR_CONFIG_SETTING_ALLOW_SHARES :Permite cumpărarea de acţiuni de la alte companii: {STRING}
STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Dacă este activată, se permite cumpărarea și vânzarea de acțiuni ale companiilor. Acțiunile devin disponibile doar când compania depășește o anumită vârstă
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Procentul din profitul pe secţiune care să fie plătit pentru alimentare: {STRING}
@ -1552,6 +1557,10 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Dacă este acti
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :nepermis
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :permis
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :permis, aspect particularizat al oraşului
STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Modalitatea de generare a cargoului dintr-un oraș: {STRING}
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Cât cargo este produs de casele dintr-un oraș, relativ la populația totală a orașului.{}Creștere pătratică: Un oraș de 2 ori mai mare generează de 4 ori mai mulți pasageri.{}Creștere liniară: Un oraș de 2 ori mai mare generează de 4 ori mai mulți pasageri.
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Pătratică (originală)
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Liniar
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Poziţionarea copacilor în joc: {STRING}
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Controlează apariția aleatoare a copacilor în joc. Este posibil ca această opțiune să afecteze industrii care depind de creșterea copacilor, cum ar fi fabricile de cherestea
@ -2138,6 +2147,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} a
STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} a început o companie nouă (#{2:NUM})
STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} a ieşit din joc ({2:STRING})
STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} şi-a schimbat numele în {STRING}
STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} a dat {2:CURRENCY_LONG} către {1:STRING}
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Serverul a închis conexiunea
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Serverul este repornit...{}Vă rugăm aşteptaţi...

@ -716,8 +716,8 @@ STR_MONTH_DEC :Декабрь
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Легенда
STR_GRAPH_KEY_TOOLTIP :{BLACK}Показать легенду к графикам
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -748,8 +748,8 @@ STR_MONTH_DEC :Decembar
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Legenda
STR_GRAPH_KEY_TOOLTIP :{BLACK}Prikaži legendu
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -569,8 +569,8 @@ STR_MONTH_DEC :12月
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}索引
STR_GRAPH_KEY_TOOLTIP :{BLACK}显示图表的公司索引
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -641,8 +641,8 @@ STR_MONTH_DEC :December
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Vyb.
STR_GRAPH_KEY_TOOLTIP :{BLACK}Vybrať položky na grafe
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
@ -760,9 +760,9 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Kliknite
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Najlepšie spoločnosti, ktoré dosiahli rok {NUM}
STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Tabuľka spoločnosti v roku {NUM}
STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}.
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :{G=z}Obchodníčka
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Obchodník
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN.g :Obchodníci
STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :{G=z}Podnikateľka
STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :{G=m}Podnikateľ
STR_HIGHSCORE_PERFORMANCE_TITLE_INDUSTRIALIST :{G=m}Priemyselník
STR_HIGHSCORE_PERFORMANCE_TITLE_CAPITALIST :{G=m}Kapitalista
STR_HIGHSCORE_PERFORMANCE_TITLE_MAGNATE :{G=m}Magnát
@ -1015,6 +1015,7 @@ STR_GAME_OPTIONS_CURRENCY_NTD :Taiwanský dol
STR_GAME_OPTIONS_CURRENCY_CNY :Čínsky jüan (CNY)
STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongský dolár (HKD)
STR_GAME_OPTIONS_CURRENCY_INR :Indická rupia (INR)
STR_GAME_OPTIONS_CURRENCY_IDR :Indonézska rupia (IDR)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Jazdia naľavo

@ -713,8 +713,8 @@ STR_MONTH_DEC :December
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Ključ
STR_GRAPH_KEY_TOOLTIP :{BLACK}Prikaži ključe grafov
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -578,8 +578,8 @@ STR_MONTH_DEC :Diciembre
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Leyenda
STR_GRAPH_KEY_TOOLTIP :{BLACK}Mostrar leyenda en gráficos
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
@ -948,6 +948,7 @@ STR_GAME_OPTIONS_CURRENCY_NTD :Nuevo dólar ta
STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi chino (CNY)
STR_GAME_OPTIONS_CURRENCY_HKD :Dólar hongkonés (HKD)
STR_GAME_OPTIONS_CURRENCY_INR :Rupia india (INR)
STR_GAME_OPTIONS_CURRENCY_IDR :Rupia indonesia (IDR)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Conducir por la izquierda

@ -578,8 +578,8 @@ STR_MONTH_DEC :Diciembre
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Leyenda
STR_GRAPH_KEY_TOOLTIP :{BLACK}Mostrar leyenda de gráficas
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -194,6 +194,7 @@ STR_COLOUR_DEFAULT :Standard
STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph
STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h
STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s
STR_UNITS_VELOCITY_GAMEUNITS :{DECIMAL}{NBSP}rutor/dag
STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hk
STR_UNITS_POWER_METRIC :{COMMA}{NBSP}hk
@ -313,8 +314,15 @@ STR_SORT_BY_CARGO_CAPACITY :Lastkapacitet
STR_SORT_BY_RANGE :Räckvidd
STR_SORT_BY_POPULATION :Folkmängd
STR_SORT_BY_RATING :Värdering
STR_SORT_BY_NUM_VEHICLES :Antal fordon
STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Total vinst förra året
STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Total vinst detta år
STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Genomsnittlig vinst förra året
STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Genomsnittlig vinst detta året
# Group by options for vehicle list
STR_GROUP_BY_NONE :Ingen
STR_GROUP_BY_SHARED_ORDERS :Delade order
# Tooltips for the main toolbar
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pausa spelet
@ -569,8 +577,8 @@ STR_MONTH_DEC :december
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Nyckel
STR_GRAPH_KEY_TOOLTIP :{BLACK}Visa nyckel till grafer
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
@ -740,6 +748,7 @@ STR_SMALLMAP_LEGENDA_DOCK :{TINY_FONT}{BLA
STR_SMALLMAP_LEGENDA_ROUGH_LAND :{TINY_FONT}{BLACK}Obearbetad mark
STR_SMALLMAP_LEGENDA_GRASS_LAND :{TINY_FONT}{BLACK}Gräsmark
STR_SMALLMAP_LEGENDA_BARE_LAND :{TINY_FONT}{BLACK}Barmark
STR_SMALLMAP_LEGENDA_RAINFOREST :{TINY_FONT}{BLACK}Regnskog
STR_SMALLMAP_LEGENDA_FIELDS :{TINY_FONT}{BLACK}Fält
STR_SMALLMAP_LEGENDA_TREES :{TINY_FONT}{BLACK}Träd
STR_SMALLMAP_LEGENDA_ROCKS :{TINY_FONT}{BLACK}Stenar
@ -771,6 +780,7 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Visa all
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Visa senaste meddelande eller nyhet
STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - -
STR_STATUSBAR_PAUSED :{YELLOW}* * PAUSAD * *
STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * PAUSAD (väntar på updatering av länkdiagram) * *
STR_STATUSBAR_AUTOSAVE :{RED}AUTOSPARA
STR_STATUSBAR_SAVING_GAME :{RED}* * SPARAR SPEL * *
@ -937,6 +947,7 @@ STR_GAME_OPTIONS_CURRENCY_NTD :Nya Taiwanesisk
STR_GAME_OPTIONS_CURRENCY_CNY :Kinesisk Renminbi (CNY)
STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongdollar (HKD)
STR_GAME_OPTIONS_CURRENCY_INR :Indisk rupie (INR)
STR_GAME_OPTIONS_CURRENCY_IDR :Indonesisk Rupiah (IDR)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Kör på vänster sida
@ -993,6 +1004,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :annan
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Gränssnittstorlek
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Välj vilken gränssnittsstorlek som ska användas
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_AUTO :(Upptäck automatiskt)
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dubbel storlek
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Fyrdubbel storlek
@ -1000,6 +1012,7 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Fyrdubbel storl
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Storlek på typsnitt
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Välj vilken storlek som ska användas på gränssnittets typsnitt
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_AUTO :(Upptäck automatiskt)
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Dubbel storlek
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Kvadrupel storlek
@ -1313,7 +1326,7 @@ STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Visa NewGRF:ens
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Lägg till en rad i fordonsbyggnadsfönstret som visar vilken NewGRF det valda fordonet kommer ifrån.
STR_CONFIG_SETTING_LANDSCAPE :Landskap: {STRING}
STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Landskap definiera grundläggande gameplay scenarier med olika last och krav stad tillväxt. NewGRF och Game skript tillåter finare kontroll.
STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Landskapet definierar grundläggande gameplay scenarier med olika laster och krav på stadstillväxt. NewGRF och spelskript tillåter finare kontroll
STR_CONFIG_SETTING_LAND_GENERATOR :Landgenerator: {STRING}
STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Den ursprungliga generatorn beror på bas grafik set, och komponerar fasta landskapsformer. TerraGenesis är en Perlin buller baserad generator med finare inställningar kontroll
STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original
@ -1439,6 +1452,8 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Behåll byggnad
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Håll verktygen för byggnation av broar, tunnlar, etc. öppna efter användning
STR_CONFIG_SETTING_EXPENSES_LAYOUT :Gruppera utgifter i företagens finansfönster: {STRING}
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Välj layout för företagens utgiftsfönster
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automatiskt ta bort signaler vid byggande av järnväg: {STRING}
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Ta automatiskt bort signaler vid byggande av järnväg om signalerna är i vägen. Notera att detta kan leda till att tåg krockar.
STR_CONFIG_SETTING_SOUND_TICKER :Summerade nyheter: {STRING}
STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Spela ljudeffekt för sammanfattade nyhetsmeddelanden
@ -1552,6 +1567,11 @@ STR_CONFIG_SETTING_ENDING_YEAR :Slutår för po
STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Årtal då spelet slutar räkna poäng. Vid slutet av detta år sparas företagets poäng och listan med de bästa spelresultaten visas, men därefter kan spelarna fortsätta att spela.{}Om årtalet är satt till innan startåret visas aldrig de bästa spelresultaten.
STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM}
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Aldrig
STR_CONFIG_SETTING_ECONOMY_TYPE :Typ av ekonomi: {STRING}
STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Jämn ekonomi gör att produktionen ändrar sig oftare i mindre steg. Frusen ekonomi förhindrar produktions ändringar och att industrier stänger. Denna inställning har ingen effekt om industrien kommer från en NewGRF.
STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Original
STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Jämn
STR_CONFIG_SETTING_ECONOMY_TYPE_FROZEN :Frusen
STR_CONFIG_SETTING_ALLOW_SHARES :Tillåt köp av aktier från andra företag: {STRING}
STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :När det är aktiverat blir det tillåtet att köpa och sälja andelar i företag. För att dess andelar ska bli tillgängliga måste ett företag ha uppnått en viss ålder
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Lägsta företagsålder för aktiehandel: {STRING}
@ -1603,6 +1623,10 @@ STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Linjär
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Placering av träd i spelläge: {STRING}
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Kontrollera den slumpmässiga uppkomsten av träd under spelets gång. Detta kan påverka industrier som är beroende av växande träd, till exempel sågverk
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD :Växer men sprider ej{RED}(Sågverket fungerar inte)
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_RAINFOREST :Växer men endast spriding i rengskogar
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_ALL :Väx och sprid överallt
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_GROWTH_NO_SPREAD :Växer ej, sprider ej{RED}(Sågverket fungerar inte)
STR_CONFIG_SETTING_TOOLBAR_POS :Verktygsradens position: {STRING}
STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Verktygsradens horisontella position i skärmens överkant
@ -1669,6 +1693,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Närhelst en ha
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Brittisk (mph)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrisk (km/h)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS :Spel enheter (rutor/dag)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Enhet för fordons motoreffekt: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Närhelst ett fordons motoreffekt visas i användargränssnittet, visa den i den valda enheten
@ -1801,6 +1826,7 @@ STR_INTRO_TRANSLATION :{BLACK}Den här
# Quit window
STR_QUIT_CAPTION :{WHITE}Avsluta
STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}Är du säker på att du vill avsluta OpenTTD?
STR_QUIT_YES :{BLACK}Ja
STR_QUIT_NO :{BLACK}Nej
@ -1812,6 +1838,7 @@ STR_ABANDON_SCENARIO_QUERY :{YELLOW}Är du
# Cheat window
STR_CHEATS :{WHITE}Fusk
STR_CHEATS_TOOLTIP :{BLACK}Checkboxar indikerar om du använt det här fusket förut
STR_CHEATS_NOTE :{BLACK}Notera: användandet av dessa inställningar kommer att sparas av sparfilen
STR_CHEAT_MONEY :{LTBLUE}Öka pengar med {CURRENCY_LONG}
STR_CHEAT_CHANGE_COMPANY :{LTBLUE}Spelar som företag:: {ORANGE}{COMMA}
STR_CHEAT_EXTRA_DYNAMITE :{LTBLUE}Magisk bulldozer (ta bort industrier, oflyttbara objekt etc.): {ORANGE}{STRING}
@ -1963,6 +1990,10 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Gå med
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Uppdatera server
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Uppdatera server info
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :{BLACK}Sök på internet
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Sök online efter offentliga servrar
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :{BLACK}Sök LAN
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :{BLACK}Sök i lokalt nätverk för servrar
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Lägg till server
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Lägg till en server till listan som alltid kommer kontrolleras för aktiva spel
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Starta server
@ -2188,11 +2219,13 @@ STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Spelet är fort
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Spel fortfarande pausad ({STRING}, {STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spel fortfarande pausad ({STRING}, {STRING}, {STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Spelet är fortfarande pausat ({STRING}, {STRING}, {STRING}, {STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_5 :Spelet är fortfarande pausat ({STRING}, {STRING}, {STRING}, {STRING}, {STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spelet är opausat ({STRING})
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :antal spelare
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :ansluter klienter
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuell
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :spelskript
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :Väntar på updatering av länkdiagram
############ End of leave-in-this-order
STR_NETWORK_MESSAGE_CLIENT_LEAVING :lämnar
STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} har gått med i spelet
@ -2202,6 +2235,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} ha
STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} har startat ett nytt företag (#{2:NUM})
STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} har lämnat spelet ({2:STRING})
STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} har ändrat hans/hennes namn till {STRING}
STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} gav {2:CURRENCY_LONG} till {1:STRING}
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Servern avslutade sessionen
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Servern startar om...{}Var vänlig vänta...
STR_NETWORK_MESSAGE_KICKED :*** {STRING} kastades ut. Orsak: ({STRING})
@ -2321,6 +2355,7 @@ STR_JOIN_WAYPOINT_CAPTION :{WHITE}Slå iho
STR_JOIN_WAYPOINT_CREATE_SPLITTED_WAYPOINT :{YELLOW}Bygg ett separat riktmärke
# Generic toolbar
STR_TOOLBAR_DISABLED_NO_VEHICLE_AVAILABLE :{BLACK}Inaktiverad eftersom det ej finns några tillgängliga fordon till denna infrastruktur
# Rail construction toolbar
STR_RAIL_TOOLBAR_RAILROAD_CONSTRUCTION_CAPTION :Bygg järnväg
@ -2516,6 +2551,12 @@ STR_TREES_RANDOM_TYPE :{BLACK}Träd av
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Placera träd av slumpvald typ. Shift växlar mellan att placera träd/visa beräknad kostnad
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Slumpmässigt träd
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plantera träd slumpmässigt över landskapet
STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal
STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plantera träd genom att dra över landskapet.
STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Skogsdunge
STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plantera mindre skogar genom att dra över landskapet.
STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Skog
STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plantera större skogar genom att dra över landskapet.
# Land generation window (SE)
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Skapa mark
@ -2566,12 +2607,18 @@ STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Slumpa
# Fund new industry window
STR_FUND_INDUSTRY_CAPTION :{WHITE}Bekosta ny industri
STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Välj lämplig industri från denna lista
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :Många slumpmässiga industrier
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Skapa slumpmässiga industrier
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Täck kartan med slumpmässigt placerade industrier
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_CAPTION :{WHITE}Skapa slumpmässiga industrier
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_QUERY :{YELLOW}Är du säker på att du vill skapa många olika industrier?
STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Kostnad: {YELLOW}{CURRENCY_LONG}
STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Prospektera
STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Bygga
STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Grunda
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES :{BLACK}Ta bort alla industrier
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_TOOLTIP :{BLACK}Ta bort alla industrier från kartan
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_CAPTION :{WHITE}Ta bort alla industrier
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES_QUERY :{YELLOW}Är du säker på att du vill ta bort alla industrier?
# Industry cargoes window
STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Industrikedja för {STRING} industrin
@ -2592,6 +2639,7 @@ STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Välj de
# Land area window
STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Markområdesinformation
STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}Centrera huvudvyn på rutans läge. Ctrl+klick öppnar en ny vy över rutans läge
STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK}Kostnad att röja: {LTBLUE}N/A
STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}Kostnad att röja: {RED}{CURRENCY_LONG}
STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK}Inkomst vid rensning: {LTBLUE}{CURRENCY_LONG}
@ -2801,6 +2849,8 @@ STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF:
STR_SAVELOAD_FILTER_TITLE :{BLACK}Sökfilter:
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Skriv över fil
STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Är du säker på att du vill skriva över den existerande filen?
STR_SAVELOAD_DIRECTORY :{STRING} (Katalog)
STR_SAVELOAD_PARENT_DIRECTORY :{STRING} (Föräldrakatalog)
STR_SAVELOAD_OSKTITLE :{BLACK}Mata in ett namn för detta sparade spel
@ -3061,6 +3111,7 @@ STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Slå på
# Sign window
STR_EDIT_SIGN_CAPTION :{WHITE}Ändra skylttext
STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Centrera huvudvyn på skyltens läge Ctrl+klick öppnar en ny vy över skyltens läge
STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Åk till nästa skylt
STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Åk till föregående skylt
@ -3144,10 +3195,10 @@ STR_GOALS_COMPANY_TITLE :{BLACK}Företag
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klicka på målet för att centrera huvudvyn på industrin/byn/rutan. Ctrl+klick gör så att ett nytt vyfönster öppnas över platsen för industrin/byn/rutan
# Goal question window
STR_GOAL_QUESTION_CAPTION_QUESTION :Fråga
STR_GOAL_QUESTION_CAPTION_INFORMATION :Information
STR_GOAL_QUESTION_CAPTION_WARNING :Varning
STR_GOAL_QUESTION_CAPTION_ERROR :Fel
STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Fråga
STR_GOAL_QUESTION_CAPTION_INFORMATION :{BLACK}Information
STR_GOAL_QUESTION_CAPTION_WARNING :{BLACK}Varning
STR_GOAL_QUESTION_CAPTION_ERROR :{YELLOW}Fel
############ Start of Goal Question button list
STR_GOAL_QUESTION_BUTTON_CANCEL :Avbryt
@ -3338,6 +3389,7 @@ STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Flytta h
STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detaljer
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Visa detaljerat antal infrastruktur-element
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Ge pengar
STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Ge pengar till detta företaget
STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nytt ansikte
STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Välj nytt ansikte på VD:n
@ -3355,7 +3407,7 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}Sälj 25
STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :Företagsnamn
STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :Namn på VD
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Skriv in mängd pengar som du vill ge
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :Ange hur mycket pengar du vill ge
STR_BUY_COMPANY_MESSAGE :{WHITE}Vi letar efter någon som vill köpa och ta över vårt företag{}{}Vill du köpa {COMPANY} för {CURRENCY_LONG}?
@ -3716,6 +3768,10 @@ STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Gör så
# Vehicle view
STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE}
STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}Centrera huvudvyn på tågets position. Dubbelklicka för att följa tåget i huvudvyn. Ctrl+klicka öppnar ett nytt fönster över tågets position
STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}Centrera huvudvyn på fordonets position. Dubbelklicka för att följa fordonet i huvudvyn. Ctrl+klicka öppnar ett nytt fönster över fordonets position
STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}Centrera huvudvyn på fartygets position. Dubbelklicka för att följa fartyget i huvudvyn. Ctrl+klicka öppnar ett nytt fönster över fartygets position
STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}Centrera huvudvyn på flyplanets position. Dubbelklicka för att följa flyplanet i huvudvyn. Ctrl+klicka öppnar ett nytt fönster över flygplanets position
STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}Skicka tåg till depå. Ctrl+klick skickar tåget enbart på service
STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}Skicka fordon till depå. Ctrl+klick servar endast
@ -3747,7 +3803,12 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_SHOW_DETAILS_TOOLTIP :{BLACK}Visa vä
STR_VEHICLE_VIEW_SHIP_SHOW_DETAILS_TOOLTIP :{BLACK}Visa skeppdetaljer
STR_VEHICLE_VIEW_AIRCRAFT_SHOW_DETAILS_TOOLTIP :{BLACK}Visa flygplan detaljer
STR_VEHICLE_VIEW_TRAIN_STATUS_START_STOP_TOOLTIP :{BLACK}Aktuell tågåtgärd - Tryck för att stoppa/starta tåget
STR_VEHICLE_VIEW_ROAD_VEHICLE_STATUS_START_STOP_TOOLTIP :{BLACK}Aktuell fordonsåtgärd - tryck för att stoppa/starta fordon
STR_VEHICLE_VIEW_SHIP_STATE_STATUS_STOP_TOOLTIP :{BLACK}Aktuell fartygsåtgärd - Tryck för att stoppa/starta fartyg
STR_VEHICLE_VIEW_AIRCRAFT_STATUS_START_STOP_TOOLTIP :{BLACK}Aktuell flygplansåtgärd - Tryck för att stoppa/starta flygplanet
STR_VEHICLE_VIEW_ORDER_LOCATION_TOOLTIP :{BLACK}Centrera huvudvyn på ordens destination. Ctrl+klick öppnar en ny vy över ordens destination
# Messages in the start stop button in the vehicle view
STR_VEHICLE_STATUS_LOADING_UNLOADING :{LTBLUE}Lastar / lastar av
@ -3975,6 +4036,7 @@ STR_ORDER_REFIT_STOP_ORDER :(Anpassa för {
STR_ORDER_STOP_ORDER :(Stanna)
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Kan ej använda stationen){POP_COLOUR} {STRING} {STATION} {STRING}
STR_ORDER_IMPLICIT :(Underförstådd)
@ -4219,6 +4281,7 @@ STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Sparfilen är g
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Filen är inte läsbar
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Filen är inte skrivbar
STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Integritetskontrollen på datan misslyckades
STR_GAME_SAVELOAD_ERROR_PATCHPACK :Sparat spel är från en modifierat version
STR_GAME_SAVELOAD_NOT_AVAILABLE :<not available>
STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Spelet sparades i en version som ej stöder spårvagn. Alla spårvagnar har tagits bort
@ -4299,6 +4362,7 @@ STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}... lån
STR_ERROR_CURRENCY_REQUIRED :{WHITE}... {CURRENCY_LONG} krävs
STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}Kan inte återbetala lånet...
STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}Kan inte ge bort pengar som är lånade från banken...
STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}Kan ej ge pengar till detta företaget...
STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}Kan inte köpa företag...
STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}Kan inte bygga huvudkontor här...
STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}Kan inte köpa 25% andelar i detta företag...
@ -4425,6 +4489,8 @@ STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Felaktig depå-
STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} är för långt efter utbyte
STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Inga regler för automatisk förnyelse/utbyte av fordon är aktiverade
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(pengagräns)
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_CARGO :{WHITE}Nya fordonet kan ej bära {STRING}
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}Nytt fordon kan inte anpassas till order {NUM}
# Rail construction errors
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Omöjlig kombination av spår
@ -4711,10 +4777,10 @@ STR_INDUSTRY_NAME_SUGAR_MINE :Sockergruva
##id 0x6000
STR_SV_EMPTY :
STR_SV_UNNAMED :Inget namn
STR_SV_TRAIN_NAME :Tåg {COMMA}
STR_SV_ROAD_VEHICLE_NAME :Vägfordon {COMMA}
STR_SV_SHIP_NAME :Skepp {COMMA}
STR_SV_AIRCRAFT_NAME :Luftfarkost {COMMA}
STR_SV_TRAIN_NAME :Tåg #{COMMA}
STR_SV_ROAD_VEHICLE_NAME :Vägfordon #{COMMA}
STR_SV_SHIP_NAME :Skepp #{COMMA}
STR_SV_AIRCRAFT_NAME :Luftfarkost #{COMMA}
STR_SV_STNAME :{STRING}
STR_SV_STNAME_NORTH :Norra {STRING}
@ -5016,6 +5082,7 @@ STR_FORMAT_BUOY_NAME :{TOWN} Boj
STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Boj #{COMMA}
STR_FORMAT_COMPANY_NUM :(Företag {COMMA})
STR_FORMAT_GROUP_NAME :Grupp {COMMA}
STR_FORMAT_GROUP_VEHICLE_NAME :{GROUP} #{COMMA}
STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING}
STR_FORMAT_WAYPOINT_NAME :Riktmärke {TOWN}
STR_FORMAT_WAYPOINT_NAME_SERIAL :Riktmärke {TOWN} #{COMMA}

@ -561,8 +561,8 @@ STR_MONTH_DEC :டிசம்
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}பட விளக்கக் குறிப்பு
STR_GRAPH_KEY_TOOLTIP :{BLACK}பட விளக்கக் குறிப்பு காண்பி
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -552,8 +552,8 @@ STR_MONTH_DEC :ธันวา
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}ตัวเลือก
STR_GRAPH_KEY_TOOLTIP :{BLACK}แสดงตัวเลือกกราฟ
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -561,8 +561,8 @@ STR_MONTH_DEC :十二月
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}圖例
STR_GRAPH_KEY_TOOLTIP :{BLACK}顯示圖例
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -570,8 +570,8 @@ STR_MONTH_DEC :Aralık
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Anahtar
STR_GRAPH_KEY_TOOLTIP :{BLACK}Grafik anahtarını göster
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -697,8 +697,8 @@ STR_MONTH_DEC :Грудень
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Легенда
STR_GRAPH_KEY_TOOLTIP :{BLACK}Показати легенду графіка
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}
@ -2703,6 +2703,7 @@ STR_FUND_INDUSTRY_INDUSTRY_BUILD_COST :{BLACK}Варт
STR_FUND_INDUSTRY_PROSPECT_NEW_INDUSTRY :{BLACK}Огляд
STR_FUND_INDUSTRY_BUILD_NEW_INDUSTRY :{BLACK}Будувати
STR_FUND_INDUSTRY_FUND_NEW_INDUSTRY :{BLACK}Фінансувати
STR_FUND_INDUSTRY_REMOVE_ALL_INDUSTRIES :{BLACK}Прибрати усі підприємства
# Industry cargoes window
STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION :{WHITE}Ланцюг вантажних перевезень для {STRING}
@ -3468,7 +3469,7 @@ STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Пере
STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Перенесення Офісу в інше місце. Коштує 1% від вартості компанії. Утримуйте Shift для показу очікуваних витрат на перенесення
STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Деталі
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Переглянути детальну інформацію про інфраструктуру
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Дати грошей
STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Дати грошей цій компанії
STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Нове обличчя
STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Вибрати нове обличчя керівника
@ -5184,6 +5185,7 @@ STR_FORMAT_BUOY_NAME :Буй {TOWN}
STR_FORMAT_BUOY_NAME_SERIAL :Буй {TOWN} №{COMMA}
STR_FORMAT_COMPANY_NUM :(Компанія {COMMA})
STR_FORMAT_GROUP_NAME :Група {COMMA}
STR_FORMAT_GROUP_VEHICLE_NAME :{GROUP} #{COMMA}
STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING}
STR_FORMAT_WAYPOINT_NAME :Пункт {TOWN}
STR_FORMAT_WAYPOINT_NAME_SERIAL :Пункт {TOWN} №{COMMA}

@ -359,8 +359,8 @@ STR_MONTH_DEC :Раштав
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Уҫӑ
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -560,8 +560,8 @@ STR_MONTH_DEC :Desimber
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Kaai
STR_GRAPH_KEY_TOOLTIP :{BLACK}Lit kaai foar grafyk sjen
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -350,8 +350,8 @@ STR_GRAPH_MENU_DELIVERED_CARGO_GRAPH :Livrita kargajo
############ range for months ends
# Graph window
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -533,8 +533,8 @@ STR_MONTH_DEC :декемвр
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Клучни
STR_GRAPH_KEY_TOOLTIP :{BLACK}Прикажи клуч за графикони
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -319,8 +319,8 @@ STR_FILE_MENU_SEPARATOR :
############ range for months ends
# Graph window
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -523,8 +523,8 @@ STR_MONTH_DEC :डिसें
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}किल्ली
STR_GRAPH_KEY_TOOLTIP :{BLACK}आलेख दर्शवा की
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -552,8 +552,8 @@ STR_MONTH_DEC :دسامبر
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}کلید
STR_GRAPH_KEY_TOOLTIP :{BLACK}نمایش راهنمای نمودار
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -542,8 +542,8 @@ STR_MONTH_DEC :دسمبر
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK} کلید
STR_GRAPH_KEY_TOOLTIP :{BLACK}مخطط کی کلیدیں دکھائیں
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -569,8 +569,8 @@ STR_MONTH_DEC :Tháng Mười
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Nút
STR_GRAPH_KEY_TOOLTIP :{BLACK}Hiện khóa trên biểu đồ
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -560,8 +560,8 @@ STR_MONTH_DEC :Rhagfyr
# Graph window
STR_GRAPH_KEY_BUTTON :{BLACK}Allwedd
STR_GRAPH_KEY_TOOLTIP :{BLACK}Dangos allwedd i'r graffiau
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}{} {STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{} {STRING}{}{NUM}
STR_GRAPH_X_LABEL_MONTH :{TINY_FONT}{STRING}
STR_GRAPH_X_LABEL_MONTH_YEAR :{TINY_FONT}{STRING}{}{NUM}
STR_GRAPH_Y_LABEL :{TINY_FONT}{STRING}
STR_GRAPH_Y_LABEL_NUMBER :{TINY_FONT}{COMMA}

@ -10,5 +10,6 @@ add_files(
getoptdata.cpp
getoptdata.h
hashtable.hpp
lrucache.hpp
str.hpp
)

@ -0,0 +1,116 @@
/* $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 lrucache.hpp Size limited cache map with a least recently used eviction strategy. */
#ifndef LRUCACHE_HPP
#define LRUCACHE_HPP
#include <utility>
#include <list>
#include <functional>
#include <unordered_map>
#include <stdexcept>
/**
* Size limited cache with a least recently used eviction strategy.
* @tparam Tkey Type of the cache key.
* @tparam Tdata Type of the cache item. The cache will store a pointer of this type.
*/
template <class Tkey, class Tdata>
class LRUCache {
private:
typedef std::pair<Tkey, Tdata *> Tpair;
typedef typename std::list<Tpair>::iterator Titer;
std::list<Tpair> data; ///< Ordered list of all items.
std::unordered_map<Tkey, Titer> lookup; ///< Map of keys to items.
const size_t capacity; ///< Number of items to cache.
public:
/**
* Construct new LRU cache map.
* @param max_items Number of items to store at most.
*/
LRUCache(size_t max_items) : capacity(max_items) {}
/**
* Test if a key is already contained in the cache.
* @param key The key to search.
* @return True, if the key was found.
*/
inline bool Contains(const Tkey key)
{
return this->lookup.find(key) != this->lookup.end();
}
/**
* Insert a new data item with a specified key.
* @param key Key under which the item should be stored.
* @param item Item to insert.
* @return Evicted item or nullptr, if no item had to be evicted.
*/
Tdata *Insert(const Tkey key, Tdata *item)
{
Tdata *old = nullptr;
if (this->Contains(key)) {
/* Replace old value. */
old = this->lookup[key]->second;
this->lookup[key]->second = item;
} else {
/* Delete least used item if maximum items cached. */
if (this->data.size() >= this->capacity) {
Tpair last = data.back();
this->lookup.erase(last.first);
this->data.pop_back();
old = last.second;
}
/* Insert new item. */
this->data.push_front(std::make_pair(key, item));
this->lookup.emplace(key, this->data.begin());
}
return old;
}
/**
* Pop the least recently used item.
* @return The item value or nullptr if no items cached.
*/
inline Tdata *Pop()
{
if (this->data.empty()) return nullptr;
Tdata *value = this->data.back().second;
this->lookup.erase(this->data.back().first);
this->data.pop_back();
return value;
}
/**
* Get an item from the cache.
* @param key The key to look up.
* @return The item value.
* @note Throws if item not found.
*/
inline Tdata *Get(const Tkey key)
{
if (this->lookup.find(key) == this->lookup.end()) throw std::out_of_range("item not found");
/* Move to front if needed. */
this->data.splice(this->data.begin(), this->data, this->lookup[key]);
return this->data.front().second;
}
};
#endif /* LRUCACHE_HPP */

@ -84,7 +84,7 @@ struct DLSFile {
std::vector<DLSWave> waves;
/** Try loading a DLS file into memory. */
bool LoadFile(const TCHAR *file);
bool LoadFile(const wchar_t *file);
private:
/** Load an articulation structure from a DLS file. */
@ -431,11 +431,11 @@ bool DLSFile::ReadDLSWaveList(FILE *f, DWORD list_length)
return true;
}
bool DLSFile::LoadFile(const TCHAR *file)
bool DLSFile::LoadFile(const wchar_t *file)
{
DEBUG(driver, 2, "DMusic: Try to load DLS file %s", FS2OTTD(file));
FILE *f = _tfopen(file, _T("rb"));
FILE *f = _wfopen(file, L"rb");
if (f == nullptr) return false;
FileCloser f_scope(f);
@ -864,11 +864,11 @@ static const char *LoadDefaultDLSFile(const char *user_dls)
if (user_dls == nullptr) {
/* Try loading the default GM DLS file stored in the registry. */
HKEY hkDM;
if (SUCCEEDED(RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software\\Microsoft\\DirectMusic"), 0, KEY_READ, &hkDM))) {
TCHAR dls_path[MAX_PATH];
if (SUCCEEDED(RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"Software\\Microsoft\\DirectMusic", 0, KEY_READ, &hkDM))) {
wchar_t dls_path[MAX_PATH];
DWORD buf_size = sizeof(dls_path); // Buffer size as to be given in bytes!
if (SUCCEEDED(RegQueryValueEx(hkDM, _T("GMFilePath"), nullptr, nullptr, (LPBYTE)dls_path, &buf_size))) {
TCHAR expand_path[MAX_PATH * 2];
if (SUCCEEDED(RegQueryValueEx(hkDM, L"GMFilePath", nullptr, nullptr, (LPBYTE)dls_path, &buf_size))) {
wchar_t expand_path[MAX_PATH * 2];
ExpandEnvironmentStrings(dls_path, expand_path, lengthof(expand_path));
if (!dls_file.LoadFile(expand_path)) DEBUG(driver, 1, "Failed to load default GM DLS file from registry");
}
@ -877,8 +877,8 @@ static const char *LoadDefaultDLSFile(const char *user_dls)
/* If we couldn't load the file from the registry, try again at the default install path of the GM DLS file. */
if (dls_file.instruments.size() == 0) {
static const TCHAR *DLS_GM_FILE = _T("%windir%\\System32\\drivers\\gm.dls");
TCHAR path[MAX_PATH];
static const wchar_t *DLS_GM_FILE = L"%windir%\\System32\\drivers\\gm.dls";
wchar_t path[MAX_PATH];
ExpandEnvironmentStrings(DLS_GM_FILE, path, lengthof(path));
if (!dls_file.LoadFile(path)) return "Can't load GM DLS collection";
@ -1106,7 +1106,6 @@ const char *MusicDriver_DMusic::Start(const StringList &parm)
DEBUG(driver, 1, "Detected DirectMusic ports:");
for (int i = 0; _music->EnumPort(i, &caps) == S_OK; i++) {
if (caps.dwClass == DMUS_PC_OUTPUTCLASS) {
/* Description is UNICODE even for ANSI build. */
DEBUG(driver, 1, " %d: %s%s", i, convert_from_fs(caps.wszDescription, desc, lengthof(desc)), i == pIdx ? " (selected)" : "");
}
}

@ -31,6 +31,7 @@
#include "../newgrf.h"
#include "../error.h"
#include "../guitimer_func.h"
#include "../zoom_func.h"
#include "../widgets/network_widget.h"
@ -395,6 +396,7 @@ protected:
/* offsets to vertically centre text and icons */
int text_y_offset = (this->resize.step_height - FONT_HEIGHT_NORMAL) / 2 + 1;
int icon_y_offset = (this->resize.step_height - GetSpriteSize(SPR_BLOT).height) / 2;
int lock_y_offset = (this->resize.step_height - GetSpriteSize(SPR_LOCK).height) / 2;
DrawString(nwi_name->pos_x + WD_FRAMERECT_LEFT, nwi_name->pos_x + nwi_name->current_x - WD_FRAMERECT_RIGHT, y + text_y_offset, cur_item->info.server_name, TC_BLACK);
@ -439,13 +441,13 @@ protected:
}
/* draw a lock if the server is password protected */
if (cur_item->info.use_password) DrawSprite(SPR_LOCK, PAL_NONE, nwi_info->pos_x + this->lock_offset, y + icon_y_offset - 1);
if (cur_item->info.use_password) DrawSprite(SPR_LOCK, PAL_NONE, nwi_info->pos_x + this->lock_offset, y + lock_y_offset);
/* draw red or green icon, depending on compatibility with server */
DrawSprite(SPR_BLOT, (cur_item->info.compatible ? PALETTE_TO_GREEN : (cur_item->info.version_compatible ? PALETTE_TO_YELLOW : PALETTE_TO_RED)), nwi_info->pos_x + this->blot_offset, y + icon_y_offset);
DrawSprite(SPR_BLOT, (cur_item->info.compatible ? PALETTE_TO_GREEN : (cur_item->info.version_compatible ? PALETTE_TO_YELLOW : PALETTE_TO_RED)), nwi_info->pos_x + this->blot_offset, y + icon_y_offset + 1);
/* draw flag according to server language */
DrawSprite(SPR_FLAGS_BASE + cur_item->info.server_lang, PAL_NONE, nwi_info->pos_x + this->flag_offset, y + icon_y_offset);
DrawSprite(SPR_FLAGS_BASE + cur_item->info.server_lang, PAL_NONE, nwi_info->pos_x + this->flag_offset, y + (this->resize.step_height - GetSpriteSize(SPR_FLAGS_BASE + cur_item->info.server_lang).height) / 2);
}
}
@ -1374,7 +1376,7 @@ struct NetworkLobbyWindow : public Window {
break;
case WID_NL_MATRIX:
resize->height = WD_MATRIX_TOP + FONT_HEIGHT_NORMAL + WD_MATRIX_BOTTOM;
resize->height = WD_MATRIX_TOP + std::max<uint>(std::max(GetSpriteSize(SPR_LOCK).height, GetSpriteSize(SPR_PROFIT_LOT).height), FONT_HEIGHT_NORMAL) + WD_MATRIX_BOTTOM;
size->height = 10 * resize->height;
break;
@ -1428,31 +1430,32 @@ struct NetworkLobbyWindow : public Window {
bool rtl = _current_text_dir == TD_RTL;
uint left = r.left + WD_FRAMERECT_LEFT;
uint right = r.right - WD_FRAMERECT_RIGHT;
uint text_offset = (this->resize.step_height - WD_MATRIX_TOP - WD_MATRIX_BOTTOM - FONT_HEIGHT_NORMAL) / 2 + WD_MATRIX_TOP;
Dimension lock_size = GetSpriteSize(SPR_LOCK);
int lock_width = lock_size.width;
int lock_y_offset = (this->resize.step_height - WD_MATRIX_TOP - WD_MATRIX_BOTTOM - lock_size.height) / 2;
int lock_y_offset = (this->resize.step_height - WD_MATRIX_TOP - WD_MATRIX_BOTTOM - lock_size.height) / 2 + WD_MATRIX_TOP;
Dimension profit_size = GetSpriteSize(SPR_PROFIT_LOT);
int profit_width = lock_size.width;
int profit_y_offset = (this->resize.step_height - WD_MATRIX_TOP - WD_MATRIX_BOTTOM - profit_size.height) / 2;
int profit_y_offset = (this->resize.step_height - WD_MATRIX_TOP - WD_MATRIX_BOTTOM - profit_size.height) / 2 + WD_MATRIX_TOP;
uint text_left = left + (rtl ? lock_width + profit_width + 4 : 0);
uint text_right = right - (rtl ? 0 : lock_width + profit_width + 4);
uint profit_left = rtl ? left : right - profit_width;
uint lock_left = rtl ? left + profit_width + 2 : right - profit_width - lock_width - 2;
int y = r.top + WD_MATRIX_TOP;
int y = r.top;
/* Draw company list */
int pos = this->vscroll->GetPosition();
while (pos < this->server->info.companies_on) {
byte company = NetworkLobbyFindCompanyIndex(pos);
bool income = false;
if (this->company == company) {
GfxFillRect(r.left + 1, y - 2, r.right - 1, y + FONT_HEIGHT_NORMAL, PC_GREY); // show highlighted item with a different colour
GfxFillRect(r.left + WD_BEVEL_LEFT, y + 1, r.right - WD_BEVEL_RIGHT, y + this->resize.step_height - 2, PC_GREY); // show highlighted item with a different colour
}
DrawString(text_left, text_right, y, this->company_info[company].company_name, TC_BLACK);
DrawString(text_left, text_right, y + text_offset, this->company_info[company].company_name, TC_BLACK);
if (this->company_info[company].use_password != 0) DrawSprite(SPR_LOCK, PAL_NONE, lock_left, y + lock_y_offset);
/* If the company's income was positive puts a green dot else a red dot */

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

Loading…
Cancel
Save