Merge branch 'master' into jgrpp
# Conflicts: # cmake/CompileFlags.cmake # src/crashlog.cpp # src/fileio.cpp # src/fileio_func.h # src/fios_gui.cpp # src/ini_load.cpp # src/ini_type.h # src/lang/english.txt # src/lang/german.txt # src/lang/korean.txt # src/network/network_client.cpp # src/order_base.h # src/order_cmd.cpp # src/os/windows/win32.cpp # src/road_cmd.cpp # src/saveload/saveload.cpp # src/saveload/saveload.h # src/settings.cpp # src/station_cmd.cpp # src/stdafx.h # src/table/settings.ini # src/tree_cmd.cpp # src/tree_gui.cpp # src/vehicle_base.h # src/video/cocoa/cocoa_v.mm # src/video/cocoa/event.mm # src/video/cocoa/wnd_quartz.mm # src/viewport.cpp # src/widgets/tree_widget.h
This commit is contained in:
1
.github/workflows/ci-build.yml
vendored
1
.github/workflows/ci-build.yml
vendored
@@ -94,7 +94,6 @@ jobs:
|
|||||||
liblzo2-dev \
|
liblzo2-dev \
|
||||||
libsdl1.2-dev \
|
libsdl1.2-dev \
|
||||||
libsdl2-dev \
|
libsdl2-dev \
|
||||||
libxdg-basedir-dev \
|
|
||||||
zlib1g-dev \
|
zlib1g-dev \
|
||||||
# EOF
|
# EOF
|
||||||
echo "::endgroup::"
|
echo "::endgroup::"
|
||||||
|
9
.github/workflows/release.yml
vendored
9
.github/workflows/release.yml
vendored
@@ -479,8 +479,7 @@ jobs:
|
|||||||
useVcpkgToolchainFile: false
|
useVcpkgToolchainFile: false
|
||||||
buildDirectory: '${{ github.workspace }}/build-host'
|
buildDirectory: '${{ github.workspace }}/build-host'
|
||||||
buildWithCMakeArgs: '--target tools'
|
buildWithCMakeArgs: '--target tools'
|
||||||
cmakeBuildType: RelWithDebInfo
|
cmakeAppendedArgs: ' -GNinja -DOPTION_TOOLS_ONLY=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo'
|
||||||
cmakeAppendedArgs: ' -GNinja -DOPTION_TOOLS_ONLY=ON'
|
|
||||||
|
|
||||||
- name: Install MSVC problem matcher
|
- name: Install MSVC problem matcher
|
||||||
uses: ammaraskar/msvc-problem-matcher@master
|
uses: ammaraskar/msvc-problem-matcher@master
|
||||||
@@ -492,8 +491,7 @@ jobs:
|
|||||||
cmakeListsOrSettingsJson: CMakeListsTxtAdvanced
|
cmakeListsOrSettingsJson: CMakeListsTxtAdvanced
|
||||||
useVcpkgToolchainFile: true
|
useVcpkgToolchainFile: true
|
||||||
buildDirectory: '${{ github.workspace }}/build'
|
buildDirectory: '${{ github.workspace }}/build'
|
||||||
cmakeBuildType: RelWithDebInfo
|
cmakeAppendedArgs: ' -GNinja -DOPTION_USE_NSIS=ON -DHOST_BINARY_DIR=${{ github.workspace }}/build-host -DCMAKE_BUILD_TYPE=RelWithDebInfo'
|
||||||
cmakeAppendedArgs: ' -GNinja -DOPTION_USE_NSIS=ON -DHOST_BINARY_DIR=${{ github.workspace }}/build-host'
|
|
||||||
|
|
||||||
- name: Build (without installer)
|
- name: Build (without installer)
|
||||||
if: needs.source.outputs.is_tag != 'true' || matrix.arch == 'arm64'
|
if: needs.source.outputs.is_tag != 'true' || matrix.arch == 'arm64'
|
||||||
@@ -502,8 +500,7 @@ jobs:
|
|||||||
cmakeListsOrSettingsJson: CMakeListsTxtAdvanced
|
cmakeListsOrSettingsJson: CMakeListsTxtAdvanced
|
||||||
useVcpkgToolchainFile: true
|
useVcpkgToolchainFile: true
|
||||||
buildDirectory: '${{ github.workspace }}/build'
|
buildDirectory: '${{ github.workspace }}/build'
|
||||||
cmakeBuildType: RelWithDebInfo
|
cmakeAppendedArgs: ' -GNinja -DHOST_BINARY_DIR=${{ github.workspace }}/build-host -DCMAKE_BUILD_TYPE=RelWithDebInfo'
|
||||||
cmakeAppendedArgs: ' -GNinja -DHOST_BINARY_DIR=${{ github.workspace }}/build-host'
|
|
||||||
|
|
||||||
- name: Create bundles
|
- name: Create bundles
|
||||||
shell: bash
|
shell: bash
|
||||||
|
@@ -107,7 +107,6 @@ if(NOT WIN32)
|
|||||||
find_package(Fluidsynth)
|
find_package(Fluidsynth)
|
||||||
find_package(Fontconfig)
|
find_package(Fontconfig)
|
||||||
find_package(ICU OPTIONAL_COMPONENTS i18n lx)
|
find_package(ICU OPTIONAL_COMPONENTS i18n lx)
|
||||||
find_package(XDG_basedir)
|
|
||||||
else()
|
else()
|
||||||
find_package(Iconv)
|
find_package(Iconv)
|
||||||
|
|
||||||
@@ -264,7 +263,6 @@ link_package(PNG TARGET PNG::PNG ENCOURAGED)
|
|||||||
link_package(ZLIB TARGET ZLIB::ZLIB ENCOURAGED)
|
link_package(ZLIB TARGET ZLIB::ZLIB ENCOURAGED)
|
||||||
link_package(LIBLZMA TARGET LibLZMA::LibLZMA ENCOURAGED)
|
link_package(LIBLZMA TARGET LibLZMA::LibLZMA ENCOURAGED)
|
||||||
link_package(LZO)
|
link_package(LZO)
|
||||||
link_package(XDG_basedir)
|
|
||||||
|
|
||||||
if(NOT OPTION_DEDICATED)
|
if(NOT OPTION_DEDICATED)
|
||||||
link_package(Fluidsynth)
|
link_package(Fluidsynth)
|
||||||
@@ -291,7 +289,6 @@ if(APPLE)
|
|||||||
|
|
||||||
add_definitions(
|
add_definitions(
|
||||||
-DWITH_COCOA
|
-DWITH_COCOA
|
||||||
-DENABLE_COCOA_QUARTZ
|
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -301,6 +298,8 @@ if(EMSCRIPTEN)
|
|||||||
# Allow heap-growth, and start with a bigger memory size.
|
# Allow heap-growth, and start with a bigger memory size.
|
||||||
target_link_libraries(WASM::WASM INTERFACE "-s ALLOW_MEMORY_GROWTH=1")
|
target_link_libraries(WASM::WASM INTERFACE "-s ALLOW_MEMORY_GROWTH=1")
|
||||||
target_link_libraries(WASM::WASM INTERFACE "-s INITIAL_MEMORY=33554432")
|
target_link_libraries(WASM::WASM INTERFACE "-s INITIAL_MEMORY=33554432")
|
||||||
|
target_link_libraries(WASM::WASM INTERFACE "-s DISABLE_EXCEPTION_CATCHING=0")
|
||||||
|
add_definitions(-s DISABLE_EXCEPTION_CATCHING=0)
|
||||||
|
|
||||||
# Export functions to Javascript.
|
# Export functions to Javascript.
|
||||||
target_link_libraries(WASM::WASM INTERFACE "-s EXPORTED_FUNCTIONS='[\"_main\", \"_em_openttd_add_server\"]' -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"cwrap\"]'")
|
target_link_libraries(WASM::WASM INTERFACE "-s EXPORTED_FUNCTIONS='[\"_main\", \"_em_openttd_add_server\"]' -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"cwrap\"]'")
|
||||||
|
@@ -81,6 +81,9 @@ cmake ..
|
|||||||
make
|
make
|
||||||
```
|
```
|
||||||
|
|
||||||
|
For more information on how to use CMake (including how to make Release builds),
|
||||||
|
we urge you to read [their excellent manual](https://cmake.org/cmake/help/latest/guide/user-interaction/index.html).
|
||||||
|
|
||||||
## Supported compilers
|
## Supported compilers
|
||||||
|
|
||||||
Every compiler that is supported by CMake and supports C++17, should be
|
Every compiler that is supported by CMake and supports C++17, should be
|
||||||
|
@@ -133,10 +133,20 @@ macro(compile_flags)
|
|||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(APPLE)
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
|
||||||
add_compile_options(
|
add_compile_options(
|
||||||
-fno-stack-check
|
-fno-stack-check
|
||||||
)
|
)
|
||||||
|
|
||||||
|
include(CheckCXXCompilerFlag)
|
||||||
|
check_cxx_compiler_flag("-mno-sse4" NO_SSE4_FOUND)
|
||||||
|
|
||||||
|
if(NO_SSE4_FOUND)
|
||||||
|
add_compile_options(
|
||||||
|
# Don't use SSE4 for general sources to increase compatibility.
|
||||||
|
-mno-sse4
|
||||||
|
)
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
|
||||||
add_compile_options(
|
add_compile_options(
|
||||||
|
@@ -1,65 +0,0 @@
|
|||||||
#[=======================================================================[.rst:
|
|
||||||
FindXDG_basedir
|
|
||||||
-------
|
|
||||||
|
|
||||||
Finds the xdg-basedir library.
|
|
||||||
|
|
||||||
Result Variables
|
|
||||||
^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
This will define the following variables:
|
|
||||||
|
|
||||||
``XDG_basedir_FOUND``
|
|
||||||
True if the system has the xdg-basedir library.
|
|
||||||
``XDG_basedir_INCLUDE_DIRS``
|
|
||||||
Include directories needed to use xdg-basedir.
|
|
||||||
``XDG_basedir_LIBRARIES``
|
|
||||||
Libraries needed to link to xdg-basedir.
|
|
||||||
``XDG_basedir_VERSION``
|
|
||||||
The version of the xdg-basedir library which was found.
|
|
||||||
|
|
||||||
Cache Variables
|
|
||||||
^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
The following cache variables may also be set:
|
|
||||||
|
|
||||||
``XDG_basedir_INCLUDE_DIR``
|
|
||||||
The directory containing ``xdg-basedir.h``.
|
|
||||||
``XDG_basedir_LIBRARY``
|
|
||||||
The path to the xdg-basedir library.
|
|
||||||
|
|
||||||
#]=======================================================================]
|
|
||||||
|
|
||||||
find_package(PkgConfig QUIET)
|
|
||||||
pkg_check_modules(PC_XDG_basedir QUIET libxdg-basedir)
|
|
||||||
|
|
||||||
find_path(XDG_basedir_INCLUDE_DIR
|
|
||||||
NAMES basedir.h
|
|
||||||
PATHS ${PC_XDG_basedir_INCLUDE_DIRS}
|
|
||||||
)
|
|
||||||
|
|
||||||
find_library(XDG_basedir_LIBRARY
|
|
||||||
NAMES xdg-basedir
|
|
||||||
PATHS ${PC_XDG_basedir_LIBRARY_DIRS}
|
|
||||||
)
|
|
||||||
|
|
||||||
set(XDG_basedir_VERSION ${PC_XDG_basedir_VERSION})
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
find_package_handle_standard_args(XDG_basedir
|
|
||||||
FOUND_VAR XDG_basedir_FOUND
|
|
||||||
REQUIRED_VARS
|
|
||||||
XDG_basedir_LIBRARY
|
|
||||||
XDG_basedir_INCLUDE_DIR
|
|
||||||
VERSION_VAR XDG_basedir_VERSION
|
|
||||||
)
|
|
||||||
|
|
||||||
if(XDG_basedir_FOUND)
|
|
||||||
set(XDG_basedir_LIBRARIES ${XDG_basedir_LIBRARY})
|
|
||||||
set(XDG_basedir_INCLUDE_DIRS ${XDG_basedir_INCLUDE_DIR})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
mark_as_advanced(
|
|
||||||
XDG_basedir_INCLUDE_DIR
|
|
||||||
XDG_basedir_LIBRARY
|
|
||||||
)
|
|
@@ -123,12 +123,8 @@ elseif(UNIX)
|
|||||||
OUTPUT_VARIABLE LSB_RELEASE_ID
|
OUTPUT_VARIABLE LSB_RELEASE_ID
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
)
|
)
|
||||||
if(NOT LSB_RELEASE_ID)
|
if(LSB_RELEASE_ID)
|
||||||
set(PLATFORM "generic")
|
if(LSB_RELEASE_ID STREQUAL "Ubuntu" OR LSB_RELEASE_ID STREQUAL "Debian")
|
||||||
set(CPACK_GENERATOR "TXZ")
|
|
||||||
|
|
||||||
message(WARNING "Unknown Linux distribution found for packaging; can only pack to a txz. Please consider creating a Pull Request to add support for this distribution.")
|
|
||||||
elseif(LSB_RELEASE_ID STREQUAL "Ubuntu" OR LSB_RELEASE_ID STREQUAL "Debian")
|
|
||||||
execute_process(COMMAND ${LSB_RELEASE_EXEC} -cs
|
execute_process(COMMAND ${LSB_RELEASE_EXEC} -cs
|
||||||
OUTPUT_VARIABLE LSB_RELEASE_CODENAME
|
OUTPUT_VARIABLE LSB_RELEASE_CODENAME
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
@@ -138,10 +134,26 @@ elseif(UNIX)
|
|||||||
set(CPACK_GENERATOR "DEB")
|
set(CPACK_GENERATOR "DEB")
|
||||||
include(PackageDeb)
|
include(PackageDeb)
|
||||||
else()
|
else()
|
||||||
set(PLATFORM "unknown")
|
set(UNSUPPORTED_PLATFORM_NAME "LSB-based Linux distribution '${LSB_RELEASE_ID}'")
|
||||||
|
endif()
|
||||||
|
elseif(EXISTS "/etc/os-release")
|
||||||
|
file(STRINGS "/etc/os-release" OS_RELEASE_CONTENTS REGEX "^ID=")
|
||||||
|
string(REGEX MATCH "ID=(.*)" _ ${OS_RELEASE_CONTENTS})
|
||||||
|
set(DISTRO_ID ${CMAKE_MATCH_1})
|
||||||
|
if(DISTRO_ID STREQUAL "arch")
|
||||||
|
set(PLATFORM "generic")
|
||||||
set(CPACK_GENERATOR "TXZ")
|
set(CPACK_GENERATOR "TXZ")
|
||||||
|
else()
|
||||||
|
set(UNSUPPORTED_PLATFORM_NAME "Linux distribution '${DISTRO_ID}' from /etc/os-release")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
set(UNSUPPORTED_PLATFORM_NAME "Linux distribution")
|
||||||
|
endif()
|
||||||
|
|
||||||
message(WARNING "Unknown LSB-based Linux distribution '${LSB_RELEASE_ID}' found for packaging; can only pack to a txz. Please consider creating a Pull Request to add support for this distribution.")
|
if(NOT PLATFORM)
|
||||||
|
set(PLATFORM "generic")
|
||||||
|
set(CPACK_GENERATOR "TXZ")
|
||||||
|
message(WARNING "Unknown ${UNSUPPORTED_PLATFORM_NAME} found for packaging; can only pack to a txz. Please consider creating a Pull Request to add support for this distribution.")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(CPACK_PACKAGE_FILE_NAME "openttd-#CPACK_PACKAGE_VERSION#-linux-${PLATFORM}-${CPACK_SYSTEM_NAME}")
|
set(CPACK_PACKAGE_FILE_NAME "openttd-#CPACK_PACKAGE_VERSION#-linux-${PLATFORM}-${CPACK_SYSTEM_NAME}")
|
||||||
|
@@ -8,6 +8,7 @@ source_group("MD5" REGULAR_EXPRESSION "src/3rdparty/md5/")
|
|||||||
source_group("Misc" REGULAR_EXPRESSION "src/misc/")
|
source_group("Misc" REGULAR_EXPRESSION "src/misc/")
|
||||||
source_group("Music" REGULAR_EXPRESSION "src/music/")
|
source_group("Music" REGULAR_EXPRESSION "src/music/")
|
||||||
source_group("Network Core" REGULAR_EXPRESSION "src/network/core/")
|
source_group("Network Core" REGULAR_EXPRESSION "src/network/core/")
|
||||||
|
source_group("OSX" REGULAR_EXPRESSION "src/os/macosx/")
|
||||||
source_group("Pathfinder" REGULAR_EXPRESSION "src/pathfinder/")
|
source_group("Pathfinder" REGULAR_EXPRESSION "src/pathfinder/")
|
||||||
source_group("Save/Load handlers" REGULAR_EXPRESSION "src/saveload/")
|
source_group("Save/Load handlers" REGULAR_EXPRESSION "src/saveload/")
|
||||||
source_group("Sound" REGULAR_EXPRESSION "src/sound/")
|
source_group("Sound" REGULAR_EXPRESSION "src/sound/")
|
||||||
|
@@ -97,6 +97,8 @@ struct AIListWindow : public Window {
|
|||||||
this->selected = i;
|
this->selected = i;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -324,8 +326,6 @@ struct AISettingsWindow : public Window {
|
|||||||
this->vscroll = this->GetScrollbar(WID_AIS_SCROLLBAR);
|
this->vscroll = this->GetScrollbar(WID_AIS_SCROLLBAR);
|
||||||
this->FinishInitNested(slot); // Initializes 'this->line_height' as side effect.
|
this->FinishInitNested(slot); // Initializes 'this->line_height' as side effect.
|
||||||
|
|
||||||
this->SetWidgetDisabledState(WID_AIS_RESET, _game_mode != GM_MENU && Company::IsValidID(this->slot));
|
|
||||||
|
|
||||||
this->RebuildVisibleSettings();
|
this->RebuildVisibleSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -533,10 +533,8 @@ struct AISettingsWindow : public Window {
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case WID_AIS_RESET:
|
case WID_AIS_RESET:
|
||||||
if (_game_mode == GM_MENU || !Company::IsValidID(this->slot)) {
|
this->ai_config->ResetEditableSettings(_game_mode == GM_MENU || ((this->slot != OWNER_DEITY) && !Company::IsValidID(this->slot)));
|
||||||
this->ai_config->ResetSettings();
|
|
||||||
this->SetDirty();
|
this->SetDirty();
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -32,8 +32,7 @@ void AIScannerInfo::Initialize()
|
|||||||
ScriptAllocatorScope alloc_scope(this->engine);
|
ScriptAllocatorScope alloc_scope(this->engine);
|
||||||
|
|
||||||
/* Create the dummy AI */
|
/* Create the dummy AI */
|
||||||
free(this->main_script);
|
this->main_script = "%_dummy";
|
||||||
this->main_script = stredup("%_dummy");
|
|
||||||
extern void Script_CreateDummyInfo(HSQUIRRELVM vm, const char *type, const char *dir);
|
extern void Script_CreateDummyInfo(HSQUIRRELVM vm, const char *type, const char *dir);
|
||||||
Script_CreateDummyInfo(this->engine->GetVM(), "AI", "ai");
|
Script_CreateDummyInfo(this->engine->GetVM(), "AI", "ai");
|
||||||
}
|
}
|
||||||
|
@@ -180,9 +180,8 @@ static bool VerifyAutoreplaceRefitForOrders(const Vehicle *v, EngineID engine_ty
|
|||||||
CargoTypes union_refit_mask_a = GetUnionOfArticulatedRefitMasks(v->engine_type, false);
|
CargoTypes union_refit_mask_a = GetUnionOfArticulatedRefitMasks(v->engine_type, false);
|
||||||
CargoTypes union_refit_mask_b = GetUnionOfArticulatedRefitMasks(engine_type, false);
|
CargoTypes union_refit_mask_b = GetUnionOfArticulatedRefitMasks(engine_type, false);
|
||||||
|
|
||||||
const Order *o;
|
|
||||||
const Vehicle *u = (v->type == VEH_TRAIN) ? v->First() : v;
|
const Vehicle *u = (v->type == VEH_TRAIN) ? v->First() : v;
|
||||||
FOR_VEHICLE_ORDERS(u, o) {
|
for (const Order *o : u->Orders()) {
|
||||||
if (!o->IsRefit() || o->IsAutoRefit()) continue;
|
if (!o->IsRefit() || o->IsAutoRefit()) continue;
|
||||||
CargoID cargo_type = o->GetRefitCargo();
|
CargoID cargo_type = o->GetRefitCargo();
|
||||||
|
|
||||||
|
@@ -167,7 +167,7 @@ protected:
|
|||||||
static Tbase_set *duplicate_sets; ///< All sets that aren't available, but needed for not downloading base sets when a newer version than the one on BaNaNaS is loaded.
|
static Tbase_set *duplicate_sets; ///< All sets that aren't available, but needed for not downloading base sets when a newer version than the one on BaNaNaS is loaded.
|
||||||
static const Tbase_set *used_set; ///< The currently used set
|
static const Tbase_set *used_set; ///< The currently used set
|
||||||
|
|
||||||
bool AddFile(const char *filename, size_t basepath_length, const char *tar_filename) override;
|
bool AddFile(const std::string &filename, size_t basepath_length, const std::string &tar_filename) override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the extension that is used to identify this set.
|
* Get the extension that is used to identify this set.
|
||||||
|
@@ -150,24 +150,24 @@ bool BaseSet<T, Tnum_files, Tsearch_in_tars>::FillSetDetails(IniFile *ini, const
|
|||||||
}
|
}
|
||||||
|
|
||||||
template <class Tbase_set>
|
template <class Tbase_set>
|
||||||
bool BaseMedia<Tbase_set>::AddFile(const char *filename, size_t basepath_length, const char *tar_filename)
|
bool BaseMedia<Tbase_set>::AddFile(const std::string &filename, size_t basepath_length, const std::string &tar_filename)
|
||||||
{
|
{
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
DEBUG(grf, 1, "Checking %s for base " SET_TYPE " set", filename);
|
DEBUG(grf, 1, "Checking %s for base " SET_TYPE " set", filename.c_str());
|
||||||
|
|
||||||
Tbase_set *set = new Tbase_set();
|
Tbase_set *set = new Tbase_set();
|
||||||
IniFile *ini = new IniFile();
|
IniFile *ini = new IniFile();
|
||||||
char *path = stredup(filename + basepath_length);
|
std::string path{ filename, basepath_length };
|
||||||
ini->LoadFromDisk(path, BASESET_DIR);
|
ini->LoadFromDisk(path, BASESET_DIR);
|
||||||
|
|
||||||
char *psep = strrchr(path, PATHSEPCHAR);
|
auto psep = path.rfind(PATHSEPCHAR);
|
||||||
if (psep != nullptr) {
|
if (psep != std::string::npos) {
|
||||||
psep[1] = '\0';
|
path.erase(psep + 1);
|
||||||
} else {
|
} else {
|
||||||
*path = '\0';
|
path.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (set->FillSetDetails(ini, path, filename)) {
|
if (set->FillSetDetails(ini, path.c_str(), filename.c_str())) {
|
||||||
Tbase_set *duplicate = nullptr;
|
Tbase_set *duplicate = nullptr;
|
||||||
for (Tbase_set *c = BaseMedia<Tbase_set>::available_sets; c != nullptr; c = c->next) {
|
for (Tbase_set *c = BaseMedia<Tbase_set>::available_sets; c != nullptr; c = c->next) {
|
||||||
if (c->name == set->name || c->shortname == set->shortname) {
|
if (c->name == set->name || c->shortname == set->shortname) {
|
||||||
@@ -214,7 +214,6 @@ bool BaseMedia<Tbase_set>::AddFile(const char *filename, size_t basepath_length,
|
|||||||
} else {
|
} else {
|
||||||
delete set;
|
delete set;
|
||||||
}
|
}
|
||||||
free(path);
|
|
||||||
|
|
||||||
delete ini;
|
delete ini;
|
||||||
return ret;
|
return ret;
|
||||||
@@ -378,7 +377,7 @@ template <class Tbase_set>
|
|||||||
#define INSTANTIATE_BASE_MEDIA_METHODS(repl_type, set_type) \
|
#define INSTANTIATE_BASE_MEDIA_METHODS(repl_type, set_type) \
|
||||||
template std::string repl_type::ini_set; \
|
template std::string repl_type::ini_set; \
|
||||||
template const char *repl_type::GetExtension(); \
|
template const char *repl_type::GetExtension(); \
|
||||||
template bool repl_type::AddFile(const char *filename, size_t pathlength, const char *tar_filename); \
|
template bool repl_type::AddFile(const std::string &filename, size_t pathlength, const std::string &tar_filename); \
|
||||||
template bool repl_type::HasSet(const struct ContentInfo *ci, bool md5sum); \
|
template bool repl_type::HasSet(const struct ContentInfo *ci, bool md5sum); \
|
||||||
template bool repl_type::SetSet(const std::string &name); \
|
template bool repl_type::SetSet(const std::string &name); \
|
||||||
template char *repl_type::GetSetsList(char *p, const char *last); \
|
template char *repl_type::GetSetsList(char *p, const char *last); \
|
||||||
|
@@ -31,7 +31,7 @@ public:
|
|||||||
uint8 m;
|
uint8 m;
|
||||||
uint8 v;
|
uint8 v;
|
||||||
};
|
};
|
||||||
assert_compile(sizeof(MapValue) == 2);
|
static_assert(sizeof(MapValue) == 2);
|
||||||
|
|
||||||
/** Helper for creating specialised functions for specific optimisations. */
|
/** Helper for creating specialised functions for specific optimisations. */
|
||||||
enum ReadMode {
|
enum ReadMode {
|
||||||
|
@@ -47,8 +47,8 @@ enum CargoCompanyBits {
|
|||||||
CCB_COMPANY_LENGTH = 4, ///< Number of bits of the company field.
|
CCB_COMPANY_LENGTH = 4, ///< Number of bits of the company field.
|
||||||
};
|
};
|
||||||
|
|
||||||
assert_compile(NUM_CARGO <= (1 << CCB_CARGO_TYPE_LENGTH));
|
static_assert(NUM_CARGO <= (1 << CCB_CARGO_TYPE_LENGTH));
|
||||||
assert_compile(MAX_COMPANIES <= (1 << CCB_COMPANY_LENGTH));
|
static_assert(MAX_COMPANIES <= (1 << CCB_COMPANY_LENGTH));
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -740,8 +740,8 @@ void VehicleCargoList::InvalidateCache()
|
|||||||
template<VehicleCargoList::MoveToAction Tfrom, VehicleCargoList::MoveToAction Tto>
|
template<VehicleCargoList::MoveToAction Tfrom, VehicleCargoList::MoveToAction Tto>
|
||||||
uint VehicleCargoList::Reassign(uint max_move, TileOrStationID)
|
uint VehicleCargoList::Reassign(uint max_move, TileOrStationID)
|
||||||
{
|
{
|
||||||
assert_tcompile(Tfrom != MTA_TRANSFER && Tto != MTA_TRANSFER);
|
static_assert(Tfrom != MTA_TRANSFER && Tto != MTA_TRANSFER);
|
||||||
assert_tcompile(Tfrom - Tto == 1 || Tto - Tfrom == 1);
|
static_assert(Tfrom - Tto == 1 || Tto - Tfrom == 1);
|
||||||
max_move = min(this->action_counts[Tfrom], max_move);
|
max_move = min(this->action_counts[Tfrom], max_move);
|
||||||
this->action_counts[Tfrom] -= max_move;
|
this->action_counts[Tfrom] -= max_move;
|
||||||
this->action_counts[Tto] += max_move;
|
this->action_counts[Tto] += max_move;
|
||||||
|
@@ -205,7 +205,7 @@ static bool IsCheatAllowed(CheatNetworkMode mode)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
assert_compile(CHT_NUM_CHEATS == lengthof(_cheats_ui));
|
static_assert(CHT_NUM_CHEATS == lengthof(_cheats_ui));
|
||||||
|
|
||||||
/** Widget definitions of the cheat GUI. */
|
/** Widget definitions of the cheat GUI. */
|
||||||
static const NWidgetPart _nested_cheat_widgets[] = {
|
static const NWidgetPart _nested_cheat_widgets[] = {
|
||||||
|
@@ -24,9 +24,9 @@
|
|||||||
template<typename T, uint S, uint N, typename U> static inline T Extract(U v)
|
template<typename T, uint S, uint N, typename U> static inline T Extract(U v)
|
||||||
{
|
{
|
||||||
/* Check if there are enough bits in v */
|
/* Check if there are enough bits in v */
|
||||||
assert_tcompile(N == EnumPropsT<T>::num_bits);
|
static_assert(N == EnumPropsT<T>::num_bits);
|
||||||
assert_tcompile(S + N <= sizeof(U) * 8);
|
static_assert(S + N <= sizeof(U) * 8);
|
||||||
assert_tcompile(EnumPropsT<T>::end <= (1 << N));
|
static_assert(EnumPropsT<T>::end <= (1 << N));
|
||||||
U masked = GB(v, S, N);
|
U masked = GB(v, S, N);
|
||||||
return IsInsideMM(masked, EnumPropsT<T>::begin, EnumPropsT<T>::end) ? (T)masked : EnumPropsT<T>::invalid;
|
return IsInsideMM(masked, EnumPropsT<T>::begin, EnumPropsT<T>::end) ? (T)masked : EnumPropsT<T>::invalid;
|
||||||
}
|
}
|
||||||
|
@@ -672,7 +672,7 @@ bool IsCommandAllowedWhilePaused(uint32 cmd)
|
|||||||
CMDPL_NO_ACTIONS, ///< CMDT_SERVER_SETTING
|
CMDPL_NO_ACTIONS, ///< CMDT_SERVER_SETTING
|
||||||
CMDPL_NO_ACTIONS, ///< CMDT_CHEAT
|
CMDPL_NO_ACTIONS, ///< CMDT_CHEAT
|
||||||
};
|
};
|
||||||
assert_compile(lengthof(command_type_lookup) == CMDT_END);
|
static_assert(lengthof(command_type_lookup) == CMDT_END);
|
||||||
|
|
||||||
assert(IsValidCommand(cmd));
|
assert(IsValidCommand(cmd));
|
||||||
return _game_mode == GM_EDITOR || command_type_lookup[_command_proc_table[cmd & CMD_ID_MASK].type] <= _settings_game.construction.command_pause_level;
|
return _game_mode == GM_EDITOR || command_type_lookup[_command_proc_table[cmd & CMD_ID_MASK].type] <= _settings_game.construction.command_pause_level;
|
||||||
|
@@ -2469,7 +2469,7 @@ struct CompanyWindow : Window
|
|||||||
if (amounts[0] + amounts[1] + amounts[2] + amounts[3] == 0) {
|
if (amounts[0] + amounts[1] + amounts[2] + amounts[3] == 0) {
|
||||||
DrawString(r.left, r.right, y, STR_COMPANY_VIEW_VEHICLES_NONE);
|
DrawString(r.left, r.right, y, STR_COMPANY_VIEW_VEHICLES_NONE);
|
||||||
} else {
|
} else {
|
||||||
assert_compile(lengthof(amounts) == lengthof(_company_view_vehicle_count_strings));
|
static_assert(lengthof(amounts) == lengthof(_company_view_vehicle_count_strings));
|
||||||
|
|
||||||
for (uint i = 0; i < lengthof(amounts); i++) {
|
for (uint i = 0; i < lengthof(amounts); i++) {
|
||||||
if (amounts[i] != 0) {
|
if (amounts[i] != 0) {
|
||||||
|
@@ -83,7 +83,7 @@ static const CompanyManagerFaceBitsInfo _cmf_info[] = {
|
|||||||
/* CMFV_GLASSES */ { 31, 1, { 2, 2, 2, 2 }, { 0x347, 0x347, 0x3AE, 0x3AE } } ///< Depends on CMFV_HAS_GLASSES
|
/* CMFV_GLASSES */ { 31, 1, { 2, 2, 2, 2 }, { 0x347, 0x347, 0x3AE, 0x3AE } } ///< Depends on CMFV_HAS_GLASSES
|
||||||
};
|
};
|
||||||
/** Make sure the table's size is right. */
|
/** Make sure the table's size is right. */
|
||||||
assert_compile(lengthof(_cmf_info) == CMFV_END);
|
static_assert(lengthof(_cmf_info) == CMFV_END);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the company manager's face bits for the given company manager's face variable
|
* Gets the company manager's face bits for the given company manager's face variable
|
||||||
|
@@ -1903,7 +1903,7 @@ struct ConsoleContentCallback : public ContentCallback {
|
|||||||
static void OutputContentState(const ContentInfo *const ci)
|
static void OutputContentState(const ContentInfo *const ci)
|
||||||
{
|
{
|
||||||
static const char * const types[] = { "Base graphics", "NewGRF", "AI", "AI library", "Scenario", "Heightmap", "Base sound", "Base music", "Game script", "GS library" };
|
static const char * const types[] = { "Base graphics", "NewGRF", "AI", "AI library", "Scenario", "Heightmap", "Base sound", "Base music", "Game script", "GS library" };
|
||||||
assert_compile(lengthof(types) == CONTENT_TYPE_END - CONTENT_TYPE_BEGIN);
|
static_assert(lengthof(types) == CONTENT_TYPE_END - CONTENT_TYPE_BEGIN);
|
||||||
static const char * const states[] = { "Not selected", "Selected", "Dep Selected", "Installed", "Unknown" };
|
static const char * const states[] = { "Not selected", "Selected", "Dep Selected", "Installed", "Unknown" };
|
||||||
static const TextColour state_to_colour[] = { CC_COMMAND, CC_INFO, CC_INFO, CC_WHITE, CC_ERROR };
|
static const TextColour state_to_colour[] = { CC_COMMAND, CC_INFO, CC_INFO, CC_WHITE, CC_ERROR };
|
||||||
|
|
||||||
|
@@ -112,7 +112,7 @@ static inline T Align(const T x, uint n)
|
|||||||
template <typename T>
|
template <typename T>
|
||||||
static inline T *AlignPtr(T *x, uint n)
|
static inline T *AlignPtr(T *x, uint n)
|
||||||
{
|
{
|
||||||
assert_compile(sizeof(size_t) == sizeof(void *));
|
static_assert(sizeof(size_t) == sizeof(void *));
|
||||||
return reinterpret_cast<T *>(Align((size_t)x, n));
|
return reinterpret_cast<T *>(Align((size_t)x, n));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -80,7 +80,7 @@ private:
|
|||||||
template <class Titem, typename Tindex, size_t Tgrowth_step, size_t Tmax_size, PoolType Tpool_type = PT_NORMAL, bool Tcache = false, bool Tzero = true>
|
template <class Titem, typename Tindex, size_t Tgrowth_step, size_t Tmax_size, PoolType Tpool_type = PT_NORMAL, bool Tcache = false, bool Tzero = true>
|
||||||
struct Pool : PoolBase {
|
struct Pool : PoolBase {
|
||||||
/* Ensure Tmax_size is within the bounds of Tindex. */
|
/* Ensure Tmax_size is within the bounds of Tindex. */
|
||||||
assert_compile((uint64)(Tmax_size - 1) >> 8 * sizeof(Tindex) == 0);
|
static_assert((uint64)(Tmax_size - 1) >> 8 * sizeof(Tindex) == 0);
|
||||||
|
|
||||||
static const size_t MAX_SIZE = Tmax_size; ///< Make template parameter accessible from outside
|
static const size_t MAX_SIZE = Tmax_size; ///< Make template parameter accessible from outside
|
||||||
|
|
||||||
|
@@ -66,6 +66,12 @@ uint64 ottd_rdtsc()
|
|||||||
# define RDTSC_AVAILABLE
|
# define RDTSC_AVAILABLE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__EMSCRIPTEN__) && !defined(RDTSC_AVAILABLE)
|
||||||
|
/* On emscripten doing TIC/TOC would be ill-advised */
|
||||||
|
uint64 ottd_rdtsc() {return 0;}
|
||||||
|
# define RDTSC_AVAILABLE
|
||||||
|
#endif
|
||||||
|
|
||||||
/* In all other cases we have no support for rdtsc. No major issue,
|
/* In all other cases we have no support for rdtsc. No major issue,
|
||||||
* you just won't be able to profile your code with TIC()/TOC() */
|
* you just won't be able to profile your code with TIC()/TOC() */
|
||||||
#if !defined(RDTSC_AVAILABLE)
|
#if !defined(RDTSC_AVAILABLE)
|
||||||
|
@@ -548,7 +548,7 @@ char *CrashLog::FillVersionInfoLog(char *buffer, const char *last) const
|
|||||||
*/
|
*/
|
||||||
bool CrashLog::WriteCrashLog(const char *buffer, char *filename, const char *filename_last, const char *name, FILE **crashlog_file) const
|
bool CrashLog::WriteCrashLog(const char *buffer, char *filename, const char *filename_last, const char *name, FILE **crashlog_file) const
|
||||||
{
|
{
|
||||||
seprintf(filename, filename_last, "%s%s.log", _personal_dir, name);
|
seprintf(filename, filename_last, "%s%s.log", _personal_dir.c_str(), name);
|
||||||
|
|
||||||
FILE *file = FioFOpenFile(filename, "w", NO_DIRECTORY);
|
FILE *file = FioFOpenFile(filename, "w", NO_DIRECTORY);
|
||||||
if (file == nullptr) return false;
|
if (file == nullptr) return false;
|
||||||
@@ -587,7 +587,7 @@ bool CrashLog::WriteSavegame(char *filename, const char *filename_last, const ch
|
|||||||
try {
|
try {
|
||||||
GamelogEmergency();
|
GamelogEmergency();
|
||||||
|
|
||||||
seprintf(filename, filename_last, "%s%s.sav", _personal_dir, name);
|
seprintf(filename, filename_last, "%s%s.sav", _personal_dir.c_str(), name);
|
||||||
|
|
||||||
/* Don't do a threaded saveload. */
|
/* Don't do a threaded saveload. */
|
||||||
return SaveOrLoad(filename, SLO_SAVE, DFT_GAME_FILE, NO_DIRECTORY, false) == SL_OK;
|
return SaveOrLoad(filename, SLO_SAVE, DFT_GAME_FILE, NO_DIRECTORY, false) == SL_OK;
|
||||||
|
@@ -148,9 +148,7 @@ protected:
|
|||||||
|
|
||||||
for (const Vehicle *v : Vehicle::Iterate()) {
|
for (const Vehicle *v : Vehicle::Iterate()) {
|
||||||
if (v->type < 4 && this->show_types[v->type] && v->IsPrimaryVehicle()) {
|
if (v->type < 4 && this->show_types[v->type] && v->IsPrimaryVehicle()) {
|
||||||
const Order *order;
|
for(const Order *order : v->Orders()) {
|
||||||
|
|
||||||
FOR_VEHICLE_ORDERS(v, order) {
|
|
||||||
if ((order->IsType(OT_GOTO_STATION) || order->IsType(OT_GOTO_WAYPOINT) || order->IsType(OT_IMPLICIT))
|
if ((order->IsType(OT_GOTO_STATION) || order->IsType(OT_GOTO_WAYPOINT) || order->IsType(OT_IMPLICIT))
|
||||||
&& order->GetDestination() == this->station) {
|
&& order->GetDestination() == this->station) {
|
||||||
this->vehicles.push_back(v);
|
this->vehicles.push_back(v);
|
||||||
|
@@ -1342,7 +1342,7 @@ void PrepareUnload(Vehicle *front_v)
|
|||||||
assert(front_v->cargo_payment == nullptr);
|
assert(front_v->cargo_payment == nullptr);
|
||||||
/* One CargoPayment per vehicle and the vehicle limit equals the
|
/* One CargoPayment per vehicle and the vehicle limit equals the
|
||||||
* limit in number of CargoPayments. Can't go wrong. */
|
* limit in number of CargoPayments. Can't go wrong. */
|
||||||
assert_compile(CargoPaymentPool::MAX_SIZE == VehiclePool::MAX_SIZE);
|
static_assert(CargoPaymentPool::MAX_SIZE == VehiclePool::MAX_SIZE);
|
||||||
assert(CargoPayment::CanAllocateItem());
|
assert(CargoPayment::CanAllocateItem());
|
||||||
front_v->cargo_payment = new CargoPayment(front_v);
|
front_v->cargo_payment = new CargoPayment(front_v);
|
||||||
|
|
||||||
|
@@ -224,6 +224,10 @@ static const int INVALID_PRICE_MODIFIER = MIN_PRICE_MODIFIER - 1;
|
|||||||
static const uint TUNNELBRIDGE_TRACKBIT_FACTOR = 4;
|
static const uint TUNNELBRIDGE_TRACKBIT_FACTOR = 4;
|
||||||
/** Multiplier for how many regular track bits a level crossing counts. */
|
/** Multiplier for how many regular track bits a level crossing counts. */
|
||||||
static const uint LEVELCROSSING_TRACKBIT_FACTOR = 2;
|
static const uint LEVELCROSSING_TRACKBIT_FACTOR = 2;
|
||||||
|
/** Multiplier for how many regular track bits a road depot counts. */
|
||||||
|
static const uint ROAD_DEPOT_TRACKBIT_FACTOR = 2;
|
||||||
|
/** Multiplier for how many regular track bits a bay stop counts. */
|
||||||
|
static const uint ROAD_STOP_TRACKBIT_FACTOR = 2;
|
||||||
/** Multiplier for how many regular tiles a lock counts. */
|
/** Multiplier for how many regular tiles a lock counts. */
|
||||||
static const uint LOCK_DEPOT_TILE_FACTOR = 2;
|
static const uint LOCK_DEPOT_TILE_FACTOR = 2;
|
||||||
|
|
||||||
|
@@ -572,7 +572,7 @@ static EffectInitProc * const _effect_init_procs[] = {
|
|||||||
SmokeInit, // EV_BREAKDOWN_SMOKE_AIRCRAFT
|
SmokeInit, // EV_BREAKDOWN_SMOKE_AIRCRAFT
|
||||||
SmokeInit, // EV_COPPER_MINE_SMOKE
|
SmokeInit, // EV_COPPER_MINE_SMOKE
|
||||||
};
|
};
|
||||||
assert_compile(lengthof(_effect_init_procs) == EV_END);
|
static_assert(lengthof(_effect_init_procs) == EV_END);
|
||||||
|
|
||||||
/** Functions for controlling effect vehicles at each tick. */
|
/** Functions for controlling effect vehicles at each tick. */
|
||||||
static EffectTickProc * const _effect_tick_procs[] = {
|
static EffectTickProc * const _effect_tick_procs[] = {
|
||||||
@@ -589,7 +589,7 @@ static EffectTickProc * const _effect_tick_procs[] = {
|
|||||||
SmokeTick, // EV_BREAKDOWN_SMOKE_AIRCRAFT
|
SmokeTick, // EV_BREAKDOWN_SMOKE_AIRCRAFT
|
||||||
SmokeTick, // EV_COPPER_MINE_SMOKE
|
SmokeTick, // EV_COPPER_MINE_SMOKE
|
||||||
};
|
};
|
||||||
assert_compile(lengthof(_effect_tick_procs) == EV_END);
|
static_assert(lengthof(_effect_tick_procs) == EV_END);
|
||||||
|
|
||||||
/** Transparency options affecting the effects. */
|
/** Transparency options affecting the effects. */
|
||||||
static const TransparencyOption _effect_transparency_options[] = {
|
static const TransparencyOption _effect_transparency_options[] = {
|
||||||
@@ -606,7 +606,7 @@ static const TransparencyOption _effect_transparency_options[] = {
|
|||||||
TO_INVALID, // EV_BREAKDOWN_SMOKE_AIRCRAFT
|
TO_INVALID, // EV_BREAKDOWN_SMOKE_AIRCRAFT
|
||||||
TO_INDUSTRIES, // EV_COPPER_MINE_SMOKE
|
TO_INDUSTRIES, // EV_COPPER_MINE_SMOKE
|
||||||
};
|
};
|
||||||
assert_compile(lengthof(_effect_transparency_options) == EV_END);
|
static_assert(lengthof(_effect_transparency_options) == EV_END);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -63,7 +63,7 @@ const uint8 _engine_offsets[4] = {
|
|||||||
lengthof(_orig_rail_vehicle_info) + lengthof(_orig_road_vehicle_info) + lengthof(_orig_ship_vehicle_info),
|
lengthof(_orig_rail_vehicle_info) + lengthof(_orig_road_vehicle_info) + lengthof(_orig_ship_vehicle_info),
|
||||||
};
|
};
|
||||||
|
|
||||||
assert_compile(lengthof(_orig_rail_vehicle_info) + lengthof(_orig_road_vehicle_info) + lengthof(_orig_ship_vehicle_info) + lengthof(_orig_aircraft_vehicle_info) == lengthof(_orig_engine_info));
|
static_assert(lengthof(_orig_rail_vehicle_info) + lengthof(_orig_road_vehicle_info) + lengthof(_orig_ship_vehicle_info) + lengthof(_orig_aircraft_vehicle_info) == lengthof(_orig_engine_info));
|
||||||
|
|
||||||
const uint EngineOverrideManager::NUM_DEFAULT_ENGINES = _engine_counts[VEH_TRAIN] + _engine_counts[VEH_ROAD] + _engine_counts[VEH_SHIP] + _engine_counts[VEH_AIRCRAFT];
|
const uint EngineOverrideManager::NUM_DEFAULT_ENGINES = _engine_counts[VEH_TRAIN] + _engine_counts[VEH_ROAD] + _engine_counts[VEH_SHIP] + _engine_counts[VEH_AIRCRAFT];
|
||||||
|
|
||||||
@@ -663,9 +663,8 @@ void StartupOneEngine(Engine *e, Date aging_date)
|
|||||||
e->company_avail = 0;
|
e->company_avail = 0;
|
||||||
e->company_hidden = 0;
|
e->company_hidden = 0;
|
||||||
|
|
||||||
/* Don't randomise the start-date in the first two years after gamestart to ensure availability
|
/* Vehicles with the same base_intro date shall be introduced at the same time.
|
||||||
* of engines in early starting games.
|
* Make sure they use the same randomisation of the date. */
|
||||||
* Note: TTDP uses fixed 1922 */
|
|
||||||
SavedRandomSeeds saved_seeds;
|
SavedRandomSeeds saved_seeds;
|
||||||
SaveRandomSeeds(&saved_seeds);
|
SaveRandomSeeds(&saved_seeds);
|
||||||
SetRandomSeed(_settings_game.game_creation.generation_seed ^
|
SetRandomSeed(_settings_game.game_creation.generation_seed ^
|
||||||
@@ -674,6 +673,9 @@ void StartupOneEngine(Engine *e, Date aging_date)
|
|||||||
e->GetGRFID());
|
e->GetGRFID());
|
||||||
uint32 r = Random();
|
uint32 r = Random();
|
||||||
|
|
||||||
|
/* Don't randomise the start-date in the first two years after gamestart to ensure availability
|
||||||
|
* of engines in early starting games.
|
||||||
|
* Note: TTDP uses fixed 1922 */
|
||||||
e->intro_date = ei->base_intro <= ConvertYMDToDate(_settings_game.game_creation.starting_year + 2, 0, 1) ? ei->base_intro : (Date)GB(r, 0, 9) + ei->base_intro;
|
e->intro_date = ei->base_intro <= ConvertYMDToDate(_settings_game.game_creation.starting_year + 2, 0, 1) ? ei->base_intro : (Date)GB(r, 0, 9) + ei->base_intro;
|
||||||
if (e->intro_date <= _date) {
|
if (e->intro_date <= _date) {
|
||||||
e->age = (aging_date - e->intro_date) >> 5;
|
e->age = (aging_date - e->intro_date) >> 5;
|
||||||
@@ -681,19 +683,20 @@ void StartupOneEngine(Engine *e, Date aging_date)
|
|||||||
e->flags |= ENGINE_AVAILABLE;
|
e->flags |= ENGINE_AVAILABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
e->reliability_start = GB(r, 16, 14) + 0x7AE0;
|
RestoreRandomSeeds(saved_seeds);
|
||||||
r = Random();
|
|
||||||
e->reliability_max = GB(r, 0, 14) + 0xBFFF;
|
|
||||||
e->reliability_final = GB(r, 16, 14) + 0x3FFF;
|
|
||||||
|
|
||||||
r = Random();
|
r = Random();
|
||||||
|
e->reliability_start = GB(r, 16, 14) + 0x7AE0;
|
||||||
|
e->reliability_max = GB(r, 0, 14) + 0xBFFF;
|
||||||
|
|
||||||
|
r = Random();
|
||||||
|
e->reliability_final = GB(r, 16, 14) + 0x3FFF;
|
||||||
e->duration_phase_1 = GB(r, 0, 5) + 7;
|
e->duration_phase_1 = GB(r, 0, 5) + 7;
|
||||||
e->duration_phase_2 = GB(r, 5, 4) + ei->base_life * 12 - 96;
|
e->duration_phase_2 = GB(r, 5, 4) + ei->base_life * 12 - 96;
|
||||||
e->duration_phase_3 = GB(r, 9, 7) + 120;
|
e->duration_phase_3 = GB(r, 9, 7) + 120;
|
||||||
|
|
||||||
e->reliability_spd_dec = ei->decay_speed << 2;
|
e->reliability_spd_dec = ei->decay_speed << 2;
|
||||||
|
|
||||||
RestoreRandomSeeds(saved_seeds);
|
|
||||||
CalcEngineReliability(e);
|
CalcEngineReliability(e);
|
||||||
|
|
||||||
/* prevent certain engines from ever appearing. */
|
/* prevent certain engines from ever appearing. */
|
||||||
|
577
src/fileio.cpp
577
src/fileio.cpp
File diff suppressed because it is too large
Load Diff
@@ -12,6 +12,7 @@
|
|||||||
|
|
||||||
#include "core/enum_type.hpp"
|
#include "core/enum_type.hpp"
|
||||||
#include "fileio_type.h"
|
#include "fileio_type.h"
|
||||||
|
#include <string>
|
||||||
|
|
||||||
void FioSeekTo(size_t pos, int mode);
|
void FioSeekTo(size_t pos, int mode);
|
||||||
void FioSeekToFile(uint slot, size_t pos);
|
void FioSeekToFile(uint slot, size_t pos);
|
||||||
@@ -21,50 +22,38 @@ byte FioReadByte();
|
|||||||
uint16 FioReadWord();
|
uint16 FioReadWord();
|
||||||
uint32 FioReadDword();
|
uint32 FioReadDword();
|
||||||
void FioCloseAll();
|
void FioCloseAll();
|
||||||
void FioOpenFile(uint slot, const char *filename, Subdirectory subdir, char **output_filename = nullptr);
|
void FioOpenFile(int slot, const std::string &filename, Subdirectory subdir, std::string *output_filename = nullptr);
|
||||||
void FioReadBlock(void *ptr, size_t size);
|
void FioReadBlock(void *ptr, size_t size);
|
||||||
void FioSkipBytes(int n);
|
void FioSkipBytes(int n);
|
||||||
|
|
||||||
/**
|
|
||||||
* The search paths OpenTTD could search through.
|
|
||||||
* At least one of the slots has to be filled with a path.
|
|
||||||
* nullptr paths tell that there is no such path for the
|
|
||||||
* current operating system.
|
|
||||||
*/
|
|
||||||
extern const char *_searchpaths[NUM_SEARCHPATHS];
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks whether the given search path is a valid search path
|
* Checks whether the given search path is a valid search path
|
||||||
* @param sp the search path to check
|
* @param sp the search path to check
|
||||||
* @return true if the search path is valid
|
* @return true if the search path is valid
|
||||||
*/
|
*/
|
||||||
static inline bool IsValidSearchPath(Searchpath sp)
|
bool IsValidSearchPath(Searchpath sp);
|
||||||
{
|
|
||||||
return sp < NUM_SEARCHPATHS && _searchpaths[sp] != nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Iterator for all the search paths */
|
/** Iterator for all the search paths */
|
||||||
#define FOR_ALL_SEARCHPATHS(sp) for (sp = SP_FIRST_DIR; sp < NUM_SEARCHPATHS; sp++) if (IsValidSearchPath(sp))
|
#define FOR_ALL_SEARCHPATHS(sp) for (sp = SP_FIRST_DIR; sp < NUM_SEARCHPATHS; sp++) if (IsValidSearchPath(sp))
|
||||||
|
|
||||||
void FioFCloseFile(FILE *f);
|
void FioFCloseFile(FILE *f);
|
||||||
FILE *FioFOpenFile(const char *filename, const char *mode, Subdirectory subdir, size_t *filesize = nullptr, char **output_filename = nullptr);
|
FILE *FioFOpenFile(const std::string &filename, const char *mode, Subdirectory subdir, size_t *filesize = nullptr, std::string *output_filename = nullptr);
|
||||||
bool FioCheckFileExists(const char *filename, Subdirectory subdir);
|
bool FioCheckFileExists(const std::string &filename, Subdirectory subdir);
|
||||||
char *FioGetFullPath(char *buf, const char *last, Searchpath sp, Subdirectory subdir, const char *filename);
|
std::string FioFindFullPath(Subdirectory subdir, const char *filename);
|
||||||
char *FioFindFullPath(char *buf, const char *last, Subdirectory subdir, const char *filename);
|
std::string FioGetDirectory(Searchpath sp, Subdirectory subdir);
|
||||||
char *FioAppendDirectory(char *buf, const char *last, Searchpath sp, Subdirectory subdir);
|
std::string FioFindDirectory(Subdirectory subdir);
|
||||||
char *FioGetDirectory(char *buf, const char *last, Subdirectory subdir);
|
void FioCreateDirectory(const std::string &name);
|
||||||
void FioCreateDirectory(const char *name);
|
|
||||||
|
|
||||||
const char *FiosGetScreenshotDir();
|
const char *FiosGetScreenshotDir();
|
||||||
|
|
||||||
void SanitizeFilename(char *filename);
|
void SanitizeFilename(char *filename);
|
||||||
bool AppendPathSeparator(char *buf, const char *last);
|
void AppendPathSeparator(std::string &buf);
|
||||||
void DeterminePaths(const char *exe);
|
void DeterminePaths(const char *exe);
|
||||||
void *ReadFileToMem(const char *filename, size_t *lenp, size_t maxsize);
|
std::unique_ptr<char> ReadFileToMem(const std::string &filename, size_t &lenp, size_t maxsize);
|
||||||
bool FileExists(const char *filename);
|
bool FileExists(const std::string &filename);
|
||||||
bool ExtractTar(const char *tar_filename, Subdirectory subdir);
|
bool ExtractTar(const std::string &tar_filename, Subdirectory subdir);
|
||||||
|
|
||||||
extern const char *_personal_dir; ///< custom directory for personal settings, saves, newgrf, etc.
|
extern std::string _personal_dir; ///< custom directory for personal settings, saves, newgrf, etc.
|
||||||
|
|
||||||
/** Helper for scanning for files with a given name */
|
/** Helper for scanning for files with a given name */
|
||||||
class FileScanner {
|
class FileScanner {
|
||||||
@@ -85,7 +74,7 @@ public:
|
|||||||
* @param tar_filename the name of the tar file the file is read from.
|
* @param tar_filename the name of the tar file the file is read from.
|
||||||
* @return true if the file is added.
|
* @return true if the file is added.
|
||||||
*/
|
*/
|
||||||
virtual bool AddFile(const char *filename, size_t basepath_length, const char *tar_filename) = 0;
|
virtual bool AddFile(const std::string &filename, size_t basepath_length, const std::string &tar_filename) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Helper for scanning for files with tar as extension */
|
/** Helper for scanning for files with tar as extension */
|
||||||
@@ -103,9 +92,9 @@ public:
|
|||||||
ALL = BASESET | NEWGRF | AI | SCENARIO | GAME, ///< Scan for everything.
|
ALL = BASESET | NEWGRF | AI | SCENARIO | GAME, ///< Scan for everything.
|
||||||
};
|
};
|
||||||
|
|
||||||
bool AddFile(const char *filename, size_t basepath_length, const char *tar_filename = nullptr) override;
|
bool AddFile(const std::string &filename, size_t basepath_length, const std::string &tar_filename = {}) override;
|
||||||
|
|
||||||
bool AddFile(Subdirectory sd, const char *filename);
|
bool AddFile(Subdirectory sd, const std::string &filename);
|
||||||
|
|
||||||
/** Do the scan for Tars. */
|
/** Do the scan for Tars. */
|
||||||
static uint DoScan(TarScanner::Mode mode);
|
static uint DoScan(TarScanner::Mode mode);
|
||||||
|
@@ -128,10 +128,10 @@ enum Subdirectory {
|
|||||||
/**
|
/**
|
||||||
* Types of searchpaths OpenTTD might use
|
* Types of searchpaths OpenTTD might use
|
||||||
*/
|
*/
|
||||||
enum Searchpath {
|
enum Searchpath : unsigned {
|
||||||
SP_FIRST_DIR,
|
SP_FIRST_DIR,
|
||||||
SP_WORKING_DIR = SP_FIRST_DIR, ///< Search in the working directory
|
SP_WORKING_DIR = SP_FIRST_DIR, ///< Search in the working directory
|
||||||
#if defined(WITH_XDG_BASEDIR) && defined(WITH_PERSONAL_DIR)
|
#ifdef USE_XDG
|
||||||
SP_PERSONAL_DIR_XDG, ///< Search in the personal directory from the XDG specification
|
SP_PERSONAL_DIR_XDG, ///< Search in the personal directory from the XDG specification
|
||||||
#endif
|
#endif
|
||||||
SP_PERSONAL_DIR, ///< Search in the personal directory
|
SP_PERSONAL_DIR, ///< Search in the personal directory
|
||||||
@@ -140,6 +140,8 @@ enum Searchpath {
|
|||||||
SP_INSTALLATION_DIR, ///< Search in the installation directory
|
SP_INSTALLATION_DIR, ///< Search in the installation directory
|
||||||
SP_APPLICATION_BUNDLE_DIR, ///< Search within the application bundle
|
SP_APPLICATION_BUNDLE_DIR, ///< Search within the application bundle
|
||||||
SP_AUTODOWNLOAD_DIR, ///< Search within the autodownload directory
|
SP_AUTODOWNLOAD_DIR, ///< Search within the autodownload directory
|
||||||
|
SP_AUTODOWNLOAD_PERSONAL_DIR, ///< Search within the autodownload directory located in the personal directory
|
||||||
|
SP_AUTODOWNLOAD_PERSONAL_DIR_XDG, ///< Search within the autodownload directory located in the personal directory (XDG variant)
|
||||||
NUM_SEARCHPATHS
|
NUM_SEARCHPATHS
|
||||||
};
|
};
|
||||||
|
|
||||||
|
191
src/fios.cpp
191
src/fios.cpp
@@ -19,6 +19,8 @@
|
|||||||
#include "string_func.h"
|
#include "string_func.h"
|
||||||
#include "tar_type.h"
|
#include "tar_type.h"
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
#include <functional>
|
||||||
|
#include <optional>
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
# include <unistd.h>
|
# include <unistd.h>
|
||||||
@@ -29,8 +31,7 @@
|
|||||||
#include "safeguards.h"
|
#include "safeguards.h"
|
||||||
|
|
||||||
/* Variables to display file lists */
|
/* Variables to display file lists */
|
||||||
static char *_fios_path;
|
static std::string *_fios_path = nullptr;
|
||||||
static const char *_fios_path_last;
|
|
||||||
SortingBits _savegame_sort_order = SORT_BY_DATE | SORT_DESCENDING;
|
SortingBits _savegame_sort_order = SORT_BY_DATE | SORT_DESCENDING;
|
||||||
|
|
||||||
/* OS-specific functions are taken from their respective files (win32/unix/os2 .c) */
|
/* OS-specific functions are taken from their respective files (win32/unix/os2 .c) */
|
||||||
@@ -41,7 +42,7 @@ extern void FiosGetDrives(FileList &file_list);
|
|||||||
extern bool FiosGetDiskFreeSpace(const char *path, uint64 *tot);
|
extern bool FiosGetDiskFreeSpace(const char *path, uint64 *tot);
|
||||||
|
|
||||||
/* get the name of an oldstyle savegame */
|
/* get the name of an oldstyle savegame */
|
||||||
extern void GetOldSaveGameName(const char *file, char *title, const char *last);
|
extern void GetOldSaveGameName(const std::string &file, char *title, const char *last);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Compare two FiosItem's. Used with sort when sorting the file list.
|
* Compare two FiosItem's. Used with sort when sorting the file list.
|
||||||
@@ -138,7 +139,7 @@ const FiosItem *FileList::FindItem(const char *file)
|
|||||||
*/
|
*/
|
||||||
StringID FiosGetDescText(const char **path, uint64 *total_free)
|
StringID FiosGetDescText(const char **path, uint64 *total_free)
|
||||||
{
|
{
|
||||||
*path = _fios_path;
|
*path = _fios_path->c_str();
|
||||||
return FiosGetDiskFreeSpace(*path, total_free) ? STR_SAVELOAD_BYTES_FREE : STR_ERROR_UNABLE_TO_READ_DRIVE;
|
return FiosGetDiskFreeSpace(*path, total_free) ? STR_SAVELOAD_BYTES_FREE : STR_ERROR_UNABLE_TO_READ_DRIVE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -152,7 +153,8 @@ const char *FiosBrowseTo(const FiosItem *item)
|
|||||||
switch (item->type) {
|
switch (item->type) {
|
||||||
case FIOS_TYPE_DRIVE:
|
case FIOS_TYPE_DRIVE:
|
||||||
#if defined(_WIN32) || defined(__OS2__)
|
#if defined(_WIN32) || defined(__OS2__)
|
||||||
seprintf(_fios_path, _fios_path_last, "%c:" PATHSEP, item->title[0]);
|
assert(_fios_path != nullptr);
|
||||||
|
*_fios_path = std::string{ item->title[0] } + ":" PATHSEP;
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -160,25 +162,28 @@ const char *FiosBrowseTo(const FiosItem *item)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case FIOS_TYPE_PARENT: {
|
case FIOS_TYPE_PARENT: {
|
||||||
/* Check for possible nullptr ptr */
|
assert(_fios_path != nullptr);
|
||||||
char *s = strrchr(_fios_path, PATHSEPCHAR);
|
auto s = _fios_path->find_last_of(PATHSEPCHAR);
|
||||||
if (s != nullptr && s != _fios_path) {
|
if (s != std::string::npos && s != 0) {
|
||||||
s[0] = '\0'; // Remove last path separator character, so we can go up one level.
|
_fios_path->erase(s); // Remove last path separator character, so we can go up one level.
|
||||||
}
|
}
|
||||||
s = strrchr(_fios_path, PATHSEPCHAR);
|
|
||||||
if (s != nullptr) {
|
s = _fios_path->find_last_of(PATHSEPCHAR);
|
||||||
s[1] = '\0'; // go up a directory
|
if (s != std::string::npos) {
|
||||||
|
_fios_path->erase(s + 1); // go up a directory
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case FIOS_TYPE_DIR:
|
case FIOS_TYPE_DIR:
|
||||||
strecat(_fios_path, item->name, _fios_path_last);
|
assert(_fios_path != nullptr);
|
||||||
strecat(_fios_path, PATHSEP, _fios_path_last);
|
*_fios_path += item->name;
|
||||||
|
*_fios_path += PATHSEP;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FIOS_TYPE_DIRECT:
|
case FIOS_TYPE_DIRECT:
|
||||||
seprintf(_fios_path, _fios_path_last, "%s", item->name);
|
assert(_fios_path != nullptr);
|
||||||
|
*_fios_path = item->name;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FIOS_TYPE_FILE:
|
case FIOS_TYPE_FILE:
|
||||||
@@ -195,26 +200,26 @@ const char *FiosBrowseTo(const FiosItem *item)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct a filename from its components in destination buffer \a buf.
|
* Construct a filename from its components in destination buffer \a buf.
|
||||||
* @param buf Destination buffer.
|
|
||||||
* @param path Directory path, may be \c nullptr.
|
* @param path Directory path, may be \c nullptr.
|
||||||
* @param name Filename.
|
* @param name Filename.
|
||||||
* @param ext Filename extension (use \c "" for no extension).
|
* @param ext Filename extension (use \c "" for no extension).
|
||||||
* @param last Last element of buffer \a buf.
|
* @return The completed filename.
|
||||||
*/
|
*/
|
||||||
static void FiosMakeFilename(char *buf, const char *path, const char *name, const char *ext, const char *last)
|
static std::string FiosMakeFilename(const std::string *path, const char *name, const char *ext)
|
||||||
{
|
{
|
||||||
|
std::string buf;
|
||||||
|
|
||||||
if (path != nullptr) {
|
if (path != nullptr) {
|
||||||
const char *buf_start = buf;
|
buf = *path;
|
||||||
buf = strecpy(buf, path, last);
|
|
||||||
/* Remove trailing path separator, if present */
|
/* Remove trailing path separator, if present */
|
||||||
if (buf > buf_start && buf[-1] == PATHSEPCHAR) buf--;
|
if (!buf.empty() && buf.back() == PATHSEPCHAR) buf.pop_back();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Don't append the extension if it is already there */
|
/* Don't append the extension if it is already there */
|
||||||
const char *period = strrchr(name, '.');
|
const char *period = strrchr(name, '.');
|
||||||
if (period != nullptr && strcasecmp(period, ext) == 0) ext = "";
|
if (period != nullptr && strcasecmp(period, ext) == 0) ext = "";
|
||||||
|
|
||||||
seprintf(buf, last, PATHSEP "%s%s", name, ext);
|
return buf + PATHSEP + name + ext;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -222,27 +227,26 @@ static void FiosMakeFilename(char *buf, const char *path, const char *name, cons
|
|||||||
* @param buf Destination buffer for saving the filename.
|
* @param buf Destination buffer for saving the filename.
|
||||||
* @param name Name of the file.
|
* @param name Name of the file.
|
||||||
* @param last Last element of buffer \a buf.
|
* @param last Last element of buffer \a buf.
|
||||||
|
* @return The completed filename.
|
||||||
*/
|
*/
|
||||||
void FiosMakeSavegameName(char *buf, const char *name, const char *last)
|
std::string FiosMakeSavegameName(const char *name)
|
||||||
{
|
{
|
||||||
const char *extension = (_game_mode == GM_EDITOR) ? ".scn" : ".sav";
|
const char *extension = (_game_mode == GM_EDITOR) ? ".scn" : ".sav";
|
||||||
|
|
||||||
FiosMakeFilename(buf, _fios_path, name, extension, last);
|
return FiosMakeFilename(_fios_path, name, extension);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct a filename for a height map.
|
* Construct a filename for a height map.
|
||||||
* @param buf Destination buffer.
|
|
||||||
* @param name Filename.
|
* @param name Filename.
|
||||||
* @param last Last element of buffer \a buf.
|
* @return The completed filename.
|
||||||
*/
|
*/
|
||||||
void FiosMakeHeightmapName(char *buf, const char *name, const char *last)
|
std::string FiosMakeHeightmapName(const char *name)
|
||||||
{
|
{
|
||||||
char ext[5];
|
std::string ext(".");
|
||||||
ext[0] = '.';
|
ext += GetCurrentScreenshotExtension();
|
||||||
strecpy(ext + 1, GetCurrentScreenshotExtension(), lastof(ext));
|
|
||||||
|
|
||||||
FiosMakeFilename(buf, _fios_path, name, ext, last);
|
return FiosMakeFilename(_fios_path, name, ext.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -252,13 +256,11 @@ void FiosMakeHeightmapName(char *buf, const char *name, const char *last)
|
|||||||
*/
|
*/
|
||||||
bool FiosDelete(const char *name)
|
bool FiosDelete(const char *name)
|
||||||
{
|
{
|
||||||
char filename[512];
|
std::string filename = FiosMakeSavegameName(name);
|
||||||
|
return unlink(filename.c_str()) == 0;
|
||||||
FiosMakeSavegameName(filename, name, lastof(filename));
|
|
||||||
return unlink(filename) == 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
typedef FiosType fios_getlist_callback_proc(SaveLoadOperation fop, const char *filename, const char *ext, char *title, const char *last);
|
typedef FiosType fios_getlist_callback_proc(SaveLoadOperation fop, const std::string &filename, const char *ext, char *title, const char *last);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Scanner to scan for a particular type of FIOS file.
|
* Scanner to scan for a particular type of FIOS file.
|
||||||
@@ -278,7 +280,7 @@ public:
|
|||||||
fop(fop), callback_proc(callback_proc), file_list(file_list)
|
fop(fop), callback_proc(callback_proc), file_list(file_list)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
bool AddFile(const char *filename, size_t basepath_length, const char *tar_filename) override;
|
bool AddFile(const std::string &filename, size_t basepath_length, const std::string &tar_filename) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -287,25 +289,26 @@ public:
|
|||||||
* @param basepath_length amount of characters to chop of before to get a relative filename
|
* @param basepath_length amount of characters to chop of before to get a relative filename
|
||||||
* @return true if the file is added.
|
* @return true if the file is added.
|
||||||
*/
|
*/
|
||||||
bool FiosFileScanner::AddFile(const char *filename, size_t basepath_length, const char *tar_filename)
|
bool FiosFileScanner::AddFile(const std::string &filename, size_t basepath_length, const std::string &tar_filename)
|
||||||
{
|
{
|
||||||
const char *ext = strrchr(filename, '.');
|
auto sep = filename.rfind('.');
|
||||||
if (ext == nullptr) return false;
|
if (sep == std::string::npos) return false;
|
||||||
|
std::string ext = filename.substr(sep);
|
||||||
|
|
||||||
char fios_title[64];
|
char fios_title[64];
|
||||||
fios_title[0] = '\0'; // reset the title;
|
fios_title[0] = '\0'; // reset the title;
|
||||||
|
|
||||||
FiosType type = this->callback_proc(this->fop, filename, ext, fios_title, lastof(fios_title));
|
FiosType type = this->callback_proc(this->fop, filename, ext.c_str(), fios_title, lastof(fios_title));
|
||||||
if (type == FIOS_TYPE_INVALID) return false;
|
if (type == FIOS_TYPE_INVALID) return false;
|
||||||
|
|
||||||
for (const FiosItem *fios = file_list.Begin(); fios != file_list.End(); fios++) {
|
for (const FiosItem *fios = file_list.Begin(); fios != file_list.End(); fios++) {
|
||||||
if (strcmp(fios->name, filename) == 0) return false;
|
if (filename == fios->name) return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
FiosItem *fios = file_list.Append();
|
FiosItem *fios = file_list.Append();
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
// Retrieve the file modified date using GetFileTime rather than stat to work around an obscure MSVC bug that affects Windows XP
|
// Retrieve the file modified date using GetFileTime rather than stat to work around an obscure MSVC bug that affects Windows XP
|
||||||
HANDLE fh = CreateFile(OTTD2FS(filename), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr);
|
HANDLE fh = CreateFile(OTTD2FS(filename.c_str()), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, nullptr);
|
||||||
|
|
||||||
if (fh != INVALID_HANDLE_VALUE) {
|
if (fh != INVALID_HANDLE_VALUE) {
|
||||||
FILETIME ft;
|
FILETIME ft;
|
||||||
@@ -324,7 +327,7 @@ bool FiosFileScanner::AddFile(const char *filename, size_t basepath_length, cons
|
|||||||
CloseHandle(fh);
|
CloseHandle(fh);
|
||||||
#else
|
#else
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
if (stat(filename, &sb) == 0) {
|
if (stat(filename.c_str(), &sb) == 0) {
|
||||||
fios->mtime = sb.st_mtime;
|
fios->mtime = sb.st_mtime;
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
@@ -332,13 +335,13 @@ bool FiosFileScanner::AddFile(const char *filename, size_t basepath_length, cons
|
|||||||
}
|
}
|
||||||
|
|
||||||
fios->type = type;
|
fios->type = type;
|
||||||
strecpy(fios->name, filename, lastof(fios->name));
|
strecpy(fios->name, filename.c_str(), lastof(fios->name));
|
||||||
|
|
||||||
/* If the file doesn't have a title, use its filename */
|
/* If the file doesn't have a title, use its filename */
|
||||||
const char *t = fios_title;
|
const char *t = fios_title;
|
||||||
if (StrEmpty(fios_title)) {
|
if (StrEmpty(fios_title)) {
|
||||||
t = strrchr(filename, PATHSEPCHAR);
|
auto ps = filename.rfind(PATHSEPCHAR);
|
||||||
t = (t == nullptr) ? filename : (t + 1);
|
t = filename.c_str() + (ps == std::string::npos ? 0 : ps + 1);
|
||||||
}
|
}
|
||||||
strecpy(fios->title, t, lastof(fios->title));
|
strecpy(fios->title, t, lastof(fios->title));
|
||||||
str_validate(fios->title, lastof(fios->title));
|
str_validate(fios->title, lastof(fios->title));
|
||||||
@@ -365,8 +368,10 @@ static void FiosGetFileList(SaveLoadOperation fop, fios_getlist_callback_proc *c
|
|||||||
|
|
||||||
file_list.Clear();
|
file_list.Clear();
|
||||||
|
|
||||||
|
assert(_fios_path != nullptr);
|
||||||
|
|
||||||
/* A parent directory link exists if we are not in the root directory */
|
/* A parent directory link exists if we are not in the root directory */
|
||||||
if (!FiosIsRoot(_fios_path)) {
|
if (!FiosIsRoot(_fios_path->c_str())) {
|
||||||
fios = file_list.Append();
|
fios = file_list.Append();
|
||||||
fios->type = FIOS_TYPE_PARENT;
|
fios->type = FIOS_TYPE_PARENT;
|
||||||
fios->mtime = 0;
|
fios->mtime = 0;
|
||||||
@@ -375,12 +380,12 @@ static void FiosGetFileList(SaveLoadOperation fop, fios_getlist_callback_proc *c
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Show subdirectories */
|
/* Show subdirectories */
|
||||||
if ((dir = ttd_opendir(_fios_path)) != nullptr) {
|
if ((dir = ttd_opendir(_fios_path->c_str())) != nullptr) {
|
||||||
while ((dirent = readdir(dir)) != nullptr) {
|
while ((dirent = readdir(dir)) != nullptr) {
|
||||||
strecpy(d_name, FS2OTTD(dirent->d_name), lastof(d_name));
|
strecpy(d_name, FS2OTTD(dirent->d_name), lastof(d_name));
|
||||||
|
|
||||||
/* found file must be directory, but not '.' or '..' */
|
/* found file must be directory, but not '.' or '..' */
|
||||||
if (FiosIsValidFile(_fios_path, dirent, &sb) && S_ISDIR(sb.st_mode) &&
|
if (FiosIsValidFile(_fios_path->c_str(), dirent, &sb) && S_ISDIR(sb.st_mode) &&
|
||||||
(!FiosIsHiddenFile(dirent) || strncasecmp(d_name, PERSONAL_DIR, strlen(d_name)) == 0) &&
|
(!FiosIsHiddenFile(dirent) || strncasecmp(d_name, PERSONAL_DIR, strlen(d_name)) == 0) &&
|
||||||
strcmp(d_name, ".") != 0 && strcmp(d_name, "..") != 0) {
|
strcmp(d_name, ".") != 0 && strcmp(d_name, "..") != 0) {
|
||||||
fios = file_list.Append();
|
fios = file_list.Append();
|
||||||
@@ -408,7 +413,7 @@ static void FiosGetFileList(SaveLoadOperation fop, fios_getlist_callback_proc *c
|
|||||||
/* Show files */
|
/* Show files */
|
||||||
FiosFileScanner scanner(fop, callback_proc, file_list);
|
FiosFileScanner scanner(fop, callback_proc, file_list);
|
||||||
if (subdir == NO_DIRECTORY) {
|
if (subdir == NO_DIRECTORY) {
|
||||||
scanner.Scan(nullptr, _fios_path, false);
|
scanner.Scan(nullptr, _fios_path->c_str(), false);
|
||||||
} else {
|
} else {
|
||||||
scanner.Scan(nullptr, subdir, true, true);
|
scanner.Scan(nullptr, subdir, true, true);
|
||||||
}
|
}
|
||||||
@@ -429,11 +434,10 @@ static void FiosGetFileList(SaveLoadOperation fop, fios_getlist_callback_proc *c
|
|||||||
* @param last the last element in the title buffer
|
* @param last the last element in the title buffer
|
||||||
* @param subdir the sub directory to search in
|
* @param subdir the sub directory to search in
|
||||||
*/
|
*/
|
||||||
static void GetFileTitle(const char *file, char *title, const char *last, Subdirectory subdir)
|
static void GetFileTitle(const std::string &file, char *title, const char *last, Subdirectory subdir)
|
||||||
{
|
{
|
||||||
char buf[MAX_PATH];
|
std::string buf = file;
|
||||||
strecpy(buf, file, lastof(buf));
|
buf += ".title";
|
||||||
strecat(buf, ".title", lastof(buf));
|
|
||||||
|
|
||||||
FILE *f = FioFOpenFile(buf, "r", subdir);
|
FILE *f = FioFOpenFile(buf, "r", subdir);
|
||||||
if (f == nullptr) return;
|
if (f == nullptr) return;
|
||||||
@@ -456,7 +460,7 @@ static void GetFileTitle(const char *file, char *title, const char *last, Subdir
|
|||||||
* @see FiosGetFileList
|
* @see FiosGetFileList
|
||||||
* @see FiosGetSavegameList
|
* @see FiosGetSavegameList
|
||||||
*/
|
*/
|
||||||
FiosType FiosGetSavegameListCallback(SaveLoadOperation fop, const char *file, const char *ext, char *title, const char *last)
|
FiosType FiosGetSavegameListCallback(SaveLoadOperation fop, const std::string &file, const char *ext, char *title, const char *last)
|
||||||
{
|
{
|
||||||
/* Show savegame files
|
/* Show savegame files
|
||||||
* .SAV OpenTTD saved game
|
* .SAV OpenTTD saved game
|
||||||
@@ -491,17 +495,11 @@ FiosType FiosGetSavegameListCallback(SaveLoadOperation fop, const char *file, co
|
|||||||
*/
|
*/
|
||||||
void FiosGetSavegameList(SaveLoadOperation fop, FileList &file_list)
|
void FiosGetSavegameList(SaveLoadOperation fop, FileList &file_list)
|
||||||
{
|
{
|
||||||
static char *fios_save_path = nullptr;
|
static std::optional<std::string> fios_save_path;
|
||||||
static char *fios_save_path_last = nullptr;
|
|
||||||
|
|
||||||
if (fios_save_path == nullptr) {
|
if (!fios_save_path) fios_save_path = FioFindDirectory(SAVE_DIR);
|
||||||
fios_save_path = MallocT<char>(MAX_PATH);
|
|
||||||
fios_save_path_last = fios_save_path + MAX_PATH - 1;
|
|
||||||
FioGetDirectory(fios_save_path, fios_save_path_last, SAVE_DIR);
|
|
||||||
}
|
|
||||||
|
|
||||||
_fios_path = fios_save_path;
|
_fios_path = &(*fios_save_path);
|
||||||
_fios_path_last = fios_save_path_last;
|
|
||||||
|
|
||||||
FiosGetFileList(fop, &FiosGetSavegameListCallback, NO_DIRECTORY, file_list);
|
FiosGetFileList(fop, &FiosGetSavegameListCallback, NO_DIRECTORY, file_list);
|
||||||
}
|
}
|
||||||
@@ -517,7 +515,7 @@ void FiosGetSavegameList(SaveLoadOperation fop, FileList &file_list)
|
|||||||
* @see FiosGetFileList
|
* @see FiosGetFileList
|
||||||
* @see FiosGetScenarioList
|
* @see FiosGetScenarioList
|
||||||
*/
|
*/
|
||||||
static FiosType FiosGetScenarioListCallback(SaveLoadOperation fop, const char *file, const char *ext, char *title, const char *last)
|
static FiosType FiosGetScenarioListCallback(SaveLoadOperation fop, const std::string &file, const char *ext, char *title, const char *last)
|
||||||
{
|
{
|
||||||
/* Show scenario files
|
/* Show scenario files
|
||||||
* .SCN OpenTTD style scenario file
|
* .SCN OpenTTD style scenario file
|
||||||
@@ -546,27 +544,19 @@ static FiosType FiosGetScenarioListCallback(SaveLoadOperation fop, const char *f
|
|||||||
*/
|
*/
|
||||||
void FiosGetScenarioList(SaveLoadOperation fop, FileList &file_list)
|
void FiosGetScenarioList(SaveLoadOperation fop, FileList &file_list)
|
||||||
{
|
{
|
||||||
static char *fios_scn_path = nullptr;
|
static std::optional<std::string> fios_scn_path;
|
||||||
static char *fios_scn_path_last = nullptr;
|
|
||||||
|
|
||||||
/* Copy the default path on first run or on 'New Game' */
|
/* Copy the default path on first run or on 'New Game' */
|
||||||
if (fios_scn_path == nullptr) {
|
if (!fios_scn_path) fios_scn_path = FioFindDirectory(SCENARIO_DIR);
|
||||||
fios_scn_path = MallocT<char>(MAX_PATH);
|
|
||||||
fios_scn_path_last = fios_scn_path + MAX_PATH - 1;
|
|
||||||
FioGetDirectory(fios_scn_path, fios_scn_path_last, SCENARIO_DIR);
|
|
||||||
}
|
|
||||||
|
|
||||||
_fios_path = fios_scn_path;
|
_fios_path = &(*fios_scn_path);
|
||||||
_fios_path_last = fios_scn_path_last;
|
|
||||||
|
|
||||||
char base_path[MAX_PATH];
|
std::string base_path = FioFindDirectory(SCENARIO_DIR);
|
||||||
FioGetDirectory(base_path, lastof(base_path), SCENARIO_DIR);
|
Subdirectory subdir = (fop == SLO_LOAD && base_path == *_fios_path) ? SCENARIO_DIR : NO_DIRECTORY;
|
||||||
|
|
||||||
Subdirectory subdir = (fop == SLO_LOAD && strcmp(base_path, _fios_path) == 0) ? SCENARIO_DIR : NO_DIRECTORY;
|
|
||||||
FiosGetFileList(fop, &FiosGetScenarioListCallback, subdir, file_list);
|
FiosGetFileList(fop, &FiosGetScenarioListCallback, subdir, file_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
static FiosType FiosGetHeightmapListCallback(SaveLoadOperation fop, const char *file, const char *ext, char *title, const char *last)
|
static FiosType FiosGetHeightmapListCallback(SaveLoadOperation fop, const std::string &file, const char *ext, char *title, const char *last)
|
||||||
{
|
{
|
||||||
/* Show heightmap files
|
/* Show heightmap files
|
||||||
* .PNG PNG Based heightmap files
|
* .PNG PNG Based heightmap files
|
||||||
@@ -593,10 +583,9 @@ static FiosType FiosGetHeightmapListCallback(SaveLoadOperation fop, const char *
|
|||||||
bool match = false;
|
bool match = false;
|
||||||
Searchpath sp;
|
Searchpath sp;
|
||||||
FOR_ALL_SEARCHPATHS(sp) {
|
FOR_ALL_SEARCHPATHS(sp) {
|
||||||
char buf[MAX_PATH];
|
std::string buf = FioGetDirectory(sp, HEIGHTMAP_DIR);
|
||||||
FioAppendDirectory(buf, lastof(buf), sp, HEIGHTMAP_DIR);
|
|
||||||
|
|
||||||
if (strncmp(buf, it->second.tar_filename, strlen(buf)) == 0) {
|
if (buf.compare(0, buf.size(), it->second.tar_filename, 0, buf.size()) == 0) {
|
||||||
match = true;
|
match = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -617,22 +606,14 @@ static FiosType FiosGetHeightmapListCallback(SaveLoadOperation fop, const char *
|
|||||||
*/
|
*/
|
||||||
void FiosGetHeightmapList(SaveLoadOperation fop, FileList &file_list)
|
void FiosGetHeightmapList(SaveLoadOperation fop, FileList &file_list)
|
||||||
{
|
{
|
||||||
static char *fios_hmap_path = nullptr;
|
static std::optional<std::string> fios_hmap_path;
|
||||||
static char *fios_hmap_path_last = nullptr;
|
|
||||||
|
|
||||||
if (fios_hmap_path == nullptr) {
|
if (!fios_hmap_path) fios_hmap_path = FioFindDirectory(HEIGHTMAP_DIR);
|
||||||
fios_hmap_path = MallocT<char>(MAX_PATH);
|
|
||||||
fios_hmap_path_last = fios_hmap_path + MAX_PATH - 1;
|
|
||||||
FioGetDirectory(fios_hmap_path, fios_hmap_path_last, HEIGHTMAP_DIR);
|
|
||||||
}
|
|
||||||
|
|
||||||
_fios_path = fios_hmap_path;
|
_fios_path = &(*fios_hmap_path);
|
||||||
_fios_path_last = fios_hmap_path_last;
|
|
||||||
|
|
||||||
char base_path[MAX_PATH];
|
std::string base_path = FioFindDirectory(HEIGHTMAP_DIR);
|
||||||
FioGetDirectory(base_path, lastof(base_path), HEIGHTMAP_DIR);
|
Subdirectory subdir = base_path == *_fios_path ? HEIGHTMAP_DIR : NO_DIRECTORY;
|
||||||
|
|
||||||
Subdirectory subdir = strcmp(base_path, _fios_path) == 0 ? HEIGHTMAP_DIR : NO_DIRECTORY;
|
|
||||||
FiosGetFileList(fop, &FiosGetHeightmapListCallback, subdir, file_list);
|
FiosGetFileList(fop, &FiosGetHeightmapListCallback, subdir, file_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -642,14 +623,11 @@ void FiosGetHeightmapList(SaveLoadOperation fop, FileList &file_list)
|
|||||||
*/
|
*/
|
||||||
const char *FiosGetScreenshotDir()
|
const char *FiosGetScreenshotDir()
|
||||||
{
|
{
|
||||||
static char *fios_screenshot_path = nullptr;
|
static std::optional<std::string> fios_screenshot_path;
|
||||||
|
|
||||||
if (fios_screenshot_path == nullptr) {
|
if (!fios_screenshot_path) fios_screenshot_path = FioFindDirectory(SCREENSHOT_DIR);
|
||||||
fios_screenshot_path = MallocT<char>(MAX_PATH);
|
|
||||||
FioGetDirectory(fios_screenshot_path, fios_screenshot_path + MAX_PATH - 1, SCREENSHOT_DIR);
|
|
||||||
}
|
|
||||||
|
|
||||||
return fios_screenshot_path;
|
return fios_screenshot_path->c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Basic data to distinguish a scenario. Used in the server list window */
|
/** Basic data to distinguish a scenario. Used in the server list window */
|
||||||
@@ -691,7 +669,7 @@ public:
|
|||||||
this->scanned = true;
|
this->scanned = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AddFile(const char *filename, size_t basepath_length, const char *tar_filename) override
|
bool AddFile(const std::string &filename, size_t basepath_length, const std::string &tar_filename) override
|
||||||
{
|
{
|
||||||
FILE *f = FioFOpenFile(filename, "r", SCENARIO_DIR);
|
FILE *f = FioFOpenFile(filename, "r", SCENARIO_DIR);
|
||||||
if (f == nullptr) return false;
|
if (f == nullptr) return false;
|
||||||
@@ -700,19 +678,16 @@ public:
|
|||||||
int fret = fscanf(f, "%u", &id.scenid);
|
int fret = fscanf(f, "%u", &id.scenid);
|
||||||
FioFCloseFile(f);
|
FioFCloseFile(f);
|
||||||
if (fret != 1) return false;
|
if (fret != 1) return false;
|
||||||
strecpy(id.filename, filename, lastof(id.filename));
|
strecpy(id.filename, filename.c_str(), lastof(id.filename));
|
||||||
|
|
||||||
Md5 checksum;
|
Md5 checksum;
|
||||||
uint8 buffer[1024];
|
uint8 buffer[1024];
|
||||||
char basename[MAX_PATH]; ///< \a filename without the extension.
|
|
||||||
size_t len, size;
|
size_t len, size;
|
||||||
|
|
||||||
/* open the scenario file, but first get the name.
|
/* open the scenario file, but first get the name.
|
||||||
* This is safe as we check on extension which
|
* This is safe as we check on extension which
|
||||||
* must always exist. */
|
* must always exist. */
|
||||||
strecpy(basename, filename, lastof(basename));
|
f = FioFOpenFile(filename.substr(0, filename.rfind('.')), "rb", SCENARIO_DIR, &size);
|
||||||
*strrchr(basename, '.') = '\0';
|
|
||||||
f = FioFOpenFile(basename, "rb", SCENARIO_DIR, &size);
|
|
||||||
if (f == nullptr) return false;
|
if (f == nullptr) return false;
|
||||||
|
|
||||||
/* calculate md5sum */
|
/* calculate md5sum */
|
||||||
|
@@ -227,9 +227,9 @@ const char *FiosBrowseTo(const FiosItem *item);
|
|||||||
|
|
||||||
StringID FiosGetDescText(const char **path, uint64 *total_free);
|
StringID FiosGetDescText(const char **path, uint64 *total_free);
|
||||||
bool FiosDelete(const char *name);
|
bool FiosDelete(const char *name);
|
||||||
void FiosMakeHeightmapName(char *buf, const char *name, const char *last);
|
std::string FiosMakeHeightmapName(const char *name);
|
||||||
void FiosMakeSavegameName(char *buf, const char *name, const char *last);
|
std::string FiosMakeSavegameName(const char *name);
|
||||||
|
|
||||||
FiosType FiosGetSavegameListCallback(SaveLoadOperation fop, const char *file, const char *ext, char *title, const char *last);
|
FiosType FiosGetSavegameListCallback(SaveLoadOperation fop, const std::string &file, const char *ext, char *title, const char *last);
|
||||||
|
|
||||||
#endif /* FIOS_H */
|
#endif /* FIOS_H */
|
||||||
|
@@ -373,22 +373,24 @@ public:
|
|||||||
|
|
||||||
/* Select the initial directory. */
|
/* Select the initial directory. */
|
||||||
o_dir.type = FIOS_TYPE_DIRECT;
|
o_dir.type = FIOS_TYPE_DIRECT;
|
||||||
|
std::string dir;
|
||||||
switch (this->abstract_filetype) {
|
switch (this->abstract_filetype) {
|
||||||
case FT_SAVEGAME:
|
case FT_SAVEGAME:
|
||||||
FioGetDirectory(o_dir.name, lastof(o_dir.name), SAVE_DIR);
|
dir = FioFindDirectory(SAVE_DIR);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FT_SCENARIO:
|
case FT_SCENARIO:
|
||||||
FioGetDirectory(o_dir.name, lastof(o_dir.name), SCENARIO_DIR);
|
dir = FioFindDirectory(SCENARIO_DIR);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FT_HEIGHTMAP:
|
case FT_HEIGHTMAP:
|
||||||
FioGetDirectory(o_dir.name, lastof(o_dir.name), HEIGHTMAP_DIR);
|
dir = FioFindDirectory(HEIGHTMAP_DIR);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
strecpy(o_dir.name, _personal_dir, lastof(o_dir.name));
|
dir = _personal_dir;
|
||||||
}
|
}
|
||||||
|
strecpy(o_dir.name, dir.c_str(), lastof(o_dir.name));
|
||||||
|
|
||||||
switch (this->fop) {
|
switch (this->fop) {
|
||||||
case SLO_SAVE:
|
case SLO_SAVE:
|
||||||
@@ -785,7 +787,7 @@ public:
|
|||||||
}
|
}
|
||||||
} else if (this->IsWidgetLowered(WID_SL_SAVE_GAME)) { // Save button clicked
|
} else if (this->IsWidgetLowered(WID_SL_SAVE_GAME)) { // Save button clicked
|
||||||
if (this->abstract_filetype == FT_SAVEGAME || this->abstract_filetype == FT_SCENARIO) {
|
if (this->abstract_filetype == FT_SAVEGAME || this->abstract_filetype == FT_SCENARIO) {
|
||||||
FiosMakeSavegameName(_file_to_saveload.name, this->filename_editbox.text.buf, lastof(_file_to_saveload.name));
|
_file_to_saveload.name = FiosMakeSavegameName(this->filename_editbox.text.buf);
|
||||||
const bool known_id = _load_check_data.settings.game_creation.generation_unique_id != 0;
|
const bool known_id = _load_check_data.settings.game_creation.generation_unique_id != 0;
|
||||||
const bool different_id = known_id && _load_check_data.settings.game_creation.generation_unique_id != _settings_game.game_creation.generation_unique_id;
|
const bool different_id = known_id && _load_check_data.settings.game_creation.generation_unique_id != _settings_game.game_creation.generation_unique_id;
|
||||||
if (_settings_client.gui.savegame_overwrite_confirm >= 1 && different_id) {
|
if (_settings_client.gui.savegame_overwrite_confirm >= 1 && different_id) {
|
||||||
@@ -798,7 +800,7 @@ public:
|
|||||||
_switch_mode = SM_SAVE_GAME;
|
_switch_mode = SM_SAVE_GAME;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
FiosMakeHeightmapName(_file_to_saveload.name, this->filename_editbox.text.buf, lastof(_file_to_saveload.name));
|
_file_to_saveload.name = FiosMakeHeightmapName(this->filename_editbox.text.buf);
|
||||||
if (_settings_client.gui.savegame_overwrite_confirm >= 1 && FioCheckFileExists(_file_to_saveload.name, Subdirectory::SAVE_DIR)) {
|
if (_settings_client.gui.savegame_overwrite_confirm >= 1 && FioCheckFileExists(_file_to_saveload.name, Subdirectory::SAVE_DIR)) {
|
||||||
ShowQuery(STR_SAVELOAD_OVERWRITE_TITLE, STR_SAVELOAD_OVERWRITE_WARNING, this, SaveLoadWindow::SaveHeightmapConfirmationCallback);
|
ShowQuery(STR_SAVELOAD_OVERWRITE_TITLE, STR_SAVELOAD_OVERWRITE_WARNING, this, SaveLoadWindow::SaveHeightmapConfirmationCallback);
|
||||||
} else {
|
} else {
|
||||||
|
@@ -567,8 +567,27 @@ static void LoadFreeTypeFont(FontSize fs)
|
|||||||
}
|
}
|
||||||
|
|
||||||
FT_Face face = nullptr;
|
FT_Face face = nullptr;
|
||||||
|
|
||||||
|
/* If font is an absolute path to a ttf, try loading that first. */
|
||||||
FT_Error error = FT_New_Face(_library, settings->font, 0, &face);
|
FT_Error error = FT_New_Face(_library, settings->font, 0, &face);
|
||||||
|
|
||||||
|
#if defined(WITH_COCOA)
|
||||||
|
extern void MacOSRegisterExternalFont(const char *file_path);
|
||||||
|
if (error == FT_Err_Ok) MacOSRegisterExternalFont(settings->font);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (error != FT_Err_Ok) {
|
||||||
|
/* Check if font is a relative filename in one of our search-paths. */
|
||||||
|
std::string full_font = FioFindFullPath(BASE_DIR, settings->font);
|
||||||
|
if (!full_font.empty()) {
|
||||||
|
error = FT_New_Face(_library, full_font.c_str(), 0, &face);
|
||||||
|
#if defined(WITH_COCOA)
|
||||||
|
if (error == FT_Err_Ok) MacOSRegisterExternalFont(full_font.c_str());
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Try loading based on font face name (OS-wide fonts). */
|
||||||
if (error != FT_Err_Ok) error = GetFontByFaceName(settings->font, &face);
|
if (error != FT_Err_Ok) error = GetFontByFaceName(settings->font, &face);
|
||||||
|
|
||||||
if (error == FT_Err_Ok) {
|
if (error == FT_Err_Ok) {
|
||||||
@@ -978,11 +997,23 @@ static void LoadWin32Font(FontSize fs)
|
|||||||
|
|
||||||
if (settings->os_handle != nullptr) {
|
if (settings->os_handle != nullptr) {
|
||||||
logfont = *(const LOGFONT *)settings->os_handle;
|
logfont = *(const LOGFONT *)settings->os_handle;
|
||||||
} else if (strchr(settings->font, '.') != nullptr && FileExists(settings->font)) {
|
} else if (strchr(settings->font, '.') != nullptr) {
|
||||||
/* Might be a font file name, try load it. */
|
/* Might be a font file name, try load it. */
|
||||||
TCHAR fontPath[MAX_PATH];
|
|
||||||
convert_to_fs(settings->font, fontPath, lengthof(fontPath), false);
|
|
||||||
|
|
||||||
|
TCHAR fontPath[MAX_PATH] = {};
|
||||||
|
|
||||||
|
/* See if this is an absolute path. */
|
||||||
|
if (FileExists(settings->font)) {
|
||||||
|
convert_to_fs(settings->font, fontPath, lengthof(fontPath), false);
|
||||||
|
} else {
|
||||||
|
/* Scan the search-paths to see if it can be found. */
|
||||||
|
std::string full_font = FioFindFullPath(BASE_DIR, settings->font);
|
||||||
|
if (!full_font.empty()) {
|
||||||
|
convert_to_fs(full_font.c_str(), fontPath, lengthof(fontPath), false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fontPath[0] != 0) {
|
||||||
if (AddFontResourceEx(fontPath, FR_PRIVATE, 0) != 0) {
|
if (AddFontResourceEx(fontPath, FR_PRIVATE, 0) != 0) {
|
||||||
/* Try a nice little undocumented function first for getting the internal font name.
|
/* Try a nice little undocumented function first for getting the internal font name.
|
||||||
* Some documentation is found at: http://www.undocprint.org/winspool/getfontresourceinfo */
|
* Some documentation is found at: http://www.undocprint.org/winspool/getfontresourceinfo */
|
||||||
@@ -1016,6 +1047,7 @@ static void LoadWin32Font(FontSize fs)
|
|||||||
ShowInfoF("Unable to load file '%s' for %s font, using default windows font selection instead", settings->font, SIZE_TO_NAME[fs]);
|
ShowInfoF("Unable to load file '%s' for %s font, using default windows font selection instead", settings->font, SIZE_TO_NAME[fs]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (logfont.lfFaceName[0] == 0) {
|
if (logfont.lfFaceName[0] == 0) {
|
||||||
logfont.lfWeight = strcasestr(settings->font, " bold") != nullptr ? FW_BOLD : FW_NORMAL; // Poor man's way to allow selecting bold fonts.
|
logfont.lfWeight = strcasestr(settings->font, " bold") != nullptr ? FW_BOLD : FW_NORMAL; // Poor man's way to allow selecting bold fonts.
|
||||||
|
@@ -399,7 +399,7 @@ FT_Error GetFontByFaceName(const char *font_name, FT_Face *face)
|
|||||||
* We instead query the list of all font descriptors that match the given name which
|
* We instead query the list of all font descriptors that match the given name which
|
||||||
* does not do this stupid name fallback. */
|
* does not do this stupid name fallback. */
|
||||||
CFAutoRelease<CTFontDescriptorRef> name_desc(CTFontDescriptorCreateWithNameAndSize(name.get(), 0.0));
|
CFAutoRelease<CTFontDescriptorRef> name_desc(CTFontDescriptorCreateWithNameAndSize(name.get(), 0.0));
|
||||||
CFAutoRelease<CFSetRef> mandatory_attribs(CFSetCreate(kCFAllocatorDefault, (const void **)&kCTFontNameAttribute, 1, &kCFTypeSetCallBacks));
|
CFAutoRelease<CFSetRef> mandatory_attribs(CFSetCreate(kCFAllocatorDefault, const_cast<const void **>(reinterpret_cast<const void * const *>(&kCTFontNameAttribute)), 1, &kCFTypeSetCallBacks));
|
||||||
CFAutoRelease<CFArrayRef> descs(CTFontDescriptorCreateMatchingFontDescriptors(name_desc.get(), mandatory_attribs.get()));
|
CFAutoRelease<CFArrayRef> descs(CTFontDescriptorCreateMatchingFontDescriptors(name_desc.get(), mandatory_attribs.get()));
|
||||||
|
|
||||||
/* Loop over all matches until we can get a path for one of them. */
|
/* Loop over all matches until we can get a path for one of them. */
|
||||||
@@ -441,13 +441,13 @@ bool SetFallbackFont(FreeTypeSettings *settings, const char *language_isocode, i
|
|||||||
lang_codes[0] = CFStringCreateWithCString(kCFAllocatorDefault, lang, kCFStringEncodingUTF8);
|
lang_codes[0] = CFStringCreateWithCString(kCFAllocatorDefault, lang, kCFStringEncodingUTF8);
|
||||||
lang_codes[1] = CFSTR("en");
|
lang_codes[1] = CFSTR("en");
|
||||||
CFArrayRef lang_arr = CFArrayCreate(kCFAllocatorDefault, (const void **)lang_codes, lengthof(lang_codes), &kCFTypeArrayCallBacks);
|
CFArrayRef lang_arr = CFArrayCreate(kCFAllocatorDefault, (const void **)lang_codes, lengthof(lang_codes), &kCFTypeArrayCallBacks);
|
||||||
CFAutoRelease<CFDictionaryRef> lang_attribs(CFDictionaryCreate(kCFAllocatorDefault, (const void**)&kCTFontLanguagesAttribute, (const void **)&lang_arr, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks));
|
CFAutoRelease<CFDictionaryRef> lang_attribs(CFDictionaryCreate(kCFAllocatorDefault, const_cast<const void **>(reinterpret_cast<const void * const *>(&kCTFontLanguagesAttribute)), (const void **)&lang_arr, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks));
|
||||||
CFAutoRelease<CTFontDescriptorRef> lang_desc(CTFontDescriptorCreateWithAttributes(lang_attribs.get()));
|
CFAutoRelease<CTFontDescriptorRef> lang_desc(CTFontDescriptorCreateWithAttributes(lang_attribs.get()));
|
||||||
CFRelease(lang_arr);
|
CFRelease(lang_arr);
|
||||||
CFRelease(lang_codes[0]);
|
CFRelease(lang_codes[0]);
|
||||||
|
|
||||||
/* Get array of all font descriptors for the wanted language. */
|
/* Get array of all font descriptors for the wanted language. */
|
||||||
CFAutoRelease<CFSetRef> mandatory_attribs(CFSetCreate(kCFAllocatorDefault, (const void **)&kCTFontLanguagesAttribute, 1, &kCFTypeSetCallBacks));
|
CFAutoRelease<CFSetRef> mandatory_attribs(CFSetCreate(kCFAllocatorDefault, const_cast<const void **>(reinterpret_cast<const void * const *>(&kCTFontLanguagesAttribute)), 1, &kCFTypeSetCallBacks));
|
||||||
CFAutoRelease<CFArrayRef> descs(CTFontDescriptorCreateMatchingFontDescriptors(lang_desc.get(), mandatory_attribs.get()));
|
CFAutoRelease<CFArrayRef> descs(CTFontDescriptorCreateMatchingFontDescriptors(lang_desc.get(), mandatory_attribs.get()));
|
||||||
|
|
||||||
bool result = false;
|
bool result = false;
|
||||||
|
@@ -66,7 +66,7 @@ void NORETURN CDECL strgen_fatal(const char *s, ...)
|
|||||||
LanguageStrings ReadRawLanguageStrings(const std::string &file)
|
LanguageStrings ReadRawLanguageStrings(const std::string &file)
|
||||||
{
|
{
|
||||||
size_t to_read;
|
size_t to_read;
|
||||||
FILE *fh = FioFOpenFile(file.c_str(), "rb", GAME_DIR, &to_read);
|
FILE *fh = FioFOpenFile(file, "rb", GAME_DIR, &to_read);
|
||||||
if (fh == nullptr) return LanguageStrings();
|
if (fh == nullptr) return LanguageStrings();
|
||||||
|
|
||||||
FileCloser fhClose(fh);
|
FileCloser fhClose(fh);
|
||||||
@@ -206,7 +206,7 @@ public:
|
|||||||
this->FileScanner::Scan(".txt", directory, false);
|
this->FileScanner::Scan(".txt", directory, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AddFile(const char *filename, size_t basepath_length, const char *tar_filename) override
|
bool AddFile(const std::string &filename, size_t basepath_length, const std::string &tar_filename) override
|
||||||
{
|
{
|
||||||
if (exclude == filename) return true;
|
if (exclude == filename) return true;
|
||||||
|
|
||||||
@@ -244,9 +244,9 @@ GameStrings *LoadTranslations()
|
|||||||
LanguageScanner scanner(gs, filename);
|
LanguageScanner scanner(gs, filename);
|
||||||
std::string ldir = basename + "lang" PATHSEP;
|
std::string ldir = basename + "lang" PATHSEP;
|
||||||
|
|
||||||
const char *tar_filename = info->GetTarFile();
|
const std::string tar_filename = info->GetTarFile();
|
||||||
TarList::iterator iter;
|
TarList::iterator iter;
|
||||||
if (tar_filename != nullptr && (iter = _tar_list[GAME_DIR].find(tar_filename)) != _tar_list[GAME_DIR].end()) {
|
if (!tar_filename.empty() && (iter = _tar_list[GAME_DIR].find(tar_filename)) != _tar_list[GAME_DIR].end()) {
|
||||||
/* The main script is in a tar file, so find all files that
|
/* The main script is in a tar file, so find all files that
|
||||||
* are in the same tar and add them to the langfile scanner. */
|
* are in the same tar and add them to the langfile scanner. */
|
||||||
TarFileList::iterator tar;
|
TarFileList::iterator tar;
|
||||||
@@ -258,7 +258,7 @@ GameStrings *LoadTranslations()
|
|||||||
if (tar->first.size() <= ldir.size() || tar->first.compare(0, ldir.size(), ldir) != 0) continue;
|
if (tar->first.size() <= ldir.size() || tar->first.compare(0, ldir.size(), ldir) != 0) continue;
|
||||||
if (tar->first.compare(tar->first.size() - 4, 4, ".txt") != 0) continue;
|
if (tar->first.compare(tar->first.size() - 4, 4, ".txt") != 0) continue;
|
||||||
|
|
||||||
scanner.AddFile(tar->first.c_str(), 0, tar_filename);
|
scanner.AddFile(tar->first, 0, tar_filename);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Scan filesystem */
|
/* Scan filesystem */
|
||||||
|
@@ -144,7 +144,7 @@ static const char * const la_text[] = {
|
|||||||
"emergency savegame",
|
"emergency savegame",
|
||||||
};
|
};
|
||||||
|
|
||||||
assert_compile(lengthof(la_text) == GLAT_END);
|
static_assert(lengthof(la_text) == GLAT_END);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Information about the presence of a Grf at a certain point during gamelog history
|
* Information about the presence of a Grf at a certain point during gamelog history
|
||||||
|
@@ -330,7 +330,7 @@ static const StringID _num_towns[] = {STR_NUM_VERY_LOW, STR_NUM_LOW, STR_NUM_N
|
|||||||
static const StringID _num_inds[] = {STR_FUNDING_ONLY, STR_MINIMAL, STR_NUM_VERY_LOW, STR_NUM_LOW, STR_NUM_NORMAL, STR_NUM_HIGH, INVALID_STRING_ID};
|
static const StringID _num_inds[] = {STR_FUNDING_ONLY, STR_MINIMAL, STR_NUM_VERY_LOW, STR_NUM_LOW, STR_NUM_NORMAL, STR_NUM_HIGH, INVALID_STRING_ID};
|
||||||
static const StringID _variety[] = {STR_VARIETY_NONE, STR_VARIETY_VERY_LOW, STR_VARIETY_LOW, STR_VARIETY_MEDIUM, STR_VARIETY_HIGH, STR_VARIETY_VERY_HIGH, INVALID_STRING_ID};
|
static const StringID _variety[] = {STR_VARIETY_NONE, STR_VARIETY_VERY_LOW, STR_VARIETY_LOW, STR_VARIETY_MEDIUM, STR_VARIETY_HIGH, STR_VARIETY_VERY_HIGH, INVALID_STRING_ID};
|
||||||
|
|
||||||
assert_compile(lengthof(_num_inds) == ID_END + 1);
|
static_assert(lengthof(_num_inds) == ID_END + 1);
|
||||||
|
|
||||||
struct GenerateLandscapeWindow : public Window {
|
struct GenerateLandscapeWindow : public Window {
|
||||||
uint widget_id;
|
uint widget_id;
|
||||||
@@ -874,7 +874,7 @@ static void _ShowGenerateLandscape(GenerateLandscapeWindowMode mode)
|
|||||||
|
|
||||||
if (mode == GLWM_HEIGHTMAP) {
|
if (mode == GLWM_HEIGHTMAP) {
|
||||||
/* If the function returns negative, it means there was a problem loading the heightmap */
|
/* If the function returns negative, it means there was a problem loading the heightmap */
|
||||||
if (!GetHeightmapDimensions(_file_to_saveload.detail_ftype, _file_to_saveload.name, &x, &y)) return;
|
if (!GetHeightmapDimensions(_file_to_saveload.detail_ftype, _file_to_saveload.name.c_str(), &x, &y)) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
WindowDesc *desc = (mode == GLWM_HEIGHTMAP) ? &_heightmap_load_desc : &_generate_landscape_desc;
|
WindowDesc *desc = (mode == GLWM_HEIGHTMAP) ? &_heightmap_load_desc : &_generate_landscape_desc;
|
||||||
@@ -1222,7 +1222,7 @@ static const StringID _generation_class_table[] = {
|
|||||||
STR_GENERATION_PREPARING_SCRIPT,
|
STR_GENERATION_PREPARING_SCRIPT,
|
||||||
STR_GENERATION_PREPARING_GAME
|
STR_GENERATION_PREPARING_GAME
|
||||||
};
|
};
|
||||||
assert_compile(lengthof(_generation_class_table) == GWP_CLASS_COUNT);
|
static_assert(lengthof(_generation_class_table) == GWP_CLASS_COUNT);
|
||||||
|
|
||||||
|
|
||||||
static void AbortGeneratingWorldCallback(Window *w, bool confirmed)
|
static void AbortGeneratingWorldCallback(Window *w, bool confirmed)
|
||||||
@@ -1324,7 +1324,7 @@ void ShowGenerateWorldProgress()
|
|||||||
static void _SetGeneratingWorldProgress(GenWorldProgress cls, uint progress, uint total)
|
static void _SetGeneratingWorldProgress(GenWorldProgress cls, uint progress, uint total)
|
||||||
{
|
{
|
||||||
static const int percent_table[] = {0, 5, 14, 17, 20, 40, 60, 65, 80, 85, 95, 99, 100 };
|
static const int percent_table[] = {0, 5, 14, 17, 20, 40, 60, 65, 80, 85, 95, 99, 100 };
|
||||||
assert_compile(lengthof(percent_table) == GWP_CLASS_COUNT + 1);
|
static_assert(lengthof(percent_table) == GWP_CLASS_COUNT + 1);
|
||||||
assert(cls < GWP_CLASS_COUNT);
|
assert(cls < GWP_CLASS_COUNT);
|
||||||
|
|
||||||
/* Do not run this function if we aren't in a thread */
|
/* Do not run this function if we aren't in a thread */
|
||||||
|
@@ -1987,7 +1987,7 @@ void UpdateCursorSize()
|
|||||||
/* Ignore setting any cursor before the sprites are loaded. */
|
/* Ignore setting any cursor before the sprites are loaded. */
|
||||||
if (GetMaxSpriteID() == 0) return;
|
if (GetMaxSpriteID() == 0) return;
|
||||||
|
|
||||||
assert_compile(lengthof(_cursor.sprite_seq) == lengthof(_cursor.sprite_pos));
|
static_assert(lengthof(_cursor.sprite_seq) == lengthof(_cursor.sprite_pos));
|
||||||
assert(_cursor.sprite_count <= lengthof(_cursor.sprite_seq));
|
assert(_cursor.sprite_count <= lengthof(_cursor.sprite_seq));
|
||||||
for (uint i = 0; i < _cursor.sprite_count; ++i) {
|
for (uint i = 0; i < _cursor.sprite_count; ++i) {
|
||||||
const Sprite *p = GetSprite(GB(_cursor.sprite_seq[i].sprite, 0, SPRITE_WIDTH), ST_NORMAL);
|
const Sprite *p = GetSprite(GB(_cursor.sprite_seq[i].sprite, 0, SPRITE_WIDTH), ST_NORMAL);
|
||||||
|
@@ -200,7 +200,7 @@ union Colour {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
assert_compile(sizeof(Colour) == sizeof(uint32));
|
static_assert(sizeof(Colour) == sizeof(uint32));
|
||||||
|
|
||||||
|
|
||||||
/** Available font sizes */
|
/** Available font sizes */
|
||||||
|
@@ -162,7 +162,7 @@ void CheckExternalFiles()
|
|||||||
if (sounds_set->GetNumInvalid() != 0) {
|
if (sounds_set->GetNumInvalid() != 0) {
|
||||||
add_pos += seprintf(add_pos, last, "Trying to load sound set '%s', but it is incomplete. The game will probably not run correctly until you properly install this set or select another one. See section 4.1 of README.md.\n\nThe following files are corrupted or missing:\n", sounds_set->name.c_str());
|
add_pos += seprintf(add_pos, last, "Trying to load sound set '%s', but it is incomplete. The game will probably not run correctly until you properly install this set or select another one. See section 4.1 of README.md.\n\nThe following files are corrupted or missing:\n", sounds_set->name.c_str());
|
||||||
|
|
||||||
assert_compile(SoundsSet::NUM_FILES == 1);
|
static_assert(SoundsSet::NUM_FILES == 1);
|
||||||
/* No need to loop each file, as long as there is only a single
|
/* No need to loop each file, as long as there is only a single
|
||||||
* sound file. */
|
* sound file. */
|
||||||
add_pos += seprintf(add_pos, last, "\t%s is %s (%s)\n", sounds_set->files->filename, SoundsSet::CheckMD5(sounds_set->files, BASESET_DIR) == MD5File::CR_MISMATCH ? "corrupt" : "missing", sounds_set->files->missing_warning);
|
add_pos += seprintf(add_pos, last, "\t%s is %s (%s)\n", sounds_set->files->filename, SoundsSet::CheckMD5(sounds_set->files, BASESET_DIR) == MD5File::CR_MISMATCH ? "corrupt" : "missing", sounds_set->files->missing_warning);
|
||||||
|
@@ -248,7 +248,7 @@ CommandCost CmdGoalQuestion(TileIndex tile, DoCommandFlag flags, uint32 p1, uint
|
|||||||
CompanyID company = (CompanyID)GB(p1, 16, 8);
|
CompanyID company = (CompanyID)GB(p1, 16, 8);
|
||||||
ClientID client = (ClientID)GB(p1, 16, 16);
|
ClientID client = (ClientID)GB(p1, 16, 16);
|
||||||
|
|
||||||
assert_compile(GOAL_QUESTION_BUTTON_COUNT < 29);
|
static_assert(GOAL_QUESTION_BUTTON_COUNT < 29);
|
||||||
uint32 button_mask = GB(p2, 0, GOAL_QUESTION_BUTTON_COUNT);
|
uint32 button_mask = GB(p2, 0, GOAL_QUESTION_BUTTON_COUNT);
|
||||||
byte type = GB(p2, 29, 2);
|
byte type = GB(p2, 29, 2);
|
||||||
bool is_client = HasBit(p2, 31);
|
bool is_client = HasBit(p2, 31);
|
||||||
|
119
src/goal_gui.cpp
119
src/goal_gui.cpp
@@ -360,11 +360,10 @@ struct GoalQuestionWindow : public Window {
|
|||||||
char *question; ///< Question to ask (private copy).
|
char *question; ///< Question to ask (private copy).
|
||||||
int buttons; ///< Number of valid buttons in #button.
|
int buttons; ///< Number of valid buttons in #button.
|
||||||
int button[3]; ///< Buttons to display.
|
int button[3]; ///< Buttons to display.
|
||||||
byte type; ///< Type of question.
|
TextColour colour; ///< Colour of the question text.
|
||||||
|
|
||||||
GoalQuestionWindow(WindowDesc *desc, WindowNumber window_number, byte type, uint32 button_mask, const char *question) : Window(desc), type(type)
|
GoalQuestionWindow(WindowDesc *desc, WindowNumber window_number, TextColour colour, uint32 button_mask, const char *question) : Window(desc), colour(colour)
|
||||||
{
|
{
|
||||||
assert(type < GOAL_QUESTION_TYPE_COUNT);
|
|
||||||
this->question = stredup(question);
|
this->question = stredup(question);
|
||||||
|
|
||||||
/* Figure out which buttons we have to enable. */
|
/* Figure out which buttons we have to enable. */
|
||||||
@@ -391,10 +390,6 @@ struct GoalQuestionWindow : public Window {
|
|||||||
void SetStringParameters(int widget) const override
|
void SetStringParameters(int widget) const override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_GQ_CAPTION:
|
|
||||||
SetDParam(0, STR_GOAL_QUESTION_CAPTION_QUESTION + this->type);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case WID_GQ_BUTTON_1:
|
case WID_GQ_BUTTON_1:
|
||||||
SetDParam(0, STR_GOAL_QUESTION_BUTTON_CANCEL + this->button[0]);
|
SetDParam(0, STR_GOAL_QUESTION_BUTTON_CANCEL + this->button[0]);
|
||||||
break;
|
break;
|
||||||
@@ -442,15 +437,15 @@ struct GoalQuestionWindow : public Window {
|
|||||||
if (widget != WID_GQ_QUESTION) return;
|
if (widget != WID_GQ_QUESTION) return;
|
||||||
|
|
||||||
SetDParamStr(0, this->question);
|
SetDParamStr(0, this->question);
|
||||||
DrawStringMultiLine(r.left, r.right, r.top, UINT16_MAX, STR_JUST_RAW_STRING, TC_BLACK, SA_TOP | SA_HOR_CENTER);
|
DrawStringMultiLine(r.left, r.right, r.top, UINT16_MAX, STR_JUST_RAW_STRING, this->colour, SA_TOP | SA_HOR_CENTER);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/** Widgets of the goal question window. */
|
/** Widgets of the goal question window. */
|
||||||
static const NWidgetPart _nested_goal_question_widgets[] = {
|
static const NWidgetPart _nested_goal_question_widgets_question[] = {
|
||||||
NWidget(NWID_HORIZONTAL),
|
NWidget(NWID_HORIZONTAL),
|
||||||
NWidget(WWT_CLOSEBOX, COLOUR_LIGHT_BLUE),
|
NWidget(WWT_CLOSEBOX, COLOUR_LIGHT_BLUE),
|
||||||
NWidget(WWT_CAPTION, COLOUR_LIGHT_BLUE, WID_GQ_CAPTION), SetDataTip(STR_WHITE_STRING, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
|
NWidget(WWT_CAPTION, COLOUR_LIGHT_BLUE, WID_GQ_CAPTION), SetDataTip(STR_GOAL_QUESTION_CAPTION_QUESTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
|
||||||
EndContainer(),
|
EndContainer(),
|
||||||
NWidget(WWT_PANEL, COLOUR_LIGHT_BLUE),
|
NWidget(WWT_PANEL, COLOUR_LIGHT_BLUE),
|
||||||
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_GQ_QUESTION), SetMinimalSize(300, 0), SetPadding(8, 8, 8, 8), SetFill(1, 0),
|
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_GQ_QUESTION), SetMinimalSize(300, 0), SetPadding(8, 8, 8, 8), SetFill(1, 0),
|
||||||
@@ -472,12 +467,107 @@ static const NWidgetPart _nested_goal_question_widgets[] = {
|
|||||||
EndContainer(),
|
EndContainer(),
|
||||||
};
|
};
|
||||||
|
|
||||||
static WindowDesc _goal_question_list_desc(
|
static const NWidgetPart _nested_goal_question_widgets_info[] = {
|
||||||
|
NWidget(NWID_HORIZONTAL),
|
||||||
|
NWidget(WWT_CLOSEBOX, COLOUR_LIGHT_BLUE),
|
||||||
|
NWidget(WWT_CAPTION, COLOUR_LIGHT_BLUE, WID_GQ_CAPTION), SetDataTip(STR_GOAL_QUESTION_CAPTION_INFORMATION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
|
||||||
|
EndContainer(),
|
||||||
|
NWidget(WWT_PANEL, COLOUR_LIGHT_BLUE),
|
||||||
|
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_GQ_QUESTION), SetMinimalSize(300, 0), SetPadding(8, 8, 8, 8), SetFill(1, 0),
|
||||||
|
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GQ_BUTTONS),
|
||||||
|
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(85, 10, 85),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_LIGHT_BLUE, WID_GQ_BUTTON_1), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0),
|
||||||
|
EndContainer(),
|
||||||
|
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(65, 10, 65),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_LIGHT_BLUE, WID_GQ_BUTTON_1), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_LIGHT_BLUE, WID_GQ_BUTTON_2), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0),
|
||||||
|
EndContainer(),
|
||||||
|
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(25, 10, 25),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_LIGHT_BLUE, WID_GQ_BUTTON_1), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_LIGHT_BLUE, WID_GQ_BUTTON_2), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_LIGHT_BLUE, WID_GQ_BUTTON_3), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0),
|
||||||
|
EndContainer(),
|
||||||
|
EndContainer(),
|
||||||
|
NWidget(NWID_SPACER), SetMinimalSize(0, 8),
|
||||||
|
EndContainer(),
|
||||||
|
};
|
||||||
|
|
||||||
|
static const NWidgetPart _nested_goal_question_widgets_warning[] = {
|
||||||
|
NWidget(NWID_HORIZONTAL),
|
||||||
|
NWidget(WWT_CLOSEBOX, COLOUR_YELLOW),
|
||||||
|
NWidget(WWT_CAPTION, COLOUR_YELLOW, WID_GQ_CAPTION), SetDataTip(STR_GOAL_QUESTION_CAPTION_WARNING, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
|
||||||
|
EndContainer(),
|
||||||
|
NWidget(WWT_PANEL, COLOUR_YELLOW),
|
||||||
|
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_GQ_QUESTION), SetMinimalSize(300, 0), SetPadding(8, 8, 8, 8), SetFill(1, 0),
|
||||||
|
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GQ_BUTTONS),
|
||||||
|
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(85, 10, 85),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GQ_BUTTON_1), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0),
|
||||||
|
EndContainer(),
|
||||||
|
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(65, 10, 65),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GQ_BUTTON_1), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GQ_BUTTON_2), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0),
|
||||||
|
EndContainer(),
|
||||||
|
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(25, 10, 25),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GQ_BUTTON_1), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GQ_BUTTON_2), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GQ_BUTTON_3), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0),
|
||||||
|
EndContainer(),
|
||||||
|
EndContainer(),
|
||||||
|
NWidget(NWID_SPACER), SetMinimalSize(0, 8),
|
||||||
|
EndContainer(),
|
||||||
|
};
|
||||||
|
|
||||||
|
static const NWidgetPart _nested_goal_question_widgets_error[] = {
|
||||||
|
NWidget(NWID_HORIZONTAL),
|
||||||
|
NWidget(WWT_CLOSEBOX, COLOUR_RED),
|
||||||
|
NWidget(WWT_CAPTION, COLOUR_RED, WID_GQ_CAPTION), SetDataTip(STR_GOAL_QUESTION_CAPTION_ERROR, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
|
||||||
|
EndContainer(),
|
||||||
|
NWidget(WWT_PANEL, COLOUR_RED),
|
||||||
|
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_GQ_QUESTION), SetMinimalSize(300, 0), SetPadding(8, 8, 8, 8), SetFill(1, 0),
|
||||||
|
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GQ_BUTTONS),
|
||||||
|
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(85, 10, 85),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GQ_BUTTON_1), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0),
|
||||||
|
EndContainer(),
|
||||||
|
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(65, 10, 65),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GQ_BUTTON_1), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GQ_BUTTON_2), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0),
|
||||||
|
EndContainer(),
|
||||||
|
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(25, 10, 25),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GQ_BUTTON_1), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GQ_BUTTON_2), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0),
|
||||||
|
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GQ_BUTTON_3), SetDataTip(STR_BLACK_STRING, STR_NULL), SetFill(1, 0),
|
||||||
|
EndContainer(),
|
||||||
|
EndContainer(),
|
||||||
|
NWidget(NWID_SPACER), SetMinimalSize(0, 8),
|
||||||
|
EndContainer(),
|
||||||
|
};
|
||||||
|
|
||||||
|
static WindowDesc _goal_question_list_desc[] = {
|
||||||
|
{
|
||||||
WDP_CENTER, nullptr, 0, 0,
|
WDP_CENTER, nullptr, 0, 0,
|
||||||
WC_GOAL_QUESTION, WC_NONE,
|
WC_GOAL_QUESTION, WC_NONE,
|
||||||
WDF_CONSTRUCTION,
|
WDF_CONSTRUCTION,
|
||||||
_nested_goal_question_widgets, lengthof(_nested_goal_question_widgets)
|
_nested_goal_question_widgets_question, lengthof(_nested_goal_question_widgets_question),
|
||||||
);
|
},
|
||||||
|
{
|
||||||
|
WDP_CENTER, nullptr, 0, 0,
|
||||||
|
WC_GOAL_QUESTION, WC_NONE,
|
||||||
|
WDF_CONSTRUCTION,
|
||||||
|
_nested_goal_question_widgets_info, lengthof(_nested_goal_question_widgets_info),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
WDP_CENTER, nullptr, 0, 0,
|
||||||
|
WC_GOAL_QUESTION, WC_NONE,
|
||||||
|
WDF_CONSTRUCTION,
|
||||||
|
_nested_goal_question_widgets_warning, lengthof(_nested_goal_question_widgets_warning),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
WDP_CENTER, nullptr, 0, 0,
|
||||||
|
WC_GOAL_QUESTION, WC_NONE,
|
||||||
|
WDF_CONSTRUCTION,
|
||||||
|
_nested_goal_question_widgets_error, lengthof(_nested_goal_question_widgets_error),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display a goal question.
|
* Display a goal question.
|
||||||
@@ -488,5 +578,6 @@ static WindowDesc _goal_question_list_desc(
|
|||||||
*/
|
*/
|
||||||
void ShowGoalQuestion(uint16 id, byte type, uint32 button_mask, const char *question)
|
void ShowGoalQuestion(uint16 id, byte type, uint32 button_mask, const char *question)
|
||||||
{
|
{
|
||||||
new GoalQuestionWindow(&_goal_question_list_desc, id, type, button_mask, question);
|
assert(type < GOAL_QUESTION_TYPE_COUNT);
|
||||||
|
new GoalQuestionWindow(&_goal_question_list_desc[type], id, type == 3 ? TC_WHITE : TC_BLACK, button_mask, question);
|
||||||
}
|
}
|
||||||
|
@@ -289,7 +289,7 @@ protected:
|
|||||||
|
|
||||||
/* the colours and cost array of GraphDrawer must accommodate
|
/* the colours and cost array of GraphDrawer must accommodate
|
||||||
* both values for cargo and companies. So if any are higher, quit */
|
* both values for cargo and companies. So if any are higher, quit */
|
||||||
assert_compile(GRAPH_MAX_DATASETS >= (int)NUM_CARGO && GRAPH_MAX_DATASETS >= (int)MAX_COMPANIES);
|
static_assert(GRAPH_MAX_DATASETS >= (int)NUM_CARGO && GRAPH_MAX_DATASETS >= (int)MAX_COMPANIES);
|
||||||
assert(this->num_vert_lines > 0);
|
assert(this->num_vert_lines > 0);
|
||||||
|
|
||||||
byte grid_colour = _colour_gradient[COLOUR_GREY][4];
|
byte grid_colour = _colour_gradient[COLOUR_GREY][4];
|
||||||
@@ -1527,7 +1527,7 @@ static NWidgetBase *MakePerformanceDetailPanels(int *biggest_index)
|
|||||||
STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP,
|
STR_PERFORMANCE_DETAIL_TOTAL_TOOLTIP,
|
||||||
};
|
};
|
||||||
|
|
||||||
assert_compile(lengthof(performance_tips) == SCORE_END - SCORE_BEGIN);
|
static_assert(lengthof(performance_tips) == SCORE_END - SCORE_BEGIN);
|
||||||
|
|
||||||
NWidgetVertical *vert = new NWidgetVertical(NC_EQUALSIZE);
|
NWidgetVertical *vert = new NWidgetVertical(NC_EQUALSIZE);
|
||||||
for (int widnum = WID_PRD_SCORE_FIRST; widnum <= WID_PRD_SCORE_LAST; widnum++) {
|
for (int widnum = WID_PRD_SCORE_FIRST; widnum <= WID_PRD_SCORE_LAST; widnum++) {
|
||||||
|
@@ -301,8 +301,8 @@ bool GroundVehicle<T, Type>::IsChainInDepot() const
|
|||||||
{
|
{
|
||||||
const T *v = this->First();
|
const T *v = this->First();
|
||||||
/* Is the front engine stationary in the depot? */
|
/* Is the front engine stationary in the depot? */
|
||||||
assert_compile((int)TRANSPORT_RAIL == (int)VEH_TRAIN);
|
static_assert((int)TRANSPORT_RAIL == (int)VEH_TRAIN);
|
||||||
assert_compile((int)TRANSPORT_ROAD == (int)VEH_ROAD);
|
static_assert((int)TRANSPORT_ROAD == (int)VEH_ROAD);
|
||||||
if (!IsDepotTypeTile(v->tile, (TransportType)Type) || v->cur_speed != 0) return false;
|
if (!IsDepotTypeTile(v->tile, (TransportType)Type) || v->cur_speed != 0) return false;
|
||||||
|
|
||||||
/* Check whether the rest is also already trying to enter the depot. */
|
/* Check whether the rest is also already trying to enter the depot. */
|
||||||
|
@@ -20,7 +20,7 @@
|
|||||||
#include "safeguards.h"
|
#include "safeguards.h"
|
||||||
|
|
||||||
HighScore _highscore_table[SP_HIGHSCORE_END][5]; ///< various difficulty-settings; top 5
|
HighScore _highscore_table[SP_HIGHSCORE_END][5]; ///< various difficulty-settings; top 5
|
||||||
char *_highscore_file; ///< The file to store the highscore data in.
|
std::string _highscore_file; ///< The file to store the highscore data in.
|
||||||
|
|
||||||
static const StringID _endgame_perf_titles[] = {
|
static const StringID _endgame_perf_titles[] = {
|
||||||
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN,
|
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN,
|
||||||
@@ -123,7 +123,7 @@ int8 SaveHighScoreValueNetwork()
|
|||||||
/** Save HighScore table to file */
|
/** Save HighScore table to file */
|
||||||
void SaveToHighScore()
|
void SaveToHighScore()
|
||||||
{
|
{
|
||||||
FILE *fp = fopen(_highscore_file, "wb");
|
FILE *fp = fopen(_highscore_file.c_str(), "wb");
|
||||||
|
|
||||||
if (fp != nullptr) {
|
if (fp != nullptr) {
|
||||||
uint i;
|
uint i;
|
||||||
@@ -151,7 +151,7 @@ void SaveToHighScore()
|
|||||||
/** Initialize the highscore table to 0 and if any file exists, load in values */
|
/** Initialize the highscore table to 0 and if any file exists, load in values */
|
||||||
void LoadFromHighScore()
|
void LoadFromHighScore()
|
||||||
{
|
{
|
||||||
FILE *fp = fopen(_highscore_file, "rb");
|
FILE *fp = fopen(_highscore_file.c_str(), "rb");
|
||||||
|
|
||||||
memset(_highscore_table, 0, sizeof(_highscore_table));
|
memset(_highscore_table, 0, sizeof(_highscore_table));
|
||||||
|
|
||||||
|
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
#include "safeguards.h"
|
#include "safeguards.h"
|
||||||
|
|
||||||
char *_hotkeys_file;
|
std::string _hotkeys_file;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* List of all HotkeyLists.
|
* List of all HotkeyLists.
|
||||||
|
@@ -64,7 +64,7 @@ enum HouseZonesBits {
|
|||||||
HZB_TOWN_CENTRE,
|
HZB_TOWN_CENTRE,
|
||||||
HZB_END,
|
HZB_END,
|
||||||
};
|
};
|
||||||
assert_compile(HZB_END == 5);
|
static_assert(HZB_END == 5);
|
||||||
|
|
||||||
DECLARE_POSTFIX_INCREMENT(HouseZonesBits)
|
DECLARE_POSTFIX_INCREMENT(HouseZonesBits)
|
||||||
|
|
||||||
|
@@ -2682,8 +2682,7 @@ static int WhoCanServiceIndustry(Industry *ind)
|
|||||||
* We cannot check the first of shared orders only, since the first vehicle in such a chain
|
* We cannot check the first of shared orders only, since the first vehicle in such a chain
|
||||||
* may have a different cargo type.
|
* may have a different cargo type.
|
||||||
*/
|
*/
|
||||||
const Order *o;
|
for (const Order *o : v->Orders()) {
|
||||||
FOR_VEHICLE_ORDERS(v, o) {
|
|
||||||
if (o->IsType(OT_GOTO_STATION) && !(o->GetUnloadType() & OUFB_TRANSFER)) {
|
if (o->IsType(OT_GOTO_STATION) && !(o->GetUnloadType() & OUFB_TRANSFER)) {
|
||||||
/* Vehicle visits a station to load or unload */
|
/* Vehicle visits a station to load or unload */
|
||||||
Station *st = Station::Get(o->GetDestination());
|
Station *st = Station::Get(o->GetDestination());
|
||||||
|
@@ -145,7 +145,7 @@ enum CargoSuffixInOut {
|
|||||||
template <typename TC, typename TS>
|
template <typename TC, typename TS>
|
||||||
static inline void GetAllCargoSuffixes(CargoSuffixInOut use_input, CargoSuffixType cst, const Industry *ind, IndustryType ind_type, const IndustrySpec *indspec, const TC &cargoes, TS &suffixes)
|
static inline void GetAllCargoSuffixes(CargoSuffixInOut use_input, CargoSuffixType cst, const Industry *ind, IndustryType ind_type, const IndustrySpec *indspec, const TC &cargoes, TS &suffixes)
|
||||||
{
|
{
|
||||||
assert_compile(lengthof(cargoes) <= lengthof(suffixes));
|
static_assert(lengthof(cargoes) <= lengthof(suffixes));
|
||||||
|
|
||||||
if (indspec->behaviour & INDUSTRYBEH_CARGOTYPES_UNLIMITED) {
|
if (indspec->behaviour & INDUSTRYBEH_CARGOTYPES_UNLIMITED) {
|
||||||
/* Reworked behaviour with new many-in-many-out scheme */
|
/* Reworked behaviour with new many-in-many-out scheme */
|
||||||
@@ -2201,8 +2201,8 @@ private:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
assert_compile(MAX_CARGOES >= cpp_lengthof(IndustrySpec, produced_cargo));
|
static_assert(MAX_CARGOES >= cpp_lengthof(IndustrySpec, produced_cargo));
|
||||||
assert_compile(MAX_CARGOES >= cpp_lengthof(IndustrySpec, accepts_cargo));
|
static_assert(MAX_CARGOES >= cpp_lengthof(IndustrySpec, accepts_cargo));
|
||||||
|
|
||||||
int CargoesField::small_height; ///< Height of the header row.
|
int CargoesField::small_height; ///< Height of the header row.
|
||||||
int CargoesField::normal_height; ///< Height of the non-header rows.
|
int CargoesField::normal_height; ///< Height of the non-header rows.
|
||||||
|
@@ -258,8 +258,7 @@ bool CheckSharingChangePossible(VehicleType type)
|
|||||||
|
|
||||||
/* Check order list */
|
/* Check order list */
|
||||||
if (v->FirstShared() != v) continue;
|
if (v->FirstShared() != v) continue;
|
||||||
Order *o;
|
for(const Order *o : v->Orders()) {
|
||||||
FOR_VEHICLE_ORDERS(v, o) {
|
|
||||||
if (!OrderDestinationIsAllowed(o, v)) {
|
if (!OrderDestinationIsAllowed(o, v)) {
|
||||||
error_message = STR_CONFIG_SETTING_SHARING_ORDERS_TO_OTHERS;
|
error_message = STR_CONFIG_SETTING_SHARING_ORDERS_TO_OTHERS;
|
||||||
}
|
}
|
||||||
|
10
src/ini.cpp
10
src/ini.cpp
@@ -43,7 +43,7 @@ IniFile::IniFile(const char * const *list_group_names) : IniLoadFile(list_group_
|
|||||||
* @param filename the file to save to.
|
* @param filename the file to save to.
|
||||||
* @return true if saving succeeded.
|
* @return true if saving succeeded.
|
||||||
*/
|
*/
|
||||||
bool IniFile::SaveToDisk(const char *filename)
|
bool IniFile::SaveToDisk(const std::string &filename)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* First write the configuration to a (temporary) file and then rename
|
* First write the configuration to a (temporary) file and then rename
|
||||||
@@ -96,7 +96,7 @@ bool IniFile::SaveToDisk(const char *filename)
|
|||||||
# undef strncpy
|
# undef strncpy
|
||||||
/* Allocate space for one more \0 character. */
|
/* Allocate space for one more \0 character. */
|
||||||
TCHAR tfilename[MAX_PATH + 1], tfile_new[MAX_PATH + 1];
|
TCHAR tfilename[MAX_PATH + 1], tfile_new[MAX_PATH + 1];
|
||||||
_tcsncpy(tfilename, OTTD2FS(filename), MAX_PATH);
|
_tcsncpy(tfilename, OTTD2FS(filename.c_str()), MAX_PATH);
|
||||||
_tcsncpy(tfile_new, OTTD2FS(file_new.c_str()), MAX_PATH);
|
_tcsncpy(tfile_new, OTTD2FS(file_new.c_str()), MAX_PATH);
|
||||||
/* SHFileOperation wants a double '\0' terminated string. */
|
/* SHFileOperation wants a double '\0' terminated string. */
|
||||||
tfilename[MAX_PATH - 1] = '\0';
|
tfilename[MAX_PATH - 1] = '\0';
|
||||||
@@ -113,8 +113,8 @@ bool IniFile::SaveToDisk(const char *filename)
|
|||||||
shfopt.pTo = tfilename;
|
shfopt.pTo = tfilename;
|
||||||
SHFileOperation(&shfopt);
|
SHFileOperation(&shfopt);
|
||||||
#else
|
#else
|
||||||
if (rename(file_new.c_str(), filename) < 0) {
|
if (rename(file_new.c_str(), filename.c_str()) < 0) {
|
||||||
DEBUG(misc, 0, "Renaming %s to %s failed; configuration not saved", file_new.c_str(), filename);
|
DEBUG(misc, 0, "Renaming %s to %s failed; configuration not saved", file_new.c_str(), filename.c_str());
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -125,7 +125,7 @@ bool IniFile::SaveToDisk(const char *filename)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* virtual */ FILE *IniFile::OpenFile(const char *filename, Subdirectory subdir, size_t *size)
|
/* virtual */ FILE *IniFile::OpenFile(const std::string &filename, Subdirectory subdir, size_t *size)
|
||||||
{
|
{
|
||||||
/* Open the text file in binary mode to prevent end-of-line translations
|
/* Open the text file in binary mode to prevent end-of-line translations
|
||||||
* done by ftell() and friends, as defined by K&R. */
|
* done by ftell() and friends, as defined by K&R. */
|
||||||
|
@@ -192,7 +192,7 @@ void IniLoadFile::RemoveGroup(const char *name)
|
|||||||
* @param subdir the sub directory to load the file from.
|
* @param subdir the sub directory to load the file from.
|
||||||
* @pre nothing has been loaded yet.
|
* @pre nothing has been loaded yet.
|
||||||
*/
|
*/
|
||||||
void IniLoadFile::LoadFromDisk(const char *filename, Subdirectory subdir, std::string *save)
|
void IniLoadFile::LoadFromDisk(const std::string &filename, Subdirectory subdir, std::string *save)
|
||||||
{
|
{
|
||||||
assert(this->last_group == &this->group);
|
assert(this->last_group == &this->group);
|
||||||
|
|
||||||
|
@@ -66,7 +66,7 @@ struct IniLoadFile {
|
|||||||
IniGroup *GetGroup(const std::string &name, bool create_new = true);
|
IniGroup *GetGroup(const std::string &name, bool create_new = true);
|
||||||
void RemoveGroup(const char *name);
|
void RemoveGroup(const char *name);
|
||||||
|
|
||||||
void LoadFromDisk(const char *filename, Subdirectory subdir, std::string *save = nullptr);
|
void LoadFromDisk(const std::string &filename, Subdirectory subdir, std::string *save = nullptr);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Open the INI file.
|
* Open the INI file.
|
||||||
@@ -75,7 +75,7 @@ struct IniLoadFile {
|
|||||||
* @param[out] size Size of the opened file.
|
* @param[out] size Size of the opened file.
|
||||||
* @return File handle of the opened file, or \c nullptr.
|
* @return File handle of the opened file, or \c nullptr.
|
||||||
*/
|
*/
|
||||||
virtual FILE *OpenFile(const char *filename, Subdirectory subdir, size_t *size) = 0;
|
virtual FILE *OpenFile(const std::string &filename, Subdirectory subdir, size_t *size) = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Report an error about the file contents.
|
* Report an error about the file contents.
|
||||||
@@ -90,9 +90,9 @@ struct IniLoadFile {
|
|||||||
struct IniFile : IniLoadFile {
|
struct IniFile : IniLoadFile {
|
||||||
IniFile(const char * const *list_group_names = nullptr);
|
IniFile(const char * const *list_group_names = nullptr);
|
||||||
|
|
||||||
bool SaveToDisk(const char *filename);
|
bool SaveToDisk(const std::string &filename);
|
||||||
|
|
||||||
virtual FILE *OpenFile(const char *filename, Subdirectory subdir, size_t *size);
|
virtual FILE *OpenFile(const std::string &filename, Subdirectory subdir, size_t *size);
|
||||||
virtual void ReportFileError(const char * const pre, const char * const buffer, const char * const post);
|
virtual void ReportFileError(const char * const pre, const char * const buffer, const char * const post);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -823,7 +823,7 @@ void RunTileLoop()
|
|||||||
0xD8F, 0x1296, 0x2496, 0x4357, 0x8679, 0x1030E, 0x206CD, 0x403FE, 0x807B8, 0x1004B2, 0x2006A8,
|
0xD8F, 0x1296, 0x2496, 0x4357, 0x8679, 0x1030E, 0x206CD, 0x403FE, 0x807B8, 0x1004B2, 0x2006A8,
|
||||||
0x4004B2, 0x800B87, 0x10004F3, 0x200072D, 0x40006AE, 0x80009E3,
|
0x4004B2, 0x800B87, 0x10004F3, 0x200072D, 0x40006AE, 0x80009E3,
|
||||||
};
|
};
|
||||||
assert_compile(lengthof(feedbacks) == MAX_MAP_TILES_BITS - 2 * MIN_MAP_SIZE_BITS + 1);
|
static_assert(lengthof(feedbacks) == MAX_MAP_TILES_BITS - 2 * MIN_MAP_SIZE_BITS + 1);
|
||||||
const uint32 feedback = feedbacks[MapLogX() + MapLogY() - 2 * MIN_MAP_SIZE_BITS];
|
const uint32 feedback = feedbacks[MapLogX() + MapLogY() - 2 * MIN_MAP_SIZE_BITS];
|
||||||
|
|
||||||
/* We update every tile every 256 ticks, so divide the map size by 2^8 = 256 */
|
/* We update every tile every 256 ticks, so divide the map size by 2^8 = 256 */
|
||||||
@@ -1319,7 +1319,7 @@ void GenerateLandscape(byte mode)
|
|||||||
|
|
||||||
if (mode == GWM_HEIGHTMAP) {
|
if (mode == GWM_HEIGHTMAP) {
|
||||||
SetGeneratingWorldProgress(GWP_LANDSCAPE, steps + GLS_HEIGHTMAP);
|
SetGeneratingWorldProgress(GWP_LANDSCAPE, steps + GLS_HEIGHTMAP);
|
||||||
LoadHeightmap(_file_to_saveload.detail_ftype, _file_to_saveload.name);
|
LoadHeightmap(_file_to_saveload.detail_ftype, _file_to_saveload.name.c_str());
|
||||||
IncreaseGeneratingWorldProgress(GWP_LANDSCAPE);
|
IncreaseGeneratingWorldProgress(GWP_LANDSCAPE);
|
||||||
} else if (_settings_game.game_creation.land_generator == LG_TERRAGENESIS) {
|
} else if (_settings_game.game_creation.land_generator == LG_TERRAGENESIS) {
|
||||||
SetGeneratingWorldProgress(GWP_LANDSCAPE, steps + GLS_TERRAGENESIS);
|
SetGeneratingWorldProgress(GWP_LANDSCAPE, steps + GLS_TERRAGENESIS);
|
||||||
|
@@ -2504,7 +2504,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Grootte:
|
|||||||
STR_OBJECT_CLASS_LTHS :Vuurtorings
|
STR_OBJECT_CLASS_LTHS :Vuurtorings
|
||||||
STR_OBJECT_CLASS_TRNS :Stuurders
|
STR_OBJECT_CLASS_TRNS :Stuurders
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Boome
|
STR_PLANT_TREE_CAPTION :{WHITE}Boome
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Kies tipe boom om te plant. Indien die teel reeds 'n boom op het sal enige tipe bome by geplant word, ongeag van die gekose tipe
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Kies tipe boom om te plant. Indien die teel reeds 'n boom op het sal enige tipe bome by geplant word, ongeag van die gekose tipe
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Bome van lukraake tipe
|
STR_TREES_RANDOM_TYPE :{BLACK}Bome van lukraake tipe
|
||||||
|
@@ -2101,7 +2101,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}حجم:
|
|||||||
STR_OBJECT_CLASS_LTHS :مناراة ضوئية
|
STR_OBJECT_CLASS_LTHS :مناراة ضوئية
|
||||||
STR_OBJECT_CLASS_TRNS :النواقل
|
STR_OBJECT_CLASS_TRNS :النواقل
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}اشجار
|
STR_PLANT_TREE_CAPTION :{WHITE}اشجار
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK} اختر نوع الشجر لزراعتة, اذا المربع يحتوي على اشجار فهذا الامر يضيف المزيد
|
STR_PLANT_TREE_TOOLTIP :{BLACK} اختر نوع الشجر لزراعتة, اذا المربع يحتوي على اشجار فهذا الامر يضيف المزيد
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}شجر عشوائي
|
STR_TREES_RANDOM_TYPE :{BLACK}شجر عشوائي
|
||||||
|
@@ -2362,7 +2362,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Tamainua
|
|||||||
STR_OBJECT_CLASS_LTHS :Itsasargiak
|
STR_OBJECT_CLASS_LTHS :Itsasargiak
|
||||||
STR_OBJECT_CLASS_TRNS :Igorgailuak
|
STR_OBJECT_CLASS_TRNS :Igorgailuak
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Zuhaitzak
|
STR_PLANT_TREE_CAPTION :{WHITE}Zuhaitzak
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK} Aukeratu landatuko diren zuhaitz motak. Laukiak zuhaitza badauka mota ezberdinetako zuhaitz gehio geituko ditu
|
STR_PLANT_TREE_TOOLTIP :{BLACK} Aukeratu landatuko diren zuhaitz motak. Laukiak zuhaitza badauka mota ezberdinetako zuhaitz gehio geituko ditu
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Ausazko zuhaitz motak
|
STR_TREES_RANDOM_TYPE :{BLACK}Ausazko zuhaitz motak
|
||||||
|
@@ -2830,7 +2830,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Паме
|
|||||||
STR_OBJECT_CLASS_LTHS :Маякi
|
STR_OBJECT_CLASS_LTHS :Маякi
|
||||||
STR_OBJECT_CLASS_TRNS :Перадатчыкi
|
STR_OBJECT_CLASS_TRNS :Перадатчыкi
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Дрэвы
|
STR_PLANT_TREE_CAPTION :{WHITE}Дрэвы
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Выберыце тып дрэваў для пасадкі. Калі на ўчастку ўжо ёсьць дрэвы, будуць дададзены некалькі дрэваў рознага тыпу, незалежна ад выбранага.
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Выберыце тып дрэваў для пасадкі. Калі на ўчастку ўжо ёсьць дрэвы, будуць дададзены некалькі дрэваў рознага тыпу, незалежна ад выбранага.
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Дрэвы розных відаў
|
STR_TREES_RANDOM_TYPE :{BLACK}Дрэвы розных відаў
|
||||||
|
@@ -2514,7 +2514,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Tamanho:
|
|||||||
STR_OBJECT_CLASS_LTHS :Faróis
|
STR_OBJECT_CLASS_LTHS :Faróis
|
||||||
STR_OBJECT_CLASS_TRNS :Transmissores
|
STR_OBJECT_CLASS_TRNS :Transmissores
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Árvores
|
STR_PLANT_TREE_CAPTION :{WHITE}Árvores
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Selecionar um tipo de árvore para plantar. Se o local já tiver uma árvore, isso irá adicionar mais árvores do tipo misto indepentendemente do tipo selecionado
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Selecionar um tipo de árvore para plantar. Se o local já tiver uma árvore, isso irá adicionar mais árvores do tipo misto indepentendemente do tipo selecionado
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Árvores de tipo aleatório
|
STR_TREES_RANDOM_TYPE :{BLACK}Árvores de tipo aleatório
|
||||||
|
@@ -2416,7 +2416,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Разм
|
|||||||
STR_OBJECT_CLASS_LTHS :Фарове
|
STR_OBJECT_CLASS_LTHS :Фарове
|
||||||
STR_OBJECT_CLASS_TRNS :Предаватели
|
STR_OBJECT_CLASS_TRNS :Предаватели
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Дървета
|
STR_PLANT_TREE_CAPTION :{WHITE}Дървета
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Избор на вид дърво за засаждане. Ако на полето вече съществува дърво, ще бъдат добавени повече дървета от различни видове, независимо от избора на вид
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Избор на вид дърво за засаждане. Ако на полето вече съществува дърво, ще бъдат добавени повече дървета от различни видове, независимо от избора на вид
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Дървета от произволен тип
|
STR_TREES_RANDOM_TYPE :{BLACK}Дървета от произволен тип
|
||||||
|
@@ -316,8 +316,15 @@ STR_SORT_BY_CARGO_CAPACITY :Capacitat de c
|
|||||||
STR_SORT_BY_RANGE :Abast
|
STR_SORT_BY_RANGE :Abast
|
||||||
STR_SORT_BY_POPULATION :Població
|
STR_SORT_BY_POPULATION :Població
|
||||||
STR_SORT_BY_RATING :Qualificació
|
STR_SORT_BY_RATING :Qualificació
|
||||||
|
STR_SORT_BY_NUM_VEHICLES :Nombre de vehicles
|
||||||
|
STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Benefici total de l'any passat
|
||||||
|
STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Benefici total d'aquest any
|
||||||
|
STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Benefici mitjà de l'any passat
|
||||||
|
STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Benefici mitjà aquest any
|
||||||
|
|
||||||
# Group by options for vehicle list
|
# Group by options for vehicle list
|
||||||
|
STR_GROUP_BY_NONE :Cap
|
||||||
|
STR_GROUP_BY_SHARED_ORDERS :Ordres compartides
|
||||||
|
|
||||||
# Tooltips for the main toolbar
|
# Tooltips for the main toolbar
|
||||||
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Posa en pausa o reprèn la partida
|
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Posa en pausa o reprèn la partida
|
||||||
@@ -774,6 +781,7 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Mostra t
|
|||||||
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Mostra el darrer missatge o notícia
|
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Mostra el darrer missatge o notícia
|
||||||
STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - -
|
STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - -
|
||||||
STR_STATUSBAR_PAUSED :{YELLOW}* * EN PAUSA * *
|
STR_STATUSBAR_PAUSED :{YELLOW}* * EN PAUSA * *
|
||||||
|
STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * EN PAUSA (s'espera que s'actualitzi el graf de distribució) * *
|
||||||
STR_STATUSBAR_AUTOSAVE :{RED}DESADA AUTOMÀTICA
|
STR_STATUSBAR_AUTOSAVE :{RED}DESADA AUTOMÀTICA
|
||||||
STR_STATUSBAR_SAVING_GAME :{RED}* * DESANT PARTIDA * *
|
STR_STATUSBAR_SAVING_GAME :{RED}* * DESANT PARTIDA * *
|
||||||
|
|
||||||
@@ -1613,6 +1621,10 @@ STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Lineal
|
|||||||
|
|
||||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Disposició de nous arbres durant la partida: {STRING}
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Disposició de nous arbres durant la partida: {STRING}
|
||||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Controla l'aparició aleatòria dels arbres durant una partida. Això podria afectar a les indústries que es basen en el creixement dels arbres, per exemple les serradores
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Controla l'aparició aleatòria dels arbres durant una partida. Això podria afectar a les indústries que es basen en el creixement dels arbres, per exemple les serradores
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD :Creixen però no n'apareixen més {RED}(trenca el funcionament de les serradores)
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_RAINFOREST :Creixen però només n'apareixen més a la selva tropical
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_ALL :Creixen i n'apareixen per tot arreu
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_GROWTH_NO_SPREAD :No creixen ni n'apareixen més {RED}(trenca el funcionament les serradores)
|
||||||
|
|
||||||
STR_CONFIG_SETTING_TOOLBAR_POS :Posició de la barra d'eines principal: {STRING}
|
STR_CONFIG_SETTING_TOOLBAR_POS :Posició de la barra d'eines principal: {STRING}
|
||||||
STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Posició horitzontal de la barra principal a la part superior de la pantalla
|
STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Posició horitzontal de la barra principal a la part superior de la pantalla
|
||||||
@@ -1976,6 +1988,10 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Connecta
|
|||||||
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Actualitza servidor
|
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Actualitza servidor
|
||||||
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Actualitza la informació del servidor
|
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Actualitza la informació del servidor
|
||||||
|
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :{BLACK}Cerca a Internet
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Cerca servidors públics a Internet
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :{BLACK}Cerca a la LAN
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :{BLACK}Cerca servidors a la xarxa local
|
||||||
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Afegeix un servidor
|
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Afegeix un servidor
|
||||||
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Afegeix un servidor a la llista que sempre es comprovarà per buscar partides en marxa
|
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Afegeix un servidor a la llista que sempre es comprovarà per buscar partides en marxa
|
||||||
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Inicia el servidor
|
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Inicia el servidor
|
||||||
@@ -2201,11 +2217,13 @@ STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Partida encara
|
|||||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Partida encara en pausa ({STRING}, {STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Partida encara en pausa ({STRING}, {STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Partida encara en pausa ({STRING}, {STRING}, {STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Partida encara en pausa ({STRING}, {STRING}, {STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :La partida encara està en pausa ({STRING}, {STRING}, {STRING}, {STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :La partida encara està en pausa ({STRING}, {STRING}, {STRING}, {STRING})
|
||||||
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_5 :La partida encara està en pausa ({STRING}, {STRING}, {STRING}, {STRING}, {STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Partida represa ({STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Partida represa ({STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :nombre de jugadors
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :nombre de jugadors
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :connectant clients
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :connectant clients
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manual
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manual
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :script de la partida
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :script de la partida
|
||||||
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :s'està esperant que s'actualitzi el graf de distribució
|
||||||
############ End of leave-in-this-order
|
############ End of leave-in-this-order
|
||||||
STR_NETWORK_MESSAGE_CLIENT_LEAVING :deixant
|
STR_NETWORK_MESSAGE_CLIENT_LEAVING :deixant
|
||||||
STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} s'ha unit a la partida
|
STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} s'ha unit a la partida
|
||||||
@@ -2522,13 +2540,19 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Mida: {G
|
|||||||
STR_OBJECT_CLASS_LTHS :Fars
|
STR_OBJECT_CLASS_LTHS :Fars
|
||||||
STR_OBJECT_CLASS_TRNS :Transmissors
|
STR_OBJECT_CLASS_TRNS :Transmissors
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Arbres
|
STR_PLANT_TREE_CAPTION :{WHITE}Arbres
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Selecciona el tipus d'arbre a plantar. Si la casella ja conté un arbre, s'afegiran més arbres d'altres espècies independentment de quin estigui seleccionat
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Selecciona el tipus d'arbre a plantar. Si la casella ja conté un arbre, s'afegiran més arbres d'altres espècies independentment de quin estigui seleccionat
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Arbres de tipus aleatori
|
STR_TREES_RANDOM_TYPE :{BLACK}Arbres de tipus aleatori
|
||||||
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Situar arbres de tipus aleatori. Shift commuta construeix/mostra el cost estimat
|
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Situar arbres de tipus aleatori. Shift commuta construeix/mostra el cost estimat
|
||||||
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Arbres Aleatoris
|
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Arbres Aleatoris
|
||||||
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Planta arbres aleatòriament al paisatge
|
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Planta arbres aleatòriament al paisatge
|
||||||
|
STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal
|
||||||
|
STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Planta un arbre a cada casella arrossegant el ratolí pel paisatge.
|
||||||
|
STR_TREES_MODE_FOREST_SM_BUTTON :Arbreda
|
||||||
|
STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Planta petits boscos arrossegant el ratolí pel paisatge.
|
||||||
|
STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Bosc
|
||||||
|
STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Planta grans boscos arrossegant el ratolí pel paisatge.
|
||||||
|
|
||||||
# Land generation window (SE)
|
# Land generation window (SE)
|
||||||
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Generador de Terreny
|
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Generador de Terreny
|
||||||
@@ -3158,10 +3182,10 @@ STR_GOALS_COMPANY_TITLE :{BLACK}Objectiu
|
|||||||
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Clica sobre l'objectiu per centrar la vista principal sobre la indústria/població/cel·la. Ctrl+clic per obrir una nova vista sobre la indústria/població/cel·la
|
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Clica sobre l'objectiu per centrar la vista principal sobre la indústria/població/cel·la. Ctrl+clic per obrir una nova vista sobre la indústria/població/cel·la
|
||||||
|
|
||||||
# Goal question window
|
# Goal question window
|
||||||
STR_GOAL_QUESTION_CAPTION_QUESTION :Pregunta
|
STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Pregunta
|
||||||
STR_GOAL_QUESTION_CAPTION_INFORMATION :Informació
|
STR_GOAL_QUESTION_CAPTION_INFORMATION :{BLACK}Informació
|
||||||
STR_GOAL_QUESTION_CAPTION_WARNING :Alerta
|
STR_GOAL_QUESTION_CAPTION_WARNING :{BLACK}Avís
|
||||||
STR_GOAL_QUESTION_CAPTION_ERROR :Error
|
STR_GOAL_QUESTION_CAPTION_ERROR :{YELLOW}Error
|
||||||
|
|
||||||
############ Start of Goal Question button list
|
############ Start of Goal Question button list
|
||||||
STR_GOAL_QUESTION_BUTTON_CANCEL :Cancel·la
|
STR_GOAL_QUESTION_BUTTON_CANCEL :Cancel·la
|
||||||
@@ -4240,6 +4264,7 @@ STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :La partida est
|
|||||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :No es pot llegir l'arxiu
|
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :No es pot llegir l'arxiu
|
||||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :No es pot escriure a l'arxiu
|
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :No es pot escriure a l'arxiu
|
||||||
STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :El test d'integritat de dades ha fallat
|
STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :El test d'integritat de dades ha fallat
|
||||||
|
STR_GAME_SAVELOAD_ERROR_PATCHPACK :La desada es va fer amb una versió modificada.
|
||||||
STR_GAME_SAVELOAD_NOT_AVAILABLE :<no disponible>
|
STR_GAME_SAVELOAD_NOT_AVAILABLE :<no disponible>
|
||||||
STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}La partida es va desar amb una versió sense suport de tramvies. S'han eliminat tots els tramvies
|
STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}La partida es va desar amb una versió sense suport de tramvies. S'han eliminat tots els tramvies
|
||||||
|
|
||||||
|
@@ -2609,7 +2609,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Veličin
|
|||||||
STR_OBJECT_CLASS_LTHS :Svjetionici
|
STR_OBJECT_CLASS_LTHS :Svjetionici
|
||||||
STR_OBJECT_CLASS_TRNS :Odašiljači
|
STR_OBJECT_CLASS_TRNS :Odašiljači
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Drveće
|
STR_PLANT_TREE_CAPTION :{WHITE}Drveće
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Odaberi vrstu drveta za sadnju. Ako polje već ima drvo, ovo će dodati još drveća raznih vrsta neovisno o odabranoj vrsti
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Odaberi vrstu drveta za sadnju. Ako polje već ima drvo, ovo će dodati još drveća raznih vrsta neovisno o odabranoj vrsti
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Raznovrsno drveće
|
STR_TREES_RANDOM_TYPE :{BLACK}Raznovrsno drveće
|
||||||
|
@@ -3130,7 +3130,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Velikost
|
|||||||
STR_OBJECT_CLASS_LTHS :Majáky
|
STR_OBJECT_CLASS_LTHS :Majáky
|
||||||
STR_OBJECT_CLASS_TRNS :Vysílače
|
STR_OBJECT_CLASS_TRNS :Vysílače
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Stromy
|
STR_PLANT_TREE_CAPTION :{WHITE}Stromy
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Zvol druh stromu na vysazení. Pokud se na políčku už nějaký strom nachází, přidá se k němu několik různých druhů bez ohledu na výběr druhu
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Zvol druh stromu na vysazení. Pokud se na políčku už nějaký strom nachází, přidá se k němu několik různých druhů bez ohledu na výběr druhu
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Různé stromy
|
STR_TREES_RANDOM_TYPE :{BLACK}Různé stromy
|
||||||
|
@@ -2514,7 +2514,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Størrel
|
|||||||
STR_OBJECT_CLASS_LTHS :Fyrtårn
|
STR_OBJECT_CLASS_LTHS :Fyrtårn
|
||||||
STR_OBJECT_CLASS_TRNS :Sendere
|
STR_OBJECT_CLASS_TRNS :Sendere
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Træer
|
STR_PLANT_TREE_CAPTION :{WHITE}Træer
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Vælg typen af træer der skal plantes. Hvis feltet allerede har et træ, vil dette tilføje flere træer i blandede typer, uafhængigt af den valgte type
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Vælg typen af træer der skal plantes. Hvis feltet allerede har et træ, vil dette tilføje flere træer i blandede typer, uafhængigt af den valgte type
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Træer af tilfældig type
|
STR_TREES_RANDOM_TYPE :{BLACK}Træer af tilfældig type
|
||||||
|
@@ -2513,7 +2513,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Grootte:
|
|||||||
STR_OBJECT_CLASS_LTHS :Vuurtorens
|
STR_OBJECT_CLASS_LTHS :Vuurtorens
|
||||||
STR_OBJECT_CLASS_TRNS :Zendmasten
|
STR_OBJECT_CLASS_TRNS :Zendmasten
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Bomen
|
STR_PLANT_TREE_CAPTION :{WHITE}Bomen
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Kies een soort boom om te planten. Als de tegel al bomen bevat, komen er meer bomen van verschillende typen bij, onafhankelijk van het geselecteerde type.
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Kies een soort boom om te planten. Als de tegel al bomen bevat, komen er meer bomen van verschillende typen bij, onafhankelijk van het geselecteerde type.
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Willekeurige soorten bomen
|
STR_TREES_RANDOM_TYPE :{BLACK}Willekeurige soorten bomen
|
||||||
|
@@ -3216,7 +3216,7 @@ STR_BASIC_HOUSE_SET_NAME :Basic houses
|
|||||||
STR_SELECT_TOWN_CAPTION :{WHITE}Select town
|
STR_SELECT_TOWN_CAPTION :{WHITE}Select town
|
||||||
STR_SELECT_TOWN_LIST_ITEM :{BLACK}{TOWN}
|
STR_SELECT_TOWN_LIST_ITEM :{BLACK}{TOWN}
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Trees
|
STR_PLANT_TREE_CAPTION :{WHITE}Trees
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Select tree type to plant. If the tile already has a tree, this will add more trees of mixed types independent of the selected type
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Select tree type to plant. If the tile already has a tree, this will add more trees of mixed types independent of the selected type
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Trees of random type
|
STR_TREES_RANDOM_TYPE :{BLACK}Trees of random type
|
||||||
@@ -3225,6 +3225,12 @@ STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Random T
|
|||||||
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plant trees randomly throughout the landscape
|
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Plant trees randomly throughout the landscape
|
||||||
STR_TREES_REMOVE_TREES_BUTTON :{BLACK}Remove all Trees
|
STR_TREES_REMOVE_TREES_BUTTON :{BLACK}Remove all Trees
|
||||||
STR_TREES_REMOVE_TREES_TOOLTIP :{BLACK}Remove all Trees over landscape
|
STR_TREES_REMOVE_TREES_TOOLTIP :{BLACK}Remove all Trees over landscape
|
||||||
|
STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal
|
||||||
|
STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Plant single trees by dragging over the landscape.
|
||||||
|
STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Grove
|
||||||
|
STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Plant small forests by dragging over the landscape.
|
||||||
|
STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Forest
|
||||||
|
STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Plant large forests by dragging over the landscape.
|
||||||
|
|
||||||
# Land generation window (SE)
|
# Land generation window (SE)
|
||||||
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Land Generation
|
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Land Generation
|
||||||
@@ -3881,10 +3887,10 @@ STR_GOALS_COMPANY_TITLE :{BLACK}Company
|
|||||||
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click on goal to centre main view on industry/town/tile. Ctrl+Click opens a new viewport on industry/town/tile location
|
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Click on goal to centre main view on industry/town/tile. Ctrl+Click opens a new viewport on industry/town/tile location
|
||||||
|
|
||||||
# Goal question window
|
# Goal question window
|
||||||
STR_GOAL_QUESTION_CAPTION_QUESTION :Question
|
STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Question
|
||||||
STR_GOAL_QUESTION_CAPTION_INFORMATION :Information
|
STR_GOAL_QUESTION_CAPTION_INFORMATION :{BLACK}Information
|
||||||
STR_GOAL_QUESTION_CAPTION_WARNING :Warning
|
STR_GOAL_QUESTION_CAPTION_WARNING :{BLACK}Warning
|
||||||
STR_GOAL_QUESTION_CAPTION_ERROR :Error
|
STR_GOAL_QUESTION_CAPTION_ERROR :{YELLOW}Error
|
||||||
|
|
||||||
############ Start of Goal Question button list
|
############ Start of Goal Question button list
|
||||||
STR_GOAL_QUESTION_BUTTON_CANCEL :Cancel
|
STR_GOAL_QUESTION_BUTTON_CANCEL :Cancel
|
||||||
|
@@ -2425,7 +2425,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Size: {G
|
|||||||
STR_OBJECT_CLASS_LTHS :Lighthouses
|
STR_OBJECT_CLASS_LTHS :Lighthouses
|
||||||
STR_OBJECT_CLASS_TRNS :Transmitters
|
STR_OBJECT_CLASS_TRNS :Transmitters
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Trees
|
STR_PLANT_TREE_CAPTION :{WHITE}Trees
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Select tree type to plant. If the tile already has a tree, this will add more trees of mixed types independent of the selected type
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Select tree type to plant. If the tile already has a tree, this will add more trees of mixed types independent of the selected type
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Trees of random type
|
STR_TREES_RANDOM_TYPE :{BLACK}Trees of random type
|
||||||
|
@@ -2509,7 +2509,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Size: {G
|
|||||||
STR_OBJECT_CLASS_LTHS :Lighthouses
|
STR_OBJECT_CLASS_LTHS :Lighthouses
|
||||||
STR_OBJECT_CLASS_TRNS :Transmitters
|
STR_OBJECT_CLASS_TRNS :Transmitters
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Trees
|
STR_PLANT_TREE_CAPTION :{WHITE}Trees
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Select tree type to plant. If the tile already has a tree, this will add more trees of mixed types independent of the selected type
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Select tree type to plant. If the tile already has a tree, this will add more trees of mixed types independent of the selected type
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Trees of random type
|
STR_TREES_RANDOM_TYPE :{BLACK}Trees of random type
|
||||||
|
@@ -2059,7 +2059,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Grandeco
|
|||||||
STR_OBJECT_CLASS_LTHS :Lumturoj
|
STR_OBJECT_CLASS_LTHS :Lumturoj
|
||||||
STR_OBJECT_CLASS_TRNS :Transigantoj
|
STR_OBJECT_CLASS_TRNS :Transigantoj
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Arboj
|
STR_PLANT_TREE_CAPTION :{WHITE}Arboj
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Elektu arbo-tipon por planti. Kiam la regiono jam havas arbojn, aliaj arb-tipoj plantiĝos
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Elektu arbo-tipon por planti. Kiam la regiono jam havas arbojn, aliaj arb-tipoj plantiĝos
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Arboj de hazardaj tipoj
|
STR_TREES_RANDOM_TYPE :{BLACK}Arboj de hazardaj tipoj
|
||||||
|
@@ -2523,7 +2523,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Suurus:
|
|||||||
STR_OBJECT_CLASS_LTHS :Majakad
|
STR_OBJECT_CLASS_LTHS :Majakad
|
||||||
STR_OBJECT_CLASS_TRNS :Saatejaamad
|
STR_OBJECT_CLASS_TRNS :Saatejaamad
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Puud
|
STR_PLANT_TREE_CAPTION :{WHITE}Puud
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Vali istutatava puu liik. Kui ruudus juba on puu, siis lisatakse rohkem eri liikide puid, olenemata valikust
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Vali istutatava puu liik. Kui ruudus juba on puu, siis lisatakse rohkem eri liikide puid, olenemata valikust
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Suvalised puutüübid
|
STR_TREES_RANDOM_TYPE :{BLACK}Suvalised puutüübid
|
||||||
|
@@ -2205,7 +2205,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Stødd:
|
|||||||
STR_OBJECT_CLASS_LTHS :Vitar
|
STR_OBJECT_CLASS_LTHS :Vitar
|
||||||
STR_OBJECT_CLASS_TRNS :Sendarir
|
STR_OBJECT_CLASS_TRNS :Sendarir
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Trø
|
STR_PLANT_TREE_CAPTION :{WHITE}Trø
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Tilvildarlig træ sløg
|
STR_TREES_RANDOM_TYPE :{BLACK}Tilvildarlig træ sløg
|
||||||
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Tilvildarlig trø
|
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Tilvildarlig trø
|
||||||
|
@@ -59,37 +59,37 @@ STR_CARGO_PLURAL_FIZZY_DRINKS :Sihijuomaa
|
|||||||
|
|
||||||
# Singular cargo name
|
# Singular cargo name
|
||||||
STR_CARGO_SINGULAR_NOTHING :
|
STR_CARGO_SINGULAR_NOTHING :
|
||||||
STR_CARGO_SINGULAR_PASSENGER :Matkustaja
|
STR_CARGO_SINGULAR_PASSENGER :matkustaja
|
||||||
STR_CARGO_SINGULAR_COAL :Kivihiili
|
STR_CARGO_SINGULAR_COAL :kivihiili
|
||||||
STR_CARGO_SINGULAR_MAIL :Posti
|
STR_CARGO_SINGULAR_MAIL :posti
|
||||||
STR_CARGO_SINGULAR_OIL :Öljy
|
STR_CARGO_SINGULAR_OIL :öljy
|
||||||
STR_CARGO_SINGULAR_LIVESTOCK :Karja
|
STR_CARGO_SINGULAR_LIVESTOCK :karja
|
||||||
STR_CARGO_SINGULAR_GOODS :Tavara
|
STR_CARGO_SINGULAR_GOODS :tavara
|
||||||
STR_CARGO_SINGULAR_GRAIN :Vilja
|
STR_CARGO_SINGULAR_GRAIN :vilja
|
||||||
STR_CARGO_SINGULAR_WOOD :Raakapuu
|
STR_CARGO_SINGULAR_WOOD :raakapuu
|
||||||
STR_CARGO_SINGULAR_IRON_ORE :Rautamalmi
|
STR_CARGO_SINGULAR_IRON_ORE :rautamalmi
|
||||||
STR_CARGO_SINGULAR_STEEL :Teräs
|
STR_CARGO_SINGULAR_STEEL :teräs
|
||||||
STR_CARGO_SINGULAR_VALUABLES :Arvotavara
|
STR_CARGO_SINGULAR_VALUABLES :arvotavara
|
||||||
STR_CARGO_SINGULAR_COPPER_ORE :Kuparimalmi
|
STR_CARGO_SINGULAR_COPPER_ORE :kuparimalmi
|
||||||
STR_CARGO_SINGULAR_MAIZE :Maissi
|
STR_CARGO_SINGULAR_MAIZE :maissi
|
||||||
STR_CARGO_SINGULAR_FRUIT :Hedelmä
|
STR_CARGO_SINGULAR_FRUIT :hedelmä
|
||||||
STR_CARGO_SINGULAR_DIAMOND :Jalokivi
|
STR_CARGO_SINGULAR_DIAMOND :timantti
|
||||||
STR_CARGO_SINGULAR_FOOD :Ruoka
|
STR_CARGO_SINGULAR_FOOD :ruoka
|
||||||
STR_CARGO_SINGULAR_PAPER :Paperi
|
STR_CARGO_SINGULAR_PAPER :paperi
|
||||||
STR_CARGO_SINGULAR_GOLD :Kulta
|
STR_CARGO_SINGULAR_GOLD :kulta
|
||||||
STR_CARGO_SINGULAR_WATER :Vesi
|
STR_CARGO_SINGULAR_WATER :vesi
|
||||||
STR_CARGO_SINGULAR_WHEAT :Vehnä
|
STR_CARGO_SINGULAR_WHEAT :vehnä
|
||||||
STR_CARGO_SINGULAR_RUBBER :Kumi
|
STR_CARGO_SINGULAR_RUBBER :kumi
|
||||||
STR_CARGO_SINGULAR_SUGAR :Sokeri
|
STR_CARGO_SINGULAR_SUGAR :sokeri
|
||||||
STR_CARGO_SINGULAR_TOY :Lelu
|
STR_CARGO_SINGULAR_TOY :lelu
|
||||||
STR_CARGO_SINGULAR_SWEETS :Karkki
|
STR_CARGO_SINGULAR_SWEETS :karkki
|
||||||
STR_CARGO_SINGULAR_COLA :Limsa
|
STR_CARGO_SINGULAR_COLA :limsa
|
||||||
STR_CARGO_SINGULAR_CANDYFLOSS :Hattara
|
STR_CARGO_SINGULAR_CANDYFLOSS :hattara
|
||||||
STR_CARGO_SINGULAR_BUBBLE :Kupla
|
STR_CARGO_SINGULAR_BUBBLE :kupla
|
||||||
STR_CARGO_SINGULAR_TOFFEE :Toffee
|
STR_CARGO_SINGULAR_TOFFEE :toffee
|
||||||
STR_CARGO_SINGULAR_BATTERY :Paristo
|
STR_CARGO_SINGULAR_BATTERY :paristo
|
||||||
STR_CARGO_SINGULAR_PLASTIC :Muovi
|
STR_CARGO_SINGULAR_PLASTIC :muovi
|
||||||
STR_CARGO_SINGULAR_FIZZY_DRINK :Sihijuoma
|
STR_CARGO_SINGULAR_FIZZY_DRINK :sihijuoma
|
||||||
|
|
||||||
# Quantity of cargo
|
# Quantity of cargo
|
||||||
STR_QUANTITY_NOTHING :
|
STR_QUANTITY_NOTHING :
|
||||||
@@ -688,10 +688,10 @@ STR_PLAYLIST_TRACK_INDEX :{TINY_FONT}{BLA
|
|||||||
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Soittolista – ”{STRING}”
|
STR_PLAYLIST_PROGRAM :{TINY_FONT}{BLACK}Soittolista – ”{STRING}”
|
||||||
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Tyhjennä
|
STR_PLAYLIST_CLEAR :{TINY_FONT}{BLACK}Tyhjennä
|
||||||
STR_PLAYLIST_CHANGE_SET :{BLACK}Vaihda kokoelma
|
STR_PLAYLIST_CHANGE_SET :{BLACK}Vaihda kokoelma
|
||||||
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Tyhjennä nykyinen soittolista (vain Oma1 tai Oma2)
|
STR_PLAYLIST_TOOLTIP_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Tyhjennä nykyinen soittolista (vain oma{NBSP}1 tai oma{NBSP}2)
|
||||||
STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Valitse toinen asennettu kokoelma musiikkivalikoimaksesi
|
STR_PLAYLIST_TOOLTIP_CHANGE_SET :{BLACK}Valitse toinen asennettu kokoelma musiikkivalikoimaksesi
|
||||||
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Valitse musiikkiraita lisätäksesi sen nykyiseen soittolistaan (vain Oma1 tai Oma2).
|
STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Valitse musiikkiraita lisätäksesi sen nykyiseen soittolistaan (vain oma{NBSP}1 tai oma{NBSP}2).
|
||||||
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Poista musiikkiraita nykyseiltä soittolistalta napsauttamalla (ainoastaan Custom1 tai Custom2)
|
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Poista musiikkiraita nykyiseltä soittolistalta napsauttamalla (vain oma{NBSP}1 tai oma{NBSP}2)
|
||||||
|
|
||||||
# Highscore window
|
# Highscore window
|
||||||
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Parhaat yhtiöt, jotka saavuttivat vuoden {NUM}
|
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Parhaat yhtiöt, jotka saavuttivat vuoden {NUM}
|
||||||
@@ -2539,13 +2539,19 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Koko: {G
|
|||||||
STR_OBJECT_CLASS_LTHS :Majakat
|
STR_OBJECT_CLASS_LTHS :Majakat
|
||||||
STR_OBJECT_CLASS_TRNS :Lähettimet
|
STR_OBJECT_CLASS_TRNS :Lähettimet
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Puita
|
STR_PLANT_TREE_CAPTION :{WHITE}Puita
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Valitse istutettava puutyyppi. Jos ruudussa on jo puu, tämä lisää uusia puita riippumatta valitun puun tyypistä
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Valitse istutettava puutyyppi. Jos ruudussa on jo puu, tämä lisää uusia puita riippumatta valitun puun tyypistä
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Sattumanvaraisia puita
|
STR_TREES_RANDOM_TYPE :{BLACK}Sattumanvaraisia puita
|
||||||
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Aseta sattumanvaraisia puita. Shift vaihtaa istutustilan ja kustannusarvion välillä
|
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Aseta sattumanvaraisia puita. Shift vaihtaa istutustilan ja kustannusarvion välillä
|
||||||
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Satunnaisia puita.
|
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Satunnaisia puita.
|
||||||
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Istuta puita satunnaisesti maastoon
|
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Istuta puita satunnaisesti maastoon
|
||||||
|
STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Tavallinen
|
||||||
|
STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Istuta yksittäisiä puita vetämällä.
|
||||||
|
STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Metsikkö
|
||||||
|
STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Istuta pieniä metsiä vetämällä.
|
||||||
|
STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Metsä
|
||||||
|
STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Istuta isoja metsiä vetämällä.
|
||||||
|
|
||||||
# Land generation window (SE)
|
# Land generation window (SE)
|
||||||
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Maanrakennus
|
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Maanrakennus
|
||||||
@@ -3175,10 +3181,10 @@ STR_GOALS_COMPANY_TITLE :{BLACK}Yhtiön
|
|||||||
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Keskitä päänäkymä laitokseen/kuntaan/ruutuun napsauttamalla tavoitetta. Ctrl+Klik avaa uuden näkymän laitoksen/kunnan/ruudun sijaintiin
|
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Keskitä päänäkymä laitokseen/kuntaan/ruutuun napsauttamalla tavoitetta. Ctrl+Klik avaa uuden näkymän laitoksen/kunnan/ruudun sijaintiin
|
||||||
|
|
||||||
# Goal question window
|
# Goal question window
|
||||||
STR_GOAL_QUESTION_CAPTION_QUESTION :Kysymys
|
STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Kysymys
|
||||||
STR_GOAL_QUESTION_CAPTION_INFORMATION :Tietoa
|
STR_GOAL_QUESTION_CAPTION_INFORMATION :{BLACK}Tietoa
|
||||||
STR_GOAL_QUESTION_CAPTION_WARNING :Varoitus
|
STR_GOAL_QUESTION_CAPTION_WARNING :{BLACK}Varoitus
|
||||||
STR_GOAL_QUESTION_CAPTION_ERROR :Virhe
|
STR_GOAL_QUESTION_CAPTION_ERROR :{YELLOW}Virhe
|
||||||
|
|
||||||
############ Start of Goal Question button list
|
############ Start of Goal Question button list
|
||||||
STR_GOAL_QUESTION_BUTTON_CANCEL :Peruuta
|
STR_GOAL_QUESTION_BUTTON_CANCEL :Peruuta
|
||||||
@@ -3252,7 +3258,7 @@ STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}Näytä
|
|||||||
STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Kuukausittainen tarjonta ja paikallinen arvio:
|
STR_STATION_VIEW_SUPPLY_RATINGS_TITLE :{BLACK}Kuukausittainen tarjonta ja paikallinen arvio:
|
||||||
STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}{NBSP}%)
|
STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}: {YELLOW}{COMMA} / {STRING} ({COMMA}{NBSP}%)
|
||||||
|
|
||||||
STR_STATION_VIEW_GROUP :{BLACK}Järjestä
|
STR_STATION_VIEW_GROUP :{BLACK}Ryhmittele
|
||||||
STR_STATION_VIEW_WAITING_STATION :Asema: Odottaa
|
STR_STATION_VIEW_WAITING_STATION :Asema: Odottaa
|
||||||
STR_STATION_VIEW_WAITING_AMOUNT :Määrä: Odottaa
|
STR_STATION_VIEW_WAITING_AMOUNT :Määrä: Odottaa
|
||||||
STR_STATION_VIEW_PLANNED_STATION :Asema: Suunniteltu
|
STR_STATION_VIEW_PLANNED_STATION :Asema: Suunniteltu
|
||||||
@@ -3685,11 +3691,11 @@ STR_ENGINE_PREVIEW_ELRAIL_LOCOMOTIVE :sähköradan ve
|
|||||||
STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :yksiraiteisen veturi
|
STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :yksiraiteisen veturi
|
||||||
STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :Maglev-veturi
|
STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :Maglev-veturi
|
||||||
|
|
||||||
STR_ENGINE_PREVIEW_ROAD_VEHICLE :ajoneuvon
|
STR_ENGINE_PREVIEW_ROAD_VEHICLE :ajoneuvo
|
||||||
STR_ENGINE_PREVIEW_TRAM_VEHICLE :raitiovaunun
|
STR_ENGINE_PREVIEW_TRAM_VEHICLE :raitiovaunu
|
||||||
|
|
||||||
STR_ENGINE_PREVIEW_AIRCRAFT :ilma-aluksen
|
STR_ENGINE_PREVIEW_AIRCRAFT :ilma-alus
|
||||||
STR_ENGINE_PREVIEW_SHIP :laivan
|
STR_ENGINE_PREVIEW_SHIP :laiva
|
||||||
|
|
||||||
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Hinta: {CURRENCY_LONG} Paino: {WEIGHT_SHORT}{}Nopeus: {VELOCITY} Teho: {POWER}{}Käyttökustannukset: {CURRENCY_LONG}/vuosi{}Kapasiteetti: {CARGO_LONG}
|
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER :{BLACK}Hinta: {CURRENCY_LONG} Paino: {WEIGHT_SHORT}{}Nopeus: {VELOCITY} Teho: {POWER}{}Käyttökustannukset: {CURRENCY_LONG}/vuosi{}Kapasiteetti: {CARGO_LONG}
|
||||||
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Hinta: {CURRENCY_LONG} Paino: {WEIGHT_SHORT}{}Nopeus: {VELOCITY} Teho: {POWER} Maks. vetovoima: {6:FORCE}{}Käyttökustannukset: {4:CURRENCY_LONG}/v{}Kapasiteetti: {5:CARGO_LONG}
|
STR_ENGINE_PREVIEW_COST_WEIGHT_SPEED_POWER_MAX_TE :{BLACK}Hinta: {CURRENCY_LONG} Paino: {WEIGHT_SHORT}{}Nopeus: {VELOCITY} Teho: {POWER} Maks. vetovoima: {6:FORCE}{}Käyttökustannukset: {4:CURRENCY_LONG}/v{}Kapasiteetti: {5:CARGO_LONG}
|
||||||
@@ -3894,7 +3900,7 @@ STR_REFIT_SHIP_LIST_TOOLTIP :{BLACK}Valitse
|
|||||||
STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Valitse kuljetettavan rahdin tyyppi
|
STR_REFIT_AIRCRAFT_LIST_TOOLTIP :{BLACK}Valitse kuljetettavan rahdin tyyppi
|
||||||
|
|
||||||
STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Sovita juna
|
STR_REFIT_TRAIN_REFIT_BUTTON :{BLACK}Sovita juna
|
||||||
STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Korjaa ajoneuvo.
|
STR_REFIT_ROAD_VEHICLE_REFIT_BUTTON :{BLACK}Sovita ajoneuvo
|
||||||
STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Sovita laiva
|
STR_REFIT_SHIP_REFIT_BUTTON :{BLACK}Sovita laiva
|
||||||
STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Sovita ilma-alus
|
STR_REFIT_AIRCRAFT_REFIT_BUTTON :{BLACK}Sovita ilma-alus
|
||||||
|
|
||||||
@@ -4561,7 +4567,7 @@ STR_ERROR_SHIP_IN_THE_WAY :{WHITE}Laiva on
|
|||||||
STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Ilma-alus on tiellä
|
STR_ERROR_AIRCRAFT_IN_THE_WAY :{WHITE}Ilma-alus on tiellä
|
||||||
|
|
||||||
STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Junaa ei voi sovittaa...
|
STR_ERROR_CAN_T_REFIT_TRAIN :{WHITE}Junaa ei voi sovittaa...
|
||||||
STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Ajoneuvoa ei voida korjata.
|
STR_ERROR_CAN_T_REFIT_ROAD_VEHICLE :{WHITE}Ajoneuvoa ei voi sovittaa…
|
||||||
STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Laivaa ei voi sovittaa...
|
STR_ERROR_CAN_T_REFIT_SHIP :{WHITE}Laivaa ei voi sovittaa...
|
||||||
STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Ilma-alusta ei voi sovittaa...
|
STR_ERROR_CAN_T_REFIT_AIRCRAFT :{WHITE}Ilma-alusta ei voi sovittaa...
|
||||||
|
|
||||||
@@ -4724,7 +4730,7 @@ STR_INDUSTRY_NAME_FOOD_PROCESSING_PLANT :Ruoanjalostamo
|
|||||||
STR_INDUSTRY_NAME_PAPER_MILL :Paperitehdas
|
STR_INDUSTRY_NAME_PAPER_MILL :Paperitehdas
|
||||||
STR_INDUSTRY_NAME_GOLD_MINE :Kultakaivos
|
STR_INDUSTRY_NAME_GOLD_MINE :Kultakaivos
|
||||||
STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :Pankki
|
STR_INDUSTRY_NAME_BANK_TROPIC_ARCTIC :Pankki
|
||||||
STR_INDUSTRY_NAME_DIAMOND_MINE :Jalokivikaivos
|
STR_INDUSTRY_NAME_DIAMOND_MINE :Timanttikaivos
|
||||||
STR_INDUSTRY_NAME_IRON_ORE_MINE :Rautakaivos
|
STR_INDUSTRY_NAME_IRON_ORE_MINE :Rautakaivos
|
||||||
STR_INDUSTRY_NAME_FRUIT_PLANTATION :Hedelmäviljelmä
|
STR_INDUSTRY_NAME_FRUIT_PLANTATION :Hedelmäviljelmä
|
||||||
STR_INDUSTRY_NAME_RUBBER_PLANTATION :Kumiviljelmä
|
STR_INDUSTRY_NAME_RUBBER_PLANTATION :Kumiviljelmä
|
||||||
|
@@ -316,8 +316,15 @@ STR_SORT_BY_CARGO_CAPACITY :Capacité
|
|||||||
STR_SORT_BY_RANGE :Rayon d'action
|
STR_SORT_BY_RANGE :Rayon d'action
|
||||||
STR_SORT_BY_POPULATION :Population
|
STR_SORT_BY_POPULATION :Population
|
||||||
STR_SORT_BY_RATING :Qualité de service
|
STR_SORT_BY_RATING :Qualité de service
|
||||||
|
STR_SORT_BY_NUM_VEHICLES :Nombre de véhicules
|
||||||
|
STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Profit total l'année précédente
|
||||||
|
STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Profit total cette année
|
||||||
|
STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Profit moyen l'année précédente
|
||||||
|
STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Profit moyen cette année
|
||||||
|
|
||||||
# Group by options for vehicle list
|
# Group by options for vehicle list
|
||||||
|
STR_GROUP_BY_NONE :Aucun
|
||||||
|
STR_GROUP_BY_SHARED_ORDERS :Ordres partagés
|
||||||
|
|
||||||
# Tooltips for the main toolbar
|
# Tooltips for the main toolbar
|
||||||
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Mettre le jeu en pause
|
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Mettre le jeu en pause
|
||||||
@@ -774,6 +781,7 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Afficher
|
|||||||
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Afficher le dernier message ou bulletin
|
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Afficher le dernier message ou bulletin
|
||||||
STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - -
|
STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - -
|
||||||
STR_STATUSBAR_PAUSED :{YELLOW}* * SUSPENDU * *
|
STR_STATUSBAR_PAUSED :{YELLOW}* * SUSPENDU * *
|
||||||
|
STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * SUSPENDU (en attente du recalcul des liens du graphique) * *
|
||||||
STR_STATUSBAR_AUTOSAVE :{RED}ENREGISTREMENT AUTOMATIQUE
|
STR_STATUSBAR_AUTOSAVE :{RED}ENREGISTREMENT AUTOMATIQUE
|
||||||
STR_STATUSBAR_SAVING_GAME :{RED}* * SAUVEGARDE EN COURS * *
|
STR_STATUSBAR_SAVING_GAME :{RED}* * SAUVEGARDE EN COURS * *
|
||||||
|
|
||||||
@@ -1613,6 +1621,10 @@ STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Linéaire
|
|||||||
|
|
||||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Plantation d'arbres durant la partie{NBSP}: {STRING}
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Plantation d'arbres durant la partie{NBSP}: {STRING}
|
||||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Contrôle l'apparition aléatoire des arbres durant la partie. Cela peut affecter les industries qui dépendent de la croissance des arbres, par exemple les scieries
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Contrôle l'apparition aléatoire des arbres durant la partie. Cela peut affecter les industries qui dépendent de la croissance des arbres, par exemple les scieries
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD :Croissance sans propagation {RED}(casse les scieries)
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_RAINFOREST :Croissance mais propagation uniquement dans les régions tropicales
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_ALL :Croissance et propagation partout
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_GROWTH_NO_SPREAD :Pas de croissance, pas de propagation {RED}(casse les scieries)
|
||||||
|
|
||||||
STR_CONFIG_SETTING_TOOLBAR_POS :Position de la barre d'outils principale{NBSP}: {STRING}
|
STR_CONFIG_SETTING_TOOLBAR_POS :Position de la barre d'outils principale{NBSP}: {STRING}
|
||||||
STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Position horizontale de la barre d'outils principale en haut de l'écran
|
STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Position horizontale de la barre d'outils principale en haut de l'écran
|
||||||
@@ -1650,10 +1662,10 @@ STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Aucune
|
|||||||
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicateur initial pour la taille des métropoles{NBSP}: {STRING}
|
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Multiplicateur initial pour la taille des métropoles{NBSP}: {STRING}
|
||||||
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Taille moyenne des métropoles par rapport aux villes normales au début de la partie
|
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Taille moyenne des métropoles par rapport aux villes normales au début de la partie
|
||||||
|
|
||||||
STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Réactualiser le graphique de la distribution tous les {STRING}{NBSP}jour{P 0:2 "" s}
|
STR_CONFIG_SETTING_LINKGRAPH_INTERVAL :Recalculer le graphe de distribution tous les {STRING}{NBSP}jour{P 0:2 "" s}
|
||||||
STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Intervalle entre la recalculation des liens du graphique. À chaque itération, une seule composante du graphique est recalculée. Donc, une valeur X pour ce réglage ne signifie pas que le graphique est réactualisé entièrement tous les X jours. Plus l'intervalle est court, plus de temps CPU est nécessaire pour la recalculation. Plus il est long, et plus de temps sera nécessaire pour que la distribution s'effectue sur de nouvelles routes.
|
STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :Intervalle entre le recalcul du graphe de distribution. À chaque itération, une seule composante du graphe est recalculée. Donc, une valeur X pour ce réglage ne signifie pas que le graphe est réactualisé entièrement tous les X jours. Plus l'intervalle est court, plus de temps CPU est nécessaire pour la recalcul. Plus il est long, et plus de temps sera nécessaire pour que la distribution s'effectue sur de nouvelles routes.
|
||||||
STR_CONFIG_SETTING_LINKGRAPH_TIME :Prendre {STRING}{NBSP}jour{P 0:2 "" s} pour recalculer le graphe de distribution
|
STR_CONFIG_SETTING_LINKGRAPH_TIME :Prendre {STRING}{NBSP}jour{P 0:2 "" s} pour recalculer le graphe de distribution
|
||||||
STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Durée maximale (en jours) de la réactualisation d'une composante du graphique. À chaque itération, un thread est initié, qui a une durée maximale définie par ce réglage. Plus celui-ci est court, plus la probabilité que le thread ne termine pas sa tâche à temps est élevée. Le jeu s'interrompt alors jusqu'à la fin de la recalculation ("lag"). Plus le réglage est long, et moins rapidement la distribution sera réactualisée en cas de changement de routes.
|
STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Durée maximale (en jours) du recalcul d'une composante du graphe. À chaque itération, un thread est initié, qui a une durée maximale définie par ce réglage. Plus celui-ci est court, plus la probabilité que le thread ne termine pas sa tâche à temps est élevée. Le jeu s'interrompt alors jusqu'à la fin du recalcul ("lag"). Plus le réglage est long, et moins rapidement la distribution sera réactualisée en cas de changement de routes.
|
||||||
STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuel
|
STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuel
|
||||||
STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymétrique
|
STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymétrique
|
||||||
STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symétrique
|
STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :symétrique
|
||||||
@@ -1666,7 +1678,7 @@ STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :La classe de ca
|
|||||||
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Type de distribution pour les autres classes de cargaison{NBSP}: {STRING}
|
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Type de distribution pour les autres classes de cargaison{NBSP}: {STRING}
|
||||||
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymétrique" signifie qu'une quantité arbitraire de cargaison peut être envoyée dans les deux directions. "manuel" signifie qu'aucune distribution n'est mise en place pour la cargaison.
|
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymétrique" signifie qu'une quantité arbitraire de cargaison peut être envoyée dans les deux directions. "manuel" signifie qu'aucune distribution n'est mise en place pour la cargaison.
|
||||||
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Précision de la distribution{NBSP}: {STRING}
|
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY :Précision de la distribution{NBSP}: {STRING}
|
||||||
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Plus ce réglage est élevé, plus la réactualisation du graphique de distribution occupe de temps CPU. S'il est trop élevé, cela peut produire de la latence ("lag"). Au contraire, plus la valeur est basse, plus la distribution sera imprécise et l'on risque de voir des cargaisons ne pas aller vers la destination attendue.
|
STR_CONFIG_SETTING_LINKGRAPH_ACCURACY_HELPTEXT :Plus ce réglage est élevé, plus le recalcul du graphe de distribution occupe de temps CPU. S'il est trop élevé, cela peut produire de la latence ("lag"). Au contraire, plus la valeur est basse, plus la distribution sera imprécise et l'on risque de voir des cargaisons ne pas aller vers la destination attendue.
|
||||||
STR_CONFIG_SETTING_DEMAND_DISTANCE :Effet de la distance sur la demande{NBSP}: {STRING}
|
STR_CONFIG_SETTING_DEMAND_DISTANCE :Effet de la distance sur la demande{NBSP}: {STRING}
|
||||||
STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Si cette valeur est supérieure à 0, la distance entre la station d'origine A d'une cargaison et une possible destination B a un impact sur la quantité de cargaison envoyée de A vers B. Plus la distance est grande entre les deux, moins de cargaison sera envoyée. Plus cette valeur est élevée, moins de cargaison sera envoyée vers des stations lointaines, et plus vers les stations plus proches.
|
STR_CONFIG_SETTING_DEMAND_DISTANCE_HELPTEXT :Si cette valeur est supérieure à 0, la distance entre la station d'origine A d'une cargaison et une possible destination B a un impact sur la quantité de cargaison envoyée de A vers B. Plus la distance est grande entre les deux, moins de cargaison sera envoyée. Plus cette valeur est élevée, moins de cargaison sera envoyée vers des stations lointaines, et plus vers les stations plus proches.
|
||||||
STR_CONFIG_SETTING_DEMAND_SIZE :Quantité de cargaison renvoyée en mode symétrique{NBSP}: {STRING}
|
STR_CONFIG_SETTING_DEMAND_SIZE :Quantité de cargaison renvoyée en mode symétrique{NBSP}: {STRING}
|
||||||
@@ -1976,6 +1988,10 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Rejoindr
|
|||||||
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Actualiser
|
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Actualiser
|
||||||
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Actualiser les informations sur le serveur
|
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Actualiser les informations sur le serveur
|
||||||
|
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :{BLACK}Recherche internet
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Rechercher des serveurs publiés sur internet
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :{BLACK}Recherche LAN
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :{BLACK}Rechercher des serveurs sur le réseau local
|
||||||
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Ajouter un serveur
|
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Ajouter un serveur
|
||||||
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Ajouter un serveur à la liste de ceux parmi lesquels des parties en cours seront toujours cherchées
|
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Ajouter un serveur à la liste de ceux parmi lesquels des parties en cours seront toujours cherchées
|
||||||
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Démarrer le serveur
|
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Démarrer le serveur
|
||||||
@@ -2201,11 +2217,13 @@ STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Partie toujours
|
|||||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Partie toujours suspendue ({STRING}, {STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Partie toujours suspendue ({STRING}, {STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Partie toujours suspendue ({STRING}, {STRING}, {STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Partie toujours suspendue ({STRING}, {STRING}, {STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Partie toujours suspendue ({STRING}, {STRING}, {STRING}, {STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Partie toujours suspendue ({STRING}, {STRING}, {STRING}, {STRING})
|
||||||
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_5 :Partie toujours suspendue ({STRING}, {STRING}, {STRING}, {STRING}, {STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Reprise de la partie ({STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Reprise de la partie ({STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :nombre de joueurs
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :nombre de joueurs
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :connexion de clients
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :connexion de clients
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuel
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuel
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :script de jeu
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :script de jeu
|
||||||
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :en attente du recalcul du graphe de liens
|
||||||
############ End of leave-in-this-order
|
############ End of leave-in-this-order
|
||||||
STR_NETWORK_MESSAGE_CLIENT_LEAVING :départ
|
STR_NETWORK_MESSAGE_CLIENT_LEAVING :départ
|
||||||
STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} a rejoint la partie
|
STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} a rejoint la partie
|
||||||
@@ -2522,13 +2540,19 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Taille{N
|
|||||||
STR_OBJECT_CLASS_LTHS :Phares
|
STR_OBJECT_CLASS_LTHS :Phares
|
||||||
STR_OBJECT_CLASS_TRNS :Transmetteurs
|
STR_OBJECT_CLASS_TRNS :Transmetteurs
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Arbres
|
STR_PLANT_TREE_CAPTION :{WHITE}Arbres
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Choix du type d'arbre. S'il y a déjà un arbre dans la case, plusieurs arbres de types différents y seront ajoutés, indépendamment du type sélectionné.
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Choix du type d'arbre. S'il y a déjà un arbre dans la case, plusieurs arbres de types différents y seront ajoutés, indépendamment du type sélectionné.
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Au hasard
|
STR_TREES_RANDOM_TYPE :{BLACK}Au hasard
|
||||||
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Planter des arbres provenant d'espèces choisies au hasard.{}Shift pour afficher seulement le coût estimé.
|
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Planter des arbres provenant d'espèces choisies au hasard.{}Shift pour afficher seulement le coût estimé.
|
||||||
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Ajouter des arbres au hasard
|
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Ajouter des arbres au hasard
|
||||||
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Semer des arbres au hasard sur l'ensemble du terrain
|
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Semer des arbres au hasard sur l'ensemble du terrain
|
||||||
|
STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal
|
||||||
|
STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Planter de simples arbres en glissant sur le terrain
|
||||||
|
STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Bosquet
|
||||||
|
STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Planter de petites forêts en glissant sur le terrain
|
||||||
|
STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Forêt
|
||||||
|
STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Planter de larges forêts en glissant sur le terrain
|
||||||
|
|
||||||
# Land generation window (SE)
|
# Land generation window (SE)
|
||||||
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Création du terrain
|
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Création du terrain
|
||||||
@@ -2761,7 +2785,7 @@ STR_FRAMERATE_GL_ROADVEHS :{WHITE} Ticks
|
|||||||
STR_FRAMERATE_GL_SHIPS :{BLACK} Ticks des navires{NBSP}:
|
STR_FRAMERATE_GL_SHIPS :{BLACK} Ticks des navires{NBSP}:
|
||||||
STR_FRAMERATE_GL_AIRCRAFT :{BLACK} Ticks des aéroplanes{NBSP}:
|
STR_FRAMERATE_GL_AIRCRAFT :{BLACK} Ticks des aéroplanes{NBSP}:
|
||||||
STR_FRAMERATE_GL_LANDSCAPE :{BLACK} Ticks du monde{NBSP}:
|
STR_FRAMERATE_GL_LANDSCAPE :{BLACK} Ticks du monde{NBSP}:
|
||||||
STR_FRAMERATE_GL_LINKGRAPH :{BLACK} Délai du flux des marchandises{NBSP}:
|
STR_FRAMERATE_GL_LINKGRAPH :{BLACK} Délai du graphe de distribution{NBSP}:
|
||||||
STR_FRAMERATE_DRAWING :{BLACK}Rendu des graphismes{NBSP}:
|
STR_FRAMERATE_DRAWING :{BLACK}Rendu des graphismes{NBSP}:
|
||||||
STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Vues{NBSP}:
|
STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK} Vues{NBSP}:
|
||||||
STR_FRAMERATE_VIDEO :{BLACK}Sortie vidéo{NBSP}:
|
STR_FRAMERATE_VIDEO :{BLACK}Sortie vidéo{NBSP}:
|
||||||
@@ -2778,7 +2802,7 @@ STR_FRAMETIME_CAPTION_GL_ROADVEHS :Ticks des véhi
|
|||||||
STR_FRAMETIME_CAPTION_GL_SHIPS :Ticks des navires
|
STR_FRAMETIME_CAPTION_GL_SHIPS :Ticks des navires
|
||||||
STR_FRAMETIME_CAPTION_GL_AIRCRAFT :Ticks des aéroplanes
|
STR_FRAMETIME_CAPTION_GL_AIRCRAFT :Ticks des aéroplanes
|
||||||
STR_FRAMETIME_CAPTION_GL_LANDSCAPE :Ticks du monde
|
STR_FRAMETIME_CAPTION_GL_LANDSCAPE :Ticks du monde
|
||||||
STR_FRAMETIME_CAPTION_GL_LINKGRAPH :Délai du flux des marchandises
|
STR_FRAMETIME_CAPTION_GL_LINKGRAPH :Délai du graphe de distribution
|
||||||
STR_FRAMETIME_CAPTION_DRAWING :Rendu des graphismes
|
STR_FRAMETIME_CAPTION_DRAWING :Rendu des graphismes
|
||||||
STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Rendu des vues
|
STR_FRAMETIME_CAPTION_DRAWING_VIEWPORTS :Rendu des vues
|
||||||
STR_FRAMETIME_CAPTION_VIDEO :Sortie vidéo
|
STR_FRAMETIME_CAPTION_VIDEO :Sortie vidéo
|
||||||
@@ -3158,10 +3182,10 @@ STR_GOALS_COMPANY_TITLE :{BLACK}Objectif
|
|||||||
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Cliquer sur l'objectif pour centrer la vue principale sur l'industrie, la ville ou la case. Ctrl-clic pour ouvrir une nouvelle vue sur l'industrie, la ville ou la case.
|
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Cliquer sur l'objectif pour centrer la vue principale sur l'industrie, la ville ou la case. Ctrl-clic pour ouvrir une nouvelle vue sur l'industrie, la ville ou la case.
|
||||||
|
|
||||||
# Goal question window
|
# Goal question window
|
||||||
STR_GOAL_QUESTION_CAPTION_QUESTION :Question
|
STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Question
|
||||||
STR_GOAL_QUESTION_CAPTION_INFORMATION :Informations
|
STR_GOAL_QUESTION_CAPTION_INFORMATION :{BLACK}Informations
|
||||||
STR_GOAL_QUESTION_CAPTION_WARNING :Attention
|
STR_GOAL_QUESTION_CAPTION_WARNING :{BLACK}Attention
|
||||||
STR_GOAL_QUESTION_CAPTION_ERROR :Erreur
|
STR_GOAL_QUESTION_CAPTION_ERROR :{YELLOW}Erreur
|
||||||
|
|
||||||
############ Start of Goal Question button list
|
############ Start of Goal Question button list
|
||||||
STR_GOAL_QUESTION_BUTTON_CANCEL :Annuler
|
STR_GOAL_QUESTION_BUTTON_CANCEL :Annuler
|
||||||
@@ -4240,6 +4264,7 @@ STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Sauvegarde modi
|
|||||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Fichier illisible
|
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Fichier illisible
|
||||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Fichier protégé en écriture
|
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Fichier protégé en écriture
|
||||||
STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Échec du contrôle d'intégrité des données
|
STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Échec du contrôle d'intégrité des données
|
||||||
|
STR_GAME_SAVELOAD_ERROR_PATCHPACK :Sauvegarde créée avec une version modifiée
|
||||||
STR_GAME_SAVELOAD_NOT_AVAILABLE :<non disponible>
|
STR_GAME_SAVELOAD_NOT_AVAILABLE :<non disponible>
|
||||||
STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Partie sauvegardée avec une version sans support des tramways. Tous les tramways ont été supprimés.
|
STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Partie sauvegardée avec une version sans support des tramways. Tous les tramways ont été supprimés.
|
||||||
|
|
||||||
|
@@ -2683,7 +2683,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Meud: {G
|
|||||||
STR_OBJECT_CLASS_LTHS :Taighean-solais
|
STR_OBJECT_CLASS_LTHS :Taighean-solais
|
||||||
STR_OBJECT_CLASS_TRNS :Tùir chraobh-sgaoilidh
|
STR_OBJECT_CLASS_TRNS :Tùir chraobh-sgaoilidh
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Craobhan
|
STR_PLANT_TREE_CAPTION :{WHITE}Craobhan
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Tagh seòrsa na craoibhe airson cur. Ma tha craobh air an leac mu thràth, cuiridh seo barrachd chraobhan aig a bheil caochladh dhe sheòrsachan a tha neo-eisimeileach on t-seòrsa a thagh thu
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Tagh seòrsa na craoibhe airson cur. Ma tha craobh air an leac mu thràth, cuiridh seo barrachd chraobhan aig a bheil caochladh dhe sheòrsachan a tha neo-eisimeileach on t-seòrsa a thagh thu
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Craobhan dhe sheòrsa air thuaiream
|
STR_TREES_RANDOM_TYPE :{BLACK}Craobhan dhe sheòrsa air thuaiream
|
||||||
|
@@ -2504,7 +2504,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Tamaño:
|
|||||||
STR_OBJECT_CLASS_LTHS :Faros
|
STR_OBJECT_CLASS_LTHS :Faros
|
||||||
STR_OBJECT_CLASS_TRNS :Transmisores
|
STR_OBJECT_CLASS_TRNS :Transmisores
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Árbores
|
STR_PLANT_TREE_CAPTION :{WHITE}Árbores
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Selecciona-lo tipo de árbore a plantar. Se xa hai unha árbore no cadro, isto engadirá máis árbores de varios tipos independentemente do tipo seleccionado
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Selecciona-lo tipo de árbore a plantar. Se xa hai unha árbore no cadro, isto engadirá máis árbores de varios tipos independentemente do tipo seleccionado
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Árbores de tipo aleatorio
|
STR_TREES_RANDOM_TYPE :{BLACK}Árbores de tipo aleatorio
|
||||||
|
@@ -267,7 +267,7 @@ STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}Zeigt au
|
|||||||
STR_BUTTON_DEFAULT :{BLACK}Standard
|
STR_BUTTON_DEFAULT :{BLACK}Standard
|
||||||
STR_BUTTON_CANCEL :{BLACK}Abbrechen
|
STR_BUTTON_CANCEL :{BLACK}Abbrechen
|
||||||
STR_BUTTON_OK :{BLACK}OK
|
STR_BUTTON_OK :{BLACK}OK
|
||||||
STR_WARNING_PASSWORD_SECURITY :{YELLOW}Achtung: Server-Administratoren könnten in der Lage sein den eingegebenen Text zu lesen.
|
STR_WARNING_PASSWORD_SECURITY :{YELLOW}Warnung: Serveradministratoren können diesen Text einsehen.
|
||||||
|
|
||||||
# On screen keyboard window
|
# On screen keyboard window
|
||||||
STR_OSK_KEYBOARD_LAYOUT :^1234567890ß'€qwertzuiopü+asdfghjklöä#<yxcvbnm,.- .
|
STR_OSK_KEYBOARD_LAYOUT :^1234567890ß'€qwertzuiopü+asdfghjklöä#<yxcvbnm,.- .
|
||||||
@@ -320,8 +320,14 @@ STR_SORT_BY_VEHICLE_COUNT :Fahrzeuganzahl
|
|||||||
STR_SORT_BY_RANGE :Reichweite
|
STR_SORT_BY_RANGE :Reichweite
|
||||||
STR_SORT_BY_POPULATION :Bevölkerung
|
STR_SORT_BY_POPULATION :Bevölkerung
|
||||||
STR_SORT_BY_RATING :Bewertung
|
STR_SORT_BY_RATING :Bewertung
|
||||||
|
STR_SORT_BY_NUM_VEHICLES :Anzahl der Fahrzeuge
|
||||||
|
STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Gewinn im letzten Jahr
|
||||||
|
STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Gewinn in diesem Jahr
|
||||||
|
STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Durchschnittlicher Gewinn im letzten Jahr
|
||||||
|
STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Durchschnittlicher Gewinn in diesem Jahr
|
||||||
|
|
||||||
# Group by options for vehicle list
|
# Group by options for vehicle list
|
||||||
|
STR_GROUP_BY_NONE :Keine
|
||||||
|
|
||||||
# Tooltips for the main toolbar
|
# Tooltips for the main toolbar
|
||||||
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Spiel anhalten
|
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Spiel anhalten
|
||||||
@@ -347,7 +353,7 @@ STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}Ansicht
|
|||||||
STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Ansicht verkleinern (herauszoomen)
|
STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}Ansicht verkleinern (herauszoomen)
|
||||||
STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Gleise legen
|
STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}Gleise legen
|
||||||
STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Straßen bauen
|
STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}Straßen bauen
|
||||||
STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Straßenbahngleise legen
|
STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}Straßenbahngleise bauen
|
||||||
STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Häfen und Wasserstraßen bauen
|
STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}Häfen und Wasserstraßen bauen
|
||||||
STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Flughäfen bauen
|
STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}Flughäfen bauen
|
||||||
STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Landschaftsbau: Land heben/senken, Bäume pflanzen etc.
|
STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}Landschaftsbau: Land heben/senken, Bäume pflanzen etc.
|
||||||
@@ -368,7 +374,7 @@ STR_SCENEDIT_TOOLBAR_LANDSCAPE_GENERATION :{BLACK}Landflä
|
|||||||
STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Städte gründen
|
STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Städte gründen
|
||||||
STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Industrie errichten
|
STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Industrie errichten
|
||||||
STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Straße bauen
|
STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Straße bauen
|
||||||
STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Straßenbahngleise legen
|
STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Straßenbahngleise bauen
|
||||||
STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Bäume pflanzen. Shift schaltet zwischen Bauen und Kostenvoranschlag um
|
STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Bäume pflanzen. Shift schaltet zwischen Bauen und Kostenvoranschlag um
|
||||||
STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Schild aufstellen
|
STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Schild aufstellen
|
||||||
STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Objekt platzieren. Shift schaltet zwischen Bauen und Kostenvoranschlag um
|
STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Objekt platzieren. Shift schaltet zwischen Bauen und Kostenvoranschlag um
|
||||||
@@ -457,7 +463,7 @@ STR_RAIL_MENU_MAGLEV_CONSTRUCTION :Magnetschwebeba
|
|||||||
|
|
||||||
############ range for road construction menu starts
|
############ range for road construction menu starts
|
||||||
STR_ROAD_MENU_ROAD_CONSTRUCTION :Straßenbau
|
STR_ROAD_MENU_ROAD_CONSTRUCTION :Straßenbau
|
||||||
STR_ROAD_MENU_TRAM_CONSTRUCTION :Straßenbahnbau
|
STR_ROAD_MENU_TRAM_CONSTRUCTION :Straßenbahn bauen
|
||||||
############ range ends here
|
############ range ends here
|
||||||
|
|
||||||
############ range for waterways construction menu starts
|
############ range for waterways construction menu starts
|
||||||
@@ -880,7 +886,7 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLAC
|
|||||||
STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE}
|
STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE}
|
||||||
STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Neue{G r "" s ""} {STRING} jetzt erhältlich! - {ENGINE}
|
STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Neue{G r "" s ""} {STRING} jetzt erhältlich! - {ENGINE}
|
||||||
|
|
||||||
STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Öffne das Gruppenfenster mit ausgewählter Fahrzeuggruppe
|
STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Das Gruppenfenster mit der bereits ausgewählten Fahrzeuggruppe öffnen
|
||||||
|
|
||||||
STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} nimmt kein{G "en" "e" "" "e"} {STRING} mehr an
|
STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} nimmt kein{G "en" "e" "" "e"} {STRING} mehr an
|
||||||
STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} nimmt kein{G "en" "e" "" "e"} {STRING} und kein{G "en" "e" "" "e"} {STRING} mehr an
|
STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} nimmt kein{G "en" "e" "" "e"} {STRING} und kein{G "en" "e" "" "e"} {STRING} mehr an
|
||||||
@@ -1015,10 +1021,10 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :Doppelt
|
|||||||
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Vierfach
|
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :Vierfach
|
||||||
|
|
||||||
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Schriftgröße
|
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}Schriftgröße
|
||||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Wähle die Schriftgröße der Bedienelemente
|
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Die Schriftgröße der Spieloberfläche auswählen
|
||||||
|
|
||||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
|
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
|
||||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Doppelt
|
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Zweifach
|
||||||
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Vierfach
|
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Vierfach
|
||||||
|
|
||||||
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basisgrafiken
|
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Basisgrafiken
|
||||||
@@ -1205,8 +1211,8 @@ STR_CONFIG_SETTING_AUTOSLOPE :Landschaftsbau
|
|||||||
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Erlaube Erdbauarbeiten unter Gebäuden oder Infrastruktur ohne sie zu entfernen
|
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Erlaube Erdbauarbeiten unter Gebäuden oder Infrastruktur ohne sie zu entfernen
|
||||||
STR_CONFIG_SETTING_CATCHMENT :Verschiedene Stationstypen haben unterschiedlich große Einzugsgebiete: {STRING}
|
STR_CONFIG_SETTING_CATCHMENT :Verschiedene Stationstypen haben unterschiedlich große Einzugsgebiete: {STRING}
|
||||||
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Wird diese Option eingeschaltet, besitzen unterschiedliche Stationsarten bzw. Flughäfen unterschiedlich große Einzugsgebiete
|
STR_CONFIG_SETTING_CATCHMENT_HELPTEXT :Wird diese Option eingeschaltet, besitzen unterschiedliche Stationsarten bzw. Flughäfen unterschiedlich große Einzugsgebiete
|
||||||
STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES :Eigene Stationen können Industrien mit intergrierter Haltestelle bedienen: {STRING}
|
STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES :Firmenstationen können Industrien mit integrierter Haltestelle bedienen: {STRING}
|
||||||
STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :Falls aktiv, können Industrien mit integrierter Haltestelle (wie Ölbohrtürme) auch von nahegelegenen Stationen der Spieler bedient werden. Falls inaktive, können diese Industrien ausschließlich mittels ihrer eigenen Stationen bedient werden. Die integrierten Stationen bedienen dabei keine anderen Industrien in der Nähe
|
STR_CONFIG_SETTING_SERVE_NEUTRAL_INDUSTRIES_HELPTEXT :Falls aktiv, können Industrien mit integrierter Haltestelle (wie Ölbohrtürme) auch von nahegelegenen Stationen der Spieler bedient werden. Falls inaktiv, können diese Industrien ausschließlich mittels ihrer eigenen Stationen bedient werden. Die integrierten Stationen bedienen dabei keine anderen Industrien in der Nähe
|
||||||
STR_CONFIG_SETTING_CATCHMENT_INCREASE :Vergrößere das Stationseinzugsgebiet: {STRING}
|
STR_CONFIG_SETTING_CATCHMENT_INCREASE :Vergrößere das Stationseinzugsgebiet: {STRING}
|
||||||
STR_CONFIG_SETTING_CATCHMENT_INCREASE_HELPTEXT :Vergrößere das Stationseinzugsgebiet um die angegebene Anzahl an Kacheln
|
STR_CONFIG_SETTING_CATCHMENT_INCREASE_HELPTEXT :Vergrößere das Stationseinzugsgebiet um die angegebene Anzahl an Kacheln
|
||||||
STR_CONFIG_SETTING_STATION_RATING_CARGO_CLASS_WAIT_TIME :Toleranz der Wartezeit für die Stationsbewertung hängt von der Fachtart ab: {STRING}
|
STR_CONFIG_SETTING_STATION_RATING_CARGO_CLASS_WAIT_TIME :Toleranz der Wartezeit für die Stationsbewertung hängt von der Fachtart ab: {STRING}
|
||||||
@@ -1360,8 +1366,8 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL :Zeige die Einwo
|
|||||||
STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Zeige die Einwohneranzahl neben den Städtenamen auf der Karte an
|
STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Zeige die Einwohneranzahl neben den Städtenamen auf der Karte an
|
||||||
STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Linienstärke in Diagrammen: {STRING}
|
STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Linienstärke in Diagrammen: {STRING}
|
||||||
STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Strichdicke der Linien in Diagrammen. Dünnere Linien sind genauer ablesbar, dickere Linien sind besser sichtbar und erlauben es, Farben leichter zu unterscheiden
|
STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Strichdicke der Linien in Diagrammen. Dünnere Linien sind genauer ablesbar, dickere Linien sind besser sichtbar und erlauben es, Farben leichter zu unterscheiden
|
||||||
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Zeige Name des NewGRFS im Neue-Fahrzeuge-Fenster: {STRING}
|
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :NewGRF-Namen im Fahrzeugbaumenü zeigen: {STRING}
|
||||||
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Fügt eine Zeile zur Fahrzeugbeschreibung im Neue-Fahrzeuge-Fenster hinzu, in der anzeigt wird, aus welchem NewGRF das ausgewählte Fahrzeug stammt
|
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Eine Textzeile mit dem Namen des NewGRF, von dem ein Fahrzeug stammt, hinzufügen.
|
||||||
STR_CONFIG_SETTING_SHOW_TRAIN_LENGTH_IN_DETAILS :Zuglänge in den Fahrzeugdetails anzeigen: {STRING}
|
STR_CONFIG_SETTING_SHOW_TRAIN_LENGTH_IN_DETAILS :Zuglänge in den Fahrzeugdetails anzeigen: {STRING}
|
||||||
STR_CONFIG_SETTING_SHOW_TRAIN_LENGTH_IN_DETAILS_HELPTEXT :Zeige die Zuglänge im Fenster für die Fahrzeugdetails an
|
STR_CONFIG_SETTING_SHOW_TRAIN_LENGTH_IN_DETAILS_HELPTEXT :Zeige die Zuglänge im Fenster für die Fahrzeugdetails an
|
||||||
STR_CONFIG_SETTING_SHOW_VEHICLE_GROUP_IN_DETAILS :Gruppe in den Fahrzeugdetails anzeigen: {STRING}
|
STR_CONFIG_SETTING_SHOW_VEHICLE_GROUP_IN_DETAILS :Gruppe in den Fahrzeugdetails anzeigen: {STRING}
|
||||||
@@ -1399,7 +1405,7 @@ STR_CONFIG_SETTING_ADV_SIG_BRIDGE_TUN_MODES :Aktiviere erwei
|
|||||||
STR_CONFIG_SETTING_ADV_SIG_BRIDGE_TUN_MODES_HELPTEXT :Aktiviert die Benutzung des erweiterten Modus zur Emulation von Signalen auf Brücken und in Tunneln. Falls deaktiviert, können Brücken/Tunnel, die sich nicht bereits im erweiterten Modus befinden, nicht in den erweiterten Modus versetzt werden. Andere Spieler können dennoch diese Option setzen und den erweiterten Modus verwenden.
|
STR_CONFIG_SETTING_ADV_SIG_BRIDGE_TUN_MODES_HELPTEXT :Aktiviert die Benutzung des erweiterten Modus zur Emulation von Signalen auf Brücken und in Tunneln. Falls deaktiviert, können Brücken/Tunnel, die sich nicht bereits im erweiterten Modus befinden, nicht in den erweiterten Modus versetzt werden. Andere Spieler können dennoch diese Option setzen und den erweiterten Modus verwenden.
|
||||||
|
|
||||||
STR_CONFIG_SETTING_LANDSCAPE :Landschaftstyp: {STRING}
|
STR_CONFIG_SETTING_LANDSCAPE :Landschaftstyp: {STRING}
|
||||||
STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Der Landschaftstyp definiert grundlegende Spielszenarien in Bezug auf verfügbare Fracht und Wachstumsvoraussetzungen für Städte. NewGRFs und Spielskripte erlauben weitgehendere Kontrolle dieser Parameter
|
STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Landschaftstypen definieren grundlegende Spielszenarien mit verschiedenen Frachtarten und Bedingungen für das Wachstum von Städten. Mit NewGRFs und Spielskripten können diese allerdings genauer angepasst werden
|
||||||
STR_CONFIG_SETTING_LAND_GENERATOR :Algorithmus zur Landschaftserzeugung: {STRING}
|
STR_CONFIG_SETTING_LAND_GENERATOR :Algorithmus zur Landschaftserzeugung: {STRING}
|
||||||
STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Der orginale Generator hängt von den verwendeten Basisgrafiken ab und setzt vorgefertigte Landschaftsformen zusammen. terraGenesis ist ein auf Perlinrauschen basierter Generator mit erweiterten Einstellmöglichkeiten
|
STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :Der orginale Generator hängt von den verwendeten Basisgrafiken ab und setzt vorgefertigte Landschaftsformen zusammen. terraGenesis ist ein auf Perlinrauschen basierter Generator mit erweiterten Einstellmöglichkeiten
|
||||||
STR_CONFIG_SETTING_MAX_SIGNAL_EVALUATIONS :Maximal erlaubte Anzahl von gleichzeitigen Veränderungen an Programmierbaren Signalen: {STRING}
|
STR_CONFIG_SETTING_MAX_SIGNAL_EVALUATIONS :Maximal erlaubte Anzahl von gleichzeitigen Veränderungen an Programmierbaren Signalen: {STRING}
|
||||||
@@ -1731,15 +1737,15 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Zeitung
|
|||||||
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Farbige Nachrichten erscheinen ab: {STRING}
|
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_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_STARTING_YEAR :Startdatum: {STRING}
|
||||||
STR_CONFIG_SETTING_ENDING_YEAR :Datum für Leistungsbewertung: {STRING}
|
STR_CONFIG_SETTING_ENDING_YEAR :Beurteilungsjahr der Firma: {STRING}
|
||||||
STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Jahr, in dem das Spiel zum Zweck der Leistungsbewertung endet. Am Ende dieses Jahres wird der Punktestand der Firmen berechnet und die Bestenliste angezeigt, aber das Spiel kann danach fortgesetzt werden.{}Wenn das Jahr vor dem Startdatum liegt, wird die Bestenliste nie angezeigt.
|
STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Jahr in dem das Spiel zwecks Beurteilung endet. Am Ende diesen Jahres wird die Punktezahl der Firma ermittelt und die Bestenliste wird angezeigt, es kann danach aber noch weitergespielt werden.{}Wenn dieser Wert kleiner als das Anfangsjahr ist, wird die Bestenliste nie angezeigt.
|
||||||
STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM}
|
STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM}
|
||||||
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Nie
|
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Nie
|
||||||
STR_CONFIG_SETTING_ECONOMY_TYPE :Wirtschaftstyp: {STRING}
|
STR_CONFIG_SETTING_ECONOMY_TYPE :Wirtschaftstyp: {STRING}
|
||||||
STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :Kleinteilige Wirtschaft macht häufigere Produktionsänderungen in kleineren Schritten. Eingefrorene Wirtschaft stoppt Änderungen der Produktion sowie Industrieschließungen. Diese Einstellung hat möglicherweise keinen Effekt, wenn Industrietypen durch ein NewGRF bereitgestellt werden.
|
STR_CONFIG_SETTING_ECONOMY_TYPE_HELPTEXT :"Geglättet" sorgt für öftere, kleinere Produktionsänderungen. "Statisch" stoppt Produktionsänderungen und Industrieschließungen. Diese Einstellung hat womöglich keinen Effekt, wenn durch NewGRFs eigene Industrietypen bereitgestellt werden.
|
||||||
STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Original
|
STR_CONFIG_SETTING_ECONOMY_TYPE_ORIGINAL :Original
|
||||||
STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Kleinteilig
|
STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Geglättet
|
||||||
STR_CONFIG_SETTING_ECONOMY_TYPE_FROZEN :Eingefroren
|
STR_CONFIG_SETTING_ECONOMY_TYPE_FROZEN :Statisch
|
||||||
STR_CONFIG_SETTING_ALLOW_SHARES :Handel mit Firmenanteilen erlauben: {STRING}
|
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_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 :Minimales Alter einer Firma, um an der Börse gehandelt zu werden: {STRING}
|
||||||
@@ -1788,8 +1794,8 @@ STR_CONFIG_SETTING_TOWN_FOUNDING_HELPTEXT :Erlaube Spieler
|
|||||||
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Verboten
|
STR_CONFIG_SETTING_TOWN_FOUNDING_FORBIDDEN :Verboten
|
||||||
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Erlaubt
|
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED :Erlaubt
|
||||||
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Erlaubt, mit wählbarem Straßenbauplan
|
STR_CONFIG_SETTING_TOWN_FOUNDING_ALLOWED_CUSTOM_LAYOUT :Erlaubt, mit wählbarem Straßenbauplan
|
||||||
STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Erzeugung von städtischer Fracht: {STRING}
|
STR_CONFIG_SETTING_TOWN_CARGOGENMODE :Güterproduktion in Städten: {STRING}
|
||||||
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Beeinflusst wie viel Passagiere, Post und andere städtische Fracht von Häusern relativ zur Einwohnerzahl einer Stadt produziert wird.{}Quadratisches Wachstum: Eine doppelt so große Stadt produziert vier mal so viel Fracht.{}Lineares Wachstum: Eine doppelt so große Stadt produziert die doppelte Menge an Fracht.
|
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_HELPTEXT :Die Gütermenge, die von Häusern einer Stadt relativ zur Gesamtbevölkerung der Stadt produziert wird.{}Quadratisch: eine doppelt so große Stadt generiert viermal so viele Passagiere.{}Linear: eine doppelt so große Stadt generiert doppelt so viele Passagiere.
|
||||||
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Quadratisch (orginal)
|
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_ORIGINAL :Quadratisch (orginal)
|
||||||
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Linear
|
STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Linear
|
||||||
STR_CONFIG_SETTING_TOWN_CARGO_FACTOR :Faktor für die Erzeugung von städtischer Fracht (weniger < 0 < mehr): {STRING}
|
STR_CONFIG_SETTING_TOWN_CARGO_FACTOR :Faktor für die Erzeugung von städtischer Fracht (weniger < 0 < mehr): {STRING}
|
||||||
@@ -1799,6 +1805,10 @@ STR_CONFIG_SETTING_INDUSTRY_CARGO_FACTOR_HELPTEXT :Die Frachterzeu
|
|||||||
|
|
||||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Platzierung von Bäumen während des Spiels: {STRING}
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Platzierung von Bäumen während des Spiels: {STRING}
|
||||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Lege das Ausmaß des zufälligen Baumwachstums während des Spiels fest. Dies kann Industrien wie die Sägemühle beeinflussen, welche auf nachwachsende Bäume angewiesen sind
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Lege das Ausmaß des zufälligen Baumwachstums während des Spiels fest. Dies kann Industrien wie die Sägemühle beeinflussen, welche auf nachwachsende Bäume angewiesen sind
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD :Wachsen und nicht ausbreiten {RED}(Macht Sägemühlen unhaltbar)
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_RAINFOREST :Wachsen und nur in Regenwäldern ausbreiten
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_ALL :Wachsen und überall ausbreiten
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_GROWTH_NO_SPREAD :Nicht wachsen und nicht ausbreiten {RED}(Macht Sägemühlen unhaltbar)
|
||||||
|
|
||||||
STR_CONFIG_SETTING_TREES_AROUND_SNOWLINE :Angepasste Platzierung von subarktischen Bäumen: {STRING}
|
STR_CONFIG_SETTING_TREES_AROUND_SNOWLINE :Angepasste Platzierung von subarktischen Bäumen: {STRING}
|
||||||
STR_CONFIG_SETTING_TREES_AROUND_SNOWLINE_HELPTEXT :Passt die Platzierung von Bäumen um die Schneegrenze im arktischen Klima an. Bäume dünnen oberhalb der Schneegrenze aus. Bäume direkt unterhalb der Schneegrenze sind eine Mischung aus subarktischen und gemäßigten Bäumen. Darunter werden gemäßigte Bäume platziert.
|
STR_CONFIG_SETTING_TREES_AROUND_SNOWLINE_HELPTEXT :Passt die Platzierung von Bäumen um die Schneegrenze im arktischen Klima an. Bäume dünnen oberhalb der Schneegrenze aus. Bäume direkt unterhalb der Schneegrenze sind eine Mischung aus subarktischen und gemäßigten Bäumen. Darunter werden gemäßigte Bäume platziert.
|
||||||
@@ -1853,7 +1863,7 @@ STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :Sehr schnell
|
|||||||
STR_CONFIG_SETTING_LARGER_TOWNS :Anteil der Städte, die Großstädte werden: {STRING}
|
STR_CONFIG_SETTING_LARGER_TOWNS :Anteil der Städte, die Großstädte werden: {STRING}
|
||||||
STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Anzahl Städte, die eine Großstadt werden, d.h. derjenigen Städte, die schon zu Beginn des Spiels größer sind und auch schneller wachsen werden
|
STR_CONFIG_SETTING_LARGER_TOWNS_HELPTEXT :Anzahl Städte, die eine Großstadt werden, d.h. derjenigen Städte, die schon zu Beginn des Spiels größer sind und auch schneller wachsen werden
|
||||||
STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 von {COMMA}
|
STR_CONFIG_SETTING_LARGER_TOWNS_VALUE :1 von {COMMA}
|
||||||
STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :keine
|
STR_CONFIG_SETTING_LARGER_TOWNS_DISABLED :Keine
|
||||||
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Größe von Großstädten bei Spielbeginn: {STRING}x
|
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :Größe von Großstädten bei Spielbeginn: {STRING}x
|
||||||
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Durchschnittliche Größe von Großstädten relativ zu normalen Städten bei Spielbeginn
|
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER_HELPTEXT :Durchschnittliche Größe von Großstädten relativ zu normalen Städten bei Spielbeginn
|
||||||
STR_CONFIG_SETTING_RANDOM_ROAD_RECONSTRUCTION :Wahrscheinlichkeit zufälliger Straßenreparaturen: {STRING}
|
STR_CONFIG_SETTING_RANDOM_ROAD_RECONSTRUCTION :Wahrscheinlichkeit zufälliger Straßenreparaturen: {STRING}
|
||||||
@@ -1898,7 +1908,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :Immer wenn die
|
|||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperial (mph)
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :Imperial (mph)
|
||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrisch (km/h)
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :Metrisch (km/h)
|
||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s)
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :SI (m/s)
|
||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS :Spieleinheit (Kacheln/Tag)
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS :Spieleinheiten (Spielfeldkacheln/Tag)
|
||||||
|
|
||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Leistungseinheit von Fahrzeugen: {STRING}
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Leistungseinheit von Fahrzeugen: {STRING}
|
||||||
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Immer wenn die Leistung eins Fahrzeugs angezeigt wird, zeige es in den gewählten Einheiten
|
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Immer wenn die Leistung eins Fahrzeugs angezeigt wird, zeige es in den gewählten Einheiten
|
||||||
@@ -2280,6 +2290,10 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Spiel be
|
|||||||
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Aktualisieren
|
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Aktualisieren
|
||||||
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Aktualisiert die Serverinformationen
|
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Aktualisiert die Serverinformationen
|
||||||
|
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :{BLACK}Internet durchsuchen
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Internet nach öffentlichen Spielservern durchsuchen
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :{BLACK}LAN durchsuchen
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :{BLACK}Lokales Netzwerk nach Spielservern durchsuchen
|
||||||
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Server hinzufügen
|
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Server hinzufügen
|
||||||
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Fügt einen Server zu der Liste von Servern hinzu, die immer nach laufenden Spielen kontrolliert werden
|
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Fügt einen Server zu der Liste von Servern hinzu, die immer nach laufenden Spielen kontrolliert werden
|
||||||
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Server starten
|
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Server starten
|
||||||
@@ -2504,8 +2518,8 @@ STR_NETWORK_SERVER_MESSAGE_GAME_PAUSED :Spiel angehalte
|
|||||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Spiel weiterhin angehalten ({STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Spiel weiterhin angehalten ({STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Spiel weiterhin angehalten ({STRING}, {STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Spiel weiterhin angehalten ({STRING}, {STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spiel weiterhin angehalten ({STRING}, {STRING}, {STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spiel weiterhin angehalten ({STRING}, {STRING}, {STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Spiel immer noch angehalten ({STRING}, {STRING}, {STRING}, {STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Spiel weiterhin angehalten ({STRING}, {STRING}, {STRING}, {STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_5 :Spiel immer noch angehalten ({STRING}, {STRING}, {STRING}, {STRING}, {STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_5 :Spiel weiterhin angehalten ({STRING}, {STRING}, {STRING}, {STRING}, {STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spiel fortgesetzt ({STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spiel fortgesetzt ({STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :Spieleranzahl
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :Spieleranzahl
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :Teilnehmer meldet sich an
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :Teilnehmer meldet sich an
|
||||||
@@ -2527,7 +2541,7 @@ STR_NETWORK_MESSAGE_MONEY_GIVEN :*** {STRING} ga
|
|||||||
STR_NETWORK_MESSAGE_MONEY_GIVE_SRC_DESCRIPTION :{STRING} ({COMPANY})
|
STR_NETWORK_MESSAGE_MONEY_GIVE_SRC_DESCRIPTION :{STRING} ({COMPANY})
|
||||||
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Der Server hat das Spiel beendet
|
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Der Server hat das Spiel beendet
|
||||||
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Der Server startet neu...{}Bitte warten...
|
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Der Server startet neu...{}Bitte warten...
|
||||||
STR_NETWORK_MESSAGE_KICKED :*** {STRING} wurde hinausgeworfen. Grund: ({STRING})
|
STR_NETWORK_MESSAGE_KICKED :*** {STRING} wurde vom Server hinausgeworfen. Grund: ({STRING})
|
||||||
|
|
||||||
# Content downloading window
|
# Content downloading window
|
||||||
STR_CONTENT_TITLE :{WHITE}Herunterladen von Erweiterungen
|
STR_CONTENT_TITLE :{WHITE}Herunterladen von Erweiterungen
|
||||||
@@ -3053,7 +3067,7 @@ STR_BRIDGE_TUBULAR_SILICON :Siliziumrundbr
|
|||||||
|
|
||||||
# Road construction toolbar
|
# Road construction toolbar
|
||||||
STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Straßenbau
|
STR_ROAD_TOOLBAR_ROAD_CONSTRUCTION_CAPTION :{WHITE}Straßenbau
|
||||||
STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Straßenbahnbau
|
STR_ROAD_TOOLBAR_TRAM_CONSTRUCTION_CAPTION :{WHITE}Straßenbahn bauen
|
||||||
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Straße bauen. Strg halten, um zwischen Bauen und Entfernen umzuschalten. Shift schaltet zwischen Bauen und Kostenvoranschlag um
|
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}Straße bauen. Strg halten, um zwischen Bauen und Entfernen umzuschalten. Shift schaltet zwischen Bauen und Kostenvoranschlag um
|
||||||
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Straßenbahngleis bauen. Strg halten, um zwischen Bauen und Entfernen umzuschalten. Shift schaltet zwischen Bauen und Kostenvoranschlag um
|
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}Straßenbahngleis bauen. Strg halten, um zwischen Bauen und Entfernen umzuschalten. Shift schaltet zwischen Bauen und Kostenvoranschlag um
|
||||||
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Straße mit automatischer Wahl der Ausrichtung bauen. Strg halten, um zwischen Bauen und Entfernen umzuschalten. Shift schaltet zwischen Bauen und Kostenvoranschlag um
|
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}Straße mit automatischer Wahl der Ausrichtung bauen. Strg halten, um zwischen Bauen und Entfernen umzuschalten. Shift schaltet zwischen Bauen und Kostenvoranschlag um
|
||||||
@@ -3071,8 +3085,8 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}Straßen
|
|||||||
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Straßenbahntunnel bauen. Shift schaltet zwischen Bauen und Kostenvoranschlag um
|
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}Straßenbahntunnel bauen. Shift schaltet zwischen Bauen und Kostenvoranschlag um
|
||||||
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Zwischen Bau und Abriss der Straße umschalten
|
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}Zwischen Bau und Abriss der Straße umschalten
|
||||||
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Zwischen Bau und Abriss von Straßenbahngleisen umschalten
|
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}Zwischen Bau und Abriss von Straßenbahngleisen umschalten
|
||||||
STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Konvertiere/Upgrade den Straßentyp. Shift schaltet zwischen Bauen und Kostenvoranschlag um
|
STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}Straßentyp in den ausgewählten umwandeln. Shift schaltet zwischen Bauen und Kostenvoranschlag um
|
||||||
STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Konvertiere/Upgrade den Straßenbahntyp. Shift schaltet zwischen Bauen und Kostenvoranschlag um
|
STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}Straßenbahntyp in den ausgewählten umwandeln. Shift schaltet zwischen Bauen und Kostenvoranschlag um
|
||||||
|
|
||||||
STR_ROAD_NAME_ROAD :Straße
|
STR_ROAD_NAME_ROAD :Straße
|
||||||
STR_ROAD_NAME_TRAM :Straßenbahn
|
STR_ROAD_NAME_TRAM :Straßenbahn
|
||||||
@@ -3187,7 +3201,7 @@ STR_BASIC_HOUSE_SET_NAME :Standard-Gebäu
|
|||||||
STR_SELECT_TOWN_CAPTION :{WHITE}Wähle Stadt
|
STR_SELECT_TOWN_CAPTION :{WHITE}Wähle Stadt
|
||||||
STR_SELECT_TOWN_LIST_ITEM :{BLACK}{TOWN}
|
STR_SELECT_TOWN_LIST_ITEM :{BLACK}{TOWN}
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Bäume
|
STR_PLANT_TREE_CAPTION :{WHITE}Bäume
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Wähle die zu pflanzende Baumart. Wenn auf dem Feld schon ein Baum steht, wird eine zufällige Baumart gepflanzt
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Wähle die zu pflanzende Baumart. Wenn auf dem Feld schon ein Baum steht, wird eine zufällige Baumart gepflanzt
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Zufällige Baumart
|
STR_TREES_RANDOM_TYPE :{BLACK}Zufällige Baumart
|
||||||
@@ -3196,6 +3210,12 @@ STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Zufälli
|
|||||||
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Bäume zufällig über die Landschaft verteilen
|
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Bäume zufällig über die Landschaft verteilen
|
||||||
STR_TREES_REMOVE_TREES_BUTTON :{BLACK}Entferne alle Bäume
|
STR_TREES_REMOVE_TREES_BUTTON :{BLACK}Entferne alle Bäume
|
||||||
STR_TREES_REMOVE_TREES_TOOLTIP :{BLACK}Entferne alle Bäume in der Landschaft
|
STR_TREES_REMOVE_TREES_TOOLTIP :{BLACK}Entferne alle Bäume in der Landschaft
|
||||||
|
STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal
|
||||||
|
STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Einzelne Bäume durch Klicken und Ziehen über die Landschaft pflanzen.
|
||||||
|
STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Hain
|
||||||
|
STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Kleine Haine durch Klicken und Ziehen über die Landschaft pflanzen.
|
||||||
|
STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Wald
|
||||||
|
STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Große Wälder durch Klicken und Ziehen über die Landschaft pflanzen.
|
||||||
|
|
||||||
# Land generation window (SE)
|
# Land generation window (SE)
|
||||||
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Land erstellen
|
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Land erstellen
|
||||||
@@ -3448,7 +3468,7 @@ STR_FRAMERATE_DRAWING_VIEWPORTS :{BLACK}Kartenan
|
|||||||
STR_FRAMERATE_VIDEO :{BLACK}Videoausgabe:
|
STR_FRAMERATE_VIDEO :{BLACK}Videoausgabe:
|
||||||
STR_FRAMERATE_SOUND :{BLACK}Sound-Abmischung:
|
STR_FRAMERATE_SOUND :{BLACK}Sound-Abmischung:
|
||||||
STR_FRAMERATE_ALLSCRIPTS :{BLACK} GS/KI insgesamt:
|
STR_FRAMERATE_ALLSCRIPTS :{BLACK} GS/KI insgesamt:
|
||||||
STR_FRAMERATE_GAMESCRIPT :{BLACK} Skript:
|
STR_FRAMERATE_GAMESCRIPT :{BLACK} Script:
|
||||||
STR_FRAMERATE_AI :{BLACK} KI {NUM} {STRING}
|
STR_FRAMERATE_AI :{BLACK} KI {NUM} {STRING}
|
||||||
############ End of leave-in-this-order
|
############ End of leave-in-this-order
|
||||||
############ Leave those lines in this order!!
|
############ Leave those lines in this order!!
|
||||||
@@ -3740,8 +3760,8 @@ STR_BROKEN_VEHICLE_LENGTH :{WHITE}Zug '{VE
|
|||||||
STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' liefert falsche Informationen
|
STR_NEWGRF_BUGGY :{WHITE}NewGRF '{0:STRING}' liefert falsche Informationen
|
||||||
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Fracht / Ersetzungs - Informationen für '{1:ENGINE}' weichen von der Einkaufsliste nach dem Kauf ab. Das kann dazu führen, dass das Umrüsten beim autmatisches Ersetzen oder Erneuern nicht korrekt funktioniert
|
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Fracht / Ersetzungs - Informationen für '{1:ENGINE}' weichen von der Einkaufsliste nach dem Kauf ab. Das kann dazu führen, dass das Umrüsten beim autmatisches Ersetzen oder Erneuern nicht korrekt funktioniert
|
||||||
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' verursachte eine Endlosschleife in Produktions-Rückruffunktion
|
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' verursachte eine Endlosschleife in Produktions-Rückruffunktion
|
||||||
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Callback {1:HEX} lieferte des unbekannte und ungülte Resultat {2:HEX}
|
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Rückruffunktion {1:HEX} lieferte des unbekannte/ungülte Resultat {2:HEX}
|
||||||
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' lieferte einen ungültigen Frachttyp im Produktins-Rückruffunktion bei {2:HEX}
|
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' lieferte eine ungültige Frachtart in der Produktions-Rückruffunktion {2:HEX}
|
||||||
|
|
||||||
STR_NEWGRF_TOO_MANY_STRINGS :{WHITE}Nicht genügend String-IDs für alle NewGRFs vorhanden.
|
STR_NEWGRF_TOO_MANY_STRINGS :{WHITE}Nicht genügend String-IDs für alle NewGRFs vorhanden.
|
||||||
STR_NEWGRF_TOO_MANY_STRINGS_DETAIL :{WHITE}Einige Namen oder Textfelder können falsch dargestellt werden. Versuche weniger NewGRFs zu benutzen.
|
STR_NEWGRF_TOO_MANY_STRINGS_DETAIL :{WHITE}Einige Namen oder Textfelder können falsch dargestellt werden. Versuche weniger NewGRFs zu benutzen.
|
||||||
@@ -3852,10 +3872,10 @@ STR_GOALS_COMPANY_TITLE :{BLACK}Firmensp
|
|||||||
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klick auf Ziel zentriert Hauptansicht auf Industrie/Stadt/Feld. Strg+Klick öffnet eine darauf zentrierte Zusatzansicht
|
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Klick auf Ziel zentriert Hauptansicht auf Industrie/Stadt/Feld. Strg+Klick öffnet eine darauf zentrierte Zusatzansicht
|
||||||
|
|
||||||
# Goal question window
|
# Goal question window
|
||||||
STR_GOAL_QUESTION_CAPTION_QUESTION :Frage
|
STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}Frage
|
||||||
STR_GOAL_QUESTION_CAPTION_INFORMATION :Hinweis
|
STR_GOAL_QUESTION_CAPTION_INFORMATION :{BLACK}Hinweis
|
||||||
STR_GOAL_QUESTION_CAPTION_WARNING :Warnung
|
STR_GOAL_QUESTION_CAPTION_WARNING :{BLACK}Warnung
|
||||||
STR_GOAL_QUESTION_CAPTION_ERROR :Fehler
|
STR_GOAL_QUESTION_CAPTION_ERROR :{YELLOW}Fehler
|
||||||
|
|
||||||
############ Start of Goal Question button list
|
############ Start of Goal Question button list
|
||||||
STR_GOAL_QUESTION_BUTTON_CANCEL :Abbruch
|
STR_GOAL_QUESTION_BUTTON_CANCEL :Abbruch
|
||||||
@@ -4174,7 +4194,7 @@ STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}Infrastr
|
|||||||
STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Schienenfelder:
|
STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}Schienenfelder:
|
||||||
STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Signale
|
STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}Signale
|
||||||
STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Straßenfelder:
|
STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}Straßenfelder:
|
||||||
STR_COMPANY_INFRASTRUCTURE_VIEW_TRAM_SECT :{GOLD}Straßenbahnfelder:
|
STR_COMPANY_INFRASTRUCTURE_VIEW_TRAM_SECT :{GOLD}Straßenbahnfelder
|
||||||
STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Wasserfelder:
|
STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}Wasserfelder:
|
||||||
STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanäle
|
STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}Kanäle
|
||||||
STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stationen:
|
STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}Stationen:
|
||||||
@@ -4190,11 +4210,11 @@ STR_INDUSTRY_DIRECTORY_ITEM_NOPROD :{ORANGE}{INDUST
|
|||||||
STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUSTRY} {STRING}
|
STR_INDUSTRY_DIRECTORY_ITEM_PROD1 :{ORANGE}{INDUSTRY} {STRING}
|
||||||
STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING}
|
STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUSTRY} {STRING}, {STRING}
|
||||||
STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING}
|
STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING}
|
||||||
STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} und weitere {NUM}...
|
STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} und {NUM} weitere...
|
||||||
STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industrienamen - Klick auf den Namen zentriert Hauptansicht auf die Industrie. Strg+Klick öffnet neue Zusatzansicht zentriert auf die Industrie
|
STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Industrienamen - Klick auf den Namen zentriert Hauptansicht auf die Industrie. Strg+Klick öffnet neue Zusatzansicht zentriert auf die Industrie
|
||||||
STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Akzeptierte Fracht: {SILVER}{STRING}
|
STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Angenommene Frachtarten: {SILVER}{STRING}
|
||||||
STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Produzierte Fracht: {SILVER}{STRING}
|
STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Produzierte Güter: {SILVER}{STRING}
|
||||||
STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Alle Frachttypen
|
STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Alle Frachtarten
|
||||||
STR_INDUSTRY_DIRECTORY_FILTER_NONE :Keine
|
STR_INDUSTRY_DIRECTORY_FILTER_NONE :Keine
|
||||||
|
|
||||||
# Industry view
|
# Industry view
|
||||||
@@ -4510,7 +4530,7 @@ STR_ENGINE_PREVIEW_MONORAIL_LOCOMOTIVE :{G=w}Einschiene
|
|||||||
STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=w}Magnetschwebebahn
|
STR_ENGINE_PREVIEW_MAGLEV_LOCOMOTIVE :{G=w}Magnetschwebebahn
|
||||||
|
|
||||||
STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=n}Straßenfahrzeug
|
STR_ENGINE_PREVIEW_ROAD_VEHICLE :{G=n}Straßenfahrzeug
|
||||||
STR_ENGINE_PREVIEW_TRAM_VEHICLE :{G=w}Straßenbahn
|
STR_ENGINE_PREVIEW_TRAM_VEHICLE :Straßenbahnfahrzeug
|
||||||
|
|
||||||
STR_ENGINE_PREVIEW_AIRCRAFT :{G=n}Flugzeug
|
STR_ENGINE_PREVIEW_AIRCRAFT :{G=n}Flugzeug
|
||||||
STR_ENGINE_PREVIEW_SHIP :{G=n}Schiff
|
STR_ENGINE_PREVIEW_SHIP :{G=n}Schiff
|
||||||
@@ -5196,8 +5216,8 @@ STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Skript n
|
|||||||
|
|
||||||
STR_SCREENSHOT_CAPTION :{WHITE}Sreenshot erzeugen
|
STR_SCREENSHOT_CAPTION :{WHITE}Sreenshot erzeugen
|
||||||
STR_SCREENSHOT_SCREENSHOT :{BLACK}Normaler Screenshot
|
STR_SCREENSHOT_SCREENSHOT :{BLACK}Normaler Screenshot
|
||||||
STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}Voll hinein gezoomter Screenshot
|
STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}Screenshot auf der größten Zoomstufe
|
||||||
STR_SCREENSHOT_DEFAULTZOOM_SCREENSHOT :{BLACK}Screenshot mit Standard-Zoom
|
STR_SCREENSHOT_DEFAULTZOOM_SCREENSHOT :{BLACK}Screenshot auf der Standard-Zoomstufe
|
||||||
STR_SCREENSHOT_WORLD_SCREENSHOT :{BLACK}Screenshot des ganzen Spielfeldes
|
STR_SCREENSHOT_WORLD_SCREENSHOT :{BLACK}Screenshot des ganzen Spielfeldes
|
||||||
STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Reliefkarten-Screenshot
|
STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Reliefkarten-Screenshot
|
||||||
STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Minimap Screenshot
|
STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Minimap Screenshot
|
||||||
@@ -5279,11 +5299,11 @@ STR_ERROR_UNABLE_TO_DELETE_FILE :{WHITE}Datei ka
|
|||||||
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Laden des Spieles fehlgeschlagen{}{STRING}
|
STR_ERROR_GAME_LOAD_FAILED :{WHITE}Laden des Spieles fehlgeschlagen{}{STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interner Fehler: {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR :Interner Fehler: {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Spielstandsdatei defekt - {STRING}
|
STR_GAME_SAVELOAD_ERROR_BROKEN_SAVEGAME :Spielstandsdatei defekt - {STRING}
|
||||||
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spielstand wurde mit neuerer Version erstellt
|
STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spielstand wurde mit einer neueren Spielversion erstellt
|
||||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Datei kann nicht gelesen werden
|
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Datei kann nicht gelesen werden
|
||||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Datei kann nicht geschrieben werden
|
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Datei kann nicht geschrieben werden
|
||||||
STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Prüfung der Datenintegrität fehlgeschlagen
|
STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Prüfung der Datenintegrität fehlgeschlagen
|
||||||
STR_GAME_SAVELOAD_ERROR_PATCHPACK :Spielstand wurde mit einer modifizierten Version erstellt
|
STR_GAME_SAVELOAD_ERROR_PATCHPACK :Spielstand wurde mit einer modifizierten Spielversion erstellt
|
||||||
STR_GAME_SAVELOAD_NOT_AVAILABLE :<nicht verfügbar>
|
STR_GAME_SAVELOAD_NOT_AVAILABLE :<nicht verfügbar>
|
||||||
STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Spiel wurde in einer Version ohne Straßenbahnunterstützung gespeichert. Alle Straßenbahnen wurden entfernt
|
STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Spiel wurde in einer Version ohne Straßenbahnunterstützung gespeichert. Alle Straßenbahnen wurden entfernt
|
||||||
|
|
||||||
@@ -5606,7 +5626,7 @@ STR_ERROR_GROUP_CAN_T_CREATE :{WHITE}Gruppe k
|
|||||||
STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Gruppe kann nicht gelöscht werden...
|
STR_ERROR_GROUP_CAN_T_DELETE :{WHITE}Gruppe kann nicht gelöscht werden...
|
||||||
STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Gruppe kann nicht umbenannt werden...
|
STR_ERROR_GROUP_CAN_T_RENAME :{WHITE}Gruppe kann nicht umbenannt werden...
|
||||||
STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Übergeordnete Gruppe kann nicht gesetzt werden...
|
STR_ERROR_GROUP_CAN_T_SET_PARENT :{WHITE}Übergeordnete Gruppe kann nicht gesetzt werden...
|
||||||
STR_ERROR_GROUP_CAN_T_SET_PARENT_RECURSION :{WHITE}... Schleifen in der Gruppenhierarchy sind nicht erlaubt
|
STR_ERROR_GROUP_CAN_T_SET_PARENT_RECURSION :{WHITE}... Schleifen sind in der Gruppenhierarchie nicht erlaubt
|
||||||
STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Entfernen aller Fahrzeuge dieser Gruppe nicht möglich...
|
STR_ERROR_GROUP_CAN_T_REMOVE_ALL_VEHICLES :{WHITE}Entfernen aller Fahrzeuge dieser Gruppe nicht möglich...
|
||||||
STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Fahrzeug kann nicht zu dieser Gruppe hinzugefügt werden...
|
STR_ERROR_GROUP_CAN_T_ADD_VEHICLE :{WHITE}Fahrzeug kann nicht zu dieser Gruppe hinzugefügt werden...
|
||||||
STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Fahrzeuge mit gemeinsamen Fahrplan können nicht zur Gruppe hinzugefügt werden...
|
STR_ERROR_GROUP_CAN_T_ADD_SHARED_VEHICLE :{WHITE}Fahrzeuge mit gemeinsamen Fahrplan können nicht zur Gruppe hinzugefügt werden...
|
||||||
@@ -5816,10 +5836,10 @@ STR_INDUSTRY_NAME_SUGAR_MINE :{G=w}Zuckermine
|
|||||||
##id 0x6000
|
##id 0x6000
|
||||||
STR_SV_EMPTY :
|
STR_SV_EMPTY :
|
||||||
STR_SV_UNNAMED :Unbenannt
|
STR_SV_UNNAMED :Unbenannt
|
||||||
STR_SV_TRAIN_NAME :Zug {COMMA}
|
STR_SV_TRAIN_NAME :Zug #{COMMA}
|
||||||
STR_SV_ROAD_VEHICLE_NAME :Straßenfahrzeug {COMMA}
|
STR_SV_ROAD_VEHICLE_NAME :Straßenfahrzeug #{COMMA}
|
||||||
STR_SV_SHIP_NAME :Schiff {COMMA}
|
STR_SV_SHIP_NAME :Schiff #{COMMA}
|
||||||
STR_SV_AIRCRAFT_NAME :Flugzeug {COMMA}
|
STR_SV_AIRCRAFT_NAME :Flugzeug #{COMMA}
|
||||||
|
|
||||||
STR_SV_STNAME :{STRING}
|
STR_SV_STNAME :{STRING}
|
||||||
STR_SV_STNAME_NORTH :{STRING} Nord
|
STR_SV_STNAME_NORTH :{STRING} Nord
|
||||||
@@ -6126,6 +6146,7 @@ STR_FORMAT_BUOY_NAME :{TOWN} Boje
|
|||||||
STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Boje #{COMMA}
|
STR_FORMAT_BUOY_NAME_SERIAL :{TOWN} Boje #{COMMA}
|
||||||
STR_FORMAT_COMPANY_NUM :(Firma {COMMA})
|
STR_FORMAT_COMPANY_NUM :(Firma {COMMA})
|
||||||
STR_FORMAT_GROUP_NAME :Gruppe {COMMA}
|
STR_FORMAT_GROUP_NAME :Gruppe {COMMA}
|
||||||
|
STR_FORMAT_GROUP_VEHICLE_NAME :{GROUP} #{COMMA}
|
||||||
STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING}
|
STR_FORMAT_INDUSTRY_NAME :{TOWN} {STRING}
|
||||||
STR_FORMAT_WAYPOINT_NAME :Wegpunkt {TOWN}
|
STR_FORMAT_WAYPOINT_NAME :Wegpunkt {TOWN}
|
||||||
STR_FORMAT_WAYPOINT_NAME_SERIAL :Wegpunkt {TOWN} #{COMMA}
|
STR_FORMAT_WAYPOINT_NAME_SERIAL :Wegpunkt {TOWN} #{COMMA}
|
||||||
|
@@ -2593,7 +2593,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Μέγε
|
|||||||
STR_OBJECT_CLASS_LTHS :Φάροι
|
STR_OBJECT_CLASS_LTHS :Φάροι
|
||||||
STR_OBJECT_CLASS_TRNS :Αναμεταδότες
|
STR_OBJECT_CLASS_TRNS :Αναμεταδότες
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Δέντρα
|
STR_PLANT_TREE_CAPTION :{WHITE}Δέντρα
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Επιλέξτε τύπο δέντρου για φύτευση. Αν το τετραγωνίδιο έχει ήδη ένα δέντρο, αυτό θα προσθέσει περισσότερα δέντρα μεικτών τύπων ανεξάρτητα από τον επιλεγμένο τύπο
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Επιλέξτε τύπο δέντρου για φύτευση. Αν το τετραγωνίδιο έχει ήδη ένα δέντρο, αυτό θα προσθέσει περισσότερα δέντρα μεικτών τύπων ανεξάρτητα από τον επιλεγμένο τύπο
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Δέντρα τυχαίου τύπου
|
STR_TREES_RANDOM_TYPE :{BLACK}Δέντρα τυχαίου τύπου
|
||||||
|
@@ -2476,7 +2476,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}גודל
|
|||||||
STR_OBJECT_CLASS_LTHS :מגדלורים
|
STR_OBJECT_CLASS_LTHS :מגדלורים
|
||||||
STR_OBJECT_CLASS_TRNS :אנטנות
|
STR_OBJECT_CLASS_TRNS :אנטנות
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}עצים
|
STR_PLANT_TREE_CAPTION :{WHITE}עצים
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}בחר סוג עץ לנטיעה. במידה ויש עץ במשבצת, יתווספו עצים נוספים מסוגים שונים ללא קשר לסוג הנבחר
|
STR_PLANT_TREE_TOOLTIP :{BLACK}בחר סוג עץ לנטיעה. במידה ויש עץ במשבצת, יתווספו עצים נוספים מסוגים שונים ללא קשר לסוג הנבחר
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}עצים מסוג אקראי
|
STR_TREES_RANDOM_TYPE :{BLACK}עצים מסוג אקראי
|
||||||
|
@@ -2577,7 +2577,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Méret:
|
|||||||
STR_OBJECT_CLASS_LTHS :Világítótornyok
|
STR_OBJECT_CLASS_LTHS :Világítótornyok
|
||||||
STR_OBJECT_CLASS_TRNS :Adótornyok
|
STR_OBJECT_CLASS_TRNS :Adótornyok
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Fák
|
STR_PLANT_TREE_CAPTION :{WHITE}Fák
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Ültetendő fa kiválasztása. Ha már van fa a mezőn, akkor újabb fák ültetése a kiválasztott fatípustól függetlenül
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Ültetendő fa kiválasztása. Ha már van fa a mezőn, akkor újabb fák ültetése a kiválasztott fatípustól függetlenül
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Véletlenszerű fafélék
|
STR_TREES_RANDOM_TYPE :{BLACK}Véletlenszerű fafélék
|
||||||
|
@@ -2302,7 +2302,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Stærð:
|
|||||||
STR_OBJECT_CLASS_LTHS :Vitar
|
STR_OBJECT_CLASS_LTHS :Vitar
|
||||||
STR_OBJECT_CLASS_TRNS :Sendar
|
STR_OBJECT_CLASS_TRNS :Sendar
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Tré
|
STR_PLANT_TREE_CAPTION :{WHITE}Tré
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Veldu trjátegund sem á að gróðursetja. Ef það er fyrir tré á reitnum, verðu fleiri trjám mismunandi trjám plantað óhað hvaða tegund hefur verið valin
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Veldu trjátegund sem á að gróðursetja. Ef það er fyrir tré á reitnum, verðu fleiri trjám mismunandi trjám plantað óhað hvaða tegund hefur verið valin
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Tré af handahófskenndri gerð
|
STR_TREES_RANDOM_TYPE :{BLACK}Tré af handahófskenndri gerð
|
||||||
|
@@ -2513,7 +2513,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Ukuran:
|
|||||||
STR_OBJECT_CLASS_LTHS :Mercusuar
|
STR_OBJECT_CLASS_LTHS :Mercusuar
|
||||||
STR_OBJECT_CLASS_TRNS :Pemancar
|
STR_OBJECT_CLASS_TRNS :Pemancar
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Pepohonan
|
STR_PLANT_TREE_CAPTION :{WHITE}Pepohonan
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Pilih jenis pohon untuk ditanam. Jika pohon sudah tertanam, ini akan menambah jenis pohon secara acak dari tipe yang sama.
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Pilih jenis pohon untuk ditanam. Jika pohon sudah tertanam, ini akan menambah jenis pohon secara acak dari tipe yang sama.
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Tanam pohon secara acak
|
STR_TREES_RANDOM_TYPE :{BLACK}Tanam pohon secara acak
|
||||||
|
@@ -2450,7 +2450,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Méid: {
|
|||||||
STR_OBJECT_CLASS_LTHS :Tithe solais
|
STR_OBJECT_CLASS_LTHS :Tithe solais
|
||||||
STR_OBJECT_CLASS_TRNS :Tarchuradóirí
|
STR_OBJECT_CLASS_TRNS :Tarchuradóirí
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Crainnte
|
STR_PLANT_TREE_CAPTION :{WHITE}Crainnte
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Roghnaigh an cineál crainn le cur
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Roghnaigh an cineál crainn le cur
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Crainnte randamacha
|
STR_TREES_RANDOM_TYPE :{BLACK}Crainnte randamacha
|
||||||
|
@@ -2543,7 +2543,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Dimensio
|
|||||||
STR_OBJECT_CLASS_LTHS :Fari
|
STR_OBJECT_CLASS_LTHS :Fari
|
||||||
STR_OBJECT_CLASS_TRNS :Trasmettitori
|
STR_OBJECT_CLASS_TRNS :Trasmettitori
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Alberi
|
STR_PLANT_TREE_CAPTION :{WHITE}Alberi
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Seleziona il tipo di albero da piantare. Se nel riquadro sono già presenti alberi, ne aggiunge altri di vari tipi, indipendentemente dal tipo selezionato
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Seleziona il tipo di albero da piantare. Se nel riquadro sono già presenti alberi, ne aggiunge altri di vari tipi, indipendentemente dal tipo selezionato
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Alberi casuali
|
STR_TREES_RANDOM_TYPE :{BLACK}Alberi casuali
|
||||||
|
@@ -2458,7 +2458,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}サイ
|
|||||||
STR_OBJECT_CLASS_LTHS :灯台
|
STR_OBJECT_CLASS_LTHS :灯台
|
||||||
STR_OBJECT_CLASS_TRNS :電波塔
|
STR_OBJECT_CLASS_TRNS :電波塔
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}植林
|
STR_PLANT_TREE_CAPTION :{WHITE}植林
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}植林する樹類を選択します。既に木がある場合は追加で植林されます
|
STR_PLANT_TREE_TOOLTIP :{BLACK}植林する樹類を選択します。既に木がある場合は追加で植林されます
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}ランダムな樹類
|
STR_TREES_RANDOM_TYPE :{BLACK}ランダムな樹類
|
||||||
|
@@ -1268,7 +1268,7 @@ STR_CONFIG_SETTING_SIGNALSIDE_HELPTEXT :선로의 어
|
|||||||
STR_CONFIG_SETTING_SIGNALSIDE_LEFT :왼쪽에
|
STR_CONFIG_SETTING_SIGNALSIDE_LEFT :왼쪽에
|
||||||
STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :진행 방향에
|
STR_CONFIG_SETTING_SIGNALSIDE_DRIVING_SIDE :진행 방향에
|
||||||
STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :오른쪽에
|
STR_CONFIG_SETTING_SIGNALSIDE_RIGHT :오른쪽에
|
||||||
STR_CONFIG_SETTING_SHOWFINANCES :연말에 자동으로 재정 창을 띄움: {STRING}
|
STR_CONFIG_SETTING_SHOWFINANCES :연말에 자동으로 재정 창을 띄우기: {STRING}
|
||||||
STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :이 설정을 켜면. 회사의 재정 상태를 확인하기 쉽도록 매년 말에 재정 창이 자동으로 뜹니다.
|
STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :이 설정을 켜면. 회사의 재정 상태를 확인하기 쉽도록 매년 말에 재정 창이 자동으로 뜹니다.
|
||||||
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :새로 지정하는 경로는 기본적으로 '직행'으로 처리: {STRING}
|
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :새로 지정하는 경로는 기본적으로 '직행'으로 처리: {STRING}
|
||||||
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :일반적으로 차량은 경로 상에 있는 모든 역에 정차하게 되어있습니다. 이 설정을 켜면, 차량이 마지막 목적지까지 정차없이 모든 역을 통과할 것입니다. 이 설정은 새로 경로를 지정하는 차량에만 적용되는 점을 알아두십시오. 하지만 각 차량의 경로는 두 가지 방법 중에 원하는 대로 다시 설정할 수 있습니다.
|
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :일반적으로 차량은 경로 상에 있는 모든 역에 정차하게 되어있습니다. 이 설정을 켜면, 차량이 마지막 목적지까지 정차없이 모든 역을 통과할 것입니다. 이 설정은 새로 경로를 지정하는 차량에만 적용되는 점을 알아두십시오. 하지만 각 차량의 경로는 두 가지 방법 중에 원하는 대로 다시 설정할 수 있습니다.
|
||||||
@@ -1335,7 +1335,7 @@ STR_CONFIG_SETTING_COMPANY_STARTING_COLOUR_HELPTEXT :새 회사에
|
|||||||
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :옛날 공항을 사라지지 않고 계속 만들 수 있게 함: {STRING}
|
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS :옛날 공항을 사라지지 않고 계속 만들 수 있게 함: {STRING}
|
||||||
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :이 설정을 켜면, 소형 공항을 포함한 모든 공항 종류를 도입 이후에 계속 사용할 수 있게 됩니다.
|
STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :이 설정을 켜면, 소형 공항을 포함한 모든 공항 종류를 도입 이후에 계속 사용할 수 있게 됩니다.
|
||||||
|
|
||||||
STR_CONFIG_SETTING_WARN_LOST_VEHICLE :차량이 길을 잃으면 경고: {STRING}
|
STR_CONFIG_SETTING_WARN_LOST_VEHICLE :차량이 길을 잃으면 경고하기: {STRING}
|
||||||
STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :다음 목적지로 가기 위한 경로를 찾을 수 없는 차량이 있으면 뉴스 메시지로 알려줍니다.
|
STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :다음 목적지로 가기 위한 경로를 찾을 수 없는 차량이 있으면 뉴스 메시지로 알려줍니다.
|
||||||
STR_CONFIG_SETTING_WARN_RESTRICTION_WAIT_VEHICLE :열차가 경로 제한 때문에 멈춘 경우 경고: {STRING}
|
STR_CONFIG_SETTING_WARN_RESTRICTION_WAIT_VEHICLE :열차가 경로 제한 때문에 멈춘 경우 경고: {STRING}
|
||||||
STR_CONFIG_SETTING_WARN_RESTRICTION_WAIT_VEHICLE_HELPTEXT :경로 제한 기능때문에 열차가 경로 신호기에서 오랫동안 멈춰있는 경우 뉴스 메시지로 알려줍니다.
|
STR_CONFIG_SETTING_WARN_RESTRICTION_WAIT_VEHICLE_HELPTEXT :경로 제한 기능때문에 열차가 경로 신호기에서 오랫동안 멈춰있는 경우 뉴스 메시지로 알려줍니다.
|
||||||
@@ -1367,7 +1367,7 @@ STR_CONFIG_SETTING_ERRMSG_DURATION_HELPTEXT :오류 메시
|
|||||||
STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA}초 동안
|
STR_CONFIG_SETTING_ERRMSG_DURATION_VALUE :{COMMA}초 동안
|
||||||
STR_CONFIG_SETTING_HOVER_DELAY :도움말 보이기: {STRING}
|
STR_CONFIG_SETTING_HOVER_DELAY :도움말 보이기: {STRING}
|
||||||
STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :마우스를 올려놓았을 때 도움말이 뜨는데 걸리는 시간을 설정합니다. 마우스 오른쪽 클릭으로 바로 뜨도록 할 수도 있습니다.
|
STR_CONFIG_SETTING_HOVER_DELAY_HELPTEXT :마우스를 올려놓았을 때 도움말이 뜨는데 걸리는 시간을 설정합니다. 마우스 오른쪽 클릭으로 바로 뜨도록 할 수도 있습니다.
|
||||||
STR_CONFIG_SETTING_HOVER_DELAY_VALUE :마우스를 {COMMA}밀리초 동안 올려놓기 (1밀리초 = 1/1000초)
|
STR_CONFIG_SETTING_HOVER_DELAY_VALUE :마우스를 {COMMA}밀리초 동안 올려놓기
|
||||||
STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :마우스 오른쪽 클릭
|
STR_CONFIG_SETTING_HOVER_DELAY_DISABLED :마우스 오른쪽 클릭
|
||||||
STR_CONFIG_SETTING_POPULATION_IN_LABEL :도시 이름 옆에 도시의 인구 수를 표시함: {STRING}
|
STR_CONFIG_SETTING_POPULATION_IN_LABEL :도시 이름 옆에 도시의 인구 수를 표시함: {STRING}
|
||||||
STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :도시 이름 옆에 도시의 인구 수를 표시합니다.
|
STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :도시 이름 옆에 도시의 인구 수를 표시합니다.
|
||||||
@@ -1457,7 +1457,7 @@ STR_CONFIG_SETTING_SERVICEATHELIPAD :헬리콥터를
|
|||||||
STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :공항에 격납고가 없어도 헬리콥터가 공항에 착륙할 때마다 점검을 하도록 합니다.
|
STR_CONFIG_SETTING_SERVICEATHELIPAD_HELPTEXT :공항에 격납고가 없어도 헬리콥터가 공항에 착륙할 때마다 점검을 하도록 합니다.
|
||||||
STR_CONFIG_SETTING_NONSTOP_ORDER_ONLY :직통 경로만 허용: {STRING}
|
STR_CONFIG_SETTING_NONSTOP_ORDER_ONLY :직통 경로만 허용: {STRING}
|
||||||
STR_CONFIG_SETTING_NONSTOP_ORDER_ONLY_HELPTEXT :열차와 자동차에 직통 경로만 추가할 수 있게 합니다
|
STR_CONFIG_SETTING_NONSTOP_ORDER_ONLY_HELPTEXT :열차와 자동차에 직통 경로만 추가할 수 있게 합니다
|
||||||
STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :철도/도로/항만/공항 건설창을 띄울 때 지형 편집창도 같이 띄움: {STRING}
|
STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR :철도/도로/항만/공항 건설창을 띄울 때 지형 편집창도 같이 띄우기: {STRING}
|
||||||
STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :수송 시설과 관련된 건설 창을 열 때 지형 편집 창을 같이 엽니다.
|
STR_CONFIG_SETTING_LINK_TERRAFORM_TOOLBAR_HELPTEXT :수송 시설과 관련된 건설 창을 열 때 지형 편집 창을 같이 엽니다.
|
||||||
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :소형지도 창에 표시될 땅의 색상: {STRING}
|
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR :소형지도 창에 표시될 땅의 색상: {STRING}
|
||||||
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :소형지도 창에 사용할 지형의 색상을 선택합니다.
|
STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_HELPTEXT :소형지도 창에 사용할 지형의 색상을 선택합니다.
|
||||||
@@ -1540,7 +1540,7 @@ STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :게임을 자
|
|||||||
STR_CONFIG_SETTING_AUTOSAVE_ON_NETWORK_DISCONNECT :네트워크 연결이 끊어지면 자동 저장: {STRING}
|
STR_CONFIG_SETTING_AUTOSAVE_ON_NETWORK_DISCONNECT :네트워크 연결이 끊어지면 자동 저장: {STRING}
|
||||||
STR_CONFIG_SETTING_AUTOSAVE_ON_NETWORK_DISCONNECT_HELPTEXT :이 설정을 켜면 서버와의 연결이 끊어졌을 때 게임을 자동으로 저장합니다.
|
STR_CONFIG_SETTING_AUTOSAVE_ON_NETWORK_DISCONNECT_HELPTEXT :이 설정을 켜면 서버와의 연결이 끊어졌을 때 게임을 자동으로 저장합니다.
|
||||||
|
|
||||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :저장 파일의 이름으로 {STRING} 날짜 형식을 사용합니다.
|
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES :저장 파일 이름으로 {STRING} 날짜 형식을 사용
|
||||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :게임 저장 파일 이름에 사용할 날짜 형식을 선택합니다.
|
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_HELPTEXT :게임 저장 파일 이름에 사용할 날짜 형식을 선택합니다.
|
||||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :긴 (2012년 1월 1일)
|
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :긴 (2012년 1월 1일)
|
||||||
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :짧은 (2012.01.01)
|
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :짧은 (2012.01.01)
|
||||||
@@ -1668,7 +1668,7 @@ STR_CONFIG_SETTING_AI_IN_MULTIPLAYER_HELPTEXT :멀티 플레
|
|||||||
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :게임 스크립트가 중지되기 직전에 계산할 수 있는 최대 횟수: {STRING}
|
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES :게임 스크립트가 중지되기 직전에 계산할 수 있는 최대 횟수: {STRING}
|
||||||
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :게임 스크립트가 한 단계에서 계산할 수 있는 최대 계산 횟수를 설정합니다.
|
STR_CONFIG_SETTING_SCRIPT_MAX_OPCODES_HELPTEXT :게임 스크립트가 한 단계에서 계산할 수 있는 최대 계산 횟수를 설정합니다.
|
||||||
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :스크립트당 최대 메모리 사용량: {STRING}
|
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :스크립트당 최대 메모리 사용량: {STRING}
|
||||||
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :강제로 종료되기 전에 단일 스크립트가 사용할 수 있는 메모리의 양입니다. 크기가 큰 맵에서는 값을 크게 설정해야할 수도 있습니다.
|
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :스크립트 하나가 강제 종료되기 전까지 사용할 수 있는 메모리의 양입니다. 크기가 큰 맵에서는 값을 크게 설정해야할 수도 있습니다.
|
||||||
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB
|
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB
|
||||||
|
|
||||||
STR_CONFIG_SETTING_SHARING_RAIL :철도 공유: {STRING}
|
STR_CONFIG_SETTING_SHARING_RAIL :철도 공유: {STRING}
|
||||||
@@ -1755,7 +1755,7 @@ STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :부드러움
|
|||||||
STR_CONFIG_SETTING_ECONOMY_TYPE_FROZEN :멈춤
|
STR_CONFIG_SETTING_ECONOMY_TYPE_FROZEN :멈춤
|
||||||
STR_CONFIG_SETTING_ALLOW_SHARES :다른 회사의 지분을 사는 것을 허용: {STRING}
|
STR_CONFIG_SETTING_ALLOW_SHARES :다른 회사의 지분을 사는 것을 허용: {STRING}
|
||||||
STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :이 설정을 켜면, 회사의 지분을 거래할 수 있게 됩니다. 회사의 지분을 거래하려면 해당 회사가 어느 정도 오래되어야 합니다.
|
STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :이 설정을 켜면, 회사의 지분을 거래할 수 있게 됩니다. 회사의 지분을 거래하려면 해당 회사가 어느 정도 오래되어야 합니다.
|
||||||
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :지분 거래를 허용할 최소 회사 나이: {STRING}
|
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :지분 거래를 허용할 최소 회사 나이: {STRING}년
|
||||||
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_HELPTEXT :지분을 사고 팔기 위해 필요한 회사의 최소 나이를 설정합니다.
|
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES_HELPTEXT :지분을 사고 팔기 위해 필요한 회사의 최소 나이를 설정합니다.
|
||||||
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :환승시 벌어들이는 중간 수익의 비율: {STRING}
|
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE :환승시 벌어들이는 중간 수익의 비율: {STRING}
|
||||||
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :더 많은 수익을 내기 위해, 수송 관계상 중간 구간에게 주어진 수익의 비율을 설정합니다.
|
STR_CONFIG_SETTING_FEEDER_PAYMENT_SHARE_HELPTEXT :더 많은 수익을 내기 위해, 수송 관계상 중간 구간에게 주어진 수익의 비율을 설정합니다.
|
||||||
@@ -1770,7 +1770,7 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE :드래그할
|
|||||||
STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :신호기를 CTRL+드래그 하여 설치할 때의 행동을 선택합니다. 이 설정을 끄면, 신호기가 없는 긴 폐색을 만들지 않기 위해 터널이나 다리 주변에 먼저 신호기가 설치될 것입니다. 이 설정을 켜면, 신호기는 터널/다리와 상관없이 매 n개의 칸마다 설치될 것입니다.
|
STR_CONFIG_SETTING_DRAG_SIGNALS_FIXED_DISTANCE_HELPTEXT :신호기를 CTRL+드래그 하여 설치할 때의 행동을 선택합니다. 이 설정을 끄면, 신호기가 없는 긴 폐색을 만들지 않기 위해 터널이나 다리 주변에 먼저 신호기가 설치될 것입니다. 이 설정을 켜면, 신호기는 터널/다리와 상관없이 매 n개의 칸마다 설치될 것입니다.
|
||||||
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :전자식 신호기의 사용: {STRING}년 이후에
|
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :전자식 신호기의 사용: {STRING}년 이후에
|
||||||
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :전자식 신호기를 사용할 수 있는 연도를 설정합니다. 이 이전에는 구식 신호기만 사용 가능합니다. (두 신호기는 기능적으로는 동일하고 모습만 다릅니다.)
|
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE_HELPTEXT :전자식 신호기를 사용할 수 있는 연도를 설정합니다. 이 이전에는 구식 신호기만 사용 가능합니다. (두 신호기는 기능적으로는 동일하고 모습만 다릅니다.)
|
||||||
STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :신호기 설치시 신호기 선택 창을 띄움: {STRING}
|
STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :신호기 설치시 신호기 선택 창을 띄우기: {STRING}
|
||||||
STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :설치할 신호기 종류를 고를 수 있는 신호기 선택 창을 표시합니다. 이 설정을 끄면, 신호기 선택 창 없이 CTRL+클릭 만으로 신호기의 종류를 바꿔야 합니다.
|
STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI_HELPTEXT :설치할 신호기 종류를 고를 수 있는 신호기 선택 창을 표시합니다. 이 설정을 끄면, 신호기 선택 창 없이 CTRL+클릭 만으로 신호기의 종류를 바꿔야 합니다.
|
||||||
STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :기본적으로 만들 신호기 종류: {STRING}
|
STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :기본적으로 만들 신호기 종류: {STRING}
|
||||||
STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :기본으로 설치할 신호기의 종류를 선택합니다.
|
STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE_HELPTEXT :기본으로 설치할 신호기의 종류를 선택합니다.
|
||||||
@@ -1810,8 +1810,12 @@ STR_CONFIG_SETTING_TOWN_CARGO_FACTOR_HELPTEXT :도시가 생
|
|||||||
STR_CONFIG_SETTING_INDUSTRY_CARGO_FACTOR :산업 시설 화물 생성 계수 (적음 < 0 < 많음): {STRING}
|
STR_CONFIG_SETTING_INDUSTRY_CARGO_FACTOR :산업 시설 화물 생성 계수 (적음 < 0 < 많음): {STRING}
|
||||||
STR_CONFIG_SETTING_INDUSTRY_CARGO_FACTOR_HELPTEXT :1차 산업 시설이 생산하는 화물의 양을 2^(생성 계수)에 근접하게 조절합니다. 나무를 베는 산업 시설에는 적용되지 않습니다.{}모든 산업 시설 관련 NewGRF와 모두 호환되지는 않을 수 있습니다.
|
STR_CONFIG_SETTING_INDUSTRY_CARGO_FACTOR_HELPTEXT :1차 산업 시설이 생산하는 화물의 양을 2^(생성 계수)에 근접하게 조절합니다. 나무를 베는 산업 시설에는 적용되지 않습니다.{}모든 산업 시설 관련 NewGRF와 모두 호환되지는 않을 수 있습니다.
|
||||||
|
|
||||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :게임 진행 중에 나무가 자동적으로 번식: {STRING}
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :나무의 성장과 확장: {STRING}
|
||||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :게임 중에 나무가 자동적으로 번식하는지 여부를 조절합니다. 이 설정을 조정하면, 아열대 기후의 벌목소처럼 나무의 성장에 의존하는 산업시설에 영향을 끼칠 수 있습니다.
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :게임 플레이 중 나무의 성장과 확장 여부를 조절합니다. 이 설정을 조정하면, 아열대 기후의 벌목소처럼 나무의 성장에 의존하는 산업시설에 영향을 끼칠 수 있습니다.
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD :성장은 하되 확장은 안 함 {RED}(제재소가 멈출 수 있음)
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_RAINFOREST :성장은 하되 열대 우림에서만 확장함
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_ALL :어디서나 성장하고 확장함
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_GROWTH_NO_SPREAD :성장과 확장 모두 안 함 {RED}(제재소가 멈출 수 있음)
|
||||||
|
|
||||||
STR_CONFIG_SETTING_TREES_AROUND_SNOWLINE :조정된 눈 쌓인 나무: {STRING}
|
STR_CONFIG_SETTING_TREES_AROUND_SNOWLINE :조정된 눈 쌓인 나무: {STRING}
|
||||||
STR_CONFIG_SETTING_TREES_AROUND_SNOWLINE_HELPTEXT :아한대 기후에서의 설선 근처의 눈 쌓인 나무의 개수를 조정합니다. 설선 위에는 나무가 적어집니다. 설선에서는 온대 기후의 나무와 눈 쌓인 나무가 공존할 것입니다. 설선 아래에선 온대 기후의 나무가 자랄 것입니다.
|
STR_CONFIG_SETTING_TREES_AROUND_SNOWLINE_HELPTEXT :아한대 기후에서의 설선 근처의 눈 쌓인 나무의 개수를 조정합니다. 설선 위에는 나무가 적어집니다. 설선에서는 온대 기후의 나무와 눈 쌓인 나무가 공존할 것입니다. 설선 아래에선 온대 기후의 나무가 자랄 것입니다.
|
||||||
@@ -2293,6 +2297,10 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}게임
|
|||||||
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}새로고침
|
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}새로고침
|
||||||
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}서버 정보를 새로 고칩니다.
|
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}서버 정보를 새로 고칩니다.
|
||||||
|
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :{BLACK}인터넷 검색
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}인터넷에서 공개 서버를 검색합니다
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :{BLACK}LAN 검색
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :{BLACK}로컬 영역 네트워크에서 서버를 검색합니다
|
||||||
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}서버 추가
|
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}서버 추가
|
||||||
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}서버를 목록에 수동으로 추가합니다.
|
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}서버를 목록에 수동으로 추가합니다.
|
||||||
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}서버 열기
|
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}서버 열기
|
||||||
@@ -3200,7 +3208,7 @@ STR_BASIC_HOUSE_SET_NAME :기본 건물
|
|||||||
STR_SELECT_TOWN_CAPTION :{WHITE}도시 선택
|
STR_SELECT_TOWN_CAPTION :{WHITE}도시 선택
|
||||||
STR_SELECT_TOWN_LIST_ITEM :{BLACK}{TOWN}
|
STR_SELECT_TOWN_LIST_ITEM :{BLACK}{TOWN}
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}나무
|
STR_PLANT_TREE_CAPTION :{WHITE}나무
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}심고싶은 나무의 종류를 선택합니다. 이미 나무가 심어져있는 경우에는 선택한 나무의 크기를 키웁니다
|
STR_PLANT_TREE_TOOLTIP :{BLACK}심고싶은 나무의 종류를 선택합니다. 이미 나무가 심어져있는 경우에는 선택한 나무의 크기를 키웁니다
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}여러 종류의 나무 같이 심기
|
STR_TREES_RANDOM_TYPE :{BLACK}여러 종류의 나무 같이 심기
|
||||||
@@ -3209,6 +3217,12 @@ STR_TREES_RANDOM_TREES_BUTTON :{BLACK}무작
|
|||||||
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}전 지역에 걸쳐 무작위로 나무를 심습니다
|
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}전 지역에 걸쳐 무작위로 나무를 심습니다
|
||||||
STR_TREES_REMOVE_TREES_BUTTON :{BLACK}모든 나무 제거하기
|
STR_TREES_REMOVE_TREES_BUTTON :{BLACK}모든 나무 제거하기
|
||||||
STR_TREES_REMOVE_TREES_TOOLTIP :{BLACK}전 지역에 걸쳐 나무를 모두 제거합니다.
|
STR_TREES_REMOVE_TREES_TOOLTIP :{BLACK}전 지역에 걸쳐 나무를 모두 제거합니다.
|
||||||
|
STR_TREES_MODE_NORMAL_BUTTON :{BLACK}일반
|
||||||
|
STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}지면을 드래그해서 나무를 하나씩 놓습니다.
|
||||||
|
STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}작은 숲
|
||||||
|
STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}지면을 드래그해서 작은 숲을 만듭니다.
|
||||||
|
STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}큰 숲
|
||||||
|
STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}지면을 드래그해서 큰 숲을 만듭니다.
|
||||||
|
|
||||||
# Land generation window (SE)
|
# Land generation window (SE)
|
||||||
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}지형 만들기
|
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}지형 만들기
|
||||||
@@ -3865,10 +3879,10 @@ STR_GOALS_COMPANY_TITLE :{BLACK}회사
|
|||||||
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}산업시설/마을/칸의 위치로 화면을 이동하려면 클릭하십시오. CTRL+클릭하면 산업시설/마을/칸의 위치를 기준으로 새로운 외부 화면을 엽니다
|
STR_GOALS_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}산업시설/마을/칸의 위치로 화면을 이동하려면 클릭하십시오. CTRL+클릭하면 산업시설/마을/칸의 위치를 기준으로 새로운 외부 화면을 엽니다
|
||||||
|
|
||||||
# Goal question window
|
# Goal question window
|
||||||
STR_GOAL_QUESTION_CAPTION_QUESTION :{G=m}질문
|
STR_GOAL_QUESTION_CAPTION_QUESTION :{BLACK}질의
|
||||||
STR_GOAL_QUESTION_CAPTION_INFORMATION :{G=f}정보
|
STR_GOAL_QUESTION_CAPTION_INFORMATION :{BLACK}정보
|
||||||
STR_GOAL_QUESTION_CAPTION_WARNING :{G=f}경고
|
STR_GOAL_QUESTION_CAPTION_WARNING :{BLACK}경고
|
||||||
STR_GOAL_QUESTION_CAPTION_ERROR :{G=f}오류
|
STR_GOAL_QUESTION_CAPTION_ERROR :{YELLOW}오류
|
||||||
|
|
||||||
############ Start of Goal Question button list
|
############ Start of Goal Question button list
|
||||||
STR_GOAL_QUESTION_BUTTON_CANCEL :취소
|
STR_GOAL_QUESTION_BUTTON_CANCEL :취소
|
||||||
|
@@ -2685,7 +2685,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Magnitud
|
|||||||
STR_OBJECT_CLASS_LTHS :Phari
|
STR_OBJECT_CLASS_LTHS :Phari
|
||||||
STR_OBJECT_CLASS_TRNS :Emissoria
|
STR_OBJECT_CLASS_TRNS :Emissoria
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Arbores
|
STR_PLANT_TREE_CAPTION :{WHITE}Arbores
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Eligere arborem serendam. Si tegula iam arborem habet, plures arbores fortuitas addentur (forsitan non idem typus arboris)
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Eligere arborem serendam. Si tegula iam arborem habet, plures arbores fortuitas addentur (forsitan non idem typus arboris)
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Arbor fortuita
|
STR_TREES_RANDOM_TYPE :{BLACK}Arbor fortuita
|
||||||
|
@@ -317,8 +317,15 @@ STR_SORT_BY_CARGO_CAPACITY :kravnesības
|
|||||||
STR_SORT_BY_RANGE :apgabala
|
STR_SORT_BY_RANGE :apgabala
|
||||||
STR_SORT_BY_POPULATION :iedzīvotāju skaita
|
STR_SORT_BY_POPULATION :iedzīvotāju skaita
|
||||||
STR_SORT_BY_RATING :vērtējuma
|
STR_SORT_BY_RATING :vērtējuma
|
||||||
|
STR_SORT_BY_NUM_VEHICLES :Autotransporta līdzekļu skaits
|
||||||
|
STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Kopējā peļņa pagājušajā gadā
|
||||||
|
STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Kopējā peļņa šogad
|
||||||
|
STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Vidējā peļņa iepriekšējā gadā
|
||||||
|
STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Vidējā peļņa šajā gadā
|
||||||
|
|
||||||
# Group by options for vehicle list
|
# Group by options for vehicle list
|
||||||
|
STR_GROUP_BY_NONE :Nav
|
||||||
|
STR_GROUP_BY_SHARED_ORDERS :Koplietojamie rīkojumi
|
||||||
|
|
||||||
# Tooltips for the main toolbar
|
# Tooltips for the main toolbar
|
||||||
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauzēt spēli
|
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauzēt spēli
|
||||||
@@ -775,6 +782,7 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Rādīt
|
|||||||
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Rādīt pēdējo ziņojumu vai avīzes rakstu
|
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Rādīt pēdējo ziņojumu vai avīzes rakstu
|
||||||
STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - -
|
STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - -
|
||||||
STR_STATUSBAR_PAUSED :{YELLOW}* * PAUZE * *
|
STR_STATUSBAR_PAUSED :{YELLOW}* * PAUZE * *
|
||||||
|
STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE} * * PAUZE (gaida saites diagrammas atjaunināšanu) * *
|
||||||
STR_STATUSBAR_AUTOSAVE :{RED}AUTOMĀTISKĀ SAGLABĀŠANA
|
STR_STATUSBAR_AUTOSAVE :{RED}AUTOMĀTISKĀ SAGLABĀŠANA
|
||||||
STR_STATUSBAR_SAVING_GAME :{RED}* * SPĒLE TIEK SAGLABĀTA * *
|
STR_STATUSBAR_SAVING_GAME :{RED}* * SPĒLE TIEK SAGLABĀTA * *
|
||||||
|
|
||||||
@@ -1614,6 +1622,10 @@ STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Lineārs
|
|||||||
|
|
||||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Koku izvietojums spēlē: {STRING}
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Koku izvietojums spēlē: {STRING}
|
||||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Vadīt nejaušu koku parādīšanos spēles laikā. Tas var ietekmēt no kokaudzēšanas atkarīgas ražotnes, piemēram kokzāģētavas
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Vadīt nejaušu koku parādīšanos spēles laikā. Tas var ietekmēt no kokaudzēšanas atkarīgas ražotnes, piemēram kokzāģētavas
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD :Augt, bet neizplatās {RED} (salauž kokzāģētavas)
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_RAINFOREST :Aug, bet izplatās tikai lietus mežos
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_ALL :Aug un izplatās visur
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_GROWTH_NO_SPREAD :Augt, bet neizplatās {RED} (salauž kokzāģētavas)
|
||||||
|
|
||||||
STR_CONFIG_SETTING_TOOLBAR_POS :Galvenās rīkjoslas novietojums: {STRING}
|
STR_CONFIG_SETTING_TOOLBAR_POS :Galvenās rīkjoslas novietojums: {STRING}
|
||||||
STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Galvenās rīkjoslas horizontālais novietojums ekrāna augšējā daļā
|
STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Galvenās rīkjoslas horizontālais novietojums ekrāna augšējā daļā
|
||||||
@@ -1979,6 +1991,10 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Pievieno
|
|||||||
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Atsvaidzināt serveri
|
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Atsvaidzināt serveri
|
||||||
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Atsvaidzināt servera informāciju
|
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Atsvaidzināt servera informāciju
|
||||||
|
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :Meklēt internetā
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Meklēt publiskos serverus internetā
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :{BLACK}Meklēt LAN
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :{BLACK}Meklēt serverus lokālajā tīklā
|
||||||
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Pievienot serveri
|
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Pievienot serveri
|
||||||
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Pievienot serveri sarakstam, kurš vienmēr tiks pārbaudīts vai tajā nav palaistas spēles
|
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Pievienot serveri sarakstam, kurš vienmēr tiks pārbaudīts vai tajā nav palaistas spēles
|
||||||
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Palaist serveri
|
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Palaist serveri
|
||||||
@@ -2204,11 +2220,13 @@ STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Spēle joprojā
|
|||||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Spēle joprojām pauzēta ({STRING}, {STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Spēle joprojām pauzēta ({STRING}, {STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spēle joprojām pauzēta ({STRING}, {STRING}, {STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Spēle joprojām pauzēta ({STRING}, {STRING}, {STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Spēle vēl aizvien ir pauzēta ({STRING}, {STRING}, {STRING}, {STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Spēle vēl aizvien ir pauzēta ({STRING}, {STRING}, {STRING}, {STRING})
|
||||||
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_5 :Spēle joprojām pauzēta ({STRING}, {STRING}, {STRING}, {STRING}, {STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spēle atsākta ({STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Spēle atsākta ({STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :spēlētāju skaits
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :spēlētāju skaits
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :savieno spēlētājus
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :savieno spēlētājus
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuālā
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manuālā
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :spēles skripts
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :spēles skripts
|
||||||
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :gaida uz saišu grafika atjaunošanu
|
||||||
############ End of leave-in-this-order
|
############ End of leave-in-this-order
|
||||||
STR_NETWORK_MESSAGE_CLIENT_LEAVING :aizeju
|
STR_NETWORK_MESSAGE_CLIENT_LEAVING :aizeju
|
||||||
STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} ir pievienojies spēlei
|
STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} ir pievienojies spēlei
|
||||||
@@ -2525,7 +2543,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Izmērs:
|
|||||||
STR_OBJECT_CLASS_LTHS :Bākas
|
STR_OBJECT_CLASS_LTHS :Bākas
|
||||||
STR_OBJECT_CLASS_TRNS :Raidītāji
|
STR_OBJECT_CLASS_TRNS :Raidītāji
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Koki
|
STR_PLANT_TREE_CAPTION :{WHITE}Koki
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Izvēlēties koka veidu stādīšanai. Ja lauciņš jau ir koks, tas pievienos vairāk jauktu veidu kokus neatkarīgi no izvēlētā veida
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Izvēlēties koka veidu stādīšanai. Ja lauciņš jau ir koks, tas pievienos vairāk jauktu veidu kokus neatkarīgi no izvēlētā veida
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Nejauši izvēlēta veida koki
|
STR_TREES_RANDOM_TYPE :{BLACK}Nejauši izvēlēta veida koki
|
||||||
@@ -4250,6 +4268,7 @@ STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Spēle ir sagla
|
|||||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Failu nevar nolasīt
|
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Failu nevar nolasīt
|
||||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Failā nevar ierakstīt
|
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Failā nevar ierakstīt
|
||||||
STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Datu integritātes pārbaude neizdevās
|
STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Datu integritātes pārbaude neizdevās
|
||||||
|
STR_GAME_SAVELOAD_ERROR_PATCHPACK :Saglabāšana notiek ar modificētu versiju
|
||||||
STR_GAME_SAVELOAD_NOT_AVAILABLE :<nav pieejams>
|
STR_GAME_SAVELOAD_NOT_AVAILABLE :<nav pieejams>
|
||||||
STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Spēle tika saglabāta bez tramvaju atbalsta. Visi tramvaji tika aizvākti.
|
STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Spēle tika saglabāta bez tramvaju atbalsta. Visi tramvaji tika aizvākti.
|
||||||
|
|
||||||
|
@@ -2680,7 +2680,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Dydis la
|
|||||||
STR_OBJECT_CLASS_LTHS :Švyturiai
|
STR_OBJECT_CLASS_LTHS :Švyturiai
|
||||||
STR_OBJECT_CLASS_TRNS :Siųstuvai
|
STR_OBJECT_CLASS_TRNS :Siųstuvai
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Pasirinkite medžio rūšį
|
STR_PLANT_TREE_CAPTION :{WHITE}Pasirinkite medžio rūšį
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Pasirinkite norimų sodinti medžių tipą. Jei langelyje jau auga koks nors medis, bus pasodinti atsitiktiniai, nebūtinai pasirinktos rūšies, medžiai
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Pasirinkite norimų sodinti medžių tipą. Jei langelyje jau auga koks nors medis, bus pasodinti atsitiktiniai, nebūtinai pasirinktos rūšies, medžiai
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Atsitiktiniai medžiai tempiant
|
STR_TREES_RANDOM_TYPE :{BLACK}Atsitiktiniai medžiai tempiant
|
||||||
|
@@ -2512,7 +2512,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Gréisst
|
|||||||
STR_OBJECT_CLASS_LTHS :Liichttierm
|
STR_OBJECT_CLASS_LTHS :Liichttierm
|
||||||
STR_OBJECT_CLASS_TRNS :Antennen
|
STR_OBJECT_CLASS_TRNS :Antennen
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Beem
|
STR_PLANT_TREE_CAPTION :{WHITE}Beem
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Wielt de Baamtyp. Wann d'Feld schons e Baam huet, ginn méi Beem vu verschiddenen Arten gesat
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Wielt de Baamtyp. Wann d'Feld schons e Baam huet, ginn méi Beem vu verschiddenen Arten gesat
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Zoufälleg Beem
|
STR_TREES_RANDOM_TYPE :{BLACK}Zoufälleg Beem
|
||||||
|
@@ -2201,7 +2201,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Saiz: {G
|
|||||||
STR_OBJECT_CLASS_LTHS :Rumah Api
|
STR_OBJECT_CLASS_LTHS :Rumah Api
|
||||||
STR_OBJECT_CLASS_TRNS :Pemancar
|
STR_OBJECT_CLASS_TRNS :Pemancar
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Pokok-pokok
|
STR_PLANT_TREE_CAPTION :{WHITE}Pokok-pokok
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Pilih jenis pokok untuk ditanam
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Pilih jenis pokok untuk ditanam
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Jenis pokok yang rawak
|
STR_TREES_RANDOM_TYPE :{BLACK}Jenis pokok yang rawak
|
||||||
|
@@ -2514,7 +2514,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Størrel
|
|||||||
STR_OBJECT_CLASS_LTHS :Fyrtårn
|
STR_OBJECT_CLASS_LTHS :Fyrtårn
|
||||||
STR_OBJECT_CLASS_TRNS :Radiosendere
|
STR_OBJECT_CLASS_TRNS :Radiosendere
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Trær
|
STR_PLANT_TREE_CAPTION :{WHITE}Trær
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Velg typen tre som skal plantes. Hvis feltet allerede har et tre, vil dette plante flere typer trær uavhengig av den valgte typen
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Velg typen tre som skal plantes. Hvis feltet allerede har et tre, vil dette plante flere typer trær uavhengig av den valgte typen
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Trær av tilfeldig type
|
STR_TREES_RANDOM_TYPE :{BLACK}Trær av tilfeldig type
|
||||||
|
@@ -2374,7 +2374,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Storleik
|
|||||||
STR_OBJECT_CLASS_LTHS :Fyrtårn
|
STR_OBJECT_CLASS_LTHS :Fyrtårn
|
||||||
STR_OBJECT_CLASS_TRNS :Radiosendarar
|
STR_OBJECT_CLASS_TRNS :Radiosendarar
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Tre
|
STR_PLANT_TREE_CAPTION :{WHITE}Tre
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Vel typen tre som skal plantast. Om ruta allereie har eit tre, vil dette leggje til fleire tre av ulike typar uavhengig av den valde typen
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Vel typen tre som skal plantast. Om ruta allereie har eit tre, vil dette leggje til fleire tre av ulike typar uavhengig av den valde typen
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Tre av tilfeldig type
|
STR_TREES_RANDOM_TYPE :{BLACK}Tre av tilfeldig type
|
||||||
|
@@ -694,8 +694,15 @@ STR_SORT_BY_CARGO_CAPACITY :Ładowność
|
|||||||
STR_SORT_BY_RANGE :Zasięg
|
STR_SORT_BY_RANGE :Zasięg
|
||||||
STR_SORT_BY_POPULATION :Liczba mieszkańców
|
STR_SORT_BY_POPULATION :Liczba mieszkańców
|
||||||
STR_SORT_BY_RATING :Ocena
|
STR_SORT_BY_RATING :Ocena
|
||||||
|
STR_SORT_BY_NUM_VEHICLES :Ilość pojazdów
|
||||||
|
STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Całkowity zysk w zeszłym roku
|
||||||
|
STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Całkowity zysk w obecnym roku
|
||||||
|
STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Średni zysk w zeszłym roku
|
||||||
|
STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Średni zysk w obecnym roku
|
||||||
|
|
||||||
# Group by options for vehicle list
|
# Group by options for vehicle list
|
||||||
|
STR_GROUP_BY_NONE :Brak
|
||||||
|
STR_GROUP_BY_SHARED_ORDERS :Polecenia współdzielone
|
||||||
|
|
||||||
# Tooltips for the main toolbar
|
# Tooltips for the main toolbar
|
||||||
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauza
|
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}Pauza
|
||||||
@@ -1153,6 +1160,7 @@ STR_SMALLMAP_TOOLTIP_ENABLE_ALL_CARGOS :{BLACK}Wyświet
|
|||||||
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Pokaż ostatnią wiadomość lub ogłoszenie
|
STR_STATUSBAR_TOOLTIP_SHOW_LAST_NEWS :{BLACK}Pokaż ostatnią wiadomość lub ogłoszenie
|
||||||
STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - -
|
STR_STATUSBAR_COMPANY_NAME :{SILVER}- - {COMPANY} - -
|
||||||
STR_STATUSBAR_PAUSED :{YELLOW}* * PAUZA * *
|
STR_STATUSBAR_PAUSED :{YELLOW}* * PAUZA * *
|
||||||
|
STR_STATUSBAR_PAUSED_LINK_GRAPH :{ORANGE}* * PAUZA (oczekiwanie na aktualizację wykresów) * *
|
||||||
STR_STATUSBAR_AUTOSAVE :{RED}AUTOZAPIS
|
STR_STATUSBAR_AUTOSAVE :{RED}AUTOZAPIS
|
||||||
STR_STATUSBAR_SAVING_GAME :{RED}* * ZAPISYWANIE GRY * *
|
STR_STATUSBAR_SAVING_GAME :{RED}* * ZAPISYWANIE GRY * *
|
||||||
|
|
||||||
@@ -1992,6 +2000,10 @@ STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Liniowy
|
|||||||
|
|
||||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Rozmieszczenie drzew w grze: {STRING}
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Rozmieszczenie drzew w grze: {STRING}
|
||||||
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Losowe pojawianie się drzew podczas gry. Może mieć to wpływ na zakłady opierające się na wyrastaniu drzew, np. tartaki
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Losowe pojawianie się drzew podczas gry. Może mieć to wpływ na zakłady opierające się na wyrastaniu drzew, np. tartaki
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_SPREAD :Rosną, ale nie rozprzestrzeniają się {RED}(Klimat tropikalny: Tartaki nie działają)
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_RAINFOREST :Rosną, ale rozprzestrzeniają się tylko w lasach deszczowych
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_ALL :Rosną i rozprzestrzeniają się wszędzie
|
||||||
|
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_NO_GROWTH_NO_SPREAD :Nie rosną, nie rozprzestrzeniają się {RED}(Klimat tropikalny: Tartaki nie działają)
|
||||||
|
|
||||||
STR_CONFIG_SETTING_TOOLBAR_POS :Pozycja głównego paska narzędzi: {STRING}
|
STR_CONFIG_SETTING_TOOLBAR_POS :Pozycja głównego paska narzędzi: {STRING}
|
||||||
STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Pozioma pozycja głównego paska narzędzi na górze ekranu
|
STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Pozioma pozycja głównego paska narzędzi na górze ekranu
|
||||||
@@ -2237,8 +2249,8 @@ STR_LIVERY_DIESEL :Lokomotywa spal
|
|||||||
STR_LIVERY_ELECTRIC :Lokomotywa elektryczna
|
STR_LIVERY_ELECTRIC :Lokomotywa elektryczna
|
||||||
STR_LIVERY_MONORAIL :Lokomotywa jednoszynowa
|
STR_LIVERY_MONORAIL :Lokomotywa jednoszynowa
|
||||||
STR_LIVERY_MAGLEV :Lokomotywa Maglev
|
STR_LIVERY_MAGLEV :Lokomotywa Maglev
|
||||||
STR_LIVERY_DMU :DMU
|
STR_LIVERY_DMU :SZT
|
||||||
STR_LIVERY_EMU :EMU
|
STR_LIVERY_EMU :EZT
|
||||||
STR_LIVERY_PASSENGER_WAGON_STEAM :Wagon pasażerski (parowóz)
|
STR_LIVERY_PASSENGER_WAGON_STEAM :Wagon pasażerski (parowóz)
|
||||||
STR_LIVERY_PASSENGER_WAGON_DIESEL :Wagon pasażerski (spalinowy)
|
STR_LIVERY_PASSENGER_WAGON_DIESEL :Wagon pasażerski (spalinowy)
|
||||||
STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Wagon pasażerski (elektryczny)
|
STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Wagon pasażerski (elektryczny)
|
||||||
@@ -2355,6 +2367,10 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Przyłą
|
|||||||
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Odśwież serwer
|
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Odśwież serwer
|
||||||
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Odśwież informacje o serwerze
|
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Odśwież informacje o serwerze
|
||||||
|
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :Przeszukaj internet
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Znajdź w internecie serwery publiczne
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :Przeszukaj LAN
|
||||||
|
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :Znajdź serwery w sieci lokalnej
|
||||||
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Dodaj serwer
|
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Dodaj serwer
|
||||||
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Dodaj serwer do listy, która będzie przeszukiwana w poszukiwaniu uruchomionych gier
|
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Dodaj serwer do listy, która będzie przeszukiwana w poszukiwaniu uruchomionych gier
|
||||||
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Uruchom serwer
|
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Uruchom serwer
|
||||||
@@ -2580,11 +2596,13 @@ STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_1 :Gra nadal wstrz
|
|||||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Gra nadal wstrzymana ({STRING}, {STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_2 :Gra nadal wstrzymana ({STRING}, {STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Gra nadal wstrzymana ({STRING}, {STRING}, {STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_3 :Gra nadal wstrzymana ({STRING}, {STRING}, {STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Gra wciąż wstrzymana ({STRING}, {STRING}, {STRING}, {STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_4 :Gra wciąż wstrzymana ({STRING}, {STRING}, {STRING}, {STRING})
|
||||||
|
STR_NETWORK_SERVER_MESSAGE_GAME_STILL_PAUSED_5 :Gra wciąż wstrzymana ({STRING}, {STRING}, {STRING}, {STRING}, {STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Gra wznowiona ({STRING})
|
STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Gra wznowiona ({STRING})
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :ilość graczy
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :ilość graczy
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :łączenie klientów
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :łączenie klientów
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :ręczny
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :ręczny
|
||||||
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :skrypt gry
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :skrypt gry
|
||||||
|
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :oczekiwanie na aktualizację wykresów
|
||||||
############ End of leave-in-this-order
|
############ End of leave-in-this-order
|
||||||
STR_NETWORK_MESSAGE_CLIENT_LEAVING :opuszczanie
|
STR_NETWORK_MESSAGE_CLIENT_LEAVING :opuszczanie
|
||||||
STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} dołączył do gry.
|
STR_NETWORK_MESSAGE_CLIENT_JOINED :*** {STRING} dołączył do gry.
|
||||||
@@ -2901,13 +2919,19 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Rozmiar:
|
|||||||
STR_OBJECT_CLASS_LTHS :Latarnie morskie
|
STR_OBJECT_CLASS_LTHS :Latarnie morskie
|
||||||
STR_OBJECT_CLASS_TRNS :Nadajniki
|
STR_OBJECT_CLASS_TRNS :Nadajniki
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Drzewa
|
STR_PLANT_TREE_CAPTION :{WHITE}Drzewa
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Wybierz typ drzew do sadzenia. Jeśli na wybranym miejscu są już drzewa, to dodasz więcej drzew różnego typu, bez względu na wybraną opcję.
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Wybierz typ drzew do sadzenia. Jeśli na wybranym miejscu są już drzewa, to dodasz więcej drzew różnego typu, bez względu na wybraną opcję.
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Drzewa różnych rodzajów
|
STR_TREES_RANDOM_TYPE :{BLACK}Drzewa różnych rodzajów
|
||||||
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Sadzenie drzew różnych rodzajów. Shift przełącza pomiędzy trybem sadzenia a szacowaniem jego kosztów
|
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Sadzenie drzew różnych rodzajów. Shift przełącza pomiędzy trybem sadzenia a szacowaniem jego kosztów
|
||||||
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Losowe drzewa
|
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Losowe drzewa
|
||||||
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Pokryj losowo krajobraz drzewami
|
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Pokryj losowo krajobraz drzewami
|
||||||
|
STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normalny
|
||||||
|
STR_TREES_MODE_NORMAL_TOOLTIP :Sadź pojedyncze drzewa, przeciągając nad terenem.
|
||||||
|
STR_TREES_MODE_FOREST_SM_BUTTON :Zagajnik
|
||||||
|
STR_TREES_MODE_FOREST_SM_TOOLTIP :Sadź niewielkie lasy, przeciągając nad terenem.
|
||||||
|
STR_TREES_MODE_FOREST_LG_BUTTON :Las
|
||||||
|
STR_TREES_MODE_FOREST_LG_TOOLTIP :Sadź duże lasy, przeciągając nad terenem.
|
||||||
|
|
||||||
# Land generation window (SE)
|
# Land generation window (SE)
|
||||||
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Tworzenie terenu
|
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Tworzenie terenu
|
||||||
@@ -4625,6 +4649,7 @@ STR_GAME_SAVELOAD_ERROR_TOO_NEW_SAVEGAME :Zapisana gra zr
|
|||||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Plik nie jest odczytywalny
|
STR_GAME_SAVELOAD_ERROR_FILE_NOT_READABLE :Plik nie jest odczytywalny
|
||||||
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Plik nie jest zapisywalny
|
STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE :Plik nie jest zapisywalny
|
||||||
STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Sprawdzenie integralności danych nie powiodło się
|
STR_GAME_SAVELOAD_ERROR_DATA_INTEGRITY_CHECK_FAILED :Sprawdzenie integralności danych nie powiodło się
|
||||||
|
STR_GAME_SAVELOAD_ERROR_PATCHPACK :Zapis jest stworzony w zmodyfikowanej wersji gry
|
||||||
STR_GAME_SAVELOAD_NOT_AVAILABLE :<not available>
|
STR_GAME_SAVELOAD_NOT_AVAILABLE :<not available>
|
||||||
STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Gra została zapisana w wersji nie obsługującej tramwajów. Wszystkie tramwaje zostały usunięte
|
STR_WARNING_LOADGAME_REMOVED_TRAMS :{WHITE}Gra została zapisana w wersji nie obsługującej tramwajów. Wszystkie tramwaje zostały usunięte
|
||||||
|
|
||||||
|
@@ -2499,7 +2499,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Tamanho:
|
|||||||
STR_OBJECT_CLASS_LTHS :Faróis
|
STR_OBJECT_CLASS_LTHS :Faróis
|
||||||
STR_OBJECT_CLASS_TRNS :Transmissores
|
STR_OBJECT_CLASS_TRNS :Transmissores
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Árvores
|
STR_PLANT_TREE_CAPTION :{WHITE}Árvores
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Escolha um tipo de árvore para plantar. Se o quadrado já tiver uma árvore, serão adicionadas mais árvores de difrentes tipos independentemente do tipo selecionado
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Escolha um tipo de árvore para plantar. Se o quadrado já tiver uma árvore, serão adicionadas mais árvores de difrentes tipos independentemente do tipo selecionado
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Árvores de tipo aleatório
|
STR_TREES_RANDOM_TYPE :{BLACK}Árvores de tipo aleatório
|
||||||
|
@@ -2443,7 +2443,7 @@ STR_OBJECT_BUILD_SIZE :{BLACK}Dimensiu
|
|||||||
STR_OBJECT_CLASS_LTHS :Faruri
|
STR_OBJECT_CLASS_LTHS :Faruri
|
||||||
STR_OBJECT_CLASS_TRNS :Transmiţătoare
|
STR_OBJECT_CLASS_TRNS :Transmiţătoare
|
||||||
|
|
||||||
# Tree planting window (last two for SE only)
|
# Tree planting window (last eight for SE only)
|
||||||
STR_PLANT_TREE_CAPTION :{WHITE}Arbori
|
STR_PLANT_TREE_CAPTION :{WHITE}Arbori
|
||||||
STR_PLANT_TREE_TOOLTIP :{BLACK}Alege specia de arbori de plantat. Dacă există deja un arbore în locația dorită, se vor adăuga arbori de tip mixt, indiferent de specia selectată
|
STR_PLANT_TREE_TOOLTIP :{BLACK}Alege specia de arbori de plantat. Dacă există deja un arbore în locația dorită, se vor adăuga arbori de tip mixt, indiferent de specia selectată
|
||||||
STR_TREES_RANDOM_TYPE :{BLACK}Arbori din specii aleatoare
|
STR_TREES_RANDOM_TYPE :{BLACK}Arbori din specii aleatoare
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user