Merge branch 'master' into jgrpp

# Conflicts:
#	.github/workflows/ci-build.yml
#	src/ai/ai_gui.cpp
#	src/blitter/32bpp_optimized.cpp
#	src/blitter/32bpp_simple.cpp
#	src/blitter/32bpp_sse2.cpp
#	src/blitter/8bpp_optimized.cpp
#	src/blitter/8bpp_simple.cpp
#	src/blitter/null.cpp
#	src/blitter/null.hpp
#	src/company_gui.cpp
#	src/game/game_gui.cpp
#	src/genworld_gui.cpp
#	src/gfx.cpp
#	src/gfx_func.h
#	src/graph_gui.cpp
#	src/industry_gui.cpp
#	src/linkgraph/linkgraphjob.cpp
#	src/network/network_gui.cpp
#	src/newgrf_debug_gui.cpp
#	src/openttd.cpp
#	src/pathfinder/npf/aystar.h
#	src/road_gui.cpp
#	src/saveload/order_sl.cpp
#	src/saveload/saveload.cpp
#	src/saveload/saveload.h
#	src/script/api/script_log.cpp
#	src/script/api/script_town.cpp
#	src/script/script_gui.cpp
#	src/settings.cpp
#	src/settings_gui.cpp
#	src/settings_table.cpp
#	src/settings_type.h
#	src/smallmap_gui.cpp
#	src/sortlist_type.h
#	src/spritecache.cpp
#	src/spriteloader/grf.cpp
#	src/spriteloader/grf.hpp
#	src/spriteloader/spriteloader.hpp
#	src/station_cmd.cpp
#	src/station_cmd.h
#	src/station_gui.cpp
#	src/strings.cpp
#	src/toolbar_gui.cpp
#	src/town_cmd.cpp
#	src/town_gui.cpp
#	src/vehicle_gui.cpp
#	src/vehicle_gui_base.h
#	src/video/opengl.cpp
#	src/video/opengl.h
#	src/widgets/dropdown.cpp
#	src/widgets/dropdown_type.h
#	src/window_gui.h
wip-string
Jonathan G Rennison 4 months ago
commit d5a7a67b8c

@ -106,7 +106,8 @@ jobs:
- name: GCC - Dedicated
compiler: gcc
cxxcompiler: g++
extra-cmake-parameters: -DOPTION_DEDICATED=ON -DCMAKE_CXX_FLAGS_INIT="-DRANDOM_DEBUG"
libraries: grfcodec
extra-cmake-parameters: -DOPTION_DEDICATED=ON -DCMAKE_CXX_FLAGS_INIT="-DRANDOM_DEBUG" -DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON
# Compile without SDL / SDL2, as that should compile fine too.
name: Linux (${{ matrix.name }})
@ -187,6 +188,9 @@ jobs:
cd build
ctest -j $(nproc) --timeout 120
# Check no tracked files have been modified
git diff --exit-code
macos:
strategy:
fail-fast: false

@ -529,8 +529,9 @@ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
add_definitions(-DPOINTER_IS_64BIT)
endif()
include(CreateRegression)
create_regression()
enable_testing()
add_subdirectory(regression)
if(APPLE OR WIN32)
find_package(Pandoc)

@ -38,7 +38,7 @@ OpenTTD needs the Platform SDK, if it isn't installed already. This can be
done during installing Visual Studio, by selecting
`Visual C++ MFC for x86 and x64` (and possibly
`Visual C++ ATL for x86 and x64` depending on your version). If not, you
can get download it as [MS Windows Platform SDK](https://developer.microsoft.com/en-US/windows/downloads/windows-10-sdk).
can get download it as [MS Windows Platform SDK](https://developer.microsoft.com/en-us/windows/downloads/windows-sdk).
Install the SDK by following the instructions as given.

@ -112,7 +112,7 @@ Every pull request should have a clear scope, with no unrelated commits.
Adhering to the following process is the best way to get your work included in the project:
1. [Fork](https://help.github.com/fork-a-repo/) the project, clone your fork, and configure the remotes:
1. [Fork](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo) the project, clone your fork, and configure the remotes:
```bash
git clone https://github.com/<your-username>/OpenTTD.git openttd
@ -266,7 +266,7 @@ This is inevitable, because it is a main feature of git.
If you are concerned about your privacy, we strongly recommend to use "Anonymous &lt;anonymous@openttd.org&gt;" as the git commit author. We might refuse anonymous contributions if malicious intent is suspected.
Please note that the contributor identity, once given, is used for copyright verification and to provide proof should a malicious commit be made.
As such, the [EU GDPR](https://www.eugdpr.org/key-changes.html) "right to be forgotten" does not apply, as this is an overriding legitimate interest.
As such, the [EU GDPR](https://gdpr.eu) "right to be forgotten" does not apply, as this is an overriding legitimate interest.
Please also note that your commit is public and as such will potentially be processed by many third-parties.
Git's distributed nature makes it impossible to track where exactly your commit, and thus your personal data, will be stored and be processed.

@ -1,16 +1,13 @@
# Macro which contains all bits and pieces to create a single grf file based
# on NFO and PNG files.
#
# create_grf_command()
# create_grf_command(NFO_SOURCE_FILES nfo_file1 ... PNG_SOURCE_FILES png_file1 ...)
#
function(create_grf_command)
set(EXTRA_PNG_SOURCE_FILES ${ARGV})
cmake_parse_arguments(GRF "" "" "NFO_SOURCE_FILES;PNG_SOURCE_FILES" ${ARGN})
get_filename_component(GRF_SOURCE_FOLDER_NAME "${CMAKE_CURRENT_SOURCE_DIR}" NAME)
get_filename_component(GRF_BINARY_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../${GRF_SOURCE_FOLDER_NAME}.grf ABSOLUTE)
file(GLOB_RECURSE GRF_PNG_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.png)
file(GLOB_RECURSE GRF_NFO_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.nfo)
set(GRF_PNG_SOURCE_FILES ${GRF_PNG_SOURCE_FILES} ${EXTRA_PNG_SOURCE_FILES})
# Copy over all the PNG files to the correct folder
foreach(GRF_PNG_SOURCE_FILE IN LISTS GRF_PNG_SOURCE_FILES)

@ -3,20 +3,15 @@
# 'ctest'. The first is prefered, as it is more verbose, and takes care of
# dependencies correctly.
#
# create_regression()
# create_regression(file1 ...)
#
macro(create_regression)
# Find all the files in the regression folder; they need to be copied to the
# build folder before we can run the regression
file(GLOB_RECURSE REGRESSION_SOURCE_FILES ${CMAKE_SOURCE_DIR}/regression/*)
set(REGRESSION_SOURCE_FILES ${ARGN})
foreach(REGRESSION_SOURCE_FILE IN LISTS REGRESSION_SOURCE_FILES)
string(REPLACE "${CMAKE_SOURCE_DIR}/regression/" "" REGRESSION_SOURCE_FILE_NAME "${REGRESSION_SOURCE_FILE}")
string(CONCAT REGRESSION_BINARY_FILE "${CMAKE_BINARY_DIR}/ai/" "${REGRESSION_SOURCE_FILE_NAME}")
if("${REGRESSION_SOURCE_FILE_NAME}" STREQUAL "regression.cfg")
continue()
endif()
add_custom_command(OUTPUT ${REGRESSION_BINARY_FILE}
COMMAND ${CMAKE_COMMAND} -E copy
${REGRESSION_SOURCE_FILE}
@ -28,59 +23,36 @@ macro(create_regression)
list(APPEND REGRESSION_BINARY_FILES ${REGRESSION_BINARY_FILE})
endforeach()
# Copy the regression configuration in a special folder, so all autogenerated
# folders end up in the same place after running regression.
add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/regression/regression.cfg
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_SOURCE_DIR}/regression/regression.cfg
${CMAKE_BINARY_DIR}/regression/regression.cfg
MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/regression/regression.cfg
COMMENT "Copying ${REGRESSION_SOURCE_FILE_NAME} regression file"
)
list(APPEND REGRESSION_BINARY_FILES ${CMAKE_BINARY_DIR}/regression/regression.cfg)
get_filename_component(REGRESSION_TEST_NAME "${CMAKE_CURRENT_SOURCE_DIR}" NAME)
# Create a new target which copies all regression files
add_custom_target(regression_files
ALL # this is needed because 'make test' doesn't resolve dependencies, and otherwise this is never executed
# Create a new target which copies regression files
add_custom_target(regression_${REGRESSION_TEST_NAME}_files
DEPENDS
${REGRESSION_BINARY_FILES}
)
enable_testing()
# Find all the tests we have, and create a target for them
file(GLOB REGRESSION_TESTS ${CMAKE_SOURCE_DIR}/regression/*)
foreach(REGRESSION_TEST IN LISTS REGRESSION_TESTS)
get_filename_component(REGRESSION_TEST_NAME "${REGRESSION_TEST}" NAME)
if("${REGRESSION_TEST_NAME}" STREQUAL "regression.cfg")
continue()
endif()
add_custom_target(regression_${REGRESSION_TEST_NAME}
COMMAND ${CMAKE_COMMAND}
-DOPENTTD_EXECUTABLE=$<TARGET_FILE:openttd>
-DEDITBIN_EXECUTABLE=${EDITBIN_EXECUTABLE}
-DREGRESSION_TEST=${REGRESSION_TEST_NAME}
-P "${CMAKE_SOURCE_DIR}/cmake/scripts/Regression.cmake"
DEPENDS openttd regression_files
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
COMMENT "Running regression test ${REGRESSION_TEST_NAME}"
)
# Also make sure that 'make test' runs the regression
add_test(NAME regression_${REGRESSION_TEST_NAME}
COMMAND ${CMAKE_COMMAND}
-DOPENTTD_EXECUTABLE=$<TARGET_FILE:openttd>
-DEDITBIN_EXECUTABLE=${EDITBIN_EXECUTABLE}
-DREGRESSION_TEST=${REGRESSION_TEST_NAME}
-P "${CMAKE_SOURCE_DIR}/cmake/scripts/Regression.cmake"
WORKING_DIRECTORY ${CMAKE_BINARY_DIR})
add_dependencies(regression_files regression_${REGRESSION_TEST_NAME}_files)
add_custom_target(regression_${REGRESSION_TEST_NAME}
COMMAND ${CMAKE_COMMAND}
-DOPENTTD_EXECUTABLE=$<TARGET_FILE:openttd>
-DEDITBIN_EXECUTABLE=${EDITBIN_EXECUTABLE}
-DREGRESSION_TEST=${REGRESSION_TEST_NAME}
-P "${CMAKE_SOURCE_DIR}/cmake/scripts/Regression.cmake"
DEPENDS openttd regression_${REGRESSION_TEST_NAME}_files
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
COMMENT "Running regression test ${REGRESSION_TEST_NAME}"
)
list(APPEND REGRESSION_TARGETS regression_${REGRESSION_TEST_NAME})
endforeach()
# Also make sure that 'make test' runs the regression
add_test(NAME regression_${REGRESSION_TEST_NAME}
COMMAND ${CMAKE_COMMAND}
-DOPENTTD_EXECUTABLE=$<TARGET_FILE:openttd>
-DEDITBIN_EXECUTABLE=${EDITBIN_EXECUTABLE}
-DREGRESSION_TEST=${REGRESSION_TEST_NAME}
-P "${CMAKE_SOURCE_DIR}/cmake/scripts/Regression.cmake"
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
)
# Create a new target which runs the regression
add_custom_target(regression
DEPENDS ${REGRESSION_TARGETS})
add_dependencies(regression regression_${REGRESSION_TEST_NAME})
endmacro()

@ -21,6 +21,9 @@ if(NOT GRF_BINARY_FILE)
message(FATAL_ERROR "Script needs GRF_BINARY_FILE defined")
endif()
# Remove the existing output so failures never go unnoticed
file(REMOVE ${GRF_BINARY_FILE} ${GRF_BINARY_FILE}.hash)
get_filename_component(GRF_SOURCE_FOLDER_NAME "${GRF_SOURCE_FOLDER}" NAME)
file(WRITE sprites/${GRF_SOURCE_FOLDER_NAME}.nfo "")

@ -5,5 +5,47 @@
# working on it / have the tools installed.
if(GRFCODEC_FOUND)
include(CreateGrfCommand)
create_grf_command()
create_grf_command(
NFO_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/airports.nfo
${CMAKE_CURRENT_SOURCE_DIR}/airport_preview.nfo
${CMAKE_CURRENT_SOURCE_DIR}/aqueduct.nfo
${CMAKE_CURRENT_SOURCE_DIR}/autorail.nfo
${CMAKE_CURRENT_SOURCE_DIR}/canals.nfo
${CMAKE_CURRENT_SOURCE_DIR}/chars.nfo
${CMAKE_CURRENT_SOURCE_DIR}/elrails.nfo
${CMAKE_CURRENT_SOURCE_DIR}/foundations.nfo
${CMAKE_CURRENT_SOURCE_DIR}/mono.nfo
${CMAKE_CURRENT_SOURCE_DIR}/oneway.nfo
${CMAKE_CURRENT_SOURCE_DIR}/openttd.nfo
${CMAKE_CURRENT_SOURCE_DIR}/openttdgui.nfo
${CMAKE_CURRENT_SOURCE_DIR}/palette.nfo
${CMAKE_CURRENT_SOURCE_DIR}/roadstops.nfo
${CMAKE_CURRENT_SOURCE_DIR}/signals.nfo
${CMAKE_CURRENT_SOURCE_DIR}/sloped_tracks.nfo
${CMAKE_CURRENT_SOURCE_DIR}/tramtracks.nfo
${CMAKE_CURRENT_SOURCE_DIR}/tunnel_portals.nfo
${CMAKE_CURRENT_SOURCE_DIR}/2ccmap.nfo
PNG_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/airports.png
${CMAKE_CURRENT_SOURCE_DIR}/airport_preview.png
${CMAKE_CURRENT_SOURCE_DIR}/aqueduct.png
${CMAKE_CURRENT_SOURCE_DIR}/autorail.png
${CMAKE_CURRENT_SOURCE_DIR}/canals.png
${CMAKE_CURRENT_SOURCE_DIR}/canal_locks.png
${CMAKE_CURRENT_SOURCE_DIR}/chars.png
${CMAKE_CURRENT_SOURCE_DIR}/elrails.png
${CMAKE_CURRENT_SOURCE_DIR}/foundations.png
${CMAKE_CURRENT_SOURCE_DIR}/mono.png
${CMAKE_CURRENT_SOURCE_DIR}/oneway.png
${CMAKE_CURRENT_SOURCE_DIR}/openttdgui.png
${CMAKE_CURRENT_SOURCE_DIR}/openttdgui_build_tram.png
${CMAKE_CURRENT_SOURCE_DIR}/openttdgui_convert_road.png
${CMAKE_CURRENT_SOURCE_DIR}/openttdgui_convert_tram.png
${CMAKE_CURRENT_SOURCE_DIR}/openttdgui_group_livery.png
${CMAKE_CURRENT_SOURCE_DIR}/roadstops.png
${CMAKE_CURRENT_SOURCE_DIR}/signals.png
${CMAKE_CURRENT_SOURCE_DIR}/sloped_tracks.png
${CMAKE_CURRENT_SOURCE_DIR}/tramtracks.png
${CMAKE_CURRENT_SOURCE_DIR}/tramtracks_bare_depot.png
${CMAKE_CURRENT_SOURCE_DIR}/tunnel_portals.png
)
endif()

@ -6,9 +6,32 @@
if(GRFCODEC_FOUND)
include(CreateGrfCommand)
create_grf_command(
# We share some files with 'openttd' grf
${CMAKE_CURRENT_SOURCE_DIR}/../openttd/airports.png
${CMAKE_CURRENT_SOURCE_DIR}/../openttd/canals.png
${CMAKE_CURRENT_SOURCE_DIR}/../openttd/chars.png
NFO_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/rivers/arctic.nfo
${CMAKE_CURRENT_SOURCE_DIR}/rivers/rapids.nfo
${CMAKE_CURRENT_SOURCE_DIR}/rivers/temperate.nfo
${CMAKE_CURRENT_SOURCE_DIR}/rivers/toyland.nfo
${CMAKE_CURRENT_SOURCE_DIR}/rivers/tropic.nfo
${CMAKE_CURRENT_SOURCE_DIR}/airports_orig_extra.nfo
${CMAKE_CURRENT_SOURCE_DIR}/canals_extra.nfo
${CMAKE_CURRENT_SOURCE_DIR}/chars_orig_extra.nfo
${CMAKE_CURRENT_SOURCE_DIR}/fix_graphics.nfo
${CMAKE_CURRENT_SOURCE_DIR}/fix_gui_icons.nfo
${CMAKE_CURRENT_SOURCE_DIR}/orig_extra.nfo
${CMAKE_CURRENT_SOURCE_DIR}/shore.nfo
PNG_SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/rivers/arctic_brown.png
${CMAKE_CURRENT_SOURCE_DIR}/rivers/arctic_snowy.png
${CMAKE_CURRENT_SOURCE_DIR}/rivers/rapids.png
${CMAKE_CURRENT_SOURCE_DIR}/rivers/rapids_shading.png
${CMAKE_CURRENT_SOURCE_DIR}/rivers/temperate.png
${CMAKE_CURRENT_SOURCE_DIR}/rivers/toyland.png
${CMAKE_CURRENT_SOURCE_DIR}/rivers/tropic_desert.png
${CMAKE_CURRENT_SOURCE_DIR}/rivers/tropic_forest.png
${CMAKE_CURRENT_SOURCE_DIR}/fix_graphics.png
${CMAKE_CURRENT_SOURCE_DIR}/fix_gui_icons.png
${CMAKE_CURRENT_SOURCE_DIR}/shore.png
# We share some files with 'openttd' grf
${CMAKE_CURRENT_SOURCE_DIR}/../openttd/airports.png
${CMAKE_CURRENT_SOURCE_DIR}/../openttd/canals.png
${CMAKE_CURRENT_SOURCE_DIR}/../openttd/chars.png
)
endif()

@ -0,0 +1,24 @@
# Copy the regression configuration in a special folder, so all autogenerated
# folders end up in the same place after running regression.
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/regression.cfg
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_SOURCE_DIR}/regression.cfg
${CMAKE_CURRENT_BINARY_DIR}/regression.cfg
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/regression.cfg
COMMENT "Copying regression.cfg regression file"
)
# Create a new target which copies all regression files
# Subdirectory targets will add themselves as dependencies
add_custom_target(regression_files
ALL # this is needed because 'make test' doesn't resolve dependencies, and otherwise this is never executed
DEPENDS
${CMAKE_BINARY_DIR}/regression/regression.cfg
)
# Create a new target which runs the regression
# Subdirectory targets will add themselves as dependencies
add_custom_target(regression)
add_subdirectory(regression)
add_subdirectory(stationlist)

@ -0,0 +1,8 @@
include(CreateRegression)
create_regression(
${CMAKE_CURRENT_SOURCE_DIR}/info.nut
${CMAKE_CURRENT_SOURCE_DIR}/main.nut
${CMAKE_CURRENT_SOURCE_DIR}/require.nut
${CMAKE_CURRENT_SOURCE_DIR}/result.txt
${CMAKE_CURRENT_SOURCE_DIR}/test.sav
)

@ -0,0 +1,7 @@
include(CreateRegression)
create_regression(
${CMAKE_CURRENT_SOURCE_DIR}/info.nut
${CMAKE_CURRENT_SOURCE_DIR}/main.nut
${CMAKE_CURRENT_SOURCE_DIR}/result.txt
${CMAKE_CURRENT_SOURCE_DIR}/test.sav
)

@ -64,7 +64,7 @@
cur_company.Restore();
InvalidateWindowData(WC_SCRIPT_DEBUG, 0, -1);
InvalidateWindowClassesData(WC_SCRIPT_DEBUG, -1);
return;
}
@ -116,7 +116,7 @@
cur_company.Restore();
InvalidateWindowData(WC_SCRIPT_DEBUG, 0, -1);
InvalidateWindowClassesData(WC_SCRIPT_DEBUG, -1);
CloseWindowById(WC_SCRIPT_SETTINGS, company);
}

@ -53,24 +53,28 @@ static const NWidgetPart _nested_ai_config_widgets[] = {
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_MOVE_DOWN), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_AI_CONFIG_MOVE_DOWN, STR_AI_CONFIG_MOVE_DOWN_TOOLTIP),
EndContainer(),
EndContainer(),
NWidget(WWT_FRAME, COLOUR_MAUVE), SetDataTip(STR_AI_CONFIG_AI, STR_NULL),
NWidget(WWT_FRAME, COLOUR_MAUVE), SetDataTip(STR_AI_CONFIG_AI, STR_NULL), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_AIC_LIST), SetMinimalSize(288, 112), SetFill(1, 0), SetMatrixDataTip(1, 8, STR_AI_CONFIG_AILIST_TOOLTIP), SetScrollbar(WID_AIC_SCROLLBAR),
NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_AIC_SCROLLBAR),
EndContainer(),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CONFIGURE), SetFill(1, 0), SetDataTip(STR_AI_CONFIG_CONFIGURE, STR_AI_CONFIG_CONFIGURE_TOOLTIP),
EndContainer(),
NWidget(NWID_VERTICAL, NC_EQUALSIZE),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CHANGE), SetFill(1, 1), SetMinimalSize(93, 0), SetDataTip(STR_AI_CONFIG_CHANGE_AI, STR_AI_CONFIG_CHANGE_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CONFIGURE), SetFill(1, 1), SetMinimalSize(93, 0), SetDataTip(STR_AI_CONFIG_CONFIGURE, STR_AI_CONFIG_CONFIGURE_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_TEXTFILE + TFT_README), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_README, STR_NULL),
NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0),
NWidget(NWID_VERTICAL, NC_EQUALSIZE),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CHANGE), SetFill(1, 1), SetDataTip(STR_AI_CONFIG_CHANGE_AI, STR_AI_CONFIG_CHANGE_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CONTENT_DOWNLOAD), SetFill(1, 1), SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT),
EndContainer(),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CLOSE), SetFill(1, 1), SetMinimalSize(93, 0), SetDataTip(STR_AI_SETTINGS_CLOSE, STR_NULL),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_TEXTFILE + TFT_CHANGELOG), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_NULL),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_TEXTFILE + TFT_LICENSE), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_LICENCE, STR_NULL),
NWidget(NWID_VERTICAL, NC_EQUALSIZE),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_OPEN_URL), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_CONTENT_OPEN_URL, STR_CONTENT_OPEN_URL_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_TEXTFILE + TFT_README), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_README, STR_TEXTFILE_VIEW_README_TOOLTIP),
EndContainer(),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_TEXTFILE + TFT_CHANGELOG), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_TEXTFILE + TFT_LICENSE), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_LICENCE, STR_TEXTFILE_VIEW_LICENCE_TOOLTIP),
EndContainer(),
EndContainer(),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CONTENT_DOWNLOAD), SetFill(1, 1), SetMinimalSize(279, 0), SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT),
EndContainer(),
EndContainer(),
EndContainer(),
@ -246,6 +250,13 @@ struct AIConfigWindow : public Window {
}
break;
case WID_AIC_OPEN_URL: {
const AIConfig *config = AIConfig::GetConfig(this->selected_slot);
if (this->selected_slot == INVALID_COMPANY || config == nullptr || config->GetInfo() == nullptr) return;
OpenBrowser(config->GetInfo()->GetURL());
break;
}
case WID_AIC_CHANGE: // choose other AI
ShowScriptListWindow((CompanyID)this->selected_slot, _ctrl_pressed);
break;
@ -254,10 +265,6 @@ struct AIConfigWindow : public Window {
ShowScriptSettingsWindow((CompanyID)this->selected_slot);
break;
case WID_AIC_CLOSE:
this->Close();
break;
case WID_AIC_CONTENT_DOWNLOAD:
if (!_network_available) {
ShowErrorMessage(STR_NETWORK_ERROR_NOTAVAILABLE, INVALID_STRING_ID, WL_ERROR);
@ -281,17 +288,20 @@ struct AIConfigWindow : public Window {
if (!gui_scope) return;
AIConfig *config = AIConfig::GetConfig(this->selected_slot);
this->SetWidgetDisabledState(WID_AIC_DECREASE_NUMBER, GetGameSettings().difficulty.max_no_competitors == 0);
this->SetWidgetDisabledState(WID_AIC_INCREASE_NUMBER, GetGameSettings().difficulty.max_no_competitors == MAX_COMPANIES - 1);
this->SetWidgetDisabledState(WID_AIC_DECREASE_INTERVAL, GetGameSettings().difficulty.competitors_interval == MIN_COMPETITORS_INTERVAL);
this->SetWidgetDisabledState(WID_AIC_INCREASE_INTERVAL, GetGameSettings().difficulty.competitors_interval == MAX_COMPETITORS_INTERVAL);
this->SetWidgetDisabledState(WID_AIC_CHANGE, this->selected_slot == INVALID_COMPANY);
this->SetWidgetDisabledState(WID_AIC_CONFIGURE, this->selected_slot == INVALID_COMPANY || AIConfig::GetConfig(this->selected_slot)->GetConfigList()->empty());
this->SetWidgetDisabledState(WID_AIC_CONFIGURE, this->selected_slot == INVALID_COMPANY || config->GetConfigList()->empty());
this->SetWidgetDisabledState(WID_AIC_MOVE_UP, this->selected_slot == INVALID_COMPANY || !IsEditable((CompanyID)(this->selected_slot - 1)));
this->SetWidgetDisabledState(WID_AIC_MOVE_DOWN, this->selected_slot == INVALID_COMPANY || !IsEditable((CompanyID)(this->selected_slot + 1)));
this->SetWidgetDisabledState(WID_AIC_OPEN_URL, this->selected_slot == INVALID_COMPANY || config->GetInfo() == nullptr || config->GetInfo()->GetURL().empty());
for (TextfileType tft = TFT_CONTENT_BEGIN; tft < TFT_CONTENT_END; tft++) {
this->SetWidgetDisabledState(WID_AIC_TEXTFILE + tft, this->selected_slot == INVALID_COMPANY || (AIConfig::GetConfig(this->selected_slot)->GetTextfile(tft, this->selected_slot) == nullptr));
this->SetWidgetDisabledState(WID_AIC_TEXTFILE + tft, this->selected_slot == INVALID_COMPANY || (config->GetTextfile(tft, this->selected_slot) == nullptr));
}
}
};

@ -59,6 +59,7 @@ struct BaseSet {
static const char * const *file_names;
std::string name; ///< The name of the base set
std::string url; ///< URL for information about the base set
TranslatedStrings description; ///< Description of the base set
uint32 shortname; ///< Four letter short variant of the name
uint32 version; ///< The version of this base set

@ -54,6 +54,9 @@ bool BaseSet<T, Tnum_files, Tsearch_in_tars>::FillSetDetails(const IniFile &ini,
fetch_metadata("description");
this->description[std::string{}] = *item->value;
item = metadata->GetItem("url");
if (item != nullptr) this->url = *item->value;
/* Add the translations of the descriptions too. */
for (const IniItem &titem : metadata->items) {
if (titem.name.compare(0, 12, "description.") != 0) continue;

@ -45,7 +45,7 @@ public:
template <BlitterMode mode, Blitter_32bppSSE_Base::ReadMode read_mode, Blitter_32bppSSE_Base::BlockType bt_last, bool translucent, bool animated>
void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom);
void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override;
Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) override {
Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) override {
return Blitter_32bppSSE_Base::Encode(sprite, allocator);
}
const char *GetName() override { return "32bpp-sse4-anim"; }

@ -282,7 +282,7 @@ void Blitter_32bppOptimized::Draw(Blitter::BlitterParams *bp, BlitterMode mode,
this->Draw<false>(bp, mode, zoom);
}
template <bool Tpal_to_rgb> Sprite *Blitter_32bppOptimized::EncodeInternal(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
template <bool Tpal_to_rgb> Sprite *Blitter_32bppOptimized::EncodeInternal(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator)
{
/* streams of pixels (a, r, g, b channels)
*
@ -304,7 +304,7 @@ template <bool Tpal_to_rgb> Sprite *Blitter_32bppOptimized::EncodeInternal(const
ZoomLevel zoom_max;
uint8 missing_zoom_levels = 0;
if (sprite->type == SpriteType::Font) {
if (sprite[ZOOM_LVL_NORMAL].type == SpriteType::Font) {
zoom_min = ZOOM_LVL_NORMAL;
zoom_max = ZOOM_LVL_NORMAL;
} else {
@ -465,10 +465,10 @@ template <bool Tpal_to_rgb> Sprite *Blitter_32bppOptimized::EncodeInternal(const
missing_zoom_levels = UINT8_MAX;
}
dest_sprite->height = sprite->height;
dest_sprite->width = sprite->width;
dest_sprite->x_offs = sprite->x_offs;
dest_sprite->y_offs = sprite->y_offs;
dest_sprite->height = sprite[ZOOM_LVL_NORMAL].height;
dest_sprite->width = sprite[ZOOM_LVL_NORMAL].width;
dest_sprite->x_offs = sprite[ZOOM_LVL_NORMAL].x_offs;
dest_sprite->y_offs = sprite[ZOOM_LVL_NORMAL].y_offs;
dest_sprite->next = nullptr;
dest_sprite->missing_zoom_levels = missing_zoom_levels;
@ -494,10 +494,10 @@ template <bool Tpal_to_rgb> Sprite *Blitter_32bppOptimized::EncodeInternal(const
return dest_sprite;
}
template Sprite *Blitter_32bppOptimized::EncodeInternal<true>(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
template Sprite *Blitter_32bppOptimized::EncodeInternal<false>(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
template Sprite *Blitter_32bppOptimized::EncodeInternal<true>(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator);
template Sprite *Blitter_32bppOptimized::EncodeInternal<false>(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator);
Sprite *Blitter_32bppOptimized::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
Sprite *Blitter_32bppOptimized::Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator)
{
return this->EncodeInternal<true>(sprite, allocator);
}

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

@ -128,22 +128,22 @@ void Blitter_32bppSimple::DrawColourMappingRect(void *dst, int width, int height
DEBUG(misc, 0, "32bpp blitter doesn't know how to draw this colour table ('%d')", pal);
}
Sprite *Blitter_32bppSimple::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
Sprite *Blitter_32bppSimple::Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator)
{
Blitter_32bppSimple::Pixel *dst;
Sprite *dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + (size_t)sprite->height * (size_t)sprite->width * sizeof(*dst));
Sprite *dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + (size_t)sprite[ZOOM_LVL_NORMAL].height * (size_t)sprite[ZOOM_LVL_NORMAL].width * sizeof(*dst));
dest_sprite->height = sprite->height;
dest_sprite->width = sprite->width;
dest_sprite->x_offs = sprite->x_offs;
dest_sprite->y_offs = sprite->y_offs;
dest_sprite->height = sprite[ZOOM_LVL_NORMAL].height;
dest_sprite->width = sprite[ZOOM_LVL_NORMAL].width;
dest_sprite->x_offs = sprite[ZOOM_LVL_NORMAL].x_offs;
dest_sprite->y_offs = sprite[ZOOM_LVL_NORMAL].y_offs;
dest_sprite->next = nullptr;
dest_sprite->missing_zoom_levels = 0;
dst = (Blitter_32bppSimple::Pixel *)dest_sprite->data;
SpriteLoader::CommonPixel *src = (SpriteLoader::CommonPixel *)sprite->data;
SpriteLoader::CommonPixel *src = (SpriteLoader::CommonPixel *)sprite[ZOOM_LVL_NORMAL].data;
for (int i = 0; i < sprite->height * sprite->width; i++) {
for (int i = 0; i < sprite[ZOOM_LVL_NORMAL].height * sprite[ZOOM_LVL_NORMAL].width; i++) {
if (src->m == 0) {
dst[i].r = src->r;
dst[i].g = src->g;

@ -26,7 +26,7 @@ class Blitter_32bppSimple : public Blitter_32bppBase {
public:
void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override;
void DrawColourMappingRect(void *dst, int width, int height, PaletteID pal) override;
Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) override;
Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) override;
const char *GetName() override { return "32bpp-simple"; }
};

@ -20,7 +20,7 @@
/** Instantiation of the SSE2 32bpp blitter factory. */
static FBlitter_32bppSSE2 iFBlitter_32bppSSE2;
Sprite *Blitter_32bppSSE_Base::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
Sprite *Blitter_32bppSSE_Base::Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator)
{
/* First uint32 of a line = the number of transparent pixels from the left.
* Second uint32 of a line = the number of transparent pixels from the right.
@ -29,7 +29,7 @@ Sprite *Blitter_32bppSSE_Base::Encode(const SpriteLoader::Sprite *sprite, Alloca
ZoomLevel zoom_min = ZOOM_LVL_NORMAL;
ZoomLevel zoom_max = ZOOM_LVL_NORMAL;
uint8 missing_zoom_levels = 0;
if (sprite->type != SpriteType::Font) {
if (sprite[ZOOM_LVL_NORMAL].type != SpriteType::Font) {
zoom_min = _settings_client.gui.zoom_min;
zoom_max = (ZoomLevel) std::min(_settings_client.gui.zoom_max, ZOOM_LVL_DRAW_SPR);
if (zoom_max == zoom_min) zoom_max = ZOOM_LVL_DRAW_SPR;
@ -62,10 +62,10 @@ Sprite *Blitter_32bppSSE_Base::Encode(const SpriteLoader::Sprite *sprite, Alloca
}
Sprite *dst_sprite = (Sprite *) allocator(sizeof(Sprite) + sizeof(SpriteData) + all_sprites_size);
dst_sprite->height = sprite->height;
dst_sprite->width = sprite->width;
dst_sprite->x_offs = sprite->x_offs;
dst_sprite->y_offs = sprite->y_offs;
dst_sprite->height = sprite[ZOOM_LVL_NORMAL].height;
dst_sprite->width = sprite[ZOOM_LVL_NORMAL].width;
dst_sprite->x_offs = sprite[ZOOM_LVL_NORMAL].x_offs;
dst_sprite->y_offs = sprite[ZOOM_LVL_NORMAL].y_offs;
dst_sprite->next = nullptr;
dst_sprite->missing_zoom_levels = missing_zoom_levels;
memcpy(dst_sprite->data, &sd, sizeof(SpriteData));

@ -64,7 +64,7 @@ public:
byte data[]; ///< Data, all zoomlevels.
};
Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator);
Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator);
};
/** The SSE2 32 bpp blitter (without palette animation). */
@ -79,7 +79,7 @@ public:
template <BlitterMode mode, Blitter_32bppSSE_Base::ReadMode read_mode, Blitter_32bppSSE_Base::BlockType bt_last, bool translucent>
void Draw(const Blitter::BlitterParams *bp, ZoomLevel zoom);
Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) override {
Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) override {
return Blitter_32bppSSE_Base::Encode(sprite, allocator);
}

@ -445,7 +445,7 @@ void Blitter_40bppAnim::DrawColourMappingRect(void *dst, int width, int height,
}
}
Sprite *Blitter_40bppAnim::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
Sprite *Blitter_40bppAnim::Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator)
{
return this->EncodeInternal<false>(sprite, allocator);
}

@ -31,7 +31,7 @@ public:
void ScrollBuffer(void *video, int left, int top, int width, int height, int scroll_x, int scroll_y) override;
void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override;
void DrawColourMappingRect(void *dst, int width, int height, PaletteID pal) override;
Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) override;
Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) override;
size_t BufferSize(uint width, uint height) override;
Blitter::PaletteAnimation UsePaletteAnimation() override;
bool NeedsAnimationBuffer() override;

@ -120,7 +120,7 @@ void Blitter_8bppOptimized::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Z
}
}
Sprite *Blitter_8bppOptimized::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
Sprite *Blitter_8bppOptimized::Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator)
{
/* Make memory for all zoom-levels */
uint memory = sizeof(SpriteData);
@ -128,7 +128,7 @@ Sprite *Blitter_8bppOptimized::Encode(const SpriteLoader::Sprite *sprite, Alloca
ZoomLevel zoom_min;
ZoomLevel zoom_max;
if (sprite->type == SpriteType::Font) {
if (sprite[ZOOM_LVL_NORMAL].type == SpriteType::Font) {
zoom_min = ZOOM_LVL_NORMAL;
zoom_max = ZOOM_LVL_NORMAL;
} else {
@ -221,10 +221,10 @@ Sprite *Blitter_8bppOptimized::Encode(const SpriteLoader::Sprite *sprite, Alloca
/* Allocate the exact amount of memory we need */
Sprite *dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + size);
dest_sprite->height = sprite->height;
dest_sprite->width = sprite->width;
dest_sprite->x_offs = sprite->x_offs;
dest_sprite->y_offs = sprite->y_offs;
dest_sprite->height = sprite[ZOOM_LVL_NORMAL].height;
dest_sprite->width = sprite[ZOOM_LVL_NORMAL].width;
dest_sprite->x_offs = sprite[ZOOM_LVL_NORMAL].x_offs;
dest_sprite->y_offs = sprite[ZOOM_LVL_NORMAL].y_offs;
dest_sprite->next = nullptr;
dest_sprite->missing_zoom_levels = 0;
memcpy(dest_sprite->data, temp_dst, size);

@ -23,7 +23,7 @@ public:
};
void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override;
Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) override;
Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) override;
const char *GetName() override { return "8bpp-optimized"; }
};

@ -61,21 +61,21 @@ void Blitter_8bppSimple::Draw(Blitter::BlitterParams *bp, BlitterMode mode, Zoom
}
}
Sprite *Blitter_8bppSimple::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
Sprite *Blitter_8bppSimple::Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator)
{
Sprite *dest_sprite;
dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + (size_t)sprite->height * (size_t)sprite->width);
dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite) + (size_t)sprite[ZOOM_LVL_NORMAL].height * (size_t)sprite[ZOOM_LVL_NORMAL].width);
dest_sprite->height = sprite->height;
dest_sprite->width = sprite->width;
dest_sprite->x_offs = sprite->x_offs;
dest_sprite->y_offs = sprite->y_offs;
dest_sprite->height = sprite[ZOOM_LVL_NORMAL].height;
dest_sprite->width = sprite[ZOOM_LVL_NORMAL].width;
dest_sprite->x_offs = sprite[ZOOM_LVL_NORMAL].x_offs;
dest_sprite->y_offs = sprite[ZOOM_LVL_NORMAL].y_offs;
dest_sprite->next = nullptr;
dest_sprite->missing_zoom_levels = 0;
/* Copy over only the 'remap' channel, as that is what we care about in 8bpp */
for (int i = 0; i < sprite->height * sprite->width; i++) {
dest_sprite->data[i] = sprite->data[i].m;
for (int i = 0; i < sprite[ZOOM_LVL_NORMAL].height * sprite[ZOOM_LVL_NORMAL].width; i++) {
dest_sprite->data[i] = sprite[ZOOM_LVL_NORMAL].data[i].m;
}
return dest_sprite;

@ -17,7 +17,7 @@
class Blitter_8bppSimple FINAL : public Blitter_8bppBase {
public:
void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override;
Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) override;
Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) override;
const char *GetName() override { return "8bpp-simple"; }
};

@ -15,15 +15,15 @@
/** Instantiation of the null blitter factory. */
static FBlitter_Null iFBlitter_Null;
Sprite *Blitter_Null::Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)
Sprite *Blitter_Null::Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator)
{
Sprite *dest_sprite;
dest_sprite = (Sprite *)allocator(sizeof(*dest_sprite));
dest_sprite->height = sprite->height;
dest_sprite->width = sprite->width;
dest_sprite->x_offs = sprite->x_offs;
dest_sprite->y_offs = sprite->y_offs;
dest_sprite->height = sprite[ZOOM_LVL_NORMAL].height;
dest_sprite->width = sprite[ZOOM_LVL_NORMAL].width;
dest_sprite->x_offs = sprite[ZOOM_LVL_NORMAL].x_offs;
dest_sprite->y_offs = sprite[ZOOM_LVL_NORMAL].y_offs;
dest_sprite->next = nullptr;
dest_sprite->missing_zoom_levels = 0;

@ -23,7 +23,7 @@ public:
void Draw(Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override {};
void DrawColourMappingRect(void *dst, int width, int height, PaletteID pal) override {};
Sprite *Encode(const SpriteLoader::Sprite *sprite, AllocatorProc *allocator) override;
Sprite *Encode(const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator) override;
void *MoveTo(void *video, int x, int y) override { return nullptr; };
void SetPixel(void *video, int x, int y, uint8 colour) override {};
void SetPixel32(void *video, int x, int y, uint8 colour, uint32 colour32) override {};

@ -249,7 +249,7 @@ public:
for (int i = this->vscroll->GetPosition(); this->vscroll->IsVisible(i) && i < (int)this->bridges.size(); i++) {
const BuildBridgeData &bridge_data = this->bridges.at(i);
const BridgeSpec *b = bridge_data.spec;
DrawSpriteIgnorePadding(b->sprite, b->pal, tr.WithWidth(this->icon_width, rtl), false, SA_HOR_CENTER | SA_BOTTOM);
DrawSpriteIgnorePadding(b->sprite, b->pal, tr.WithWidth(this->icon_width, rtl), SA_HOR_CENTER | SA_BOTTOM);
DrawStringMultiLine(tr.Indent(this->icon_width + WidgetDimensions::scaled.hsep_normal, rtl), GetBridgeSelectString(bridge_data));
tr = tr.Translate(0, this->resize.step_height);
}

@ -1293,7 +1293,7 @@ void DrawEngineList(VehicleType type, const Rect &r, const GUIEngineList &eng_li
}
if (has_variants) {
Rect fr = ir.Indent(indent, rtl).WithWidth(circle_width, rtl);
DrawSpriteIgnorePadding(is_folded ? SPR_CIRCLE_FOLDED : SPR_CIRCLE_UNFOLDED, PAL_NONE, {fr.left, y, fr.right, y + ir.Height() - 1}, false, SA_CENTER);
DrawSpriteIgnorePadding(is_folded ? SPR_CIRCLE_FOLDED : SPR_CIRCLE_UNFOLDED, PAL_NONE, {fr.left, y, fr.right, y + ir.Height() - 1}, SA_CENTER);
}
if (indent > 0) {
/* Draw tree lines */
@ -1851,8 +1851,9 @@ struct BuildVehicleWindow : BuildVehicleWindowBase {
}
/* Add cargos */
Dimension d = GetLargestCargoIconSize();
for (const CargoSpec *cs : _sorted_standard_cargo_specs) {
list.push_back(std::make_unique<DropDownListStringItem>(cs->name, cs->Index(), false));
list.push_back(std::make_unique<DropDownListIconItem>(d, cs->GetCargoIcon(), PAL_NONE, cs->name, cs->Index(), false));
}
return list;

@ -9,6 +9,8 @@
#include "stdafx.h"
#include "cargotype.h"
#include "core/geometry_func.hpp"
#include "gfx_func.h"
#include "newgrf_cargo.h"
#include "string_func.h"
#include "strings_func.h"
@ -70,6 +72,19 @@ void SetupCargoForClimate(LandscapeID l)
std::fill(insert, std::end(CargoSpec::array), CargoSpec{});
}
/**
* Get dimensions of largest cargo icon.
* @return Dimensions of largest cargo icon.
*/
Dimension GetLargestCargoIconSize()
{
Dimension size = {0, 0};
for (const CargoSpec *cs : _sorted_cargo_specs) {
size = maxdim(size, GetSpriteSize(cs->GetCargoIcon()));
}
return size;
}
/**
* Get the cargo ID of a default cargo, if present.
* @param l Landscape
@ -179,7 +194,7 @@ static bool CargoSpecClassSorter(const CargoSpec * const &a, const CargoSpec * c
void InitializeSortedCargoSpecs()
{
_sorted_cargo_specs.clear();
/* Add each cargo spec to the list. */
/* Add each cargo spec to the list, and determine the largest cargo icon size. */
for (const CargoSpec *cargo : CargoSpec::Iterate()) {
_sorted_cargo_specs.push_back(cargo);
}

@ -195,6 +195,7 @@ void SetupCargoForClimate(LandscapeID l);
CargoID GetCargoIDByLabel(CargoLabel cl);
CargoID GetCargoIDByBitnum(uint8 bitnum);
CargoID GetDefaultCargoID(LandscapeID l, CargoType ct);
Dimension GetLargestCargoIconSize();
void InitializeSortedCargoSpecs();
extern std::array<uint8_t, NUM_CARGO> _sorted_cargo_types;

@ -621,36 +621,15 @@ static const LiveryClass _livery_class[LS_END] = {
LC_ROAD, LC_ROAD,
};
class DropDownListColourItem : public DropDownListStringItem {
/**
* Colour selection list item, with icon and string components.
* @tparam TSprite Recolourable sprite to draw as icon.
*/
template <SpriteID TSprite = SPR_SQUARE>
class DropDownListColourItem : public DropDownIcon<DropDownString<DropDownListItem>> {
public:
DropDownListColourItem(int result, bool masked) : DropDownListStringItem(result >= COLOUR_END ? STR_COLOUR_DEFAULT : _colour_dropdown[result], result, masked) {}
uint Width() const override
{
return ScaleGUITrad(28) + WidgetDimensions::scaled.hsep_normal + GetStringBoundingBox(this->String()).width + WidgetDimensions::scaled.dropdowntext.Horizontal();
}
uint Height() const override
{
return std::max(GetCharacterHeight(FS_NORMAL), ScaleGUITrad(12) + WidgetDimensions::scaled.vsep_normal);
}
bool Selectable() const override
{
return true;
}
void Draw(const Rect &r, bool sel, Colours) const override
DropDownListColourItem(int colour, bool masked) : DropDownIcon<DropDownString<DropDownListItem>>(TSprite, PALETTE_RECOLOUR_START + (colour % COLOUR_END), colour < COLOUR_END ? _colour_dropdown[colour] : STR_COLOUR_DEFAULT, colour, masked)
{
bool rtl = _current_text_dir == TD_RTL;
int icon_y = CenterBounds(r.top, r.bottom, 0);
int text_y = CenterBounds(r.top, r.bottom, GetCharacterHeight(FS_NORMAL));
Rect tr = r.Shrink(WidgetDimensions::scaled.dropdowntext);
DrawSprite(SPR_VEH_BUS_SIDE_VIEW, PALETTE_RECOLOUR_START + (this->result % COLOUR_END),
rtl ? tr.right - ScaleGUITrad(14) : tr.left + ScaleGUITrad(14),
icon_y);
tr = tr.Indent(ScaleGUITrad(28) + WidgetDimensions::scaled.hsep_normal, rtl);
DrawString(tr.left, tr.right, text_y, this->String(), sel ? TC_WHITE : TC_BLACK);
}
};
@ -706,10 +685,10 @@ private:
if (default_livery != nullptr) {
/* Add COLOUR_END to put the colour out of range, but also allow us to show what the default is */
default_col = (primary ? default_livery->colour1 : default_livery->colour2) + COLOUR_END;
list.push_back(std::make_unique<DropDownListColourItem>(default_col, false));
list.push_back(std::make_unique<DropDownListColourItem<>>(default_col, false));
}
for (uint i = 0; i < lengthof(_colour_dropdown); i++) {
list.push_back(std::make_unique<DropDownListColourItem>(i, HasBit(used_colours, i)));
list.push_back(std::make_unique<DropDownListColourItem<>>(i, HasBit(used_colours, i)));
}
byte sel = (default_livery == nullptr || HasBit(livery->in_use, primary ? 0 : 1)) ? (primary ? livery->colour1 : livery->colour2) : default_col;
@ -969,9 +948,10 @@ public:
y += this->line_height;
};
const Company *c = Company::Get((CompanyID)this->window_number);
if (livery_class < LC_GROUP_RAIL) {
int pos = this->vscroll->GetPosition();
const Company *c = Company::Get((CompanyID)this->window_number);
for (LiveryScheme scheme = LS_DEFAULT; scheme < LS_END; scheme++) {
if (_livery_class[scheme] == this->livery_class && HasBit(_loaded_newgrf_features.used_liveries, scheme)) {
if (pos-- > 0) continue;
@ -982,8 +962,9 @@ public:
uint max = static_cast<uint>(std::min<size_t>(this->vscroll->GetPosition() + this->vscroll->GetCapacity(), this->groups.size()));
for (uint i = this->vscroll->GetPosition(); i < max; ++i) {
const Group *g = this->groups[i];
const bool livery_set = HasBit(g->livery.in_use, 0);
SetDParam(0, g->index);
draw_livery(STR_GROUP_NAME, g->livery, this->sel == g->index, false, this->indents[i] * WidgetDimensions::scaled.hsep_indent);
draw_livery(STR_GROUP_NAME, livery_set ? g->livery : c->livery[LS_DEFAULT], this->sel == g->index, livery_set, this->indents[i] * WidgetDimensions::scaled.hsep_indent);
}
}
}
@ -1511,12 +1492,9 @@ public:
*size = maxdim(*size, GetStringBoundingBox(STR_FACE_MOUSTACHE));
break;
case WID_SCMF_FACE: {
Dimension face_size = GetScaledSpriteSize(SPR_GRADIENT);
size->width = std::max(size->width, face_size.width);
size->height = std::max(size->height, face_size.height);
case WID_SCMF_FACE:
*size = maxdim(*size, GetScaledSpriteSize(SPR_GRADIENT));
break;
}
case WID_SCMF_HAS_MOUSTACHE_EARRING:
case WID_SCMF_HAS_GLASSES:
@ -2362,69 +2340,38 @@ struct CompanyWindow : Window
bool reinit = false;
/* Button bar selection. */
int plane = local ? CWP_BUTTONS_LOCAL : CWP_BUTTONS_OTHER;
NWidgetStacked *wi = this->GetWidget<NWidgetStacked>(WID_C_SELECT_BUTTONS);
if (plane != wi->shown_plane) {
wi->SetDisplayedPlane(plane);
this->InvalidateData();
reinit = true;
}
reinit |= this->GetWidget<NWidgetStacked>(WID_C_SELECT_BUTTONS)->SetDisplayedPlane(local ? CWP_BUTTONS_LOCAL : CWP_BUTTONS_OTHER);
/* Build HQ button handling. */
plane = (local && c->location_of_HQ == INVALID_TILE) ? CWP_VB_BUILD : CWP_VB_VIEW;
wi = this->GetWidget<NWidgetStacked>(WID_C_SELECT_VIEW_BUILD_HQ);
if (plane != wi->shown_plane) {
wi->SetDisplayedPlane(plane);
reinit = true;
}
reinit |= this->GetWidget<NWidgetStacked>(WID_C_SELECT_VIEW_BUILD_HQ)->SetDisplayedPlane((local && c->location_of_HQ == INVALID_TILE) ? CWP_VB_BUILD : CWP_VB_VIEW);
this->SetWidgetDisabledState(WID_C_VIEW_HQ, c->location_of_HQ == INVALID_TILE);
/* Enable/disable 'Relocate HQ' button. */
plane = (!local || c->location_of_HQ == INVALID_TILE) ? CWP_RELOCATE_HIDE : CWP_RELOCATE_SHOW;
wi = this->GetWidget<NWidgetStacked>(WID_C_SELECT_RELOCATE);
if (plane != wi->shown_plane) {
wi->SetDisplayedPlane(plane);
reinit = true;
}
reinit |= this->GetWidget<NWidgetStacked>(WID_C_SELECT_RELOCATE)->SetDisplayedPlane((!local || c->location_of_HQ == INVALID_TILE) ? CWP_RELOCATE_HIDE : CWP_RELOCATE_SHOW);
/* Owners of company */
plane = SZSP_HORIZONTAL;
for (uint i = 0; i < lengthof(c->share_owners); i++) {
if (c->share_owners[i] != INVALID_COMPANY) {
plane = 0;
break;
{
int plane = SZSP_HORIZONTAL;
for (uint i = 0; i < lengthof(c->share_owners); i++) {
if (c->share_owners[i] != INVALID_COMPANY) {
plane = 0;
break;
}
}
}
wi = this->GetWidget<NWidgetStacked>(WID_C_SELECT_DESC_OWNERS);
if (plane != wi->shown_plane) {
wi->SetDisplayedPlane(plane);
reinit = true;
reinit |= this->GetWidget<NWidgetStacked>(WID_C_SELECT_DESC_OWNERS)->SetDisplayedPlane(plane);
}
/* Enable/disable 'Give money' button. */
plane = ((local || (_local_company == COMPANY_SPECTATOR)) ? SZSP_NONE : 0);
wi = this->GetWidget<NWidgetStacked>(WID_C_SELECT_GIVE_MONEY);
if (plane != wi->shown_plane) {
wi->SetDisplayedPlane(plane);
reinit = true;
}
reinit |= this->GetWidget<NWidgetStacked>(WID_C_SELECT_GIVE_MONEY)->SetDisplayedPlane((local || _local_company == COMPANY_SPECTATOR || !_settings_game.economy.give_money) ? SZSP_NONE : 0);
/* Enable/disable 'Hostile Takeover' button. */
plane = ((local || _local_company == COMPANY_SPECTATOR || !c->is_ai || _networking || _settings_game.economy.allow_shares) ? SZSP_NONE : 0);
wi = this->GetWidget<NWidgetStacked>(WID_C_SELECT_HOSTILE_TAKEOVER);
if (plane != wi->shown_plane) {
wi->SetDisplayedPlane(plane);
reinit = true;
}
reinit |= this->GetWidget<NWidgetStacked>(WID_C_SELECT_HOSTILE_TAKEOVER)->SetDisplayedPlane((local || _local_company == COMPANY_SPECTATOR || !c->is_ai || _networking || _settings_game.economy.allow_shares) ? SZSP_NONE : 0);
/* Multiplayer buttons. */
plane = ((!_networking) ? (int)SZSP_NONE : (int)(local ? CWP_MP_C_PWD : CWP_MP_C_JOIN));
wi = this->GetWidget<NWidgetStacked>(WID_C_SELECT_MULTIPLAYER);
if (plane != wi->shown_plane) {
wi->SetDisplayedPlane(plane);
reinit = true;
}
this->SetWidgetDisabledState(WID_C_COMPANY_JOIN, c->is_ai);
reinit |= this->GetWidget<NWidgetStacked>(WID_C_SELECT_MULTIPLAYER)->SetDisplayedPlane((!_networking) ? (int)SZSP_NONE : (int)(local ? CWP_MP_C_PWD : CWP_MP_C_JOIN));
this->SetWidgetDisabledState(WID_C_COMPANY_JOIN, c->is_ai);
if (reinit) {
this->ReInit();
@ -2438,12 +2385,9 @@ struct CompanyWindow : Window
void UpdateWidgetSize(int widget, Dimension *size, [[maybe_unused]] const Dimension &padding, [[maybe_unused]] Dimension *fill, [[maybe_unused]] Dimension *resize) override
{
switch (widget) {
case WID_C_FACE: {
Dimension face_size = GetScaledSpriteSize(SPR_GRADIENT);
size->width = std::max(size->width, face_size.width);
size->height = std::max(size->height, face_size.height);
case WID_C_FACE:
*size = maxdim(*size, GetScaledSpriteSize(SPR_GRADIENT));
break;
}
case WID_C_DESC_COLOUR_SCHEME_EXAMPLE: {
Point offset;

@ -28,7 +28,8 @@ struct Dimension {
uint width;
uint height;
Dimension(uint w = 0, uint h = 0) : width(w), height(h) {};
constexpr Dimension() : width(0), height(0) {}
constexpr Dimension(uint w, uint h) : width(w), height(h) {}
bool operator< (const Dimension &other) const
{
@ -214,7 +215,7 @@ struct Rect {
/**
* Test if a point falls inside this Rect.
* @param pt the point to test.
* @return true iif the point falls inside the Rect.
* @return true iff the point falls inside the Rect.
*/
inline bool Contains(const Point &pt) const
{

@ -358,7 +358,7 @@ struct DepotWindow : Window {
DrawString(text, STR_DEPOT_NO_ENGINE);
} else {
Rect flag = r.WithWidth(this->flag_size.width, rtl).WithHeight(this->flag_size.height).Translate(0, diff_y);
DrawSpriteIgnorePadding((v->vehstatus & VS_STOPPED) ? SPR_FLAG_VEH_STOPPED : SPR_FLAG_VEH_RUNNING, PAL_NONE, flag, false, SA_CENTER);
DrawSpriteIgnorePadding((v->vehstatus & VS_STOPPED) ? SPR_FLAG_VEH_STOPPED : SPR_FLAG_VEH_RUNNING, PAL_NONE, flag, SA_CENTER);
SetDParam(0, v->unitnumber);
DrawString(text, STR_JUST_COMMA, (v->max_age - DAYS_IN_LEAP_YEAR) >= v->age ? TC_BLACK : TC_RED);

@ -549,10 +549,11 @@ public:
case WID_BDD_Y: {
Axis axis = widget == WID_BDD_X ? AXIS_X : AXIS_Y;
if (FillDrawPixelInfo(&tmp_dpi, r.left, r.top, r.Width(), r.Height())) {
Rect ir = r.Shrink(WidgetDimensions::scaled.bevel);
if (FillDrawPixelInfo(&tmp_dpi, ir)) {
AutoRestoreBackup dpi_backup(_cur_dpi, &tmp_dpi);
int x = (r.Width() - ScaleSpriteTrad(96)) / 2;
int y = (r.Height() - ScaleSpriteTrad(64)) / 2;
int x = (ir.Width() - ScaleSpriteTrad(96)) / 2;
int y = (ir.Height() - ScaleSpriteTrad(64)) / 2;
int x1 = ScaleSpriteTrad(63);
int x2 = ScaleSpriteTrad(31);
DrawShipDepotSprite(x + (axis == AXIS_X ? x1 : x2), y + ScaleSpriteTrad(17), axis, DEPOT_PART_NORTH);

@ -29,7 +29,7 @@ struct GUIEngineListItem {
bool operator == (const EngineID &other) const { return this->engine_id == other; }
};
typedef GUIList<GUIEngineListItem, CargoID> GUIEngineList;
typedef GUIList<GUIEngineListItem, std::nullptr_t, CargoID> GUIEngineList;
typedef bool EngList_SortTypeFunction(const GUIEngineListItem&, const GUIEngineListItem&); ///< argument type for #EngList_Sort.
void EngList_Sort(GUIEngineList &el, EngList_SortTypeFunction compare);

@ -8,6 +8,7 @@
/** @file error_gui.cpp GUI related to errors. */
#include "stdafx.h"
#include "core/geometry_func.hpp"
#include "core/mem_func.hpp"
#include "landscape.h"
#include "newgrf_text.h"
@ -196,12 +197,9 @@ public:
size->height = std::max(size->height, panel_height);
break;
}
case WID_EM_FACE: {
Dimension face_size = GetScaledSpriteSize(SPR_GRADIENT);
size->width = std::max(size->width, face_size.width);
size->height = std::max(size->height, face_size.height);
case WID_EM_FACE:
*size = maxdim(*size, GetScaledSpriteSize(SPR_GRADIENT));
break;
}
}
}

@ -237,7 +237,8 @@ const Sprite *FreeTypeFontCache::InternalGetGlyph(GlyphID key, bool aa)
if (width > MAX_GLYPH_DIM || height > MAX_GLYPH_DIM) usererror("Font glyph is too large");
/* FreeType has rendered the glyph, now we allocate a sprite and copy the image into it */
SpriteLoader::Sprite sprite;
SpriteLoader::SpriteCollection spritecollection;
SpriteLoader::Sprite &sprite = spritecollection[ZOOM_LVL_NORMAL];
sprite.AllocateData(ZOOM_LVL_NORMAL, static_cast<size_t>(width) * height);
sprite.type = SpriteType::Font;
sprite.colours = (aa ? SCC_PAL | SCC_ALPHA : SCC_PAL);
@ -268,7 +269,7 @@ const Sprite *FreeTypeFontCache::InternalGetGlyph(GlyphID key, bool aa)
}
GlyphEntry new_glyph;
new_glyph.sprite = BlitterFactory::GetCurrentBlitter()->Encode(&sprite, SimpleSpriteAlloc);
new_glyph.sprite = BlitterFactory::GetCurrentBlitter()->Encode(spritecollection, SimpleSpriteAlloc);
new_glyph.width = slot->advance.x >> 6;
this->SetGlyphPtr(key, &new_glyph);

@ -136,7 +136,7 @@ const Sprite *TrueTypeFontCache::GetGlyph(GlyphID key)
};
#undef CPSET
#undef CP___
static const SpriteLoader::Sprite builtin_questionmark = {
static const SpriteLoader::SpriteCollection builtin_questionmark = {{ {
10, // height
8, // width
0, // x_offs
@ -144,9 +144,9 @@ const Sprite *TrueTypeFontCache::GetGlyph(GlyphID key)
SpriteType::Font,
SCC_PAL,
builtin_questionmark_data
};
} }};
Sprite *spr = BlitterFactory::GetCurrentBlitter()->Encode(&builtin_questionmark, SimpleSpriteAlloc);
Sprite *spr = BlitterFactory::GetCurrentBlitter()->Encode(builtin_questionmark, SimpleSpriteAlloc);
assert(spr != nullptr);
GlyphEntry new_glyph;
new_glyph.sprite = spr;

@ -96,7 +96,7 @@
cur_company.Restore();
InvalidateWindowData(WC_SCRIPT_DEBUG, 0, -1);
InvalidateWindowClassesData(WC_SCRIPT_DEBUG, -1);
}
/* static */ void Game::Uninitialize(bool keepConfig)

@ -36,35 +36,38 @@ static const NWidgetPart _nested_gs_config_widgets[] = {
NWidget(WWT_DEFSIZEBOX, COLOUR_MAUVE),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_MAUVE, WID_GSC_BACKGROUND),
NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), SetPadding(WidgetDimensions::unscaled.sparse),
NWidget(NWID_VERTICAL), SetPIP(0, WidgetDimensions::unscaled.vsep_wide, 0), SetPadding(WidgetDimensions::unscaled.sparse_resize),
NWidget(WWT_FRAME, COLOUR_MAUVE), SetDataTip(STR_AI_CONFIG_GAMESCRIPT, STR_NULL), SetFill(1, 0), SetResize(1, 0),
NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_GSC_GSLIST), SetMinimalSize(288, 14), SetFill(1, 1), SetResize(1, 0), SetMatrixDataTip(1, 1, STR_AI_CONFIG_GAMELIST_TOOLTIP),
EndContainer(),
NWidget(WWT_FRAME, COLOUR_MAUVE), SetDataTip(STR_AI_CONFIG_GAMESCRIPT_PARAM, STR_NULL), SetFill(1, 1), SetResize(1, 0),
NWidget(WWT_FRAME, COLOUR_MAUVE), SetDataTip(STR_AI_CONFIG_GAMESCRIPT_PARAM, STR_NULL), SetFill(1, 1), SetResize(1, 0), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_GSC_SETTINGS), SetFill(1, 0), SetResize(1, 1), SetMinimalSize(188, 182), SetMatrixDataTip(1, 0, STR_NULL), SetScrollbar(WID_GSC_SCROLLBAR),
NWidget(NWID_VSCROLLBAR, COLOUR_MAUVE, WID_GSC_SCROLLBAR),
EndContainer(),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_RESET), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_AI_SETTINGS_RESET, STR_NULL),
EndContainer(),
NWidget(NWID_VERTICAL, NC_EQUALSIZE),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_CHANGE), SetFill(1, 1), SetResize(1, 0), SetMinimalSize(93, 0), SetDataTip(STR_AI_CONFIG_CHANGE_GAMESCRIPT, STR_AI_CONFIG_CHANGE_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_TEXTFILE + TFT_README), SetFill(1, 1), SetResize(1, 0), SetMinimalSize(93, 0), SetDataTip(STR_TEXTFILE_VIEW_README, STR_NULL),
NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_wide, 0),
NWidget(NWID_VERTICAL, NC_EQUALSIZE),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_CHANGE), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_AI_CONFIG_CHANGE_GAMESCRIPT, STR_AI_CONFIG_CHANGE_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_CONTENT_DOWNLOAD), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT),
EndContainer(),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_TEXTFILE + TFT_CHANGELOG), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_NULL),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_TEXTFILE + TFT_LICENSE), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_LICENCE, STR_NULL),
NWidget(NWID_VERTICAL, NC_EQUALSIZE),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_OPEN_URL), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_CONTENT_OPEN_URL, STR_CONTENT_OPEN_URL_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_TEXTFILE + TFT_README), SetFill(1, 1), SetResize(1, 0), SetMinimalSize(93, 0), SetDataTip(STR_TEXTFILE_VIEW_README, STR_TEXTFILE_VIEW_README_TOOLTIP),
EndContainer(),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_TEXTFILE + TFT_CHANGELOG), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_TEXTFILE + TFT_LICENSE), SetFill(1, 1), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_LICENCE, STR_TEXTFILE_VIEW_LICENCE_TOOLTIP),
EndContainer(),
EndContainer(),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_GSC_CONTENT_DOWNLOAD), SetFill(1, 1), SetResize(1, 0), SetMinimalSize(279, 0), SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT),
EndContainer(),
EndContainer(),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, WID_GSC_ACCEPT), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_AI_SETTINGS_CLOSE, STR_NULL),
NWidget(WWT_PUSHTXTBTN, COLOUR_MAUVE, WID_GSC_RESET), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_AI_SETTINGS_RESET, STR_NULL),
NWidget(NWID_HORIZONTAL),
NWidget(NWID_SPACER), SetFill(1, 0), SetResize(1, 0),
NWidget(WWT_RESIZEBOX, COLOUR_MAUVE), SetDataTip(RWV_HIDE_BEVEL, STR_TOOLTIP_RESIZE),
EndContainer(),
NWidget(WWT_RESIZEBOX, COLOUR_MAUVE),
EndContainer(),
};
@ -356,9 +359,12 @@ struct GSConfigWindow : public Window {
break;
}
case WID_GSC_ACCEPT:
this->Close();
case WID_GSC_OPEN_URL: {
const GameConfig *config = GameConfig::GetConfig();
if (config == nullptr || config->GetInfo() == nullptr) return;
OpenBrowser(config->GetInfo()->GetURL());
break;
}
case WID_GSC_RESET:
this->gs_config->ResetEditableSettings(_game_mode == GM_MENU);
@ -419,8 +425,10 @@ struct GSConfigWindow : public Window {
this->SetWidgetDisabledState(WID_GSC_CHANGE, !UserIsAllowedToChangeGameScript() || !IsEditable());
const GameConfig *config = GameConfig::GetConfig();
this->SetWidgetDisabledState(WID_GSC_OPEN_URL, config->GetInfo() == nullptr || config->GetInfo()->GetURL().empty());
for (TextfileType tft = TFT_CONTENT_BEGIN; tft < TFT_CONTENT_END; tft++) {
this->SetWidgetDisabledState(WID_GSC_TEXTFILE + tft, GameConfig::GetConfig()->GetTextfile(tft, (CompanyID)OWNER_DEITY) == nullptr);
this->SetWidgetDisabledState(WID_GSC_TEXTFILE + tft, config->GetTextfile(tft, (CompanyID)OWNER_DEITY) == nullptr);
}
this->RebuildVisibleSettings();
HideDropDownMenu(this);

@ -92,11 +92,11 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = {
/* Labels on the left side (global column 1). */
NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TERRAIN_TYPE, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_VARIETY, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SMOOTHNESS, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_QUANTITY_OF_RIVERS, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BORDER_TYPE, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TERRAIN_TYPE, STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_VARIETY, STR_CONFIG_SETTING_VARIETY_HELPTEXT), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SMOOTHNESS, STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_QUANTITY_OF_RIVERS, STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BORDER_TYPE, STR_MAPGEN_BORDER_TYPE_TOOLTIP), SetFill(1, 1),
EndContainer(),
/* Widgets on the right side (global column 2). */
@ -107,11 +107,11 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = {
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BY, STR_NULL), SetFill(0, 1), SetAlignment(SA_CENTER),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 1),
EndContainer(),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TERRAIN_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_VARIETY_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_SMOOTHNESS_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_RIVER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_BORDERS_RANDOM), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TERRAIN_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_VARIETY_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_CONFIG_SETTING_VARIETY_HELPTEXT), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_SMOOTHNESS_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_RIVER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT), SetFill(1, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_BORDERS_RANDOM), SetDataTip(STR_JUST_STRING, STR_MAPGEN_BORDER_TYPE_TOOLTIP), SetFill(1, 1),
EndContainer(),
EndContainer(),
@ -120,17 +120,17 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = {
/* Labels on the left side (global column 3). */
NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0),
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_LABEL),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SNOW_COVERAGE, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DESERT_COVERAGE, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SNOW_COVERAGE, STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DESERT_COVERAGE, STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SNOW_LINE_HEIGHT, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_RAINFOREST_LINE_HEIGHT, STR_NULL), SetFill(1, 1),
NWidget(NWID_SPACER), SetFill(1, 1),
EndContainer(),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TOWN_NAME_LABEL, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_TOWNS, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_INDUSTRIES, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SEA_LEVEL, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_MAPGEN_DATE_TOOLTIP), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TOWN_NAME_LABEL, STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_TOWNS, STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_INDUSTRIES, STR_MAPGEN_NUMBER_OF_INDUSTRIES_TOOLTIP), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SEA_LEVEL, STR_MAPGEN_SEA_LEVEL_TOOLTIP), SetFill(1, 1),
EndContainer(),
/* Widgets on the right side (global column 4). */
@ -140,13 +140,13 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = {
/* Snow coverage. */
NWidget(NWID_HORIZONTAL),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_COVERAGE_DOWN), SetFill(0, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_SNOW_COVERAGE_TEXT, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_SNOW_COVERAGE_TEXT, STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT), SetFill(1, 1),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_COVERAGE_UP), SetFill(0, 1),
EndContainer(),
/* Desert coverage. */
NWidget(NWID_HORIZONTAL),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_DESERT_COVERAGE_DOWN), SetFill(0, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_DESERT_COVERAGE_TEXT, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_DESERT_COVERAGE_TEXT, STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT), SetFill(1, 1),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_DESERT_COVERAGE_UP), SetFill(0, 1),
EndContainer(),
/* Snow line. */
@ -167,13 +167,13 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = {
/* Starting date. */
NWidget(NWID_HORIZONTAL),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), SetFill(0, 1),
NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_START_DATE_TEXT), SetDataTip(STR_JUST_DATE_LONG, STR_NULL), SetFill(1, 1),
NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_START_DATE_TEXT), SetDataTip(STR_JUST_DATE_LONG, STR_MAPGEN_DATE_TOOLTIP), SetFill(1, 1),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_UP), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), SetFill(0, 1),
EndContainer(),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWNNAME_DROPDOWN), SetDataTip(STR_JUST_STRING, STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_INDUSTRY_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_WATER_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_INDUSTRY_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_MAPGEN_NUMBER_OF_INDUSTRIES_TOOLTIP), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_WATER_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_MAPGEN_SEA_LEVEL_TOOLTIP), SetFill(1, 1),
EndContainer(),
EndContainer(),
EndContainer(),
@ -202,7 +202,7 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = {
EndContainer(),
/* Generate */
NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_GL_GENERATE_BUTTON), SetMinimalTextLines(3, 0), SetDataTip(STR_MAPGEN_GENERATE, STR_NULL), SetFill(1, 1),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_GL_GENERATE_BUTTON), SetMinimalTextLines(3, 0), SetDataTip(STR_MAPGEN_GENERATE, STR_MAPGEN_GENERATE_TOOLTIP), SetFill(1, 1),
EndContainer(),
EndContainer(),
};
@ -226,8 +226,8 @@ static const NWidgetPart _nested_heightmap_load_widgets[] = {
NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0),
/* Heightmap name label. */
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_NAME, STR_NULL),
NWidget(WWT_TEXT, COLOUR_ORANGE, WID_GL_HEIGHTMAP_NAME_TEXT), SetTextStyle(TC_ORANGE), SetDataTip(STR_JUST_RAW_STRING, STR_NULL), SetFill(1, 0),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_NAME, STR_MAPGEN_HEIGHTMAP_NAME_TOOLTIP),
NWidget(WWT_TEXT, COLOUR_ORANGE, WID_GL_HEIGHTMAP_NAME_TEXT), SetTextStyle(TC_ORANGE), SetDataTip(STR_JUST_RAW_STRING, STR_MAPGEN_HEIGHTMAP_NAME_TOOLTIP), SetFill(1, 0),
EndContainer(),
/* Generation options. */
@ -237,30 +237,30 @@ static const NWidgetPart _nested_heightmap_load_widgets[] = {
/* Labels on the left side (global column 1). */
NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0),
/* Land generation option labels. */
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_SIZE_LABEL, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_ROTATION, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_HEIGHT, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_QUANTITY_OF_RIVERS, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_SIZE_LABEL, STR_MAPGEN_HEIGHTMAP_SIZE_LABEL_TOOLTIP), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_ROTATION, STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_TOOLTIP), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_HEIGHT, STR_MAPGEN_HEIGHTMAP_HEIGHT_TOOLTIP), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_QUANTITY_OF_RIVERS, STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT), SetFill(1, 1),
EndContainer(),
/* Left half widgets (global column 2) */
NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0),
NWidget(WWT_TEXT, COLOUR_ORANGE, WID_GL_HEIGHTMAP_SIZE_TEXT), SetDataTip(STR_MAPGEN_HEIGHTMAP_SIZE, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE, WID_GL_HEIGHTMAP_SIZE_TEXT), SetDataTip(STR_MAPGEN_HEIGHTMAP_SIZE, STR_MAPGEN_HEIGHTMAP_SIZE_LABEL_TOOLTIP), SetFill(1, 1),
/* Mapsize X * Y. */
NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BY, STR_NULL), SetFill(0, 1), SetAlignment(SA_CENTER),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 1),
EndContainer(),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_ROTATION_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_ROTATION_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_TOOLTIP), SetFill(1, 1),
/* Heightmap highest peak. */
NWidget(NWID_HORIZONTAL),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_HEIGHT_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN), SetFill(0, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_HEIGHT_TEXT), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_HEIGHT_TEXT), SetDataTip(STR_JUST_INT, STR_MAPGEN_HEIGHTMAP_HEIGHT_TOOLTIP), SetFill(1, 1),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_HEIGHT_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_HEIGHTMAP_HEIGHT_UP), SetFill(0, 1),
EndContainer(),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_RIVER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_NULL), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_RIVER_PULLDOWN), SetDataTip(STR_JUST_STRING, STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT), SetFill(1, 1),
EndContainer(),
EndContainer(),
@ -269,16 +269,16 @@ static const NWidgetPart _nested_heightmap_load_widgets[] = {
/* Right half labels (global column 3) */
NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0),
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_LABEL),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SNOW_COVERAGE, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DESERT_COVERAGE, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SNOW_COVERAGE, STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DESERT_COVERAGE, STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SNOW_LINE_HEIGHT, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_RAINFOREST_LINE_HEIGHT, STR_NULL), SetFill(1, 1),
NWidget(NWID_SPACER), SetFill(1, 1),
EndContainer(),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TOWN_NAME_LABEL, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_TOWNS, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_INDUSTRIES, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_MAPGEN_DATE_TOOLTIP), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_TOWN_NAME_LABEL, STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_TOWNS, STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_INDUSTRIES, STR_MAPGEN_NUMBER_OF_INDUSTRIES_TOOLTIP), SetFill(1, 1),
EndContainer(),
/* Right half widgets (global column 4) */
@ -288,13 +288,13 @@ static const NWidgetPart _nested_heightmap_load_widgets[] = {
/* Snow coverage. */
NWidget(NWID_HORIZONTAL),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_COVERAGE_DOWN), SetFill(0, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_SNOW_COVERAGE_TEXT, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_SNOW_COVERAGE_TEXT, STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT), SetFill(1, 1),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_COVERAGE_UP), SetFill(0, 1),
EndContainer(),
/* Desert coverage. */
NWidget(NWID_HORIZONTAL),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_DESERT_COVERAGE_DOWN), SetFill(0, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_DESERT_COVERAGE_TEXT, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_DESERT_COVERAGE_TEXT, STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT), SetFill(1, 1),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_DESERT_COVERAGE_UP), SetFill(0, 1),
EndContainer(),
/* Snow line. */
@ -315,12 +315,12 @@ static const NWidgetPart _nested_heightmap_load_widgets[] = {
/* Starting date. */
NWidget(NWID_HORIZONTAL),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), SetFill(0, 1),
NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_START_DATE_TEXT), SetDataTip(STR_JUST_DATE_LONG, STR_NULL), SetFill(1, 1),
NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_GL_START_DATE_TEXT), SetDataTip(STR_JUST_DATE_LONG, STR_MAPGEN_DATE_TOOLTIP), SetFill(1, 1),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_UP), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD), SetFill(0, 1),
EndContainer(),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWNNAME_DROPDOWN), SetDataTip(STR_JUST_STRING, STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_INDUSTRY_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_TOWN_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_GL_INDUSTRY_PULLDOWN), SetDataTip(STR_JUST_STRING1, STR_MAPGEN_NUMBER_OF_INDUSTRIES_TOOLTIP), SetFill(1, 1),
EndContainer(),
EndContainer(),
EndContainer(),
@ -333,7 +333,7 @@ static const NWidgetPart _nested_heightmap_load_widgets[] = {
EndContainer(),
/* Generate */
NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_GL_GENERATE_BUTTON), SetMinimalTextLines(3, 0), SetDataTip(STR_MAPGEN_GENERATE, STR_NULL), SetFill(1, 1),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREEN, WID_GL_GENERATE_BUTTON), SetMinimalTextLines(3, 0), SetDataTip(STR_MAPGEN_GENERATE, STR_MAPGEN_GENERATE_TOOLTIP), SetFill(1, 1),
EndContainer(),
EndContainer(),
};
@ -412,7 +412,7 @@ static DropDownList BuildTownNameDropDown()
size_t newgrf_size = list.size();
/* Insert newgrf_names at the top of the list */
if (newgrf_size > 0) {
list.push_back(std::make_unique<DropDownListItem>(-1, false)); // separator line
list.push_back(std::make_unique<DropDownListDividerItem>(-1, false)); // separator line
newgrf_size++;
}
@ -1434,30 +1434,30 @@ static const NWidgetPart _nested_create_scenario_widgets[] = {
NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0),
/* Labels. */
NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_NULL), SetFill(0, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_NULL), SetFill(0, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_SE_MAPGEN_FLAT_WORLD_HEIGHT, STR_NULL), SetFill(0, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAPSIZE, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(0, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_MAPGEN_DATE_TOOLTIP), SetFill(0, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_SE_MAPGEN_FLAT_WORLD_HEIGHT, STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_TOOLTIP), SetFill(0, 1),
EndContainer(),
NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, WidgetDimensions::unscaled.vsep_sparse, 0),
/* Map size. */
NWidget(NWID_HORIZONTAL), SetPIP(0, WidgetDimensions::unscaled.hsep_normal, 0),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_CS_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_CS_MAPSIZE_X_PULLDOWN), SetDataTip(STR_JUST_INT, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_BY, STR_NULL), SetFill(0, 1), SetAlignment(SA_CENTER),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_CS_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_NULL), SetFill(1, 1),
NWidget(WWT_DROPDOWN, COLOUR_ORANGE, WID_CS_MAPSIZE_Y_PULLDOWN), SetDataTip(STR_JUST_INT, STR_MAPGEN_MAPSIZE_TOOLTIP), SetFill(1, 1),
EndContainer(),
/* Date. */
NWidget(NWID_HORIZONTAL),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_START_DATE_DOWN), SetFill(0, 1), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD),
NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_CS_START_DATE_TEXT), SetFill(1, 1), SetDataTip(STR_JUST_DATE_LONG, STR_NULL),
NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_CS_START_DATE_TEXT), SetFill(1, 1), SetDataTip(STR_JUST_DATE_LONG, STR_MAPGEN_DATE_TOOLTIP),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_START_DATE_UP), SetFill(0, 1), SetDataTip(SPR_ARROW_UP, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD),
EndContainer(),
/* Flat map height. */
NWidget(NWID_HORIZONTAL),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_FLAT_LAND_HEIGHT_DOWN), SetFill(0, 1), SetDataTip(SPR_ARROW_DOWN, STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN),
NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_CS_FLAT_LAND_HEIGHT_TEXT), SetFill(1, 1), SetDataTip(STR_JUST_INT, STR_NULL),
NWidget(WWT_PUSHTXTBTN, COLOUR_ORANGE, WID_CS_FLAT_LAND_HEIGHT_TEXT), SetFill(1, 1), SetDataTip(STR_JUST_INT, STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_TOOLTIP),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_CS_FLAT_LAND_HEIGHT_UP), SetFill(0, 1), SetDataTip(SPR_ARROW_UP, STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP),
EndContainer(),
EndContainer(),

@ -2345,22 +2345,22 @@ bool AdjustGUIZoom(AdjustGUIZoomMode mode)
ZoomLevel old_font_zoom = _font_zoom;
int old_scale = _gui_scale;
UpdateGUIZoom();
if (old_scale == _gui_scale) return false;
if (old_scale == _gui_scale && old_gui_zoom == _gui_zoom) return false;
/* Reload sprites if sprite zoom level has changed. */
/* Update cursors if sprite zoom level has changed. */
if (old_gui_zoom != _gui_zoom) {
GfxClearSpriteCache();
VideoDriver::GetInstance()->ClearSystemSprites();
UpdateCursorSize();
if (mode != AGZM_STARTUP) UpdateRouteStepSpriteSize();
} else if (old_font_zoom != _font_zoom) {
}
if (old_font_zoom != _font_zoom) {
GfxClearFontSpriteCache();
}
ClearFontCache();
UpdateFontHeightCache();
LoadStringWidthTable();
ReInitAllWindows(false);
SetupWidgetDimensions();
UpdateAllVirtCoords();
if (mode != AGZM_STARTUP) FixTitleGameZoom();
@ -2374,11 +2374,9 @@ bool AdjustGUIZoom(AdjustGUIZoomMode mode)
if (mode == AGZM_AUTOMATIC) {
w->left = (w->left * _gui_scale) / old_scale;
w->top = (w->top * _gui_scale) / old_scale;
w->width = (w->width * _gui_scale) / old_scale;
w->height = (w->height * _gui_scale) / old_scale;
}
if (w->viewport != nullptr) {
w->viewport->zoom = Clamp(ZoomLevel(w->viewport->zoom - zoom_shift), _settings_client.gui.zoom_min, _settings_client.gui.zoom_max);
w->viewport->zoom = static_cast<ZoomLevel>(Clamp(w->viewport->zoom - zoom_shift, _settings_client.gui.zoom_min, _settings_client.gui.zoom_max));
}
}

@ -107,8 +107,8 @@ struct SpritePointerHolder;
void DrawSpriteViewport(const SpritePointerHolder &sprite_store, const DrawPixelInfo *dpi, SpriteID img, PaletteID pal, int x, int y, const SubSprite *sub = nullptr);
void PrepareDrawSpriteViewportSpriteStore(SpritePointerHolder &sprite_store, const DrawPixelInfo *dpi, SpriteID img, PaletteID pal);
void DrawSprite(SpriteID img, PaletteID pal, int x, int y, const SubSprite *sub = nullptr, ZoomLevel zoom = ZOOM_LVL_GUI);
void DrawSpriteIgnorePadding(SpriteID img, PaletteID pal, const Rect &r, bool clicked, StringAlignment align); /* widget.cpp */
std::unique_ptr<uint32[]> DrawSpriteToRgbaBuffer(SpriteID spriteId, ZoomLevel zoom = ZOOM_LVL_GUI);
void DrawSpriteIgnorePadding(SpriteID img, PaletteID pal, const Rect &r, StringAlignment align); /* widget.cpp */
std::unique_ptr<uint32_t[]> DrawSpriteToRgbaBuffer(SpriteID spriteId, ZoomLevel zoom = ZOOM_LVL_GUI);
int DrawString(int left, int right, int top, std::string_view str, TextColour colour = TC_FROMSTRING, StringAlignment align = SA_LEFT, bool underline = false, FontSize fontsize = FS_NORMAL);
int DrawString(int left, int right, int top, StringID str, TextColour colour = TC_FROMSTRING, StringAlignment align = SA_LEFT, bool underline = false, FontSize fontsize = FS_NORMAL);
@ -174,6 +174,11 @@ void CheckBlitter();
bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int height);
static inline bool FillDrawPixelInfo(DrawPixelInfo *n, const Rect &r)
{
return FillDrawPixelInfo(n, r.left, r.top, r.Width(), r.Height());
}
/**
* Determine where to draw a centred object inside a widget.
* @param min The top or left coordinate.

@ -285,8 +285,8 @@ static const NWidgetPart _nested_goals_list_widgets[] = {
NWidget(WWT_CLOSEBOX, COLOUR_BROWN),
NWidget(WWT_CAPTION, COLOUR_BROWN, WID_GOAL_CAPTION), SetDataTip(STR_JUST_STRING1, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GOAL_SELECT_BUTTONS),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_GOAL_GLOBAL_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WidgetDimensions::unscaled.captiontext.Vertical()), SetDataTip(STR_GOALS_GLOBAL_BUTTON, STR_GOALS_GLOBAL_BUTTON_HELPTEXT),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_GOAL_COMPANY_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WidgetDimensions::unscaled.captiontext.Vertical()), SetDataTip(STR_GOALS_COMPANY_BUTTON, STR_GOALS_COMPANY_BUTTON_HELPTEXT),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_GOAL_GLOBAL_BUTTON), SetMinimalSize(50, 0), SetDataTip(STR_GOALS_GLOBAL_BUTTON, STR_GOALS_GLOBAL_BUTTON_HELPTEXT),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_GOAL_COMPANY_BUTTON), SetMinimalSize(50, 0), SetDataTip(STR_GOALS_COMPANY_BUTTON, STR_GOALS_COMPANY_BUTTON_HELPTEXT),
EndContainer(),
NWidget(WWT_SHADEBOX, COLOUR_BROWN),
NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN),

@ -658,7 +658,7 @@ static const NWidgetPart _nested_operating_profit_widgets[] = {
NWidget(NWID_HORIZONTAL),
NWidget(WWT_CLOSEBOX, COLOUR_BROWN),
NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_GRAPH_OPERATING_PROFIT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_CV_KEY_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WidgetDimensions::unscaled.framerect.Vertical() + 2), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_CV_KEY_BUTTON), SetMinimalSize(50, 0), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP),
NWidget(WWT_SHADEBOX, COLOUR_BROWN),
NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN),
NWidget(WWT_STICKYBOX, COLOUR_BROWN),
@ -668,7 +668,7 @@ static const NWidgetPart _nested_operating_profit_widgets[] = {
NWidget(WWT_EMPTY, COLOUR_BROWN, WID_CV_GRAPH), SetMinimalSize(576, 160), SetFill(1, 1), SetResize(1, 1),
NWidget(NWID_VERTICAL),
NWidget(NWID_SPACER), SetFill(0, 1), SetResize(0, 1),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN, WID_CV_RESIZE),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN, WID_CV_RESIZE), SetDataTip(RWV_HIDE_BEVEL, STR_TOOLTIP_RESIZE),
EndContainer(),
EndContainer(),
EndContainer(),
@ -709,7 +709,7 @@ static const NWidgetPart _nested_income_graph_widgets[] = {
NWidget(NWID_HORIZONTAL),
NWidget(WWT_CLOSEBOX, COLOUR_BROWN),
NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_GRAPH_INCOME_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_CV_KEY_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WidgetDimensions::unscaled.framerect.Vertical() + 2), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_CV_KEY_BUTTON), SetMinimalSize(50, 0), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP),
NWidget(WWT_SHADEBOX, COLOUR_BROWN),
NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN),
NWidget(WWT_STICKYBOX, COLOUR_BROWN),
@ -719,7 +719,7 @@ static const NWidgetPart _nested_income_graph_widgets[] = {
NWidget(WWT_EMPTY, COLOUR_BROWN, WID_CV_GRAPH), SetMinimalSize(576, 128), SetFill(1, 1), SetResize(1, 1),
NWidget(NWID_VERTICAL),
NWidget(NWID_SPACER), SetFill(0, 1), SetResize(0, 1),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN, WID_CV_RESIZE),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN, WID_CV_RESIZE), SetDataTip(RWV_HIDE_BEVEL, STR_TOOLTIP_RESIZE),
EndContainer(),
EndContainer(),
EndContainer(),
@ -801,7 +801,7 @@ struct ExcludingCargoBaseGraphWindow : BaseGraphWindow {
/* Redraw frame if lowered */
if (lowered) DrawFrameRect(line, COLOUR_BROWN, FR_LOWERED);
const Rect text = line.Shrink(WidgetDimensions::scaled.framerect).Translate(lowered ? WidgetDimensions::scaled.pressed : 0, lowered ? WidgetDimensions::scaled.pressed : 0);
const Rect text = line.Shrink(WidgetDimensions::scaled.framerect);
/* Cargo-colour box with outline */
const Rect cargo = text.WithWidth(this->legend_width, rtl);
@ -1002,7 +1002,7 @@ static const NWidgetPart _nested_delivered_cargo_graph_widgets[] = {
NWidget(NWID_HORIZONTAL),
NWidget(WWT_CLOSEBOX, COLOUR_BROWN),
NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_GRAPH_CARGO_DELIVERED_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_CV_KEY_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WidgetDimensions::unscaled.framerect.Vertical() + 2), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_CV_KEY_BUTTON), SetMinimalSize(50, 0), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP),
NWidget(WWT_SHADEBOX, COLOUR_BROWN),
NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN),
NWidget(WWT_STICKYBOX, COLOUR_BROWN),
@ -1025,7 +1025,7 @@ static const NWidgetPart _nested_delivered_cargo_graph_widgets[] = {
NWidget(NWID_SPACER), SetMinimalSize(0, 4),
NWidget(NWID_HORIZONTAL),
NWidget(NWID_SPACER), SetFill(1, 0), SetResize(1, 0),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN, WID_CV_RESIZE),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN, WID_CV_RESIZE), SetDataTip(RWV_HIDE_BEVEL, STR_TOOLTIP_RESIZE),
EndContainer(),
EndContainer(),
EndContainer(),
@ -1071,8 +1071,8 @@ static const NWidgetPart _nested_performance_history_widgets[] = {
NWidget(NWID_HORIZONTAL),
NWidget(WWT_CLOSEBOX, COLOUR_BROWN),
NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_GRAPH_COMPANY_PERFORMANCE_RATINGS_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_PHG_DETAILED_PERFORMANCE), SetMinimalSize(50, 0), SetMinimalTextLines(1, WidgetDimensions::unscaled.framerect.Vertical() + 2), SetDataTip(STR_PERFORMANCE_DETAIL_KEY, STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_PHG_KEY), SetMinimalSize(50, 0), SetMinimalTextLines(1, WidgetDimensions::unscaled.framerect.Vertical() + 2), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_PHG_DETAILED_PERFORMANCE), SetMinimalSize(50, 0), SetDataTip(STR_PERFORMANCE_DETAIL_KEY, STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_PHG_KEY), SetMinimalSize(50, 0), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP),
NWidget(WWT_SHADEBOX, COLOUR_BROWN),
NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN),
NWidget(WWT_STICKYBOX, COLOUR_BROWN),
@ -1082,7 +1082,7 @@ static const NWidgetPart _nested_performance_history_widgets[] = {
NWidget(WWT_EMPTY, COLOUR_BROWN, WID_PHG_GRAPH), SetMinimalSize(576, 224), SetFill(1, 1), SetResize(1, 1),
NWidget(NWID_VERTICAL),
NWidget(NWID_SPACER), SetFill(0, 1), SetResize(0, 1),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN, WID_PHG_RESIZE),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN, WID_PHG_RESIZE), SetDataTip(RWV_HIDE_BEVEL, STR_TOOLTIP_RESIZE),
EndContainer(),
EndContainer(),
EndContainer(),
@ -1121,7 +1121,7 @@ static const NWidgetPart _nested_company_value_graph_widgets[] = {
NWidget(NWID_HORIZONTAL),
NWidget(WWT_CLOSEBOX, COLOUR_BROWN),
NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_GRAPH_COMPANY_VALUES_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_CV_KEY_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WidgetDimensions::unscaled.framerect.Vertical() + 2), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_CV_KEY_BUTTON), SetMinimalSize(50, 0), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP),
NWidget(WWT_SHADEBOX, COLOUR_BROWN),
NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN),
NWidget(WWT_STICKYBOX, COLOUR_BROWN),
@ -1131,7 +1131,7 @@ static const NWidgetPart _nested_company_value_graph_widgets[] = {
NWidget(WWT_EMPTY, COLOUR_BROWN, WID_CV_GRAPH), SetMinimalSize(576, 224), SetFill(1, 1), SetResize(1, 1),
NWidget(NWID_VERTICAL),
NWidget(NWID_SPACER), SetFill(0, 1), SetResize(0, 1),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN, WID_CV_RESIZE),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN, WID_CV_RESIZE), SetDataTip(RWV_HIDE_BEVEL, STR_TOOLTIP_RESIZE),
EndContainer(),
EndContainer(),
EndContainer(),
@ -1312,7 +1312,7 @@ struct PaymentRatesGraphWindow : BaseGraphWindow {
/* Redraw frame if lowered */
if (lowered) DrawFrameRect(line, COLOUR_BROWN, FR_LOWERED);
const Rect text = line.Shrink(WidgetDimensions::scaled.framerect).Translate(lowered ? WidgetDimensions::scaled.pressed : 0, lowered ? WidgetDimensions::scaled.pressed : 0);
const Rect text = line.Shrink(WidgetDimensions::scaled.framerect);
/* Cargo-colour box with outline */
const Rect cargo = text.WithWidth(this->legend_width, rtl);
@ -1480,7 +1480,7 @@ static const NWidgetPart _nested_cargo_payment_rates_widgets[] = {
NWidget(NWID_HORIZONTAL),
NWidget(NWID_SPACER), SetMinimalSize(12, 0), SetFill(0, 0), SetResize(0, 0),
NWidget(WWT_TEXT, COLOUR_BROWN, WID_CPR_FOOTER), SetMinimalSize(0, 6), SetAlignment(SA_CENTER), SetPadding(2, 0, 2, 0), SetDataTip(STR_JUST_STRING1, STR_NULL), SetFill(1, 0), SetResize(1, 0),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN, WID_CPR_RESIZE),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN, WID_CPR_RESIZE), SetDataTip(RWV_HIDE_BEVEL, STR_TOOLTIP_RESIZE),
EndContainer(),
EndContainer(),
};
@ -1600,9 +1600,8 @@ struct PerformanceRatingDetailWindow : Window {
if (IsInsideMM(widget, WID_PRD_COMPANY_FIRST, WID_PRD_COMPANY_LAST + 1)) {
if (this->IsWidgetDisabled(widget)) return;
CompanyID cid = (CompanyID)(widget - WID_PRD_COMPANY_FIRST);
int offset = (cid == this->company) ? WidgetDimensions::scaled.pressed : 0;
Dimension sprite_size = GetSpriteSize(SPR_COMPANY_ICON);
DrawCompanyIcon(cid, CenterBounds(r.left, r.right, sprite_size.width) + offset, CenterBounds(r.top, r.bottom, sprite_size.height) + offset);
DrawCompanyIcon(cid, CenterBounds(r.left, r.right, sprite_size.width), CenterBounds(r.top, r.bottom, sprite_size.height));
return;
}

@ -490,7 +490,7 @@ public:
break;
case WID_GL_FILTER_BY_CARGO:
size->width = std::max(size->width, GetDropDownListDimension(this->BuildCargoDropDownList()).width + padding.width);
size->width = std::max(size->width, GetDropDownListDimension(this->BuildCargoDropDownList(true)).width + padding.width);
break;
case WID_GL_MANAGE_VEHICLES_DROPDOWN: {
@ -725,7 +725,7 @@ public:
return;
case WID_GL_FILTER_BY_CARGO: // Select filtering criteria dropdown menu
ShowDropDownList(this, this->BuildCargoDropDownList(), this->cargo_filter_criteria, widget);
ShowDropDownList(this, this->BuildCargoDropDownList(false), this->cargo_filter_criteria, widget);
break;
case WID_GL_ALL_VEHICLES: // All vehicles button
@ -1048,7 +1048,7 @@ public:
this->UpdateSortingInterval();
break;
case WID_GL_FILTER_BY_CARGO: // Select a cargo filter criteria
this->SetCargoFilterIndex(index);
this->SetCargoFilter(index);
break;
case WID_GL_MANAGE_VEHICLES_DROPDOWN:
assert(this->ShouldShowActionDropdownList());

@ -186,8 +186,8 @@ struct HighScoreWindow : EndGameHighScoreBaseWindow {
this->SetupHighScoreEndWindow();
Point pt = this->GetTopLeft(ScaleSpriteTrad(640), ScaleSpriteTrad(480));
SetDParam(0, _settings_game.game_creation.ending_year);
DrawStringMultiLine(pt.x + ScaleSpriteTrad(70), pt.x + ScaleSpriteTrad(570), pt.y, pt.y + ScaleSpriteTrad(140), !_networking ? STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED : STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME, TC_FROMSTRING, SA_CENTER);
/* Draw the title. */
DrawStringMultiLine(pt.x + ScaleSpriteTrad(70), pt.x + ScaleSpriteTrad(570), pt.y, pt.y + ScaleSpriteTrad(140), STR_HIGHSCORE_TOP_COMPANIES, TC_FROMSTRING, SA_CENTER);
/* Draw Highscore peepz */
for (uint8_t i = 0; i < ClampTo<uint8_t>(hs.size()); i++) {

@ -41,6 +41,7 @@
#include "zoom_func.h"
#include "querystring_gui.h"
#include "stringfilter_type.h"
#include "hotkeys.h"
#include "table/strings.h"
@ -409,16 +410,13 @@ public:
this->CreateNestedTree();
this->vscroll = this->GetScrollbar(WID_DPI_SCROLLBAR);
this->FinishInitNested(0);
this->SetButtons();
/* Show scenario editor tools in editor. */
if (_game_mode != GM_EDITOR) {
auto *se_tools = this->GetWidget<NWidgetStacked>(WID_DPI_SCENARIO_EDITOR_PANE);
se_tools->SetDisplayedPlane(SZSP_HORIZONTAL);
this->ReInit();
this->GetWidget<NWidgetStacked>(WID_DPI_SCENARIO_EDITOR_PANE)->SetDisplayedPlane(SZSP_HORIZONTAL);
}
this->FinishInitNested(0);
this->SetButtons();
}
void OnInit() override
@ -1249,7 +1247,7 @@ static const NWidgetPart _nested_industry_directory_widgets[] = {
EndContainer(),
};
typedef GUIList<const Industry *, const std::pair<CargoID, CargoID> &> GUIIndustryList;
typedef GUIList<const Industry *, const CargoID &, const std::pair<CargoID, CargoID> &> GUIIndustryList;
/** Special cargo filter criteria */
enum CargoFilterSpecialType {
@ -1306,7 +1304,10 @@ static bool CargoFilter(const Industry * const *industry, const std::pair<CargoI
static GUIIndustryList::FilterFunction * const _filter_funcs[] = { &CargoFilter };
/** Enum referring to the Hotkeys in the industry directory window */
enum IndustryDirectoryHotkeys {
IDHK_FOCUS_FILTER_BOX, ///< Focus the filter box
};
/**
* The list of industries.
*/
@ -1319,7 +1320,7 @@ protected:
static const StringID sorter_names[];
static GUIIndustryList::SortFunction * const sorter_funcs[];
GUIIndustryList industries;
GUIIndustryList industries{IndustryDirectoryWindow::produced_cargo_filter};
Scrollbar *vscroll;
Scrollbar *hscroll;
@ -1339,13 +1340,13 @@ protected:
};
/**
* Set cargo filter list item index.
* @param index The index of the cargo to be set
* Set produced cargo filter for the industry list.
* @param cid The cargo to be set
*/
void SetProducedCargoFilterIndex(byte index)
void SetProducedCargoFilter(CargoID cid)
{
if (this->produced_cargo_filter_criteria != index) {
this->produced_cargo_filter_criteria = index;
if (this->produced_cargo_filter_criteria != cid) {
this->produced_cargo_filter_criteria = cid;
/* deactivate filter if criteria is 'Show All', activate it otherwise */
bool is_filtering_necessary = this->produced_cargo_filter_criteria != CF_ANY || this->accepted_cargo_filter_criteria != CF_ANY;
@ -1356,13 +1357,13 @@ protected:
}
/**
* Set cargo filter list item index.
* @param index The index of the cargo to be set
* Set accepted cargo filter for the industry list.
* @param index The cargo to be set
*/
void SetAcceptedCargoFilterIndex(byte index)
void SetAcceptedCargoFilter(CargoID cid)
{
if (this->accepted_cargo_filter_criteria != index) {
this->accepted_cargo_filter_criteria = index;
if (this->accepted_cargo_filter_criteria != cid) {
this->accepted_cargo_filter_criteria = cid;
/* deactivate filter if criteria is 'Show All', activate it otherwise */
bool is_filtering_necessary = this->produced_cargo_filter_criteria != CF_ANY || this->accepted_cargo_filter_criteria != CF_ANY;
@ -1490,7 +1491,7 @@ protected:
}
/** Sort industries by name */
static bool IndustryNameSorter(const Industry * const &a, const Industry * const &b)
static bool IndustryNameSorter(const Industry * const &a, const Industry * const &b, const CargoID &)
{
int r = StrNaturalCompare(a->GetCachedName(), b->GetCachedName()); // Sort by name (natural sorting).
if (r == 0) return a->index < b->index;
@ -1498,21 +1499,20 @@ protected:
}
/** Sort industries by type and name */
static bool IndustryTypeSorter(const Industry * const &a, const Industry * const &b)
static bool IndustryTypeSorter(const Industry * const &a, const Industry * const &b, const CargoID &filter)
{
int it_a = 0;
while (it_a != NUM_INDUSTRYTYPES && a->type != _sorted_industry_types[it_a]) it_a++;
int it_b = 0;
while (it_b != NUM_INDUSTRYTYPES && b->type != _sorted_industry_types[it_b]) it_b++;
int r = it_a - it_b;
return (r == 0) ? IndustryNameSorter(a, b) : r < 0;
return (r == 0) ? IndustryNameSorter(a, b, filter) : r < 0;
}
/** Sort industries by production and name */
static bool IndustryProductionSorter(const Industry * const &a, const Industry * const &b)
static bool IndustryProductionSorter(const Industry * const &a, const Industry * const &b, const CargoID &filter)
{
CargoID filter = IndustryDirectoryWindow::produced_cargo_filter;
if (filter == CF_NONE) return IndustryTypeSorter(a, b);
if (filter == CF_NONE) return IndustryTypeSorter(a, b, filter);
uint prod_a = 0, prod_b = 0;
for (uint i = 0; i < lengthof(a->produced_cargo); i++) {
@ -1526,14 +1526,14 @@ protected:
}
int r = prod_a - prod_b;
return (r == 0) ? IndustryTypeSorter(a, b) : r < 0;
return (r == 0) ? IndustryTypeSorter(a, b, filter) : r < 0;
}
/** Sort industries by transported cargo and name */
static bool IndustryTransportedCargoSorter(const Industry * const &a, const Industry * const &b)
static bool IndustryTransportedCargoSorter(const Industry * const &a, const Industry * const &b, const CargoID &filter)
{
int r = GetCargoTransportedSortValue(a) - GetCargoTransportedSortValue(b);
return (r == 0) ? IndustryNameSorter(a, b) : r < 0;
return (r == 0) ? IndustryNameSorter(a, b, filter) : r < 0;
}
/**
@ -1680,7 +1680,7 @@ public:
/* Setup a clipping rectangle... */
DrawPixelInfo tmp_dpi;
if (!FillDrawPixelInfo(&tmp_dpi, ir.left, ir.top, ir.Width(), ir.Height())) return;
if (!FillDrawPixelInfo(&tmp_dpi, ir)) return;
/* ...but keep coordinates relative to the window. */
tmp_dpi.left += ir.left;
tmp_dpi.top += ir.top;
@ -1758,8 +1758,9 @@ public:
list.push_back(std::make_unique<DropDownListStringItem>(this->GetCargoFilterLabel(CF_NONE), CF_NONE, false));
/* Add cargos */
Dimension d = GetLargestCargoIconSize();
for (const CargoSpec *cs : _sorted_standard_cargo_specs) {
list.push_back(std::make_unique<DropDownListStringItem>(cs->name, cs->Index(), false));
list.push_back(std::make_unique<DropDownListIconItem>(d, cs->GetCargoIcon(), PAL_NONE, cs->name, cs->Index(), false));
}
return list;
@ -1811,13 +1812,13 @@ public:
}
case WID_ID_FILTER_BY_ACC_CARGO: {
this->SetAcceptedCargoFilterIndex(index);
this->SetAcceptedCargoFilter(index);
this->BuildSortIndustriesList();
break;
}
case WID_ID_FILTER_BY_PROD_CARGO: {
this->SetProducedCargoFilterIndex(index);
this->SetProducedCargoFilter(index);
this->BuildSortIndustriesList();
break;
}
@ -1872,7 +1873,28 @@ public:
break;
}
}
EventState OnHotkey(int hotkey) override
{
switch (hotkey) {
case IDHK_FOCUS_FILTER_BOX:
this->SetFocusedWidget(WID_ID_FILTER);
SetFocusedWindow(this); // The user has asked to give focus to the text box, so make sure this window is focused.
break;
default:
return ES_NOT_HANDLED;
}
return ES_HANDLED;
}
static HotkeyList hotkeys;
};
static Hotkey industrydirectory_hotkeys[] = {
Hotkey('F', "focus_filter_box", IDHK_FOCUS_FILTER_BOX),
HOTKEY_LIST_END
};
HotkeyList IndustryDirectoryWindow::hotkeys("industrydirectory", industrydirectory_hotkeys);
Listing IndustryDirectoryWindow::last_sorting = {false, 0};
@ -1901,7 +1923,8 @@ static WindowDesc _industry_directory_desc(__FILE__, __LINE__,
WDP_AUTO, "list_industries", 428, 190,
WC_INDUSTRY_DIRECTORY, WC_NONE,
0,
std::begin(_nested_industry_directory_widgets), std::end(_nested_industry_directory_widgets)
std::begin(_nested_industry_directory_widgets), std::end(_nested_industry_directory_widgets),
&IndustryDirectoryWindow::hotkeys
);
void ShowIndustryDirectory()
@ -2985,7 +3008,7 @@ struct IndustryCargoesWindow : public Window {
Rect ir = r.Shrink(WidgetDimensions::scaled.bevel);
DrawPixelInfo tmp_dpi;
if (!FillDrawPixelInfo(&tmp_dpi, ir.left, ir.top, ir.Width(), ir.Height())) return;
if (!FillDrawPixelInfo(&tmp_dpi, ir)) return;
AutoRestoreBackup dpi_backup(_cur_dpi, &tmp_dpi);
int left_pos = WidgetDimensions::scaled.frametext.left - WidgetDimensions::scaled.bevel.left;
@ -3125,8 +3148,9 @@ struct IndustryCargoesWindow : public Window {
case WID_IC_CARGO_DROPDOWN: {
DropDownList lst;
Dimension d = GetLargestCargoIconSize();
for (const CargoSpec *cs : _sorted_standard_cargo_specs) {
lst.push_back(std::make_unique<DropDownListStringItem>(cs->name, cs->Index(), false));
lst.push_back(std::make_unique<DropDownListIconItem>(d, cs->GetCargoIcon(), PAL_NONE, cs->name, cs->Index(), false));
}
if (!lst.empty()) {
int selected = (this->ind_cargo >= NUM_INDUSTRYTYPES) ? (int)(this->ind_cargo - NUM_INDUSTRYTYPES) : -1;

@ -228,6 +228,7 @@ STR_UNITS_HEIGHT_IMPERIAL :{DECIMAL}{NBSP}
STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP}m
STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP}m
# Common window strings
STR_LIST_FILTER_TITLE :{BLACK}Filter string:
STR_LIST_FILTER_OSKTITLE :{BLACK}Sleutel filter string in
@ -678,8 +679,6 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klik op
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klik op musiek lied om te verwyder van huidige program (Slegs Gewoonte1 of Gewoonte2)
# Highscore window
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Top maatskappye wat {NUM} bereik het
STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Maatskappy Liga Tafel in {NUM}
STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}.
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Sakeman
STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Entrepreneur
@ -1502,8 +1501,7 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Aktiveer die ge
STR_CONFIG_SETTING_LOADING_INDICATORS :Gebruik laai aanwysers: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Kies of die ladingswaardes vertoon word wanneer voertuie vrag op- en aflaai
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Vertoon rooster in "ticks" liewer as dae: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Wys die rystye in tydroosters in speletjie "ticks" inplaas van dae
###length 3
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Toon aankoms en vertrek in tydroosters: {STRING}
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Vertoon verwagte aankoms en vertrek tye in tydroosters
@ -4135,8 +4133,6 @@ STR_TIMETABLE_STAY_FOR_ESTIMATED :(wag vir {STRIN
STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(reis vir {STRING}, nie volgens tydrooster nie)
STR_TIMETABLE_STAY_FOR :en bly vir {STRING}
STR_TIMETABLE_AND_TRAVEL_FOR :en reis vir {STRING}
STR_TIMETABLE_DAYS :{COMMA}{NBSP}da{P g e}
STR_TIMETABLE_TICKS :{COMMA}{NBSP}tik{P "" ke}
STR_TIMETABLE_TOTAL_TIME :{BLACK}Die rooster sal {STRING} neem om te voltooi
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Die rooster sal te minste {STRING} vat om te voltooi (nie alles gerooster nie)
@ -4145,10 +4141,8 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Die voer
STR_TIMETABLE_STATUS_LATE :{BLACK}Die voertuig loop tans {STRING} laat
STR_TIMETABLE_STATUS_EARLY :{BLACK}Die voertuig loop tans {STRING} vroeg
STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Hierdie rooster het nog nie begin nie
STR_TIMETABLE_STATUS_START_AT :{BLACK}Hierdie tydrooster sal begin by {STRING}
STR_TIMETABLE_STARTING_DATE :{BLACK}Begin datum
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Kies 'n datum as 'n beginpunt vir hierdie rooster. Ctrl+klik stel die begindatum van hierdie rooster en versprei al die voertuie wat hierdie rooster deel eweredig vir 'n volledige rooster.
STR_TIMETABLE_CHANGE_TIME :{BLACK}Verander Tyd
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Verander die bedrag van tyd die verlig opdrag moes vat

@ -228,6 +228,7 @@ STR_UNITS_HEIGHT_IMPERIAL :{DECIMAL}{NBSP}
STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP}م
STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP} متر
# Common window strings
STR_LIST_FILTER_TITLE :{BLACK}تصفية القائمة:
STR_LIST_FILTER_OSKTITLE :{BLACK} ادخل فلتر
@ -674,8 +675,6 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}اضغط
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}اضغط على المسار لازالته من القائمة
# Highscore window
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}الشركات الكبرى التي وصلت لـ {NUM}
STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}ترتيب الشركات {NUM}
STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}.
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :رجل اعمال
STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :مغامر
@ -1407,7 +1406,7 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS :استخدام
STR_CONFIG_SETTING_LOADING_INDICATORS :تفعيل مؤشر التحميل: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :حدد ما إذا كانت مؤشرات التحميل معروضة فوق تحميل المركبات أو تفريغها
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :عرض جدولة الأعمال بالمهام بدلا من الأيام: {STRING}
###length 3
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :عرض الوصول و المغادرة في جدولة الاعمال: {STRING}
@ -3864,8 +3863,6 @@ STR_TIMETABLE_TRAVEL_FOR_SPEED_ESTIMATED :سافر (إل
STR_TIMETABLE_STAY_FOR_ESTIMATED :(البقاء ل{STRING}، ليس مجدول)
STR_TIMETABLE_STAY_FOR :ويبقى لـ {STRING}
STR_TIMETABLE_AND_TRAVEL_FOR :ويسافر لـ {STRING}
STR_TIMETABLE_DAYS :{COMMA}يوم
STR_TIMETABLE_TICKS :{COMMA} علامة
STR_TIMETABLE_TOTAL_TIME :{BLACK}جدولة الاوامر هذه ستأخذ {STRING} لنهاية
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}جدولة الاوامر هذه ستأخذ على الاقل {STRING} لتكتمل (لايشمل كل الجدولة)
@ -3874,10 +3871,8 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}هذه
STR_TIMETABLE_STATUS_LATE :{BLACK}هذه العربه {STRING} مُتاخِرة حاليا عن الجدوله
STR_TIMETABLE_STATUS_EARLY :{BLACK}هذه العربه {STRING} مُتَقَدِمه عن الجدوله
STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}جدولة الاعمال لم تبدأ بعد
STR_TIMETABLE_STATUS_START_AT :{BLACK}جدولة الاعمال ستبدأ فى {STRING}
STR_TIMETABLE_STARTING_DATE :{BLACK}تاريخ البدأ
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}حدد تاريخًا كنقطة بداية لهذا الجدول الزمني. Ctrl + Click يوزع جميع المركبات التي تشارك هذا الطلب بالتساوي من التاريخ المحدد بناءً على ترتيبها النسبي ، إذا كان الطلب محددًا بجدول زمني كامل
STR_TIMETABLE_CHANGE_TIME :{BLACK}غير الوقت
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}غير مقدار الزمن الذي يستغرقه هذا الامر

@ -226,6 +226,7 @@ STR_UNITS_HEIGHT_IMPERIAL :{DECIMAL}{NBSP}
STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP}m
STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP}m
# Common window strings
STR_LIST_FILTER_TITLE :{BLACK}Lokarri iragazkia:
STR_LIST_FILTER_OSKTITLE :{BLACK}Sartu lokarri iragazkia
@ -660,8 +661,6 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Musika k
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Musika kantan clik egin uneko programatik ezabatzeko (Perstonala1 edo Pertsonala2 bakarrik)
# Highscore window
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Top companiak {NUM}
STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Konpainien Ligaren Tabla {NUM}-tan
STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}.
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Negozio gizona
STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Empresaria
@ -1445,8 +1444,7 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Gaitu ibilgailu
STR_CONFIG_SETTING_LOADING_INDICATORS :Zama adierazleak erabili: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Aukeratu ibilgailuen zama lanen adierazlea ikusgai dagoen ibilgailuen gainean
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Ordutegiak tick-etan erakutsi egunetan erakutsi ordez: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Erakutsi denbora tauletako denbora jokoaren uniteetan egunak erabili ordez
###length 3
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Iritsierak eta irteerak ordutegietan erakutsi: {STRING}
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Erakutsi aurreikusitako iritsiera eta irteera denborak denbora tauletan
@ -3894,8 +3892,6 @@ STR_TIMETABLE_TRAVEL_FOR :{STRING} bidaia
STR_TIMETABLE_TRAVEL_FOR_SPEED :{STRING}-ra bidaiatu gehienez {VELOCITY}ra
STR_TIMETABLE_STAY_FOR :{STRING} gelditu
STR_TIMETABLE_AND_TRAVEL_FOR :{STRING} bidaiatu
STR_TIMETABLE_DAYS :{COMMA}{NBSP}egun{P "" ak}
STR_TIMETABLE_TICKS :{COMMA}{NBSP}tick{P "" ak}
STR_TIMETABLE_TOTAL_TIME :{BLACK}Ordutegi honek {STRING} beharko du betetzeko
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Ordutegi honek gutxienez {STRING} beharko du (ez ordutegi guztiak)
@ -3904,9 +3900,8 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Ibilgail
STR_TIMETABLE_STATUS_LATE :{BLACK}Ibilgailu hau {STRING} berandu dabil
STR_TIMETABLE_STATUS_EARLY :{BLACK}Ibilgailu hau {STRING} aurreratua dabil
STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Ordutegia ez da hasi
STR_TIMETABLE_STATUS_START_AT :{BLACK} {STRING} hasiko da ordutegia
STR_TIMETABLE_STARTING_DATE :{BLACK}Hasiera data
STR_TIMETABLE_CHANGE_TIME :{BLACK}Denbora aldatu
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Piztutako agindua betzeko denbora aldatu

@ -539,6 +539,7 @@ STR_UNITS_HEIGHT_IMPERIAL :{DECIMAL}{NBSP}
STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP}м
STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP}м
# Common window strings
STR_LIST_FILTER_TITLE :{BLACK}Фільтар:
STR_LIST_FILTER_OSKTITLE :{BLACK}Увядзіце радок фільтра
@ -987,8 +988,6 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Клік
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Клікніце па назьве трэка, каб выдаліць яго з уласнай праґрамы
# Highscore window
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Найбуйнейшыя кампаніі, якія дасягнулі {NUM}
STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Табліца кампаніяў у {NUM}
STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}.
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Бізнэсоўца
STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Прадпрымальнік
@ -1821,8 +1820,7 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Дазволі
STR_CONFIG_SETTING_LOADING_INDICATORS :Паказваць індыкатар загрузкі: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Выбраць, ці будуць паказвацца індыкатары загрузкі над транспартам, які грузіцца ці разгружаецца.
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Паказваць расклад ў «ціках» замест дзён: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Паказваць у раскладзе час падарожжа ў гульнёвых "ціках" замест дзён.
###length 3
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Паказваць у раскладах час прыбыцьця й адпраўленьня: {STRING}
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Паказваць верагодны час прыбыцьця й адпраўленьня ў раскладах.
@ -4497,8 +4495,6 @@ STR_TIMETABLE_STAY_FOR_ESTIMATED :(чакаць {
STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(у дарозе {STRING}, графік не складзены)
STR_TIMETABLE_STAY_FOR :і чакаць {STRING}
STR_TIMETABLE_AND_TRAVEL_FOR :і рухацца да {STRING}
STR_TIMETABLE_DAYS :{COMMA}{NBSP}д{P зень нi зён}
STR_TIMETABLE_TICKS :{COMMA}{NBSP}цiк{P "" i аў}
STR_TIMETABLE_TOTAL_TIME :{BLACK}Увесь маршрут зойме {STRING}
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Рух па маршруце зойме {STRING} (ня ўсё ўлічана)
@ -4507,10 +4503,8 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Гэты
STR_TIMETABLE_STATUS_LATE :{BLACK}Гэты транспарт спазьняецца на {STRING}
STR_TIMETABLE_STATUS_EARLY :{BLACK}Гэты транспарт апярэджвае ґрафік на {STRING}
STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Ґрафік руху яшчэ не ўсталяваны
STR_TIMETABLE_STATUS_START_AT :{BLACK}Адлік часу пачнецца з {STRING}
STR_TIMETABLE_STARTING_DATE :{BLACK}Пачатковая дата
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Выберыце пачатковую дату для гэтага ґрафіка. Ctrl+пстрычка ўсталюе пачатковую дату і раўнамерна разьмяркуе ўсе транспартныя сродкі, якія рухаюцца па гэтым маршруце, калі час руху па ім цалкам разьлічаны.
STR_TIMETABLE_CHANGE_TIME :{BLACK}Зьмяніць час
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Зьмяніць час для вылучанага заданьня

@ -256,6 +256,10 @@ STR_UNITS_HEIGHT_IMPERIAL :{DECIMAL}{NBSP}
STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP}m
STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP}m
STR_UNITS_DAYS :{COMMA}{NBSP}dia{P "" s}
STR_UNITS_SECONDS :{COMMA}{NBSP}sedundo{P "" s}
STR_UNITS_TICKS :{COMMA}{NBSP}tique{P "" s}
# Common window strings
STR_LIST_FILTER_TITLE :{BLACK}Filtro:
STR_LIST_FILTER_OSKTITLE :{BLACK}Insira uma ou mais palavras-chave para filtrar a lista
@ -719,8 +723,7 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Clique n
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Clique na faixa de música para remover do programa atual (apenas Personalizado 1 ou Personalizado 2)
# Highscore window
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}As maiores empresas que alcançaram{NUM}
STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Tabela da Liga das Empresas em {NUM}
STR_HIGHSCORE_TOP_COMPANIES :{BIG_FONT}{BLACK}Melhores empresas
STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}.
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Empresário
STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Empreendedor
@ -1489,7 +1492,7 @@ STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original
STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis
STR_CONFIG_SETTING_TERRAIN_TYPE :Tipo de terreno: {STRING}
STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis apenas) O quão acidentado é o terreno
STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(Apenas TerraGenesis) Relevo do terreno
STR_CONFIG_SETTING_INDUSTRY_DENSITY :Densidade de indústrias: {STRING}
STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Define quantas indústrias devem ser geradas e o nível que deve ser mantido durante o jogo
@ -1498,18 +1501,18 @@ STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Dist máx da bo
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Refinarias são construídas apenas nas bordas, ou no litoral, para ilhas
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Altura da linha de neve: {STRING}
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Controla a que altitude a neve começa nos climas sub-árticos. Neve também afeta geração de indústrias e necessidades para o crescimento das cidades. Só pode ser modificado por meio do Editor de cenário ou é de outra forma calculado por meio de "cobertura de neve"
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Controla a que altura começa a neve no clima sub-ártico. A neve também afeta a geração de indústrias e os requisitos de crescimento das localidades. Só pode ser modificado no Editor de Cenário ou então é calculado usando a "cobertura de neve"
STR_CONFIG_SETTING_SNOW_COVERAGE :Cobertura de neve: {STRING}
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Controla a quantidade aproximada de neve no terreno subártico. A neve também afeta os requisitos de geração de indústria e crescimento de cidades. Usado apenas durante a geração de mapas. Terreno logo acima do nível do mar é sempre sem neve
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Controla a quantidade aproximada de neve no clima sub-ártico. A neve também afeta a geração das indústrias e os requisitos de crescimento das localidades. Usado apenas durante a geração do mapa. O terreno logo acima do nível do mar nunca terá neve.
STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_DESERT_COVERAGE :Cobertura do deserto: {STRING}
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Controla a quantidade aproximada de deserto no terreno tropical. O deserto também afeta a geração de indústrias. Usado apenas durante a geração do mapa
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Controla a quantidade aproximada de deserto no clima tropical. O deserto também afeta a geração das indústrias. Usado apenas durante a geração do mapa
STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Irregularidade do terreno: {STRING}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis apenas) Escolhe a frequência de colinas: Terrenos planos têm menos colinas, mais espalhadas. Montanhosos tem mais colinas, que pode se tornar repetitivo
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Apenas TerraGenesis) Escolhe a frequência de montes: paisagens macias têm menos montes e mais espalhados. Paisagens duras têm muitos montes, que podem parecer repetitivos
###length 4
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Muito Regular
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Regular
@ -1517,7 +1520,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Irregular
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Muito Irregular
STR_CONFIG_SETTING_VARIETY :Distribuição de variedade: {STRING}
STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesis apenas) Controla se o mapa contém tanto áreas montanhosas como planas. Como isso apenas torna o mapa mais plano, as outras configurações devem ser mantidas em montanhoso
STR_CONFIG_SETTING_VARIETY_HELPTEXT :(Apenas TerraGenesis) Controla se o mapa contém áreas planas e montanhosas. Como isto apenas torna o mapa mais plano, outras definições devem ser definidas como montanhosas
STR_CONFIG_SETTING_RIVER_AMOUNT :Quantidade de rios: {STRING}
STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Escolha quantos rios a serem gerados
@ -1537,6 +1540,7 @@ STR_CONFIG_SETTING_ROAD_SIDE_LEFT :Dirigem na esqu
STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :Dirigem na direita
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rotação do mapa topográfico: {STRING}
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_TOOLTIP :Escolher como a imagem do mapa topográfico será rotacionado para se ajustar ao mapa do jogo
###length 2
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Sentido Anti-Horário
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Sentido Horário
@ -1657,8 +1661,12 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ativa o uso da
STR_CONFIG_SETTING_LOADING_INDICATORS :Usar indicadores de carga: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Seleciona se os indicadores de carga são exibidos sobre os veículos (des)carregando
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Exibir plano de horário em tiques ao invés de dias: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Mostra tempos de viagem, nos planos de horário, em tiques, ao invés de dias. Um tique equivale a 1/74 dia, ou 1/30 segundo.
STR_CONFIG_SETTING_TIMETABLE_MODE :Unidades de tempo para as ordens: {STRING}
STR_CONFIG_SETTING_TIMETABLE_MODE_HELPTEXT :Selecionar as unidades de tempo usadas nas ordens dos veículos
###length 3
STR_CONFIG_SETTING_TIMETABLE_MODE_DAYS :Dias
STR_CONFIG_SETTING_TIMETABLE_MODE_SECONDS :Segundos
STR_CONFIG_SETTING_TIMETABLE_MODE_TICKS :Tiques
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Mostrar chegada e saída nos planos de horário: {STRING}
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Exibe tempos de chegada e partida anticipados nos planos de horário
@ -2246,9 +2254,9 @@ STR_FACE_SAVE :{BLACK}Salvar
STR_FACE_SAVE_TOOLTIP :{BLACK}Salvar face favorita
STR_FACE_SAVE_DONE :{WHITE}Este rosto irá ser salvo como seu rosto favorito no arquivo de configuração do OpenTTD
STR_FACE_EUROPEAN :{BLACK}Europeu
STR_FACE_SELECT_EUROPEAN :{BLACK}Selecione faces Européias
STR_FACE_SELECT_EUROPEAN :{BLACK}Selecionar faces Européias
STR_FACE_AFRICAN :{BLACK}Africano
STR_FACE_SELECT_AFRICAN :{BLACK}Selecione faces Africanas
STR_FACE_SELECT_AFRICAN :{BLACK}Selecionar faces Africanas
STR_FACE_YES :Sim
STR_FACE_NO :Não
STR_FACE_MOUSTACHE_EARRING_TOOLTIP :{BLACK}Ativar bigode ou brinco
@ -2582,7 +2590,7 @@ STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Conteúd
STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Você está saindo do OpenTTD!
STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Os termos e condições ao baixar conteúdo de fontes externas pode varias.{}Você deverá consultar as fontes para obter instruções de como instalar o conteúdo no OpenTTD.{} Deseja continuar?
STR_CONTENT_FILTER_TITLE :{BLACK}Tag/nome do filtro:
STR_CONTENT_OPEN_URL :{BLACK}Visitar website
STR_CONTENT_OPEN_URL :{BLACK}Visitar a página web
STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Visitar o site desse conteúdo
STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Baixar
STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Baixa o conteúdo selecionado
@ -2592,7 +2600,7 @@ STR_CONTENT_DETAIL_TITLE :{SILVER}INFORMA
###length 5
STR_CONTENT_DETAIL_SUBTITLE_UNSELECTED :{SILVER}Você não selecionou para ser baixado
STR_CONTENT_DETAIL_SUBTITLE_SELECTED :{SILVER}Você selecionou para ser baixado
STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Esse dependente será baixado
STR_CONTENT_DETAIL_SUBTITLE_AUTOSELECTED :{SILVER}Esta dependência foi seleccionada para ser baixada
STR_CONTENT_DETAIL_SUBTITLE_ALREADY_HERE :{SILVER}Você já baixou isso
STR_CONTENT_DETAIL_SUBTITLE_DOES_NOT_EXIST :{SILVER}Esse conteúdo é desconhecido e não pode ser baixado pelo OpenTTD
@ -2660,7 +2668,7 @@ STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Definir
STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}Legenda do Fluxo de Carga
STR_LINKGRAPH_LEGEND_ALL :{BLACK}Todas
STR_LINKGRAPH_LEGEND_NONE :{BLACK}Nenhuma
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Selecione companhias a serem exibidas
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}Selecionar as empresas a serem exibidas
STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP :{BLACK}{STRING}{}{COMPANY}
# Linkgraph legend window and linkgraph legend in smallmap
@ -2941,7 +2949,7 @@ STR_FOUND_TOWN_CITY :{BLACK}Cidade
STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Cidades grandes cresem mais rápido que as cidades normais{}Dependendo das configs. são maiores quando fundadas.
STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Disposição das ruas das cidades
STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Selecione a disposição de ruas a ser utilizada nessa cidade
STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Seleccionar disposição das estradas utilizada para esta localidade
STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Original
STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Melhorado
STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}Quadras 2x2
@ -2950,7 +2958,7 @@ STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Randômi
# Fund new industry window
STR_FUND_INDUSTRY_CAPTION :{WHITE}Financiar Indústria
STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Escolha a indústria apropriada
STR_FUND_INDUSTRY_SELECTION_TOOLTIP :{BLACK}Escolher a indústria apropriada desta lista
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES :{BLACK}Criar indústrias aleatórias
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_TOOLTIP :{BLACK}Cobrir o mapa com indústrias colocadas aleatoriamente
STR_FUND_INDUSTRY_MANY_RANDOM_INDUSTRIES_CAPTION :{WHITE}Criar indústrias aleatórias
@ -2976,10 +2984,10 @@ STR_INDUSTRY_DISPLAY_CHAIN :{BLACK}Cadeia d
STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}Exibe indústrias que suprem e aceitam carga
STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}Exiba também no minimapa
STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}Selecione as indústrias exibidas no minimapa também
STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Seleciona carga
STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Seleciona a carga que você deseja exibir
STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Seleciona indústria
STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Seleciona a indústria que você deseja exibir
STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}Selecionar carga
STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}Selecionar a carga que você deseja exibir
STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}Selecionar a indústria
STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}Selecionar a indústria que você deseja exibir
# Land area window
STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}Informações do Terreno
@ -3202,13 +3210,17 @@ STR_MAPGEN_MAPSIZE :{BLACK}Dimensõ
STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Seleciona o tamanho do mapa em quadrados. O número de quadrados disponíveis será um pouco menor
STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}No. de cidades:
STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP :{BLACK}Selecionar a densidade de cidades ou fornecer um número
STR_MAPGEN_TOWN_NAME_LABEL :{BLACK}Nome das cidades:
STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP :{BLACK}Selecionar o estilo dos nomes das cidades
STR_MAPGEN_DATE :{BLACK}Data:
STR_MAPGEN_DATE_TOOLTIP :{BLACK}Selecionar a data inicial
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}No. de indústrias:
STR_MAPGEN_NUMBER_OF_INDUSTRIES_TOOLTIP :{BLACK}Selecione a densidade de indústrias ou forneça um número
STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Pico mais alto:
STR_MAPGEN_HEIGHTMAP_HEIGHT_TOOLTIP :{BLACK}Escolher o pico mais alto que o jogo tentará criar, medido em elevação acima do nível do mar
STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Aumentar a altura máxima do pico mais alto no mapa por um
STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Diminuir a altura máxima do pico mais alto no mapa por um
STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Diminuir de uma unidade a altura máxima do pico mais alto no mapa
STR_MAPGEN_SNOW_COVERAGE :{BLACK}Cobertura de neve:
STR_MAPGEN_SNOW_COVERAGE_UP :{BLACK}Aumentar em dez porcento a cobertura de neve
STR_MAPGEN_SNOW_COVERAGE_DOWN :{BLACK}Reduzir em dez porcento a cobertura de neve
@ -3219,10 +3231,12 @@ STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Diminuir
STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Tipo de terreno
STR_MAPGEN_SEA_LEVEL :{BLACK}Nível do mar:
STR_MAPGEN_SEA_LEVEL_TOOLTIP :{BLACK}Selecionar o nível do mar
STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Rios:
STR_MAPGEN_SMOOTHNESS :{BLACK}Regularidade
STR_MAPGEN_VARIETY :{BLACK}Distribuição da variedade
STR_MAPGEN_GENERATE :{WHITE}Gerar
STR_MAPGEN_GENERATE_TOOLTIP :{BLACK}Criar o mapa e jogar o OpenTTD!
STR_MAPGEN_NEWGRF_SETTINGS :{BLACK}Definições de NewGRF
STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Mostrar definições de NewGRF
STR_MAPGEN_AI_SETTINGS :{BLACK}Definições de IA
@ -3255,6 +3269,7 @@ STR_MAPGEN_TOWN_NAME_CATALAN :Catalão
# Strings for map borders at game generation
STR_MAPGEN_BORDER_TYPE :{BLACK}Bordas do mapa:
STR_MAPGEN_BORDER_TYPE_TOOLTIP :{BLACK}Escolher as bordas do mapa do jogo
STR_MAPGEN_NORTHWEST :{BLACK}Noroeste
STR_MAPGEN_NORTHEAST :{BLACK}Nordeste
STR_MAPGEN_SOUTHEAST :{BLACK}Sudeste
@ -3267,7 +3282,9 @@ STR_MAPGEN_BORDER_MANUAL :{BLACK}Manual
STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Rotação do mapa topográfico:
STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nome do mapa topográfico:
STR_MAPGEN_HEIGHTMAP_NAME_TOOLTIP :{BLACK}O nome do arquivo de imagem do mapa topográfico
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Tamanho:
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL_TOOLTIP :{BLACK}O tamanho da imagem do mapa topográfico original. Para melhores resultados, cada lado deve ser igual a um comprimento de lado de mapa disponível no OpenTTD, como 256, 512, 1024, etc.
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Altura alvo do pico
@ -3282,6 +3299,7 @@ STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Terra pl
STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Gera uma terra plana
STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Terra randômica
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Altitude da terra plana
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_TOOLTIP :{BLACK}Escolher a elevação do terreno acima do nível do mar
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Mover a altitude da terra plana em uma unidade a menos
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Mover a altitude da terra plana em uma unidade a mais
@ -3309,7 +3327,7 @@ STR_NEWGRF_SETTINGS_CAPTION :{WHITE}Configur
STR_NEWGRF_SETTINGS_INFO_TITLE :{WHITE}Informação detalhada de NewGRF
STR_NEWGRF_SETTINGS_ACTIVE_LIST :{WHITE}Arquivos NewGRF ativos
STR_NEWGRF_SETTINGS_INACTIVE_LIST :{WHITE}Arquivos NewGRF inativos
STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Selecione um modelo:
STR_NEWGRF_SETTINGS_SELECT_PRESET :{ORANGE}Seleccionar predefinição:
STR_NEWGRF_FILTER_TITLE :{ORANGE}Filtro:
STR_NEWGRF_SETTINGS_PRESET_LIST_TOOLTIP :{BLACK}Carrega o padrão selecionado
STR_NEWGRF_SETTINGS_PRESET_SAVE :{BLACK}Salvar padrão
@ -4365,7 +4383,7 @@ STR_REFIT_NEW_CAPACITY_COST_OF_REFIT :{BLACK}Nova cap
STR_REFIT_NEW_CAPACITY_INCOME_FROM_REFIT :{BLACK}Nova capacidade: {GOLD}{CARGO_LONG}{}{BLACK}Lucro vindo da adaptação: {GREEN}{CURRENCY_LONG}
STR_REFIT_NEW_CAPACITY_COST_OF_AIRCRAFT_REFIT :{BLACK}Nova capacidade: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Custo da adaptação: {RED}{CURRENCY_LONG}
STR_REFIT_NEW_CAPACITY_INCOME_FROM_AIRCRAFT_REFIT :{BLACK}Nova capacidade: {GOLD}{CARGO_LONG}, {GOLD}{CARGO_LONG}{}{BLACK}Lucro da adaptação: {GREEN}{CURRENCY_LONG}
STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Selecione os veículos para recuperar. Arrastar com o mouse permite a seleção de vários veículos. Clicar em espaço vazio selecionará todo o veículo. Ctrl+Clique selecionará um veículo e a lista de construção em seguida
STR_REFIT_SELECT_VEHICLES_TOOLTIP :{BLACK}Selecionar os veículos para recuperar. Arrastar com o mouse permite a seleção de vários veículos. Clicar em espaço vazio selecionará todo o veículo. Ctrl+Clique selecionará um veículo e a lista de construção em seguida
###length VEHICLE_TYPES
STR_REFIT_TRAIN_LIST_TOOLTIP :{BLACK}Selecionar tipo de carga para o trem
@ -4567,8 +4585,6 @@ STR_TIMETABLE_STAY_FOR_ESTIMATED :(aguardar por {
STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(viajar para {STRING}, sem horário marcado)
STR_TIMETABLE_STAY_FOR :e ficar durante {STRING}
STR_TIMETABLE_AND_TRAVEL_FOR :e viajar por {STRING}
STR_TIMETABLE_DAYS :{COMMA}{NBSP}dia{P "" s}
STR_TIMETABLE_TICKS :{COMMA}{NBSP}tique{P "" s}
STR_TIMETABLE_TOTAL_TIME :{BLACK}Este horário levará {STRING} para completar
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Este horário levará no mínimo {STRING} para completar (nem todos com horário marcado)
@ -4577,10 +4593,13 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Este ve
STR_TIMETABLE_STATUS_LATE :{BLACK}Este veículo está atualmente circulando {STRING} atrasado
STR_TIMETABLE_STATUS_EARLY :{BLACK}Este veículo está atualmente circulando {STRING} adiantado
STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Este horário ainda não começou
STR_TIMETABLE_STATUS_START_AT :{BLACK}Este horário começará em{STRING}
STR_TIMETABLE_STATUS_START_AT_DATE :{BLACK}Essa ordem irá iniciar às {STRING}
STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}Essa ordem irá iniciar em {COMMA} segundos
STR_TIMETABLE_START :{BLACK}Iniciar Ordem
STR_TIMETABLE_START_TOOLTIP :{BLACK}Selecionar quando essa ordem inicia. Ctrl+Click distribui igualmente a partida de todos os veículos que compartilham essa ordem com base em sua ordem relativa, se a ordem for totalmente programada
STR_TIMETABLE_STARTING_DATE :{BLACK}Data de início
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Seleciona uma data como ponto de partida para esse horário. Ctrl+Clique define o ponto de partida desse horário e distribui todos os veículos que compartilham essa ordem igualmente, baseados na sua ordem relativa, mesmo que a ordem esteja totalmente tabelada
STR_TIMETABLE_START_SECONDS_QUERY :Segundos até a ordem iniciar
STR_TIMETABLE_CHANGE_TIME :{BLACK}Mudar horário
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Mudar a duração do tempo que a ordem em destaque deve durar. Ctrl+Clique define o tempo para todas as ordens
@ -4604,8 +4623,10 @@ STR_TIMETABLE_EXPECTED :{BLACK}Esperado
STR_TIMETABLE_SCHEDULED :{BLACK}Agendado
STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Trocar entre esperado e agendado
STR_TIMETABLE_ARRIVAL :C: {COLOUR}{DATE_TINY}
STR_TIMETABLE_DEPARTURE :P: {COLOUR}{DATE_TINY}
STR_TIMETABLE_ARRIVAL_DATE :A: {COLOUR}{DATE_TINY}
STR_TIMETABLE_DEPARTURE_DATE :D: {COLOUR}{DATE_TINY}
STR_TIMETABLE_ARRIVAL_SECONDS_IN_FUTURE :A: {COLOUR}{COMMA} segundos
STR_TIMETABLE_DEPARTURE_SECONDS_IN_FUTURE :D: {COLOUR}{COMMA} segundos
# Date window (for timetable)
@ -4708,9 +4729,12 @@ STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}Retornar
STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}Retornar adiante no histórico de navegação
STR_TEXTFILE_WRAP_TEXT :{WHITE}Quebra de linha
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :[BLACK}Quebra linhas automaticamente para que o texto caiba na janela
STR_TEXTFILE_VIEW_README :{BLACK}Ver o leia-me
STR_TEXTFILE_VIEW_README :{BLACK}Ver o arquivo Leia-me
STR_TEXTFILE_VIEW_README_TOOLTIP :Ver o arquivo Leia-me para este conteúdo
STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Log de mudanças
STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP :Ver o registro de modificações para este conteúdo
STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licença
STR_TEXTFILE_VIEW_LICENCE_TOOLTIP :Ver a licença para este conteúdo
###length 5
STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} Leia-me de {STRING}
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} log de mudanças de {STRING}

@ -228,6 +228,7 @@ STR_UNITS_HEIGHT_IMPERIAL :{DECIMAL}{NBSP}
STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP}м
STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP}м
# Common window strings
STR_LIST_FILTER_TITLE :{BLACK}Филтриращ низ:
STR_LIST_FILTER_OSKTITLE :{BLACK}Въведете филтър
@ -666,8 +667,6 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Нати
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Натиснете върху парче за да го премахнете от програмата (Custom1 и Custom2 само)
# Highscore window
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Първите компании достигнали {NUM}
STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Таблица Лига на компании в {NUM}
STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}.
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Бизнесмен
STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Предприемач
@ -1468,8 +1467,7 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Разреша
STR_CONFIG_SETTING_LOADING_INDICATORS :Товарни индикатори: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Изберете дали индикаторът за зареждане се показва над превозните средства, които товарят и разтоварват
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Разписанието в цикли вместо дни: {STRING.n}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Показва времената за придвижване в таблиците в игрови единици, вместо в дни
###length 3
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Покажи пристигането и заминаването в расписанията: {STRING}
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Показвай очакваните времена за пристигане и заминаване в таблиците
@ -3971,8 +3969,6 @@ STR_TIMETABLE_STAY_FOR_ESTIMATED :(престой
STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(Пътувай към {STRING}, без разписание)
STR_TIMETABLE_STAY_FOR :и остани за {STRING}
STR_TIMETABLE_AND_TRAVEL_FOR :и отпътувай към {STRING}
STR_TIMETABLE_DAYS :{COMMA}{NBSP}ден{P "" а}
STR_TIMETABLE_TICKS :{COMMA}{NBSP}щракане{P "" та}
STR_TIMETABLE_TOTAL_TIME :{BLACK}Ще трябва {STRING} за това разписание да бъде приключено
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Това разписание ще вземе най-малко {STRING} за да приклучи (не всичко е планирано)
@ -3981,10 +3977,8 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Това
STR_TIMETABLE_STATUS_LATE :{BLACK}Това превозно средство е в момента с {STRING} закъснение
STR_TIMETABLE_STATUS_EARLY :{BLACK}Това превозно средство е в момента с {STRING} по-рано
STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Това разписание още не е започнало
STR_TIMETABLE_STATUS_START_AT :{BLACK}Това разписание ще започне на {STRING}
STR_TIMETABLE_STARTING_DATE :{BLACK}Дата на започване
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK} Изберете начална дата на това разписание. Ctrl + Click задава началната дата и равномерно разпределя всички превозни средства, които споделят тази поръчка, на базата на тяхната относителна поръчка, ако поръчката е изцяло по разписание
STR_TIMETABLE_CHANGE_TIME :{BLACK}Промени времето
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Промени времетраенето на маркираната заповед

@ -256,6 +256,7 @@ STR_UNITS_HEIGHT_IMPERIAL :{DECIMAL}{NBSP}
STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP}m
STR_UNITS_HEIGHT_SI :{G=Masculin}{DECIMAL}{NBSP}m
# Common window strings
STR_LIST_FILTER_TITLE :{BLACK}Filtre:
STR_LIST_FILTER_OSKTITLE :{BLACK}Introduïu una o més paraules per a filtrar la llista de
@ -719,8 +720,6 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Clica la
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Clica la pista de música per treure-la de la llista actual (només en llistes personalitzables)
# Highscore window
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Principals companyies que han arribat al {NUM}
STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Taula de la lliga de companyies a {NUM}
STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}.
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Empresari
STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Emprenedor
@ -1657,8 +1656,7 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Activa la utili
STR_CONFIG_SETTING_LOADING_INDICATORS :Utilitza indicadors de càrrega: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Selecciona si els indicadors de càrrega seran mostrats sobre els vehicles en càrrega o descàrrega
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Mostra horaris amb marques en lloc de dies: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Mostra els temps de viatge als horaris en marques en lloc de dies
###length 3
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Mostra l'arribada i la sortida als horaris: {STRING}
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Mostra als horaris l'arribada anticipadament i les hores de sortida
@ -2582,7 +2580,7 @@ STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Cerca co
STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Esteu sortint de l'OpenTTD.
STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}Els termes i condicions per descarregar contingut des de webs externes varia.{}Haureu d'adreçar-vos a les webs externes per trobar instruccions sobre com instal·lar contingut a l'OpenTTD.{}Voleu continuar?
STR_CONTENT_FILTER_TITLE :{BLACK}Marca/anomena filtre:
STR_CONTENT_OPEN_URL :{BLACK}Visita la web
STR_CONTENT_OPEN_URL :{BLACK}Lloc web
STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Visita la web per accedir a aquest contingut
STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Descarrega
STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Comença a descarregar el contingut seleccionat
@ -4567,8 +4565,6 @@ STR_TIMETABLE_STAY_FOR_ESTIMATED :(quedar-s'hi du
STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(viatja durant {STRING}, sense horari)
STR_TIMETABLE_STAY_FOR :i estigues {STRING}
STR_TIMETABLE_AND_TRAVEL_FOR :i viatge per {STRING}
STR_TIMETABLE_DAYS :{COMMA}{NBSP}di{P a es}
STR_TIMETABLE_TICKS :{COMMA}{NBSP}mar{P ca ques}
STR_TIMETABLE_TOTAL_TIME :{BLACK}L'horari tardarà {STRING} a complir-se
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}L'horari tardarà almenys {STRING} a complir-se (no tot està planificat)
@ -4577,10 +4573,8 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Actualme
STR_TIMETABLE_STATUS_LATE :{BLACK}Actualment aquest vehicle va {STRING} tard
STR_TIMETABLE_STATUS_EARLY :{BLACK}Actualment aquest vehicle va {STRING} d'hora
STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Aquest horari encara no ha començat
STR_TIMETABLE_STATUS_START_AT :{BLACK}Aquest horari començarpa a {STRING}
STR_TIMETABLE_STARTING_DATE :{BLACK}Data de partida
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Seleccioneu una data com a punt de partida d'aquest horari. Amb Ctrl+Clic, distribueix els vehicles que comparteixen aquesta ruta a partir de la data establerta i la seva ordre relativa, sempre que la ruta tingui l'horari complet.
STR_TIMETABLE_CHANGE_TIME :{BLACK}Canvia Temps
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Canvia el emps que l'ordre marcada hauria de prendre. Amb Ctrl+clic estableix el temps per a totes les ordres.
@ -4604,8 +4598,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Esperat
STR_TIMETABLE_SCHEDULED :{BLACK}Planificat
STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Canvia entre esperat i planificat
STR_TIMETABLE_ARRIVAL :A: {COLOUR}{DATE_TINY}
STR_TIMETABLE_DEPARTURE :S: {COLOUR}{DATE_TINY}
# Date window (for timetable)
@ -4708,9 +4700,12 @@ STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}Torneu e
STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}Aneu avant segons l'historial de navegació.
STR_TEXTFILE_WRAP_TEXT :{WHITE}Ajusta text
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Ajusta el text afegint-hi canvis de línia, de manera que sigui més fàcil desplaçar-se pel text
STR_TEXTFILE_VIEW_README :{BLACK}Veure llegeix-me
STR_TEXTFILE_VIEW_README :{BLACK}Llegeix-me
STR_TEXTFILE_VIEW_README_TOOLTIP :Mostra el fitxer d'informació d'aquest contingut
STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Registre de canvis
STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP :Mostra el registre de canvis d'aquest contingut
STR_TEXTFILE_VIEW_LICENCE :{BLACK}Llicència
STR_TEXTFILE_VIEW_LICENCE_TOOLTIP :Mostra la llicència d'aquest contingut
###length 5
STR_TEXTFILE_README_CAPTION :{WHITE}Llegeix-me del {STRING} de {STRING}
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}Registre de canvis del {STRING} de {STRING}

@ -167,6 +167,7 @@ STR_UNITS_POWER_SI :{DECIMAL}кВт
# Common window strings
@ -715,6 +716,7 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31
###length 3
@ -1571,6 +1573,7 @@ STR_ORDER_GO_TO_STATION :{STRING} {STATI
# Date window (for timetable)

@ -323,6 +323,7 @@ STR_UNITS_HEIGHT_IMPERIAL :{DECIMAL}{NBSP}
STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP}m
STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP}m
# Common window strings
STR_LIST_FILTER_TITLE :{BLACK}Filtriraj niz:
STR_LIST_FILTER_OSKTITLE :{BLACK}Unesi znak za filter
@ -776,8 +777,6 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klikni n
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klikni na glazbenu traku kako bi ju uklonio iz trenutnog programa (samo Proizvoljno 1 ili Proizvoljno 2)
# Highscore window
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Najbolje tvrtke do {NUM}. godine
STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Tablica tvrtki u {NUM}
STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}.
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Privrednik
STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Poduzetnik
@ -1613,8 +1612,7 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Uključi koriš
STR_CONFIG_SETTING_LOADING_INDICATORS :Koristi pokazatelje ukrcaja: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Odaberi hoće li oznake za ukrcaj biti prikazane iznad vozila koja se ukrcavaju ili iskrcavaju
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Pokaži vozni red u otkucajima rađe nego u danima: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Prikaži trajanje putovanja u voznim redovima u otkucajima igre umjesto u danima
###length 3
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Pokaži dolaske i odlaske u voznim redovima: {STRING}
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Prikaži predviđena vremena dolaska i odlaska u voznim redovima
@ -4321,8 +4319,6 @@ STR_TIMETABLE_STAY_FOR_ESTIMATED :(stajanje za {S
STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(putovanje za {STRING}, nije mjereno)
STR_TIMETABLE_STAY_FOR :i boravak za {STRING}
STR_TIMETABLE_AND_TRAVEL_FOR :i putovanje za {STRING}
STR_TIMETABLE_DAYS :{COMMA}{NBSP}dan{P "" a a}
STR_TIMETABLE_TICKS :{COMMA}{NBSP}otkucaj{P "" a a}
STR_TIMETABLE_TOTAL_TIME :{BLACK}Ovaj vozni red trebat će {STRING} za završetak
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Ovaj vozni red trebat će najmanje {STRING} za završetak (nije sve raspoređeno)
@ -4331,10 +4327,8 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Ovo vozi
STR_TIMETABLE_STATUS_LATE :{BLACK}Ovo vozilo trenutno {STRING} kasni
STR_TIMETABLE_STATUS_EARLY :{BLACK}Ovo vozilo trenutno stiže {STRING} ranije
STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Ovaj vozni red još nije započeo
STR_TIMETABLE_STATUS_START_AT :{BLACK}Ovaj će vozni red početi u {STRING}
STR_TIMETABLE_STARTING_DATE :{BLACK}Početni datum
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Odaberi datum za početak ovog voznog reda. Ctrl+Klik odabire početnu točku ovog voznog reda i ravnomjerno raspodjeljuje sva vozila koja dijele ovu naredbu prema njihovoj relativnoj naredbi, ako je raspored naredbe potpuno određen
STR_TIMETABLE_CHANGE_TIME :{BLACK}Promijeni vrijeme
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Promijeni količinu vremena koju bi označena naredba trebala uzeti

@ -316,6 +316,7 @@ STR_UNITS_HEIGHT_IMPERIAL :{DECIMAL}{NBSP}
STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP}m
STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP}m
# Common window strings
STR_LIST_FILTER_TITLE :{BLACK}Filtrovat řetězec:
STR_LIST_FILTER_OSKTITLE :{BLACK}Vložte jedno nebo více klíčových slov pro filtr seznamu
@ -789,8 +790,6 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Skladba
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Hudební stopu odstraníš ze současného programu (pouze u vlastního) kliknutím na ni
# Highscore window
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Nejlepší společnosti, které dosáhly {NUM}
STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Tabulka společností v roce {NUM}
STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}.
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Obchodník
STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Manažer
@ -1705,8 +1704,7 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Umožňuje pou
STR_CONFIG_SETTING_LOADING_INDICATORS :Používat ukazatele naložení: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Vyber jestli budou zobrazovány ukazatele naložení nad nakládajícími a vykládajícími vozidly.
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Zobrazit jízdní řády v cyklech místo ve dnech: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Ukazuje cestovní časy v jízdních řádech
###length 3
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Ukazovat v jízdním řádu příjezdy a odjezdy: {STRING}
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Zobrazit předpokládané časy příjezdu a odjezdu v jízdních řádech.
@ -4597,8 +4595,6 @@ STR_TIMETABLE_STAY_FOR_ESTIMATED :(zůstaň {STRI
STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(jet {STRING}, mimo jízdní řád)
STR_TIMETABLE_STAY_FOR :a zůstat {STRING}
STR_TIMETABLE_AND_TRAVEL_FOR :a jet {STRING}
STR_TIMETABLE_DAYS :{COMMA}{NBSP}d{P en ny ní}
STR_TIMETABLE_TICKS :{COMMA}{NBSP}cykl{P us y ů}
STR_TIMETABLE_TOTAL_TIME :{BLACK}Tento jízdní řád bude trvat {STRING}
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Tento jízdní řád bude trvat nejméně {STRING} (vozidla mimo jízdní řád)
@ -4607,10 +4603,8 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Vozidlo
STR_TIMETABLE_STATUS_LATE :{BLACK}Vozidlo má {STRING} zpoždění
STR_TIMETABLE_STATUS_EARLY :{BLACK}Vozidlo jede {STRING} napřed
STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Tento jízdní řád ještě nezačal
STR_TIMETABLE_STATUS_START_AT :{BLACK}Tento jízdní řád začne v {STRING}
STR_TIMETABLE_STARTING_DATE :{BLACK}Datum začátku
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Vyber počáteční datum tohoto jízdního řádu. Ctrl+Klik rovnoměrně rozloží odjezdy jednotlivých vozidel sdílejích příkazy s ohledem na současný jízdní řád.
STR_TIMETABLE_CHANGE_TIME :{BLACK}Změnit čas
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Změnit čas pro splnění jízdního příkazu. Ctrl+klik změní čas pro všechny příkazy.
@ -4634,7 +4628,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Očekáv
STR_TIMETABLE_SCHEDULED :{BLACK}Plánovaný
STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Přepnout mezi očekávaným a plánovaným
STR_TIMETABLE_ARRIVAL :P: {COLOUR}{DATE_TINY}
# Date window (for timetable)

@ -255,6 +255,8 @@ STR_UNITS_HEIGHT_IMPERIAL :{DECIMAL} fod
STR_UNITS_HEIGHT_METRIC :{DECIMAL} m
STR_UNITS_HEIGHT_SI :{DECIMAL} m
STR_UNITS_DAYS :{COMMA}{NBSP}dag{P "" s}
# Common window strings
STR_LIST_FILTER_TITLE :{BLACK}Filtrer udtryk:
STR_LIST_FILTER_OSKTITLE :{BLACK}Indtast filterstreng
@ -718,8 +720,7 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klik på
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klik på et musiknummer for at fjerne det fra programlisten (kun for Custom1/Custom2)
# Highscore window
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Bedste virksomheder, som har nået {NUM}
STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Selskabsoversigt i {NUM}
STR_HIGHSCORE_TOP_COMPANIES :{BIG_FONT}{BLACK}Top virksomheder
STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}.
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Forretningsmand
STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Entreprenør
@ -1536,6 +1537,7 @@ STR_CONFIG_SETTING_ROAD_SIDE_LEFT :Kør i venstre
STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :Kør i højre side
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Rotér højdekort: {STRING}
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_TOOLTIP :Vælg, hvilken vej højdekortets billede skal roteres for at passe ind i spilverdenen
###length 2
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Mod uret
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Med uret
@ -1656,8 +1658,10 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Aktiver brug af
STR_CONFIG_SETTING_LOADING_INDICATORS :Benyt laste-indikatorer: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Vælg om lastnings-indikatorer vises ved pålæsning og aflæsning af køretøjer
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Vis køreplan i tik i stedet for dage: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Vis rejsetider i køreplaner i spil ticks i stedet for dage
STR_CONFIG_SETTING_TIMETABLE_MODE_HELPTEXT :Vælg de tidsenheder, der skal bruges til køreplaner
###length 3
STR_CONFIG_SETTING_TIMETABLE_MODE_DAYS :Dage
STR_CONFIG_SETTING_TIMETABLE_MODE_SECONDS :Sekunder
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Vis ankomst og afgang i tidsplaner: {STRING}
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Vis forventede ankomst-og afgangstider i tidsplaner
@ -2346,7 +2350,7 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}Navnet v
STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Sæt kodeord
STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Beskyt dit spil med et kodeord hvis du ikke vil have fremmede med
STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Synlighed
STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Synlighed:
STR_NETWORK_START_SERVER_VISIBILITY_TOOLTIP :{BLACK}Hvorvidt andre kan se din server i den offentlige liste
STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} klient{P "" er}
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maksimalt antal tilladte klienter:
@ -3201,9 +3205,11 @@ STR_MAPGEN_MAPSIZE :{BLACK}Kortstø
STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Vælg kortets størrelse i fliser. Antallet af tilgængelige fliser vil være en anelse mindre
STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Antal byer:
STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP :{BLACK}Vælg tætheden af byer eller et brugerdefineret nummer
STR_MAPGEN_TOWN_NAME_LABEL :{BLACK}Bynavne:
STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP :{BLACK}Vælg stil for bynavne
STR_MAPGEN_DATE :{BLACK}Dato:
STR_MAPGEN_DATE_TOOLTIP :{BLACK}Vælg startdato
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Antal industrier:
STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Højeste bjergtop:
STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Forøger den maksimale højde på højeste bjergtop på kortet med én
@ -3222,6 +3228,7 @@ STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Floder:
STR_MAPGEN_SMOOTHNESS :{BLACK}Blødhed:
STR_MAPGEN_VARIETY :{BLACK}Varietet af distributionen:
STR_MAPGEN_GENERATE :{WHITE}Generer
STR_MAPGEN_GENERATE_TOOLTIP :{BLACK}Skab en verden og spil OpenTTD!
STR_MAPGEN_NEWGRF_SETTINGS :{BLACK}NewGRF indstillinger
STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Vis indstillinger for NewGRF
STR_MAPGEN_AI_SETTINGS :{BLACK}AI indstillinger
@ -4566,8 +4573,6 @@ STR_TIMETABLE_STAY_FOR_ESTIMATED :(ophold for {ST
STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(rejse for {STRING}, ikke skemalagt)
STR_TIMETABLE_STAY_FOR :og vent i {STRING}
STR_TIMETABLE_AND_TRAVEL_FOR :og rejs i {STRING}
STR_TIMETABLE_DAYS :{COMMA} dag{P "" e}
STR_TIMETABLE_TICKS :{COMMA} tik
STR_TIMETABLE_TOTAL_TIME :{BLACK}Denne køreplan vil tage {STRING} at fuldføre
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Denne køreplan vil tage mindst {STRING} at fuldføre (ikke alt indført i køreplan)
@ -4576,10 +4581,13 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Dette tr
STR_TIMETABLE_STATUS_LATE :{BLACK}Dette transportmiddel er nu {STRING} forsinket
STR_TIMETABLE_STATUS_EARLY :{BLACK}Dette transportmiddel er nu {STRING} foran køreplanen
STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Denne tidsplan er endnu ikke begyndt.
STR_TIMETABLE_STATUS_START_AT :{BLACK}Denne tidsplan vil starte på {STRING}
STR_TIMETABLE_STATUS_START_AT_DATE :{BLACK}Denne tidsplan starter kl {STRING}
STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}Denne tidsplan starter om {COMMA} Sekunder
STR_TIMETABLE_START :{BLACK}Start tidsplan
STR_TIMETABLE_START_TOOLTIP :{BLACK}Vælg, hvornår denne tidsplan starter. Ctrl+klik fordeler starten af alle køretøjer, der deler denne rækkefølge, jævnt baseret på deres relative rækkefølge, hvis ordren er fuldstændig tidsplanlagt
STR_TIMETABLE_STARTING_DATE :{BLACK}Startdato
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Vælg en dato som starttidspunkt for denne køreplan. Ctrl+Klik sætter starttidspunkt for denne køreplan, og distribuerer alle køretøjer der deler denne ordre ligeligt baseret på deres relative rækkefølge, hvis ordren er fuldstændigt tidsplanlagt
STR_TIMETABLE_START_SECONDS_QUERY :Sekunder til tidsplanen starter
STR_TIMETABLE_CHANGE_TIME :{BLACK}Ændre tid
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Ændre den tid, som den fremhævede rækkefølge skal tage. Ctrl+Click angiver tidspunktet for alle ordrer
@ -4603,8 +4611,9 @@ STR_TIMETABLE_EXPECTED :{BLACK}Forvente
STR_TIMETABLE_SCHEDULED :{BLACK}Planlagt
STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Skift mellem forventet og tidslagt
STR_TIMETABLE_ARRIVAL :A: {COLOUR}{DATE_TINY}
STR_TIMETABLE_DEPARTURE :D: {COLOUR}{DATE_TINY}
STR_TIMETABLE_ARRIVAL_DATE :A: {COLOUR}{DATE_TINY}
STR_TIMETABLE_DEPARTURE_DATE :D: {COLOUR}{DATE_TINY}
STR_TIMETABLE_ARRIVAL_SECONDS_IN_FUTURE :A: {COLOUR}{COMMA} sek
# Date window (for timetable)
@ -4708,8 +4717,11 @@ STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}Vend til
STR_TEXTFILE_WRAP_TEXT :{WHITE}Ombryd tekst
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Ombryd teksten i vinduet, så det hele passer uden at skulle rulle
STR_TEXTFILE_VIEW_README :{BLACK}Se readme
STR_TEXTFILE_VIEW_README_TOOLTIP :Se readme for dette indhold
STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Ændringslog
STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP :Se ændringslog for dette indhold
STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licens
STR_TEXTFILE_VIEW_LICENCE_TOOLTIP :Se licens til dette indhold
###length 5
STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme for {STRING}
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} ændringslog for {STRING}

@ -255,6 +255,10 @@ STR_UNITS_HEIGHT_IMPERIAL :{DECIMAL}{NBSP}
STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP}m
STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP}m
STR_UNITS_DAYS :{COMMA}{NBSP}dag{P "" en}
STR_UNITS_SECONDS :{COMMA}{NBSP}seconde{P "" n}
STR_UNITS_TICKS :{COMMA}{NBSP}tik{P "" ken}
# Common window strings
STR_LIST_FILTER_TITLE :{BLACK}Filter:
STR_LIST_FILTER_OSKTITLE :{BLACK}Voer een of meer woorden in waarop de lijst wordt gefilterd
@ -718,8 +722,7 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Klik op
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Klik op een nummer om dit uit het programma te verwijderen (alleen Aangepast1 en Aangepast2)
# Highscore window
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Best presterende bedrijven die {NUM} bereikt hebben
STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Bedrijfsscoretabel in {NUM}
STR_HIGHSCORE_TOP_COMPANIES :{BIG_FONT}{BLACK}Hoogst genoteerde bedrijven
STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}.
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :ZZP'er
STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Ondernemer
@ -1656,8 +1659,12 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Schakelt het ge
STR_CONFIG_SETTING_LOADING_INDICATORS :Laadpercentages gebruiken: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Geef aan of laadindicatoren worden weergegeven boven ladende of lossende voertuigen
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Dienstregeling in tikken weergeven i.p.v. in dagen: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Reistijden in tijdtabellen in speltikken weergeven in plaats van dagen
STR_CONFIG_SETTING_TIMETABLE_MODE :Tijdeenheid voor dienstregelingen: {STRING}
STR_CONFIG_SETTING_TIMETABLE_MODE_HELPTEXT :Selecteer de tijdeenheid voor dienstregelingen
###length 3
STR_CONFIG_SETTING_TIMETABLE_MODE_DAYS :Dagen
STR_CONFIG_SETTING_TIMETABLE_MODE_SECONDS :Seconden
STR_CONFIG_SETTING_TIMETABLE_MODE_TICKS :Tikken
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Aankomst- en vertrektijden in dienstregeling weergeven: {STRING}
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Geef de verwachte aankomst-en vertrektijden in de dienstregeling weer
@ -2346,7 +2353,7 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}De speln
STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Wachtwoord instellen
STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Beveilig je spel met een wachtwoord als je niet wilt dat dit algemeen toegankelijk is
STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Zichtbaarheid
STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Zichtbaarheid:
STR_NETWORK_START_SERVER_VISIBILITY_TOOLTIP :{BLACK}Bepaalt of andere mensen je server kunnen zien in de openbare lijst
STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} speler{P "" s}
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximumaantal spelers:
@ -2581,7 +2588,7 @@ STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Zoek inh
STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}Je verlaat OpenTTD!
STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}De voorwaarden voor het downloaden van inhoud van externe websites variëren.{}Ga naar de externe website voor instructies over het installeren van de inhoud in OpenTTD.{}Wil je doorgaan?
STR_CONTENT_FILTER_TITLE :{BLACK}Tag-/naamfilter:
STR_CONTENT_OPEN_URL :{BLACK}Website bezoeken
STR_CONTENT_OPEN_URL :{BLACK}Website
STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Bezoek de website voor deze inhoud
STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Download
STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Start met het downloaden van de geselecteerde inhoud
@ -4566,8 +4573,6 @@ STR_TIMETABLE_STAY_FOR_ESTIMATED :(wacht gedurend
STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(reis gedurende {STRING}, geen dienstregeling)
STR_TIMETABLE_STAY_FOR :en blijf gedurende {STRING}
STR_TIMETABLE_AND_TRAVEL_FOR :en rijd {STRING}
STR_TIMETABLE_DAYS :{COMMA}{NBSP}dag{P "" en}
STR_TIMETABLE_TICKS :{COMMA}{NBSP}tik{P "" ken}
STR_TIMETABLE_TOTAL_TIME :{BLACK}Deze dienstregeling duurt {STRING}
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Deze dienstregeling duurt minstens {STRING} (niet alles ingeroosterd)
@ -4576,10 +4581,13 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Dit voer
STR_TIMETABLE_STATUS_LATE :{BLACK}Dit voertuig heeft {STRING} vertraging
STR_TIMETABLE_STATUS_EARLY :{BLACK}Dit voertuig is {STRING} te vroeg
STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Deze dienstregeling is nog niet gestart
STR_TIMETABLE_STATUS_START_AT :{BLACK}Deze dienstregeling begint op {STRING}
STR_TIMETABLE_STATUS_START_AT_DATE :{BLACK}Deze dienstregeling begint om {STRING}
STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}Deze dienstregeling start over {COMMA} seconden
STR_TIMETABLE_START :{BLACK}Start dienstregeling
STR_TIMETABLE_START_TOOLTIP :{BLACK}Selecteer wanneer deze dienstregeling start. Ctrl+klik verdeelt de start van alle voertuigen met deze orders op basis van hun relatieve volgorde, mits de order een volledige dienstregeling heeft
STR_TIMETABLE_STARTING_DATE :{BLACK}Startdatum
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Selecteer een datum als startpunt voor deze dienstregeling. Ctrl+klik verdeelt alle voertuigen die deze orders delen gelijkmatig vanaf deze datum op basis van hun relatieve volgorde, als de order volledig is ingeroosterd
STR_TIMETABLE_START_SECONDS_QUERY :Seconden tot de dienstregeling start
STR_TIMETABLE_CHANGE_TIME :{BLACK}Tijd wijzigen
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Verander de tijdsduur die de geselecteerde order mag duren. Met Ctrl+klik stel je de tijd voor alle orders in
@ -4603,8 +4611,10 @@ STR_TIMETABLE_EXPECTED :{BLACK}Verwacht
STR_TIMETABLE_SCHEDULED :{BLACK}Volgens dienstregeling
STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Wissel tussen verwacht en volgens dienstregeling
STR_TIMETABLE_ARRIVAL :A: {COLOUR}{DATE_TINY}
STR_TIMETABLE_DEPARTURE :D: {COLOUR}{DATE_TINY}
STR_TIMETABLE_ARRIVAL_DATE :A: {COLOUR}{DATE_TINY}
STR_TIMETABLE_DEPARTURE_DATE :V: {COLOUR}{DATE_TINY}
STR_TIMETABLE_ARRIVAL_SECONDS_IN_FUTURE :A: {COLOUR}{COMMA} sec
STR_TIMETABLE_DEPARTURE_SECONDS_IN_FUTURE :V: {COLOUR}{COMMA} sec
# Date window (for timetable)
@ -4707,9 +4717,12 @@ STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}Terug in
STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}Vooruit in de bladergeschiedenis
STR_TEXTFILE_WRAP_TEXT :{WHITE}Tekst afbreken
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Tekst aanpassen aan venster zodat je niet hoeft te bladeren
STR_TEXTFILE_VIEW_README :{BLACK}Leesmij-bestand bekijken
STR_TEXTFILE_VIEW_README :{BLACK}Leesmij-bestand
STR_TEXTFILE_VIEW_README_TOOLTIP :Leesmij-bestand bekijken
STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Wijzigingen
STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP :Overzicht van wijzigingen bekijken
STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licentie
STR_TEXTFILE_VIEW_LICENCE_TOOLTIP :Licentie bekijken
###length 5
STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} leesmij van {STRING}
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} wijzigingen van {STRING}

@ -255,6 +255,10 @@ STR_UNITS_HEIGHT_IMPERIAL :{DECIMAL}{NBSP}
STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP}m
STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP}m
STR_UNITS_DAYS :{COMMA}{NBSP}day{P "" s}
STR_UNITS_SECONDS :{COMMA}{NBSP}second{P "" s}
STR_UNITS_TICKS :{COMMA}{NBSP}tick{P "" s}
# Common window strings
STR_LIST_FILTER_TITLE :{BLACK}Filter:
STR_LIST_FILTER_OSKTITLE :{BLACK}Enter one or more keywords to filter the list for
@ -718,8 +722,7 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Click on
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Click on music track to remove it from current programme (Custom1 or Custom2 only)
# Highscore window
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Top companies who reached {NUM}
STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Company League Table in {NUM}
STR_HIGHSCORE_TOP_COMPANIES :{BIG_FONT}{BLACK}Top companies
STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}.
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Businessperson
STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Entrepreneur
@ -1488,7 +1491,7 @@ STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original
STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis
STR_CONFIG_SETTING_TERRAIN_TYPE :Terrain type: {STRING2}
STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis only) Hilliness of the landscape
STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :Choose the height of hills and mountains of the landscape
STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industry density: {STRING2}
STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Set how many industries should be generated and what level should be maintained during the game
@ -1497,18 +1500,18 @@ STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximum distanc
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limit for how far from the map border oil refineries and oil rigs can be constructed. On island maps this ensures they are near the coast. On maps larger than 256 tiles, this value is scaled up.
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snow line height: {STRING2}
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Controls at what height snow starts in sub-arctic landscape. Snow also affects industry generation and town growth requirements. Can only be modified via Scenario Editor or is otherwise calculated via "snow coverage"
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Choose at what height snow starts in sub-arctic landscape. Snow also affects industry generation and town growth requirements. Can only be modified via Scenario Editor or is otherwise calculated via "snow coverage"
STR_CONFIG_SETTING_SNOW_COVERAGE :Snow coverage: {STRING2}
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Controls the approximate amount of snow on the sub-arctic landscape. Snow also affects industry generation and town growth requirements. Only used during map generation. Land just above sea level is always without snow
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Choose the approximate amount of snow on the sub-arctic landscape. Snow also affects industry generation and town growth requirements. Only used during map generation. Sea level and coast tiles never have snow.
STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_DESERT_COVERAGE :Desert coverage: {STRING2}
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Control the approximate amount of desert on the tropical landscape. Desert also affects industry generation. Only used during map generation
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Choose the approximate amount of desert on the tropical landscape. Desert also affects industry generation and town growth requirements. Only used during map generation
STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Roughness of terrain: {STRING2}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis only) Choose the frequency of hills: Smooth landscapes have fewer, more wide-spread hills. Rough landscapes have many hills, which may look repetitive
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Choose the shape and number of hills. Smooth landscapes have fewer, wider hills, while rough landscapes have more, smaller hills.
###length 4
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Very Smooth
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Smooth
@ -1516,7 +1519,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Rough
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Very Rough
STR_CONFIG_SETTING_VARIETY :Variety distribution: {STRING2}
STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesis only) Control whether the map contains both mountainous and flat areas. Since this only makes the map flatter, other settings should be set to mountainous
STR_CONFIG_SETTING_VARIETY_HELPTEXT :Choose if the map contains both mountains and flat areas. The higher the variety, the more differences in elevation between mountainous and flat areas.
STR_CONFIG_SETTING_RIVER_AMOUNT :River amount: {STRING2}
STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Choose how many rivers to generate
@ -1536,6 +1539,7 @@ STR_CONFIG_SETTING_ROAD_SIDE_LEFT :Drive on left
STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :Drive on right
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Heightmap rotation: {STRING2}
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_TOOLTIP :Choose which way the heightmap image is rotated to fit into the game world
###length 2
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Counter clockwise
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Clockwise
@ -1656,8 +1660,12 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Enable usage of
STR_CONFIG_SETTING_LOADING_INDICATORS :Use loading indicators: {STRING2}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Select whether loading indicators are displayed above loading or unloading vehicles
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Show timetable in ticks rather than days: {STRING2}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Show travel times in time tables in game ticks instead of days
STR_CONFIG_SETTING_TIMETABLE_MODE :Time units for timetables: {STRING2}
STR_CONFIG_SETTING_TIMETABLE_MODE_HELPTEXT :Select the time units used for vehicle timetables
###length 3
STR_CONFIG_SETTING_TIMETABLE_MODE_DAYS :Days
STR_CONFIG_SETTING_TIMETABLE_MODE_SECONDS :Seconds
STR_CONFIG_SETTING_TIMETABLE_MODE_TICKS :Ticks
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Show arrival and departure in timetables: {STRING2}
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Display anticipated arrival and departure times in timetables
@ -2346,7 +2354,7 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}The game
STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Set password
STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protect your game with a password if you don't want it to be publicly accessible
STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Visibility
STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Visibility:
STR_NETWORK_START_SERVER_VISIBILITY_TOOLTIP :{BLACK}Whether other people can see your server in the public listing
STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} client{P "" s}
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximum number of clients:
@ -2581,7 +2589,7 @@ STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Search c
STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}You are leaving OpenTTD!
STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}The terms and conditions for downloading content from external websites vary.{}You will have to refer to the external sites for instructions how to install the content into OpenTTD.{}Do you want to continue?
STR_CONTENT_FILTER_TITLE :{BLACK}Tag/name filter:
STR_CONTENT_OPEN_URL :{BLACK}Visit website
STR_CONTENT_OPEN_URL :{BLACK}Website
STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Visit the website for this content
STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Download
STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Start downloading the selected content
@ -3201,11 +3209,15 @@ STR_MAPGEN_MAPSIZE :{BLACK}Map size
STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Select the size of the map in tiles. The number of available tiles will be slightly smaller
STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}No. of towns:
STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP :{BLACK}Select the density of towns, or a custom number
STR_MAPGEN_TOWN_NAME_LABEL :{BLACK}Town names:
STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP :{BLACK}Select style of town names
STR_MAPGEN_DATE :{BLACK}Date:
STR_MAPGEN_DATE_TOOLTIP :{BLACK}Select starting date
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}No. of industries:
STR_MAPGEN_NUMBER_OF_INDUSTRIES_TOOLTIP :{BLACK}Select the density of industries, or a custom number
STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Highest peak:
STR_MAPGEN_HEIGHTMAP_HEIGHT_TOOLTIP :{BLACK}Choose the highest peak that the game will attempt to create, measured in elevation above sea level
STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Increase the maximum height of highest peak on the map by one
STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Decrease the maximum height of highest peak on the map by one
STR_MAPGEN_SNOW_COVERAGE :{BLACK}Snow coverage:
@ -3218,10 +3230,12 @@ STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Decrease
STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrain type:
STR_MAPGEN_SEA_LEVEL :{BLACK}Sea level:
STR_MAPGEN_SEA_LEVEL_TOOLTIP :{BLACK}Select the sea level
STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Rivers:
STR_MAPGEN_SMOOTHNESS :{BLACK}Smoothness:
STR_MAPGEN_VARIETY :{BLACK}Variety distribution:
STR_MAPGEN_GENERATE :{WHITE}Generate
STR_MAPGEN_GENERATE_TOOLTIP :{BLACK}Create the world and play OpenTTD!
STR_MAPGEN_NEWGRF_SETTINGS :{BLACK}NewGRF Settings
STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Display NewGRF settings
STR_MAPGEN_AI_SETTINGS :{BLACK}AI Settings
@ -3254,6 +3268,7 @@ STR_MAPGEN_TOWN_NAME_CATALAN :Catalan
# Strings for map borders at game generation
STR_MAPGEN_BORDER_TYPE :{BLACK}Map edges:
STR_MAPGEN_BORDER_TYPE_TOOLTIP :{BLACK}Choose the borders of the game world
STR_MAPGEN_NORTHWEST :{BLACK}Northwest
STR_MAPGEN_NORTHEAST :{BLACK}Northeast
STR_MAPGEN_SOUTHEAST :{BLACK}Southeast
@ -3266,7 +3281,9 @@ STR_MAPGEN_BORDER_MANUAL :{BLACK}Manual
STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Heightmap rotation:
STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Heightmap name:
STR_MAPGEN_HEIGHTMAP_NAME_TOOLTIP :{BLACK}The name of the heightmap image file
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Size:
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL_TOOLTIP :{BLACK}The size of the source heightmap image. For best results, each edge should match an available map edge length in OpenTTD, such as 256, 512, 1024, etc.
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Target peak height
@ -3281,6 +3298,7 @@ STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Flat lan
STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Generate a flat land
STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Random land
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Height of flat land:
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_TOOLTIP :{BLACK}Choose the height of the land above sea level
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Move the height of flat land one down
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Move the height of flat land one up
@ -4566,8 +4584,6 @@ STR_TIMETABLE_STAY_FOR_ESTIMATED :(stay for {STRI
STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(travel for {STRING1}, not timetabled)
STR_TIMETABLE_STAY_FOR :and stay for {STRING1}
STR_TIMETABLE_AND_TRAVEL_FOR :and travel for {STRING1}
STR_TIMETABLE_DAYS :{COMMA}{NBSP}day{P "" s}
STR_TIMETABLE_TICKS :{COMMA}{NBSP}tick{P "" s}
STR_TIMETABLE_TOTAL_TIME :{BLACK}This timetable will take {STRING1} to complete
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}This timetable will take at least {STRING1} to complete (not all timetabled)
@ -4576,10 +4592,13 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}This veh
STR_TIMETABLE_STATUS_LATE :{BLACK}This vehicle is currently running {STRING1} late
STR_TIMETABLE_STATUS_EARLY :{BLACK}This vehicle is currently running {STRING1} early
STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}This timetable has not yet started
STR_TIMETABLE_STATUS_START_AT :{BLACK}This timetable will start at {STRING1}
STR_TIMETABLE_STATUS_START_AT_DATE :{BLACK}This timetable will start at {STRING1}
STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}This timetable will start in {COMMA} seconds
STR_TIMETABLE_START :{BLACK}Start Timetable
STR_TIMETABLE_START_TOOLTIP :{BLACK}Select when this timetable starts. Ctrl+Click evenly distributes the start of all vehicles sharing this order based on their relative order, if the order is completely timetabled
STR_TIMETABLE_STARTING_DATE :{BLACK}Start date
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Select a date as starting point of this timetable. Ctrl+Click distributes all vehicles sharing this order evenly from the given date based on their relative order, if the order is completely timetabled
STR_TIMETABLE_START_SECONDS_QUERY :Seconds until timetable starts
STR_TIMETABLE_CHANGE_TIME :{BLACK}Change Time
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Change the amount of time that the highlighted order should take. Ctrl+Click sets the time for all orders
@ -4603,8 +4622,10 @@ STR_TIMETABLE_EXPECTED :{BLACK}Expected
STR_TIMETABLE_SCHEDULED :{BLACK}Scheduled
STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Switch between expected and scheduled
STR_TIMETABLE_ARRIVAL :A: {COLOUR}{DATE_TINY}
STR_TIMETABLE_DEPARTURE :D: {COLOUR}{DATE_TINY}
STR_TIMETABLE_ARRIVAL_DATE :A: {COLOUR}{DATE_TINY}
STR_TIMETABLE_DEPARTURE_DATE :D: {COLOUR}{DATE_TINY}
STR_TIMETABLE_ARRIVAL_SECONDS_IN_FUTURE :A: {COLOUR}{COMMA} sec
STR_TIMETABLE_DEPARTURE_SECONDS_IN_FUTURE :D: {COLOUR}{COMMA} sec
# Date window (for timetable)
@ -4632,9 +4653,9 @@ STR_AI_DEBUG_MATCH_CASE :{BLACK}Match ca
STR_AI_DEBUG_MATCH_CASE_TOOLTIP :{BLACK}Toggle matching case when comparing AI log messages against the break string
STR_AI_DEBUG_CONTINUE :{BLACK}Continue
STR_AI_DEBUG_CONTINUE_TOOLTIP :{BLACK}Unpause and continue the AI
STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}View debug output of this AI
STR_AI_DEBUG_SELECT_AI_TOOLTIP :{BLACK}View debug output of this AI. Ctrl-Click to open in a new window
STR_AI_GAME_SCRIPT :{BLACK}Game Script
STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Check the Game Script log
STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Check the Game Script log. Ctrl-Click to open in a new window
STR_ERROR_AI_NO_AI_FOUND :No suitable AI found to load.{}This AI is a dummy AI and won't do anything.{}You can download several AIs via the 'Online Content' system
STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}One of the running scripts crashed. Please report this to the script author with a screenshot of the AI/Game Script Debug Window
@ -4707,9 +4728,12 @@ STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}Go back
STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}Return forward in navigation history
STR_TEXTFILE_WRAP_TEXT :{WHITE}Wrap text
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Wrap the text of the window so it all fits without having to scroll
STR_TEXTFILE_VIEW_README :{BLACK}View readme
STR_TEXTFILE_VIEW_README :{BLACK}Readme
STR_TEXTFILE_VIEW_README_TOOLTIP :View readme for this content
STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Changelog
STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP :View changelog for this content
STR_TEXTFILE_VIEW_LICENCE :{BLACK}Licence
STR_TEXTFILE_VIEW_LICENCE_TOOLTIP :View licence for this content
###length 5
STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme of {RAW_STRING}
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} changelog of {RAW_STRING}

@ -255,6 +255,10 @@ STR_UNITS_HEIGHT_IMPERIAL :{DECIMAL}{NBSP}
STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP}m
STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP}m
STR_UNITS_DAYS :{COMMA}{NBSP}day{P "" s}
STR_UNITS_SECONDS :{COMMA}{NBSP}second{P "" s}
STR_UNITS_TICKS :{COMMA}{NBSP}tick{P "" s}
# Common window strings
STR_LIST_FILTER_TITLE :{BLACK}Filter:
STR_LIST_FILTER_OSKTITLE :{BLACK}Enter one or more keywords to filter the list for
@ -718,8 +722,7 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Click on
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Click on music track to remove it from current programme (Custom1 or Custom2 only)
# Highscore window
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Top companies who reached {NUM}
STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Company League Table in {NUM}
STR_HIGHSCORE_TOP_COMPANIES :{BIG_FONT}{BLACK}Top companies
STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}.
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Businessperson
STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Entrepreneur
@ -1488,7 +1491,7 @@ STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original
STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis
STR_CONFIG_SETTING_TERRAIN_TYPE :Terrain type: {STRING}
STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis only) Hilliness of the landscape
STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :Choose the height of hills and mountains of the landscape
STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industry density: {STRING}
STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Set how many industries should be generated and what level should be maintained during the game
@ -1497,18 +1500,18 @@ STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximum distanc
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Oil refineries are only constructed near the map border, that is at the coast for island maps
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snow line height: {STRING}
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Controls at what height snow starts in sub-arctic landscape. Snow also affects industry generation and town growth requirements. Can only be modified via Scenario Editor or is otherwise calculated via "snow coverage"
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Choose at what height snow starts in sub-arctic landscape. Snow also affects industry generation and town growth requirements. Can only be modified via Scenario Editor or is otherwise calculated via "snow coverage"
STR_CONFIG_SETTING_SNOW_COVERAGE :Snow coverage: {STRING}
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Controls the approximate amount of snow on the sub-arctic landscape. Snow also affects industry generation and town growth requirements. Only used during map generation. Land just above sea level is always without snow
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Choose the approximate amount of snow on the sub-arctic landscape. Snow also affects industry generation and town growth requirements. Only used during map generation. Sea level and coast tiles never have snow.
STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_DESERT_COVERAGE :Desert coverage: {STRING}
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Control the approximate amount of desert on the tropical landscape. Desert also affects industry generation. Only used during map generation
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Choose the approximate amount of desert on the tropical landscape. Desert also affects industry generation and town growth requirements. Only used during map generation
STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Roughness of terrain: {STRING}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis only) Choose the frequency of hills: Smooth landscapes have fewer, more wide-spread hills. Rough landscapes have many hills, which may look repetitive
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Choose the shape and number of hills. Smooth landscapes have fewer, wider hills, while rough landscapes have more, smaller hills.
###length 4
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Very Smooth
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Smooth
@ -1516,7 +1519,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Rough
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Very Rough
STR_CONFIG_SETTING_VARIETY :Variety distribution: {STRING}
STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesis only) Control whether the map contains both mountainous and flat areas. Since this only makes the map flatter, other settings should be set to mountainous
STR_CONFIG_SETTING_VARIETY_HELPTEXT :Choose if the map contains both mountains and flat areas. The higher the variety, the more differences in elevation between mountainous and flat areas.
STR_CONFIG_SETTING_RIVER_AMOUNT :River amount: {STRING}
STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Choose how many rivers to generate
@ -1536,6 +1539,7 @@ STR_CONFIG_SETTING_ROAD_SIDE_LEFT :Drive on left
STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :Drive on right
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Heightmap rotation: {STRING}
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_TOOLTIP :Choose which way the heightmap image is rotated to fit into the game world
###length 2
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Counter clockwise
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Clockwise
@ -1656,8 +1660,12 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Enable usage of
STR_CONFIG_SETTING_LOADING_INDICATORS :Use loading indicators: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Select whether loading indicators are displayed above loading or unloading vehicles
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Show timetable in ticks rather than days: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Show travel times in time tables in game ticks instead of days
STR_CONFIG_SETTING_TIMETABLE_MODE :Time units for timetables: {STRING}
STR_CONFIG_SETTING_TIMETABLE_MODE_HELPTEXT :Select the time units used for vehicle timetables
###length 3
STR_CONFIG_SETTING_TIMETABLE_MODE_DAYS :Days
STR_CONFIG_SETTING_TIMETABLE_MODE_SECONDS :Seconds
STR_CONFIG_SETTING_TIMETABLE_MODE_TICKS :Ticks
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Show arrival and departure in timetables: {STRING}
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Display anticipated arrival and departure times in timetables
@ -2346,7 +2354,7 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}The game
STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Set password
STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protect your game with a password if you don't want it to be publicly accessible
STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Visibility
STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Visibility:
STR_NETWORK_START_SERVER_VISIBILITY_TOOLTIP :{BLACK}Whether other people can see your server in the public listing
STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} client{P "" s}
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximum number of clients:
@ -2581,7 +2589,7 @@ STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Search c
STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}You are leaving OpenTTD!
STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}The terms and conditions for downloading content from external websites vary.{}You will have to refer to the external sites for instructions how to install the content into OpenTTD.{}Do you want to continue?
STR_CONTENT_FILTER_TITLE :{BLACK}Tag/name filter:
STR_CONTENT_OPEN_URL :{BLACK}Visit website
STR_CONTENT_OPEN_URL :{BLACK}Website
STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Visit the website for this content
STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Download
STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Start downloading the selected content
@ -3201,11 +3209,15 @@ STR_MAPGEN_MAPSIZE :{BLACK}Map size
STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Select the size of the map in tiles. The number of available tiles will be slightly smaller
STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}No. of towns:
STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP :{BLACK}Select the density of towns, or a custom number
STR_MAPGEN_TOWN_NAME_LABEL :{BLACK}Town names:
STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP :{BLACK}Select style of town names
STR_MAPGEN_DATE :{BLACK}Date:
STR_MAPGEN_DATE_TOOLTIP :{BLACK}Select starting date
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}No. of industries:
STR_MAPGEN_NUMBER_OF_INDUSTRIES_TOOLTIP :{BLACK}Select the density of industries, or a custom number
STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Highest peak:
STR_MAPGEN_HEIGHTMAP_HEIGHT_TOOLTIP :{BLACK}Choose the highest peak that the game will attempt to create, measured in elevation above sea level
STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Increase the maximum height of highest peak on the map by one
STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Decrease the maximum height of highest peak on the map by one
STR_MAPGEN_SNOW_COVERAGE :{BLACK}Snow coverage:
@ -3218,10 +3230,12 @@ STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Decrease
STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrain type:
STR_MAPGEN_SEA_LEVEL :{BLACK}Sea level:
STR_MAPGEN_SEA_LEVEL_TOOLTIP :{BLACK}Select the sea level
STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Rivers:
STR_MAPGEN_SMOOTHNESS :{BLACK}Smoothness:
STR_MAPGEN_VARIETY :{BLACK}Variety distribution:
STR_MAPGEN_GENERATE :{WHITE}Generate
STR_MAPGEN_GENERATE_TOOLTIP :{BLACK}Create the world and play OpenTTD!
STR_MAPGEN_NEWGRF_SETTINGS :{BLACK}NewGRF Settings
STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Display NewGRF settings
STR_MAPGEN_AI_SETTINGS :{BLACK}AI Settings
@ -3254,6 +3268,7 @@ STR_MAPGEN_TOWN_NAME_CATALAN :Catalan
# Strings for map borders at game generation
STR_MAPGEN_BORDER_TYPE :{BLACK}Map edges:
STR_MAPGEN_BORDER_TYPE_TOOLTIP :{BLACK}Choose the borders of the game world
STR_MAPGEN_NORTHWEST :{BLACK}Northwest
STR_MAPGEN_NORTHEAST :{BLACK}Northeast
STR_MAPGEN_SOUTHEAST :{BLACK}Southeast
@ -3266,7 +3281,9 @@ STR_MAPGEN_BORDER_MANUAL :{BLACK}Manual
STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Heightmap rotation:
STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Heightmap name:
STR_MAPGEN_HEIGHTMAP_NAME_TOOLTIP :{BLACK}The name of the heightmap image file
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Size:
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL_TOOLTIP :{BLACK}The size of the source heightmap image. For best results, each edge should match an available map edge length in OpenTTD, such as 256, 512, 1024, etc.
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Target peak height
@ -3281,6 +3298,7 @@ STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Flat lan
STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Generate a flat land
STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Random land
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Height of flat land:
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_TOOLTIP :{BLACK}Choose the height of the land above sea level
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Move the height of flat land one down
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Move the height of flat land one up
@ -4566,8 +4584,6 @@ STR_TIMETABLE_STAY_FOR_ESTIMATED :(stay for {STRI
STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(travel for {STRING}, not timetabled)
STR_TIMETABLE_STAY_FOR :and stay for {STRING}
STR_TIMETABLE_AND_TRAVEL_FOR :and travel for {STRING}
STR_TIMETABLE_DAYS :{COMMA}{NBSP}day{P "" s}
STR_TIMETABLE_TICKS :{COMMA}{NBSP}tick{P "" s}
STR_TIMETABLE_TOTAL_TIME :{BLACK}This timetable will take {STRING} to complete
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}This timetable will take at least {STRING} to complete (not all timetabled)
@ -4576,10 +4592,13 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}This veh
STR_TIMETABLE_STATUS_LATE :{BLACK}This vehicle is currently running {STRING} late
STR_TIMETABLE_STATUS_EARLY :{BLACK}This vehicle is currently running {STRING} early
STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}This timetable has not yet started
STR_TIMETABLE_STATUS_START_AT :{BLACK}This timetable will start at {STRING}
STR_TIMETABLE_STATUS_START_AT_DATE :{BLACK}This timetable will start at {STRING}
STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}This timetable will start in {COMMA} seconds
STR_TIMETABLE_START :{BLACK}Start Timetable
STR_TIMETABLE_START_TOOLTIP :{BLACK}Select when this timetable starts. Ctrl+Click evenly distributes the start of all vehicles sharing this order based on their relative order, if the order is completely timetabled
STR_TIMETABLE_STARTING_DATE :{BLACK}Start date
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Select a date as starting point of this timetable. Ctrl+Click distributes all vehicles sharing this order evenly from the given date based on their relative order, if the order is completely timetabled
STR_TIMETABLE_START_SECONDS_QUERY :Seconds until timetable starts
STR_TIMETABLE_CHANGE_TIME :{BLACK}Change Time
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Change the amount of time that the highlighted order should take. Ctrl+Click sets the time for all orders
@ -4603,8 +4622,10 @@ STR_TIMETABLE_EXPECTED :{BLACK}Expected
STR_TIMETABLE_SCHEDULED :{BLACK}Scheduled
STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Switch between expected and scheduled
STR_TIMETABLE_ARRIVAL :A: {COLOUR}{DATE_TINY}
STR_TIMETABLE_DEPARTURE :D: {COLOUR}{DATE_TINY}
STR_TIMETABLE_ARRIVAL_DATE :A: {COLOUR}{DATE_TINY}
STR_TIMETABLE_DEPARTURE_DATE :D: {COLOUR}{DATE_TINY}
STR_TIMETABLE_ARRIVAL_SECONDS_IN_FUTURE :A: {COLOUR}{COMMA} sec
STR_TIMETABLE_DEPARTURE_SECONDS_IN_FUTURE :D: {COLOUR}{COMMA} sec
# Date window (for timetable)
@ -4707,9 +4728,12 @@ STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}Go back
STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}Return forward in navigation history
STR_TEXTFILE_WRAP_TEXT :{WHITE}Wrap text
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Wrap the text of the window so it all fits without having to scroll
STR_TEXTFILE_VIEW_README :{BLACK}View readme
STR_TEXTFILE_VIEW_README :{BLACK}Readme
STR_TEXTFILE_VIEW_README_TOOLTIP :View readme for this content
STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Changelog
STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP :View changelog for this content
STR_TEXTFILE_VIEW_LICENCE :{BLACK}License
STR_TEXTFILE_VIEW_LICENCE_TOOLTIP :View licence for this content
###length 5
STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme of {STRING}
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} changelog of {STRING}

@ -255,6 +255,10 @@ STR_UNITS_HEIGHT_IMPERIAL :{DECIMAL}{NBSP}
STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP}m
STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP}m
STR_UNITS_DAYS :{COMMA}{NBSP}day{P "" s}
STR_UNITS_SECONDS :{COMMA}{NBSP}second{P "" s}
STR_UNITS_TICKS :{COMMA}{NBSP}tick{P "" s}
# Common window strings
STR_LIST_FILTER_TITLE :{BLACK}Filter:
STR_LIST_FILTER_OSKTITLE :{BLACK}Enter one or more keywords to filter the list for
@ -718,8 +722,7 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Click on
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Click on music track to remove it from current program (Custom1 or Custom2 only)
# Highscore window
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Top companies who reached {NUM}
STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Company League Table in {NUM}
STR_HIGHSCORE_TOP_COMPANIES :{BIG_FONT}{BLACK}Top companies
STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}.
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Businessperson
STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Entrepreneur
@ -1488,7 +1491,7 @@ STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original
STR_CONFIG_SETTING_LAND_GENERATOR_TERRA_GENESIS :TerraGenesis
STR_CONFIG_SETTING_TERRAIN_TYPE :Terrain type: {STRING}
STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :(TerraGenesis only) Hilliness of the landscape
STR_CONFIG_SETTING_TERRAIN_TYPE_HELPTEXT :Choose the height of hills and mountains of the landscape
STR_CONFIG_SETTING_INDUSTRY_DENSITY :Industry density: {STRING}
STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Set how many industries should be generated and what level should be maintained during the game
@ -1497,18 +1500,18 @@ STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximum distanc
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limit for how far from the map border oil refineries and oil rigs can be constructed. On island maps this ensures they are near the coast. On maps larger than 256 tiles, this value is scaled up.
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snow line height: {STRING}
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Controls at what height snow starts in sub-arctic landscape. Snow also affects industry generation and town growth requirements. Can only be modified via Scenario Editor or is otherwise calculated via "snow coverage"
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Choose at what height snow starts in sub-arctic landscape. Snow also affects industry generation and town growth requirements. Can only be modified via Scenario Editor or is otherwise calculated via "snow coverage"
STR_CONFIG_SETTING_SNOW_COVERAGE :Snow coverage: {STRING}
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Controls the approximate amount of snow on the sub-arctic landscape. Snow also affects industry generation and town growth requirements. Only used during map generation. Land just above sea level is always without snow
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Choose the approximate amount of snow on the sub-arctic landscape. Snow also affects industry generation and town growth requirements. Only used during map generation. Sea level and coast tiles never have snow.
STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_DESERT_COVERAGE :Desert coverage: {STRING}
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Control the approximate amount of desert on the tropical landscape. Desert also affects industry generation. Only used during map generation
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Choose the approximate amount of desert on the tropical landscape. Desert also affects industry generation and town growth requirements. Only used during map generation
STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Roughness of terrain: {STRING}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis only) Choose the frequency of hills: Smooth landscapes have fewer, more wide-spread hills. Rough landscapes have many hills, which may look repetitive
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :Choose the shape and number of hills. Smooth landscapes have fewer, wider hills, while rough landscapes have more, smaller hills.
###length 4
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Very Smooth
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH :Smooth
@ -1516,7 +1519,7 @@ STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH :Rough
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH :Very Rough
STR_CONFIG_SETTING_VARIETY :Variety distribution: {STRING}
STR_CONFIG_SETTING_VARIETY_HELPTEXT :(TerraGenesis only) Control whether the map contains both mountainous and flat areas. Since this only makes the map flatter, other settings should be set to mountainous
STR_CONFIG_SETTING_VARIETY_HELPTEXT :Choose if the map contains both mountains and flat areas. The higher the variety, the more differences in elevation between mountainous and flat areas.
STR_CONFIG_SETTING_RIVER_AMOUNT :River amount: {STRING}
STR_CONFIG_SETTING_RIVER_AMOUNT_HELPTEXT :Choose how many rivers to generate
@ -1536,6 +1539,7 @@ STR_CONFIG_SETTING_ROAD_SIDE_LEFT :Drive on left
STR_CONFIG_SETTING_ROAD_SIDE_RIGHT :Drive on right
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Heightmap rotation: {STRING}
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_TOOLTIP :Choose which way the heightmap image is rotated to fit into the game world
###length 2
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Counter-clockwise
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Clockwise
@ -1656,8 +1660,12 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Enable usage of
STR_CONFIG_SETTING_LOADING_INDICATORS :Use loading indicators: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Select whether loading indicators are displayed above loading or unloading vehicles
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Show timetable in ticks rather than days: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Show travel times in time tables in game ticks instead of days
STR_CONFIG_SETTING_TIMETABLE_MODE :Time units for timetables: {STRING}
STR_CONFIG_SETTING_TIMETABLE_MODE_HELPTEXT :Select the time units used for vehicle timetables
###length 3
STR_CONFIG_SETTING_TIMETABLE_MODE_DAYS :Days
STR_CONFIG_SETTING_TIMETABLE_MODE_SECONDS :Seconds
STR_CONFIG_SETTING_TIMETABLE_MODE_TICKS :Ticks
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Show arrival and departure in timetables: {STRING}
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Display anticipated arrival and departure times in timetables
@ -2346,7 +2354,7 @@ STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}The game
STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Set password
STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Protect your game with a password if you don't want it to be publicly accessible
STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Visibility
STR_NETWORK_START_SERVER_VISIBILITY_LABEL :{BLACK}Visibility:
STR_NETWORK_START_SERVER_VISIBILITY_TOOLTIP :{BLACK}Whether other people can see your server in the public listing
STR_NETWORK_START_SERVER_CLIENTS_SELECT :{BLACK}{NUM} client{P "" s}
STR_NETWORK_START_SERVER_NUMBER_OF_CLIENTS :{BLACK}Maximum number of clients:
@ -2581,7 +2589,7 @@ STR_CONTENT_SEARCH_EXTERNAL_TOOLTIP :{BLACK}Search c
STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER_CAPTION :{WHITE}You are leaving OpenTTD!
STR_CONTENT_SEARCH_EXTERNAL_DISCLAIMER :{WHITE}The terms and conditions for downloading content from external websites vary.{}You will have to refer to the external sites for instructions how to install the content into OpenTTD.{}Do you want to continue?
STR_CONTENT_FILTER_TITLE :{BLACK}Tag/name filter:
STR_CONTENT_OPEN_URL :{BLACK}Visit website
STR_CONTENT_OPEN_URL :{BLACK}Website
STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}Visit the website for this content
STR_CONTENT_DOWNLOAD_CAPTION :{BLACK}Download
STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK}Start downloading the selected content
@ -3201,11 +3209,15 @@ STR_MAPGEN_MAPSIZE :{BLACK}Map size
STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Select the size of the map in tiles. The number of available tiles will be slightly smaller
STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}No. of towns:
STR_MAPGEN_NUMBER_OF_TOWNS_TOOLTIP :{BLACK}Select the density of towns, or a custom number
STR_MAPGEN_TOWN_NAME_LABEL :{BLACK}Town names:
STR_MAPGEN_TOWN_NAME_DROPDOWN_TOOLTIP :{BLACK}Select style of town names
STR_MAPGEN_DATE :{BLACK}Date:
STR_MAPGEN_DATE_TOOLTIP :{BLACK}Select starting date
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}No. of industries:
STR_MAPGEN_NUMBER_OF_INDUSTRIES_TOOLTIP :{BLACK}Select the density of industries, or a custom number
STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Highest peak:
STR_MAPGEN_HEIGHTMAP_HEIGHT_TOOLTIP :{BLACK}Choose the highest peak that the game will attempt to create, measured in elevation above sea level
STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Increase the maximum height of highest peak on the map by one
STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Decrease the maximum height of highest peak on the map by one
STR_MAPGEN_SNOW_COVERAGE :{BLACK}Snow coverage:
@ -3218,10 +3230,12 @@ STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Decrease
STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrain type:
STR_MAPGEN_SEA_LEVEL :{BLACK}Sea level:
STR_MAPGEN_SEA_LEVEL_TOOLTIP :{BLACK}Select the sea level
STR_MAPGEN_QUANTITY_OF_RIVERS :{BLACK}Rivers:
STR_MAPGEN_SMOOTHNESS :{BLACK}Smoothness:
STR_MAPGEN_VARIETY :{BLACK}Variety distribution:
STR_MAPGEN_GENERATE :{WHITE}Generate
STR_MAPGEN_GENERATE_TOOLTIP :{BLACK}Create the world and play OpenTTD!
STR_MAPGEN_NEWGRF_SETTINGS :{BLACK}NewGRF Settings
STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}Display NewGRF settings
STR_MAPGEN_AI_SETTINGS :{BLACK}AI Settings
@ -3254,6 +3268,7 @@ STR_MAPGEN_TOWN_NAME_CATALAN :Catalan
# Strings for map borders at game generation
STR_MAPGEN_BORDER_TYPE :{BLACK}Map edges:
STR_MAPGEN_BORDER_TYPE_TOOLTIP :{BLACK}Choose the borders of the game world
STR_MAPGEN_NORTHWEST :{BLACK}Northwest
STR_MAPGEN_NORTHEAST :{BLACK}Northeast
STR_MAPGEN_SOUTHEAST :{BLACK}Southeast
@ -3266,7 +3281,9 @@ STR_MAPGEN_BORDER_MANUAL :{BLACK}Manual
STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Heightmap rotation:
STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Heightmap name:
STR_MAPGEN_HEIGHTMAP_NAME_TOOLTIP :{BLACK}The name of the heightmap image file
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Size:
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL_TOOLTIP :{BLACK}The size of the source heightmap image. For best results, each edge should match an available map edge length in OpenTTD, such as 256, 512, 1024, etc.
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Target peak height
@ -3281,6 +3298,7 @@ STR_SE_MAPGEN_FLAT_WORLD :{WHITE}Flat lan
STR_SE_MAPGEN_FLAT_WORLD_TOOLTIP :{BLACK}Generate a flat land
STR_SE_MAPGEN_RANDOM_LAND :{WHITE}Random land
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT :{BLACK}Height of flat land:
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_TOOLTIP :{BLACK}Choose the height of the land above sea level
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_DOWN :{BLACK}Move the height of flat land down one
STR_SE_MAPGEN_FLAT_WORLD_HEIGHT_UP :{BLACK}Move the height of flat land up one
@ -4566,8 +4584,6 @@ STR_TIMETABLE_STAY_FOR_ESTIMATED :(stay for {STRI
STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(travel for {STRING}, not timetabled)
STR_TIMETABLE_STAY_FOR :and stay for {STRING}
STR_TIMETABLE_AND_TRAVEL_FOR :and travel for {STRING}
STR_TIMETABLE_DAYS :{COMMA}{NBSP}day{P "" s}
STR_TIMETABLE_TICKS :{COMMA}{NBSP}tick{P "" s}
STR_TIMETABLE_TOTAL_TIME :{BLACK}This timetable will take {STRING} to complete
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}This timetable will take at least {STRING} to complete (not all timetabled)
@ -4576,10 +4592,13 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}This veh
STR_TIMETABLE_STATUS_LATE :{BLACK}This vehicle is currently running {STRING} late
STR_TIMETABLE_STATUS_EARLY :{BLACK}This vehicle is currently running {STRING} early
STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}This timetable has not yet started
STR_TIMETABLE_STATUS_START_AT :{BLACK}This timetable will start at {STRING}
STR_TIMETABLE_STATUS_START_AT_DATE :{BLACK}This timetable will start at {STRING}
STR_TIMETABLE_STATUS_START_IN_SECONDS :{BLACK}This timetable will start in {COMMA} seconds
STR_TIMETABLE_START :{BLACK}Start Timetable
STR_TIMETABLE_START_TOOLTIP :{BLACK}Select when this timetable starts. Ctrl+Click evenly distributes the start of all vehicles sharing this order based on their relative order, if the order is completely timetabled
STR_TIMETABLE_STARTING_DATE :{BLACK}Start Date
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Select a date as starting point of this timetable. Ctrl+Click distributes all vehicles sharing this order evenly from the given date based on their relative order, if the order is completely timetabled
STR_TIMETABLE_START_SECONDS_QUERY :Seconds until timetable starts
STR_TIMETABLE_CHANGE_TIME :{BLACK}Change Time
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Change the amount of time that the highlighted order should take. Ctrl+Click sets the time for all orders
@ -4603,8 +4622,10 @@ STR_TIMETABLE_EXPECTED :{BLACK}Expected
STR_TIMETABLE_SCHEDULED :{BLACK}Scheduled
STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Switch between expected and scheduled
STR_TIMETABLE_ARRIVAL :A: {COLOUR}{DATE_TINY}
STR_TIMETABLE_DEPARTURE :D: {COLOUR}{DATE_TINY}
STR_TIMETABLE_ARRIVAL_DATE :A: {COLOUR}{DATE_TINY}
STR_TIMETABLE_DEPARTURE_DATE :D: {COLOUR}{DATE_TINY}
STR_TIMETABLE_ARRIVAL_SECONDS_IN_FUTURE :A: {COLOUR}{COMMA} sec
STR_TIMETABLE_DEPARTURE_SECONDS_IN_FUTURE :D: {COLOUR}{COMMA} sec
# Date window (for timetable)
@ -4707,9 +4728,12 @@ STR_TEXTFILE_NAVBACK_TOOLTIP :{BLACK}Go back
STR_TEXTFILE_NAVFORWARD_TOOLTIP :{BLACK}Return forward in navigation history
STR_TEXTFILE_WRAP_TEXT :{WHITE}Wrap text
STR_TEXTFILE_WRAP_TEXT_TOOLTIP :{BLACK}Wrap the text of the window so it all fits without having to scroll
STR_TEXTFILE_VIEW_README :{BLACK}View readme
STR_TEXTFILE_VIEW_README :{BLACK}Readme
STR_TEXTFILE_VIEW_README_TOOLTIP :View readme for this content
STR_TEXTFILE_VIEW_CHANGELOG :{BLACK}Changelog
STR_TEXTFILE_VIEW_CHANGELOG_TOOLTIP :View changelog for this content
STR_TEXTFILE_VIEW_LICENCE :{BLACK}License
STR_TEXTFILE_VIEW_LICENCE_TOOLTIP :View license for this content
###length 5
STR_TEXTFILE_README_CAPTION :{WHITE}{STRING} readme of {STRING}
STR_TEXTFILE_CHANGELOG_CAPTION :{WHITE}{STRING} changelog of {STRING}

@ -321,6 +321,7 @@ STR_UNITS_HEIGHT_IMPERIAL :{DECIMAL}{NBSP}
STR_UNITS_HEIGHT_METRIC :{DECIMAL}{NBSP}m
STR_UNITS_HEIGHT_SI :{DECIMAL}{NBSP}m
# Common window strings
STR_LIST_FILTER_TITLE :{BLACK}Filtroteksto:
STR_LIST_FILTER_OSKTITLE :{BLACK}Entajpu filtrotekston.
@ -778,8 +779,6 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Alklaku
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Alklaku muzikeron por viŝi el la nuna programo (nur propra)
# Highscore window
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Superkompanioj kiuj atingis {NUM}
STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Kompania tabelo en {NUM}
STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}.
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Komercisto
STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Entreprenisto
@ -1677,7 +1676,7 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Ebligu uzadon d
STR_CONFIG_SETTING_LOADING_INDICATORS :Uzu ŝarg-indikilojn: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Elektu ĉu ŝarĝ-indikiloj estas montrataj sub ŝarĝataj aŭ malŝarĝataj veturiloj
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Montru horaron laŭ tikoj anstataŭ laŭ tagoj: {STRING}
###length 3
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Montru alvenojn kaj forirojn sur horaroj: {STRING}
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Montru antaŭvidatajn alven- kaj forir-tempojn en horaroj
@ -4471,9 +4470,6 @@ STR_TIMETABLE_STAY_FOR_ESTIMATED :(haltu dum {STR
STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :(veturos dum {STRING}, sen horaro)
STR_TIMETABLE_STAY_FOR :kaj restu dum {STRING}
STR_TIMETABLE_AND_TRAVEL_FOR :kaj veturu dum {STRING}
STR_TIMETABLE_DAYS :{COMMA}{NBSP}tago{P "" j}
STR_TIMETABLE_DAYS.n :{COMMA}{NBSP}tago{P "" j}n
STR_TIMETABLE_TICKS :{COMMA}{NBSP}tiko{P "" j}
STR_TIMETABLE_TOTAL_TIME :{BLACK}Plenumi ĉi tiun horaron postulos {STRING.n}
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Ĉi tio horaro postulos alemnaŭ {STRING} plenigi (ne ĉiu horarita)
@ -4482,9 +4478,8 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Ĉi tiu
STR_TIMETABLE_STATUS_LATE :{BLACK}Ĉi tiu veturilo nun malfruas je {STRING}
STR_TIMETABLE_STATUS_EARLY :{BLACK}Ĉi tiu veturilo nun fruas je {STRING}
STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Ĉi tiu horaro ankoraŭ ne komenciĝas.
STR_TIMETABLE_STATUS_START_AT :{BLACK}Ĉi tiu horaro komenciĝos je {STRING}
STR_TIMETABLE_STARTING_DATE :{BLACK}Komencodato
STR_TIMETABLE_CHANGE_TIME :{BLACK}Ŝanĝu tempon
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Ŝanĝu kiom da tempo devus postuli la markita ordono. Stir+Klak ŝanĝas la tempon por ĉiuj ordonoj
@ -4508,8 +4503,6 @@ STR_TIMETABLE_EXPECTED :{BLACK}Atendite
STR_TIMETABLE_SCHEDULED :{BLACK}Planite
STR_TIMETABLE_EXPECTED_TOOLTIP :{BLACK}Ŝalti inter atendite kaj planite
STR_TIMETABLE_ARRIVAL :A: {COLOUR}{DATE_TINY}
STR_TIMETABLE_DEPARTURE :E: {COLOUR}{DATE_TINY}
# Date window (for timetable)

@ -294,6 +294,7 @@ STR_UNITS_HEIGHT_IMPERIAL :{DECIMAL} meete
STR_UNITS_HEIGHT_METRIC :{DECIMAL} m
STR_UNITS_HEIGHT_SI :{DECIMAL} m
# Common window strings
STR_LIST_FILTER_TITLE :{BLACK}Märksõna:
STR_LIST_FILTER_OSKTITLE :{BLACK}Sisesta üks või enam märksõna mille järgi nimekirja filtreerida
@ -755,8 +756,6 @@ STR_PLAYLIST_TOOLTIP_CLICK_TO_ADD_TRACK :{BLACK}Vajuta l
STR_PLAYLIST_TOOLTIP_CLICK_TO_REMOVE_TRACK :{BLACK}Vajuta laulule, et see eemaldada praegusest progammist (Custom1 või Custom2 ainult)
# Highscore window
STR_HIGHSCORE_TOP_COMPANIES_WHO_REACHED :{BIG_FONT}{BLACK}Parimad ettevõtted aastal {NUM}
STR_HIGHSCORE_TOP_COMPANIES_NETWORK_GAME :{BIG_FONT}{BLACK}Ettevõtete edetabelis {NUM} kohal
STR_HIGHSCORE_POSITION :{BIG_FONT}{BLACK}{COMMA}.
STR_HIGHSCORE_PERFORMANCE_TITLE_BUSINESSMAN :Äriinimene
STR_HIGHSCORE_PERFORMANCE_TITLE_ENTREPRENEUR :Ettevõtja
@ -1654,8 +1653,7 @@ STR_CONFIG_SETTING_ADVANCED_VEHICLE_LISTS_HELPTEXT :Laseb kasutada
STR_CONFIG_SETTING_LOADING_INDICATORS :Kasuta laadimisnäidikuid: {STRING}
STR_CONFIG_SETTING_LOADING_INDICATORS_HELPTEXT :Vali, kas koorma laadimisel ja tühjendamisel näidatakse laadimisnäidikuid
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Graafik on sammudes, mitte päevades: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Graafikus on ajad märgitud mitte päevades, vaid sammudes
###length 3
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Graafikus on saabumis- ja väljumisajad: {STRING}
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Sõiduki graafikus esitatakse eeldatavaid saabumis- ja väljumisaegu
@ -4524,8 +4522,6 @@ STR_TIMETABLE_STAY_FOR_ESTIMATED :(Oode {STRING},
STR_TIMETABLE_AND_TRAVEL_FOR_ESTIMATED :({STRING} sõidukestus, ajastamata)
STR_TIMETABLE_STAY_FOR :ja oota {STRING}
STR_TIMETABLE_AND_TRAVEL_FOR :ja sõida {STRING} jaoks
STR_TIMETABLE_DAYS :{COMMA} päev{P "" a}
STR_TIMETABLE_TICKS :{COMMA} samm{P "" u}
STR_TIMETABLE_TOTAL_TIME :{BLACK}Selle graafiku läbimine võtab {STRING}
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :{BLACK}Selle graafiku läbimine võtab vähemalt {STRING} (kõik ei ole planeeritud)
@ -4534,10 +4530,8 @@ STR_TIMETABLE_STATUS_ON_TIME :{BLACK}Sõiduk
STR_TIMETABLE_STATUS_LATE :{BLACK}See sõiduk on {STRING} hiljaks jäämas
STR_TIMETABLE_STATUS_EARLY :{BLACK}See sõiduk on {STRING} varajane
STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}Graafikuga pole veel alustatud
STR_TIMETABLE_STATUS_START_AT :{BLACK}Graafikuga alustatakse {STRING}
STR_TIMETABLE_STARTING_DATE :{BLACK}Alguskuupäev
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}Vali graafiku alguskuupäev. Ctrl-klõps määrab graafiku alguskuupäeva ja jaotab sõidukid ühtlaselt, kasutades järjestust, kui sihid on planeeritud
STR_TIMETABLE_CHANGE_TIME :{BLACK}Muuda aega
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Muuda märgitud korraldusele määratud aega. Ctrl+klõps seab aja kõigile korraldustele

@ -12,6 +12,9 @@ STR_VEHICLE_TYPE_AIRCRAFT :Vliegtuie
STR_CONFIG_SETTING_AUTOSAVE :Outostoor: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Tyd tussen outomatiese spelstore
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Vertoon rooster in "ticks" liewer as dae: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Wys die rystye in tydroosters in speletjie "ticks" inplaas van dae
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Wissel deursigtigheid vir laai aanwysers. Ctrl+klik om te sluit
# Tracerestrict GUI

@ -13,6 +13,8 @@ STR_VEHICLE_TYPE_AIRCRAFT :طائرات
STR_CONFIG_SETTING_AUTOSAVE :حفظ تلقائي : {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :اختر الوقت بين كل عملية حفظ اتوماتيكية
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :عرض جدولة الأعمال بالمهام بدلا من الأيام: {STRING}
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}غير الشفافية لنسبة التحميل. مفتاح كنترول للاغلاق.
# Tracerestrict GUI

@ -12,6 +12,9 @@ STR_VEHICLE_TYPE_AIRCRAFT :Hegazkinak
STR_CONFIG_SETTING_AUTOSAVE :Auto-gordea: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Partida gordetze automatikoaren bitartea aukeratu
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Ordutegiak tick-etan erakutsi egunetan erakutsi ordez: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Erakutsi denbora tauletako denbora jokoaren uniteetan egunak erabili ordez
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Zama adierazleen gardentasuna aldatu. Ktrl+Klik blokeatzeko
# Tracerestrict GUI

@ -12,6 +12,9 @@ STR_VEHICLE_TYPE_AIRCRAFT :Авіятра
STR_CONFIG_SETTING_AUTOSAVE :Аўтазахаваньні: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Азначце інтэрвал паміж аўтаматычнымі захаваньнямі
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Паказваць расклад ў «ціках» замест дзён: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Паказваць у раскладзе час падарожжа ў гульнёвых "ціках" замест дзён.
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Пераключыць празрыстасьць для індыкатараў загрузкі. Ctrl+клік — заблякаваць.
# Tracerestrict GUI

@ -13,6 +13,9 @@ STR_VEHICLE_TYPE_AIRCRAFT :Aeronaves
STR_CONFIG_SETTING_AUTOSAVE :Auto-salvar: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Selecione intervalo entre jogos salvos automaticamente
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Exibir plano de horário em tiques ao invés de dias: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Mostra tempos de viagem, nos planos de horário, em tiques, ao invés de dias. Um tique equivale a 1/74 dia, ou 1/30 segundo.
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Altera transparência para os indicadores de carga. Ctrl+Clique para travar
# Tracerestrict GUI

@ -8,6 +8,9 @@ STR_VEHICLE_TYPE_AIRCRAFT :Самолет
STR_CONFIG_SETTING_AUTOSAVE :Автоматично запазване: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Изберете интервал между автоматично запаметяване на играта
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Разписанието в цикли вместо дни: {STRING.n}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Показва времената за придвижване в таблиците в игрови единици, вместо в дни
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Вклучи прозрачност за товарещи указатели. Ctrl+Click за заключване
# Tracerestrict GUI

@ -13,6 +13,9 @@ STR_VEHICLE_TYPE_AIRCRAFT :Avions
STR_CONFIG_SETTING_AUTOSAVE :Desada automàtica: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Selecciona l'interval entre desades automàtiques de les partides.
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Mostra horaris amb marques en lloc de dies: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Mostra els temps de viatge als horaris en marques en lloc de dies
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Commuta la transparència dels indicadors de càrrega. Ctrl+Clic per bloquejar
STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION_GENERAL :{}Temps de viatge mitjà: {STRING}

@ -12,6 +12,9 @@ STR_VEHICLE_TYPE_AIRCRAFT :Zrakoplov
STR_CONFIG_SETTING_AUTOSAVE :Automatsko snimanje: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Odaberite interval između automatskog snimanja igre
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Pokaži vozni red u otkucajima rađe nego u danima: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Prikaži trajanje putovanja u voznim redovima u otkucajima igre umjesto u danima
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Namjesti prozirnost za indikatore učitavanja. Ctrl+klik za zaključavanje
# Tracerestrict GUI

@ -680,6 +680,9 @@ STR_CONFIG_SETTING_SCENARIO_HOUSE_IGNORE_ZONES_ANYWHERE :všude
STR_CONFIG_SETTING_NETWORK_CHANGE_NOT_ALLOWED :{WHITE}Nelze změnit nastavení...
STR_CONFIG_SETTING_NETWORK_CHANGE_NOT_ALLOWED_NEWGRF :{WHITE}...nastavení je sledováno souborem NewGRF
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Zobrazit jízdní řády v cyklech místo ve dnech: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Ukazuje cestovní časy v jízdních řádech
STR_CHEAT_EDIT_MONEY_QUERY_CAPT :{WHITE}Přidat nebo odebrat peníze
STR_CHEAT_INFLATION_COST :{LTBLUE}Změnit faktor inflace nákladů: {ORANGE}{DECIMAL}
STR_CHEAT_INFLATION_COST_QUERY_CAPT :{WHITE}Změnit faktor inflace nákladů

@ -14,6 +14,9 @@ STR_VEHICLE_TYPE_AIRCRAFT :Fly
STR_CONFIG_SETTING_AUTOSAVE :Auto gem: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Vælg interval mellem automatisk gemte spil
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Vis køreplan i tik i stedet for dage: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Vis rejsetider i køreplaner i spil ticks i stedet for dage
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Slå gennemsigtighed til/fra for laste-indikatorer. CTRL+Klik for at låse værdi.
# Tracerestrict GUI

@ -13,6 +13,9 @@ STR_VEHICLE_TYPE_AIRCRAFT :Vliegtuigen
STR_CONFIG_SETTING_AUTOSAVE :Automatisch opslaan: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Tijdsduur kiezen voor automatische spelopslag
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Dienstregeling in tikken weergeven i.p.v. in dagen: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Reistijden in tijdtabellen in speltikken weergeven in plaats van dagen
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Transparantie voor laadpercentages aan-uit. Ctrl+klik om vast te zetten.
STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION_GENERAL :{}Gemiddelde reistijd: {STRING}

@ -759,6 +759,9 @@ STR_CONFIG_SETTING_DRAG_SIGNALS_SKIP_STATIONS_HELPTEXT :Select the beha
STR_CONFIG_SETTING_NETWORK_CHANGE_NOT_ALLOWED :{WHITE}Can't change setting...
STR_CONFIG_SETTING_NETWORK_CHANGE_NOT_ALLOWED_NEWGRF :{WHITE}...setting is observed by a NewGRF
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Show timetable in ticks rather than days: {STRING2}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Show travel times in time tables in game ticks instead of days
STR_CHEAT_EDIT_MONEY_QUERY_CAPT :{WHITE}Increase or decrease money
STR_CHEAT_INFLATION_COST :{LTBLUE}Change inflation cost factor: {ORANGE}{DECIMAL}
STR_CHEAT_INFLATION_COST_QUERY_CAPT :{WHITE}Change inflation cost factor

@ -37,6 +37,9 @@ STR_CONFIG_SETTING_CITY_ZONE_3_MULT_HELPTEXT :Multiplier for
STR_CONFIG_SETTING_CITY_ZONE_4_MULT :Multiplier for City Zone 4: {STRING}
STR_CONFIG_SETTING_CITY_ZONE_4_MULT_HELPTEXT :Multiplier for the size of City Zone 4 (Innermost roads with street lights). This setting works best with minor alterations.
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Show timetable in ticks rather than days: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Show travel times in time tables in game ticks instead of days
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Toggle transparency for loading indicators. Ctrl+Click to lock
STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION_GENERAL :{}Average travel time: {STRING}

@ -39,6 +39,9 @@ STR_CONFIG_SETTING_CITY_ZONE_3_MULT_HELPTEXT :Multiplier for
STR_CONFIG_SETTING_CITY_ZONE_4_MULT :Multiplier for City Zone 4: {STRING}
STR_CONFIG_SETTING_CITY_ZONE_4_MULT_HELPTEXT :Multiplier for the size of City Zone 4 (Innermost roads with street lights). This setting works best with minor alterations.
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Show timetable in ticks rather than days: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Show travel times in time tables in game ticks instead of days
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Toggle transparency for loading indicators. Ctrl+Click to lock
STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION_GENERAL :{}Average travel time: {STRING}

@ -12,6 +12,8 @@ STR_VEHICLE_TYPE_AIRCRAFT :Aviadiloj
STR_CONFIG_SETTING_AUTOSAVE :Aŭtomata konservado: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Elektu intervalon inter aŭtomataj konservadoj de la ludo
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Montru horaron laŭ tikoj anstataŭ laŭ tagoj: {STRING}
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Baskuligi travideblecon de ŝarĝindikiloj. Ctrl+Klaku por ŝlosi
# Tracerestrict GUI

@ -13,6 +13,9 @@ STR_VEHICLE_TYPE_AIRCRAFT :Õhusõidukid
STR_CONFIG_SETTING_AUTOSAVE :Salvestusväłp: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Vali välpsalvestuste vaheline ajavahemik
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Graafik on sammudes, mitte päevades: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Graafikus on ajad märgitud mitte päevades, vaid sammudes
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Vaheta laadimisnäidikute läbipaistvust. Ctrl+klõps lukustab
# Tracerestrict GUI

@ -9,6 +9,9 @@ STR_VEHICLE_TYPE_ROAD_VEHICLES :Akfør
STR_VEHICLE_TYPE_SHIPS :Skip
STR_VEHICLE_TYPE_AIRCRAFT :Flogfør
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Vís tíðarætlan í klikkum heldur enn døgum: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Vís koyri tíðir í tíðarætlanum við 'spæli klikkum' í staðin fyri við døgum
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Tendra/sløkk gjøgnumskygni fyri lessingar vísarar. Ctrl+trýst fyri at læsa
# Tracerestrict GUI

@ -13,6 +13,9 @@ STR_VEHICLE_TYPE_AIRCRAFT :Ilma-alukset
STR_CONFIG_SETTING_AUTOSAVE :Automaattitallennus: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Valitse aikaväli automaattisille pelitallennuksille
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Näytä aikataulu askelina päivien sijaan: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Näytä aikataulun ajat päivien sijasta askelina
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Muuta lastausilmaisimien läpinäkyvyyttä. Ctrl+napsautus lukitsee.
# Tracerestrict GUI

@ -13,6 +13,9 @@ STR_VEHICLE_TYPE_AIRCRAFT :Aéronefs
STR_CONFIG_SETTING_AUTOSAVE :Sauvegarde automatique{NBSP}: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Sélectionner l'intervalle de temps entre les sauvegardes automatiques
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Afficher l'horaire en ticks plutôt qu'en jours{NBSP}: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Affiche les temps de trajets dans les horaires en ticks plutôt qu'en jours
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Transparence des indicateurs de chargement.{}Ctrl-clic pour verrouiller.
STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION_GENERAL :{}Temps de trajet moyen{NBSP}: {STRING}

@ -12,6 +12,9 @@ STR_VEHICLE_TYPE_AIRCRAFT :Fleantugen
STR_CONFIG_SETTING_AUTOSAVE :Automatysk bewarje: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Selektearje de tiid tusken automatysk bewarje fan it spul
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Toan tsjinstregeling yn tikken yn stee fan yn dagen: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Lit reistiden sjen in tikken yn stee fan yn dagen op tsjinstregelings
# Tracerestrict GUI
# Programmable Pre-Signals

@ -12,6 +12,9 @@ STR_VEHICLE_TYPE_AIRCRAFT :Carbadan-adhair
STR_CONFIG_SETTING_AUTOSAVE :Fèin-sàbhaladh: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Tagh dè cho tric s a thèid geamannan a shàbhaladh gu fèin-obrachail
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Seall an clàr-ama ann an diogan seach làithean: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Seall na h-ùinean siubhail ann an clàran-ama le diogan geama seach làithean
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Toglaich trìd-shoillearachd nan comharraidhean luchdaidh. Ctrl+Briogadh airson glasadh
# Tracerestrict GUI

@ -704,6 +704,9 @@ STR_CONFIG_SETTING_SCENARIO_HOUSE_IGNORE_ZONES_ANYWHERE :En calquer luga
STR_CONFIG_SETTING_NETWORK_CHANGE_NOT_ALLOWED :{WHITE}Non se pode modificar a opción...
STR_CONFIG_SETTING_NETWORK_CHANGE_NOT_ALLOWED_NEWGRF :{WHITE}...o axuste está controlado por un NewGRF
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Mostra-lo horario en ticks en lugar de en días: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Mostra-los tempos de viaxe nos horarios en ticks en vez de en días
STR_CHEAT_EDIT_MONEY_QUERY_CAPT :{WHITE}Aumentar ou disminuir os cartos
STR_CHEAT_INFLATION_COST :{LTBLUE}Modificar o factor da inflación de custos: {ORANGE}{DECIMAL}
STR_CHEAT_INFLATION_COST_QUERY_CAPT :{WHITE}Modificar o factor da inflación de custos

@ -597,6 +597,9 @@ STR_CONFIG_SETTING_SCENARIO_HOUSE_IGNORE_ZONES_OFF :Aus
STR_CONFIG_SETTING_SCENARIO_HOUSE_IGNORE_ZONES_WITHIN_TOWN :Innerhalb des Einzugsgebiets
STR_CONFIG_SETTING_SCENARIO_HOUSE_IGNORE_ZONES_ANYWHERE :Überall
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Fahrpläne in Ticks anstatt in Tagen anzeigen: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Zeige Fahrtzeiten in Fahrplänen in Ticks statt Tagen
STR_CHEAT_EDIT_MONEY_QUERY_CAPT :{WHITE}Erhöhe oder verringere das verfügbare Geld
STR_CHEAT_INFLATION_COST :{LTBLUE}Ändere Inflationsfaktor der Kosten: {ORANGE}{DECIMAL}
STR_CHEAT_INFLATION_COST_QUERY_CAPT :{WHITE}Ändert den Faktor der Inflation der Kosten

@ -12,6 +12,9 @@ STR_VEHICLE_TYPE_AIRCRAFT :Αεροσκά
STR_CONFIG_SETTING_AUTOSAVE :Αυτόματο σώσιμο: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Επιλέξτε το διάστημα ανάμεσα σε δυο διαδοχικά σωσίματα του παιχνιδιου
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Εμφάνιση δρομολογίων σε στιγμές αντί για ημέρες: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Εμφάνιση χρόνων ταξιδιού στα χρονοδιαγράμματα σε στιγμές αντί σε ημέρες
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Εναλλαγή διαφάνειας για τις ενδείξεις φόρτωσης. Ctrl+Κλικ για να την κλειδώσετε
# Tracerestrict GUI

@ -12,6 +12,9 @@ STR_VEHICLE_TYPE_AIRCRAFT :כלי טייס
STR_CONFIG_SETTING_AUTOSAVE :שמירה אוטומטית: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :בחר פרק זמן בין שמירות אוטומטיות
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :{STRING} :הצג לוח זמנים בפעימות במקום בימים
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :הצג זמני נסיעה בלוחות זמנים בפעימות משחק במקום בימים
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}שנה שקיפות עבור מצביעי הטענה. Ctrl+לחיצה לנעילה
# Tracerestrict GUI

@ -13,6 +13,9 @@ STR_VEHICLE_TYPE_AIRCRAFT :Repülőgép
STR_CONFIG_SETTING_AUTOSAVE :Automatikus mentés: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Az automatikus mentések között eltelő idő
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Menetrendi idő-alapegység tick a nap helyett: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Az utazási idők megjelenítése napok helyett tickekben
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Átlátszó rakodásjelző bekapcsolása. Ctrl+kattintással zárolható
STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION_GENERAL :{}Átlagos utazási idő: {STRING}

@ -9,6 +9,9 @@ STR_VEHICLE_TYPE_ROAD_VEHICLES :Bifreiðir
STR_VEHICLE_TYPE_SHIPS :Skip
STR_VEHICLE_TYPE_AIRCRAFT :Flugvélar
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Birta áætlanir í slögum frekar en dögum: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Sýna ferðatíma í áætlun í slögum frekar en dögum
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Virkja/afvirkja gegnsæji hleðslumæla. Ctrl+smella til að læsa
# Tracerestrict GUI

@ -13,6 +13,9 @@ STR_VEHICLE_TYPE_AIRCRAFT :Pesawat
STR_CONFIG_SETTING_AUTOSAVE :Simpan otomatis: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Memilih jarak waktu antara menyimpan data game
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Penjadwalan menggunakan satuan titik , bukan satuan hari: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Menunjukan waktu perjalanan dalam titik permainan daripada dalam hari
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Hidup/matikan indikator proses pemuatan kargo. CTRL+klik untuk mengunci
# Tracerestrict GUI

@ -12,6 +12,9 @@ STR_VEHICLE_TYPE_AIRCRAFT :Aerárthaigh
STR_CONFIG_SETTING_AUTOSAVE :Uathshábháil: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Roghnaigh an t-eatramh idir uathshábhálacha cluichí
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Taispeáin an t-amchlár i dticeanna seachas i laethanta: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Taispeáin amanna taistil i dtáblaí ama i dticeanna cluiche seachas laethanta
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Scoránaigh trédhearcacht do tháscairí lódála. Ctrl+Cliceáil le glasáil.
# Tracerestrict GUI

@ -13,6 +13,9 @@ STR_VEHICLE_TYPE_AIRCRAFT :Aeromobili
STR_CONFIG_SETTING_AUTOSAVE :Salvataggi automatici: {STRING}
STR_CONFIG_SETTING_AUTOSAVE_HELPTEXT :Seleziona l'intervallo fra i salvataggi automatici della partita
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS :Mostra le tabelle orarie in tick piuttosto che in giorni: {STRING}
STR_CONFIG_SETTING_TIMETABLE_IN_TICKS_HELPTEXT :Mostra il tempo di viaggio in tick del simulatore invece che in giorni
STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Attiva/disattiva la trasparenza degli indicatori di caricamento. CTRL+clic per bloccare
STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION_GENERAL :{}tempo medio di percorrenza: {STRING}

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

Loading…
Cancel
Save