Merge branch 'master' into jgrpp

pull/199/head
Jonathan G Rennison 4 years ago
commit d85a529f87

@ -0,0 +1,142 @@
name: CI
on:
pull_request:
push:
branches:
- master
jobs:
linux:
name: Linux
runs-on: ubuntu-20.04
strategy:
fail-fast: false
matrix:
compiler: [clang, gcc]
include:
- compiler: clang
cxxcompiler: clang++
- compiler: gcc
cxxcompiler: g++
env:
CTEST_OUTPUT_ON_FAILURE: 1
CC: ${{ matrix.compiler }}
CXX: ${{ matrix.cxxcompiler }}
steps:
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
libfontconfig-dev \
libicu-dev \
liblzma-dev \
liblzo2-dev \
libsdl1.2-dev \
libsdl2-dev \
libxdg-basedir-dev \
zlib1g-dev \
# EOF
- name: Checkout
uses: actions/checkout@v2
- name: Get OpenGFX
run: |
mkdir -p ~/.local/share/openttd/baseset
cd ~/.local/share/openttd/baseset
curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip
unzip opengfx-all.zip
rm -f opengfx-all.zip
- name: CMake
run: mkdir build && cd build && cmake ..
- uses: ammaraskar/gcc-problem-matcher@master
- name: Build
run: cd build && make -j2
- name: Test
run: cd build && make -j2 test
windows:
name: Windows
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
arch: [x86, x64]
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Prepare vcpkg (with cache)
uses: lukka/run-vcpkg@v4
with:
vcpkgDirectory: 'c:/vcpkg'
doNotUpdateVcpkg: true
vcpkgArguments: 'liblzma libpng lzo zlib'
vcpkgTriplet: '${{ matrix.arch }}-windows-static'
- uses: ammaraskar/msvc-problem-matcher@master
- name: 'Build'
uses: lukka/run-cmake@v3
with:
cmakeListsOrSettingsJson: CMakeListsTxtBasic
useVcpkgToolchainFile: true
buildDirectory: '${{ runner.workspace }}/build'
- name: Install OpenGFX
run: |
mkdir -p "C:/Users/Public/Documents/OpenTTD/baseset"
cd "C:/Users/Public/Documents/OpenTTD/baseset"
curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip
unzip opengfx-all.zip
rm -f opengfx-all.zip
shell: bash
- name: Test
run: |
cd ${{ runner.workspace }}/build
ctest -C Debug
macos:
name: Mac OS
runs-on: macos-latest
strategy:
fail-fast: false
env:
CTEST_OUTPUT_ON_FAILURE: 1
MACOSX_DEPLOYMENT_TARGET: 10.9
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Install dependencies
run: brew install pkg-config lzo xz libpng freetype
env:
HOMEBREW_NO_AUTO_UPDATE: 1
- name: Install OpenGFX
run: |
mkdir -p ~/Documents/OpenTTD/baseset
cd ~/Documents//OpenTTD/baseset
curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip
unzip opengfx-all.zip
rm -f opengfx-all.zip
- name: CMake
run: mkdir build && cd build && cmake ..
- uses: ammaraskar/gcc-problem-matcher@master
- name: Build
run: cd build && make -j2
- name: Test
run: cd build && make -j2 test

@ -1,23 +1,23 @@
cmake_minimum_required(VERSION 3.6)
if (NOT BINARY_NAME)
if(NOT BINARY_NAME)
set(BINARY_NAME openttd)
endif (NOT BINARY_NAME)
endif()
project(${BINARY_NAME})
if (CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
message(FATAL_ERROR "In-source builds not allowed. Please run \"cmake ..\" from the bin directory")
endif (CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
endif()
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.9)
# Use GNUInstallDirs to allow customisation
# but set our own default data dir
if (NOT CMAKE_INSTALL_DATADIR)
if(NOT CMAKE_INSTALL_DATADIR)
set(CMAKE_INSTALL_DATADIR "share/games")
endif (NOT CMAKE_INSTALL_DATADIR)
endif()
include(GNUInstallDirs)
include(Options)
@ -37,19 +37,19 @@ find_package(LibLZMA)
find_package(LZO)
find_package(PNG)
if (NOT WIN32)
if(NOT WIN32)
find_package(Allegro)
find_package(Freetype)
if (NOT APPLE)
if(NOT APPLE)
find_package(SDL2)
if (NOT SDL2_FOUND)
if(NOT SDL2_FOUND)
find_package(SDL)
endif( NOT SDL2_FOUND)
endif()
find_package(Fluidsynth)
find_package(Fontconfig)
find_package(ICU OPTIONAL_COMPONENTS i18n lx)
find_package(XDG_basedir)
else (NOT APPLE)
else()
find_package(Iconv)
find_library(AUDIOTOOLBOX_LIBRARY AudioToolbox)
@ -57,14 +57,14 @@ if (NOT WIN32)
find_library(COCOA_LIBRARY Cocoa)
find_package(MacUcontext)
endif (NOT APPLE)
endif (NOT WIN32)
endif()
endif()
if (MSVC)
if(MSVC)
find_package(Editbin REQUIRED)
else ()
else()
find_package(Builtins)
endif (MSVC)
endif()
if (UNIX)
find_package(DL)
@ -94,38 +94,38 @@ find_package(Grfcodec)
# IPO is only properly supported from CMake 3.9. Despite the fact we are
# CMake 3.5, still enable IPO if we detect we are 3.9+.
if (POLICY CMP0069)
if(POLICY CMP0069)
cmake_policy(SET CMP0069 NEW)
include(CheckIPOSupported)
check_ipo_supported(RESULT IPO_FOUND)
endif (POLICY CMP0069)
endif()
show_options()
if (UNIX AND NOT APPLE AND NOT OPTION_DEDICATED)
if (NOT SDL_FOUND AND NOT SDL2_FOUND)
if(UNIX AND NOT APPLE AND NOT OPTION_DEDICATED)
if(NOT SDL_FOUND AND NOT SDL2_FOUND)
message(FATAL_ERROR "SDL or SDL2 is required for this platform")
endif (NOT SDL_FOUND AND NOT SDL2_FOUND)
endif (UNIX AND NOT APPLE AND NOT OPTION_DEDICATED)
if (APPLE)
if (NOT AUDIOTOOLBOX_LIBRARY)
endif()
endif()
if(APPLE)
if(NOT AUDIOTOOLBOX_LIBRARY)
message(FATAL_ERROR "AudioToolbox is required for this platform")
endif (NOT AUDIOTOOLBOX_LIBRARY)
if (NOT AUDIOUNIT_LIBRARY)
endif()
if(NOT AUDIOUNIT_LIBRARY)
message(FATAL_ERROR "AudioUnit is required for this platform")
endif (NOT AUDIOUNIT_LIBRARY)
if (NOT COCOA_LIBRARY)
endif()
if(NOT COCOA_LIBRARY)
message(FATAL_ERROR "Cocoa is required for this platform")
endif (NOT COCOA_LIBRARY)
endif (APPLE)
endif()
endif()
if (MSVC)
if(MSVC)
# C++17 for MSVC
set(CMAKE_CXX_STANDARD 17)
else (MSVC)
else()
# C++11 for all other targets
set(CMAKE_CXX_STANDARD 11)
endif (MSVC)
endif()
set(CMAKE_CXX_STANDARD_REQUIRED YES)
set(CMAKE_CXX_EXTENSIONS NO)
@ -133,9 +133,9 @@ set(CMAKE_CXX_EXTENSIONS NO)
set(CMAKE_EXPORT_COMPILE_COMMANDS YES)
list(APPEND GENERATED_SOURCE_FILES "${CMAKE_BINARY_DIR}/generated/rev.cpp")
if (WIN32)
if(WIN32)
list(APPEND GENERATED_SOURCE_FILES "${CMAKE_BINARY_DIR}/generated/ottdres.rc")
endif (WIN32)
endif()
include(SourceList)
include(Endian)
@ -210,17 +210,17 @@ target_link_libraries(openttd
Threads::Threads
)
if (IPO_FOUND)
if(IPO_FOUND)
set_target_properties(openttd PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELEASE True)
set_target_properties(openttd PROPERTIES INTERPROCEDURAL_OPTIMIZATION_MINSIZEREL True)
set_target_properties(openttd PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO True)
endif (IPO_FOUND)
endif()
set_target_properties(openttd PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
process_compile_flags()
if (APPLE OR UNIX)
if(APPLE OR UNIX)
add_definitions(-DUNIX)
endif (APPLE OR UNIX)
endif()
include(LinkPackage)
link_package(PNG TARGET PNG::PNG ENCOURAGED)
@ -229,7 +229,7 @@ link_package(LIBLZMA TARGET LibLZMA::LibLZMA ENCOURAGED)
link_package(LZO ENCOURAGED)
link_package(XDG_basedir)
if (NOT OPTION_DEDICATED)
if(NOT OPTION_DEDICATED)
link_package(Fluidsynth)
link_package(SDL)
link_package(SDL2 TARGET SDL2::SDL2)
@ -241,9 +241,9 @@ if (NOT OPTION_DEDICATED)
link_package(Fcitx)
link_package(DBus1)
link_package(X11)
endif (NOT OPTION_DEDICATED)
endif()
if (APPLE)
if(APPLE)
link_package(Iconv TARGET Iconv::Iconv)
target_link_libraries(openttd
@ -256,33 +256,33 @@ if (APPLE)
-DWITH_COCOA
-DENABLE_COCOA_QUARTZ
)
endif (APPLE)
endif()
if (NOT PERSONAL_DIR STREQUAL "(not set)")
if(NOT PERSONAL_DIR STREQUAL "(not set)")
add_definitions(
-DWITH_PERSONAL_DIR
-DPERSONAL_DIR="${PERSONAL_DIR}"
)
endif (NOT PERSONAL_DIR STREQUAL "(not set)")
endif()
if (NOT SHARED_DIR STREQUAL "(not set)")
if(NOT SHARED_DIR STREQUAL "(not set)")
add_definitions(
-DWITH_SHARED_DIR
-DSHARED_DIR="${SHARED_DIR}"
)
endif (NOT SHARED_DIR STREQUAL "(not set)")
endif()
if (NOT GLOBAL_DIR STREQUAL "(not set)")
if(NOT GLOBAL_DIR STREQUAL "(not set)")
add_definitions(
-DGLOBAL_DATA_DIR="${GLOBAL_DIR}"
)
endif (NOT GLOBAL_DIR STREQUAL "(not set)")
endif()
link_package(SSE)
add_definitions_based_on_options()
if (WIN32)
if(WIN32)
add_definitions(
-DUNICODE
-D_UNICODE
@ -295,11 +295,11 @@ if (WIN32)
imm32
usp10
)
endif (WIN32)
endif()
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
add_definitions(-D_SQ64)
endif (CMAKE_SIZEOF_VOID_P EQUAL 8)
endif()
include(CreateRegression)
create_regression()

@ -1,93 +0,0 @@
trigger:
- master
- release/*
pr:
- master
- release/*
jobs:
- job: windows
displayName: 'Windows'
pool:
vmImage: 'VS2017-Win2016'
strategy:
matrix:
Win32:
BuildArch: 'Win32'
VcpkgTargetTriplet: 'x86-windows-static'
Win64:
BuildArch: 'x64'
VcpkgTargetTriplet: 'x64-windows-static'
steps:
- template: azure-pipelines/templates/ci-git-rebase.yml
- template: azure-pipelines/templates/windows-dependencies.yml
- template: azure-pipelines/templates/ci-opengfx.yml
parameters:
SharedFolder: C:/Users/Public/Documents/OpenTTD
- template: azure-pipelines/templates/windows-build.yml
parameters:
BuildArch: $(BuildArch)
VcpkgTargetTriplet: $(VcpkgTargetTriplet)
BuildConfiguration: 'Debug'
- task: VSBuild@1
displayName: 'Prepare regression files'
inputs:
solution: build/regression_files.vcxproj
configuration: 'Debug'
- task: VSBuild@1
displayName: 'Test'
inputs:
solution: build/RUN_TESTS.vcxproj
configuration: 'Debug'
- job: linux
displayName: 'Linux'
pool:
vmImage: 'ubuntu-16.04'
strategy:
matrix:
linux-amd64-clang-3.9:
Tag: 'linux-amd64-clang-3.9'
linux-amd64-gcc-6:
Tag: 'linux-amd64-gcc-6'
linux-i386-gcc-6:
Tag: 'linux-i386-gcc-6'
steps:
- template: azure-pipelines/templates/ci-git-rebase.yml
# The dockers already have the dependencies installed
- template: azure-pipelines/templates/ci-opengfx.yml
parameters:
SharedFolder: /usr/local/share/games/openttd
PrefixCommand: sudo
- template: azure-pipelines/templates/linux-build.yml
parameters:
Image: compile-farm-ci
Tag: $(Tag)
- job: macos
displayName: 'MacOS'
pool:
vmImage: 'macOS-10.14'
variables:
MACOSX_DEPLOYMENT_TARGET: 10.9
steps:
- template: azure-pipelines/templates/ci-git-rebase.yml
- template: azure-pipelines/templates/osx-dependencies.yml
- template: azure-pipelines/templates/ci-opengfx.yml
parameters:
SharedFolder: /Library/Application Support/OpenTTD
PrefixCommand: sudo
- template: azure-pipelines/templates/osx-build.yml
- script: |
set -ex
cd build
CTEST_OUTPUT_ON_FAILURE=1 make test
displayName: 'Test'

@ -1,10 +0,0 @@
steps:
# Rebase to target branch for every PR. This means users don't have to
# rebase every time target branch changes. As long as the PR applies cleanly, we
# will validate it.
- bash: |
git config user.email 'info@openttd.org'
git config user.name 'OpenTTD CI'
git rebase origin/${SYSTEM_PULLREQUEST_TARGETBRANCH}
displayName: 'Rebase to target branch'
condition: and(succeeded(), eq(variables['Build.Reason'], 'PullRequest'))

@ -1,13 +0,0 @@
parameters:
SharedFolder: '/usr/local/share/games/openttd'
PrefixCommand: ''
steps:
- bash: |
set -ex
${{ parameters.PrefixCommand }} mkdir -p "${{ parameters.SharedFolder }}/baseset"
cd "${{ parameters.SharedFolder }}/baseset"
${{ parameters.PrefixCommand }} curl -L https://cdn.openttd.org/opengfx-releases/0.6.0/opengfx-0.6.0-all.zip -o opengfx-all.zip
${{ parameters.PrefixCommand }} unzip opengfx-all.zip
${{ parameters.PrefixCommand }} rm -f opengfx-all.zip
displayName: 'Install OpenGFX'

@ -9,7 +9,7 @@ macro(_parse_arguments_with_multi_hack ORIGINAL_COMMAND_LINE)
foreach(MULTI IN LISTS MULTIS)
string(REPLACE "${MULTI}" "${MULTI};:::" COMMAND_LINE "${COMMAND_LINE}")
endforeach(MULTI)
endforeach()
cmake_parse_arguments(PARAM "${OPTIONS}" "${SINGLES}" "${MULTIS}" ${COMMAND_LINE})
endmacro()
@ -19,25 +19,25 @@ macro(_reassemble_command_line)
set(NEW_COMMAND_LINE ${PARAM_UNPARSED_ARGUMENTS})
foreach(OPTION IN LISTS OPTIONS)
if (PARAM_${OPTION})
if(PARAM_${OPTION})
list(APPEND NEW_COMMAND_LINE "${OPTION}")
endif (PARAM_${OPTION})
endforeach(OPTION)
endif()
endforeach()
foreach(SINGLE IN LISTS SINGLES)
if (PARAM_${SINGLE})
if(PARAM_${SINGLE})
list(APPEND NEW_COMMAND_LINE "${SINGLE}" "${PARAM_${SINGLE}}")
endif (PARAM_${SINGLE})
endforeach(SINGLE)
endif()
endforeach()
foreach(MULTI IN LISTS MULTIS)
if (PARAM_${MULTI})
if(PARAM_${MULTI})
# Replace our special marker with the name of the MULTI again. This
# restores for example multiple COMMANDs again.
string(REPLACE ":::" "${MULTI}" PARAM_${MULTI} "${PARAM_${MULTI}}")
list(APPEND NEW_COMMAND_LINE "${PARAM_${MULTI}}")
endif (PARAM_${MULTI})
endforeach(MULTI)
endif()
endforeach()
endmacro()
# Generated files can be older than their dependencies, causing useless
@ -72,9 +72,9 @@ function(add_custom_command_timestamp)
# Reset the OUTPUT and BYPRODUCTS as an empty list (if needed).
# Because they are MULTIS, we need to add our special marker here.
set(PARAM_OUTPUT ":::")
if (NOT PARAM_BYPRODUCTS)
if(NOT PARAM_BYPRODUCTS)
set(PARAM_BYPRODUCTS ":::")
endif ()
endif()
foreach(OUTPUT IN LISTS OUTPUTS)
# For every output, we add a 'cmake -E touch' entry to update the
@ -91,12 +91,12 @@ function(add_custom_command_timestamp)
# add_custom_target_timestamp() to know if we should point to the
# '.timestamp' variant or not.
set_source_files_properties(${OUTPUT} PROPERTIES BYPRODUCT ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILENAME}.timestamp)
endforeach(OUTPUT)
endforeach()
# Reassemble and call the wrapped command
_reassemble_command_line()
add_custom_command(${NEW_COMMAND_LINE})
endfunction(add_custom_command_timestamp)
endfunction()
# Generated files can be older than their dependencies, causing useless
# regenerations. This function adds a .timestamp file for each file in DEPENDS
@ -130,16 +130,16 @@ function(add_custom_target_timestamp)
# Check if the output is produced by add_custom_command_timestamp()
get_source_file_property(BYPRODUCT ${DEPEND} BYPRODUCT)
if (BYPRODUCT STREQUAL "NOTFOUND")
if(BYPRODUCT STREQUAL "NOTFOUND")
# If it is not, just keep it as DEPEND
list(APPEND PARAM_DEPENDS "${DEPEND}")
else (BYPRODUCT STREQUAL "NOTFOUND")
else()
# If it is, the BYPRODUCT property points to the timestamp we want to depend on
list(APPEND PARAM_DEPENDS "${BYPRODUCT}")
endif (BYPRODUCT STREQUAL "NOTFOUND")
endforeach(DEPEND)
endif()
endforeach()
# Reassemble and call the wrapped command
_reassemble_command_line()
add_custom_target(${NEW_COMMAND_LINE})
endfunction(add_custom_target_timestamp)
endfunction()

@ -3,7 +3,7 @@
# compile_flags()
#
macro(compile_flags)
if (MSVC)
if(MSVC)
# Switch to MT (static) instead of MD (dynamic) binary
# For MSVC two generators are available
@ -23,14 +23,14 @@ macro(compile_flags)
# C++11 standard". We need C++11 for the way we use threads.
add_compile_options(/Zc:rvalueCast)
if (NOT CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
if(NOT CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
# Enable multi-threaded compilation.
add_compile_options(/MP)
endif(NOT CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
endif()
# Add DPI manifest to project; other WIN32 targets get this via ottdres.rc
list(APPEND GENERATED_SOURCE_FILES "${CMAKE_SOURCE_DIR}/os/windows/openttd.manifest")
endif (MSVC)
endif()
# Add some -D flags for Debug builds. We cannot use add_definitions(), because
# it does not appear to support the $<> tags.
@ -38,19 +38,19 @@ macro(compile_flags)
"$<$<CONFIG:Debug>:-D_DEBUG>"
"$<$<NOT:$<CONFIG:Debug>>:-D_FORTIFY_SOURCE=2>" # FORTIFY_SOURCE should only be used in non-debug builds (requires -O1+)
)
if (MINGW)
if(MINGW)
add_link_options(
"$<$<NOT:$<CONFIG:Debug>>:-fstack-protector>" # Prevent undefined references when _FORTIFY_SOURCE > 0
)
endif (MINGW)
endif()
# Prepare a generator that checks if we are not a debug, and don't have asserts
# on. We need this later on to set some compile options for stable releases.
#set(IS_STABLE_RELEASE "$<AND:$<NOT:$<CONFIG:Debug>>,$<NOT:$<BOOL:${OPTION_USE_ASSERTS}>>>")
if (MSVC)
if(MSVC)
add_compile_options(/W3)
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
add_compile_options(
-W
-Wall
@ -104,15 +104,15 @@ macro(compile_flags)
# non-coloured output. We can override this to get nicely
# coloured output, but since that might yield odd results with
# IDEs, we extract it to an option.
if (OPTION_FORCE_COLORED_OUTPUT)
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
if(OPTION_FORCE_COLORED_OUTPUT)
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
add_compile_options (-fdiagnostics-color=always)
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
elseif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
add_compile_options (-fcolor-diagnostics)
endif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
endif (OPTION_FORCE_COLORED_OUTPUT)
endif()
endif()
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
include(CheckCXXCompilerFlag)
check_cxx_compiler_flag("-flifetime-dse=1" LIFETIME_DSE_FOUND)
@ -131,14 +131,14 @@ macro(compile_flags)
# well with our custom pool item allocator
"$<$<BOOL:${LIFETIME_DSE_FOUND}>:-flifetime-dse=1>"
)
endif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
endif()
if (APPLE)
if(APPLE)
add_compile_options(
-fno-stack-check
)
endif (APPLE)
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
endif()
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
add_compile_options(
-Wall
# warning #873: function ... ::operator new ... has no corresponding operator delete ...
@ -150,12 +150,12 @@ macro(compile_flags)
# warning #2160: anonymous union qualifier is ignored
-wd2160
)
else ()
else()
message(FATAL_ERROR "No warning flags are set for this compiler yet; please consider creating a Pull Request to add support for this compiler.")
endif ()
endif()
if (NOT WIN32)
if(NOT WIN32)
# rdynamic is used to get useful stack traces from crash reports.
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -rdynamic")
endif (NOT WIN32)
endif()
endmacro()

@ -26,7 +26,7 @@ function(create_grf_command)
)
list(APPEND GRF_PNG_BINARY_FILES ${GRF_PNG_BINARY_FILE})
endforeach(GRF_PNG_SOURCE_FILE)
endforeach()
add_custom_command(OUTPUT ${GRF_BINARY_FILE}
COMMAND ${CMAKE_COMMAND}

@ -13,9 +13,9 @@ macro(create_regression)
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}")
if ("${REGRESSION_SOURCE_FILE_NAME}" STREQUAL "regression.cfg")
if("${REGRESSION_SOURCE_FILE_NAME}" STREQUAL "regression.cfg")
continue()
endif ("${REGRESSION_SOURCE_FILE_NAME}" STREQUAL "regression.cfg")
endif()
add_custom_command(OUTPUT ${REGRESSION_BINARY_FILE}
COMMAND ${CMAKE_COMMAND} -E copy
@ -26,7 +26,7 @@ macro(create_regression)
)
list(APPEND REGRESSION_BINARY_FILES ${REGRESSION_BINARY_FILE})
endforeach(REGRESSION_SOURCE_FILE)
endforeach()
# Copy the regression configuration in a special folder, so all autogenerated
# folders end up in the same place after running regression.
@ -53,9 +53,9 @@ macro(create_regression)
foreach(REGRESSION_TEST IN LISTS REGRESSION_TESTS)
get_filename_component(REGRESSION_TEST_NAME "${REGRESSION_TEST}" NAME)
if ("${REGRESSION_TEST_NAME}" STREQUAL "regression.cfg")
if("${REGRESSION_TEST_NAME}" STREQUAL "regression.cfg")
continue()
endif ("${REGRESSION_TEST_NAME}" STREQUAL "regression.cfg")
endif()
add_custom_target(regression_${REGRESSION_TEST_NAME}
COMMAND ${CMAKE_COMMAND}
@ -78,7 +78,7 @@ macro(create_regression)
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
list(APPEND REGRESSION_TARGETS regression_${REGRESSION_TEST_NAME})
endforeach(REGRESSION_TEST)
endforeach()
# Create a new target which runs the regression
add_custom_target(regression

@ -6,9 +6,9 @@ function(add_endian_definition)
include(TestBigEndian)
TEST_BIG_ENDIAN(IS_BIG_ENDIAN)
if (IS_BIG_ENDIAN)
if(IS_BIG_ENDIAN)
add_definitions(-DTTD_ENDIAN=TTD_BIG_ENDIAN)
else (IS_BIG_ENDIAN)
else()
add_definitions(-DTTD_ENDIAN=TTD_LITTLE_ENDIAN)
endif (IS_BIG_ENDIAN)
endif()
endfunction()

@ -54,10 +54,10 @@ find_package_handle_standard_args(Allegro
VERSION_VAR Allegro_VERSION
)
if (Allegro_FOUND)
if(Allegro_FOUND)
set(Allegro_LIBRARIES ${Allegro_LIBRARY})
set(Allegro_INCLUDE_DIRS ${Allegro_INCLUDE_DIR})
endif ()
endif()
mark_as_advanced(
Allegro_INCLUDE_DIR

@ -1,15 +1,15 @@
# Autodetect editbin. Only useful for MSVC.
if (NOT EDITBIN_DIRECTORY)
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
if(NOT EDITBIN_DIRECTORY)
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
get_filename_component(MSVC_COMPILE_DIRECTORY ${CMAKE_CXX_COMPILER} DIRECTORY)
set(EDITBIN_DIRECTORY ${MSVC_COMPILE_DIRECTORY})
else (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
else()
# For clang-cl build
# find editbin.exe from environmental variable VCToolsInstallDir
set(EDITBIN_DIRECTORY "$ENV{VCToolsInstallDir}/bin/Hostx64/x64")
endif (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
endif (NOT EDITBIN_DIRECTORY)
endif()
endif()
message(CHECK_START "Finding editbin.exe")
find_program(
@ -17,11 +17,11 @@ find_program(
HINTS ${EDITBIN_DIRECTORY}
)
if (EDITBIN_EXECUTABLE)
if(EDITBIN_EXECUTABLE)
message(CHECK_PASS "found")
else (EDITBIN_EXECUTABLE)
else()
message(CHECK_FAIL "not found , please manually specify EDITBIN_DIRECTORY")
endif (EDITBIN_EXECUTABLE)
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Editbin

@ -54,10 +54,10 @@ find_package_handle_standard_args(Fluidsynth
VERSION_VAR Fluidsynth_VERSION
)
if (Fluidsynth_FOUND)
if(Fluidsynth_FOUND)
set(Fluidsynth_LIBRARIES ${Fluidsynth_LIBRARY})
set(Fluidsynth_INCLUDE_DIRS ${Fluidsynth_INCLUDE_DIR})
endif ()
endif()
mark_as_advanced(
Fluidsynth_INCLUDE_DIR

@ -55,7 +55,7 @@ find_library( Fontconfig_LIBRARY
${PKG_FONTCONFIG_LIBRARY_DIRS}
)
if (Fontconfig_INCLUDE_DIR AND NOT Fontconfig_VERSION)
if(Fontconfig_INCLUDE_DIR AND NOT Fontconfig_VERSION)
file(STRINGS ${Fontconfig_INCLUDE_DIR}/fontconfig/fontconfig.h _contents REGEX "^#define[ \t]+FC_[A-Z]+[ \t]+[0-9]+$")
unset(Fontconfig_VERSION)
foreach(VPART MAJOR MINOR REVISION)
@ -70,7 +70,7 @@ if (Fontconfig_INCLUDE_DIR AND NOT Fontconfig_VERSION)
endif()
endforeach()
endforeach()
endif ()
endif()
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Fontconfig

@ -29,7 +29,7 @@ find_package(PkgConfig QUIET)
set(ICU_KNOWN_COMPONENTS "uc" "i18n" "le" "lx" "io")
foreach(MOD_NAME IN LISTS ICU_FIND_COMPONENTS)
if (NOT MOD_NAME IN_LIST ICU_KNOWN_COMPONENTS)
if(NOT MOD_NAME IN_LIST ICU_KNOWN_COMPONENTS)
message(FATAL_ERROR "Unknown ICU component: ${MOD_NAME}")
endif()
pkg_check_modules(PC_ICU_${MOD_NAME} QUIET icu-${MOD_NAME})
@ -39,14 +39,14 @@ foreach(MOD_NAME IN LISTS ICU_FIND_COMPONENTS)
foreach(LIBRARY IN LISTS PC_ICU_${MOD_NAME}_LIBRARIES)
unset(PC_LIBRARY CACHE)
find_library(PC_LIBRARY NAMES ${LIBRARY})
if (NOT PC_LIBRARY)
if(NOT PC_LIBRARY)
unset(PC_ICU_${MOD_NAME}_FOUND)
endif()
list(APPEND PC_LIBRARIES ${PC_LIBRARY})
endforeach()
unset(PC_LIBRARY CACHE)
if (${PC_ICU_${MOD_NAME}_FOUND})
if(${PC_ICU_${MOD_NAME}_FOUND})
set(ICU_COMPONENT_FOUND TRUE)
set(ICU_${MOD_NAME}_FOUND TRUE)
set(ICU_${MOD_NAME}_LIBRARIES ${PC_LIBRARIES})

@ -55,8 +55,8 @@ find_library(LZO_LIBRARY
# name as the optimized file. This is not always the case, but so far
# experiences has shown that in those case vcpkg CMake files do the right
# thing.
if (VCPKG_TOOLCHAIN AND LZO_LIBRARY)
if (LZO_LIBRARY MATCHES "/debug/")
if(VCPKG_TOOLCHAIN AND LZO_LIBRARY)
if(LZO_LIBRARY MATCHES "/debug/")
set(LZO_LIBRARY_DEBUG ${LZO_LIBRARY})
string(REPLACE "/debug/lib/" "/lib/" LZO_LIBRARY_RELEASE ${LZO_LIBRARY})
else()
@ -78,10 +78,10 @@ find_package_handle_standard_args(LZO
VERSION_VAR LZO_VERSION
)
if (LZO_FOUND)
if(LZO_FOUND)
set(LZO_LIBRARIES ${LZO_LIBRARY})
set(LZO_INCLUDE_DIRS ${LZO_INCLUDE_DIR})
endif ()
endif()
mark_as_advanced(
LZO_INCLUDE_DIR

@ -4,9 +4,9 @@
include(CheckCXXSourceCompiles)
set(CMAKE_REQUIRED_FLAGS "")
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
set(CMAKE_REQUIRED_FLAGS "-msse4.1")
endif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
endif()
check_cxx_source_compiles("
#include <xmmintrin.h>

@ -54,10 +54,10 @@ find_package_handle_standard_args(XDG_basedir
VERSION_VAR XDG_basedir_VERSION
)
if (XDG_basedir_FOUND)
if(XDG_basedir_FOUND)
set(XDG_basedir_LIBRARIES ${XDG_basedir_LIBRARY})
set(XDG_basedir_INCLUDE_DIRS ${XDG_basedir_INCLUDE_DIR})
endif ()
endif()
mark_as_advanced(
XDG_basedir_INCLUDE_DIR

@ -1,17 +1,17 @@
include(GNUInstallDirs)
# If requested, use FHS layout; otherwise fall back to a flat layout.
if (OPTION_INSTALL_FHS)
if(OPTION_INSTALL_FHS)
set(BINARY_DESTINATION_DIR "${CMAKE_INSTALL_BINDIR}")
set(DATA_DESTINATION_DIR "${CMAKE_INSTALL_DATADIR}/${BINARY_NAME}")
set(DOCS_DESTINATION_DIR "${CMAKE_INSTALL_DOCDIR}")
set(MAN_DESTINATION_DIR "${CMAKE_INSTALL_MANDIR}")
else (OPTION_INSTALL_FHS)
else()
set(BINARY_DESTINATION_DIR ".")
set(DATA_DESTINATION_DIR ".")
set(DOCS_DESTINATION_DIR ".")
set(MAN_DESTINATION_DIR ".")
endif (OPTION_INSTALL_FHS)
endif()
install(TARGETS openttd
RUNTIME
@ -40,7 +40,7 @@ install(FILES
# A Linux manual only makes sense when using FHS. Otherwise it is a very odd
# file with little context to what it is.
if (OPTION_INSTALL_FHS)
if(OPTION_INSTALL_FHS)
set(MAN_SOURCE_FILE ${CMAKE_SOURCE_DIR}/docs/openttd.6)
set(MAN_BINARY_FILE ${CMAKE_BINARY_DIR}/docs/${BINARY_NAME}.6)
install(CODE
@ -53,26 +53,26 @@ if (OPTION_INSTALL_FHS)
${MAN_BINARY_FILE}.gz
DESTINATION ${MAN_DESTINATION_DIR}/man6
COMPONENT manual)
endif (OPTION_INSTALL_FHS)
endif()
# TODO -- Media files
# TODO -- Menu files
if (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
set(ARCHITECTURE "amd64")
else (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
else()
string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" ARCHITECTURE)
endif (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
endif()
# Windows is a bit more annoying to detect; using the size of void pointer
# seems to be the most robust.
if (WIN32)
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
if(WIN32)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(ARCHITECTURE "win64")
else (CMAKE_SIZEOF_VOID_P EQUAL 8)
else()
set(ARCHITECTURE "win32")
endif (CMAKE_SIZEOF_VOID_P EQUAL 8)
endif (WIN32)
endif()
endif()
set(CPACK_SYSTEM_NAME "${ARCHITECTURE}")
@ -91,33 +91,33 @@ set(CPACK_PACKAGE_EXECUTABLES "openttd;OpenTTD")
set(CPACK_STRIP_FILES NO)
set(CPACK_OUTPUT_FILE_PREFIX "bundles")
if (APPLE)
if(APPLE)
set(CPACK_GENERATOR "Bundle")
include(PackageBundle)
set(CPACK_PACKAGE_FILE_NAME "openttd-#CPACK_PACKAGE_VERSION#-macosx")
elseif (WIN32)
elseif(WIN32)
set(CPACK_GENERATOR "ZIP")
if (OPTION_USE_NSIS)
if(OPTION_USE_NSIS)
list(APPEND CPACK_GENERATOR "NSIS")
include(PackageNSIS)
endif (OPTION_USE_NSIS)
endif()
set(CPACK_PACKAGE_FILE_NAME "openttd-#CPACK_PACKAGE_VERSION#-windows-${CPACK_SYSTEM_NAME}")
elseif (UNIX)
elseif(UNIX)
# With FHS, we can create deb/rpm/... Without it, they would be horribly broken
# and not work. The other way around is also true; with FHS they are not
# usable, and only flat formats work.
if (OPTION_INSTALL_FHS)
if(OPTION_INSTALL_FHS)
set(CPACK_GENERATOR "DEB")
include(PackageDeb)
else (OPTION_INSTALL_FHS)
else()
set(CPACK_GENERATOR "TXZ")
endif (OPTION_INSTALL_FHS)
endif()
set(CPACK_PACKAGE_FILE_NAME "openttd-#CPACK_PACKAGE_VERSION#-linux-${CPACK_SYSTEM_NAME}")
else ()
else()
message(FATAL_ERROR "Unknown OS found for packaging; please consider creating a Pull Request to add support for this OS.")
endif ()
endif()
include(CPack)

@ -1,18 +1,23 @@
function(link_package NAME)
cmake_parse_arguments(LP "ENCOURAGED" "TARGET" "" ${ARGN})
if (${NAME}_FOUND)
if(${NAME}_FOUND)
string(TOUPPER "${NAME}" UCNAME)
add_definitions(-DWITH_${UCNAME})
if (LP_TARGET AND TARGET ${LP_TARGET})
# Some libraries' cmake packages (looking at you, SDL2) leave trailing whitespace in the link commands,
# which (later) cmake considers to be an error. Work around this with by stripping the incoming string.
if(LP_TARGET AND TARGET ${LP_TARGET})
string(STRIP "${LP_TARGET}" LP_TARGET)
target_link_libraries(openttd ${LP_TARGET})
message(STATUS "${NAME} found -- -DWITH_${UCNAME} -- ${LP_TARGET}")
else()
string(STRIP "${${NAME}_LIBRARY}" ${NAME}_LIBRARY)
string(STRIP "${${NAME}_LIBRARIES}" ${NAME}_LIBRARIES)
include_directories(${${NAME}_INCLUDE_DIRS} ${${NAME}_INCLUDE_DIR})
target_link_libraries(openttd ${${NAME}_LIBRARIES} ${${NAME}_LIBRARY})
message(STATUS "${NAME} found -- -DWITH_${UCNAME} -- ${${NAME}_INCLUDE_DIRS} ${${NAME}_INCLUDE_DIR} -- ${${NAME}_LIBRARIES} ${${NAME}_LIBRARY}")
endif()
elseif (LP_ENCOURAGED)
elseif(LP_ENCOURAGED)
message(WARNING "${NAME} not found; compiling OpenTTD without ${NAME} is strongly disencouraged")
endif()
endfunction()

@ -5,36 +5,36 @@ include(GNUInstallDirs)
# set_directory_options()
#
function(set_directory_options)
if (APPLE)
if(APPLE)
set(DEFAULT_PERSONAL_DIR "Documents/OpenTTD")
set(DEFAULT_SHARED_DIR "/Library/Application Support/OpenTTD")
set(DEFAULT_GLOBAL_DIR "(not set)")
elseif (WIN32)
elseif(WIN32)
set(DEFAULT_PERSONAL_DIR "OpenTTD")
set(DEFAULT_SHARED_DIR "(not set)")
set(DEFAULT_GLOBAL_DIR "(not set)")
elseif (UNIX)
elseif(UNIX)
set(DEFAULT_PERSONAL_DIR ".${BINARY_NAME}")
set(DEFAULT_SHARED_DIR "(not set)")
set(DEFAULT_GLOBAL_DIR "${CMAKE_INSTALL_FULL_DATADIR}/${BINARY_NAME}")
else ()
else()
message(FATAL_ERROR "Unknown OS found; please consider creating a Pull Request to add support for this OS.")
endif ()
endif()
if (NOT PERSONAL_DIR)
if(NOT PERSONAL_DIR)
set(PERSONAL_DIR "${DEFAULT_PERSONAL_DIR}" CACHE STRING "Personal directory")
message(STATUS "Detecting Personal Data directory - ${PERSONAL_DIR}")
endif (NOT PERSONAL_DIR)
endif()
if (NOT SHARED_DIR)
if(NOT SHARED_DIR)
set(SHARED_DIR "${DEFAULT_SHARED_DIR}" CACHE STRING "Shared directory")
message(STATUS "Detecting Shared Data directory - ${SHARED_DIR}")
endif (NOT SHARED_DIR)
endif()
if (NOT GLOBAL_DIR)
if(NOT GLOBAL_DIR)
set(GLOBAL_DIR "${DEFAULT_GLOBAL_DIR}" CACHE STRING "Global directory")
message(STATUS "Detecting Global Data directory - ${GLOBAL_DIR}")
endif (NOT GLOBAL_DIR)
endif()
endfunction()
# Set some generic options that influence what is being build.
@ -42,11 +42,11 @@ endfunction()
# set_options()
#
function(set_options)
if (UNIX AND NOT APPLE)
if(UNIX AND NOT APPLE)
set(DEFAULT_OPTION_INSTALL_FHS ON)
else (UNIX AND NOT APPLE)
else()
set(DEFAULT_OPTION_INSTALL_FHS OFF)
endif (UNIX AND NOT APPLE)
endif()
option(OPTION_FORCE_COLORED_OUTPUT "Always produce ANSI-colored output (GNU/Clang only)." OFF)
@ -74,17 +74,17 @@ endfunction()
# add_definitions_based_on_options()
#
function(add_definitions_based_on_options)
if (OPTION_DEDICATED)
if(OPTION_DEDICATED)
add_definitions(-DDEDICATED)
endif (OPTION_DEDICATED)
endif()
if (NOT OPTION_USE_THREADS)
if(NOT OPTION_USE_THREADS)
add_definitions(-DNO_THREADS)
endif (NOT OPTION_USE_THREADS)
endif()
if (OPTION_USE_ASSERTS)
if(OPTION_USE_ASSERTS)
add_definitions(-DWITH_ASSERT)
else (OPTION_USE_ASSERTS)
else()
add_definitions(-DNDEBUG)
endif (OPTION_USE_ASSERTS)
endif()
endfunction()

@ -10,16 +10,16 @@ function(add_files)
cmake_parse_arguments(PARAM "" "" "CONDITION" ${ARGN})
set(PARAM_FILES "${PARAM_UNPARSED_ARGUMENTS}")
if (PARAM_CONDITION)
if (NOT (${PARAM_CONDITION}))
if(PARAM_CONDITION)
if(NOT (${PARAM_CONDITION}))
return()
endif (NOT (${PARAM_CONDITION}))
endif (PARAM_CONDITION)
endif()
endif()
foreach(FILE IN LISTS PARAM_FILES)
target_sources(openttd PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/${FILE})
endforeach()
endfunction(add_files)
endfunction()
# This function works around an 'issue' with CMake, where
# set_source_files_properties() only works in the scope of the file. We want
@ -42,7 +42,7 @@ function(set_compile_flags)
endforeach()
set_property(GLOBAL PROPERTY source_properties "${SOURCE_PROPERTIES}")
endfunction(set_compile_flags)
endfunction()
# Call this macro in the same CMakeLists.txt and after add_executable().
# This makes sure all the COMPILE_FLAGS of set_compile_flags() are set
@ -60,4 +60,4 @@ function(process_compile_flags)
set_source_files_properties(${FILE} PROPERTIES COMPILE_FLAGS ${PROPERTIES})
endforeach()
endfunction(process_compile_flags)
endfunction()

@ -3,7 +3,7 @@
# set_static()
#
function(set_static_if_needed)
if (MINGW)
if(MINGW)
# Let exectutables run outside MinGW environment
# Force searching static libs
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" PARENT_SCOPE)

@ -12,13 +12,13 @@ set(ARG_READ NO)
while(ARGC LESS CMAKE_ARGC)
set(ARG ${CMAKE_ARGV${ARGC}})
if (ARG_READ)
if(ARG_READ)
list(APPEND LANG_SOURCE_FILES "${ARG}")
endif (ARG_READ)
endif()
if (ARG STREQUAL "--")
if(ARG STREQUAL "--")
set(ARG_READ YES)
endif (ARG STREQUAL "--")
endif()
math(EXPR ARGC "${ARGC} + 1")
endwhile()
@ -33,17 +33,17 @@ string(REGEX REPLACE "@(.*)@" "\\1" PLACE_HOLDER "${PLACE_HOLDER}")
foreach(LANGFILE IN LISTS LANG_SOURCE_FILES)
file(STRINGS "${LANGFILE}" LANGLINES REGEX "^(##isocode|${STR_ID})" ENCODING UTF-8)
string(FIND "${LANGLINES}" "${STR_ID}" HAS_STR_ID)
if (HAS_STR_ID LESS 0)
if(HAS_STR_ID LESS 0)
continue()
endif (HAS_STR_ID LESS 0)
endif()
string(REGEX REPLACE "##isocode ([^;]+).*" "\\1" ISOCODE "${LANGLINES}")
if ("${ISOCODE}" STREQUAL "en_GB")
if("${ISOCODE}" STREQUAL "en_GB")
string(REGEX REPLACE "[^:]*:(.*)" "${INI_KEY} = \\1" LANGLINES "${LANGLINES}")
else()
string(REGEX REPLACE "[^:]*:(.*)" "${INI_KEY}.${ISOCODE} = \\1" LANGLINES "${LANGLINES}")
endif()
list(APPEND ${PLACE_HOLDER} ${LANGLINES})
endforeach(LANGFILE)
endforeach()
list(SORT ${PLACE_HOLDER})
string(REPLACE ";" "\n" ${PLACE_HOLDER} "${${PLACE_HOLDER}}")

@ -5,18 +5,18 @@ cmake_minimum_required(VERSION 3.5)
# files.
#
if (NOT NFORENUM_EXECUTABLE)
if(NOT NFORENUM_EXECUTABLE)
message(FATAL_ERROR "Script needs NFORENUM_EXECUTABLE defined")
endif (NOT NFORENUM_EXECUTABLE)
if (NOT GRFCODEC_EXECUTABLE)
endif()
if(NOT GRFCODEC_EXECUTABLE)
message(FATAL_ERROR "Script needs GRFCODEC_EXECUTABLE defined")
endif (NOT GRFCODEC_EXECUTABLE)
if (NOT GRF_SOURCE_FOLDER)
endif()
if(NOT GRF_SOURCE_FOLDER)
message(FATAL_ERROR "Script needs GRF_SOURCE_FOLDER defined")
endif (NOT GRF_SOURCE_FOLDER)
if (NOT GRF_BINARY_FILE)
endif()
if(NOT GRF_BINARY_FILE)
message(FATAL_ERROR "Script needs GRF_BINARY_FILE defined")
endif (NOT GRF_BINARY_FILE)
endif()
get_filename_component(GRF_SOURCE_FOLDER_NAME "${GRF_SOURCE_FOLDER}" NAME)
@ -30,14 +30,14 @@ foreach(NFO_LINE IN LISTS NFO_LINES)
# Recover the ; that was really in the text (and not a newline)
string(REPLACE "\\;" ";" NFO_LINE "${NFO_LINE}")
if (NFO_LINE MATCHES "^#include")
if(NFO_LINE MATCHES "^#include")
string(REGEX REPLACE "^#include \"(.*)\"$" "\\1" INCLUDE_FILE ${NFO_LINE})
file(READ ${GRF_SOURCE_FOLDER}/${INCLUDE_FILE} INCLUDE_LINES)
file(APPEND sprites/${GRF_SOURCE_FOLDER_NAME}.nfo "${INCLUDE_LINES}")
else (NFO_LINE MATCHES "^#include")
else()
file(APPEND sprites/${GRF_SOURCE_FOLDER_NAME}.nfo "${NFO_LINE}\n")
endif (NFO_LINE MATCHES "^#include")
endforeach(NFO_LINE)
endif()
endforeach()
execute_process(COMMAND ${NFORENUM_EXECUTABLE} -s sprites/${GRF_SOURCE_FOLDER_NAME}.nfo)
execute_process(COMMAND ${GRFCODEC_EXECUTABLE} -n -s -e -p1 ${GRF_SOURCE_FOLDER_NAME}.grf)

@ -6,7 +6,7 @@ cmake_minimum_required(VERSION 3.5)
find_package(Git QUIET)
# ${CMAKE_SOURCE_DIR}/.git may be a directory or a regular file
if (GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
# Make sure LC_ALL is set to something desirable
set(SAVED_LC_ALL "$ENV{LC_ALL}")
set(ENV{LC_ALL} C)
@ -26,7 +26,7 @@ if (GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
if (NOT IS_MODIFIED STREQUAL "")
if(NOT IS_MODIFIED STREQUAL "")
set(REV_MODIFIED 2)
endif()
@ -69,38 +69,38 @@ if (GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
)
string(REGEX REPLACE "\^0$" "" TAG "${TAG}")
if (REV_MODIFIED EQUAL 0)
if(REV_MODIFIED EQUAL 0)
set(HASHPREFIX "-g")
elseif (REV_MODIFIED EQUAL 2)
elseif(REV_MODIFIED EQUAL 2)
set(HASHPREFIX "-m")
else ()
else()
set(HASHPREFIX "-u")
endif()
# Set the version string
if (NOT TAG STREQUAL "")
if(NOT TAG STREQUAL "")
set(REV_VERSION "${TAG}")
set(REV_ISTAG 1)
string(REGEX REPLACE "^[0-9.]+$" "" STABLETAG "${TAG}")
if (NOT STABLETAG STREQUAL "")
if(NOT STABLETAG STREQUAL "")
set(REV_ISSTABLETAG 1)
else ()
else()
set(REV_ISSTABLETAG 0)
endif ()
else ()
endif()
else()
set(REV_VERSION "${REV_ISODATE}-${BRANCH}${HASHPREFIX}${SHORTHASH}")
set(REV_ISTAG 0)
set(REV_ISSTABLETAG 0)
endif ()
endif()
# Restore LC_ALL
set(ENV{LC_ALL} "${SAVED_LC_ALL}")
elseif (EXISTS "${CMAKE_SOURCE_DIR}/.ottdrev-vc")
elseif(EXISTS "${CMAKE_SOURCE_DIR}/.ottdrev-vc")
file(READ "${CMAKE_SOURCE_DIR}/.ottdrev-vc" OTTDREVVC)
string(REPLACE "\n" ";" OTTDREVVC "${OTTDREVVC}")
list(GET OTTDREVVC 0 OTTDREV)
list(GET OTTDREVVC 1 SRCHASH)
list(GET OTTDREVVC 0 OTTDREV)
list(GET OTTDREVVC 1 SRCHASH)
string(REPLACE "\t" ";" OTTDREV "${OTTDREV}")
list(GET OTTDREV 0 REV_VERSION)
list(GET OTTDREV 1 REV_ISODATE)
@ -109,29 +109,29 @@ elseif (EXISTS "${CMAKE_SOURCE_DIR}/.ottdrev-vc")
list(GET OTTDREV 4 REV_ISTAG)
list(GET OTTDREV 5 REV_ISSTABLETAG)
list(GET OTTDREV 6 REV_YEAR)
if (REV_MODIFIED EQUAL 2)
if(REV_MODIFIED EQUAL 2)
string(REGEX REPLACE "M$" "" REV_VERSION "${REV_VERSION}")
endif ()
endif()
execute_process(COMMAND ./version_utils.sh -o
RESULT_VARIABLE CAN_CHECK_MODIFIED
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
if (CAN_CHECK_MODIFIED EQUAL 0)
if(CAN_CHECK_MODIFIED EQUAL 0)
execute_process(COMMAND ./version_utils.sh -s
OUTPUT_VARIABLE CURRENT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
if (NOT CURRENT_HASH STREQUAL SRCHASH)
if(NOT CURRENT_HASH STREQUAL SRCHASH)
set(REV_MODIFIED 2)
string(SUBSTRING "${CURRENT_HASH}" 0 8 SHORT_CURRENT_HASH)
set(REV_VERSION "${REV_VERSION}-H${SHORT_CURRENT_HASH}")
set(REV_MODIFIED 2)
endif ()
else ()
endif()
else()
set(REV_MODIFIED 1)
endif ()
elseif (EXISTS "${CMAKE_SOURCE_DIR}/.ottdrev")
endif()
elseif(EXISTS "${CMAKE_SOURCE_DIR}/.ottdrev")
file(READ "${CMAKE_SOURCE_DIR}/.ottdrev" OTTDREV)
string(REPLACE "\n" "" OTTDREV "${OTTDREV}")
string(REPLACE "\t" ";" OTTDREV "${OTTDREV}")
@ -142,7 +142,7 @@ elseif (EXISTS "${CMAKE_SOURCE_DIR}/.ottdrev")
list(GET OTTDREV 4 REV_ISTAG)
list(GET OTTDREV 5 REV_ISSTABLETAG)
list(GET OTTDREV 6 REV_YEAR)
else ()
else()
message(WARNING "No version detected; this build will NOT be network compatible")
set(REV_VERSION "norev0000")
set(REV_ISODATE "19700101")
@ -151,25 +151,25 @@ else ()
set(REV_ISTAG 0)
set(REV_ISSTABLETAG 0)
set(REV_YEAR "1970")
endif ()
endif()
message(STATUS "Version string: ${REV_VERSION}")
if (GENERATE_OTTDREV)
if(GENERATE_OTTDREV)
message(STATUS "Generating ${GENERATE_OTTDREV}")
file(WRITE ${CMAKE_SOURCE_DIR}/${GENERATE_OTTDREV} "${REV_VERSION}\t${REV_ISODATE}\t${REV_MODIFIED}\t${REV_HASH}\t${REV_ISTAG}\t${REV_ISSTABLETAG}\t${REV_YEAR}\n")
else (GENERATE_OTTDREV)
else()
message(STATUS "Generating rev.cpp")
configure_file("${CMAKE_SOURCE_DIR}/src/rev.cpp.in"
"${FIND_VERSION_BINARY_DIR}/rev.cpp")
if (WIN32)
if(WIN32)
message(STATUS "Generating ottdres.rc")
configure_file("${CMAKE_SOURCE_DIR}/src/os/windows/ottdres.rc.in"
"${FIND_VERSION_BINARY_DIR}/ottdres.rc")
endif (WIN32)
endif()
message(STATUS "Generating CPackProperties.cmake")
configure_file("${CMAKE_SOURCE_DIR}/CPackProperties.cmake.in"
"${CPACK_BINARY_DIR}/CPackProperties.cmake" @ONLY)
endif (GENERATE_OTTDREV)
endif()

@ -15,12 +15,12 @@ cmake_minimum_required(VERSION 3.5)
#
#
if (NOT GENERATE_SOURCE_FILE)
if(NOT GENERATE_SOURCE_FILE)
message(FATAL_ERROR "Script needs GENERATE_SOURCE_FILE defined")
endif (NOT GENERATE_SOURCE_FILE)
if (NOT GENERATE_BINARY_FILE)
endif()
if(NOT GENERATE_BINARY_FILE)
message(FATAL_ERROR "Script needs GENERATE_BINARY_FILE defined")
endif (NOT GENERATE_BINARY_FILE)
endif()
file(STRINGS ${GENERATE_SOURCE_FILE} ENUM_LINES REGEX "@enum")
@ -46,38 +46,38 @@ foreach(ENUM IN LISTS ENUM_LINES)
string(REPLACE "${RM_INDENT}" "" LINE "${LINE}")
# Remember possible doxygen comment before enum declaration
if ((NOT ACTIVE) AND "${LINE}" MATCHES "/\\*\\*")
if((NOT ACTIVE) AND "${LINE}" MATCHES "/\\*\\*")
set(COMMENT "${ADD_INDENT}${LINE}")
set(ACTIVE_COMMENT 1)
elseif (ACTIVE_COMMENT EQUAL 1)
elseif(ACTIVE_COMMENT EQUAL 1)
string(APPEND COMMENT "\n${ADD_INDENT}${LINE}")
endif()
# Check for enum match
if ("${LINE}" MATCHES "^ *enum *${ENUM_PATTERN} *\{")
if("${LINE}" MATCHES "^ *enum *${ENUM_PATTERN} *\{")
# REGEX REPLACE does a REGEX MATCHALL and fails if an empty string is matched
string(REGEX MATCH "[^ ]*" RESULT "${LINE}")
string(REPLACE "${RESULT}" "" RM_INDENT "${LINE}")
set(ACTIVE 1)
if (ACTIVE_COMMENT GREATER 0)
if(ACTIVE_COMMENT GREATER 0)
string(APPEND ${PLACE_HOLDER} "\n${COMMENT}")
endif (ACTIVE_COMMENT GREATER 0)
endif()
unset(ACTIVE_COMMENT)
unset(COMMENT)
endif ("${LINE}" MATCHES "^ *enum *${ENUM_PATTERN} *\{")
endif()
# Forget doxygen comment, if no enum follows
if (ACTIVE_COMMENT EQUAL 2 AND NOT "${LINE}" STREQUAL "")
if(ACTIVE_COMMENT EQUAL 2 AND NOT "${LINE}" STREQUAL "")
unset(ACTIVE_COMMENT)
unset(COMMENT)
endif (ACTIVE_COMMENT EQUAL 2 AND NOT "${LINE}" STREQUAL "")
if (ACTIVE_COMMENT EQUAL 1 AND "${LINE}" MATCHES "\\*/")
endif()
if(ACTIVE_COMMENT EQUAL 1 AND "${LINE}" MATCHES "\\*/")
set(ACTIVE_COMMENT 2)
endif (ACTIVE_COMMENT EQUAL 1 AND "${LINE}" MATCHES "\\*/")
endif()
if (ACTIVE)
if ("${LINE}" MATCHES "^ *[A-Za-z0-9_]* *[,=]")
if(ACTIVE)
if("${LINE}" MATCHES "^ *[A-Za-z0-9_]* *[,=]")
# Transform enum values
# REGEX REPLACE does a REGEX MATCHALL and replaces too much
string(REGEX MATCH " *=[^,]*" RESULT "${LINE}")
@ -92,28 +92,28 @@ foreach(ENUM IN LISTS ENUM_LINES)
unset(SPACES)
foreach(i RANGE ${LEN})
string(APPEND SPACES " ")
endforeach(i)
endforeach()
if (CMAKE_MATCH_3)
if(CMAKE_MATCH_3)
string(APPEND ${PLACE_HOLDER} "\n${ADD_INDENT}${CMAKE_MATCH_1}${CMAKE_MATCH_2}${SPACES} = ::${CMAKE_MATCH_2},${SPACES}${CMAKE_MATCH_3}")
else (CMAKE_MATCH_3)
else()
string(APPEND ${PLACE_HOLDER} "\n${ADD_INDENT}${CMAKE_MATCH_1}${CMAKE_MATCH_2}${SPACES} = ::${CMAKE_MATCH_2},")
endif (CMAKE_MATCH_3)
elseif ("${LINE}" STREQUAL "")
endif()
elseif("${LINE}" STREQUAL "")
string(APPEND ${PLACE_HOLDER} "\n")
else ()
else()
string(APPEND ${PLACE_HOLDER} "\n${ADD_INDENT}${LINE}")
endif ()
endif (ACTIVE)
endif()
endif()
if ("${LINE}" MATCHES "^ *\};")
if (ACTIVE)
if("${LINE}" MATCHES "^ *\};")
if(ACTIVE)
string(APPEND ${PLACE_HOLDER} "\n")
endif (ACTIVE)
endif()
unset(ACTIVE)
endif ("${LINE}" MATCHES "^ *\};")
endforeach(LINE)
endforeach(FILE)
endforeach(ENUM)
endif()
endforeach()
endforeach()
endforeach()
configure_file(${GENERATE_SOURCE_FILE} ${GENERATE_BINARY_FILE})

@ -4,26 +4,26 @@ cmake_minimum_required(VERSION 3.5)
# Runs a single regressoion test
#
if (NOT REGRESSION_TEST)
if(NOT REGRESSION_TEST)
message(FATAL_ERROR "Script needs REGRESSION_TEST defined (tip: use -DREGRESSION_TEST=..)")
endif (NOT REGRESSION_TEST)
if (NOT OPENTTD_EXECUTABLE)
endif()
if(NOT OPENTTD_EXECUTABLE)
message(FATAL_ERROR "Script needs OPENTTD_EXECUTABLE defined (tip: use -DOPENTTD_EXECUTABLE=..)")
endif (NOT OPENTTD_EXECUTABLE)
endif()
if (NOT EXISTS ai/${REGRESSION_TEST}/test.sav)
if(NOT EXISTS ai/${REGRESSION_TEST}/test.sav)
message(FATAL_ERROR "Regression test ${REGRESSION_TEST} does not exist (tip: check regression folder for the correct spelling)")
endif ()
endif()
# If editbin is given, copy the executable to a new folder, and change the
# subsystem to console. The copy is needed as multiple regressions can run
# at the same time.
if (EDITBIN_EXECUTABLE)
if(EDITBIN_EXECUTABLE)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${OPENTTD_EXECUTABLE} regression/${REGRESSION_TEST}.exe)
set(OPENTTD_EXECUTABLE "regression/${REGRESSION_TEST}.exe")
execute_process(COMMAND ${EDITBIN_EXECUTABLE} /nologo /subsystem:console ${OPENTTD_EXECUTABLE})
endif (EDITBIN_EXECUTABLE)
endif()
# Run the regression test
execute_process(COMMAND ${OPENTTD_EXECUTABLE}
@ -40,13 +40,13 @@ execute_process(COMMAND ${OPENTTD_EXECUTABLE}
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if (REGRESSION_OUTPUT)
if(REGRESSION_OUTPUT)
message(FATAL_ERROR "Unexpected output: ${REGRESSION_OUTPUT}")
endif (REGRESSION_OUTPUT)
endif()
if (NOT REGRESSION_RESULT)
if(NOT REGRESSION_RESULT)
message(FATAL_ERROR "Regression did not output anything; did the compilation fail?")
endif (NOT REGRESSION_RESULT)
endif()
# For some reason pointer can be printed as '0x(nil)', '0x0000000000000000', or '0x0x0'
string(REPLACE "0x(nil)" "0x00000000" REGRESSION_RESULT "${REGRESSION_RESULT}")
@ -76,21 +76,21 @@ list(LENGTH REGRESSION_EXPECTED REGRESSION_EXPECTED_LENGTH)
foreach(RESULT IN LISTS REGRESSION_RESULT)
list(GET REGRESSION_EXPECTED ${ARGC} EXPECTED)
if (NOT RESULT STREQUAL EXPECTED)
if(NOT RESULT STREQUAL EXPECTED)
message("${ARGC}: - ${EXPECTED}")
message("${ARGC}: + ${RESULT}'")
set(ERROR YES)
endif (NOT RESULT STREQUAL EXPECTED)
endif()
math(EXPR ARGC "${ARGC} + 1")
endforeach(RESULT)
endforeach()
if (NOT REGRESSION_EXPECTED_LENGTH EQUAL ARGC)
if(NOT REGRESSION_EXPECTED_LENGTH EQUAL ARGC)
math(EXPR MISSING "${REGRESSION_EXPECTED_LENGTH} - ${ARGC}")
message("(${MISSING} more lines were expected than found)")
set(ERROR YES)
endif (NOT REGRESSION_EXPECTED_LENGTH EQUAL ARGC)
endif()
if (ERROR)
if(ERROR)
message(FATAL_ERROR "Regression failed")
endif (ERROR)
endif()

@ -1,29 +1,29 @@
cmake_minimum_required(VERSION 3.5)
if (NOT SCRIPT_API_SOURCE_FILE)
if(NOT SCRIPT_API_SOURCE_FILE)
message(FATAL_ERROR "Script needs SCRIPT_API_SOURCE_FILE defined")
endif (NOT SCRIPT_API_SOURCE_FILE)
if (NOT SCRIPT_API_BINARY_FILE)
endif()
if(NOT SCRIPT_API_BINARY_FILE)
message(FATAL_ERROR "Script needs SCRIPT_API_BINARY_FILE defined")
endif (NOT SCRIPT_API_BINARY_FILE)
if (NOT SCRIPT_API_FILE)
endif()
if(NOT SCRIPT_API_FILE)
message(FATAL_ERROR "Script needs SCRIPT_API_FILE defined")
endif (NOT SCRIPT_API_FILE)
if (NOT APIUC)
endif()
if(NOT APIUC)
message(FATAL_ERROR "Script needs APIUC defined")
endif (NOT APIUC)
if (NOT APILC)
endif()
if(NOT APILC)
message(FATAL_ERROR "Script needs APILC defined")
endif (NOT APILC)
endif()
macro(dump_fileheader)
get_filename_component(SCRIPT_API_FILE_NAME "${SCRIPT_API_FILE}" NAME)
string(APPEND SQUIRREL_EXPORT "\n#include \"../${SCRIPT_API_FILE_NAME}\"")
if (NOT "${APIUC}" STREQUAL "Template")
if(NOT "${APIUC}" STREQUAL "Template")
string(REPLACE "script_" "template_" SCRIPT_API_FILE_NAME "${SCRIPT_API_FILE_NAME}")
string(APPEND SQUIRREL_EXPORT "\n#include \"../template/${SCRIPT_API_FILE_NAME}.sq\"")
endif (NOT "${APIUC}" STREQUAL "Template")
endmacro(dump_fileheader)
endif()
endmacro()
macro(dump_class_templates NAME)
string(REGEX REPLACE "^Script" "" REALNAME ${NAME})
@ -32,9 +32,9 @@ macro(dump_class_templates NAME)
string(APPEND SQUIRREL_EXPORT "\n template <> inline ${NAME} &GetParam(ForceType<${NAME} &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(${NAME} *)instance; }")
string(APPEND SQUIRREL_EXPORT "\n template <> inline const ${NAME} *GetParam(ForceType<const ${NAME} *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return (${NAME} *)instance; }")
string(APPEND SQUIRREL_EXPORT "\n template <> inline const ${NAME} &GetParam(ForceType<const ${NAME} &>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQUserPointer instance; sq_getinstanceup(vm, index, &instance, 0); return *(${NAME} *)instance; }")
if ("${NAME}" STREQUAL "ScriptEvent")
if("${NAME}" STREQUAL "ScriptEvent")
string(APPEND SQUIRREL_EXPORT "\n template <> inline int Return<${NAME} *>(HSQUIRRELVM vm, ${NAME} *res) { if (res == nullptr) { sq_pushnull(vm); return 1; } Squirrel::CreateClassInstanceVM(vm, \"${REALNAME}\", res, nullptr, DefSQDestructorCallback<${NAME}>, true); return 1; }")
elseif ("${NAME}" STREQUAL "ScriptText")
elseif("${NAME}" STREQUAL "ScriptText")
string(APPEND SQUIRREL_EXPORT "\n")
string(APPEND SQUIRREL_EXPORT "\n template <> inline Text *GetParam(ForceType<Text *>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) {")
string(APPEND SQUIRREL_EXPORT "\n if (sq_gettype(vm, index) == OT_INSTANCE) {")
@ -45,10 +45,10 @@ macro(dump_class_templates NAME)
string(APPEND SQUIRREL_EXPORT "\n }")
string(APPEND SQUIRREL_EXPORT "\n return nullptr;")
string(APPEND SQUIRREL_EXPORT "\n }")
else ()
else()
string(APPEND SQUIRREL_EXPORT "\n template <> inline int Return<${NAME} *>(HSQUIRRELVM vm, ${NAME} *res) { if (res == nullptr) { sq_pushnull(vm); return 1; } res->AddRef(); Squirrel::CreateClassInstanceVM(vm, \"${REALNAME}\", res, nullptr, DefSQDestructorCallback<${NAME}>, true); return 1; }")
endif ()
endmacro(dump_class_templates)
endif()
endmacro()
macro(reset_reader)
unset(ENUMS)
@ -63,7 +63,7 @@ macro(reset_reader)
unset(START_SQUIRREL_DEFINE_ON_NEXT_LINE)
set(CLS_LEVEL 0)
unset(CLS_IN_API)
endmacro(reset_reader)
endmacro()
reset_reader()
@ -71,80 +71,80 @@ file(STRINGS "${SCRIPT_API_FILE}" SOURCE_LINES)
foreach(LINE IN LISTS SOURCE_LINES)
# Ignore special doxygen blocks
if ("${LINE}" MATCHES "^#ifndef DOXYGEN_API")
if("${LINE}" MATCHES "^#ifndef DOXYGEN_API")
set(DOXYGEN_SKIP "next")
continue()
endif ()
if ("${LINE}" MATCHES "^#ifdef DOXYGEN_API")
endif()
if("${LINE}" MATCHES "^#ifdef DOXYGEN_API")
set(DOXYGEN_SKIP "true")
continue()
endif ()
if ("${LINE}" MATCHES "^#endif /\\* DOXYGEN_API \\*/")
endif()
if("${LINE}" MATCHES "^#endif /\\* DOXYGEN_API \\*/")
unset(DOXYGEN_SKIP)
continue()
endif ()
if ("${LINE}" MATCHES "^#else")
if ("${DOXYGEN_SKIP}" STREQUAL "next")
endif()
if("${LINE}" MATCHES "^#else")
if("${DOXYGEN_SKIP}" STREQUAL "next")
set(DOXYGEN_SKIP "true")
else()
unset(DOXYGEN_SKIP)
endif()
continue()
endif ()
if ("${DOXYGEN_SKIP}" STREQUAL "true")
endif()
if("${DOXYGEN_SKIP}" STREQUAL "true")
continue()
endif()
if ("${LINE}" MATCHES "^([ ]*)\\* @api (.*)$")
if("${LINE}" MATCHES "^([ ]*)\\* @api (.*)$")
set(LINE ${CMAKE_MATCH_2})
# By default, classes are not selected
if (NOT CLS_LEVEL)
if(NOT CLS_LEVEL)
set(API_SELECTED FALSE)
endif (NOT CLS_LEVEL)
endif()
if ("${APIUC}" STREQUAL "Template")
if("${APIUC}" STREQUAL "Template")
set(API_SELECTED TRUE)
if ("${LINE}" STREQUAL "none" OR "${LINE}" STREQUAL "-all")
if("${LINE}" STREQUAL "none" OR "${LINE}" STREQUAL "-all")
set(API_SELECTED FALSE)
endif ("${LINE}" STREQUAL "none" OR "${LINE}" STREQUAL "-all")
endif()
continue()
endif("${APIUC}" STREQUAL "Template")
endif()
if ("${LINE}" STREQUAL "none" OR "${LINE}" STREQUAL "-all")
if("${LINE}" STREQUAL "none" OR "${LINE}" STREQUAL "-all")
set(API_SELECTED FALSE)
elseif ("${LINE}" MATCHES "-${APILC}")
elseif("${LINE}" MATCHES "-${APILC}")
set(API_SELECTED FALSE)
elseif ("${LINE}" MATCHES "${APILC}")
elseif("${LINE}" MATCHES "${APILC}")
set(API_SELECTED TRUE)
endif ()
endif()
continue()
endif ("${LINE}" MATCHES "^([ ]*)\\* @api (.*)$")
endif()
# Remove the old squirrel stuff
if ("${LINE}" MATCHES "#ifdef DEFINE_SQUIRREL_CLASS")
if("${LINE}" MATCHES "#ifdef DEFINE_SQUIRREL_CLASS")
set(SQUIRREL_STUFF TRUE)
continue()
endif ("${LINE}" MATCHES "#ifdef DEFINE_SQUIRREL_CLASS")
if ("${LINE}" MATCHES "^#endif /\\* DEFINE_SQUIRREL_CLASS \\*/")
endif()
if("${LINE}" MATCHES "^#endif /\\* DEFINE_SQUIRREL_CLASS \\*/")
unset(SQUIRREL_STUFF)
continue()
endif ("${LINE}" MATCHES "^#endif /\\* DEFINE_SQUIRREL_CLASS \\*/")
if (SQUIRREL_STUFF)
endif()
if(SQUIRREL_STUFF)
continue()
endif (SQUIRREL_STUFF)
endif()
# Ignore forward declarations of classes
if ("${LINE}" MATCHES "^( *)class(.*);")
if("${LINE}" MATCHES "^( *)class(.*);")
continue()
endif ("${LINE}" MATCHES "^( *)class(.*);")
endif()
# We only want to have public functions exported for now
if ("${LINE}" MATCHES "^( *)class (.*) (: public|: protected|: private|:) ([^ ]*)")
if (NOT CLS_LEVEL)
if (NOT DEFINED API_SELECTED)
if("${LINE}" MATCHES "^( *)class (.*) (: public|: protected|: private|:) ([^ ]*)")
if(NOT CLS_LEVEL)
if(NOT DEFINED API_SELECTED)
message(WARNING "Class '${CMAKE_MATCH_2}' has no @api. It won't be published to any API.")
set(API_SELECTED FALSE)
endif (NOT DEFINED API_SELECTED)
endif()
unset(IS_PUBLIC)
unset(CLS_PARAM_0)
set(CLS_PARAM_1 1)
@ -153,132 +153,132 @@ foreach(LINE IN LISTS SOURCE_LINES)
unset(API_SELECTED)
set(CLS "${CMAKE_MATCH_2}")
set(SUPER_CLS "${CMAKE_MATCH_4}")
elseif (CLS_LEVEL EQUAL 1)
if (NOT DEFINED API_SELECTED)
elseif(CLS_LEVEL EQUAL 1)
if(NOT DEFINED API_SELECTED)
set(API_SELECTED ${CLS_IN_API})
endif (NOT API_SELECTED)
endif()
if (API_SELECTED)
if(API_SELECTED)
list(APPEND STRUCTS "${CLS}::${CMAKE_MATCH_2}")
endif (API_SELECTED)
endif()
unset(API_SELECTED)
endif ()
endif()
math(EXPR CLS_LEVEL "${CLS_LEVEL} + 1")
continue()
endif ("${LINE}" MATCHES "^( *)class (.*) (: public|: protected|: private|:) ([^ ]*)")
if ("${LINE}" MATCHES "^( *)public")
if (CLS_LEVEL EQUAL 1)
endif()
if("${LINE}" MATCHES "^( *)public")
if(CLS_LEVEL EQUAL 1)
set(IS_PUBLIC TRUE)
endif (CLS_LEVEL EQUAL 1)
endif()
continue()
endif ("${LINE}" MATCHES "^( *)public")
if ("${LINE}" MATCHES "^( *)protected")
if (CLS_LEVEL EQUAL 1)
endif()
if("${LINE}" MATCHES "^( *)protected")
if(CLS_LEVEL EQUAL 1)
unset(IS_PUBLIC)
endif (CLS_LEVEL EQUAL 1)
endif()
continue()
endif ("${LINE}" MATCHES "^( *)protected")
if ("${LINE}" MATCHES "^( *)private")
if (CLS_LEVEL EQUAL 1)
endif()
if("${LINE}" MATCHES "^( *)private")
if(CLS_LEVEL EQUAL 1)
unset(IS_PUBLIC)
endif (CLS_LEVEL EQUAL 1)
endif()
continue()
endif ("${LINE}" MATCHES "^( *)private")
endif()
# Ignore the comments
if ("${LINE}" MATCHES "^#")
if("${LINE}" MATCHES "^#")
continue()
endif ("${LINE}" MATCHES "^#")
if ("${LINE}" MATCHES "/\\*.*\\*/")
endif()
if("${LINE}" MATCHES "/\\*.*\\*/")
unset(COMMENT)
continue()
endif ("${LINE}" MATCHES "/\\*.*\\*/")
if ("${LINE}" MATCHES "/\\*")
endif()
if("${LINE}" MATCHES "/\\*")
set(COMMENT TRUE)
continue()
endif ("${LINE}" MATCHES "/\\*")
if ("${LINE}" MATCHES "\\*/")
endif()
if("${LINE}" MATCHES "\\*/")
unset(COMMENT)
continue()
endif ("${LINE}" MATCHES "\\*/")
if (COMMENT)
endif()
if(COMMENT)
continue()
endif (COMMENT)
endif()
# We need to make specialized conversions for structs
if ("${LINE}" MATCHES "^( *)struct ([^ ]*)")
if("${LINE}" MATCHES "^( *)struct ([^ ]*)")
math(EXPR CLS_LEVEL "${CLS_LEVEL} + 1")
# Check if we want to publish this struct
if (NOT DEFINED API_SELECTED)
if(NOT DEFINED API_SELECTED)
set(API_SELECTED ${CLS_IN_API})
endif (NOT DEFINED API_SELECTED)
if (NOT API_SELECTED)
endif()
if(NOT API_SELECTED)
unset(API_SELECTED)
continue()
endif (NOT API_SELECTED)
endif()
unset(API_SELECTED)
if (NOT IS_PUBLIC OR NOT CLS_LEVEL EQUAL 1)
if(NOT IS_PUBLIC OR NOT CLS_LEVEL EQUAL 1)
continue()
endif (NOT IS_PUBLIC OR NOT CLS_LEVEL EQUAL 1)
endif()
list(APPEND STRUCTS "${CLS}::${CMAKE_MATCH_2}")
continue()
endif ("${LINE}" MATCHES "^( *)struct ([^ ]*)")
endif()
# We need to make specialized conversions for enums
if ("${LINE}" MATCHES "^( *)enum ([^ ]*)")
if("${LINE}" MATCHES "^( *)enum ([^ ]*)")
math(EXPR CLS_LEVEL "${CLS_LEVEL} + 1")
# Check if we want to publish this enum
if (NOT DEFINED API_SELECTED)
if(NOT DEFINED API_SELECTED)
set(API_SELECTED ${CLS_IN_API})
endif (NOT DEFINED API_SELECTED)
if (NOT API_SELECTED)
endif()
if(NOT API_SELECTED)
unset(API_SELECTED)
continue()
endif (NOT API_SELECTED)
endif()
unset(API_SELECTED)
if (NOT IS_PUBLIC)
if(NOT IS_PUBLIC)
continue()
endif (NOT IS_PUBLIC)
endif()
set(IN_ENUM TRUE)
list(APPEND ENUMS "${CLS}::${CMAKE_MATCH_2}")
continue()
endif ("${LINE}" MATCHES "^( *)enum ([^ ]*)")
endif()
# Maybe the end of the class, if so we can start with the Squirrel export pretty soon
if ("${LINE}" MATCHES "};")
if("${LINE}" MATCHES "};")
math(EXPR CLS_LEVEL "${CLS_LEVEL} - 1")
if (CLS_LEVEL)
if(CLS_LEVEL)
unset(IN_ENUM)
continue()
endif (CLS_LEVEL)
endif()
if (CLS)
if(CLS)
set(START_SQUIRREL_DEFINE_ON_NEXT_LINE TRUE)
endif (CLS)
endif()
continue()
endif ("${LINE}" MATCHES "};")
endif()
# Empty/white lines. When we may do the Squirrel export, do that export.
if ("${LINE}" MATCHES "^([ ]*)$")
if (NOT START_SQUIRREL_DEFINE_ON_NEXT_LINE)
if("${LINE}" MATCHES "^([ ]*)$")
if(NOT START_SQUIRREL_DEFINE_ON_NEXT_LINE)
continue()
endif (NOT START_SQUIRREL_DEFINE_ON_NEXT_LINE)
endif()
if (NOT CLS_IN_API)
if(NOT CLS_IN_API)
reset_reader()
continue()
endif (NOT CLS_IN_API)
endif()
if (NOT HAS_FILEHEADER)
if(NOT HAS_FILEHEADER)
dump_fileheader()
set(HAS_FILEHEADER TRUE)
endif (NOT HAS_FILEHEADER)
endif()
unset(IS_PUBLIC)
unset(NAMESPACE_OPENED)
@ -288,38 +288,38 @@ foreach(LINE IN LISTS SOURCE_LINES)
string(APPEND SQUIRREL_EXPORT "\n")
if ("${APIUC}" STREQUAL "Template")
if("${APIUC}" STREQUAL "Template")
# First check whether we have enums to print
if (DEFINED ENUMS)
if (NOT NAMESPACE_OPENED)
if(DEFINED ENUMS)
if(NOT NAMESPACE_OPENED)
string(APPEND SQUIRREL_EXPORT "\nnamespace SQConvert {")
set(NAMESPACE_OPENED TRUE)
endif (NOT NAMESPACE_OPENED)
endif()
string(APPEND SQUIRREL_EXPORT "\n /* Allow enums to be used as Squirrel parameters */")
foreach(ENUM IN LISTS ENUMS)
string(APPEND SQUIRREL_EXPORT "\n template <> inline ${ENUM} GetParam(ForceType<${ENUM}>, HSQUIRRELVM vm, int index, SQAutoFreePointers *ptr) { SQInteger tmp; sq_getinteger(vm, index, &tmp); return (${ENUM})tmp; }")
string(APPEND SQUIRREL_EXPORT "\n template <> inline int Return<${ENUM}>(HSQUIRRELVM vm, ${ENUM} res) { sq_pushinteger(vm, (int32)res); return 1; }")
endforeach(ENUM)
endif (DEFINED ENUMS)
endforeach()
endif()
# Then check whether we have structs/classes to print
if (DEFINED STRUCTS)
if (NOT NAMESPACE_OPENED)
if(DEFINED STRUCTS)
if(NOT NAMESPACE_OPENED)
string(APPEND SQUIRREL_EXPORT "\nnamespace SQConvert {")
set(NAMESPACE_OPENED TRUE)
endif (NOT NAMESPACE_OPENED)
endif()
string(APPEND SQUIRREL_EXPORT "\n /* Allow inner classes/structs to be used as Squirrel parameters */")
foreach(STRUCT IN LISTS STRUCTS)
dump_class_templates(${STRUCT})
endforeach(STRUCT)
endif (DEFINED STRUCTS)
endforeach()
endif()
if (NOT NAMESPACE_OPENED)
if(NOT NAMESPACE_OPENED)
string(APPEND SQUIRREL_EXPORT "\nnamespace SQConvert {")
set(NAMESPACE_OPENED TRUE)
else (NOT NAMESPACE_OPENED)
else()
string(APPEND SQUIRREL_EXPORT "\n")
endif (NOT NAMESPACE_OPENED)
endif()
string(APPEND SQUIRREL_EXPORT "\n /* Allow ${CLS} to be used as Squirrel parameter */")
dump_class_templates(${CLS})
@ -327,7 +327,7 @@ foreach(LINE IN LISTS SOURCE_LINES)
reset_reader()
continue()
endif ("${APIUC}" STREQUAL "Template")
endif()
string(APPEND SQUIRREL_EXPORT "\n")
string(APPEND SQUIRREL_EXPORT "\ntemplate <> const char *GetClassName<${CLS}, ST_${APIUC}>() { return \"${API_CLS}\"; }")
@ -337,61 +337,61 @@ foreach(LINE IN LISTS SOURCE_LINES)
string(APPEND SQUIRREL_EXPORT "\nvoid SQ${API_CLS}_Register(Squirrel *engine)")
string(APPEND SQUIRREL_EXPORT "\n{")
string(APPEND SQUIRREL_EXPORT "\n DefSQClass<${CLS}, ST_${APIUC}> SQ${API_CLS}(\"${API_CLS}\");")
if ("${SUPER_CLS}" STREQUAL "Text" OR "${SUPER_CLS}" STREQUAL "ScriptObject" OR "${SUPER_CLS}" STREQUAL "AIAbstractiveList::Valuator")
if("${SUPER_CLS}" STREQUAL "Text" OR "${SUPER_CLS}" STREQUAL "ScriptObject" OR "${SUPER_CLS}" STREQUAL "AIAbstractiveList::Valuator")
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.PreRegister(engine);")
else ("${SUPER_CLS}" STREQUAL "Text" OR "${SUPER_CLS}" STREQUAL "ScriptObject" OR "${SUPER_CLS}" STREQUAL "AIAbstractiveList::Valuator")
else()
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.PreRegister(engine, \"${API_SUPER_CLS}\");")
endif ("${SUPER_CLS}" STREQUAL "Text" OR "${SUPER_CLS}" STREQUAL "ScriptObject" OR "${SUPER_CLS}" STREQUAL "AIAbstractiveList::Valuator")
if (NOT "${SUPER_CLS}" STREQUAL "ScriptEvent")
if ("${CLS_PARAM_2}" STREQUAL "v")
endif()
if(NOT "${SUPER_CLS}" STREQUAL "ScriptEvent")
if("${CLS_PARAM_2}" STREQUAL "v")
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.AddSQAdvancedConstructor(engine);")
else ("${CLS_PARAM_2}" STREQUAL "v")
else()
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.AddConstructor<void (${CLS}::*)(${CLS_PARAM_0}), ${CLS_PARAM_1}>(engine, \"${CLS_PARAM_2}\");")
endif ("${CLS_PARAM_2}" STREQUAL "v")
endif (NOT "${SUPER_CLS}" STREQUAL "ScriptEvent")
endif()
endif()
string(APPEND SQUIRREL_EXPORT "\n")
# Enum values
set(MLEN 0)
foreach(ENUM_VALUE IN LISTS ENUM_VALUES)
string(LENGTH "${ENUM_VALUE}" LEN)
if (MLEN LESS LEN)
if(MLEN LESS LEN)
set(MLEN ${LEN})
endif (MLEN LESS LEN)
endforeach(ENUM_VALUE)
endif()
endforeach()
foreach(ENUM_VALUE IN LISTS ENUM_VALUES)
string(LENGTH "${ENUM_VALUE}" LEN)
math(EXPR LEN "${MLEN} - ${LEN}")
unset(SPACES)
foreach(i RANGE ${LEN})
string(APPEND SPACES " ")
endforeach(i)
endforeach()
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.DefSQConst(engine, ${CLS}::${ENUM_VALUE},${SPACES}\"${ENUM_VALUE}\");")
endforeach(ENUM_VALUE)
if (MLEN)
endforeach()
if(MLEN)
string(APPEND SQUIRREL_EXPORT "\n")
endif (MLEN)
endif()
# Const values
set(MLEN 0)
foreach(CONST_VALUE IN LISTS CONST_VALUES)
string(LENGTH "${CONST_VALUE}" LEN)
if (MLEN LESS LEN)
if(MLEN LESS LEN)
set(MLEN ${LEN})
endif (MLEN LESS LEN)
endforeach(CONST_VALUE)
endif()
endforeach()
foreach(CONST_VALUE IN LISTS CONST_VALUES)
string(LENGTH "${CONST_VALUE}" LEN)
math(EXPR LEN "${MLEN} - ${LEN}")
unset(SPACES)
foreach(i RANGE ${LEN})
string(APPEND SPACES " ")
endforeach(i)
endforeach()
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.DefSQConst(engine, ${CLS}::${CONST_VALUE},${SPACES}\"${CONST_VALUE}\");")
endforeach(CONST_VALUE)
if (MLEN)
endforeach()
if(MLEN)
string(APPEND SQUIRREL_EXPORT "\n")
endif (MLEN)
endif()
# Mapping of OTTD strings to errors
set(MLEN 0)
@ -399,10 +399,10 @@ foreach(LINE IN LISTS SOURCE_LINES)
string(REPLACE ":" ";" ENUM_STRING_TO_ERROR "${ENUM_STRING_TO_ERROR}")
list(GET ENUM_STRING_TO_ERROR 0 ENUM_STRING)
string(LENGTH "${ENUM_STRING}" LEN)
if (MLEN LESS LEN)
if(MLEN LESS LEN)
set(MLEN ${LEN})
endif (MLEN LESS LEN)
endforeach(ENUM_STRING_TO_ERROR)
endif()
endforeach()
foreach(ENUM_STRING_TO_ERROR IN LISTS ENUM_STRING_TO_ERRORS)
string(REPLACE ":" ";" ENUM_STRING_TO_ERROR "${ENUM_STRING_TO_ERROR}")
list(GET ENUM_STRING_TO_ERROR 0 ENUM_STRING)
@ -412,33 +412,33 @@ foreach(LINE IN LISTS SOURCE_LINES)
unset(SPACES)
foreach(i RANGE ${LEN})
string(APPEND SPACES " ")
endforeach(i)
endforeach()
string(APPEND SQUIRREL_EXPORT "\n ScriptError::RegisterErrorMap(${ENUM_STRING},${SPACES}${CLS}::${ENUM_ERROR});")
endforeach(ENUM_STRING_TO_ERROR)
if (MLEN)
endforeach()
if(MLEN)
string(APPEND SQUIRREL_EXPORT "\n")
endif (MLEN)
endif()
# Mapping of errors to human 'readable' strings.
set(MLEN 0)
foreach(ENUM_ERROR_TO_STRING IN LISTS ENUM_ERROR_TO_STRINGS)
string(LENGTH "${ENUM_ERROR_TO_STRING}" LEN)
if (MLEN LESS LEN)
if(MLEN LESS LEN)
set(MLEN ${LEN})
endif (MLEN LESS LEN)
endforeach(ENUM_ERROR_TO_STRING)
endif()
endforeach()
foreach(ENUM_ERROR_TO_STRING IN LISTS ENUM_ERROR_TO_STRINGS)
string(LENGTH "${ENUM_ERROR_TO_STRING}" LEN)
math(EXPR LEN "${MLEN} - ${LEN}")
unset(SPACES)
foreach(i RANGE ${LEN})
string(APPEND SPACES " ")
endforeach(i)
endforeach()
string(APPEND SQUIRREL_EXPORT "\n ScriptError::RegisterErrorMapString(${CLS}::${ENUM_ERROR_TO_STRING},${SPACES}\"${ENUM_ERROR_TO_STRING}\");")
endforeach(ENUM_ERROR_TO_STRING)
if (MLEN)
endforeach()
if(MLEN)
string(APPEND SQUIRREL_EXPORT "\n")
endif (MLEN)
endif()
# Static methods
set(MLEN 0)
@ -446,10 +446,10 @@ foreach(LINE IN LISTS SOURCE_LINES)
string(REPLACE ":" ";" STATIC_METHOD "${STATIC_METHOD}")
list(GET STATIC_METHOD 0 FUNCNAME)
string(LENGTH "${FUNCNAME}" LEN)
if (MLEN LESS LEN)
if(MLEN LESS LEN)
set(MLEN ${LEN})
endif (MLEN LESS LEN)
endforeach(STATIC_METHOD)
endif()
endforeach()
foreach(STATIC_METHOD IN LISTS STATIC_METHODS)
string(REPLACE ":" ";" STATIC_METHOD "${STATIC_METHOD}")
list(GET STATIC_METHOD 0 FUNCNAME)
@ -457,26 +457,26 @@ foreach(LINE IN LISTS SOURCE_LINES)
list(GET STATIC_METHOD 2 TYPES)
string(LENGTH "${FUNCNAME}" LEN)
math(EXPR LEN "${MLEN} - ${LEN}")
if ("${TYPES}" STREQUAL "v")
if (LEN GREATER 8)
if("${TYPES}" STREQUAL "v")
if(LEN GREATER 8)
math(EXPR LEN "${LEN} - 8")
else (LEN GREATER 8)
else()
set(LEN 0)
endif (LEN GREATER 8)
endif ("${TYPES}" STREQUAL "v")
endif()
endif()
unset(SPACES)
foreach(i RANGE ${LEN})
string(APPEND SPACES " ")
endforeach(i)
if ("${TYPES}" STREQUAL "v")
endforeach()
if("${TYPES}" STREQUAL "v")
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.DefSQAdvancedStaticMethod(engine, &${CLS}::${FUNCNAME},${SPACES}\"${FUNCNAME}\");")
else ("${TYPES}" STREQUAL "v")
else()
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.DefSQStaticMethod(engine, &${CLS}::${FUNCNAME},${SPACES}\"${FUNCNAME}\",${SPACES}${ARGC}, \"${TYPES}\");")
endif ("${TYPES}" STREQUAL "v")
endforeach(STATIC_METHOD)
if (MLEN)
endif()
endforeach()
if(MLEN)
string(APPEND SQUIRREL_EXPORT "\n")
endif (MLEN)
endif()
# Non-static methods
set(MLEN 0)
@ -484,10 +484,10 @@ foreach(LINE IN LISTS SOURCE_LINES)
string(REPLACE ":" ";" METHOD "${METHOD}")
list(GET METHOD 0 FUNCNAME)
string(LENGTH "${FUNCNAME}" LEN)
if (MLEN LESS LEN)
if(MLEN LESS LEN)
set(MLEN ${LEN})
endif (MLEN LESS LEN)
endforeach(METHOD)
endif()
endforeach()
foreach(METHOD IN LISTS METHODS)
string(REPLACE ":" ";" METHOD "${METHOD}")
list(GET METHOD 0 FUNCNAME)
@ -495,26 +495,26 @@ foreach(LINE IN LISTS SOURCE_LINES)
list(GET METHOD 2 TYPES)
string(LENGTH "${FUNCNAME}" LEN)
math(EXPR LEN "${MLEN} - ${LEN}")
if ("${TYPES}" STREQUAL "v")
if (LEN GREATER 8)
if("${TYPES}" STREQUAL "v")
if(LEN GREATER 8)
math(EXPR LEN "${LEN} - 8")
else (LEN GREATER 8)
else()
set(LEN 0)
endif (LEN GREATER 8)
endif ("${TYPES}" STREQUAL "v")
endif()
endif()
unset(SPACES)
foreach(i RANGE ${LEN})
string(APPEND SPACES " ")
endforeach(i)
if ("${TYPES}" STREQUAL "v")
endforeach()
if("${TYPES}" STREQUAL "v")
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.DefSQAdvancedMethod(engine, &${CLS}::${FUNCNAME},${SPACES}\"${FUNCNAME}\");")
else ("${TYPES}" STREQUAL "v")
else()
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.DefSQMethod(engine, &${CLS}::${FUNCNAME},${SPACES}\"${FUNCNAME}\",${SPACES}${ARGC}, \"${TYPES}\");")
endif ("${TYPES}" STREQUAL "v")
endforeach(METHOD)
if (MLEN)
endif()
endforeach()
if(MLEN)
string(APPEND SQUIRREL_EXPORT "\n")
endif (MLEN)
endif()
string(APPEND SQUIRREL_EXPORT "\n SQ${API_CLS}.PostRegister(engine);")
string(APPEND SQUIRREL_EXPORT "\n}")
@ -522,64 +522,64 @@ foreach(LINE IN LISTS SOURCE_LINES)
reset_reader()
continue()
endif ("${LINE}" MATCHES "^([ ]*)$")
endif()
# Skip non-public functions
if (NOT IS_PUBLIC)
if(NOT IS_PUBLIC)
continue()
endif (NOT IS_PUBLIC)
endif()
# Add enums
if (IN_ENUM)
if(IN_ENUM)
string(REGEX MATCH "([^, ]+)" ENUM_VALUE "${LINE}")
list(APPEND ENUM_VALUES "${ENUM_VALUE}")
# Check if this a special error enum
list(GET ENUMS -1 ENUM)
if ("${ENUM}" MATCHES ".*::ErrorMessages")
if("${ENUM}" MATCHES ".*::ErrorMessages")
# syntax:
# enum ErrorMessages {
# ERR_SOME_ERROR, // [STR_ITEM1, STR_ITEM2, ...]
# }
# Set the mappings
if ("${LINE}" MATCHES "\\[(.*)\\]")
if("${LINE}" MATCHES "\\[(.*)\\]")
string(REGEX REPLACE "[ ]" "" MAPPINGS "${CMAKE_MATCH_1}")
string(REPLACE "," ";" MAPPINGS "${MAPPINGS}")
foreach(MAPPING IN LISTS MAPPINGS)
list(APPEND ENUM_STRING_TO_ERRORS "${MAPPING}:${ENUM_VALUE}")
endforeach(MAPPING)
endforeach()
list(APPEND ENUM_ERROR_TO_STRINGS "${ENUM_VALUE}")
endif ("${LINE}" MATCHES "\\[(.*)\\]")
endif ("${ENUM}" MATCHES ".*::ErrorMessages")
endif()
endif()
continue()
endif (IN_ENUM)
endif()
# Add a const (non-enum) value
if ("${LINE}" MATCHES "^[ ]*static const [^ ]+ ([^ ]+) = -?\\(?[^ ]*\\)?[^ ]+;")
if("${LINE}" MATCHES "^[ ]*static const [^ ]+ ([^ ]+) = -?\\(?[^ ]*\\)?[^ ]+;")
list(APPEND CONST_VALUES "${CMAKE_MATCH_1}")
continue()
endif ("${LINE}" MATCHES "^[ ]*static const [^ ]+ ([^ ]+) = -?\\(?[^ ]*\\)?[^ ]+;")
endif()
# Add a method to the list
if ("${LINE}" MATCHES "^.*\\(.*\\).*$")
if (NOT CLS_LEVEL EQUAL 1)
if("${LINE}" MATCHES "^.*\\(.*\\).*$")
if(NOT CLS_LEVEL EQUAL 1)
continue()
endif (NOT CLS_LEVEL EQUAL 1)
if ("${LINE}" MATCHES "~")
if (DEFINED API_SELECTED)
endif()
if("${LINE}" MATCHES "~")
if(DEFINED API_SELECTED)
message(WARNING "Destructor for '${CLS}' has @api. Tag ignored.")
unset(API_SELECTED)
endif (DEFINED API_SELECTED)
endif()
continue()
endif ("${LINE}" MATCHES "~")
endif()
unset(IS_STATIC)
if ("${LINE}" MATCHES "static")
if("${LINE}" MATCHES "static")
set(IS_STATIC TRUE)
endif ("${LINE}" MATCHES "static")
endif()
string(REGEX REPLACE "(virtual|static|const)[ ]+" "" LINE "${LINE}")
string(REGEX REPLACE "{.*" "" LINE "${LINE}")
@ -593,75 +593,75 @@ foreach(LINE IN LISTS SOURCE_LINES)
string(REGEX MATCH "([^ ]+)( ([^ ]+))?" RESULT "${LINE}")
set(FUNCTYPE "${CMAKE_MATCH_1}")
set(FUNCNAME "${CMAKE_MATCH_3}")
if ("${FUNCTYPE}" STREQUAL "${CLS}" AND NOT FUNCNAME)
if (DEFINED API_SELECTED)
if("${FUNCTYPE}" STREQUAL "${CLS}" AND NOT FUNCNAME)
if(DEFINED API_SELECTED)
message(WARNING "Constructor for '${CLS}' has @api. Tag ignored.")
unset(API_SELECTED)
endif (DEFINED API_SELECTED)
endif()
set(CLS_PARAM_0 "${PARAM_S}")
if (NOT PARAM_S)
if(NOT PARAM_S)
continue()
endif (NOT PARAM_S)
elseif (NOT FUNCNAME)
endif()
elseif(NOT FUNCNAME)
continue()
endif ()
endif()
string(REPLACE "," ";" PARAMS "${PARAM_S}")
if (IS_STATIC)
if(IS_STATIC)
set(TYPES ".")
else (IS_STATIC)
else()
set(TYPES "x")
endif (IS_STATIC)
endif()
set(LEN 1)
foreach(PARAM IN LISTS PARAMS)
math(EXPR LEN "${LEN} + 1")
string(STRIP "${PARAM}" PARAM)
if ("${PARAM}" MATCHES "\\*|&")
if ("${PARAM}" MATCHES "^char")
if("${PARAM}" MATCHES "\\*|&")
if("${PARAM}" MATCHES "^char")
# Many types can be converted to string, so use '.', not 's'. (handled by our glue code)
string(APPEND TYPES ".")
elseif ("${PARAM}" MATCHES "^void")
elseif("${PARAM}" MATCHES "^void")
string(APPEND TYPES "p")
elseif ("${PARAM}" MATCHES "^Array")
elseif("${PARAM}" MATCHES "^Array")
string(APPEND TYPES "a")
elseif ("${PARAM}" MATCHES "^struct Array")
elseif("${PARAM}" MATCHES "^struct Array")
string(APPEND TYPES "a")
elseif ("${PARAM}" MATCHES "^Text")
elseif("${PARAM}" MATCHES "^Text")
string(APPEND TYPES ".")
else ()
else()
string(APPEND TYPES "x")
endif ()
elseif ("${PARAM}" MATCHES "^bool")
endif()
elseif("${PARAM}" MATCHES "^bool")
string(APPEND TYPES "b")
elseif ("${PARAM}" MATCHES "^HSQUIRRELVM")
elseif("${PARAM}" MATCHES "^HSQUIRRELVM")
set(TYPES "v")
else ()
else()
string(APPEND TYPES "i")
endif ()
endforeach(PARAM)
endif()
endforeach()
# Check if we want to publish this function
if (NOT DEFINED API_SELECTED)
if(NOT DEFINED API_SELECTED)
set(API_SELECTED ${CLS_IN_API})
endif (NOT DEFINED API_SELECTED)
if (NOT API_SELECTED)
endif()
if(NOT API_SELECTED)
unset(API_SELECTED)
continue()
endif (NOT API_SELECTED)
endif()
unset(API_SELECTED)
if ("${FUNCTYPE}" STREQUAL "${CLS}" AND NOT FUNCNAME)
if("${FUNCTYPE}" STREQUAL "${CLS}" AND NOT FUNCNAME)
set(CLS_PARAM_1 ${LEN})
set(CLS_PARAM_2 "${TYPES}")
elseif ("${FUNCNAME}" MATCHES "^_" AND NOT "${TYPES}" STREQUAL "v")
elseif (IS_STATIC)
elseif("${FUNCNAME}" MATCHES "^_" AND NOT "${TYPES}" STREQUAL "v")
elseif(IS_STATIC)
list(APPEND STATIC_METHODS "${FUNCNAME}:${LEN}:${TYPES}")
else ()
else()
list(APPEND METHODS "${FUNCNAME}:${LEN}:${TYPES}")
endif ()
endif()
continue()
endif ("${LINE}" MATCHES "^.*\\(.*\\).*$")
endforeach(LINE)
endif()
endforeach()
configure_file(${SCRIPT_API_SOURCE_FILE} ${SCRIPT_API_BINARY_FILE})

@ -1,17 +1,17 @@
cmake_minimum_required(VERSION 3.5)
if (NOT INCLUDES_SOURCE_FILE)
if(NOT INCLUDES_SOURCE_FILE)
message(FATAL_ERROR "Script needs INCLUDES_SOURCE_FILE defined")
endif (NOT INCLUDES_SOURCE_FILE)
if (NOT INCLUDES_BINARY_FILE)
endif()
if(NOT INCLUDES_BINARY_FILE)
message(FATAL_ERROR "Script needs INCLUDES_BINARY_FILE defined")
endif (NOT INCLUDES_BINARY_FILE)
if (NOT APILC)
endif()
if(NOT APILC)
message(FATAL_ERROR "Script needs APILC defined")
endif (NOT APILC)
if (NOT APIUC)
endif()
if(NOT APIUC)
message(FATAL_ERROR "Script needs APIUC defined")
endif (NOT APIUC)
endif()
set(ARGC 1)
set(ARG_READ NO)
@ -21,32 +21,32 @@ set(ARG_READ NO)
while(ARGC LESS CMAKE_ARGC)
set(ARG ${CMAKE_ARGV${ARGC}})
if (ARG_READ)
if(ARG_READ)
list(APPEND SCRIPT_API_BINARY_FILES "${ARG}")
endif (ARG_READ)
endif()
if (ARG STREQUAL "--")
if(ARG STREQUAL "--")
set(ARG_READ YES)
endif (ARG STREQUAL "--")
endif()
math(EXPR ARGC "${ARGC} + 1")
endwhile()
foreach(FILE IN LISTS SCRIPT_API_BINARY_FILES)
file(STRINGS "${FILE}" LINES REGEX "^void SQ${APIUC}.*_Register\\(Squirrel \\*engine\\)$")
if (LINES)
if(LINES)
string(REGEX REPLACE ".*api/${APILC}/(.*)" "#include \"\\1\"" FILE "${FILE}")
list(APPEND SQUIRREL_INCLUDES "${FILE}")
foreach(LINE IN LISTS LINES)
if ("${LINE}" MATCHES "SQ${APIUC}(List|Controller)_Register")
if("${LINE}" MATCHES "SQ${APIUC}(List|Controller)_Register")
continue()
endif ("${LINE}" MATCHES "SQ${APIUC}(List|Controller)_Register")
endif()
string(REGEX REPLACE "^.*void " " " LINE "${LINE}")
string(REGEX REPLACE "Squirrel \\*" "" LINE "${LINE}")
list(APPEND SQUIRREL_REGISTER "${LINE}")
endforeach(LINE)
endif (LINES)
endforeach(FILE)
endforeach()
endif()
endforeach()
list(SORT SQUIRREL_INCLUDES)
string(REPLACE ";" "\n" SQUIRREL_INCLUDES "${SQUIRREL_INCLUDES}")

@ -28,13 +28,13 @@ if (UNIX AND NOT APPLE)
endif ()
# Done by the subdirectories, if nforenum / grfcodec is installed
if (GRFCODEC_FOUND)
if(GRFCODEC_FOUND)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/openttd.grf PROPERTIES GENERATED TRUE)
set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/orig_extra.grf PROPERTIES GENERATED TRUE)
list(APPEND BASESET_BINARY_FILES openttd.grf)
list(APPEND BASESET_BINARY_FILES orig_extra.grf)
endif (GRFCODEC_FOUND)
endif()
set(BASESET_EXTRAGRF_FILE ${CMAKE_CURRENT_SOURCE_DIR}/orig_extra.grf)
@ -62,7 +62,7 @@ foreach(BASESET_SOURCE_FILE IN LISTS BASESET_SOURCE_FILES)
)
list(APPEND BASESET_BINARY_FILES ${BASESET_BINARY_FILE})
endforeach(BASESET_SOURCE_FILE)
endforeach()
# Walk over all the other baseset files, and generate a command to copy them
foreach(BASESET_OTHER_SOURCE_FILE IN LISTS BASESET_OTHER_SOURCE_FILES)
@ -78,7 +78,7 @@ foreach(BASESET_OTHER_SOURCE_FILE IN LISTS BASESET_OTHER_SOURCE_FILES)
)
list(APPEND BASESET_BINARY_FILES ${BASESET_OTHER_BINARY_FILE})
endforeach(BASESET_OTHER_SOURCE_FILE)
endforeach()
# Create a new target which generates all baseset metadata files
add_custom_target_timestamp(baseset_files

@ -3,7 +3,7 @@
# This is mainly because not many people have both of these tools installed,
# so it is cheaper to cache them in git, and only regenerate when you are
# working on it / have the tools installed.
if (GRFCODEC_FOUND)
if(GRFCODEC_FOUND)
include(CreateGrfCommand)
create_grf_command()
endif (GRFCODEC_FOUND)
endif()

@ -3,7 +3,7 @@
# This is mainly because not many people have both of these tools installed,
# so it is cheaper to cache them in git, and only regenerate when you are
# working on it / have the tools installed.
if (GRFCODEC_FOUND)
if(GRFCODEC_FOUND)
include(CreateGrfCommand)
create_grf_command(
# We share some files with 'openttd' grf
@ -11,4 +11,4 @@ if (GRFCODEC_FOUND)
${CMAKE_CURRENT_SOURCE_DIR}/../openttd/canals.png
${CMAKE_CURRENT_SOURCE_DIR}/../openttd/chars.png
)
endif (GRFCODEC_FOUND)
endif()

@ -24,11 +24,11 @@ add_files(
viewport_sprite_sorter_sse4.cpp
CONDITION SSE_FOUND
)
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
set_compile_flags(
viewport_sprite_sorter_sse4.cpp
COMPILE_FLAGS -msse4.1)
endif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
endif()
add_files(
aircraft.h

@ -32,7 +32,7 @@ add_files(
CONDITION NOT OPTION_DEDICATED AND SSE_FOUND
)
if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
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
32bpp_sse2.cpp
@ -44,7 +44,7 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clan
32bpp_anim_sse4.cpp
32bpp_sse4.cpp
COMPILE_FLAGS -msse4.1)
endif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
endif()
add_files(
base.hpp

@ -56,6 +56,7 @@ public:
void ScheduleErrorMessage(const ErrorMessageData &data);
void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel wl, int x = 0, int y = 0, const GRFFile *textref_stack_grffile = nullptr, uint textref_stack_size = 0, const uint32 *textref_stack = nullptr, StringID extra_msg = INVALID_STRING_ID);
bool HideActiveErrorMessage();
void ClearErrorMessages();
void ShowFirstError();
void UnshowCriticalError();

@ -335,13 +335,6 @@ public:
if (_window_system_initialized) ShowFirstError();
}
EventState OnKeyPress(WChar key, uint16 keycode) override
{
if (keycode != WKC_SPACE) return ES_NOT_HANDLED;
delete this;
return ES_HANDLED;
}
/**
* Check whether the currently shown error message was critical or not.
* @return True iff the message was critical.
@ -449,6 +442,18 @@ void ShowErrorMessage(StringID summary_msg, StringID detailed_msg, WarningLevel
}
}
/**
* Close active error message window
* @return true if a window was closed.
*/
bool HideActiveErrorMessage() {
ErrmsgWindow *w = (ErrmsgWindow*)FindWindowById(WC_ERRMSG, 0);
if (w == nullptr) return false;
delete w;
return true;
}
/**
* Schedule a list of errors.
* Note: This does not try to display the error now. This is useful if the window system is not yet running.

@ -1254,14 +1254,14 @@ protected:
CargoID cargo_filter[NUM_CARGO + 2]; ///< Available cargo filters; CargoID or CF_ANY or CF_NONE
StringID cargo_filter_texts[NUM_CARGO + 3]; ///< Texts for filter_cargo, terminated by INVALID_STRING_ID
CargoID produced_cargo_filter_criteria; ///< Selected produced cargo filter
CargoID accepted_cargo_filter_criteria; ///< Selected accepted cargo filter
byte produced_cargo_filter_criteria; ///< Selected produced cargo filter index
byte accepted_cargo_filter_criteria; ///< Selected accepted cargo filter index
/**
* Set cargo filter list item index.
* @param index The index of the cargo to be set
*/
void SetProducedCargoFilterIndex(int index)
void SetProducedCargoFilterIndex(byte index)
{
if (this->produced_cargo_filter_criteria != index) {
this->produced_cargo_filter_criteria = index;
@ -1278,7 +1278,7 @@ protected:
* Set cargo filter list item index.
* @param index The index of the cargo to be set
*/
void SetAcceptedCargoFilterIndex(int index)
void SetAcceptedCargoFilterIndex(byte index)
{
if (this->accepted_cargo_filter_criteria != index) {
this->accepted_cargo_filter_criteria = index;
@ -1296,7 +1296,7 @@ protected:
*/
void SetCargoFilterArray()
{
uint filter_items = 0;
byte filter_items = 0;
/* Add item for disabling filtering. */
this->cargo_filter[filter_items] = CF_ANY;

@ -79,7 +79,7 @@ foreach(LANG_SOURCE_FILE IN LISTS LANG_SOURCE_FILES)
)
list(APPEND LANG_BINARY_FILES ${LANG_BINARY_FILE})
endforeach(LANG_SOURCE_FILE)
endforeach()
# Create a new target which compiles all language files
add_custom_target(language_files

@ -188,6 +188,7 @@ STR_COLOUR_ORANGE :Laranja
STR_COLOUR_BROWN :Marrom
STR_COLOUR_GREY :Cinza
STR_COLOUR_WHITE :Branco
STR_COLOUR_RANDOM :Aleatório
# Units used in OpenTTD
STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph
@ -234,6 +235,8 @@ STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Selecion
STR_BUTTON_SORT_BY :{BLACK}Classificar por
STR_BUTTON_LOCATION :{BLACK}Local
STR_BUTTON_RENAME :{BLACK}Renomear
STR_BUTTON_CATCHMENT :{BLACK}Cobertura
STR_TOOLTIP_CATCHMENT :{BLACK}Alternar a visão da área de cobertura
STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Fechar janela
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Título da janela - arraste isto para mover a janela
@ -262,6 +265,7 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Ao ativa
STR_BUTTON_DEFAULT :{BLACK}Padrão
STR_BUTTON_CANCEL :{BLACK}Cancelar
STR_BUTTON_OK :{BLACK}OK
STR_WARNING_PASSWORD_SECURITY :{YELLOW}Aviso: os administradores do servidor podem ler qualquer texto inserido aqui.
# On screen keyboard window
STR_OSK_KEYBOARD_LAYOUT :`1234567890-=\qwertyuiop[]asdfghjkl;' zxcvbnm,./ .
@ -335,6 +339,7 @@ STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Ampliar
STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Reduzir a visão
STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Construir linha ferroviária
STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Construir rodovias
STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Construir bondes
STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Construir docas
STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Construir aeroportos
STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Abrir a barra de paisagismo para elevar ou abaixar terreno, plantar árvores, etc.
@ -463,6 +468,7 @@ STR_TOOLBAR_SOUND_MUSIC :Som/música
############ range for message menu starts
STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :Última mensagem/notícia
STR_NEWS_MENU_MESSAGE_HISTORY_MENU :Histórico de Mensagens
STR_NEWS_MENU_DELETE_ALL_MESSAGES :Apagar todas as mensagens
############ range ends here
############ range for about menu starts
@ -857,6 +863,7 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLAC
STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE}
STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nov{G o a} {STRING} já está disponível! - {ENGINE}
STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Abrir a janela do grupo focado no grupo do veículo
STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} não aceita mais {STRING}
STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} não aceita mais {STRING} ou {STRING}
@ -923,6 +930,11 @@ STR_GAME_OPTIONS_CURRENCY_CUSTOM :Personalizado..
STR_GAME_OPTIONS_CURRENCY_GEL :Lari da Georgia
STR_GAME_OPTIONS_CURRENCY_IRR :Rial Iraniano
STR_GAME_OPTIONS_CURRENCY_RUB :Novo Rublo Russo (RUB)
STR_GAME_OPTIONS_CURRENCY_MXN :Peso Mexicano (MXN)
STR_GAME_OPTIONS_CURRENCY_NTD :Novo dólar de Taiwan (NTD)
STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi chinês (CNY)
STR_GAME_OPTIONS_CURRENCY_HKD :Dólar de Hong Kong (HKD)
STR_GAME_OPTIONS_CURRENCY_INR :Rúpia Indiana (INR)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Automóveis
@ -985,7 +997,10 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Dobro
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Quádruplo
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Tamanho da fonte
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Tamanho duplo
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Tamanho quádruplo
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Conjunto de gráficos base
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Selecionar o conjunto de gráficos base para usar
@ -1169,6 +1184,7 @@ STR_CONFIG_SETTING_AUTOSLOPE :Permitir paisag
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permite paisagismo sob edifícios e vias sem precisar removê-las
STR_CONFIG_SETTING_CATCHMENT :Dimensionamento mais realista das áreas de abrangência: {STRING}
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Exibe áreas de abrangência de para diferentes tipos de estações e aeroportos
STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :Quando habilitado, os setores com estações conectadas (como plataformas de petróleo) também podem ser atendidos por estações de propriedade da empresa construídas nas proximidades. Quando desativados, esses setores só podem ser atendidos por suas estações anexas. Qualquer estação próxima da empresa não será capaz de atendê-los, nem a estação anexa servirá qualquer outra coisa que não seja a indústria
STR_CONFIG_SETTING_EXTRADYNAMITE :Permitir a remoção de mais rodovias, pontes, etc. das cidades: {STRING}
STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Torna mais fácil remover infraestrutura e edifícios de cidades
STR_CONFIG_SETTING_TRAIN_LENGTH :Tamanho máximo de trens: {STRING}
@ -1254,6 +1270,7 @@ STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Impossí
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Manutenção de Infraestrutura: {STRING}
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Quando ativado, infraestrutura gera custos de manutenção. O custo aumenta proporcionalmente à malha de transportes, afetando companhias maiores mais do que as menores
STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :Escolha a cor inicial para a empresa
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :Aeroportos nunca saem de linha: {STRING}
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Ativando essa config. mantém todos os tipos de aeroportos disponíveis à construção após sua introdução
@ -1288,6 +1305,7 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL :Exibir populaç
STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Exibe a população das cidades nos nomes, no mapa
STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Espessura das linhas nos gráficos: {STRING}
STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Espessura da linha nos gráficos. Linhas finas são mais precisas, enquanto linhas grossas são mais fáceis de distinguir.
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Adicione uma linha à janela de construção do veículo, mostrando de qual NewGRF o veículo selecionado vem.
STR_CONFIG_SETTING_LANDSCAPE :Terreno: {STRING}
STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :O terreno define a jogabilidade básica com diferentes cargas e requerimentos para o crescimento das cidades. NewGRF's e Scripts de Jogo permitem um controle mais fino
@ -1464,6 +1482,7 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Permitir IA em
STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Permite jogadores controlados pelo computador participar em jogos multijogador
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :#opcodes antes de scripts serem suspensos: {STRING}
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Número máximo de passos de computação que um script pode tomar em um turno
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Quanta memória um único script pode consumir antes de ser encerrado à força. Isso pode precisar ser aumentado para mapas grandes.
STR_CONFIG_SETTING_SERVINT_ISPERCENT :Os intervalos de serviço são em percentagem: {STRING}
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Define se a manutenção de veículos é ativada pelo tempo passado desde a última manutenção ou quando a confiabilidade alcança um certo valor
@ -1522,6 +1541,8 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Completa
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Noticias coloridas aparecem em: {STRING}
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Ano a partir do qual os jornais são impressos em cor. Antes disso, serão em preto-e-branco
STR_CONFIG_SETTING_STARTING_YEAR :Data de início: {STRING}
STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Ano em que o jogo termina para fins de pontuação. No final deste ano, a pontuação da empresa é registrada e a tela de pontuação máxima é exibida, mas os jogadores podem continuar jogando depois disso.{} Se isso for antes do ano inicial, a tela de pontuação máxima nunca será exibida.
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Nunca
STR_CONFIG_SETTING_SMOOTH_ECONOMY :Ativar economia regular (alterações menores): {STRING}
STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Quando ativado, a produção de indústrias muda com mais frequência, e mais sutilmente
STR_CONFIG_SETTING_ALLOW_SHARES :Permite comprar ações de outras empresas: {STRING}
@ -1566,6 +1587,8 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Se ativado, per
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Proibido
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Permitido
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Permitido, layout de cidades customizável
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Quanta carga é produzida pelas casas nas cidades, em relação à população geral da cidade.{} Crescimento quadrático: uma cidade com o dobro do tamanho gera quatro vezes mais passageiros.{} Crescimento linear: uma cidade com o dobro do tamanho gera o dobro da quantidade de passageiros.
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Quadrático (original)
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Posicionamento de árvores: {STRING}
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Controla o nascimento aleatório de árvores durante o jogo. Isso pode afetar indústrias que dependem do crescimento de árvores, como serrarias
@ -1807,6 +1830,7 @@ STR_CHEAT_CHANGE_DATE_QUERY_CAPT :{WHITE}Mudar an
STR_CHEAT_SETUP_PROD :{LTBLUE}Ativar modificação de valores de produção: {ORANGE}{STRING}
# Livery window
STR_LIVERY_CAPTION :{WHITE}{COMPANY} - Esquema de cores
STR_LIVERY_GENERAL_TOOLTIP :{BLACK}Exibir esquemas de cor gerais
STR_LIVERY_TRAIN_TOOLTIP :{BLACK}Exibe esquemas de cor de trens
@ -2066,6 +2090,7 @@ STR_NETWORK_CONNECTION_DISCONNECT :{BLACK}Desconec
STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Servidor está protegido. Digite a senha
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Empresa está protegida. Digite a senha
STR_NETWORK_COMPANY_LIST_CLIENT_LIST_CAPTION :{WHITE}Lista de clientes
# Network company list added strings
STR_NETWORK_COMPANY_LIST_CLIENT_LIST :Lista de clientes
@ -2237,7 +2262,7 @@ STR_CONTENT_TYPE_AI_LIBRARY :Biblioteca de I
STR_CONTENT_TYPE_SCENARIO :Cenário
STR_CONTENT_TYPE_HEIGHTMAP :Mapa topográfico
STR_CONTENT_TYPE_BASE_SOUNDS :Sons padrão
STR_CONTENT_TYPE_BASE_MUSIC :Músicsas padrão
STR_CONTENT_TYPE_BASE_MUSIC :Músicas padrão
STR_CONTENT_TYPE_GAME_SCRIPT :Script do jogo
STR_CONTENT_TYPE_GS_LIBRARY :Biblioteca de GS's
@ -2403,7 +2428,10 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Construi
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Construir túnel de bonde. Shift altera construção/preço estimado
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Alternar construir/remover para contrução rodoviária
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Alternar construir/remover linhas de bonde e sinais
STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Converter/atualizar o tipo de estrada. Shift altera construção/exibição de estimativa de custo
STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Converter/Melhorar o tipo de bonde. Shift troca construção/amostra custo estimado
STR_ROAD_NAME_TRAM :Bonde
# Road depot construction window
STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Orientação da Garagem
@ -2588,6 +2616,7 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF:
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Carga aceita: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Tipo de ferrovia: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_ROAD_TYPE :{BLACK}Tipo de estrada: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Velocidade limite do trilho: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Limite de velocidade da rua: {LTBLUE}{VELOCITY}
@ -2699,6 +2728,7 @@ STR_FRAMERATE_SPEED_FACTOR :{WHITE}Fator de
STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Quão rápido o jogo está sendo executado, comparado com a velocidade esperada na simulação normal
STR_FRAMERATE_CURRENT :{WHITE}Atual
STR_FRAMERATE_AVERAGE :{WHITE}Médio
STR_FRAMERATE_MEMORYUSE :{WHITE}Memória
STR_FRAMERATE_DATA_POINTS :{WHITE}Dados baseados em {COMMA} medidas
STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL}{WHITE} ms
STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL}{WHITE} ms
@ -2715,12 +2745,15 @@ STR_FRAMERATE_GL_ROADVEHS :{WHITE} Tiques
STR_FRAMERATE_GL_SHIPS :{WHITE} Tiques de embarcação:
STR_FRAMERATE_GL_AIRCRAFT :{WHITE} Tiques de aeronave:
STR_FRAMERATE_GL_LANDSCAPE :{WHITE} Tiques do mundo:
STR_FRAMERATE_GL_LINKGRAPH :{BLACK} Atraso no gráfico de link:
STR_FRAMERATE_DRAWING :{WHITE}Renderizações de gráficos:
STR_FRAMERATE_DRAWING_VIEWPORTS :{WHITE} Visualizações do mundo:
STR_FRAMERATE_VIDEO :{WHITE}Saída de vídeo:
STR_FRAMERATE_SOUND :{WHITE}Mixagem de áudio:
STR_FRAMERATE_GAMESCRIPT :{BLACK} Script do jogo:
############ End of leave-in-this-order
############ Leave those lines in this order!!
STR_FRAMETIME_CAPTION_GAMELOOP :Loop de jogo
STR_FRAMETIME_CAPTION_GL_ECONOMY :Manuseio de carga
STR_FRAMETIME_CAPTION_GL_TRAINS :Tiques de trem
STR_FRAMETIME_CAPTION_GL_ROADVEHS :Tiques de automóveis
@ -2756,6 +2789,8 @@ STR_SAVELOAD_DETAIL_CAPTION :{BLACK}Detalhes
STR_SAVELOAD_DETAIL_NOT_AVAILABLE :{BLACK}Nenhuma informação disponível
STR_SAVELOAD_DETAIL_COMPANY_INDEX :{SILVER}{COMMA}: {WHITE}{STRING}
STR_SAVELOAD_DETAIL_GRFSTATUS :{SILVER}NewGRF: {WHITE}{STRING}
STR_SAVELOAD_OVERWRITE_TITLE :{WHITE}Substituir ficheiro
STR_SAVELOAD_OVERWRITE_WARNING :{YELLOW}Tem certeza de que deseja substituir o arquivo existente?
STR_SAVELOAD_OSKTITLE :{BLACK}Coloque o nome para o jogo salvo
@ -2873,6 +2908,7 @@ STR_NEWGRF_SETTINGS_VERSION :{BLACK}Versão:
STR_NEWGRF_SETTINGS_MIN_VERSION :{BLACK}Mín. versão compatível: {SILVER}{NUM}
STR_NEWGRF_SETTINGS_MD5SUM :{BLACK}SomaMD5 (verf. de segurança): {SILVER}{STRING}
STR_NEWGRF_SETTINGS_PALETTE :{BLACK}Paleta: {SILVER}{STRING}
STR_NEWGRF_SETTINGS_PALETTE_DEFAULT :Padrão (D)
STR_NEWGRF_SETTINGS_PARAMETER :{BLACK}Parâmetros: {SILVER}{STRING}
STR_NEWGRF_SETTINGS_NO_INFO :{BLACK}Sem informação disponível
@ -2985,6 +3021,7 @@ STR_NEWGRF_BUGGY :{WHITE}O NewGRF
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Informação de carga/readaptação para '{1:ENGINE}' difere da lista de aquisição após a construção. Isso pode causar a autorenovação/-substituição à falhar a readaptação corretamente.
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' causou um loop infinito no callback da produção
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Retorno {1:HEX} retornou um resultado desconhecido/inválido {2:HEX}
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' retornou tipo de carga inválido no retorno de chamada de produção em {2:HEX}
# 'User removed essential NewGRFs'-placeholders for stuff without specs
STR_NEWGRF_INVALID_CARGO :<carga inválida>
@ -3079,6 +3116,7 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Suborna
# Goal window
STR_GOALS_CAPTION :{WHITE}{COMPANY} Objetivos
STR_GOALS_SPECTATOR_CAPTION :{WHITE}Objetivos globais
STR_GOALS_SPECTATOR :Objetivos Globais
STR_GOALS_GLOBAL_TITLE :{G=m}{BLACK}Objetivos globais:
STR_GOALS_TEXT :{ORANGE}{STRING}
STR_GOALS_NONE :{G=m}{ORANGE}- Nenhum -
@ -3320,6 +3358,9 @@ STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Indústr
STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Nenhum -
STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUSTRY}
STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Nomes das indústrias - clique no nome para centralizar a visçao principal na indústria. Ctrl+Clique abre uma nova janela na localização da indústria
STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Carga aceita: {SILVER}{STRING}
STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Todos os tipos de carga
STR_INDUSTRY_DIRECTORY_FILTER_NONE :Nenhum
# Industry view
STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY}
@ -3387,6 +3428,7 @@ STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grupos -
STR_GROUP_CREATE_TOOLTIP :{BLACK}Clique para criar um grupo
STR_GROUP_DELETE_TOOLTIP :{BLACK}Remove o grupo selecionado
STR_GROUP_RENAME_TOOLTIP :{BLACK}Renomeia o grupo selecionado
STR_GROUP_LIVERY_TOOLTIP :{BLACK}Alterar a pintura do grupo selecionado
STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Clique para excluir esse grupo da substituição automática
STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Remover grupo
@ -3409,9 +3451,11 @@ STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Nova Locomotiva
STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Nova Locomotiva Maglev
STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Novos Automóveis
STR_BUY_VEHICLE_TRAM_VEHICLE_CAPTION :Novo Veículo Elétrico
############ range for vehicle availability starts
STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Trens
STR_BUY_VEHICLE_ROAD_VEHICLE_ALL_CAPTION :Novo Veículo Terrestre
STR_BUY_VEHICLE_SHIP_CAPTION :Novas Embarcações
STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Nova Aeronave
############ range for vehicle availability ends
@ -3433,6 +3477,7 @@ STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Capacida
STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Vagões energizados: {GOLD}+{POWER}{BLACK} Peso: {GOLD}+{WEIGHT_SHORT}
STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Adaptável para: {GOLD}{STRING}
STR_PURCHASE_INFO_ALL_TYPES :Todos as cargas
STR_PURCHASE_INFO_NONE :Nenhum
STR_PURCHASE_INFO_ALL_BUT :Todas menos {CARGO_LIST}
STR_PURCHASE_INFO_MAX_TE :{BLACK}Tração máx : {GOLD}{FORCE}
STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Alcance: {GOLD}{COMMA} quadrados
@ -3448,12 +3493,18 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Comprar
STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Comprar Embarcação
STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Comprar Aeronave
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar e Trocar Veículos
STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar e Repor Navio
STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Comprar e reequipar aeronaves
STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Compra o veículo ferroviário selecionado. Shift+Clique mostra preço estimado sem a compra
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Compra o veículo selecionado. Shift+Clique mostra preço estimado sem a compra
STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Compra a embarcação selecionada. Shift+Clique mostra preço estimado sem a compra
STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Compra a aeronave selecionada. Shift+Clique mostra o preço estimado sem a compra
STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Compre e troque o trem destacado. Shift+Click mostra os custos estimados sem comprar
STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :Compre e reponha o navio em destaque. Shift+Clique mostra o custo estimado sem comprar
STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Comprar e repor a aeronave destacada. Shift+Clique mostra o custo estimado sem comprar
STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Renomear
STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}Renomear
@ -3565,6 +3616,7 @@ STR_ENGINE_PREVIEW_CAPTION :{WHITE}Mensagem
STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Projetamos um novo {STRING} - estaria interessado em um ano de exclusividade do uso deste veículo, de modo a que possamos avaliar a sua performance antes de o disponibilizar para todos ?
STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :locomotiva ferroviária
STR_ENGINE_PREVIEW_ELRAIL_LOCOMOTIVE :locomotiva ferroviária eletrificada
STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :locomotiva monotrilho
STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :locomotiva maglev
@ -3618,6 +3670,7 @@ STR_REPLACE_ELRAIL_VEHICLES :Locomotivas El
STR_REPLACE_MONORAIL_VEHICLES :Monotrilho
STR_REPLACE_MAGLEV_VEHICLES :Maglevs
STR_REPLACE_ROAD_VEHICLES :Veículos terrestres
STR_REPLACE_REMOVE_WAGON :{BLACK}Remoção de vagões: {ORANGE}{STRING}
STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Faz autosubstituição manter o tamanho do trem removendo vagões (começando pela frente), se ao substituir a locomotiva o trem ficar maior
@ -3838,6 +3891,7 @@ STR_ORDER_CONDITIONAL_AGE :Idade (anos)
STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :Necessita de manutenção
STR_ORDER_CONDITIONAL_UNCONDITIONALLY :Sempre
STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :Tempo de vida restante (anos)
STR_ORDER_CONDITIONAL_MAX_RELIABILITY :Confiabilidade máxima
STR_ORDER_CONDITIONAL_COMPARATOR_TOOLTIP :{BLACK}Como comprarar os dados do veículo com o valor fornecido
STR_ORDER_CONDITIONAL_COMPARATOR_EQUALS :é igual a
@ -4068,6 +4122,11 @@ STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Selecion
STR_AI_LIST_CANCEL :{BLACK}Cancelar
STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Não mudar o script
STR_SCREENSHOT_CAPTION :{WHITE}Tirar uma captura de tela
STR_SCREENSHOT_SCREENSHOT :{BLACK}Captura de tela normal
STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}Zoom máximo na captura de tela
STR_SCREENSHOT_WORLD_SCREENSHOT :{BLACK}Captura de tela do mapa todo
STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Captura de tela do minimapa
# AI Parameters
STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parâmetros
@ -4341,6 +4400,7 @@ STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Tipo de
STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Remova a ferrovia antes
STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Rua é mão única ou está bloqueada
STR_ERROR_CROSSING_DISALLOWED_RAIL :{WHITE}Cruzamentos de nível não são permitidos para esse tipo de trilho
STR_ERROR_CROSSING_DISALLOWED_ROAD :{WHITE}Passagens de nível não permitidas para este tipo de estrada
STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Impossível construir sinais aqui...
STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Impossível construir ferrovia aqui...
STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Impossível remover a ferrovia daqui...
@ -4360,6 +4420,10 @@ STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Impossí
STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Impossível remover bonde daqui...
STR_ERROR_THERE_IS_NO_ROAD :{WHITE}...não há rodovias
STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}...não há linha de bonde
STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Não é possível converter o tipo de estrada aqui ...
STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Sem estrada adequada
STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Nenhum bonde adequado
STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... bonde incompatível
# Waterway construction errors
STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Impossível construir canais aqui...

@ -960,7 +960,7 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLAC
STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE}
STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nov{G ý á é í é é á} {STRING} k dispozici! - {ENGINE}
STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Otevřít okno skupiny zaměřené na skupinu vozidla
STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Otevřít okno skupin s předvybranou skupinou daného vozidla
STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} už dále nepřijímá {STRING.acc}
STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} už dále nepřijímá {STRING.acc} ani {STRING.acc}

@ -1304,7 +1304,7 @@ STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :Duur voor het w
STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA} seconde{P 0 "" n}
STR_CONFIG_SETTING_HOVER_DELAY :Knopinfo weergeven: {STRING}
STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :Vertraging voordat knopinfo worden weergegeven wanneer je de muis boven een besturingselement houdt. Wanneer de waarde 0 is, wordt knopinfo aan de rechtermuisknop gebonden.
STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Muis stilhouden gedurende {COMMA} seconde{P 0 "" n}
STR_CONFIG_SETTING_HOVER_DELAY_VALUE :Muis stilhouden gedurende {COMMA} milliseconde{P 0 "" n}
STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :Rechtsklik
STR_CONFIG_SETTING_POPULATION_IN_LABEL :Inwoneraantal bij stad weergeven: {STRING}
STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Aantal inwoners van een stad weergeven bij naam op de kaart

@ -935,6 +935,7 @@ STR_GAME_OPTIONS_CURRENCY_MXN :Meksikon peso (
STR_GAME_OPTIONS_CURRENCY_NTD :Uusi Taiwanin dollari (TWD)
STR_GAME_OPTIONS_CURRENCY_CNY :Kiinan renminbi (CNY)
STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongin dollari (HKD)
STR_GAME_OPTIONS_CURRENCY_INR :Intian rupia (INR)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Kulkuneuvot
@ -2165,6 +2166,7 @@ STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Väärä
STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Palvelin on täynnä
STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Sinut on kielletty palvelimelta
STR_NETWORK_ERROR_KICKED :{WHITE}Sinut potkittiin pihalle palvelimelta
STR_NETWORK_ERROR_KICK_MESSAGE :{WHITE}Syy: {STRING}
STR_NETWORK_ERROR_CHEATER :{WHITE}Huijaaminen ei ole sallittua tällä palvelimella
STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Lähetit liian monta komentoa palvelimelle
STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Käytit liian paljon aikaa salasanan syöttämiseen
@ -2224,6 +2226,7 @@ STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} an
STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Annoit yhtiölle {1:STRING} {2:CURRENCY_LONG}
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Palvelin sulki istunnon
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Palvelin käynnistyy uudelleen...{}Odota, ole hyvä...
STR_NETWORK_MESSAGE_KICKED :{STRING} potkaistiin ulos. Syy: ({STRING})
# Content downloading window
STR_CONTENT_TITLE :{WHITE}Sisällön lataus
@ -3667,10 +3670,10 @@ STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}Olet my
STR_ENGINE_PREVIEW_CAPTION :{WHITE}Viesti kulkuneuvovalmistajalta
STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Olemme juuri suunnitelleet uuden {STRING} oletteko kiinnostunut vuoden yksinoikeutetusta kokeilusta, jotta näemme miten tuote suoriutuu ennen kuin julkistamme sen yleiseen käyttöön?
STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :veturin
STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :veturi
STR_ENGINE_PREVIEW_ELRAIL_LOCOMOTIVE :sähköradan veturi
STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :yksiraiteisen veturin
STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev-veturin
STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :yksiraiteisen veturi
STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :Maglev-veturi
STR_ENGINE_PREVIEW_ROAD_VEHICLE :ajoneuvon
STR_ENGINE_PREVIEW_TRAM_VEHICLE :raitiovaunun

@ -236,6 +236,8 @@ STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Filterkr
STR_BUTTON_SORT_BY :{BLACK}Sortieren nach
STR_BUTTON_LOCATION :{BLACK}Standort
STR_BUTTON_RENAME :{BLACK}Umbenennen
STR_BUTTON_CATCHMENT :{BLACK}Einzugsgebiet
STR_TOOLTIP_CATCHMENT :{BLACK}Anzeige des Einzugsgebietes umschalten
STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Fenster schließen
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Titelleiste klicken und ziehen, um das Fenster zu verschieben
@ -934,6 +936,10 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Georgischer Lar
STR_GAME_OPTIONS_CURRENCY_IRR :Iranischer Rial (IRR)
STR_GAME_OPTIONS_CURRENCY_RUB :Russische Rubel (RUB)
STR_GAME_OPTIONS_CURRENCY_MXN :Mexikanischer Peso (MXN)
STR_GAME_OPTIONS_CURRENCY_NTD :Neuer Taiwan-Dollar (NTD)
STR_GAME_OPTIONS_CURRENCY_CNY :Chinesischer Yuan (CNY)
STR_GAME_OPTIONS_CURRENCY_HKD :Hongkong-Dollar (HKD)
STR_GAME_OPTIONS_CURRENCY_INR :Indische Rupie (INR)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Fahrzeuge
@ -1566,6 +1572,7 @@ STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :Rechenoperation
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Maximale Anzahl Rechenschritte, die ein Skript in einer Runde zur Verfügung hat
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Maximaler Arbeitsspeicher pro Script: {STRING}
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Wie viel Arbeitsspeicher ein Script maximal benutzen darf bevor es terminiert wird. Diese Wert muss eventuell vergrößert werden für größere Maps.
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB
STR_CONFIG_SETTING_SHARING_RAIL :Aktiviere Sharing für Eisenbahnnetze: {STRING}
STR_CONFIG_SETTING_SHARING_ROAD :Aktiviere Sharing für Haltestellen, Ladeplätze und Depots: {STRING}
@ -1640,10 +1647,13 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Zeitung
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Farbige Nachrichten erscheinen ab: {STRING}
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Jahr in dem die Zeitung in Farbe herausgebracht wird. Vor diesem Jahr erscheint sie in Schwarz-Weiß-Druck
STR_CONFIG_SETTING_STARTING_YEAR :Startdatum: {STRING}
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Nie
STR_CONFIG_SETTING_SMOOTH_ECONOMY :Feinere Wirtschaft aktivieren (mehrere, kleinere Veränderungen): {STRING}
STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Wird diese Option ausgewählt, ändert sich die Produktionsmenge der Industrien häufiger, aber dafür in kleineren Schritten. Diese Einstellung hat gewöhnlicherweise KEINEN Effekt, wenn die Industrien von NewGRFs bereitgestellt werden
STR_CONFIG_SETTING_ALLOW_SHARES :Handel mit Firmenanteilen erlauben: {STRING}
STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Erlaube das Kaufen und Verkaufen von Firmenanteilen. Firmenanteile sind nur verfügbar für Firmen, die hinreichend lange existieren
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Minimales Alter einer Firma, um an der Börse gehandelt zu werden: {STRING}
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_HELPTEXT :Setze das minimale Alter einer Firma, ab dem Andere Firmenanteile dieser Firma kaufen und verkaufen können.
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Prozentsatz des Profits für Teilstrecken: {STRING}
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Um das Einkommen der einzelnen Fahrzeuge einer Lieferkette ungefähr abschätzen zu können, wird vom Transporterlös bei Ablieferung einer Fracht der gewählte Prozentsatz den Zulieferfahrzeugen zugeschlagen
STR_CONFIG_SETTING_SIMULATE_SIGNALS :Simuliere Signale in Tunneln und Brücken aller: {STRING}
@ -3162,6 +3172,7 @@ STR_FRAMERATE_SPEED_FACTOR :{BLACK}Aktuelle
STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Wie schnell das Spiel aktuell läuft, verglichen mit der erwarteten Geschwindigkeit bei normaler Simulationsrate.
STR_FRAMERATE_CURRENT :{WHITE}Momentan
STR_FRAMERATE_AVERAGE :{WHITE}Durchschnitt
STR_FRAMERATE_MEMORYUSE :{WHITE}Arbeitsspeicher
STR_FRAMERATE_DATA_POINTS :{BLACK}Daten basierend auf {COMMA} Messungen
STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL} ms
STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL} ms
@ -3169,6 +3180,8 @@ STR_FRAMERATE_MS_BAD :{RED}{DECIMAL}
STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL} Bilder/s
STR_FRAMERATE_FPS_WARN :{YELLOW}{DECIMAL} Bilder/s
STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL} Bilder/s
STR_FRAMERATE_BYTES_GOOD :{LTBLUE}{BYTES}
STR_FRAMERATE_BYTES_WARN :{YELLOW}{BYTES}
STR_FRAMERATE_BYTES_BAD :{RED}{BYTES}
STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COMMA} ms
STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} s
@ -3612,6 +3625,7 @@ STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klick au
# Story book window
STR_STORY_BOOK_CAPTION :{WHITE}Chronik für {COMPANY}
STR_STORY_BOOK_SPECTATOR_CAPTION :{WHITE}Allgemeine Chronik
STR_STORY_BOOK_SPECTATOR :Allgemeine Chronik
STR_STORY_BOOK_TITLE :{YELLOW}{STRING}
STR_STORY_BOOK_GENERIC_PAGE_ITEM :Seite {NUM}
STR_STORY_BOOK_SEL_PAGE_TOOLTIP :{BLACK}Springt zur gewünschten Seite, wenn diese im Auswahlmenü angeklickt wird
@ -4015,6 +4029,7 @@ STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Neue Einschiene
STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Neue Magnetbahnfahrzeuge
STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Neue Fahrzeuge
STR_BUY_VEHICLE_TRAM_VEHICLE_CAPTION :Neue Straßenbahnen
############ range for vehicle availability starts
STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Neue Schienenfahrzeuge
@ -4059,6 +4074,7 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Fahrzeug
STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Schiff kaufen
STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Flugzeug kaufen
STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Schiff kaufen und umrüsten
STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Angewähltes Fahrzeug kaufen. Shift+Klick zeigt einen Kostenvoranschlag
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Ausgewähltes Fahrzeug kaufen. Shift+Klick zeigt einen Kostenvoranschlag
@ -4222,6 +4238,7 @@ STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Umschalt
STR_REPLACE_ENGINES :Schienenfahrzeuge
STR_REPLACE_WAGONS :Waggons
STR_REPLACE_ALL_RAILTYPE :Alle Schienenfahrzeuge
STR_REPLACE_ALL_ROADTYPE :Alle Straßenfahrzeuge
STR_REPLACE_HELP_RAILTYPE :{BLACK}Gleistyp auswählen, für den Loks ersetzt werden sollen
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Hier wird angezeigt, gegen welches Fahrzeug das auf der linken Seite gewählte ersetzt wird
@ -4791,6 +4808,9 @@ STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Ausgewä
STR_AI_LIST_CANCEL :{BLACK}Abbrechen
STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Skript nicht wechseln
STR_SCREENSHOT_CAPTION :{WHITE}Sreenshot erzeugen
STR_SCREENSHOT_SCREENSHOT :{BLACK}Normaler Screenshot
STR_SCREENSHOT_WORLD_SCREENSHOT :{BLACK}Screenshot des ganzen Spielfeldes
# AI Parameters
STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parameter
@ -5092,6 +5112,7 @@ STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Keine ge
STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Gleise müssen erst abgerissen werden
STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Einbahnstraße oder blockierter Weg
STR_ERROR_CROSSING_DISALLOWED_RAIL :{WHITE}Bahnübergänge sind für diesen Schienentyp nicht erlaubt
STR_ERROR_CROSSING_DISALLOWED_ROAD :{WHITE}Bahnübergänge sind für diesen Straßentyp nicht erlaubt
STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Signal kann hier nicht aufgestellt werden...
STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Gleise können hier nicht verlegt werden...
STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Gleise können nicht abgerissen werden...
@ -5113,7 +5134,10 @@ STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Diese St
STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Straßenbahngleise können hier nicht entfernt werden...
STR_ERROR_THERE_IS_NO_ROAD :{WHITE}...hier ist keine Straße
STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}...hier ist kein Straßenbahngleis
STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Straßentyp kann hier nicht geändert werden...
STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Straßenbahngleistyp kann hier nicht geändert werden...
STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Keine geeigneten Straßenbahnschienen
STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... inkompatible Straßenbahngleise
# Waterway construction errors
STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Kanal kann hier nicht gebaut werden...

@ -937,6 +937,7 @@ STR_GAME_OPTIONS_CURRENCY_MXN :Peso messicano
STR_GAME_OPTIONS_CURRENCY_NTD :Nuovo dollaro taiwanese (NTD)
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)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Automezzi

@ -857,7 +857,7 @@ STR_ABOUT_MENU_SEPARATOR :
STR_ABOUT_MENU_TOGGLE_CONSOLE :Przełącz konsolę
STR_ABOUT_MENU_AI_DEBUG :Debugowanie SI / Game Script
STR_ABOUT_MENU_SCREENSHOT :Zrzut ekranu
STR_ABOUT_MENU_SHOW_FRAMERATE :Pokaż ilość klatek na sekundę
STR_ABOUT_MENU_SHOW_FRAMERATE :Pokaż liczbę klatek na sekundę
STR_ABOUT_MENU_ABOUT_OPENTTD :Info o 'OpenTTD'
STR_ABOUT_MENU_SPRITE_ALIGNER :Wyrównywanie sprite'ów
STR_ABOUT_MENU_TOGGLE_BOUNDING_BOXES :Włącz/wyłącz ramki
@ -1586,11 +1586,11 @@ STR_CONFIG_SETTING_PERCENTAGE :{COMMA}%
STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS :Nachylenie stoków dla pojazdów drogowych: {STRING}
STR_CONFIG_SETTING_ROAD_VEHICLE_SLOPE_STEEPNESS_HELPTEXT :Pochylenie pola stoku dla pojazdów drogowych. Wyższa wartość utrudnia podjazd pod górę
STR_CONFIG_SETTING_FORBID_90_DEG :Zabroń pociągom skręcać o 90 stopni: {STRING}
STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90-stopniowy zakręt występuje wtedy, gdy bezpośrednio po poziomym odcinku toru występuje odcinek pionowy na sąsiadującym polu zmuszając pociąg do skrętu o 90 stopni pokonując krawędź pola zamiast normalnego, 45-stopniowego skrętu w innych kombinacjach torów.
STR_CONFIG_SETTING_FORBID_90_DEG_HELPTEXT :90-stopniowy zakręt występuje wtedy, gdy bezpośrednio po poziomym odcinku toru występuje odcinek pionowy (lub na odwrót), zmuszając pociąg do ostrzejszego skrętu (zamiast normalnego, 45-stopniowego skrętu w innych kombinacjach torów)
STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS :Pozwól na łączenie stacji nie sąsiadujących bezpośrednio: {STRING}
STR_CONFIG_SETTING_DISTANT_JOIN_STATIONS_HELPTEXT :Pozwalaj na dodawanie części stacji nie stykających się ze sobą. Naciśnij Ctrl przed postawieniem nowej części
STR_CONFIG_SETTING_INFLATION :Inflacja: {STRING}
STR_CONFIG_SETTING_INFLATION_HELPTEXT :Włącz inflację w ekonomii, gdzie koszty rosną nieco szybciej niż zapłaty
STR_CONFIG_SETTING_INFLATION_HELPTEXT :Włącz lub wyłącz inflację (sytuacja ekonomiczna, w związku z którą koszty rosną nieco szybciej niż zapłaty)
STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH :Maksymalna długość mostu: {STRING}
STR_CONFIG_SETTING_MAX_BRIDGE_LENGTH_HELPTEXT :Maksymalna długość budowanych mostów
STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT :Maksymalna wysokość mostu: {STRING}
@ -1598,7 +1598,7 @@ STR_CONFIG_SETTING_MAX_BRIDGE_HEIGHT_HELPTEXT :Maksymalna wyso
STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH :Maksymalna długość tunelu: {STRING}
STR_CONFIG_SETTING_MAX_TUNNEL_LENGTH_HELPTEXT :Maksymalna długość budowanych tuneli
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD :Budowa przedsiębiorstw wydobywczych: {STRING}
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Metoda finansowania podstawowego przemysłu. 'żadne' oznacza brak możliwości finansowania czegokolwiek, 'obiecujące' oznacza, że finansowanie jest możliwe, ale konstrukcja pojawi się w losowym miejscu na mapie oraz losowo budowa może zakończyć się porażką, 'jak inne gałęzi przemysłu' oznacza, że przemysł wydobywczy może być budowany tak jak fabryki przetwórcze, w dowolnym miejscu
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_HELPTEXT :Metoda finansowania podstawowych przedsiębiorstw. 'Niedostępna' oznacza brak możliwości finansowania czegokolwiek, 'poszukiwania' oznacza, że finansowanie jest możliwe, ale konstrukcja pojawi się w losowym miejscu na mapie (oraz losowo budowa może zakończyć się porażką), 'jak inne przedsiębiorstwa' oznacza, że przemysł wydobywczy może być budowany tak jak fabryki przetwórcze, w dowolnym miejscu
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NONE :Niedostępna
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_NORMAL :Jak inne przedsiębiorstwa
STR_CONFIG_SETTING_RAW_INDUSTRY_CONSTRUCTION_METHOD_PROSPECTING :Poszukiwania
@ -1614,7 +1614,7 @@ STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :Po prawej
STR_CONFIG_SETTING_SHOWFINANCES :Pokazuj okno finansów na koniec roku: {STRING}
STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Jeśli włączone, to okienko finansowe pokazuje się na zakończenie każdego roku, by ułatwić śledzenie sytuacji finansowej firmy
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Nowe polecenia są domyślnie 'bez zatrzymywania się': {STRING}
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalnie pojazd zatrzyma się na każdej stacji, przez którą przejeżdża. Włączając tę opcję, pojazd przejedzie do swojego celu bez zatrzymywania się. Zwróć uwagę na to, że to ustawienie ma wpływ tylko na nowe rozkazy. Indywidualne rozkazy mogą być ustalane bez względu na wartość tej opcji
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalnie pojazd zatrzyma się na każdej stacji, przez którą przejeżdża. Po włączeniu tej opcji, pojazd przejedzie do swojego celu bez zatrzymywania się. Zwróć uwagę na to, że to ustawienie ma wpływ tylko na nowe polecenia. Pojedyncze polecenia mogą być ustalane bez względu na wartość tej opcji
STR_CONFIG_SETTING_STOP_LOCATION :Rozkazy nowego pociągu kończą się domyślnie na {STRING} peronu
STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Miejsce, w którym pociąg domyślnie zatrzyma się na peronie. 'Bliższy koniec' oznacza blisko kierunku przyjazdu, 'środek' oznacza środkową część peronu, a 'daleki koniec' oznacza daleko od kierunku przyjazdu. Zapamiętaj, że to ustawienie określa tylko domyślną wartość dla nowych rozkazów. Wszystkie rozkazy mogą być zmienione, bez względu na wartość ustawienia
STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :początku
@ -1647,9 +1647,9 @@ STR_CONFIG_SETTING_PLANE_CRASHES_NONE :Brak*
STR_CONFIG_SETTING_PLANE_CRASHES_REDUCED :Zredukowana
STR_CONFIG_SETTING_PLANE_CRASHES_NORMAL :Normalna
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD :Pozwól na budowę przystanków przelotowych na drogach miejskich: {STRING}
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Pozwalaj budować przystanki przelotowe na drogach własnościowych miast
STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Pozwól na przejazd przez przystanki należące do przeciwników: {STRING}
STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Pozwalaj budować przystanki przelotowe na drogach własnościowych innych graczy
STR_CONFIG_SETTING_STOP_ON_TOWN_ROAD_HELPTEXT :Pozwalaj budować przystanki przelotowe na drogach będących własnością miast
STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD :Pozwól na budowę przystanków przelotowych na drogach innych firm: {STRING}
STR_CONFIG_SETTING_STOP_ON_COMPETITOR_ROAD_HELPTEXT :Pozwalaj budować przystanki przelotowe na drogach będących własnością innych graczy
STR_CONFIG_SETTING_DYNAMIC_ENGINES_EXISTING_VEHICLES :{WHITE}Zmiana tego ustawienia nie jest możliwa, gdy znajdują się tutaj pojazdy
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE :Utrzymywanie infrastruktury: {STRING}
STR_CONFIG_SETTING_INFRASTRUCTURE_MAINTENANCE_HELPTEXT :Kiedy włączone, utrzymanie infrastruktury jest naliczane w kosztach. Koszty wzrastają nadproporcjonalnie do rozmiarów sieci połączeń, a więc dotykają bardziej duże niż małe firmy
@ -1690,8 +1690,8 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL :Pokaż populacj
STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Wyświetlaj populację miast w ich etykietach na mapie
STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Grubość linii na wykresie: {STRING}
STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Grubość linii na wykresach. Cienka linia jest dokładniejsza, grubsza linia jest bardziej widoczna a kolory łatwiejsze do odróżnienia
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Pokaż nazwę tego NewGRF'a w oknie pojazdu budowlanego: {STRING}
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Dodaj linię do okna pojazdów budowlanych, pokazujących z którego NewGRF wybrany pojazd pochodzi.
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Pokaż nazwę NewGRF'a w oknie budowy pojazdu: {STRING}
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Dodaj linię do okna budowy pojazdów, pokazujących z którego NewGRF'a wybrany pojazd pochodzi.
STR_CONFIG_SETTING_LANDSCAPE :Krajobraz: {STRING}
STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Krajobrazy określają podstawowe scenariusze gry, które różnią się przedsiębiorstwami, towarami i wymogami dla rozwoju miast. Pliki NewGRF i skrypty umożliwiają dokładniejszą kontrolę warunków rozgrywki
@ -1752,8 +1752,8 @@ STR_CONFIG_SETTING_SMOOTH_SCROLLING :Wygładź przes
STR_CONFIG_SETTING_SMOOTH_SCROLLING_HELPTEXT :Zdecyduj, jak główny widok przesuwa się do konkretnej lokacji, gdy klikasz na mini-mapie lub gdy używasz komendy do przesunięcia do danego obiektu na mapie. Kiedy włączone, widok przesuwa się płynnie, kiedy wyłączone, następuje skok bezpośrednio do wybranego miejsca
STR_CONFIG_SETTING_MEASURE_TOOLTIP :Pokaż dymek z pomiarem podczas używania różnych narzędzi: {STRING}
STR_CONFIG_SETTING_MEASURE_TOOLTIP_HELPTEXT :Wyświetlaj długość budowanych odcinków i różnicę wysokości przy przeciąganiu w trakcie operacji budowlanych
STR_CONFIG_SETTING_LIVERIES :Pokaż barwy firm wg typu pojazdu: {STRING}
STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Kontrolka stosowania schematu kolorów pojazdów specyficznych dla typów pojazdów (w przeciwieństwie do specyfiki firmy)
STR_CONFIG_SETTING_LIVERIES :Pokaż barwy pojazdów wg grup: {STRING}
STR_CONFIG_SETTING_LIVERIES_HELPTEXT :Wyłączenie tego ustawienia powoduje, że jeśli gracz ustawił, oprócz koloru firmy, różne kolory dla różnych grup pojazdów, kolory te nie są widoczne (pokazywany jest w ich miejscu domyślny kolor firmy)
STR_CONFIG_SETTING_LIVERIES_NONE :brak
STR_CONFIG_SETTING_LIVERIES_OWN :własnej firmy
STR_CONFIG_SETTING_LIVERIES_ALL :wszystkich firm
@ -1794,7 +1794,7 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Automatycznie włącz pauzę przy rozpoczęciu nowej gry: {STRING}
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Kiedy włączone, gra zostanie automatycznie zatrzymana na samym początku, pozwalając na lepsze rozpoznanie mapy
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Zezwól w czasie wstrzymania gry na: {STRING}
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Wybierz, jakich akcji można dokonywac, gdy gra jest wstrzymana
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Wybierz, jakich akcji można dokonywać, gdy gra jest wstrzymana (włączona jest pauza)
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_NO_ACTIONS :Brak działań
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_CONSTRUCTION :Wszystkie niezwiązane z konstrukcją
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_ALL_NON_LANDSCAPING :Wszystkie oprócz modyfikowania terenu
@ -1953,12 +1953,12 @@ STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :Wyświetlaj okn
STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :Domyślny typ sygnalizatorów: {STRING}
STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :Domyślny typ semaforów
STR_CONFIG_SETTING_DEFAULT_SIGNAL_NORMAL :sygnalizatory blokowe
STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :sygnalizatory jazdy
STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :sygnalizatory jazdy - jednokierunkowe
STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBS :sygnalizatory trasy
STR_CONFIG_SETTING_DEFAULT_SIGNAL_PBSOWAY :sygnalizatory trasy - jednokierunkowe
STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES :Przełączaj typy sygnalizatorów: {STRING}
STR_CONFIG_SETTING_CYCLE_SIGNAL_TYPES_HELPTEXT :Wybierz, między jakimi typami semaforów przełączać, po naciśnięciu Ctrl+klik przy budowaniu semaforów
STR_CONFIG_SETTING_CYCLE_SIGNAL_NORMAL :tylko sygnalizatory blokowe
STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :tylko sygnalizatory jazdy
STR_CONFIG_SETTING_CYCLE_SIGNAL_PBS :tylko sygnalizatory trasy
STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :wszystkie
STR_CONFIG_SETTING_TOWN_LAYOUT :Układ dróg dla nowych miast: {STRING}
@ -2038,7 +2038,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symetryczna" o
STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Tryb dystrybucji dla poczty: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Symetryczna" oznacza, że mniej więcej tyle samo poczty będzie wysłane ze stacji A do stacji B, co z B do A. "Asymetryczna" znaczy, że narzucone ilości poczty mogą być wysłane w obu kierunkach. "Ręczna" oznacza, że nie będzie automatycznej dystrybucji dla poczty.
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Typ dystrybucji dla CHRONIONEJ klasy towarów: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :CHRONIONA klasa towarów zawiera kosztowności w umiarkowanym, diamenty w tropikalnym lub złoto w arktycznym klimacie. NewGRF-y mogą to zmieniać. "Symetryczna" oznacza, że mniej więcej tyle samo towaru będzie wysłane ze stacji A do stacji B, co z B do A. "Asymetryczna" znaczy, że narzucone ilości towarów mogą być wysłane w obu kierunkach. "Ręczna" oznacza, że nie będzie automatycznej dystrybucji dla tych towarów. Rekomendowane ustawienie to asymetryczne lub ręczne dla klimatu arktycznego, ponieważ banki nie będą wysyłać złota spowrotem do kopalni złota. Dla umiarkowanego i tropikalnego klimatu możesz także wybrać symetryczne, ponieważ banki będą wysyłać kosztowności spowrotem do banku, z którego pochodzi część kosztowności.
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :CHRONIONA klasa towarów zawiera kosztowności w umiarkowanym, diamenty w tropikalnym lub złoto w arktycznym klimacie. NewGRF-y mogą to zmieniać. "Symetryczna" oznacza, że mniej więcej tyle samo towaru będzie wysłane ze stacji A do stacji B, co z B do A. "Asymetryczna" znaczy, że narzucone ilości towarów mogą być wysłane w obu kierunkach. "Manualna" oznacza, że nie będzie automatycznej dystrybucji dla tych towarów. Rekomendowane ustawienie to asymetryczne lub ręczne dla klimatu arktycznego, ponieważ banki nie będą wysyłać złota spowrotem do kopalni złota. Dla umiarkowanego i tropikalnego klimatu możesz także wybrać symetryczne, ponieważ banki będą wysyłać kosztowności spowrotem do banku, z którego pochodzi część kosztowności.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Tryb dystrybucji dla innych typów ładunku: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymetrycznie" oznacza, że określone ilości ładunków mogą być wysłane w obu kierunkach. "manualnie" oznacza, że dystrybucja nie będzie odbywać się automatycznie.
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Dokładność dystrybucji: {STRING}
@ -2046,7 +2046,7 @@ STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Im wyżej ustaw
STR_CONFIG_SETTING_DEMAND_DISTANCE :Wpływ odległości na dystrybucję: {STRING}
STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Jeśli ładunki z jednej stacji trafiają na kilka różnych stacji, na ich dystrybucję wpływ ma odległość. Im wyższą wartość ustawisz, tym bliższe stacje będą preferowane. Zerowa wartość ustawienia sprawi, że odległość nie będzie wpływała na podział dystrybucji.
STR_CONFIG_SETTING_DEMAND_SIZE :Ilość powracającego ładunku dla trybu symetrycznego: {STRING}
STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Ustawiając to na mniej niż 100% powoduje, że symetryczna dystrybucja zachowuje się podobnie do asymetrycznej. Mniej towaru będzie zwróconego jeśli pewna ilość zostanie wysłana do stacji. Jeśli ustawisz to na 0%, to symetryczna dystrybucja zachowuje się jak asymetryczna.
STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :Ustawienie tego na mniej niż 100% powoduje, że symetryczna dystrybucja zachowuje się podobnie do asymetrycznej. Mniej towaru będzie zwróconego jeśli pewna ilość zostanie wysłana do stacji. Jeśli ustawisz to na 0%, to symetryczna dystrybucja zachowuje się jak asymetryczna.
STR_CONFIG_SETTING_SHORT_PATH_SATURATION :Zapełnienie krótkich tras przed wybraniem tras o dużej przepustowości: {STRING}
STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :Często są różne trasy pomiędzy dwoma stacjami. Cargodist zapełni najpierw najkrótsza trasę, później wykorzystuje kolejną z najkrótszych tras aż ta jest pełna itd. Zapełnienie jest określone przez obliczenie pojemności wraz z planowanym użyciem. Kiedy już wszystkie trasy są zapełnione, a istnieje wciąż zapotrzebowanie, przepełni wszystkie trasy, preferując jednak te z dużą pojemnością.Jednak w większości algorytm oblicza pojemności niedokładnie. Te ustawienia pozwolą Ci sprecyzować, jaki ma być procent zapełnienia krótszych tras zanim zostaną wybrane dłuższe. Ustaw na mniej niż 100% w celu uniknięcia przepełnienia stacji w razie zawyżenia pojemności.
@ -3117,7 +3117,7 @@ STR_ABOUT_VERSION :{BLACK}OpenTTD
STR_ABOUT_COPYRIGHT_OPENTTD :{BLACK}OpenTTD {COPYRIGHT}2002-{STRING} Zespół OpenTTD
# Framerate display window
STR_FRAMERATE_CAPTION :{WHITE}Ilość klatek na sekundę
STR_FRAMERATE_CAPTION :{WHITE}Liczba klatek na sekundę
STR_FRAMERATE_CAPTION_SMALL :{STRING}{WHITE} ({DECIMAL}x)
STR_FRAMERATE_RATE_GAMELOOP :{BLACK}Tempo symulacji: {STRING}
STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Liczba ticków gry symulowanych na sekundę.
@ -4292,7 +4292,7 @@ STR_ORDERS_END_OF_ORDERS :- - Koniec pole
STR_ORDERS_END_OF_SHARED_ORDERS :- - Koniec współdzielonych poleceń - -
# Order bottom buttons
STR_ORDER_NON_STOP :{BLACK}Non-stop
STR_ORDER_NON_STOP :{BLACK}Bezpośrednio
STR_ORDER_GO_TO :Idź do
STR_ORDER_GO_NON_STOP_TO :Idź bezpośrednio do
STR_ORDER_GO_VIA :Idź przez
@ -4303,7 +4303,7 @@ STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}Pełny z
STR_ORDER_DROP_LOAD_IF_POSSIBLE :Załaduj jeśli dostępne
STR_ORDER_DROP_FULL_LOAD_ALL :Pełny załadunek wszystkiego
STR_ORDER_DROP_FULL_LOAD_ANY :Pełny załadunek któregoś z towarów
STR_ORDER_DROP_NO_LOADING :Nie ładować
STR_ORDER_DROP_NO_LOADING :Nie ładuj
STR_ORDER_TOOLTIP_FULL_LOAD :{BLACK}Zmień sposób załadunku w podświetlonym poleceniu
STR_ORDER_TOGGLE_UNLOAD :{BLACK}Rozładuj i załaduj
@ -4374,7 +4374,7 @@ STR_ORDER_GO_TO_WAYPOINT :Idź przez {WAY
STR_ORDER_GO_NON_STOP_TO_WAYPOINT :Idź bezpośrednio poprzez {WAYPOINT}
STR_ORDER_SERVICE_AT :Serwisuj w
STR_ORDER_SERVICE_NON_STOP_AT :Serwisuj non-stop w
STR_ORDER_SERVICE_NON_STOP_AT :Serwisuj bezpośrednio w
STR_ORDER_NEAREST_DEPOT :najbliższego
STR_ORDER_NEAREST_HANGAR :najbliższego hangaru
@ -4394,7 +4394,7 @@ STR_ORDER_IMPLICIT :(sugerowany)
STR_ORDER_FULL_LOAD :(Pełny załadunek)
STR_ORDER_FULL_LOAD_ANY :(Pełny załadunek dowolnego towaru)
STR_ORDER_NO_LOAD :(Nie ładować)
STR_ORDER_NO_LOAD :(Nie ładuj)
STR_ORDER_UNLOAD :(Rozładuj i zabierz ładunek)
STR_ORDER_UNLOAD_FULL_LOAD :(Rozładuj i czekaj na pełny załadunek)
STR_ORDER_UNLOAD_FULL_LOAD_ANY :(Rozładuj i czekaj na pełny załadunek któregoś z towarów)

@ -187,6 +187,7 @@ STR_COLOUR_ORANGE :Portocaliu
STR_COLOUR_BROWN :Maro
STR_COLOUR_GREY :Gri
STR_COLOUR_WHITE :Alb
STR_COLOUR_DEFAULT :Prestabilit
# Units used in OpenTTD
STR_UNITS_VELOCITY_IMPERIAL :{COMMA} mph
@ -233,6 +234,7 @@ STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Alegeți
STR_BUTTON_SORT_BY :{BLACK}Ordonează
STR_BUTTON_LOCATION :{BLACK}Locație
STR_BUTTON_RENAME :{BLACK}Nume nou
STR_BUTTON_CATCHMENT :Arie de acoperire
STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Închide fereastra
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Titlul ferestrei - trage de aici pentru a muta fereastra
@ -836,6 +838,7 @@ STR_NEWS_VEHICLE_HAS_TOO_FEW_ORDERS :{WHITE}{VEHICLE
STR_NEWS_VEHICLE_HAS_VOID_ORDER :{WHITE}{VEHICLE} nu are nici un ordin
STR_NEWS_VEHICLE_HAS_DUPLICATE_ENTRY :{WHITE}{VEHICLE} are ordine duplicate
STR_NEWS_VEHICLE_HAS_INVALID_ENTRY :{WHITE}{VEHICLE} are o staţie invalidă în ordine
STR_NEWS_PLANE_USES_TOO_SHORT_RUNWAY :{WHITE}{VEHICLE} are în ordinele sale un aeroport a cărui pistă este prea scurtă
STR_NEWS_VEHICLE_IS_GETTING_OLD :{WHITE}{VEHICLE} este vechi
STR_NEWS_VEHICLE_IS_GETTING_VERY_OLD :{WHITE}{VEHICLE} este foarte vechi
@ -1444,6 +1447,7 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Permite Intelig
STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :Permite ca jucătorii controlați de AI să participe în jocuri multiplayer
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :Număr opcodes înainte de suspendarea scripturilor: {STRING}
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Numărul maxim de instrucțiuni pe care un script le poate executa pe parcursul unei ture
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB
STR_CONFIG_SETTING_SERVINT_ISPERCENT :Intervaluri de service în procente: {STRING}
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Alege dacă întreținerea vehiculelor este activată de trecerea unei anumite perioade de timp, sau scăzând un anumit procent din gradul de rezistență al vehiculului
@ -1647,6 +1651,7 @@ STR_CONFIG_SETTING_INTERFACE_VIEWPORTS :{ORANGE}Câmpur
STR_CONFIG_SETTING_INTERFACE_CONSTRUCTION :{ORANGE}Construcţie
STR_CONFIG_SETTING_ADVISORS :{ORANGE}Știri / Consilieri
STR_CONFIG_SETTING_COMPANY :{ORANGE}Companie
STR_CONFIG_SETTING_ACCOUNTING :{ORANGE}Contabilitate
STR_CONFIG_SETTING_VEHICLES :{ORANGE}Vehicule
STR_CONFIG_SETTING_VEHICLES_ROUTING :{ORANGE}Direcţionare
STR_CONFIG_SETTING_ACCIDENTS :{ORANGE}Dezastre / Accidente
@ -2551,6 +2556,7 @@ STR_LAND_AREA_INFORMATION_AIRPORTTILE_NAME :{BLACK}Numele d
STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}Încărcături acceptate: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Tip șină: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Limită viteză pe calea ferată: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Viteza limită a drumului: {LTBLUE}{VELOCITY}
@ -2656,11 +2662,14 @@ STR_FRAMERATE_RATE_GAMELOOP_TOOLTIP :{BLACK}Număr d
STR_FRAMERATE_AVERAGE :{WHITE}Medie
STR_FRAMERATE_DATA_POINTS :{BLACK}Date bazate pe măsurători {COMMA}
STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL} ms
STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL} cadre/s
STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COMMA} ms
############ Leave those lines in this order!!
STR_FRAMERATE_VIDEO :{BLACK}Ieșire video:
############ End of leave-in-this-order
############ Leave those lines in this order!!
STR_FRAMETIME_CAPTION_GAMELOOP :Buclă de joc
STR_FRAMETIME_CAPTION_GL_ECONOMY :Manipularea încărcăturilor
############ End of leave-in-this-order
@ -3319,6 +3328,7 @@ STR_GROUP_REMOVE_ALL_VEHICLES :Elimină toate
STR_GROUP_RENAME_CAPTION :{BLACK}Redenumeşte un grup
STR_GROUP_PROFIT_THIS_YEAR :Profitul pe anul acesta:
STR_GROUP_OCCUPANCY :Utilizare curentă:
STR_GROUP_OCCUPANCY_VALUE :{NUM}%
@ -3367,6 +3377,7 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Cumpăr
STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Cumpără navă
STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Cumpără aeronavă
STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Cumpără și schimbă marfa transportată de aeronavă
STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Cumpără vehiculul feroviar selectat. Shift+Click arată costul estimat fără să cumpere vehiculul
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}Cumpără autovehiculul selectat. Shift+Click arată costul estimat fără să cumpere autovehiculul
@ -3979,6 +3990,13 @@ STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Alege sc
STR_AI_LIST_CANCEL :{BLACK}Anulează
STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Nu schimba scriptul
STR_SCREENSHOT_CAPTION :{WHITE}Capturează ecranul
STR_SCREENSHOT_SCREENSHOT :{BLACK}Captură de ecran obișnuită
STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}Captură de hartă la mărime maximă
STR_SCREENSHOT_DEFAULTZOOM_SCREENSHOT :{BLACK}Captură de hartă la mărime normală
STR_SCREENSHOT_WORLD_SCREENSHOT :{BLACK}Captură de hartă întreagă
STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Captură de hartă topografică
STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Captură de hartă a lumii
# AI Parameters
STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametrii
@ -4063,7 +4081,7 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Doar un
# Screenshot related messages
STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Imagine de dimensiune foarte mare
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Imaginea capturata va avea o dimensiune de {COMMA} x {COMMA} pixeli. Realizarea unei capturi va dura puțin timp. Dorești să continui?
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Imaginea capturată va avea o dimensiune de {COMMA} x {COMMA} pixeli. Realizarea unei capturi va dura ceva timp. Dorești să continui?
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Imagine salvată cu succes pe disc în fişierul '{STRING}'
STR_ERROR_SCREENSHOT_FAILED :{WHITE}Imaginea nu a putut fi capturată!
@ -4433,6 +4451,7 @@ STR_BASESOUNDS_WIN_DESCRIPTION :Setul de sunete
STR_BASESOUNDS_NONE_DESCRIPTION :Un set de sunete fără nici un sunet inclus.
STR_BASEMUSIC_WIN_DESCRIPTION :Setul de muzică original al Transport Tycoon Deluxe pentru Windows.
STR_BASEMUSIC_DOS_DESCRIPTION :Setul de muzică original al Transport Tycoon Deluxe pentru DOS.
STR_BASEMUSIC_TTO_DESCRIPTION :Setul de muzică original al Transport (Original/World Editor) pentru DOS.
STR_BASEMUSIC_NONE_DESCRIPTION :Un set de muzică fără muzică inclusă.
##id 0x2000

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -1121,6 +1121,7 @@ STR_CONFIG_SETTING_CITY_APPROVAL :நகர ம
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :அதிகபட்ச வரைபட உயரம்: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :இந்த வரைபடத்திலுள்ள மலைகளின் அதிகபட்ச உயரத்தினை அமை
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE} அதிகபட்ச வரைபட உயரமாக இந்த மதிப்பை நீங்கள் தர இயலாது. வரைபடத்தில் குறைந்தது ஒரு மலையாவது இந்த மதிப்பை விட உயரமாக உள்ளது
STR_CONFIG_SETTING_EXTRADYNAMITE :நகரத்தின் சாலைகள், பாலங்கள் மற்றும் சுரங்கங்களை நீக்க அனுமதிக்கவும்: {STRING}
STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :நகராட்சியின் கட்டடங்கள் நீக்குவதை எளிதாக்கவும்
STR_CONFIG_SETTING_TRAIN_LENGTH :இரயில்களின் அதிகபட்ச நீளம்: {STRING}

@ -236,6 +236,8 @@ STR_TOOLTIP_FILTER_CRITERIA :{BLACK}Süzme k
STR_BUTTON_SORT_BY :{BLACK}Sırala
STR_BUTTON_LOCATION :{BLACK}Göster
STR_BUTTON_RENAME :{BLACK}Yeni ad
STR_BUTTON_CATCHMENT :{BLACK}Kapsama alanı
STR_TOOLTIP_CATCHMENT :{BLACK}Kapsama alanını göstermeyi aç/kapa
STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Pencereyi kapat
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Pencere başlığı - pencereyi hareket ettirmek için sürükle
@ -264,6 +266,7 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Bu düğ
STR_BUTTON_DEFAULT :{BLACK}Varsayılan
STR_BUTTON_CANCEL :{BLACK}İptal
STR_BUTTON_OK :{BLACK}Tamam
STR_WARNING_PASSWORD_SECURITY :{YELLOW}Uyarı: Sunucu yöneticileri buraya yazılan yazıları okuyabilir.
# On screen keyboard window
STR_OSK_KEYBOARD_LAYOUT :"1234567890*-\qwertyuıopğüasdfghjklşi,' zxcvbnmöç. .
@ -337,6 +340,7 @@ STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Yakınla
STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Uzaklaş
STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Demiryolu yapımı
STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Karayolu yapımı
STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Tramvay inşa et
STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Rıhtım yapımı
STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Havalimanı yapımı
STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Arazi düzenleme araç çubuğunu aç (ağaç dikme, alçaltma/yükseltme vb. için).
@ -357,6 +361,7 @@ STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Peyzaj y
STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Şehir yapımı
STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Fabrika yapımı
STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Yol yapımı
STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK} Tramvay yapımı
STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Ağaç dik. Shift ile tıklama maliyet tahminini gösterir
STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Tabela koy
STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Nesneyi yerleştirin. Shift ile tıklama maliyet tahminini gösterir
@ -860,6 +865,7 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLAC
STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE}
STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Yeni {STRING} artık kullanılabilir! - {ENGINE}
STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Aracın grubuna odaklanmış grup penceresini açın
STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} artık {STRING} kabul etmiyor
STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} artık {STRING} veya {STRING} kabul etmiyor
@ -927,6 +933,10 @@ STR_GAME_OPTIONS_CURRENCY_GEL :Gürcistan Lari
STR_GAME_OPTIONS_CURRENCY_IRR :İran Riyali (IRR)
STR_GAME_OPTIONS_CURRENCY_RUB :Yeni Rus Rublesi (RUB)
STR_GAME_OPTIONS_CURRENCY_MXN :Meksika Pezosu (MXN)
STR_GAME_OPTIONS_CURRENCY_NTD :Yeni Tayvan Doları (NTD)
STR_GAME_OPTIONS_CURRENCY_CNY :Çin Yuanı (CNY)
STR_GAME_OPTIONS_CURRENCY_HKD :Hong Kong Doları (HKD)
STR_GAME_OPTIONS_CURRENCY_INR :Hindistan Rupisi (INR)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_FRAME :{BLACK}Karayolu taşıtları
@ -989,10 +999,12 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :İki kat büyük
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Dört kat büyük
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Yazı boyutu
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :Arayüz boyutunu seç
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Yazı iki kat büyük
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Dört kat büyük
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Temel grafik kümesi
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Kullanılacak temel grafik kümesini seçin
@ -1176,6 +1188,8 @@ STR_CONFIG_SETTING_AUTOSLOPE :Binaların, yol
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Binaları ve yolları kaldırmaksızın altlarında yeryüzü şekillendirmesi yapılmasına izin ver
STR_CONFIG_SETTING_CATCHMENT :İstasyon kapsama alanlarının daha gerçeğe yakın ölçülerde olmasına izin ver: {STRING}
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Farklı istasyon ve hava limanları için farklı büyüklükte alanlar gerekir
STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES :Şirket istasyonları, bağlı nötr istasyonları olan endüstrilere hizmet edebilir: {STRING}
STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :Etkinleştirildiğinde, bağlı istasyonları olan endüstrilere (Petrol Kuleleri gibi) yakınlarda kurulan şirkete ait istasyonlar da hizmet verebilir. Devre dışı bırakıldığında, bu sektörlere yalnızca bağlı istasyonları tarafından hizmet verilebilir. Yakındaki herhangi bir şirket istasyonu onlara hizmet veremeyecek ve ekli istasyon sektör dışında başka bir şeye hizmet etmeyecek
STR_CONFIG_SETTING_EXTRADYNAMITE :Şehirlere ait köprülerin, yolların ve tünellerin yıkılmasına izin vermeleri için, şehir yetkililerinin toleransını arttır: {STRING}
STR_CONFIG_SETTING_EXTRADYNAMITE_HELPTEXT :Belediyelerin sahip olduğu altyapı ve binaların yıkımını kolaylaştır
STR_CONFIG_SETTING_TRAIN_LENGTH :En yüksek tren uzunluğu: {STRING}
@ -1297,6 +1311,8 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL :Şehir nüfusun
STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Haritadaki şehir etiketlerinde nüfus bilgisini görüntüle
STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Grafiklerdeki çizgi kalınlığı: {STRING}
STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Grafiklerdeki çizginin genişliği. İnce çizgiler daha hassas şekilde okunabilir, koyu çizgileri ise görmek ve renklerini ayırt etmek daha kolay olur.
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :NewGRF'nin adını araç inşa penceresinde göster: {STRING}
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Araç inşa penceresine, seçilen aracın hangi NewGRF'den geldiğini gösteren bir satır ekleyin.
STR_CONFIG_SETTING_LANDSCAPE :İklim: {STRING}
STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :İklimler farklı kargo ve şehir gelişme gereksinimlerini belirleyen temel oynanış senaryolarını tanımlar. NewGRF ve Oyun Betikleri daha ince ayarlar yapmanızı sağlar
@ -1473,6 +1489,9 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER :Çok oyunculuda
STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :YZ (yapay zeka) bilgisayar oyuncularının çok oyunculu oyunlara katılmasına izin ver
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :Betikler duraklatılıncaya kadar çalıştırılacak opkod sayısı: {STRING}
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :Bir betiğin bir elde kullanabileceği azami hesaplama adımı sayısı
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :Script başına kullanılabilecek maksimum bellek: {STRING}
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :Tek bir betiğin zorla durdurulmadan önce ne kadar bellek kullanabileceğini gösterir. Bu değerin büyük haritalarda arttırılması gerekebilir.
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB
STR_CONFIG_SETTING_SERVINT_ISPERCENT :Servis gecikmeleri yüzde ile: {STRING}
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :Araçlara bakım yapılmasına bir önceki bakımın üzerinden geçen zamana göre mi, yoksa aracın güvenilirlik değerinin azami güvenilirliğe kıyasla belli bir yüzde oranında düşmesine bağlı olarak mı karar verileceğini seçin
@ -1531,10 +1550,16 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Tam
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Renkli gazete şu senede çıksın: {STRING}
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Gazete haberlerinin renkli olarak basılmaya başlandığı yıl. Bu tarihe kadar gazete siyah/beyaz olarak basılır
STR_CONFIG_SETTING_STARTING_YEAR :Başlangıç tarihi: {STRING}
STR_CONFIG_SETTING_ENDING_YEAR :Yıl sonu puanı: {STRING}
STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Oyunun puan sonucuna göre bittiği yıl. Bu yılın sonunda, şirketin puanı kaydedilir ve yüksek puan ekranında gösterilir ama oyuncular oynamaya devam edebilir.{}Eğer bu başlama yılından önce ise, yüksek puan ekranı gösterilmez.
STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM}
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Asla
STR_CONFIG_SETTING_SMOOTH_ECONOMY :Yüzeysel ekonomi (daha çok ve küçük çapta değişiklikler): {STRING}
STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Etkinleştirildiğinde, endüstri üretim miktarı daha sık ve daha küçük adımlarla değişir. Eğer endüstriler bir NewGRF dosyası tarafından sağlanıyorsa bu özellik genellikle etkisiz kalır
STR_CONFIG_SETTING_ALLOW_SHARES :Diğer şirketlerin hisseleri alınabilsin: {STRING}
STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Etkinleştirildiğinde, şirketlerin hisse senetlerinin alınıp satılması mümkün olur. Hisse senetleri sadece belli bir yaşa ulaşan şirketler için geçerlidir
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Hisse satmak için gerekli minimum şirket yaşı: {STRING}
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_HELPTEXT :Bir şirketin hisselerinin satılabileceği ve diğer şirketlerin alabileceği minimum şirket yaşını belirleyin.
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :Besleme sistemlerinde, bölümlerden elde edilen kardan ödenecek yüzde: {STRING}
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :Besleme sistemlerinde, sistemi oluşturan ara bölümlere verilen kar yüzdesi. Böylece kar miktarı üzerinde daha fazla kontrol elde edilmiş olur
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :Fare sürüklendiğinde sinyal yerleştirme sıklığı: {STRING}
@ -1575,6 +1600,10 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Bu seçeneği e
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Yasak
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :İzin verildi
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :İzin verildi, özel kasaba yerleşimi
STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Şehrin kargo üretimi: {STRING}
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Şehrin genel nüfusuna oranla, şehirlerdeki evler tarafından ne kadar kargo üretiliyor.{}Üstel büyüme: İki katı büyüklükteki bir şehir dört katı büyüklükte yolcuya sahip olur.{}Lineer büyüme: İki katı büyüklükteki bir şehir iki katı büyüklükte yolcuya sahip olur.
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :İkinci dereceden (orjinall)
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Doğrusal
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Oyunda ağaç dikme: {STRING}
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Oyundaki rastgele ağaçların görünümünü kontrol eder. Bu, ağaçların büyümesine bağımlı olan endüstrileri etkileyebilir, örneğin keresteciler gibi
@ -2138,6 +2167,7 @@ STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Yanlış
STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Sunucu dolu
STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Sunucuya girmeniz yasaklandı
STR_NETWORK_ERROR_KICKED :{WHITE}Oyundan atıldınız
STR_NETWORK_ERROR_KICK_MESSAGE :{WHITE}Sebep: {STRING}
STR_NETWORK_ERROR_CHEATER :{WHITE}Bu sunucuda hileler kapalı
STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Sunucuya çok fazla komut gönderiyordunuz
STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Şifre girmeniz çok uzun sürdü
@ -2197,6 +2227,7 @@ STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} ş
STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** {1:STRING} oyuncusuna {2:CURRENCY_LONG} verdiniz
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Sunucu kapandı
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Sunucu baştan başlatılıyor...{}Lütfen bekleyin...
STR_NETWORK_MESSAGE_KICKED :*** {STRING} atıldı. Sebep: ({STRING})
# Content downloading window
STR_CONTENT_TITLE :{WHITE}İçerik indirme
@ -2414,7 +2445,11 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Tünel Y
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Tramvay tüneli yap. Shift ile tıklama maliyet tahminini gösterir
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Yol yap/sil arasında geçiş yap
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Tramvay yapımı/yıkımı
STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Yol türünü Dönüştür/Geliştir. Shift ile tıklama maliyet tahminini gösterir
STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Tramvay türünü dönüştür / yükselt. Shift'e basma maliyet tahmini gösterir.
STR_ROAD_NAME_ROAD :Yol
STR_ROAD_NAME_TRAM :Tramvay
# Road depot construction window
STR_BUILD_DEPOT_ROAD_ORIENTATION_CAPTION :{WHITE}Garaj Yönü
@ -2599,8 +2634,11 @@ STR_LAND_AREA_INFORMATION_NEWGRF_NAME :{BLACK}NewGRF:
STR_LAND_AREA_INFORMATION_CARGO_ACCEPTED :{BLACK}İstenen: {LTBLUE}
STR_LAND_AREA_INFORMATION_CARGO_EIGHTS :({COMMA}/8 {STRING})
STR_LANG_AREA_INFORMATION_RAIL_TYPE :{BLACK}Ray türü: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_ROAD_TYPE :{BLACK}Yol türü: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_TRAM_TYPE :{BLACK}Tramvay tipi: {LTBLUE}{STRING}
STR_LANG_AREA_INFORMATION_RAIL_SPEED_LIMIT :{BLACK}Ray hız sınırı: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_ROAD_SPEED_LIMIT :{BLACK}Yol hız sınırı: {LTBLUE}{VELOCITY}
STR_LANG_AREA_INFORMATION_TRAM_SPEED_LIMIT :{BLACK}Tramvay hız limiti: {LTBLUE}{VELOCITY}
# Description of land area of different tiles
STR_LAI_CLEAR_DESCRIPTION_ROCKS :Kayalar
@ -2710,6 +2748,7 @@ STR_FRAMERATE_SPEED_FACTOR :{BLACK}Şu anki
STR_FRAMERATE_SPEED_FACTOR_TOOLTIP :{BLACK}Beklenen normal simülasyon hızı yerine, şu anda oyunun ne kadar hızlı çalıştığı.
STR_FRAMERATE_CURRENT :{WHITE}Geçerli
STR_FRAMERATE_AVERAGE :{WHITE}Ortalama
STR_FRAMERATE_MEMORYUSE :{WHITE}Bellek
STR_FRAMERATE_DATA_POINTS :{BLACK}Veriler {COMMA} ölçümlerine dayanır
STR_FRAMERATE_MS_GOOD :{LTBLUE}{DECIMAL} ms
STR_FRAMERATE_MS_WARN :{YELLOW}{DECIMAL} ms
@ -2717,6 +2756,9 @@ STR_FRAMERATE_MS_BAD :{RED}{DECIMAL}
STR_FRAMERATE_FPS_GOOD :{LTBLUE}{DECIMAL} kare/s
STR_FRAMERATE_FPS_WARN :{YELLOW}{DECIMAL} kare/s
STR_FRAMERATE_FPS_BAD :{RED}{DECIMAL} kare/s
STR_FRAMERATE_BYTES_GOOD :{LTBLUE}{BYTES}
STR_FRAMERATE_BYTES_WARN :{YELLOW}{BYTES}
STR_FRAMERATE_BYTES_BAD :{RED}{BYTES}
STR_FRAMERATE_GRAPH_MILLISECONDS :{TINY_FONT}{COMMA} ms
STR_FRAMERATE_GRAPH_SECONDS :{TINY_FONT}{COMMA} s
############ Leave those lines in this order!!
@ -2732,7 +2774,9 @@ STR_FRAMERATE_DRAWING :{BLACK}Grafik i
STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Dünya görüş alanları:
STR_FRAMERATE_VIDEO :{BLACK}Video çıkışı:
STR_FRAMERATE_SOUND :{BLACK}Ses karıştırma:
STR_FRAMERATE_ALLSCRIPTS :{BLACK} Oyun Betiği/Yapay Zeka toplam:
STR_FRAMERATE_GAMESCRIPT :Oyun scripti
STR_FRAMERATE_AI :{BLACK} YZ {NUM} {STRING}
############ End of leave-in-this-order
############ Leave those lines in this order!!
STR_FRAMETIME_CAPTION_GAMELOOP :Oyun döngüsü
@ -2747,6 +2791,9 @@ STR_FRAMETIME_CAPTION_DRAWING :Grafik işleme
STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Dünya görüş alanı derleme
STR_FRAMETIME_CAPTION_VIDEO :Video çıkışı
STR_FRAMETIME_CAPTION_SOUND :Ses karıştırma
STR_FRAMETIME_CAPTION_ALLSCRIPTS :Oyun Betiği/Yapay Zeka betikleri toplam
STR_FRAMETIME_CAPTION_GAMESCRIPT :Oyun betiği
STR_FRAMETIME_CAPTION_AI :YZ {NUM} {STRING}
############ End of leave-in-this-order
@ -3011,6 +3058,7 @@ STR_NEWGRF_BUGGY :{WHITE}NewGRF '
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}'{1:ENGINE}' için kargo tür değişim bilgisi yapımdan sonraki alım listesinden farklı. Bu otomatik yenileme-değiştirmenin kargo türünü doğru şekilde değiştirmesine engel olabilir
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' üretim yordamında sonsuz döngüye neden oldu
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}{1:HEX} adlı callback hata ya da geçersiz sonuç döndü {2:HEX}
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' üretim geri çağırımında, geçerli olmayan kargo türü geri döndü {2:HEX}
# 'User removed essential NewGRFs'-placeholders for stuff without specs
STR_NEWGRF_INVALID_CARGO :<geçersiz kargo>
@ -3077,6 +3125,8 @@ STR_TOWN_VIEW_RENAME_TOWN_BUTTON :İsim değişti
# Town local authority window
STR_LOCAL_AUTHORITY_CAPTION :{WHITE}{TOWN} belediyesi
STR_LOCAL_AUTHORITY_ZONE :{BLACK}Bölge
STR_LOCAL_AUTHORITY_ZONE_TOOLTIP :{BLACK}Bölgeyi yerel yönetim sınırları içinde göster
STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}Taşıma şirketi değerlendirmeleri:
STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING}
STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}Yapılabilecekler:
@ -3336,6 +3386,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}{COMPANY
STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Demiryolu parçaları:
STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Sinyaller
STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Karayolu parçaları:
STR_COMPANY_INFRASTRUCTURE_VIEW_TRAM_SECT :{GOLD}Tramvay parçaları:
STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Su kareleri:
STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanallar
STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}İstasyonlar:
@ -3346,8 +3397,17 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_TOTAL :{WHITE}{CURRENC
# Industry directory
STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}Fabrikalar
STR_INDUSTRY_DIRECTORY_NONE :{ORANGE}- Hiçbiri -
STR_INDUSTRY_DIRECTORY_ITEM_INFO :{BLACK}{CARGO_LONG}{STRING}{YELLOW} ({COMMA}% taşındı){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} ve {NUM} daha...
STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Fabrika adları - görüntüyü fabrikada merkezlemek için adına tıklayın. Ctrl ile tıklama fabrikanın konumunu gösteren yeni bir pencere açar
STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Kabul edilen kargo: {SILVER}{STRING}
STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Üretilmiş kargo: {SILVER}{STRING}
STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Tüm kargo tipleri
STR_INDUSTRY_DIRECTORY_FILTER_NONE :Hiçbiri
# Industry view
STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY}
@ -3413,6 +3473,7 @@ STR_GROUP_DEFAULT_ROAD_VEHICLES :Gruplanmamış
STR_GROUP_DEFAULT_SHIPS :Gruplanmamış gemiler
STR_GROUP_DEFAULT_AIRCRAFTS :Gruplanmamış uçaklar
STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA})
STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Gruplar - gruba ait araçları listelemek için grubun üzerine tıklayın. Hiyerarşiyi düzenlemek için grupları sürükleyip bırakın.
STR_GROUP_CREATE_TOOLTIP :{BLACK}Grup oluşturmak için tıklayın
@ -3441,14 +3502,17 @@ STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Yeni Monoray
STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Yeni Maglev
STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Yeni Karayolu Araçları
STR_BUY_VEHICLE_TRAM_VEHICLE_CAPTION :Yeni Tramvay Araçları
############ range for vehicle availability starts
STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Trenler
STR_BUY_VEHICLE_ROAD_VEHICLE_ALL_CAPTION :Yeni yol araçları
STR_BUY_VEHICLE_SHIP_CAPTION :Yeni gemi
STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Yeni Hava Aracı
############ range for vehicle availability ends
STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Fiyat: {GOLD}{CURRENCY_LONG}{BLACK} Ağırlık: {GOLD}{WEIGHT_SHORT}
STR_PURCHASE_INFO_COST_REFIT_WEIGHT :{BLACK}Maliyet: {GOLD}{CURRENCY_LONG}{BLACK} (Tamir maliyeti: {GOLD}{CURRENCY_LONG}{BLACK}) Ağırlık: {GOLD}{WEIGHT_SHORT}
STR_PURCHASE_INFO_SPEED_POWER :{BLACK}Hız: {GOLD}{VELOCITY}{BLACK} Güç: {GOLD}{POWER}
STR_PURCHASE_INFO_SPEED :{BLACK}Hız: {GOLD}{VELOCITY}
STR_PURCHASE_INFO_SPEED_OCEAN :{BLACK}Okyanus hızı: {GOLD}{VELOCITY}
@ -3459,8 +3523,10 @@ STR_PURCHASE_INFO_REFITTABLE :(modifiyeli)
STR_PURCHASE_INFO_DESIGNED_LIFE :{BLACK}Yapım yılı: {GOLD}{NUM}{BLACK} Ömür: {GOLD}{COMMA} sene
STR_PURCHASE_INFO_RELIABILITY :{BLACK}Aza. Güvenilirlik: {GOLD}%{COMMA}
STR_PURCHASE_INFO_COST :{BLACK}Fiyat: {GOLD}{CURRENCY_LONG}
STR_PURCHASE_INFO_COST_REFIT :{BLACK}Maliyet: {GOLD}{CURRENCY_LONG}{BLACK} (Tamirat Maliyeti: {GOLD}{CURRENCY_LONG}{BLACK})
STR_PURCHASE_INFO_WEIGHT_CWEIGHT :{BLACK}Ağırlık: {GOLD}{WEIGHT_SHORT} ({WEIGHT_SHORT})
STR_PURCHASE_INFO_COST_SPEED :{BLACK}Fiyat: {GOLD}{CURRENCY_LONG}{BLACK} Hız: {GOLD}{VELOCITY}
STR_PURCHASE_INFO_COST_REFIT_SPEED :{BLACK}Maliyet: {GOLD}{CURRENCY_LONG}{BLACK} (Tamir maliyeti: {GOLD}{CURRENCY_LONG}{BLACK}) Hız: {GOLD}{VELOCITY}
STR_PURCHASE_INFO_AIRCRAFT_CAPACITY :{BLACK}Kapasite: {GOLD}{CARGO_LONG}, {CARGO_LONG}
STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Güç Veren Vagonlar: {GOLD}+{POWER}{BLACK} Ağırlık: {GOLD}+{WEIGHT_SHORT}
STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Dönüştürülebildiği kargolar: {GOLD}{STRING}
@ -3481,12 +3547,20 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_BUTTON :{BLACK}Araç Sa
STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_BUTTON :{BLACK}Gemi Satın Al
STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_BUTTON :{BLACK}Uçak Satın Al
STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Araç satın alın ve yenileyin.
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Aracı satın alın ve yenileyin.
STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Gemi satın al ve yenile
STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_BUTTON :{BLACK}Uçağı satın al veya sahip olduğunla değiştir.
STR_BUY_VEHICLE_TRAIN_BUY_VEHICLE_TOOLTIP :{BLACK}Seçili treni satın al. Shift ile tıklama satın almadan tahmini maliyeti gösterir.
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_VEHICLE_TOOLTIP :{BLACK}İşaretli aracı al. Shift ile tıklama satın almadan tahmini maliyeti gösterir
STR_BUY_VEHICLE_SHIP_BUY_VEHICLE_TOOLTIP :{BLACK}Seçili gemiyi satın al. Shift ile tıklama satın almadan tahmini maliyeti gösterir
STR_BUY_VEHICLE_AIRCRAFT_BUY_VEHICLE_TOOLTIP :{BLACK}Seçili uçağı satın al. Shift ile tıklama satın almadan tahmini maliyeti gösterir
STR_BUY_VEHICLE_TRAIN_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Gösterilen treni satın al. Shift+Click satın almadan tahmini maliyeti gösterir
STR_BUY_VEHICLE_ROAD_VEHICLE_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Seçili karayolu aracını satın alın. Shift ile tıklama satın almadan tahmini maliyeti gösterir
STR_BUY_VEHICLE_SHIP_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Seçili gemiyi satın al. Shift ile tıklama satın almadan tahmini maliyeti gösterir
STR_BUY_VEHICLE_AIRCRAFT_BUY_REFIT_VEHICLE_TOOLTIP :{BLACK}Seçili uçağı satın al. Shift ile tıklama satın almanın tahmini maliyetini gösterir
STR_BUY_VEHICLE_TRAIN_RENAME_BUTTON :{BLACK}Yeni isim
STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_BUTTON :{BLACK}İsim
@ -3598,10 +3672,12 @@ STR_ENGINE_PREVIEW_CAPTION :{WHITE}Araç ü
STR_ENGINE_PREVIEW_MESSAGE :{GOLD}Yeni bir {STRING} tasarladık - bizim için bunu bir yıl denemeyi kabul ediyor musunuz?
STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :lokomotif
STR_ENGINE_PREVIEW_ELRAIL_LOCOMOTIVE :Elektrikli demiryolu lokomotifi
STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :monoray lokomotifi
STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :maglev lokomotifi
STR_ENGINE_PREVIEW_ROAD_VEHICLE :karayolu aracı
STR_ENGINE_PREVIEW_TRAM_VEHICLE :Tramvay aracı
STR_ENGINE_PREVIEW_AIRCRAFT :uçak
STR_ENGINE_PREVIEW_SHIP :gemi
@ -3643,14 +3719,18 @@ STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK}Lokomoti
STR_REPLACE_ENGINES :Lokomotifler
STR_REPLACE_WAGONS :Vagon
STR_REPLACE_ALL_RAILTYPE :Tüm demiryolu araçları
STR_REPLACE_ALL_ROADTYPE :Tüm karayolu araçları
STR_REPLACE_HELP_RAILTYPE :{BLACK}Lokomatiflerini değiştireceğiniz ray türünü seçin
STR_REPLACE_HELP_ROADTYPE :{BLACK}Motorlarını değiştirmek istediğin yol tipini seç
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Soldaki değiştiriliyorsa neyle değiştirildiğini göster
STR_REPLACE_RAIL_VEHICLES :Demiryolu Araçları
STR_REPLACE_ELRAIL_VEHICLES :Elektrikli Trenler
STR_REPLACE_MONORAIL_VEHICLES :Monoray Araçları
STR_REPLACE_MAGLEV_VEHICLES :Maglev Araçları
STR_REPLACE_ROAD_VEHICLES :Yol Araçları
STR_REPLACE_TRAM_VEHICLES :Tramvay Araçları
STR_REPLACE_REMOVE_WAGON :{BLACK}Vagon kaldırma: {ORANGE}{STRING}
STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Otomatik yenilemede tren boyutunun artması gerekiyorsa vagonları kaldır (en önden başlayarak yeterli sayıda vagon silinir)
@ -4102,6 +4182,13 @@ STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Vurgulan
STR_AI_LIST_CANCEL :{BLACK}İptal
STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Betiği değiştirme
STR_SCREENSHOT_CAPTION :{WHITE}Ekran görüntüsü al
STR_SCREENSHOT_SCREENSHOT :{BLACK}Normal ekran görüntüsü
STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}Ekran görüntüsünü tamamen yakınlaştırdı
STR_SCREENSHOT_DEFAULTZOOM_SCREENSHOT :{BLACK}Varsayılan yakınlıkta ekran görüntüsü
STR_SCREENSHOT_WORLD_SCREENSHOT :{BLACK}Tüm haritanın ekran görüntüsünü al
STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Yükseklik haritası ekran görüntüsü
STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Küçük harita ekran görüntüsü
# AI Parameters
STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametreler
@ -4375,6 +4462,7 @@ STR_ERROR_NO_SUITABLE_RAILROAD_TRACK :{WHITE}Uygun ra
STR_ERROR_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Önce ray kaldırılmalı
STR_ERROR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Yol tek yönlü veya kapalı
STR_ERROR_CROSSING_DISALLOWED_RAIL :{WHITE}Bu ray türü için hemzemin geçit yapılamaz
STR_ERROR_CROSSING_DISALLOWED_ROAD :{WHITE}Hemzemin geçite bu yol tipinde izin verilmemektedir.
STR_ERROR_CAN_T_BUILD_SIGNALS_HERE :{WHITE}Buraya sinyal yapılamıyor...
STR_ERROR_CAN_T_BUILD_RAILROAD_TRACK :{WHITE}Buraya ray yapılamıyor...
STR_ERROR_CAN_T_REMOVE_RAILROAD_TRACK :{WHITE}Buradan ray kaldırılamıyor...
@ -4394,6 +4482,11 @@ STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Yol bura
STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Tramvay kaldırılamaz...
STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... karayolu yok
STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... tramvay yolu yok
STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Buradaki yol tipi değiştirilemiyor...
STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Tramvay türünü burada değiştiremezsiniz
STR_ERROR_NO_SUITABLE_ROAD :{WHITE} Uygun yol yok
STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Uygun olmayan tramvay
STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... uyumsuz tramvay
# Waterway construction errors
STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Buraya kanal yapılamaz...
@ -4446,6 +4539,7 @@ STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Grup olu
STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Bu grup silinemiyor...
STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Grubun ismi değiştirilemiyor...
STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Üst grup ayarlanamıyor...
STR_ERROR_GROUP_CAN_T_SET_PARENT_RECURSION :{WHITE}Grup hiyerarşisinde döngülere izin verilmez
STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Bu gruptaki bütün araçlar çıkartılamıyor...
STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Araç bu gruba eklenemiyor...
STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Paylaşılan araçlar bu gruba eklenemiyor...

@ -31,6 +31,8 @@
#include "tilehighlight_func.h"
#include "hotkeys.h"
#include "guitimer_func.h"
#include "error.h"
#include "news_gui.h"
#include "saveload/saveload.h"
@ -215,6 +217,8 @@ enum {
GHK_CHAT_ALL,
GHK_CHAT_COMPANY,
GHK_CHAT_SERVER,
GHK_CLOSE_NEWS,
GHK_CLOSE_ERROR,
GHK_CHANGE_MAP_MODE_PREV,
GHK_CHANGE_MAP_MODE_NEXT,
};
@ -414,6 +418,14 @@ struct MainWindow : Window
}
break;
case GHK_CLOSE_NEWS: // close active news window
if (!HideActiveNewsMessage()) return ES_NOT_HANDLED;
break;
case GHK_CLOSE_ERROR: // close active error window
if (!HideActiveErrorMessage()) return ES_NOT_HANDLED;
break;
case GHK_CHANGE_MAP_MODE_PREV:
if (_focused_window && _focused_window->viewport && _focused_window->viewport->zoom >= ZOOM_LVL_DRAW_MAP) {
ChangeRenderMode(_focused_window->viewport, true);
@ -540,6 +552,8 @@ static Hotkey global_hotkeys[] = {
Hotkey(_ghk_chat_all_keys, "chat_all", GHK_CHAT_ALL),
Hotkey(_ghk_chat_company_keys, "chat_company", GHK_CHAT_COMPANY),
Hotkey(_ghk_chat_server_keys, "chat_server", GHK_CHAT_SERVER),
Hotkey(WKC_SPACE, "close_news", GHK_CLOSE_NEWS),
Hotkey(WKC_SPACE, "close_error", GHK_CLOSE_ERROR),
Hotkey(WKC_PAGEUP, "previous_map_mode", GHK_CHANGE_MAP_MODE_PREV),
Hotkey(WKC_PAGEDOWN, "next_map_mode", GHK_CHANGE_MAP_MODE_NEXT),
HOTKEY_LIST_END

@ -1,4 +1,4 @@
if (NOT OPTION_DEDICATED)
if(NOT OPTION_DEDICATED)
add_files(
allegro_m.cpp
allegro_m.h
@ -42,7 +42,7 @@ if (NOT OPTION_DEDICATED)
os2_m.h
CONDITION OPTION_OS2
)
endif (NOT OPTION_DEDICATED)
endif()
add_files(
midi.h

@ -519,16 +519,6 @@ struct NewsWindow : Window {
}
}
EventState OnKeyPress(WChar key, uint16 keycode) override
{
if (keycode == WKC_SPACE) {
/* Don't continue. */
delete this;
return ES_HANDLED;
}
return ES_NOT_HANDLED;
}
/**
* Some data on this window has become invalid.
* @param data Information about the changed data.
@ -603,7 +593,6 @@ private:
/* static */ int NewsWindow::duration = 0; // Instance creation.
/** Open up an own newspaper window for the news item */
static void ShowNewspaper(const NewsItem *ni)
{
@ -1032,6 +1021,17 @@ static void ShowNewsMessage(const NewsItem *ni)
}
}
/**
* Close active news message window
* @return true if a window was closed.
*/
bool HideActiveNewsMessage() {
NewsWindow *w = (NewsWindow*)FindWindowById(WC_NEWS_WINDOW, 0);
if (w == nullptr) return false;
delete w;
return true;
}
/** Show previous news item */
void ShowLastNewsMessage()
{

@ -14,6 +14,7 @@
void ShowLastNewsMessage();
void ShowMessageHistory();
bool HideActiveNewsMessage();
extern NewsItem *_latest_news;

@ -1213,7 +1213,22 @@ void SwitchToMode(SwitchMode new_mode)
MakeNewEditorWorld();
break;
case SM_RESTARTGAME: // Restart --> 'Random game' with current settings
case SM_RESTARTGAME: // Restart --> Current settings preserved
if (_file_to_saveload.abstract_ftype == FT_SAVEGAME || _file_to_saveload.abstract_ftype == FT_SCENARIO) {
/* Restart current savegame/scenario */
_switch_mode = _game_mode == GM_EDITOR ? SM_LOAD_SCENARIO : SM_LOAD_GAME;
SwitchToMode(_switch_mode);
break;
} else if (_file_to_saveload.abstract_ftype == FT_HEIGHTMAP) {
/* Restart current heightmap */
_switch_mode = _game_mode == GM_EDITOR ? SM_LOAD_HEIGHTMAP : SM_RESTART_HEIGHTMAP;
SwitchToMode(_switch_mode);
break;
}
/* No break here, to enter the next case:
* Restart --> 'Random game' with current settings */
FALLTHROUGH;
case SM_NEWGAME: // New Game --> 'Random game'
if (_network_server) {
seprintf(_network_game_info.map_name, lastof(_network_game_info.map_name), "Random Map");
@ -1250,11 +1265,12 @@ void SwitchToMode(SwitchMode new_mode)
break;
}
case SM_RESTART_HEIGHTMAP: // Load a heightmap and start a new game from it with current settings
case SM_START_HEIGHTMAP: // Load a heightmap and start a new game from it
if (_network_server) {
seprintf(_network_game_info.map_name, lastof(_network_game_info.map_name), "%s (Heightmap)", _file_to_saveload.title);
}
MakeNewGame(true, true);
MakeNewGame(true, new_mode == SM_START_HEIGHTMAP);
break;
case SM_LOAD_HEIGHTMAP: // Load heightmap from scenario editor

@ -23,17 +23,18 @@ enum GameMode {
/** Mode which defines what mode we're switching to. */
enum SwitchMode {
SM_NONE,
SM_NEWGAME, ///< New Game --> 'Random game'.
SM_RESTARTGAME, ///< Restart --> 'Random game' with current settings.
SM_EDITOR, ///< Switch to scenario editor.
SM_LOAD_GAME, ///< Load game, Play Scenario.
SM_MENU, ///< Switch to game intro menu.
SM_SAVE_GAME, ///< Save game.
SM_SAVE_HEIGHTMAP, ///< Save heightmap.
SM_GENRANDLAND, ///< Generate random land within scenario editor.
SM_LOAD_SCENARIO, ///< Load scenario from scenario editor.
SM_START_HEIGHTMAP, ///< Load a heightmap and start a new game from it.
SM_LOAD_HEIGHTMAP, ///< Load heightmap from scenario editor.
SM_NEWGAME, ///< New Game --> 'Random game'.
SM_RESTARTGAME, ///< Restart --> 'Random game' with current settings.
SM_EDITOR, ///< Switch to scenario editor.
SM_LOAD_GAME, ///< Load game, Play Scenario.
SM_MENU, ///< Switch to game intro menu.
SM_SAVE_GAME, ///< Save game.
SM_SAVE_HEIGHTMAP, ///< Save heightmap.
SM_GENRANDLAND, ///< Generate random land within scenario editor.
SM_LOAD_SCENARIO, ///< Load scenario from scenario editor.
SM_START_HEIGHTMAP, ///< Load a heightmap and start a new game from it.
SM_LOAD_HEIGHTMAP, ///< Load heightmap from scenario editor.
SM_RESTART_HEIGHTMAP, ///< Load a heightmap and start a new game from it with current settings.
};
/** Display Options */

@ -8,7 +8,7 @@ foreach(ENUM IN LISTS ENUM_LINES)
string(REGEX REPLACE ".* ([^ @]+)@.*" "\\1" FILE_PATTERN "${ENUM}")
file(GLOB FILENAMES "${FILE_PATTERN}")
list(APPEND DEPENDENCIES ${FILENAMES})
endforeach(ENUM)
endforeach()
list(REMOVE_DUPLICATES DEPENDENCIES)
# Add a command to generate script_window.hpp
@ -40,9 +40,9 @@ foreach(API "ai;AI" "game;GS" "template;Template")
list(GET API 1 APIUC)
foreach(SCRIPT_API_FILE IN LISTS SCRIPT_API_FILES)
if ("${SCRIPT_API_FILE}" MATCHES ".*script_controller.*")
if("${SCRIPT_API_FILE}" MATCHES ".*script_controller.*")
continue()
endif ("${SCRIPT_API_FILE}" MATCHES ".*script_controller.*")
endif()
get_filename_component(SCRIPT_API_FILE_NAME "${SCRIPT_API_FILE}" NAME)
string(REPLACE "script_" "${APILC}_" SCRIPT_API_FILE_NAME "${SCRIPT_API_FILE_NAME}")
set(SCRIPT_API_BINARY_FILE "${CMAKE_BINARY_DIR}/generated/script/api/${APILC}/${SCRIPT_API_FILE_NAME}.sq")
@ -62,7 +62,7 @@ foreach(API "ai;AI" "game;GS" "template;Template")
COMMENT "Generating ${APILC}/${SCRIPT_API_FILE_NAME}.sq"
)
list(APPEND SCRIPT_${APIUC}_BINARY_FILES ${SCRIPT_API_BINARY_FILE})
endforeach(SCRIPT_API_FILE)
endforeach()
add_custom_target_timestamp(script_${APILC}
DEPENDS
@ -72,7 +72,7 @@ foreach(API "ai;AI" "game;GS" "template;Template")
script_window
)
if (NOT "${APILC}" STREQUAL "template")
if(NOT "${APILC}" STREQUAL "template")
list(APPEND SCRIPT_${APIUC}_BINARY_FILES "${CMAKE_CURRENT_SOURCE_DIR}/${APILC}/${APILC}_controller.hpp.sq")
set(INCLUDES_BINARY_FILE "${CMAKE_BINARY_DIR}/generated/script/api/${APILC}/${APILC}_includes.hpp")
add_custom_command_timestamp(OUTPUT ${INCLUDES_BINARY_FILE}
@ -100,11 +100,11 @@ foreach(API "ai;AI" "game;GS" "template;Template")
add_dependencies(script_api
script_${APILC}_includes
)
else (NOT "${APILC}" STREQUAL "template")
else()
add_dependencies(script_api
script_${APILC}
)
endif (NOT "${APILC}" STREQUAL "template")
endif()
target_include_directories(script_api
INTERFACE
@ -112,7 +112,7 @@ foreach(API "ai;AI" "game;GS" "template;Template")
${CMAKE_BINARY_DIR}/generated/script/api/${APILC}
${CMAKE_CURRENT_SOURCE_DIR}/${APILC}
)
endforeach(API)
endforeach()
add_library(openttd::script_api ALIAS script_api)

@ -1,4 +1,4 @@
if (NOT OPTION_DEDICATED)
if(NOT OPTION_DEDICATED)
add_files(
allegro_s.cpp
allegro_s.h
@ -34,7 +34,7 @@ if (NOT OPTION_DEDICATED)
xaudio2_s.h
CONDITION WIN32 AND XAUDIO2_FOUND
)
endif (NOT OPTION_DEDICATED)
endif()
add_files(
sound_driver.hpp

@ -23,6 +23,7 @@
#include "game/game.hpp"
#include "command_func.h"
#include "string_func.h"
#include "tile_cmd.h"
#include "table/strings.h"
@ -328,7 +329,14 @@ bool FindSubsidyTownCargoRoute()
const Town *src_town = Town::GetRandom();
if (src_town->cache.population < SUBSIDY_CARGO_MIN_POPULATION) return false;
CargoArray town_cargo_produced = GetProductionAroundTiles(src_town->xy, 1, 1, SUBSIDY_TOWN_CARGO_RADIUS);
/* Calculate the produced cargo of houses around town center. */
CargoArray town_cargo_produced;
TileArea ta = TileArea(src_town->xy, 1, 1).Expand(SUBSIDY_TOWN_CARGO_RADIUS);
TILE_AREA_LOOP(tile, ta) {
if (IsTileType(tile, MP_HOUSE)) {
AddProducedCargo(tile, town_cargo_produced);
}
}
/* Passenger subsidies are not handled here. */
town_cargo_produced[CT_PASSENGERS] = 0;
@ -431,7 +439,15 @@ bool FindSubsidyCargoDestination(CargoID cid, SourceType src_type, SourceID src)
case ST_TOWN: {
/* Select a random town. */
const Town *dst_town = Town::GetRandom();
CargoArray town_cargo_accepted = GetAcceptanceAroundTiles(dst_town->xy, 1, 1, SUBSIDY_TOWN_CARGO_RADIUS);
/* Calculate cargo acceptance of houses around town center. */
CargoArray town_cargo_accepted;
TileArea ta = TileArea(dst_town->xy, 1, 1).Expand(SUBSIDY_TOWN_CARGO_RADIUS);
TILE_AREA_LOOP(tile, ta) {
if (IsTileType(tile, MP_HOUSE)) {
AddAcceptedCargo(tile, town_cargo_accepted, nullptr);
}
}
/* Check if the town can accept this cargo. */
if (town_cargo_accepted[cid] < 8) return false;

@ -1,6 +1,6 @@
add_subdirectory(cocoa)
if (NOT OPTION_DEDICATED)
if(NOT OPTION_DEDICATED)
add_files(
allegro_v.cpp
allegro_v.h
@ -24,7 +24,7 @@ if (NOT OPTION_DEDICATED)
win32_v.h
CONDITION WIN32
)
endif (NOT OPTION_DEDICATED)
endif()
add_files(
dedicated_v.cpp

Loading…
Cancel
Save