Compare commits

...

65 Commits

Author SHA1 Message Date
Charles Pigott
0be22efffc Add: Changelog entries for 1.11.1 release 2021-04-18 21:31:21 +01:00
Charles Pigott
4f8b2aa003 Update: Backport language changes 2021-04-18 21:31:21 +01:00
stormcone
57f01188c2 Add: Hotkey to focus the build object class name filter editbox. 2021-04-18 21:31:21 +01:00
stormcone
bcb6174bf3 Add: Hotkey to focus the rail station class name filter editbox. 2021-04-18 21:31:21 +01:00
Peter Nelson
7b56a630aa Fix #9042: Make multiplayer server list height auto-fill window.
#9042 did not fix all combinations of scaling options. This additional
change makes the server list automatically fill available height.
2021-04-18 21:31:21 +01:00
Rubidium
4e5be077ff Fix #6322: [Script] Try to let the script die when no memory can be allocated instead of crashing the whole game 2021-04-18 21:31:21 +01:00
Rubidium
7aaaa2c5f5 Change: [Script] Let Script_FatalError use std::string instead of const char * 2021-04-18 21:31:21 +01:00
dP
c9c208f78e Fix: Do not unlock railtypes when enabling wagons with GameScript 2021-04-18 21:31:21 +01:00
Milek7
522069d146 Fix: Corrupted savegame could cause heap corruption by writing outside link graph edge matrix. (#9046) 2021-04-18 21:31:21 +01:00
Milek7
e379c818b3 Fix: Corrupted savegame could crash the game by providing invalid gamelog enums. (#9045) 2021-04-18 21:31:21 +01:00
PeterN
eb5ae95c90 Fix: Inconsistent button sizing on AI/GS setting window depending on scale settings. (#9044) 2021-04-18 21:31:21 +01:00
Peter Nelson
e8965d32d9 Fix: Sizing of Multiplayer server list incorrect when GUI zoom doesn't match Font zoom.
The server information panel was scaled by GUI scale, which could result in a panel that is longer than the server list. This height difference is then maintained when the window is resized to fill the screen.
Instead, specify the minimum size by number of text lines and (summed total) padding.
2021-04-18 21:31:21 +01:00
PeterN
790b4f3076 Change: Improve layout and spacing of vehicle group widgets. (#9041)
Existing layout included a blank widget above the group list to align with the vehicle list, however since then an additional sort-by row was added.
Group list size tweaks to match normal row size (at least with normal gui and text size.)
Removed reduction of 2 rows in the group list <- main culprit of odd sizing.
Removed fill attribute on buttons which gave strange sizes, and put it on the group info widget instead.
Tweaked various soft-padding values to line up (centreing text with a 1px offset does not make centred text.)
2021-04-18 21:31:21 +01:00
Rubidium
4f0f113887 Fix #7513: recursive array/class/table release caused stack overflow 2021-04-18 21:31:21 +01:00
Rubidium
53ce868185 Fix #7513: recursive garbage collection caused stack overflow 2021-04-18 21:31:21 +01:00
Milek7
144ed59aef Fix: Add virtual destructor to link graph Path.
Classes derived from Path were freed through base class pointer, but no virtual destructor was present.
2021-04-18 21:31:21 +01:00
Michael Lutz
40f7d085f4 Fix #9028: [OpenGL] Clear cursor cache on destroying the OpenGL backend. 2021-04-18 21:31:21 +01:00
Rubidium
1f34264017 Fix: [win32] buffer_locked state not initialised, causing _screen.dst_ptr to be potentially not set 2021-04-18 21:31:21 +01:00
Rubidium
fa57e33dfe Fix: [Video] fast forward boolean states not initialised, potentially causing unstoppable fast forward 2021-04-18 21:31:21 +01:00
Rubidium
dee9d6dfd4 Fix: [SDL] buffer_locked state not initialised, causing _screen.dst_ptr to be potentially not set 2021-04-18 21:31:21 +01:00
rubidium42
961cda50bc Fix #8874: show a warning when a NewGRF scan is requested multiple times from the console (#9022) 2021-04-18 21:31:21 +01:00
Wim Leflere
fe43c2d18f Fix: clang-cl build (#9018)
Remove macro redefinitions
Add final and fallthrough attributes for clang-cl
2021-04-18 21:31:21 +01:00
PeterN
59406363bb Fix #9015: Don't set free space value if not requested. (#9016) 2021-04-18 21:31:21 +01:00
rubidium42
cbc1d0c893 Fix #9008: Validate starting year given on the command line. (#9014)
An invalid starting year causes all sorts of weird behaviour and crashes in map generation.

Now just set the appropriate setting via IConsoleSetSetting so the validation
and, if needed, clamping is performed on the starting year value.
2021-04-18 21:31:21 +01:00
Rubidium
3d0c109d82 Change: add some hints about the getaddrinfo warning to the troubleshooting part of the documentation 2021-04-18 21:31:21 +01:00
Rubidium
e0594d6cac Change: warn the user about the resolving of an address being extra very slow 2021-04-18 21:31:21 +01:00
Rubidium
51cb9e71e5 Fix: split the UDP blocking of sockets to only the socket involved, and when another thread is busy do not attempt to process the packets of that socket 2021-04-18 21:31:21 +01:00
Rubidium
27630d255c Change: move some things only relevant to UDP from network.cpp to network_udp.cpp 2021-04-18 21:31:21 +01:00
Michael Lutz
d04423251b Fix: Check for a validly mapped OpenGL screen buffer during driver init. (#9007) 2021-04-18 21:31:21 +01:00
Patric Stout
9e5ab59eab Change: reworked how the Game Option display options are drawn
"Hardware acceleration" was not aligned with its checkbox. So instead
of drawing the labels left and the options right, now draw settings
one by one with a spacer between label and option to get the right
spacing.

Also, use SetPIP instead of repeating a SetPadding for all but
last element.
2021-04-18 21:31:21 +01:00
Patric Stout
898c61d457 Feature: allow a toggle to enable/disable vsync
Vsync should be off by default, as for most players it will be
better to play without vsync. Exception exist, mainly people who
play in fullscreen mode.
2021-04-18 21:31:21 +01:00
Peter Nelson
ec8abd072d Fix: Adjust scrolling interval of credits to account for text line height 2021-04-18 21:31:21 +01:00
Jonathan G Rennison
0f962aaf03 Fix: Data races on cursor state in OpenGL backends 2021-04-18 21:31:21 +01:00
Jonathan G Rennison
eeb6e9d417 Fix: Thread unsafe use of sprite cache in OpenGLBackend::DrawMouseCursor
See also: #8870
See also: #8977
2021-04-18 21:31:21 +01:00
Charles Pigott
0434cc017b Fix #8956: Industry disaster news messages showed the wrong location (#8992) 2021-04-18 21:31:21 +01:00
Niels Martin Hansen
5905fdb26e Fix: [Win32] Font glyphs of certain widths broke
Font glyphs between 33 and 39 pixels wide, in the Win32 font system, used wrong alignment and caused glyphs to appear broken.
When in the 33 to 39 pixel range, glyphs without AA were rounded down to 32 pixel pitch, instead of up to 64 pixel pitch.
2021-04-18 21:31:21 +01:00
Patric Stout
4ffe7131cb Fix 70bc55cfd6: snow line height was set while calculating desert line (#8989)
Seems I liked copy/pasting just a tiny bit too much.
2021-04-18 21:31:21 +01:00
Michael Lutz
aadc7beccc Fix #8930: [Win32] Don't handle printable keys on keydown if an edit box is in focus.
Handle printable input only when the matching WM_CHAR message is incoming.
Without an edit box, do the handling in keydown as usual to support hotkeys.
2021-04-18 21:31:21 +01:00
Wim Leflere
9d233bb7d4 Change: [win32] Use user UI language for initial language selection (#8973) (#8974) 2021-04-18 21:31:21 +01:00
Loïc Guilloux
5c6b43832c Fix: [CMake] Use the right run-time library depending on vcpkg triplet (#8964) 2021-04-18 21:31:21 +01:00
Jonathan G Rennison
5cbbb0d17b Fix: [Network] State conditions for sending client info/quit packets (#8959)
Use status >= STATUS_AUTHORIZED as the state criteria for all cases
where updates about other clients are sent.
This avoids the case where a client is informed that another client
has joined but not informed when it later quits, resulting in
stale entries in the client list window.
2021-04-18 21:31:21 +01:00
Loïc Guilloux
19b3f777c4 Change: [CMake] Improve 'In-source build' error message (#8955) 2021-04-18 21:31:21 +01:00
Ghislain Antony Vaillant
24ddedad38 Fix: Use FluidSynth default soundfont 2021-04-18 21:31:21 +01:00
Jonathan G Rennison
30313bb396 Fix: Viewport drag tooltips not being removed when dragging over other windows 2021-04-18 21:31:21 +01:00
Jonathan G Rennison
35aff633bd Fix: Viewport drag tooltip flickering when dragging outside window 2021-04-18 21:31:21 +01:00
Peter Nelson
c6312a8ebf Fix: Allow full sample range for 16-bit audio.
Clamping each sample value to half the available range could cause
unnecessary premature clipping with lots of sounds playing. This change
does not affect the actual volume level.
2021-04-18 21:31:21 +01:00
Peter Nelson
3976f2deed Change: Apply power-of-3 scaling to master effect volume to improve perceived loudness change. 2021-04-18 21:31:21 +01:00
Ghislain Antony Vaillant
a7cb2d8d00 Fix: Honor default soundfont for FluidSynth
Debian now provides a default soundfont for FluidSynth via its alternatives system.

In short, FluidSynth is configured to look for `/usr/share/sounds/sf3/default-GM.sf3` as its default soundfont, and each soundfront package (FluidR3, OPL-3, MuseScore...) may provide or override this symlink. By default, FluidSynth is installed on Debian with the `TimGM6mb` soundfont by default due to its limited size.

See https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=929185 for further details.
2021-04-18 21:31:21 +01:00
PeterN
7021468ee3 Fix: Apply master effect volume during mixing instead of sound start. (#8945)
This makes the volume control work as most players would expect, affecting
existing playing sounds as well as new sounds.
2021-04-18 21:31:21 +01:00
Michael Lutz
d6a4b67df7 Fix #8935: [OSX] Crash when clicking 'Save' due to wrongly-threaded OS call. (#8944) 2021-04-18 21:31:21 +01:00
Niels Martin Hansen
0b51290a1e Feature: Volume sliders in Game Options window 2021-04-18 21:31:21 +01:00
Niels Martin Hansen
3a6b811559 Codechange: Move volume control slider logic to separate functions 2021-04-18 21:31:21 +01:00
Niels Martin Hansen
d02aae7a9c Add: NWidgetBase::GetCurrentRect function 2021-04-18 21:31:21 +01:00
Niels Martin Hansen
78285207ce Change: Default music and sound effects volume to be lower 2021-04-18 21:31:21 +01:00
Milek7
300391465a Codechange: Use COINIT_MULTITHREADED in CoInitializeEx (#8938) 2021-04-18 21:31:21 +01:00
Charles Pigott
306d80be49 Remove: Invalid translations from Romanian 2021-04-18 21:31:21 +01:00
frosch
5af537026f Fix d4c3d01d: add plural form 14 to strgen. (#8999) 2021-04-18 21:31:21 +01:00
Nicolae Crefelean
a8a838c24c Add: new plural form for Romanian translation (#8936) 2021-04-18 21:31:21 +01:00
Didac Perez Parera
4cfcbcfbaa Fix: adjust object and rail station selection window padding to be consistent (#8929)
consistent
2021-04-18 21:31:21 +01:00
Jonathan G Rennison
34606b7cbd Fix: Memory leak of airport tile layout in AirportChangeInfo (prop 0A) (#8928) 2021-04-18 21:31:21 +01:00
Bernard Teo
f0f87ee0dc Fix #8922: Show vehicle window for single vehicle in shared order grouping (#8926) 2021-04-18 21:31:21 +01:00
Charles Pigott
9acb8f7d2c Fix #8919: Release builds with asserts enabled (#8925) 2021-04-18 21:31:21 +01:00
Patric Stout
fb23ee6add Fix: building on Raspberry Pi failed because of const vs constexpr (#8924) 2021-04-18 21:31:21 +01:00
Charles Pigott
1d039c86cb Add: [Actions] Debian Bullseye release build (#8921) 2021-04-18 21:31:21 +01:00
Loïc Guilloux
7c7f747ad8 Change: [CMake] Copy AI/GS compatibility files to build dir (#8906) 2021-04-18 21:31:21 +01:00
150 changed files with 1545 additions and 624 deletions

View File

@@ -379,6 +379,8 @@ jobs:
bundle_name: "groovy"
- container_image: "debian:buster"
bundle_name: "buster"
- container_image: "debian:bullseye"
bundle_name: "bullseye"
runs-on: ubuntu-20.04
container:

View File

@@ -7,7 +7,7 @@ endif()
project(${BINARY_NAME})
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
message(FATAL_ERROR "In-source builds not allowed. Please run \"cmake ..\" from the bin directory")
message(FATAL_ERROR "In-source builds not allowed. Please run \"cmake ..\" from the build directory. You may need to delete \"${CMAKE_SOURCE_DIR}/CMakeCache.txt\" first.")
endif()
# Debug mode by default.
@@ -220,6 +220,7 @@ if(MSVC)
target_sources(openttd PRIVATE "${CMAKE_SOURCE_DIR}/os/windows/openttd.manifest")
endif()
add_subdirectory(${CMAKE_SOURCE_DIR}/bin)
add_subdirectory(${CMAKE_SOURCE_DIR}/src)
add_subdirectory(${CMAKE_SOURCE_DIR}/media)
@@ -240,7 +241,7 @@ if(IPO_FOUND)
set_target_properties(openttd PROPERTIES INTERPROCEDURAL_OPTIMIZATION_MINSIZEREL True)
set_target_properties(openttd PROPERTIES INTERPROCEDURAL_OPTIMIZATION_RELWITHDEBINFO True)
endif()
set_target_properties(openttd PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
set_target_properties(openttd PROPERTIES VS_DEBUGGER_WORKING_DIRECTORY "${CMAKE_BINARY_DIR}")
process_compile_flags()
include(LinkPackage)

2
bin/CMakeLists.txt Normal file
View File

@@ -0,0 +1,2 @@
add_subdirectory(ai)
add_subdirectory(game)

39
bin/ai/CMakeLists.txt Normal file
View File

@@ -0,0 +1,39 @@
set(AI_COMPAT_SOURCE_FILES
${CMAKE_CURRENT_SOURCE_DIR}/compat_0.7.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.0.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.1.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.2.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.3.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.4.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.5.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.6.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.7.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.8.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.9.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.10.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.11.nut
)
foreach(AI_COMPAT_SOURCE_FILE IN LISTS AI_COMPAT_SOURCE_FILES)
string(REPLACE "${CMAKE_SOURCE_DIR}/bin/" "" AI_COMPAT_SOURCE_FILE_NAME "${AI_COMPAT_SOURCE_FILE}")
string(CONCAT AI_COMPAT_BINARY_FILE "${CMAKE_BINARY_DIR}/" "${AI_COMPAT_SOURCE_FILE_NAME}")
add_custom_command(OUTPUT ${AI_COMPAT_BINARY_FILE}
COMMAND ${CMAKE_COMMAND} -E copy
${AI_COMPAT_SOURCE_FILE}
${AI_COMPAT_BINARY_FILE}
MAIN_DEPENDENCY ${AI_COMPAT_SOURCE_FILE}
COMMENT "Copying ${AI_COMPAT_SOURCE_FILE_NAME}"
)
list(APPEND AI_COMPAT_BINARY_FILES ${AI_COMPAT_BINARY_FILE})
endforeach()
# Create a new target which copies all compat files
add_custom_target(ai_compat_files
DEPENDS ${AI_COMPAT_BINARY_FILES}
)
add_dependencies(openttd
ai_compat_files
)

36
bin/game/CMakeLists.txt Normal file
View File

@@ -0,0 +1,36 @@
set(GS_COMPAT_SOURCE_FILES
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.2.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.3.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.4.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.5.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.6.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.7.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.8.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.9.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.10.nut
${CMAKE_CURRENT_SOURCE_DIR}/compat_1.11.nut
)
foreach(GS_COMPAT_SOURCE_FILE IN LISTS GS_COMPAT_SOURCE_FILES)
string(REPLACE "${CMAKE_SOURCE_DIR}/bin/" "" GS_COMPAT_SOURCE_FILE_NAME "${GS_COMPAT_SOURCE_FILE}")
string(CONCAT GS_COMPAT_BINARY_FILE "${CMAKE_BINARY_DIR}/" "${GS_COMPAT_SOURCE_FILE_NAME}")
add_custom_command(OUTPUT ${GS_COMPAT_BINARY_FILE}
COMMAND ${CMAKE_COMMAND} -E copy
${GS_COMPAT_SOURCE_FILE}
${GS_COMPAT_BINARY_FILE}
MAIN_DEPENDENCY ${GS_COMPAT_SOURCE_FILE}
COMMENT "Copying ${GS_COMPAT_SOURCE_FILE_NAME}"
)
list(APPEND GS_COMPAT_BINARY_FILES ${GS_COMPAT_BINARY_FILE})
endforeach()
# Create a new target which copies all compat files
add_custom_target(gs_compat_files
DEPENDS ${GS_COMPAT_BINARY_FILES}
)
add_dependencies(openttd
gs_compat_files
)

View File

@@ -1,3 +1,35 @@
1.11.1 (2021-04-18)
------------------------------------------------------------------------
Feature: Toggle to enable/disable vsync (#8997)
Feature: Volume controls in the Game Options window, and better defaults (#8943)
Add: Hotkey to focus object and rail filters (#8908)
Add: Better plural support for Romanian (#8936)
Change: Improve layout and spacing of several windows at different GUI scales (#9041, #9042, #9044, #9050)
Change: [Win32] Use user UI language setting for initial language selection (#8974)
Change: Make effect volume scale more intuitively (#8945, #8950)
Change: Improve padding of Object & Rail station windows (#8929)
Fix #6322: [Script] Crash when script allocates too much memory, now kills script instead (#9047)
Fix #7513: [Script] Crash on garbage collection with misbehaving script (#9040)
Fix #9028: [OpenGL] Crash when changing max sprite zoom level (#9032)
Fix #8874: show a warning when a NewGRF scan is requested multiple times (#9022)
Fix: Desync when GS unlocks railtype with wagon unlock (#9021)
Fix #9015: [Win32] Crash on running "pwd" command in the console (#9016)
Fix #9008: Validate starting year given on the command line (-t) (#9014)
Fix #8878: [Network] Slow DNS queries could block the server and disconnect clients (#9013)
Fix: Improve validation of OpenGL video driver to avoid crashes (#9007)
Fix: Credits scrolled too slowly with larger font sizes (#8994)
Fix #8977: Crash when altering max sprite resolution (#8993)
Fix #8956: Industry disaster news messages showed the wrong location (#8992)
Fix: [Win32] Font glyphs of certain widths had broken rendering (#8990)
Fix #8930: [Win32] Duplicate text input issue for systems using IME (#8976)
Fix: [Network] Potential stale client entries in client list (#8959)
Fix: Graphical issues when dragging measurement tooltips (#8951)
Fix: [Fluidsynth] Use provided default soundfont if available (#8948, #8953)
Fix #8935: [macOS] Crash on save (#8944)
Fix #8922: Crash when selling shared vehicles with shared vehicle window open (#8926)
Fix: Compiling on armhf (Raspberry Pi) (#8924)
1.11.0 (2021-04-01)
------------------------------------------------------------------------
Feature: Allow setting a custom terrain type to define highest peak (#8891)

View File

@@ -4,20 +4,22 @@
#
macro(compile_flags)
if(MSVC)
# Switch to MT (static) instead of MD (dynamic) binary
if(VCPKG_TARGET_TRIPLET MATCHES "-static" AND NOT VCPKG_TARGET_TRIPLET MATCHES "-md")
# Switch to MT (static) instead of MD (dynamic) binary
# For MSVC two generators are available
# - a command line generator (Ninja) using CMAKE_BUILD_TYPE to specify the
# configuration of the build tree
# - an IDE generator (Visual Studio) using CMAKE_CONFIGURATION_TYPES to
# specify all configurations that will be available in the generated solution
list(APPEND MSVC_CONFIGS "${CMAKE_BUILD_TYPE}" "${CMAKE_CONFIGURATION_TYPES}")
# For MSVC two generators are available
# - a command line generator (Ninja) using CMAKE_BUILD_TYPE to specify the
# configuration of the build tree
# - an IDE generator (Visual Studio) using CMAKE_CONFIGURATION_TYPES to
# specify all configurations that will be available in the generated solution
list(APPEND MSVC_CONFIGS "${CMAKE_BUILD_TYPE}" "${CMAKE_CONFIGURATION_TYPES}")
# Set usage of static runtime for all configurations
foreach(MSVC_CONFIG ${MSVC_CONFIGS})
string(TOUPPER "CMAKE_CXX_FLAGS_${MSVC_CONFIG}" MSVC_FLAGS)
string(REPLACE "/MD" "/MT" ${MSVC_FLAGS} "${${MSVC_FLAGS}}")
endforeach()
# Set usage of static runtime for all configurations
foreach(MSVC_CONFIG ${MSVC_CONFIGS})
string(TOUPPER "CMAKE_CXX_FLAGS_${MSVC_CONFIG}" MSVC_FLAGS)
string(REPLACE "/MD" "/MT" ${MSVC_FLAGS} "${${MSVC_FLAGS}}")
endforeach()
endif()
# "If /Zc:rvalueCast is specified, the compiler follows section 5.4 of the
# C++11 standard". We need C++11 for the way we use threads.

View File

@@ -26,8 +26,8 @@ install(TARGETS openttd
install(DIRECTORY
${CMAKE_BINARY_DIR}/lang
${CMAKE_BINARY_DIR}/baseset
${CMAKE_SOURCE_DIR}/bin/ai
${CMAKE_SOURCE_DIR}/bin/game
${CMAKE_BINARY_DIR}/ai
${CMAKE_BINARY_DIR}/game
${CMAKE_SOURCE_DIR}/bin/scripts
DESTINATION ${DATA_DESTINATION_DIR}
COMPONENT language_files)

View File

@@ -211,3 +211,10 @@ Last updated: 2011-02-16
communication from an admin tool reach the programme. See section 1
'Starting a server' further up for the ports and protocols used by OpenTTD.
The ports can be configured in the config file.
- My advertising server warns a lot about getaddrinfo taking N seconds
This could be a transient issue with your (local) DNS server, but if the
problem persists there is likely a configuration issue in DNS resolving
on your computer. This seems to be a common configuration issue for
Docker instances, where the DNS resolving waits for a time out of usually
5 seconds.

View File

@@ -17,9 +17,9 @@ public:
return newarray;
}
#ifndef NO_GARBAGE_COLLECTOR
void Mark(SQCollectable **chain);
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue) override;
#endif
void Finalize(){
void Finalize() override {
_values.resize(0);
}
bool Get(const SQInteger nidx,SQObjectPtr &val)
@@ -78,9 +78,13 @@ public:
ShrinkIfNeeded();
return true;
}
void Release()
void Release() override
{
sq_delete(this,SQArray);
this->_sharedstate->DelayFinalFree(this);
}
void FinalFree() override
{
sq_delete(this, SQArray);
}
SQObjectPtrVec _values;
};

View File

@@ -59,7 +59,7 @@ public:
}
void Finalize();
#ifndef NO_GARBAGE_COLLECTOR
void Mark(SQCollectable ** );
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue);
#endif
SQInteger Next(const SQObjectPtr &refpos, SQObjectPtr &outkey, SQObjectPtr &outval);
SQInstance *CreateInstance();
@@ -126,31 +126,33 @@ public:
}
return false;
}
void Release() {
void Release() override {
_uiRef++;
try {
if (_hook) { _hook(_userpointer,0);}
} catch (...) {
_uiRef--;
if (_uiRef == 0) {
SQInteger size = _memsize;
this->~SQInstance();
SQ_FREE(this, size);
this->_sharedstate->DelayFinalFree(this);
}
throw;
}
_uiRef--;
if(_uiRef > 0) return;
this->_sharedstate->DelayFinalFree(this);
}
void FinalFree() override
{
SQInteger size = _memsize;
this->~SQInstance();
SQ_FREE(this, size);
}
void Finalize();
void Finalize() override;
#ifndef NO_GARBAGE_COLLECTOR
void Mark(SQCollectable ** );
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue) override;
#endif
bool InstanceOf(SQClass *trg);
bool GetMetaMethod(SQVM *v,SQMetaMethod mm,SQObjectPtr &res);
bool GetMetaMethod(SQVM *v,SQMetaMethod mm,SQObjectPtr &res) override;
SQClass *_class;
SQUserPointer _userpointer;

View File

@@ -32,7 +32,7 @@ public:
bool Save(SQVM *v,SQUserPointer up,SQWRITEFUNC write);
static bool Load(SQVM *v,SQUserPointer up,SQREADFUNC read,SQObjectPtr &ret);
#ifndef NO_GARBAGE_COLLECTOR
void Mark(SQCollectable **chain);
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue);
void Finalize(){_outervalues.resize(0); }
#endif
SQObjectPtr _env;
@@ -66,7 +66,7 @@ public:
bool Yield(SQVM *v);
bool Resume(SQVM *v,SQInteger target);
#ifndef NO_GARBAGE_COLLECTOR
void Mark(SQCollectable **chain);
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue);
void Finalize(){_stack.resize(0);_closure=_null_;}
#endif
SQObjectPtr _closure;
@@ -106,7 +106,7 @@ public:
sq_delete(this,SQNativeClosure);
}
#ifndef NO_GARBAGE_COLLECTOR
void Mark(SQCollectable **chain);
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue);
void Finalize(){_outervalues.resize(0);}
#endif
SQInteger _nparamscheck;

View File

@@ -486,104 +486,81 @@ bool SQFunctionProto::Load(SQVM *v,SQUserPointer up,SQREADFUNC read,SQObjectPtr
#ifndef NO_GARBAGE_COLLECTOR
#define START_MARK() if(!(_uiRef&MARK_FLAG)){ \
_uiRef|=MARK_FLAG;
#define END_MARK() RemoveFromChain(&_sharedstate->_gc_chain, this); \
AddToChain(chain, this); }
void SQVM::Mark(SQCollectable **chain)
void SQVM::EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue)
{
START_MARK()
SQSharedState::MarkObject(_lasterror,chain);
SQSharedState::MarkObject(_errorhandler,chain);
SQSharedState::MarkObject(_debughook,chain);
SQSharedState::MarkObject(_roottable, chain);
SQSharedState::MarkObject(temp_reg, chain);
for(SQUnsignedInteger i = 0; i < _stack.size(); i++) SQSharedState::MarkObject(_stack[i], chain);
for(SQUnsignedInteger j = 0; j < _vargsstack.size(); j++) SQSharedState::MarkObject(_vargsstack[j], chain);
for(SQInteger k = 0; k < _callsstacksize; k++) SQSharedState::MarkObject(_callsstack[k]._closure, chain);
END_MARK()
SQSharedState::EnqueueMarkObject(_lasterror,queue);
SQSharedState::EnqueueMarkObject(_errorhandler,queue);
SQSharedState::EnqueueMarkObject(_debughook,queue);
SQSharedState::EnqueueMarkObject(_roottable, queue);
SQSharedState::EnqueueMarkObject(temp_reg, queue);
for(SQUnsignedInteger i = 0; i < _stack.size(); i++) SQSharedState::EnqueueMarkObject(_stack[i], queue);
for(SQUnsignedInteger j = 0; j < _vargsstack.size(); j++) SQSharedState::EnqueueMarkObject(_vargsstack[j], queue);
for(SQInteger k = 0; k < _callsstacksize; k++) SQSharedState::EnqueueMarkObject(_callsstack[k]._closure, queue);
}
void SQArray::Mark(SQCollectable **chain)
void SQArray::EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue)
{
START_MARK()
SQInteger len = _values.size();
for(SQInteger i = 0;i < len; i++) SQSharedState::MarkObject(_values[i], chain);
END_MARK()
}
void SQTable::Mark(SQCollectable **chain)
{
START_MARK()
if(_delegate) _delegate->Mark(chain);
SQInteger len = _numofnodes;
for(SQInteger i = 0; i < len; i++){
SQSharedState::MarkObject(_nodes[i].key, chain);
SQSharedState::MarkObject(_nodes[i].val, chain);
}
END_MARK()
SQInteger len = _values.size();
for(SQInteger i = 0;i < len; i++) SQSharedState::EnqueueMarkObject(_values[i], queue);
}
void SQClass::Mark(SQCollectable **chain)
void SQTable::EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue)
{
START_MARK()
_members->Mark(chain);
if(_base) _base->Mark(chain);
SQSharedState::MarkObject(_attributes, chain);
for(SQUnsignedInteger i =0; i< _defaultvalues.size(); i++) {
SQSharedState::MarkObject(_defaultvalues[i].val, chain);
SQSharedState::MarkObject(_defaultvalues[i].attrs, chain);
}
for(SQUnsignedInteger j =0; j< _methods.size(); j++) {
SQSharedState::MarkObject(_methods[j].val, chain);
SQSharedState::MarkObject(_methods[j].attrs, chain);
}
for(SQUnsignedInteger k =0; k< _metamethods.size(); k++) {
SQSharedState::MarkObject(_metamethods[k], chain);
}
END_MARK()
if(_delegate) queue.Enqueue(_delegate);
SQInteger len = _numofnodes;
for(SQInteger i = 0; i < len; i++){
SQSharedState::EnqueueMarkObject(_nodes[i].key, queue);
SQSharedState::EnqueueMarkObject(_nodes[i].val, queue);
}
}
void SQInstance::Mark(SQCollectable **chain)
void SQClass::EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue)
{
START_MARK()
_class->Mark(chain);
SQUnsignedInteger nvalues = _class->_defaultvalues.size();
for(SQUnsignedInteger i =0; i< nvalues; i++) {
SQSharedState::MarkObject(_values[i], chain);
}
END_MARK()
queue.Enqueue(_members);
if(_base) queue.Enqueue(_base);
SQSharedState::EnqueueMarkObject(_attributes, queue);
for(SQUnsignedInteger i =0; i< _defaultvalues.size(); i++) {
SQSharedState::EnqueueMarkObject(_defaultvalues[i].val, queue);
SQSharedState::EnqueueMarkObject(_defaultvalues[i].attrs, queue);
}
for(SQUnsignedInteger j =0; j< _methods.size(); j++) {
SQSharedState::EnqueueMarkObject(_methods[j].val, queue);
SQSharedState::EnqueueMarkObject(_methods[j].attrs, queue);
}
for(SQUnsignedInteger k =0; k< _metamethods.size(); k++) {
SQSharedState::EnqueueMarkObject(_metamethods[k], queue);
}
}
void SQGenerator::Mark(SQCollectable **chain)
void SQInstance::EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue)
{
START_MARK()
for(SQUnsignedInteger i = 0; i < _stack.size(); i++) SQSharedState::MarkObject(_stack[i], chain);
for(SQUnsignedInteger j = 0; j < _vargsstack.size(); j++) SQSharedState::MarkObject(_vargsstack[j], chain);
SQSharedState::MarkObject(_closure, chain);
END_MARK()
queue.Enqueue(_class);
SQUnsignedInteger nvalues = _class->_defaultvalues.size();
for(SQUnsignedInteger i =0; i< nvalues; i++) {
SQSharedState::EnqueueMarkObject(_values[i], queue);
}
}
void SQClosure::Mark(SQCollectable **chain)
void SQGenerator::EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue)
{
START_MARK()
for(SQUnsignedInteger i = 0; i < _outervalues.size(); i++) SQSharedState::MarkObject(_outervalues[i], chain);
for(SQUnsignedInteger i = 0; i < _defaultparams.size(); i++) SQSharedState::MarkObject(_defaultparams[i], chain);
END_MARK()
for(SQUnsignedInteger i = 0; i < _stack.size(); i++) SQSharedState::EnqueueMarkObject(_stack[i], queue);
for(SQUnsignedInteger j = 0; j < _vargsstack.size(); j++) SQSharedState::EnqueueMarkObject(_vargsstack[j], queue);
SQSharedState::EnqueueMarkObject(_closure, queue);
}
void SQNativeClosure::Mark(SQCollectable **chain)
void SQClosure::EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue)
{
START_MARK()
for(SQUnsignedInteger i = 0; i < _outervalues.size(); i++) SQSharedState::MarkObject(_outervalues[i], chain);
END_MARK()
for(SQUnsignedInteger i = 0; i < _outervalues.size(); i++) SQSharedState::EnqueueMarkObject(_outervalues[i], queue);
for(SQUnsignedInteger i = 0; i < _defaultparams.size(); i++) SQSharedState::EnqueueMarkObject(_defaultparams[i], queue);
}
void SQUserData::Mark(SQCollectable **chain){
START_MARK()
if(_delegate) _delegate->Mark(chain);
END_MARK()
void SQNativeClosure::EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue)
{
for(SQUnsignedInteger i = 0; i < _outervalues.size(); i++) SQSharedState::EnqueueMarkObject(_outervalues[i], queue);
}
void SQUserData::EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue){
if(_delegate) queue.Enqueue(_delegate);
}
void SQCollectable::UnMark() { _uiRef&=~MARK_FLAG; }

View File

@@ -2,6 +2,7 @@
#ifndef _SQOBJECT_H_
#define _SQOBJECT_H_
#include <vector>
#include "squtils.h"
#define SQ_CLOSURESTREAM_HEAD (('S'<<24)|('Q'<<16)|('I'<<8)|('R'))
@@ -344,11 +345,54 @@ struct SQCollectable : public SQRefCounted {
SQCollectable *_prev;
SQSharedState *_sharedstate;
virtual void Release()=0;
virtual void Mark(SQCollectable **chain)=0;
virtual void EnqueueMarkObjectForChildren(class SQGCMarkerQueue &queue)=0;
void UnMark();
virtual void Finalize()=0;
static void AddToChain(SQCollectable **chain,SQCollectable *c);
static void RemoveFromChain(SQCollectable **chain,SQCollectable *c);
/**
* Helper to perform the final memory freeing of this instance. Since the destructor might
* release more objects, this can cause a very deep recursion. As such, the calls to this
* are to be done via _sharedstate->DelayFinalFree which ensures the calls to this method
* are done in an iterative instead of recursive approach.
*/
virtual void FinalFree() {}
};
/**
* Helper container for state to change the garbage collection from a recursive to an iterative approach.
* The iterative approach provides effectively a depth first search approach.
*/
class SQGCMarkerQueue {
std::vector<SQCollectable*> stack; ///< The elements to still process, with the most recent elements at the back.
public:
/** Whether there are any elements left to process. */
bool IsEmpty() { return this->stack.empty(); }
/**
* Remove the most recently added element from the queue.
* Removal when the queue is empty results in undefined behaviour.
*/
SQCollectable *Pop()
{
SQCollectable *collectable = this->stack.back();
this->stack.pop_back();
return collectable;
}
/**
* Add a collectable to the queue, but only when it has not been marked yet.
* When adding it to the queue, the collectable will be marked, so subsequent calls
* will not add it again.
*/
void Enqueue(SQCollectable *collectable)
{
if ((collectable->_uiRef & MARK_FLAG) == 0) {
collectable->_uiRef |= MARK_FLAG;
this->stack.push_back(collectable);
}
}
};

View File

@@ -99,6 +99,7 @@ SQSharedState::SQSharedState()
_notifyallexceptions = false;
_scratchpad=NULL;
_scratchpadsize=0;
_collectable_free_processing = false;
#ifndef NO_GARBAGE_COLLECTOR
_gc_chain=NULL;
#endif
@@ -226,20 +227,48 @@ SQInteger SQSharedState::GetMetaMethodIdxByName(const SQObjectPtr &name)
return -1;
}
/**
* Helper function that is to be used instead of calling FinalFree directly on the instance,
* so the frees can happen iteratively. This as in the FinalFree the references to any other
* objects are released, which can cause those object to be freed yielding a potentially
* very deep stack in case of for example a link list.
*
* This is done internally by a vector onto which the to be freed instances are pushed. When
* this is called when not already processing, this method will actually call the FinalFree
* function which might cause more elements to end up in the queue which this method then
* picks up continueing until it has processed all instances in that queue.
* @param collectable The collectable to (eventually) free.
*/
void SQSharedState::DelayFinalFree(SQCollectable *collectable)
{
this->_collectable_free_queue.push_back(collectable);
if (!this->_collectable_free_processing) {
this->_collectable_free_processing = true;
while (!this->_collectable_free_queue.empty()) {
SQCollectable *collectable = this->_collectable_free_queue.back();
this->_collectable_free_queue.pop_back();
collectable->FinalFree();
}
this->_collectable_free_processing = false;
}
}
#ifndef NO_GARBAGE_COLLECTOR
void SQSharedState::MarkObject(SQObjectPtr &o,SQCollectable **chain)
void SQSharedState::EnqueueMarkObject(SQObjectPtr &o,SQGCMarkerQueue &queue)
{
switch(type(o)){
case OT_TABLE:_table(o)->Mark(chain);break;
case OT_ARRAY:_array(o)->Mark(chain);break;
case OT_USERDATA:_userdata(o)->Mark(chain);break;
case OT_CLOSURE:_closure(o)->Mark(chain);break;
case OT_NATIVECLOSURE:_nativeclosure(o)->Mark(chain);break;
case OT_GENERATOR:_generator(o)->Mark(chain);break;
case OT_THREAD:_thread(o)->Mark(chain);break;
case OT_CLASS:_class(o)->Mark(chain);break;
case OT_INSTANCE:_instance(o)->Mark(chain);break;
case OT_TABLE:queue.Enqueue(_table(o));break;
case OT_ARRAY:queue.Enqueue(_array(o));break;
case OT_USERDATA:queue.Enqueue(_userdata(o));break;
case OT_CLOSURE:queue.Enqueue(_closure(o));break;
case OT_NATIVECLOSURE:queue.Enqueue(_nativeclosure(o));break;
case OT_GENERATOR:queue.Enqueue(_generator(o));break;
case OT_THREAD:queue.Enqueue(_thread(o));break;
case OT_CLASS:queue.Enqueue(_class(o));break;
case OT_INSTANCE:queue.Enqueue(_instance(o));break;
default: break; //shutup compiler
}
}
@@ -248,27 +277,36 @@ void SQSharedState::MarkObject(SQObjectPtr &o,SQCollectable **chain)
SQInteger SQSharedState::CollectGarbage(SQVM *vm)
{
SQInteger n=0;
SQCollectable *tchain=NULL;
SQVM *vms = _thread(_root_vm);
vms->Mark(&tchain);
#ifndef NDEBUG
SQGCMarkerQueue queue;
queue.Enqueue(vms);
#ifdef WITH_ASSERT
SQInteger x = _table(_thread(_root_vm)->_roottable)->CountUsed();
#endif
_refs_table.Mark(&tchain);
MarkObject(_registry,&tchain);
MarkObject(_consts,&tchain);
MarkObject(_metamethodsmap,&tchain);
MarkObject(_table_default_delegate,&tchain);
MarkObject(_array_default_delegate,&tchain);
MarkObject(_string_default_delegate,&tchain);
MarkObject(_number_default_delegate,&tchain);
MarkObject(_generator_default_delegate,&tchain);
MarkObject(_thread_default_delegate,&tchain);
MarkObject(_closure_default_delegate,&tchain);
MarkObject(_class_default_delegate,&tchain);
MarkObject(_instance_default_delegate,&tchain);
MarkObject(_weakref_default_delegate,&tchain);
_refs_table.EnqueueMarkObject(queue);
EnqueueMarkObject(_registry,queue);
EnqueueMarkObject(_consts,queue);
EnqueueMarkObject(_metamethodsmap,queue);
EnqueueMarkObject(_table_default_delegate,queue);
EnqueueMarkObject(_array_default_delegate,queue);
EnqueueMarkObject(_string_default_delegate,queue);
EnqueueMarkObject(_number_default_delegate,queue);
EnqueueMarkObject(_generator_default_delegate,queue);
EnqueueMarkObject(_thread_default_delegate,queue);
EnqueueMarkObject(_closure_default_delegate,queue);
EnqueueMarkObject(_class_default_delegate,queue);
EnqueueMarkObject(_instance_default_delegate,queue);
EnqueueMarkObject(_weakref_default_delegate,queue);
SQCollectable *tchain=NULL;
while (!queue.IsEmpty()) {
SQCollectable *q = queue.Pop();
q->EnqueueMarkObjectForChildren(queue);
SQCollectable::RemoveFromChain(&_gc_chain, q);
SQCollectable::AddToChain(&tchain, q);
}
SQCollectable *t = _gc_chain;
SQCollectable *nx = NULL;
@@ -291,7 +329,7 @@ SQInteger SQSharedState::CollectGarbage(SQVM *vm)
t = t->_next;
}
_gc_chain = tchain;
#ifndef NDEBUG
#ifdef WITH_ASSERT
SQInteger z = _table(_thread(_root_vm)->_roottable)->CountUsed();
assert(z == x);
#endif
@@ -357,12 +395,12 @@ RefTable::~RefTable()
}
#ifndef NO_GARBAGE_COLLECTOR
void RefTable::Mark(SQCollectable **chain)
void RefTable::EnqueueMarkObject(SQGCMarkerQueue &queue)
{
RefNode *nodes = (RefNode *)_nodes;
for(SQUnsignedInteger n = 0; n < _numofslots; n++) {
if(type(nodes->obj) != OT_NULL) {
SQSharedState::MarkObject(nodes->obj,chain);
SQSharedState::EnqueueMarkObject(nodes->obj,queue);
}
nodes++;
}

View File

@@ -34,7 +34,7 @@ struct RefTable {
void AddRef(SQObject &obj);
SQBool Release(SQObject &obj);
#ifndef NO_GARBAGE_COLLECTOR
void Mark(SQCollectable **chain);
void EnqueueMarkObject(SQGCMarkerQueue &queue);
#endif
void Finalize();
private:
@@ -61,9 +61,10 @@ struct SQSharedState
public:
SQChar* GetScratchPad(SQInteger size);
SQInteger GetMetaMethodIdxByName(const SQObjectPtr &name);
void DelayFinalFree(SQCollectable *collectable);
#ifndef NO_GARBAGE_COLLECTOR
SQInteger CollectGarbage(SQVM *vm);
static void MarkObject(SQObjectPtr &o,SQCollectable **chain);
static void EnqueueMarkObject(SQObjectPtr &o,SQGCMarkerQueue &queue);
#endif
SQObjectPtrVec *_metamethods;
SQObjectPtr _metamethodsmap;
@@ -74,6 +75,10 @@ public:
SQObjectPtr _registry;
SQObjectPtr _consts;
SQObjectPtr _constructoridx;
/** Queue to make freeing of collectables iterative. */
std::vector<SQCollectable *> _collectable_free_queue;
/** Whether someone is already processing the _collectable_free_queue. */
bool _collectable_free_processing;
#ifndef NO_GARBAGE_COLLECTOR
SQCollectable *_gc_chain;
#endif

View File

@@ -50,7 +50,7 @@ public:
newtable->_delegate = NULL;
return newtable;
}
void Finalize();
void Finalize() override;
SQTable *Clone();
~SQTable()
{
@@ -60,7 +60,7 @@ public:
SQ_FREE(_nodes, _numofnodes * sizeof(_HashNode));
}
#ifndef NO_GARBAGE_COLLECTOR
void Mark(SQCollectable **chain);
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue) override;
#endif
inline _HashNode *_Get(const SQObjectPtr &key,SQHash hash)
{
@@ -81,7 +81,11 @@ public:
SQInteger CountUsed(){ return _usednodes;}
void Clear();
void Release()
void Release() override
{
this->_sharedstate->DelayFinalFree(this);
}
void FinalFree() override
{
sq_delete(this, SQTable);
}

View File

@@ -18,7 +18,7 @@ struct SQUserData : SQDelegable
return ud;
}
#ifndef NO_GARBAGE_COLLECTOR
void Mark(SQCollectable **chain);
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue);
void Finalize(){SetDelegate(NULL);}
#endif
void Release() {

View File

@@ -1460,7 +1460,7 @@ bool SQVM::DeleteSlot(const SQObjectPtr &self,const SQObjectPtr &key,SQObjectPtr
}
}
res = t;
}
}
break;
default:
Raise_Error("attempt to delete a slot from a %s",GetTypeName(self));
@@ -1471,7 +1471,7 @@ bool SQVM::DeleteSlot(const SQObjectPtr &self,const SQObjectPtr &key,SQObjectPtr
bool SQVM::Call(SQObjectPtr &closure,SQInteger nparams,SQInteger stackbase,SQObjectPtr &outres,SQBool raiseerror,SQBool can_suspend)
{
#ifndef NDEBUG
#ifdef WITH_ASSERT
SQInteger prevstackbase = _stackbase;
#endif
switch(type(closure)) {
@@ -1482,13 +1482,13 @@ bool SQVM::Call(SQObjectPtr &closure,SQInteger nparams,SQInteger stackbase,SQObj
bool ret = Execute(closure, _top - nparams, nparams, stackbase,outres,raiseerror);
this->_can_suspend = backup_suspend;
return ret;
}
}
break;
case OT_NATIVECLOSURE:{
case OT_NATIVECLOSURE: {
bool suspend;
return CallNative(_nativeclosure(closure), nparams, stackbase, outres,suspend);
}
}
break;
case OT_CLASS: {
SQObjectPtr constr;
@@ -1499,12 +1499,12 @@ bool SQVM::Call(SQObjectPtr &closure,SQInteger nparams,SQInteger stackbase,SQObj
return Call(constr,nparams,stackbase,temp,raiseerror,false);
}
return true;
}
}
break;
default:
return false;
}
#ifndef NDEBUG
#ifdef WITH_ASSERT
if(!_suspended) {
assert(_stackbase == prevstackbase);
}

View File

@@ -113,7 +113,7 @@ public:
#endif
#ifndef NO_GARBAGE_COLLECTOR
void Mark(SQCollectable **chain);
void EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue);
#endif
void Finalize();
void GrowCallStack() {

View File

@@ -704,16 +704,16 @@ static const NWidgetPart _nested_ai_config_widgets[] = {
NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_AIC_GAMELIST), SetMinimalSize(288, 14), SetFill(1, 0), SetMatrixDataTip(1, 1, STR_AI_CONFIG_GAMELIST_TOOLTIP),
EndContainer(),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(7, 0, 7),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CHANGE), SetFill(1, 0), SetMinimalSize(93, 12), SetDataTip(STR_AI_CONFIG_CHANGE, STR_AI_CONFIG_CHANGE_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CONFIGURE), SetFill(1, 0), SetMinimalSize(93, 12), SetDataTip(STR_AI_CONFIG_CONFIGURE, STR_AI_CONFIG_CONFIGURE_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CLOSE), SetFill(1, 0), SetMinimalSize(93, 12), SetDataTip(STR_AI_SETTINGS_CLOSE, STR_NULL),
EndContainer(),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CHANGE), SetFill(1, 0), SetMinimalSize(93, 0), SetDataTip(STR_AI_CONFIG_CHANGE, STR_AI_CONFIG_CHANGE_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CONFIGURE), SetFill(1, 0), SetMinimalSize(93, 0), SetDataTip(STR_AI_CONFIG_CONFIGURE, STR_AI_CONFIG_CONFIGURE_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CLOSE), SetFill(1, 0), SetMinimalSize(93, 0), SetDataTip(STR_AI_SETTINGS_CLOSE, STR_NULL),
EndContainer(),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE), SetPIP(7, 0, 7),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_TEXTFILE + TFT_README), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_README, STR_NULL),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_TEXTFILE + TFT_CHANGELOG), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_CHANGELOG, STR_NULL),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_TEXTFILE + TFT_LICENSE), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_TEXTFILE_VIEW_LICENCE, STR_NULL),
EndContainer(),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CONTENT_DOWNLOAD), SetFill(1, 0), SetMinimalSize(279, 12), SetPadding(0, 7, 9, 7), SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT),
NWidget(WWT_PUSHTXTBTN, COLOUR_YELLOW, WID_AIC_CONTENT_DOWNLOAD), SetFill(1, 0), SetMinimalSize(279, 0), SetPadding(0, 7, 9, 7), SetDataTip(STR_INTRO_ONLINE_CONTENT, STR_INTRO_TOOLTIP_ONLINE_CONTENT),
EndContainer(),
};

View File

@@ -1351,7 +1351,9 @@ DEF_CONSOLE_CMD(ConRescanNewGRF)
return true;
}
RequestNewGRFScan();
if (!RequestNewGRFScan()) {
IConsoleWarning("NewGRF scanning is already running. Please wait until completed to run again.");
}
return true;
}

View File

@@ -82,7 +82,7 @@ struct Pool : PoolBase {
/* Ensure Tmax_size is within the bounds of Tindex. */
static_assert((uint64)(Tmax_size - 1) >> 8 * sizeof(Tindex) == 0);
static const size_t MAX_SIZE = Tmax_size; ///< Make template parameter accessible from outside
static constexpr size_t MAX_SIZE = Tmax_size; ///< Make template parameter accessible from outside
const char * const name; ///< Name of this pool

View File

@@ -456,7 +456,7 @@ static bool DisasterTick_Aircraft(DisasterVehicle *v, uint16 image_override, boo
DestructIndustry(i);
SetDParam(0, i->town->index);
AddTileNewsItem(news_message, NT_ACCIDENT, v->dest_tile);
AddIndustryNewsItem(news_message, NT_ACCIDENT, i->index);
if (_settings_client.sound.disaster) SndPlayTileFx(SND_12_EXPLOSION, i->location.tile);
}
} else if (v->current_order.GetDestination() == 0) {

View File

@@ -722,11 +722,9 @@ static void EnableEngineForCompany(EngineID eid, CompanyID company)
SetBit(e->company_avail, company);
if (e->type == VEH_TRAIN) {
assert(e->u.rail.railtype < RAILTYPE_END);
c->avail_railtypes = AddDateIntroducedRailTypes(c->avail_railtypes | GetRailTypeInfo(e->u.rail.railtype)->introduces_railtypes, _date);
c->avail_railtypes = GetCompanyRailtypes(c->index);
} else if (e->type == VEH_ROAD) {
assert(e->u.road.roadtype < ROADTYPE_END);
c->avail_roadtypes = AddDateIntroducedRoadTypes(c->avail_roadtypes | GetRoadTypeInfo(e->u.road.roadtype)->introduces_roadtypes, _date);
c->avail_roadtypes = GetCompanyRoadTypes(c->index);
}
if (company == _local_company) {

View File

@@ -46,7 +46,6 @@ static const NWidgetPart _nested_group_widgets[] = {
NWidget(NWID_HORIZONTAL),
/* left part */
NWidget(NWID_VERTICAL),
NWidget(WWT_PANEL, COLOUR_GREY), SetMinimalTextLines(1, WD_DROPDOWNTEXT_TOP + WD_DROPDOWNTEXT_BOTTOM), SetFill(1, 0), EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, WID_GL_ALL_VEHICLES), SetFill(1, 0), EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, WID_GL_DEFAULT_VEHICLES), SetFill(1, 0), EndContainer(),
NWidget(NWID_HORIZONTAL),
@@ -54,18 +53,18 @@ static const NWidgetPart _nested_group_widgets[] = {
SetFill(1, 0), SetResize(0, 1), SetScrollbar(WID_GL_LIST_GROUP_SCROLLBAR),
NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_GL_LIST_GROUP_SCROLLBAR),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, WID_GL_INFO), SetFill(1, 0), EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY, WID_GL_INFO), SetFill(1, 1), SetMinimalTextLines(3, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM), EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_CREATE_GROUP), SetFill(0, 1),
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_CREATE_GROUP),
SetDataTip(SPR_GROUP_CREATE_TRAIN, STR_GROUP_CREATE_TOOLTIP),
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_DELETE_GROUP), SetFill(0, 1),
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_DELETE_GROUP),
SetDataTip(SPR_GROUP_DELETE_TRAIN, STR_GROUP_DELETE_TOOLTIP),
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_RENAME_GROUP), SetFill(0, 1),
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_RENAME_GROUP),
SetDataTip(SPR_GROUP_RENAME_TRAIN, STR_GROUP_RENAME_TOOLTIP),
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_LIVERY_GROUP), SetFill(0, 1),
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_LIVERY_GROUP),
SetDataTip(SPR_GROUP_LIVERY_TRAIN, STR_GROUP_LIVERY_TOOLTIP),
NWidget(WWT_PANEL, COLOUR_GREY), SetFill(1, 1), EndContainer(),
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_REPLACE_PROTECTION), SetFill(0, 1),
NWidget(WWT_PANEL, COLOUR_GREY), SetFill(1, 0), EndContainer(),
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_REPLACE_PROTECTION),
SetDataTip(SPR_GROUP_REPLACE_OFF_TRAIN, STR_GROUP_REPLACE_PROTECTION_TOOLTIP),
EndContainer(),
EndContainer(),
@@ -87,14 +86,14 @@ static const NWidgetPart _nested_group_widgets[] = {
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY), SetMinimalSize(1, 0), SetFill(1, 1), SetResize(1, 0), EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GL_AVAILABLE_VEHICLES), SetMinimalSize(106, 12), SetFill(0, 1),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GL_AVAILABLE_VEHICLES), SetMinimalSize(106, 12),
SetDataTip(STR_BLACK_STRING, STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP),
NWidget(WWT_PANEL, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 1), SetResize(1, 0), EndContainer(),
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GL_MANAGE_VEHICLES_DROPDOWN), SetMinimalSize(118, 12), SetFill(0, 1),
NWidget(WWT_PANEL, COLOUR_GREY), SetMinimalSize(0, 12), SetFill(1, 0), SetResize(1, 0), EndContainer(),
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GL_MANAGE_VEHICLES_DROPDOWN), SetMinimalSize(118, 12),
SetDataTip(STR_VEHICLE_LIST_MANAGE_LIST, STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP),
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_STOP_ALL), SetMinimalSize(12, 12), SetFill(0, 1),
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_STOP_ALL), SetMinimalSize(12, 12),
SetDataTip(SPR_FLAG_VEH_STOPPED, STR_VEHICLE_LIST_MASS_STOP_LIST_TOOLTIP),
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_START_ALL), SetMinimalSize(12, 12), SetFill(0, 1),
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_START_ALL), SetMinimalSize(12, 12),
SetDataTip(SPR_FLAG_VEH_RUNNING, STR_VEHICLE_LIST_MASS_START_LIST_TOOLTIP),
NWidget(WWT_RESIZEBOX, COLOUR_GREY),
EndContainer(),
@@ -229,7 +228,7 @@ private:
this->column_size[VGC_NUMBER] = GetStringBoundingBox(STR_GROUP_COUNT_WITH_SUBGROUP);
this->tiny_step_height = std::max(this->tiny_step_height, this->column_size[VGC_NUMBER].height);
this->tiny_step_height += WD_MATRIX_TOP;
this->tiny_step_height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
return WD_FRAMERECT_LEFT + 8 +
this->column_size[VGC_FOLD].width + 2 +
@@ -255,7 +254,7 @@ private:
{
/* Highlight the group if a vehicle is dragged over it */
if (g_id == this->group_over) {
GfxFillRect(left + WD_FRAMERECT_LEFT, y + WD_FRAMERECT_TOP, right - WD_FRAMERECT_RIGHT, y + this->tiny_step_height - WD_FRAMERECT_BOTTOM - WD_MATRIX_TOP, _colour_gradient[COLOUR_GREY][7]);
GfxFillRect(left + WD_FRAMERECT_LEFT, y + WD_FRAMERECT_TOP + 1, right - WD_FRAMERECT_RIGHT, y + this->tiny_step_height - WD_FRAMERECT_BOTTOM - 1, _colour_gradient[COLOUR_GREY][7]);
}
if (g_id == NEW_GROUP) return;
@@ -386,7 +385,7 @@ public:
resize->height = this->tiny_step_height;
/* Minimum height is the height of the list widget minus all and default vehicles... */
size->height = 4 * GetVehicleListHeight(this->vli.vtype, this->tiny_step_height) - 2 * this->tiny_step_height;
size->height = 4 * GetVehicleListHeight(this->vli.vtype, this->tiny_step_height);
/* ... minus the buttons at the bottom ... */
uint max_icon_height = GetSpriteSize(this->GetWidget<NWidgetCore>(WID_GL_CREATE_GROUP)->widget_data).height;
@@ -429,11 +428,6 @@ public:
*size = maxdim(*size, d);
break;
}
case WID_GL_INFO: {
size->height = (FONT_HEIGHT_NORMAL * 3) + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
break;
}
}
}
@@ -555,11 +549,11 @@ public:
{
switch (widget) {
case WID_GL_ALL_VEHICLES:
DrawGroupInfo(r.top + WD_FRAMERECT_TOP, r.left, r.right, ALL_GROUP);
DrawGroupInfo(r.top, r.left, r.right, ALL_GROUP);
break;
case WID_GL_DEFAULT_VEHICLES:
DrawGroupInfo(r.top + WD_FRAMERECT_TOP, r.left, r.right, DEFAULT_GROUP);
DrawGroupInfo(r.top, r.left, r.right, DEFAULT_GROUP);
break;
case WID_GL_INFO: {
@@ -600,7 +594,7 @@ public:
}
case WID_GL_LIST_GROUP: {
int y1 = r.top + WD_FRAMERECT_TOP;
int y1 = r.top;
int max = std::min<size_t>(this->group_sb->GetPosition() + this->group_sb->GetCapacity(), this->groups.size());
for (int i = this->group_sb->GetPosition(); i < max; ++i) {
const Group *g = this->groups[i];
@@ -892,7 +886,11 @@ public:
/* We do not support VehicleClicked() here since the contextual action may only make sense for individual vehicles */
if (vindex == v->index) {
ShowVehicleListWindow(v);
if (vehgroup.NumVehicles() == 1) {
ShowVehicleViewWindow(v);
} else {
ShowVehicleListWindow(v);
}
}
break;
}

View File

@@ -1400,7 +1400,7 @@ static void CalculateSnowLine()
static uint8 CalculateDesertLine()
{
/* CalculateCoverageLine() runs from top to bottom, so we need to invert the coverage. */
return _settings_game.game_creation.snow_line_height = CalculateCoverageLine(100 - _settings_game.game_creation.desert_coverage, 4);
return CalculateCoverageLine(100 - _settings_game.game_creation.desert_coverage, 4);
}
void GenerateLandscape(byte mode)

View File

@@ -990,6 +990,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Kies die
STR_GAME_OPTIONS_RESOLUTION_OTHER :ander
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK} Koppelvlak groote
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK} Kies die koppelvlak element groote om te gebruik

View File

@@ -965,6 +965,7 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}تسري
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}حدد هذا المربع للسماح لـ OpenTTD بمحاولة استخدام تسريع الأجهزة. سيتم تطبيق الإعداد الذي تم تغييره فقط عند إعادة تشغيل اللعبة
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}لن يعمل الإعداد إلا بعد إعادة تشغيل اللعبة
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}حجم اللوحة
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}حدد العنصر المطلوب

View File

@@ -961,6 +961,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Pantaila
STR_GAME_OPTIONS_RESOLUTION_OTHER :besteak
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Interfaze tamaina
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normala

View File

@@ -1299,6 +1299,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Выба
STR_GAME_OPTIONS_RESOLUTION_OTHER :Iншае
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Памер элементаў інтэрфейсу
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Выберыце памер элементаў інтэрфейсу

View File

@@ -1007,6 +1007,9 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Acelera
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Marque esta caixa para permitir que o OpenTTD tente usar a aceleração de hardware. Qualquer mudança nesta configuração só será aplicada após reiniciar o jogo.
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}A configuração só terá efeito após reiniciar o jogo
STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync
STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Marque esta caixa para habilitar o v-sync na tela. Qualquer mudança nesta configuração só será aplicada após reiniciar o jogo. Só funciona com a aceleração de hardware habilitada
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Tamanho da interface
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Selecione o tamanho de elemento de interface a ser usado

View File

@@ -969,6 +969,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Избо
STR_GAME_OPTIONS_RESOLUTION_OTHER :друго
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Интерфейс размер
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Изберете размера на интерфейс елемент за използване

View File

@@ -1007,6 +1007,9 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Accelera
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Seleccioneu aquesta opció per permetre que l'OpenTTD provi d'usar acceleració per maquinari. Si es canvia l'opció, s'aplicarà quan es reiniciï el programa.
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}La configuració tindrà efecte quan es reiniciï el programa.
STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync
STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Selecciona aquesta casella per activar la sincronització vertical de la pantalla. Els canvis s'aplicaran quan es reiniciï el programa. Només funciona si s'activa l'acceleració per maquinari.
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Mida de la interfície
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Escull la mida dels elements de la interfície
@@ -2689,7 +2692,7 @@ STR_LAND_AREA_INFORMATION_OWNER :{BLACK}Propieta
STR_LAND_AREA_INFORMATION_ROAD_OWNER :{BLACK}Propietari de la carretera: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_TRAM_OWNER :{BLACK}Propietari del rail del tramvia: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_RAIL_OWNER :{BLACK}Propietari del rail: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Autoritat Local: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Autoritat local: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :Cap
STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Coordenades: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING})
STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Construït: {LTBLUE}{DATE_LONG}

View File

@@ -1086,6 +1086,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Odaberi
STR_GAME_OPTIONS_RESOLUTION_OTHER :ostalo
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Veličina sučelja
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Odaberite koju ćete veličinu elementa sučelja koristiti

View File

@@ -1093,6 +1093,7 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Hardwaro
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Zaškrtni, pokud chceš OpenTTD povolit použití hardwarové akcelerace. Změněné nastavení bude aplikováno po restartu hry
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Nastavení vstoupí v platnost pouze po restartu hry
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Velikost rozhraní
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Zvolit velikost prvků uživatelského rozhraní

View File

@@ -991,6 +991,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :andet
STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Hardware-acceleration
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}grænseflade størrelse
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Vælg den grænseflade størrelse du ønsker at benytte

View File

@@ -1006,6 +1006,7 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Hardware
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Selecteer dit vakje om OpenTTD hardwareversnelling te laten gebruiken. De gewijzigde instelling wordt pas van kracht nadat het spel opnieuw is gestart.
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}De instelling wordt pas van kracht als het spel opnieuw is gestart
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Menupuntgrootte
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Kiest de grootte van bedieningselementen

View File

@@ -1006,6 +1006,9 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Hardware
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Check this box to allow OpenTTD to try to use hardware acceleration. A changed setting will only be applied upon game restart
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}The setting will only take effect after a game restart
STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync
STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Check this box to v-sync the screen. A changed setting will only be applied upon game restart. Only works with hardware acceleration enabled
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Interface size
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Select the interface element size to use

View File

@@ -966,6 +966,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :other
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Base graphics set
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Select the base graphics set to use
STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} missing/corrupted file{P "" s}

View File

@@ -1006,6 +1006,9 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Hardware
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Check this box to allow OpenTTD to try to use hardware acceleration. A changed setting will only be applied upon game restart
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}The setting will only take effect after a game restart
STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync
STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Check this box to v-sync the screen. A changed setting will only be applied upon game restart. Only works with hardware acceleration enabled
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Interface size
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Select the interface element size to use

View File

@@ -953,6 +953,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Elektu u
STR_GAME_OPTIONS_RESOLUTION_OTHER :alia
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Interfacgrandeco
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normala

View File

@@ -1063,6 +1063,7 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Riistvar
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Märkides selle ruudu, lubad OpenTTD-l üritada kasutada riistvarakiirendust. Muudetud seade omab mõju pärast mängu taaskäivitust
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Seade omab mõju alles pärast mängu taaskäivitust
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Liidese suurus
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Vali kasutatav liideseelementide suurus

View File

@@ -947,6 +947,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :annað
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Base grafikk sett
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Vel ta base grafikk setti tú vil brúka
STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} vantandi/oyðiløgd fíl{P a ir}

View File

@@ -1006,6 +1006,9 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Laitteis
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Valitse tämä, jos haluat, että OpenTTD yrittää käyttää laitteistokiihdytystä. Muutettu asetus tulee voimaan vasta pelin uudelleenkäynnistyksen jälkeen.
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Asetus tulee voimaan vasta pelin uudelleenkäynnistyksen jälkeen
STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}Pystytahdistus
STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Valitse tämä ottaaksesi käyttöön näytön pystytahdistuksen. Muutettu asetus tulee voimaan vasta pelin uudelleenkäynnistyksen jälkeen. Edellyttää, että laitteistokiihdytys on käytössä.
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Käyttöliittymän koko
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Valitse käyttöliittymäelementtien koko

View File

@@ -1007,6 +1007,9 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK} Accél
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Cochez cette case permet à OpenTTD d'utiliser l'accélération matérielle, si possible. Un paramètre modifié ne sera pris en compte qu'au redémarrage du jeu
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Les paramètres ne prendront effet qu'après le redémarrage du jeu
STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync
STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Cochez cette case pour activer la synchronisation verticale de l'écran. La modification de ce paramètres ne sera effective qu'après le redémarrage du jeu. Fonctionne uniquement si laccélération matérielle est active
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Taille d'interface
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Choisir la taille d'élément d'interface à utiliser
@@ -1023,7 +1026,7 @@ STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Taille double
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Taille quadruple
STR_GAME_OPTIONS_GRAPHICS :Graphiques {BLACK}
STR_GAME_OPTIONS_GRAPHICS :{BLACK} Graphiques
STR_GAME_OPTIONS_REFRESH_RATE :{BLACK} Taux de rafraîchissement de l'affichage
STR_GAME_OPTIONS_REFRESH_RATE_TOOLTIP :{BLACK} Sélectionnez la fréquence de rafraîchissement à utiliser
@@ -3437,7 +3440,7 @@ STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Déména
STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Reconstruire ailleurs le siège de la compagnie pour le prix de 1{NBSP}% de sa valeur.{}Shift-clic pour afficher seulement le coût estimé.
STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Détails
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Afficher le détail des calculs d'infrastructure
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :Donner de largent
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Donner de largent
STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}Donner de largent à cette compagnie
STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nouveau visage

View File

@@ -1174,6 +1174,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Tagh dù
STR_GAME_OPTIONS_RESOLUTION_OTHER :Gnàthaichte
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Meud na h-eadar-aghaidh
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Tagh am meud airson rud san eadar-aghaidh

View File

@@ -989,6 +989,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Seleccio
STR_GAME_OPTIONS_RESOLUTION_OTHER :outra
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Tamaño da interface
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Seleciona o tamaño de elementos da interface a usar

View File

@@ -1007,6 +1007,9 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Hardware
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Dieses Kästchen ankreuzen, um OpenTTD zu erlauben, die Hardwarebeschleunigung zu verwenden. Eine geänderte Einstellung wird nur beim Spielneustart wirksam
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Die Einstellung tritt nur nach einem Neustart des Spiels in Kraft
STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync
STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Dieses Kästchen ankreuzen, um VSync zu aktivieren. Eine geänderte Einstellung wird nur beim Spielneustart wirksam. Funktioniert nur mit aktivierter Hardwarebeschleunigung
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Größe der Bedienelemente
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Wähle die Größe der Bedienelemente

View File

@@ -1101,6 +1101,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Διαλ
STR_GAME_OPTIONS_RESOLUTION_OTHER :άλλη
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Μέγεθος διεπαφής
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Επιλέξτε το μέγεθος στοιχείου διεπαφής

View File

@@ -988,6 +988,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}בחר
STR_GAME_OPTIONS_RESOLUTION_OTHER :אחר
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}גודל ממשק
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}בחר את ממשק גודל העצם לשימוש

View File

@@ -1070,6 +1070,9 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Hardvere
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Bekapcsolásával az OpenTTD hardveres gyorsítást próbál alkalmazni. A beállítás csak a játék újraindítása után lép érvénybe.
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Ez a beállítás csak a játék újraindítása után lép érvénybe
STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync (Vertikális Szinkronizáció)
STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Jelöld be ezt a négyzetet hogy engedélyezd a v-sync-et. A változtatás csak a játék újraindítása után fog érvényesülni. Kizárólag hardware gyorsítással működik!
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Felület mérete
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Használni kívánt felületméret kiválasztása

View File

@@ -946,6 +946,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :annað
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Grunngrafík
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Nota grunngrafíkina
STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} týnd{P "" ar} eða ónýt{P "" ar} skrá{P "" r}

View File

@@ -946,6 +946,7 @@ STR_GAME_OPTIONS_CURRENCY_NTD :Dollar Taiwan B
STR_GAME_OPTIONS_CURRENCY_CNY :Renminbi Cina (CNY)
STR_GAME_OPTIONS_CURRENCY_HKD :Dollar Hong Kong (HKD)
STR_GAME_OPTIONS_CURRENCY_INR :India Rupee (INR)
STR_GAME_OPTIONS_CURRENCY_MYR :Ringgit Malaysia (MYR)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Berkendara di lajur kiri
@@ -999,6 +1000,9 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Resolusi
STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Pilih resolusi layar yang diinginkan
STR_GAME_OPTIONS_RESOLUTION_OTHER :lainnya
STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Akselerasi perangkat keras
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Pengaturan hanya akan berlaku setelah game dimulai ulang
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Ukuran antarmuka
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Pilih ukuran elemen antarmuka yang akan digunakan
@@ -1016,7 +1020,10 @@ STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Normal
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Kali dua
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :4 kali
STR_GAME_OPTIONS_GRAPHICS :{BLACK}Grafik
STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}Menampilkan kecepatan refresh
STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Kecepatan refresh yang lebih tinggi dari 60Hz dapat memengaruhi kinerja.
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Set Grafik Dasar
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Pilih grafik dasar yang digunakan
@@ -1112,6 +1119,8 @@ STR_TERRAIN_TYPE_FLAT :Datar
STR_TERRAIN_TYPE_HILLY :Berbukit
STR_TERRAIN_TYPE_MOUNTAINOUS :Pegunungan
STR_TERRAIN_TYPE_ALPINIST :Pemanjat Gunung
STR_TERRAIN_TYPE_CUSTOM :Ketinggian Kustom
STR_TERRAIN_TYPE_CUSTOM_VALUE :Ketinggian Kustom ({NUM})
STR_CITY_APPROVAL_PERMISSIVE :Selalu boleh
STR_CITY_APPROVAL_TOLERANT :Toleran
@@ -1193,6 +1202,8 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Mengaktifkan be
STR_CONFIG_SETTING_CITY_APPROVAL :Sikap pemerintah kota terhadap restrukturasi area: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Pilih seberapa banyak dampak kebisingan dan lingkungan oleh perusahaan terhadap peringkat kota karena pembangunan di daerah
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Ketinggian peta maksimum: {STRING}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Tetapkan ketinggian maksimum medan peta. Dengan "(otomatis)" nilai yang baik akan diambil setelah pembuatan medan
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Kamu tidak bisa mengubah ketinggian peta maksimum di angka itu. Setidaknya ada satu gunung di peta yang lebih tinggi
STR_CONFIG_SETTING_AUTOSLOPE :Ijinkan pembentukan slop dibawah bangunan, rel, dsb.: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Ijinkan pembentukan tanah dibawah bangunan dan trek tanpa merusaknya
@@ -1338,6 +1349,9 @@ STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Jarak maksimal
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Kilang minyak hanya dibangun pada tepi peta atau pantai
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Tinggi garis salju: {STRING}
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Mengatur ketinggian di mana salju akan muncul. Salju juga akan mempengaruhi pengembangan industri dan persyaratan untuk pertumbuhan kota
STR_CONFIG_SETTING_DESERT_COVERAGE :Cakupan gurun: {STRING}
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Kontrol perkiraan jumlah gurun di lanskap tropis. Gurun juga mempengaruhi generasi industri. Hanya digunakan selama pembuatan peta
STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Kekasaran daratan: {STRING}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(hanya TerraGenesis) Memilih frekuensi bukit: Bentang darat rata punya bukit yang lebih sedikit dan lebih lebar. Bentang darat bergunung punya lebih banyak bukit, dan ini mungkin akan terlihat lebih membosankan
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Sangat halus
@@ -1643,12 +1657,15 @@ STR_CONFIG_SETTING_ZOOM_MIN :Tingkat Perbesa
STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Perbesaran viewport maksimal. Semakin besar semakin banyak memori yang dibutuhkan
STR_CONFIG_SETTING_ZOOM_MAX :Tingkat zoom out Maksimal: {STRING}
STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Pengecilan maksimum untuk viewport. Semakin kecil semakin tidak jelas
STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Sprite resolusi tertinggi untuk digunakan: {STRING}
STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x
STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x
STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normal
STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X :2x
STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X :4x
STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X :8x
STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x
STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_NORMAL :1x
STR_CONFIG_SETTING_TOWN_GROWTH :Kecepatan pertumbuhan kota: {STRING}
STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Kecepatan pertumbuhan kota
STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Tidak tumbuh
@@ -1783,6 +1800,7 @@ STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Kehabisa
STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Mengalokasikan {BYTES} 'spritecache' gagal. 'Spritecache' dikurangi ke {BYTES}. Ini akan kurangi kinerja OpenTTD. Untuk kurangi kebutuhan memori anda bisa coba matikan grafik 32bpp dan/atau tingkat pembesaran
# Video initalization errors
STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... tidak ditemukan GPU yang kompatibel. Akselerasi perangkat keras dinonaktifkan
# Intro window
STR_INTRO_CAPTION :{WHITE}OpenTTD {REV}
@@ -2314,6 +2332,8 @@ STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD
STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Ya, download file gambar
STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Tidak, tutup OpenTTD
STR_MISSING_GRAPHICS_ERROR_TITLE :{WHITE}Gagal Mendownload
STR_MISSING_GRAPHICS_ERROR_QUIT :{BLACK}Keluar OpenTTD
# Transparency settings window
STR_TRANSPARENCY_CAPTION :{WHITE}Pengaturan Transparasi
@@ -2864,6 +2884,9 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Jumlah Kota:
STR_MAPGEN_DATE :{BLACK}Tgl:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Jumlah industri:
STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Kurangi satu ketinggian maksimum puncak tertinggi di peta
STR_MAPGEN_SNOW_COVERAGE_DOWN :{BLACK}Kurangi cakupan salju hingga sepuluh persen
STR_MAPGEN_DESERT_COVERAGE :{BLACK}Cakupan gurun:
STR_MAPGEN_LAND_GENERATOR :{BLACK}Algoritma pulau:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Jenis dataran:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Area perairan:
@@ -2889,6 +2912,7 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nama Pet
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Luas:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT :{WHITE}Cakupan salju (dalam %)
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Ganti Tahun Permulaan
# SE Map generation
@@ -3179,6 +3203,7 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Kolusi
STR_GOALS_CAPTION :{WHITE}{COMPANY} Target
STR_GOALS_SPECTATOR_CAPTION :{WHITE}Target Global
STR_GOALS_SPECTATOR :Target Global
STR_GOALS_GLOBAL_BUTTON :{BLACK}Global
STR_GOALS_TEXT :{ORANGE}{STRING}
STR_GOALS_NONE :{ORANGE}- Tidak ada -
STR_GOALS_PROGRESS :{ORANGE}{STRING}
@@ -3553,6 +3578,7 @@ STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Daya Ger
STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Kargo dapat di ganti untuk: {GOLD}{STRING}
STR_PURCHASE_INFO_ALL_TYPES :Semua jenis kargo
STR_PURCHASE_INFO_NONE :Tidak Ada
STR_PURCHASE_INFO_ENGINES_ONLY :Hanya Lokomotif
STR_PURCHASE_INFO_ALL_BUT :Semua tapi tidak untuk {CARGO_LIST}
STR_PURCHASE_INFO_MAX_TE :{BLACK}Traksi Maks.: {GOLD}{FORCE}
STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Jangkauan: {GOLD}{COMMA} kotak

View File

@@ -969,6 +969,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Roghnaig
STR_GAME_OPTIONS_RESOLUTION_OTHER :eile
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Méid an chomhéadain
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Roghnaigh méid na heiliminte comhéadain a úsáidfear

View File

@@ -1008,6 +1008,7 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Accelera
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Seleziona questa opzione per consentire a OpenTTD di utilizzare l'accelerazione hardware. Eventuali cambiamenti avranno effetto solo dopo un riavvio del gioco
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Le nuove impostazioni avranno effetto solo dopo un riavvio del gioco
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Dimensione interfaccia
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Seleziona la dimensione deglie elementi dell'interfaccia grafica

View File

@@ -982,6 +982,7 @@ STR_GAME_OPTIONS_RESOLUTION_ITEM :{NUM}x{NUM}
STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}ハードウェアアクセラレーション
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}インターフェイスのサイズ
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}インターフェイス上の単位サイズを指定します

View File

@@ -954,7 +954,7 @@ STR_GAME_OPTIONS_CURRENCY_MYR :말레이시아
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :좌측통행
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_RIGHT :우측통행
STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}도시 이름
STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}도시 이름:
STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}도시 이름 스타일을 선택하세요
############ start of townname region
@@ -1004,9 +1004,12 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :기타
STR_GAME_OPTIONS_RESOLUTION_ITEM :{NUM}x{NUM}
STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}하드웨어 가속
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}OpenTTD가 하드웨어 가속을 사용하게 하려면 체크하세요. 변경 설정은 게임을 재시작한 뒤에 적용니다.
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}OpenTTD가 하드웨어 가속을 사용하게 하려면 체크하세요. 변경 설정은 게임을 재시작한 뒤에 적용될 것입니다.
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}이 설정은 게임을 재시작한 뒤에 적용될 것입니다
STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}수직 동기화
STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}화면과 수직 동기화하려면 체크하세요. 변경한 설정은 게임을 재시작한 뒤에 적용될 것입니다. 하드웨어 가속을 켠 경우에만 작동합니다.
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}인터페이스 크기
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}인터페이스의 크기를 선택합니다.
@@ -1534,20 +1537,20 @@ STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY :스크립트당
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_HELPTEXT :스크립트 하나가 강제 종료되기 전까지 사용할 수 있는 메모리의 양입니다. 크기가 큰 맵에서는 값을 크게 설정해야할 수도 있습니다.
STR_CONFIG_SETTING_SCRIPT_MAX_MEMORY_VALUE :{COMMA} MiB
STR_CONFIG_SETTING_SERVINT_ISPERCENT :신뢰도에 따른 정비 설정: {STRING}
STR_CONFIG_SETTING_SERVINT_ISPERCENT :신뢰도에 따른 점검 설정: {STRING}
STR_CONFIG_SETTING_SERVINT_ISPERCENT_HELPTEXT :차량 점검 방식을 "마지막 점검 이후 지난 시간 (또는) 최대 신뢰도에 대한 차량 신뢰도의 일정 퍼센트 하락 여부" 중에 하나로 선택합니다.
STR_CONFIG_SETTING_SERVINT_TRAINS :열차에 대한 기본 점검 기준: {STRING}
STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :열차에 따로 점검 기간이 설정되어있지 않은 경우에 사용할 기본 점검 기간을 설정합니다.
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}일/%
STR_CONFIG_SETTING_SERVINT_DISABLED :사용 안 함
STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :차량에 대한 기본 점검 기준: {STRING}
STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :차량 정비 설정을 하지 않은 경우, 기본값으로 사용할 정비 주기를 설정합니다.
STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :차량 점검 설정을 하지 않은 경우, 기본값으로 사용할 점검 주기를 설정합니다
STR_CONFIG_SETTING_SERVINT_AIRCRAFT :항공기에 대한 기본 점검 기준: {STRING}
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :항공기에 따로 점검 기간이 설정되어있지 않은 경우에 사용할 기본 점검 기간을 설정합니다.
STR_CONFIG_SETTING_SERVINT_SHIPS :선박에 대한 기본 점검 기준: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :선박에 따로 점검 기간이 설정되어있지 않은 경우에 사용할 기본 점검 기간을 설정합니다.
STR_CONFIG_SETTING_NOSERVICE :차량 고장 설정이 비활성화된 경우 정비하지 않음: {STRING}
STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :이 설정을 켜면, 차량이 고장나지 않도록 설정되어 있는 경우 차량이 정비를 하러 가지 않습니다.
STR_CONFIG_SETTING_NOSERVICE :차량 고장 설정을 껐으면 점검을 하지 않음: {STRING}
STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :이 설정을 켜면, 차량이 고장나지 않도록 설정되어 있는 경우 차량이 자동으로 점검을 하러 가지 않습니다
STR_CONFIG_SETTING_WAGONSPEEDLIMITS :화물차 속력 제한 적용: {STRING}
STR_CONFIG_SETTING_WAGONSPEEDLIMITS_HELPTEXT :이 설정을 켜면, 화물차의 속력 제한값에 따라 열차의 최대 속력을 제한합니다.
STR_CONFIG_SETTING_DISABLE_ELRAILS :전기 철도를 사용하지 않음: {STRING}
@@ -1723,38 +1726,38 @@ STR_CONFIG_SETTING_SHORT_PATH_SATURATION_HELPTEXT :종종 두 역
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY :속력 단위: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_HELPTEXT :속력를 표시할 때 선택한 단위를 사용하여 나타냅니다.
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :임페리얼법 (mph)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_IMPERIAL :야드파운드법 (mph)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :미터법 (km/h)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_SI :국제표준규격 (m/s)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS :게임 단위 (칸/일)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :차량의 힘 단위: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :출력할 차량의 힘 단위를 선택합니다.
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :임페리얼법 (마력)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :야드파운드법 (마력)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :미터법 (마력)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :국제표준규격 (kW)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT :무게 단위: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_HELPTEXT :무게를 표시할 때 선택한 단위를 사용하여 나타냅니다.
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :임페리얼법 (미국 톤)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_IMPERIAL :야드파운드법 (미국 톤)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :미터법 (톤)
STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_SI :국제표준규격 (kg)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME :부피 단위: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_HELPTEXT :부피를 표시할 때 선택한 단위를 사용하여 나타냅니다.
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :임페리얼법 (갤런)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_IMPERIAL :야드파운드법 (갤런)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_METRIC :미터법 (리터)
STR_CONFIG_SETTING_LOCALISATION_UNITS_VOLUME_SI :국제표준규격 (m³)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE :견인 효과 단위: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_HELPTEXT :견인 효과(견인력)를 표시할 때 선택한 단위를 사용하여 나타냅니다.
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :임페리얼법 (파운드중)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_IMPERIAL :야드파운드법 (파운드중)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_METRIC :미터법 (kgf)
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE_SI :국제표준규격 (kN)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT :높이 단위: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_HELPTEXT :높이를 표시할 때 선택한 단위를 사용하여 나타냅니다.
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :임페리얼법 (ft)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :야드파운드법 (ft)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :미터법 (m)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_SI :국제표준규격 (m)
@@ -2406,7 +2409,7 @@ STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :자기부상열
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}선로를 건설합니다. CTRL 키를 누르면 건설모드/철거모드로 전환합니다. SHIFT 키를 누른 채로 사용하면 예상 비용을 볼 수 있습니다
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_AUTORAIL :{BLACK}자동건설 모드로 선로를 건설합니다. CTRL 키를 누르면 건설/철거모드를 바꿀 수 있습니다. SHIFT 키를 누른 채로 사용하면 예상 비용을 볼 수 있습니다
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}차량기지를 건설합니다. 차량을 구입하거나 정비를 할 수 있습니다. SHIFT 키를 누른 채로 사용하면 예상 비용을 볼 수 있습니다
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}차량기지를 건설합니다. 차량을 구입하거나 점검을 할 수 있습니다. SHIFT 키를 누른 채로 사용하면 예상 비용을 볼 수 있습니다
STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}선로에 경유지를 설치합니다. CTRL 키를 사용하면 같은 이름의 경유지를 서로 떨어진 곳에 지을 수 있습니다. SHIFT 키를 누른 채로 사용하면 예상 비용을 볼 수 있습니다
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}철도역을 짓습니다. CTRL 키를 사용하면 같은 이름의 역을 서로 떨어진 곳에 지을 수 있습니다. SHIFT 키를 누른 채로 사용하면 예상 비용을 볼 수 있습니다
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}신호기를 설치합니다. CTRL 키를 누르면 구식/전자식으로 전환합니다.{}선로를 따라 드래그해서 설치할 수 있습니다. CTRL 키를 누른 채로 드래그하면 다음 분기점이나 다음 신호기까지 신호기를 설치합니다.{}CTRL 키를 누른 채 클릭하면 신호기 선택 창을 전환합니다. SHIFT 키를 누른 채로 사용하면 예상 비용을 볼 수 있습니다
@@ -2487,8 +2490,8 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_SECTION :{BLACK}도로
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_SECTION :{BLACK}전차 선로를 짓습니다. CTRL 키를 누르고 있으면 건설/제거 모드를 바꿀 수 있습니다. SHIFT 키를 누른 채로 사용하면 예상 비용을 볼 수 있습니다
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOROAD :{BLACK}자동건설 모드로 도로를 짓습니다. CTRL 키를 누르고 있으면 건설/제거 모드를 바꿀 수 있습니다. SHIFT 키를 누른 채로 사용하면 예상 비용을 볼 수 있습니다
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_AUTOTRAM :{BLACK}자동건설 모드로 전차 선로를 짓습니다. CTRL 키를 누르고 있으면 건설/제거 모드를 바꿀 수 있습니다. SHIFT 키를 누른 채로 사용하면 예상 비용을 볼 수 있습니다
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}차고지를 건설합니다. 차량을 구입하거나 정비를 할 수 있습니다. SHIFT 키를 누른 채로 사용하면 예상 비용을 볼 수 있습니다
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}전차 차고지를 건설합니다. 차량을 구입하거나 정비를 할 수 있습니다. SHIFT 키를 누른 채로 사용하면 예상 비용을 볼 수 있습니다
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_VEHICLE_DEPOT :{BLACK}차고지를 건설합니다. 차량을 구입하거나 점검을 할 수 있습니다. SHIFT 키를 누른 채로 사용하면 예상 비용을 볼 수 있습니다
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAM_VEHICLE_DEPOT :{BLACK}전차 차고지를 건설합니다. 차량을 구입하거나 점검을 할 수 있습니다. SHIFT 키를 누른 채로 사용하면 예상 비용을 볼 수 있습니다
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_BUS_STATION :{BLACK}버스 정류장을 짓습니다. CTRL 키를 사용하면 근처 정류장과 연결할 수 있습니다. SHIFT 키를 누른 채로 사용하면 예상 비용을 볼 수 있습니다
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_PASSENGER_TRAM_STATION :{BLACK}여객 전차역을 짓습니다. CTRL 키를 사용하면 근처 역과 연결할 수 있습니다. SHIFT 키를 누른 채로 사용하면 예상 비용을 볼 수 있습니다
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRUCK_LOADING_BAY :{BLACK}트럭 적하장을 짓습니다. CTRL 키를 사용하면 근처 적하장과 연결할 수 있습니다. SHIFT 키를 누른 채로 사용하면 예상 비용을 볼 수 있습니다
@@ -3090,7 +3093,7 @@ STR_NEWGRF_ERROR_LOAD_BEFORE :{1:STRING}{G 1
STR_NEWGRF_ERROR_LOAD_AFTER :{1:STRING}{G 1 "은" "는"} 반드시 {STRING} 뒤에 불러와야 합니다
STR_NEWGRF_ERROR_OTTD_VERSION_NUMBER :{1:STRING}{G 1 "은" "는"} OpenTTD {STRING} 버전이나 그 이상이 필요합니다
STR_NEWGRF_ERROR_AFTER_TRANSLATED_FILE :GRF 파일이 번역을 위해 만들어졌습니다
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :NewGRF 너무 많습니다
STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED :NewGRF 너무 많습니다
STR_NEWGRF_ERROR_STATIC_GRF_CAUSES_DESYNC :{2:STRING}{G 2 "을" "를"} 포함한 정적 NewGRF {1:STRING}{G 1 "을" "를"} 불러오는 것은 비동기화를 일으킬 수 있습니다
STR_NEWGRF_ERROR_UNEXPECTED_SPRITE :예기치 않은 스프라이트 (스프라이트 {3:NUM})
STR_NEWGRF_ERROR_UNKNOWN_PROPERTY :알려지지 않은 액션 0 속성 {4:HEX} (스프라이트 {3:NUM})
@@ -3124,7 +3127,7 @@ STR_NEWGRF_LIST_COMPATIBLE :{YELLOW}호환
STR_NEWGRF_LIST_MISSING :{RED}파일 없음
# NewGRF 'it's broken' warnings
STR_NEWGRF_BROKEN :{WHITE}'{0:STRING}' NewGRF 적용되는 과정에서 비동기화나 충돌이 일어날 수 있습니다
STR_NEWGRF_BROKEN :{WHITE}'{0:STRING}' NewGRF 적용되는 과정에서 비동기화나 충돌이 일어날 수 있습니다
STR_NEWGRF_BROKEN_POWERED_WAGON :{WHITE}차고지 안에 있지 않은 '{1:ENGINE}'에 대한 동력 차량 상태가 바뀌었습니다
STR_NEWGRF_BROKEN_VEHICLE_LENGTH :{WHITE}'{1:ENGINE}'{G 1 "이" "가"} 차고지 안에 있지 않으면 차량 길이가 바뀝니다
STR_NEWGRF_BROKEN_CAPACITY :{WHITE}차량이 기지 안에 있지 않거나 개조가 불가능한 상태에서 '{1:ENGINE}'의 수송량이 변경되었습니다
@@ -3529,7 +3532,7 @@ STR_VEHICLE_LIST_AVAILABLE_ENGINES_TOOLTIP :{BLACK}이 차
STR_VEHICLE_LIST_MANAGE_LIST :{BLACK}관리
STR_VEHICLE_LIST_MANAGE_LIST_TOOLTIP :{BLACK}이 목록에 있는 모든 열차에 지시를 내려 관리합니다
STR_VEHICLE_LIST_REPLACE_VEHICLES :차량 교체
STR_VEHICLE_LIST_SEND_FOR_SERVICING :정비하러 보내기
STR_VEHICLE_LIST_SEND_FOR_SERVICING :점검하러 보내기
STR_VEHICLE_LIST_SEND_TRAIN_TO_DEPOT :차량기지로 보내기
STR_VEHICLE_LIST_SEND_ROAD_VEHICLE_TO_DEPOT :차고지로 보내기
@@ -3748,7 +3751,7 @@ STR_DEPOT_MASS_START_HANGAR_TOOLTIP :{BLACK}이 격
STR_DEPOT_SELL_CONFIRMATION_TEXT :{YELLOW}이 안에 있는 모든 차량을 판매하려고 합니다. 계속하시겠습니까?
# Engine preview window
STR_ENGINE_PREVIEW_CAPTION :{WHITE}차량 개발자로부터의 메시지
STR_ENGINE_PREVIEW_CAPTION :{WHITE}차량 개발자가 보낸 메시지
STR_ENGINE_PREVIEW_MESSAGE :{GOLD}저희는 이제 막 새로운 {STRING}{G 0 "을" "를"} 개발했습니다. 1년 먼저 이 차량을 사용하셔서 모두에게 공개되기 전에 잘 작동하는지 확인해주시겠습니까?
STR_ENGINE_PREVIEW_RAILROAD_LOCOMOTIVE :{G=f}철도 기관차
@@ -3823,10 +3826,10 @@ STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}이 차
STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}이 선박의 위치로 화면을 이동합니다. 더블 클릭하면 이 선박을 따라 화면이 움직입니다. CTRL+클릭하면 이 선박 위치를 기준으로 외부 화면을 엽니다
STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}이 항공기의 위치로 화면을 이동합니다. 더블 클릭하면 이 항공기를 따라 화면이 움직입니다. CTRL+클릭하면 이 항공기 위치를 기준으로 외부 화면을 엽니다
STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}열차를 차량기지로 보냅니다. CTRL+클릭하면 정비를 하러 차량기지에 들르기만 합니다
STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}차량을 차고지로 보냅니다. CTRL+클릭하면 정비를 하러 차고지에 들르기만 합니다
STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}선박을 정박소로 보냅니다. CTRL+클릭하면 정비를 하러 정박소에 들르기만 합니다
STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}항공기를 격납고로 보냅니다. CTRL+클릭하면 정비를 하러 격납고에 들르기만 합니다
STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK}열차를 차량기지로 보냅니다. CTRL+클릭하면 점검을 하러 차량기지에 들르기만 합니다
STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}차량을 차고지로 보냅니다. CTRL+클릭하면 점검을 하러 차고지에 들르기만 합니다
STR_VEHICLE_VIEW_SHIP_SEND_TO_DEPOT_TOOLTIP :{BLACK}선박을 정박소로 보냅니다. CTRL+클릭하면 점검을 하러 정박소에 들르기만 합니다
STR_VEHICLE_VIEW_AIRCRAFT_SEND_TO_DEPOT_TOOLTIP :{BLACK}항공기를 격납고로 보냅니다. CTRL+클릭하면 점검을 하러 격납고에 들르기만 합니다
STR_VEHICLE_VIEW_CLONE_TRAIN_INFO :{BLACK}객차/화차를 포함한 열차 전체를 복제합니다. CTRL+클릭하면 경로도 함께 공유됩니다. SHIFT+클릭하면 예상 비용을 볼 수 있습니다
STR_VEHICLE_VIEW_CLONE_ROAD_VEHICLE_INFO :{BLACK}차량을 복제합니다. CTRL+클릭하면 경로도 함께 공유됩니다. SHIFT+클릭하면 예상 비용을 볼 수 있습니다
@@ -3914,12 +3917,12 @@ STR_VEHICLE_INFO_CAPACITY_CAPACITY :{BLACK}수송
STR_VEHICLE_INFO_FEEDER_CARGO_VALUE :{BLACK}환승 수익: {LTBLUE}{CURRENCY_LONG}
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}정비 간격: {LTBLUE}{COMMA}일{BLACK}마다 마지막 정비 날짜: {LTBLUE}{DATE_LONG}
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}정비 기준: {LTBLUE}{COMMA}%{BLACK} 떨어지면 마지막 정비 날짜: {LTBLUE}{DATE_LONG}
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_DAYS :{BLACK}점검 간격: {LTBLUE}{COMMA}일{BLACK}마다{NBSP} 마지막 점검 날짜: {LTBLUE}{DATE_LONG}
STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}점검 기준: {LTBLUE}{COMMA}%{BLACK} 떨어지면 마지막 점검 날짜: {LTBLUE}{DATE_LONG}
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}점검 기준값을 10만큼 올립니다. CTRL+클릭하면 점검 기준값을 5만큼 올립니다
STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}점검 기준값을 10만큼 내립니다. CTRL+클릭하면 점검 기준값을 5만큼 내립니다
STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}정비 기준 설정을 변경합니다
STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}점검 기준 설정을 변경합니다
STR_VEHICLE_DETAILS_DEFAULT :기본
STR_VEHICLE_DETAILS_DAYS :날짜
STR_VEHICLE_DETAILS_PERCENT :신뢰도
@@ -4017,11 +4020,11 @@ STR_ORDER_REFIT_AUTO_TOOLTIP :{BLACK}이 경
STR_ORDER_DROP_REFIT_AUTO :특정 화물로
STR_ORDER_DROP_REFIT_AUTO_ANY :이용 가능한 화물로
STR_ORDER_SERVICE :{BLACK}정비
STR_ORDER_SERVICE :{BLACK}점검
STR_ORDER_DROP_GO_ALWAYS_DEPOT :항상 감
STR_ORDER_DROP_SERVICE_DEPOT :필요하면 정비
STR_ORDER_DROP_SERVICE_DEPOT :필요하면 점검
STR_ORDER_DROP_HALT_DEPOT :멈춤
STR_ORDER_SERVICE_TOOLTIP :{BLACK}정비가 필요하지 않으면 이 경로를 건너뜁니다
STR_ORDER_SERVICE_TOOLTIP :{BLACK}점검이 필요하지 않으면 이 경로를 건너뜁니다
STR_ORDER_CONDITIONAL_VARIABLE_TOOLTIP :{BLACK}경로를 건너뛰기 위한 비교 조건을 선택합니다
@@ -4030,7 +4033,7 @@ STR_ORDER_CONDITIONAL_LOAD_PERCENTAGE :적재율
STR_ORDER_CONDITIONAL_RELIABILITY :신뢰도
STR_ORDER_CONDITIONAL_MAX_SPEED :최고 속력
STR_ORDER_CONDITIONAL_AGE :연령 (년)
STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :정비 필요성
STR_ORDER_CONDITIONAL_REQUIRES_SERVICE :점검 필요성
STR_ORDER_CONDITIONAL_UNCONDITIONALLY :항상
STR_ORDER_CONDITIONAL_REMAINING_LIFETIME :남은 수명 (년)
STR_ORDER_CONDITIONAL_MAX_RELIABILITY :최대 신뢰도
@@ -4062,7 +4065,7 @@ STR_ORDER_GO_TO_NEAREST_DEPOT :가까운 차
STR_ORDER_GO_TO_NEAREST_HANGAR :가까운 격납고로
STR_ORDER_CONDITIONAL :조건부 경로 건너뛰기
STR_ORDER_SHARE :경로 공유하기
STR_ORDERS_GO_TO_TOOLTIP :{BLACK}선택된 경로 바로 전이나 목록 맨 끝에 새 경로를 삽입합니다. CTRL 키와 함께 누르면, 역에서는 '아무 화물이나 가득 싣기'로, 경유지에서는 '직행'으로, 차량기지에서는 '점검'으로 지정됩니다. '공유된 경로'를 클릭하거나 CTRL 키를 누르면 선택했던 차량과 이 차량의 경로를 공유하게 됩니다. 단순히 클릭하면 그 차량의 경로를 복사하기만 합니다. 차량기지를 경로에 포함시키면 이 차량은 자동 정비를 할 수 없게 됩니다
STR_ORDERS_GO_TO_TOOLTIP :{BLACK}선택된 경로 바로 전이나 목록 맨 끝에 새 경로를 삽입합니다. CTRL 키와 함께 누르면, 역에서는 '아무 화물이나 가득 싣기'로, 경유지에서는 '직행'으로, 차량기지에서는 '점검'으로 지정됩니다. '공유된 경로'를 클릭하거나 CTRL 키를 누르면 선택했던 차량과 이 차량의 경로를 공유하게 됩니다. 단순히 클릭하면 그 차량의 경로를 복사하기만 합니다. 차량기지를 경로에 포함시키면 이 차량은 자동 점검를 할 수 없게 됩니다
STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}이 경로를 공유하고 있는 모든 차량을 표시합니다.
@@ -4070,8 +4073,8 @@ STR_ORDERS_VEH_WITH_SHARED_ORDERS_LIST_TOOLTIP :{BLACK}이 경
STR_ORDER_GO_TO_WAYPOINT :완행 경유 {WAYPOINT}
STR_ORDER_GO_NON_STOP_TO_WAYPOINT :직행 경유 {WAYPOINT}
STR_ORDER_SERVICE_AT :완행 정비
STR_ORDER_SERVICE_NON_STOP_AT :직행 정비
STR_ORDER_SERVICE_AT :완행 점검
STR_ORDER_SERVICE_NON_STOP_AT :직행 점검
STR_ORDER_NEAREST_DEPOT :가까운
STR_ORDER_NEAREST_HANGAR :가까운 격납고
@@ -4679,7 +4682,7 @@ STR_ERROR_SHIP_NOT_AVAILABLE :{WHITE}이 선
STR_ERROR_AIRCRAFT_NOT_AVAILABLE :{WHITE}이 항공기는 사용할 수 없는 상태입니다
STR_ERROR_TOO_MANY_VEHICLES_IN_GAME :{WHITE}게임에 차량이 너무 많습니다!
STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}정비 간격 설정을 바꿀 수 없습니다...
STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}점검 간격 설정을 바꿀 수 없습니다...
STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... 차량이 파괴되었습니다

View File

@@ -1166,6 +1166,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Eligere
STR_GAME_OPTIONS_RESOLUTION_OTHER :alia
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Magnitudo interfaciei
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Eligere magnitudinem interfaciei adhibendam

View File

@@ -1004,6 +1004,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Ekrāna
STR_GAME_OPTIONS_RESOLUTION_OTHER :Cita
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Lietotāja saskarnes lielums
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Lietotāja saskarnes elementu lieluma izvēle

View File

@@ -1211,6 +1211,7 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Aparatin
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Pažymėkite šį langelį, jei norite, kad OpenTTD taikytų aparatinį spartinimą. Kad nuostata įsigaliotų, reiks perkrauti OpenTTD
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Kad pakeitimai įsigaliotų, reikia paleisti OpenTTD iš naujo
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Sąsajos elementų dydis
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Pasirinkite vartotojo sąsajos elementų santykinį dydį

View File

@@ -1006,6 +1006,7 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Hardware
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Dës Optioun wielen, dass OpenTTD Hardwarebeschleunigung dierf notzen. Wäert just geännert ginn wann d'Spill nei gestart gëtt
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}D'Astellung huet réicht en Afloss no engem Neistart vum Spill
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Interfacegréisst
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Wiel d'Gréisst déi fir den Interface soll benotzt ginn

View File

@@ -944,6 +944,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Pilih re
STR_GAME_OPTIONS_RESOLUTION_OTHER :lain
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Saiz Antaramuka
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Sila pilih saiz elemen antara muka untuk digunakan

View File

@@ -1008,6 +1008,9 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Maskinva
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Merk av i denne boksen for å la OpenTTD prøve å bruke maskinvareakselerasjon. En endret innstilling blir bare brukt ved omstart av spillet
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Innstillingen vil ikke tre i kraft før spillet er restartet
STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync
STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Merk av i denne boksen for å v-synkronisere skjermen. Endring av innstillinger krever omstart av spillet. Fungerer bare med maskinvareakselerasjon aktivert
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Grensesnitt-størrelse
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Velg grensesnitt-størrelsen som skal benyttes

View File

@@ -971,6 +971,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Vel skje
STR_GAME_OPTIONS_RESOLUTION_OTHER :anna
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Grensesnittstorleik
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Vel storleik å bruke på grensesnittet

View File

@@ -1386,6 +1386,9 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Przyspie
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Zaznacz to pole, aby zezwolić OpenTTD na użycie przyspieszenia sprzętowego. Ustawienia zostaną zastosowane dopiero po ponownym uruchomieniu gry.
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Ustawienie to zacznie obowiązywać dopiero po ponownym uruchomieniu gry.
STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}Synchronizacja pionowa
STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Zaznacz to pole aby włączyć synchronizację pionową. Zmiany zostaną zastosowane po restarcie gry. Działa tylko z włączoną akceleracją sprzętową.
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Rozmiar interfejsu
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Wybierz rozmiar elementów interfejsu
@@ -2406,10 +2409,10 @@ STR_NETWORK_SERVER_LIST_JOIN_GAME :{BLACK}Przyłą
STR_NETWORK_SERVER_LIST_REFRESH :{BLACK}Odśwież serwer
STR_NETWORK_SERVER_LIST_REFRESH_TOOLTIP :{BLACK}Odśwież informacje o serwerze
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :Przeszukaj internet
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET :{BLACK}Przeszukaj internet
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_INTERNET_TOOLTIP :{BLACK}Znajdź w internecie serwery publiczne
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :Przeszukaj LAN
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :Znajdź serwery w sieci lokalnej
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN :{BLACK}Przeszukaj LAN
STR_NETWORK_SERVER_LIST_SEARCH_SERVER_LAN_TOOLTIP :{BLACK}Znajdź serwery w sieci lokalnej
STR_NETWORK_SERVER_LIST_ADD_SERVER :{BLACK}Zapisz serwer
STR_NETWORK_SERVER_LIST_ADD_SERVER_TOOLTIP :{BLACK}Zapisz serwer na liście serwerów, które będą zawsze sprawdzane w poszukiwaniu uruchomionych gier
STR_NETWORK_SERVER_LIST_START_SERVER :{BLACK}Uruchom serwer

View File

@@ -242,7 +242,7 @@ STR_TOOLTIP_CLOSE_WINDOW :{BLACK}Fechar j
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}Título da janela - arraste isto para mover a janela
STR_TOOLTIP_SHADE :{BLACK}Encolher janela - apenas mostra a barra de título
STR_TOOLTIP_DEBUG :{BLACK}Mostrar informação de depuração de NewGRF
STR_TOOLTIP_DEFSIZE :{BLACK}Reajusta janela para tamanho por defeito. Ctrl+Clique para manter o tamanho actual como o por defeito
STR_TOOLTIP_DEFSIZE :{BLACK}Redimensionar a janela para o tamanho padrão. Ctrl+Clique para guardar o tamanho atual como padrão
STR_TOOLTIP_STICKY :{BLACK}Marcar esta janela como não-encerrável pela tecla 'Fechar Todas as Janelas'. Ctrl+Clique para tambem salvar o estado como por omissão
STR_TOOLTIP_RESIZE :{BLACK}Clique e arraste para reajustar janela
STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}Alternar entre janela grande/pequena
@@ -1007,6 +1007,9 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Acelera
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Marque esta caixa para permitir que o OpenTTD tente usar a aceleração por hardware. Uma configuração alterada só será aplicada após reiniciar o jogo
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}A definição só terá efeito após reiniciar o jogo
STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}VSync
STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Marque esta caixa para ativar "V-Sync" no ecrã. Uma configuração alterada só terá efeito quando reiniciar o jogo. Só funciona com a aceleração por hardware ativada
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Tamanho interface
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Seleccionar tamanho do elemento de interface a usar
@@ -1266,7 +1269,7 @@ STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :Se ativado, os
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :Novas ordens são 'sem parar' por predefinição: {STRING}
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT_HELPTEXT :Normalmente, um veículo para em cada estação por onde passa. Ao ativar esta configuração, um veículo irá passar por todas as estações no seu percurso, parando apenas no destino final. Esta opção só tem efeito para novas rotas, mas as rotas existentes podem ser alteradas para funcionarem de forma igual.
STR_CONFIG_SETTING_STOP_LOCATION :Ordens novas do comboio param {STRING} da plataforma
STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Local onde um combóio parará na plataforma por omissão. A opção 'extremo mais próximo' significa perto do ponto de entrada, 'meio' significa no meio da plataforma e 'extremo mais distante' significa o mais distante possível do ponto de entrada. Esta opção apenas afecta o valor por omissão para novas encomendas. Encomendas individuais podem utilizar qualquer uma das opções independentemente desta
STR_CONFIG_SETTING_STOP_LOCATION_HELPTEXT :Local de paragem do comboio nas plataformas por omissão. A opção 'extremo mais próximo' significa perto do ponto de entrada, 'meio' significa no meio da plataforma e 'extremo mais distante' significa o mais distante possível do ponto de entrada. Esta opção apenas afeta o valor por omissão para novas ordens. Ordens individuais podem utilizar qualquer uma das opções independentemente desta
STR_CONFIG_SETTING_STOP_LOCATION_NEAR_END :no extremo perto
STR_CONFIG_SETTING_STOP_LOCATION_MIDDLE :no meio
STR_CONFIG_SETTING_STOP_LOCATION_FAR_END :no extremo longe
@@ -1313,7 +1316,7 @@ STR_CONFIG_SETTING_NEVER_EXPIRE_AIRPORTS_HELPTEXT :Activar esta pr
STR_CONFIG_SETTING_WARN_LOST_VEHICLE :Avisar se o veículo está perdido: {STRING}
STR_CONFIG_SETTING_WARN_LOST_VEHICLE_HELPTEXT :Mostrar mensagens sobre veículos que não conseguem encontrar o caminho para o seu próximo destino.
STR_CONFIG_SETTING_ORDER_REVIEW :Analisar ordens dos veículos: {STRING}
STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Quando activo, as encomendas dos veículos são periodicamente revistas e algumas falhas óbvias são anunciadas através de notícias, quando detectadas
STR_CONFIG_SETTING_ORDER_REVIEW_HELPTEXT :Quando ativo, as ordens dos veículos são periodicamente revistas e algumas falhas óbvias são anunciadas através de notícias, quando detetadas
STR_CONFIG_SETTING_ORDER_REVIEW_OFF :Não
STR_CONFIG_SETTING_ORDER_REVIEW_EXDEPOT :Sim, mas excluir veículos parados
STR_CONFIG_SETTING_ORDER_REVIEW_ON :De todos os veículos
@@ -1904,11 +1907,11 @@ STR_LIVERY_SECONDARY_TOOLTIP :{BLACK}Seleccio
STR_LIVERY_PANEL_TOOLTIP :{BLACK}Seleccione o esquema de cores a alterar, ou esquemas múltiplos utilizando a tecla Ctrl com o botão esquerdo do rato. Marque a caixa para comutar a utilização do esquema de cores
STR_LIVERY_DEFAULT :Estampagem Padrão
STR_LIVERY_STEAM :Motor a Vapor
STR_LIVERY_DIESEL :Motor Diesel
STR_LIVERY_ELECTRIC :Motor Eléctrico
STR_LIVERY_MONORAIL :Motor Monocarril
STR_LIVERY_MAGLEV :Motor Maglev (Levitação Magnética)
STR_LIVERY_STEAM :Locomotivas a Vapor
STR_LIVERY_DIESEL :Locomotivas Diesel
STR_LIVERY_ELECTRIC :Locomotivas Eléctricas
STR_LIVERY_MONORAIL :Motoras Monocarril
STR_LIVERY_MAGLEV :Motoras Maglev (Levitação Magnética)
STR_LIVERY_DMU :DMU
STR_LIVERY_EMU :EMU
STR_LIVERY_PASSENGER_WAGON_STEAM :Carruagem de Passageiros (Vapor)
@@ -1917,8 +1920,8 @@ STR_LIVERY_PASSENGER_WAGON_ELECTRIC :Carruagem de Pa
STR_LIVERY_PASSENGER_WAGON_MONORAIL :Carruagem de Passageiros (Monocarril)
STR_LIVERY_PASSENGER_WAGON_MAGLEV :Carruagem de Passageiros (Maglev)
STR_LIVERY_FREIGHT_WAGON :Vagão de Carga
STR_LIVERY_BUS :Autocarro
STR_LIVERY_TRUCK :Veículo de Mercadorias
STR_LIVERY_BUS :Autocarros
STR_LIVERY_TRUCK :Camiões
STR_LIVERY_PASSENGER_SHIP :Navio de passageiros
STR_LIVERY_FREIGHT_SHIP :Navio cargueiro
STR_LIVERY_HELICOPTER :Helicóptero
@@ -2442,7 +2445,7 @@ STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Construi
STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Escolher a classe da estação a mostrar
STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Escolher o tipo de estação a construir
STR_STATION_CLASS_DFLT :Estação por defeito
STR_STATION_CLASS_DFLT :Estação padrão
STR_STATION_CLASS_WAYP :Pontos de passagem
# Signal window
@@ -2872,7 +2875,7 @@ STR_SAVELOAD_SAVE_SCENARIO :{WHITE}Guardar
STR_SAVELOAD_LOAD_SCENARIO :{WHITE}Abrir Cenário
STR_SAVELOAD_LOAD_HEIGHTMAP :{WHITE}Carregar mapa de alturas
STR_SAVELOAD_SAVE_HEIGHTMAP :{WHITE}Guardar mapa de alturas
STR_SAVELOAD_HOME_BUTTON :{BLACK}Carregue aqui para saltar para a directoria de gravação/carregamento por defeito
STR_SAVELOAD_HOME_BUTTON :{BLACK}Clique aqui para saltar para o diretório atual de gravação/carregamento padrão
STR_SAVELOAD_BYTES_FREE :{BLACK}{BYTES} livres
STR_SAVELOAD_LIST_TOOLTIP :{BLACK}Lista de unidades, directorias e ficheiros de jogos guardados
STR_SAVELOAD_EDITBOX_TOOLTIP :{BLACK}Nome escolhido para guardar o jogo
@@ -3897,11 +3900,11 @@ STR_VEHICLE_INFO_AGE_RUNNING_COST_YR :{BLACK}Idade: {
STR_VEHICLE_INFO_AGE :{COMMA} ano{P "" s} ({COMMA})
STR_VEHICLE_INFO_AGE_RED :{RED}{COMMA} ano{P "" s} ({COMMA})
STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Máx. velocidade: {LTBLUE}{VELOCITY}
STR_VEHICLE_INFO_MAX_SPEED :{BLACK}Velocidade máx.: {LTBLUE}{VELOCITY}
STR_VEHICLE_INFO_MAX_SPEED_TYPE :{BLACK}Vel. máxima: {LTBLUE}{VELOCITY} {BLACK}Tipo de Aeronave: {LTBLUE}{STRING}
STR_VEHICLE_INFO_MAX_SPEED_TYPE_RANGE :{BLACK}Velocidade Máx.: {LTBLUE}{VELOCITY} {BLACK}Tipo de Aeronave: {LTBLUE}{STRING} {BLACK}Alcance: {LTBLUE}{COMMA} quadrados
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Max. velocidade: {LTBLUE}{VELOCITY}
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Máx. velocidade: {LTBLUE}{VELOCITY} {BLACK}Máx. E.T.: {LTBLUE}{FORCE}
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Velocidade máx.: {LTBLUE}{VELOCITY}
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_SHORT} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Velocidade máx.: {LTBLUE}{VELOCITY} {BLACK}Tração Máx.: {LTBLUE}{FORCE}
STR_VEHICLE_INFO_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucro neste ano: {LTBLUE}{CURRENCY_LONG} (último ano: {CURRENCY_LONG})
STR_VEHICLE_INFO_RELIABILITY_BREAKDOWNS :{BLACK}Fiabilidade: {LTBLUE}{COMMA}% {BLACK}Avarias desde o último serviço: {LTBLUE}{COMMA}
@@ -3920,7 +3923,7 @@ STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Aumentar
STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}Diminuir intervalo de serviço por 10. Ctrl+Clique diminui o intervalo de serviço por 5
STR_SERVICE_INTERVAL_DROPDOWN_TOOLTIP :{BLACK}Alterar tipo de intervalo de manutenção
STR_VEHICLE_DETAILS_DEFAULT :Por Defeito
STR_VEHICLE_DETAILS_DEFAULT :Padrão
STR_VEHICLE_DETAILS_DAYS :Dias
STR_VEHICLE_DETAILS_PERCENT :Percentagem

File diff suppressed because it is too large Load Diff

View File

@@ -1148,9 +1148,12 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :Другое
STR_GAME_OPTIONS_RESOLUTION_ITEM :{NUM}x{NUM}
STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Аппаратное ускорение
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Поставьте отметку, чтобы включить аппаратное ускорение в OpenTTD. Но для этого игру придётся перезапустить.
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Нажмите здесь, чтобы включить/выключить аппаратное ускорение в OpenTTD. После этого игру потребуется перезапустить.
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Эта настройка будет применена только после перезапуска игры
STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}Вертикальная синхронизация
STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Нажмите здесь, чтобы включить/выключить вертикальную синхронизацию. После этого игру потребуется перезапустить. Работает только при включённом аппаратном ускорении.
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Размер элементов интерфейса
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Выберите размер элементов интерфейса
@@ -1263,7 +1266,7 @@ STR_DISASTER_NONE :нет
STR_DISASTER_REDUCED :сниженная
STR_DISASTER_NORMAL :обычная
STR_SUBSIDY_X1_5 :x1.5
STR_SUBSIDY_X1_5 :x1,5
STR_SUBSIDY_X2 :x2
STR_SUBSIDY_X3 :x3
STR_SUBSIDY_X4 :x4
@@ -1273,6 +1276,8 @@ STR_TERRAIN_TYPE_FLAT :Равнинн
STR_TERRAIN_TYPE_HILLY :Холмистый
STR_TERRAIN_TYPE_MOUNTAINOUS :Преимущественно горный
STR_TERRAIN_TYPE_ALPINIST :Исключительно горный
STR_TERRAIN_TYPE_CUSTOM :Установить высоту вручную
STR_TERRAIN_TYPE_CUSTOM_VALUE :Установленная высота ({NUM})
STR_CITY_APPROVAL_PERMISSIVE :дозволяющее
STR_CITY_APPROVAL_TOLERANT :терпимое
@@ -1356,6 +1361,10 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Включен
STR_CONFIG_SETTING_CITY_APPROVAL :Отношение городского совета к реструктуризации окрестностей: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Выберите уровень влияния шума и загрязнения окружающей среды компаниями на их рейтинг в городах и возможность дальнейшего строительства около городов
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Максимальная высота объектов на карте: {STRING}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Установить максимальное значение высоты гор на карте. «(Автовыбор)» подберёт приемлемое значение после создания ландшафта.
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :(автовыбор)
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Невозможно изменить максимальную высоту. На карте есть горы выше этого значения.
STR_CONFIG_SETTING_AUTOSLOPE :Разрешить изм. ландшафта под зданиями, дорогами и т. д. (автоспуски): {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Разрешить изменение ландшафта под домами и дорогами, не требуя их сноса
@@ -1500,8 +1509,13 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Выберит
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Макс. расстояние от края карты до предприятий нефтяной индустрии: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Эта настройка ограничивает расстояние от края карты до нефтяных платформ и нефтеперерабатывающих заводов. Таким образом, на краях карты, оканчивающихся водой, они будут строиться у берега. На картах размером более 256 это значение будет соответственно увеличено.
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Высота снеговой линии: {STRING}
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Укажите, на какой высоте в субарктическом климате устанавливается снеговой покров. Наличие снега влияет на расстановку предприятий и на условия роста городов.
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Укажите приблизительное количество пустыни на тропическом ландшафте. Пустыня также влияет на промышленное производство. Используется только во время создания карты
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Это значение определяет, на какой высоте в субарктическом климате устанавливается снеговой покров. Наличие снега влияет на расстановку предприятий и на условия роста городов.{}Значение может быть установлено только в редакторе сценариев; иначе оно рассчитывается в зависимости от значения «снежного покрытия».
STR_CONFIG_SETTING_SNOW_COVERAGE :Снежное покрытие: {STRING}
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Это значение определяет примерную относительную площадь суши, покрытой снегом в субарктическом климате.Наличие снега влияет на расстановку предприятий и на условия роста городов.{}Используется только при создании карты. Земля чуть выше уровня моря никогда не покрывается снегом.
STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_DESERT_COVERAGE :Песчаное покрытие: {STRING}
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Это значение определяет примерную относительную площадь суши, покрытой песком в тропическом климате. Пустыни влияют на расположение предприятий.{}Используется только при создании карты.
STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Грубость ландшафта: {STRING}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Только для TerraGenesis){}Выберите количество гор и холмов на карте. На гладком ландшафте холмов немного и они более пологие. На грубом - много гор, и ландшафт может показаться слишком однообразным.
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Очень гладкий
@@ -3066,6 +3080,17 @@ STR_MAPGEN_BY :{BLACK}×
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Количество городов:
STR_MAPGEN_DATE :{BLACK}Дата:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Кол-во предпр.:
STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Высочайшая вершина:
STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Увеличить максимальную высоту гор на карте на 1
STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Уменьшить максимальную высоту гор на карте на 1
STR_MAPGEN_SNOW_COVERAGE :{BLACK}Снежное покрытие:
STR_MAPGEN_SNOW_COVERAGE_UP :{BLACK}Увеличить площадь снежного покрытия на 10%
STR_MAPGEN_SNOW_COVERAGE_DOWN :{BLACK}Уменьшить площадь снежного покрытия на 10%
STR_MAPGEN_SNOW_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_DESERT_COVERAGE :{BLACK}Песчаное покрытие:
STR_MAPGEN_DESERT_COVERAGE_UP :{BLACK}Увеличить площадь песчаного покрытия на 10%
STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Уменьшить площадь песчаного покрытия на 10%
STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_LAND_GENERATOR :{BLACK}Генератор ландшафта:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Тип ландшафта:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Количество морей и озёр:
@@ -3091,7 +3116,10 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Назв
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Размер:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} × {NUM}
STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Максимальная высота
STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT :{WHITE}Cамая высокая вершина
STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT :{WHITE}Снежное покрытие (в %)
STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT :{WHITE}Песчаное покрытие (в %)
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Изменить год начала игры
# SE Map generation
@@ -4520,6 +4548,7 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Теку
STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Огромный снимок экрана
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Снимок экрана будет иметь размер {COMMA}{NBSP}х{NBSP}{COMMA}{NBSP}пиксел{P ь я ей}. Его создание займёт некоторое время. Продолжить?
STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}Карта высот успешно сохранена под именем «{STRING}». Максимальная высота - {NUM}.
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Снимок экрана сохранён под именем «{STRING}»
STR_ERROR_SCREENSHOT_FAILED :{WHITE}Не удалось сделать снимок экрана

View File

@@ -1201,6 +1201,7 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Hardvers
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Označavanje ove opcije čini da OpenTTD pokuša da koristi hardversko ubrzanje. Promena ovog podešavanja će imati efekta tek nakon ponvnog pokretanja igre
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Podešavanje će imati efekta tek nakon ponovnog pokretanja igre
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Veličina interfejsa
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Izaberite većinu elementa koja će se koristiti

View File

@@ -1005,6 +1005,7 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}硬件
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}点击该复选框,让 OpenTTD 尝试使用硬件加速。修改后的设置将在游戏重启后生效
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}修改后的设置将在游戏重启后生效
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}界面大小
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}选择使用的界面元素大小
@@ -1021,6 +1022,7 @@ STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :正常
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :两倍大小
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :四倍大小
STR_GAME_OPTIONS_GRAPHICS :{BLACK}图像
STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}显示刷新率
STR_GAME_OPTIONS_REFRESH_RATE_TOOLTIP :{BLACK}选择需要的屏幕刷新率
@@ -1204,6 +1206,7 @@ STR_CONFIG_SETTING_CITY_APPROVAL :地区政府对
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :设置相关参数以决定各公司造成的噪音及环境破坏时,各城镇对该公司的评价及未来区域建设的影响。
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :地图高度限制:{STRING}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM}
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}您不能把最高地面高度设为这个值,因为地图上至少有一座山丘的高度比这个值还大
STR_CONFIG_SETTING_AUTOSLOPE :允许在建筑、轨道等下方改变地形(自动斜坡): {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :允许在建筑和轨道下方改变地形而不需要拆除他们
@@ -1468,6 +1471,9 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :“打开”时
STR_CONFIG_SETTING_EXPENSES_LAYOUT :企业财政窗口中的组群支出:{STRING}
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :“打开”时公司财务报表将分组显示
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :建造铁路时自动移除信号灯:{STRING}
STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :快进速度上限:{STRING}
STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% 正常游戏速度
STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :无限制(在您的计算机能允许的范围内)
STR_CONFIG_SETTING_SOUND_TICKER :产业新闻: {STRING}
STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :每月初产业新闻音效
@@ -2572,6 +2578,7 @@ STR_TREES_RANDOM_TYPE :{BLACK}随机
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}种植随机类型的树木,按住 Shift 键可以显示所需资金
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}随机树木
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}随机地种植一些树木
STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}树丛
STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}森林
# Land generation window (SE)
@@ -3787,6 +3794,7 @@ STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}当车
STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE}
STR_VEHICLE_VIEW_TRAIN_CENTER_TOOLTIP :{BLACK}将主视角中心移动到列车所在的位置。双击将会在主视角中跟踪列车。单击的同时按住Ctrl会在新视点中显示列车位置
STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK} 将主视角中心移动到车辆所在的位置。双击将会在主视角中跟踪车辆。单击的同时按住 Ctrl 会在新视点中显示车辆位置
STR_VEHICLE_VIEW_SHIP_CENTER_TOOLTIP :{BLACK}将主视角中心移动到船只所在的位置。双击将会在主视角中跟踪船只。单击的同时按住Ctrl会在新视点中显示船只位置
STR_VEHICLE_VIEW_AIRCRAFT_CENTER_TOOLTIP :{BLACK}将主视角中心移动到飞机所在的位置。双击将会在主视角中跟踪飞机。单击的同时按住Ctrl会在新视点中显示飞机位置
@@ -3957,8 +3965,8 @@ STR_ORDERS_END_OF_SHARED_ORDERS :- - 共享调
STR_ORDER_NON_STOP :{BLACK}不停车
STR_ORDER_GO_TO :前往
STR_ORDER_GO_NON_STOP_TO :不停车前往
STR_ORDER_GO_VIA :通过
STR_ORDER_GO_NON_STOP_VIA :前往不停车
STR_ORDER_GO_VIA :经由
STR_ORDER_GO_NON_STOP_VIA :经由(不停车
STR_ORDER_TOOLTIP_NON_STOP :{BLACK}改变当前选中车站停车时的执行动作
STR_ORDER_TOGGLE_FULL_LOAD :{BLACK}装满任意货物
@@ -4375,6 +4383,7 @@ STR_ERROR_LOAN_ALREADY_REPAYED :{WHITE}没有
STR_ERROR_CURRENCY_REQUIRED :{WHITE}需要{CURRENCY_LONG}
STR_ERROR_CAN_T_REPAY_LOAN :{WHITE}不能偿还贷款……
STR_ERROR_INSUFFICIENT_FUNDS :{WHITE}不能将银行的贷款送给别人……
STR_ERROR_CAN_T_GIVE_MONEY :{WHITE}不能给予该公司资金……
STR_ERROR_CAN_T_BUY_COMPANY :{WHITE}不能收购公司……
STR_ERROR_CAN_T_BUILD_COMPANY_HEADQUARTERS :{WHITE}不能设置公司总部
STR_ERROR_CAN_T_BUY_25_SHARE_IN_THIS :{WHITE}不能购买此公司的股份……
@@ -4650,7 +4659,7 @@ STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}在{DATE
# Specific vehicle errors
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}不能让列车冒险通过信号...
STR_ERROR_CAN_T_REVERSE_DIRECTION_TRAIN :{WHITE}不能命令列车调头...
STR_ERROR_TRAIN_START_NO_POWER :有接触网!
STR_ERROR_TRAIN_START_NO_POWER :有接触网!
STR_ERROR_CAN_T_MAKE_ROAD_VEHICLE_TURN :{WHITE}车辆无法调头...

View File

@@ -1074,6 +1074,7 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Hardvér
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Zaškrtnutím políčka dovolíte, aby sa OpenTTD pokúsilo použiť hardvérové zrýchlenie. Zmena nastavenia sa uplatní až po reštartovaní hry
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Nastavenie sa uplatní až po reštartovaní hry
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Veľkosť rozhrania
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Výber veľkosti prvkov rozhrania

View File

@@ -1123,6 +1123,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Izberi l
STR_GAME_OPTIONS_RESOLUTION_OTHER :drugo
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Velikost vmesnika
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Izberi velikost elementa vmesnika

View File

@@ -119,7 +119,7 @@ STR_QUANTITY_SUGAR :{WEIGHT_LONG} d
STR_QUANTITY_TOYS :{COMMA}{NBSP}juguete{P "" s}
STR_QUANTITY_SWEETS :{COMMA}{NBSP}bolsa{P "" s} de caramelos
STR_QUANTITY_COLA :{VOLUME_LONG} de cola
STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} de algodón dulce
STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} de algodón de azúcar
STR_QUANTITY_BUBBLES :{COMMA} burbuja{P "" s}
STR_QUANTITY_TOFFEE :{WEIGHT_LONG} de tofe{P "" s}
STR_QUANTITY_BATTERIES :{COMMA} pila{P "" s}
@@ -195,7 +195,7 @@ STR_COLOUR_DEFAULT :Por Defecto
STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}mph
STR_UNITS_VELOCITY_METRIC :{COMMA}{NBSP}km/h
STR_UNITS_VELOCITY_SI :{COMMA}{NBSP}m/s
STR_UNITS_VELOCITY_GAMEUNITS :{DECIMAL} {NBSP}casillas/día
STR_UNITS_VELOCITY_GAMEUNITS :{DECIMAL}{NBSP}casillas/día
STR_UNITS_POWER_IMPERIAL :{COMMA}{NBSP}hp
STR_UNITS_POWER_METRIC :{COMMA}{NBSP}cv
@@ -315,7 +315,7 @@ STR_SORT_BY_RANGE :Alcance
STR_SORT_BY_POPULATION :Población
STR_SORT_BY_RATING :Calificación
STR_SORT_BY_NUM_VEHICLES :Número de vehículos
STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Beneficios total del último año
STR_SORT_BY_TOTAL_PROFIT_LAST_YEAR :Beneficio total del último año
STR_SORT_BY_TOTAL_PROFIT_THIS_YEAR :Beneficio total este año
STR_SORT_BY_AVERAGE_PROFIT_LAST_YEAR :Beneficio medio el año pasado
STR_SORT_BY_AVERAGE_PROFIT_THIS_YEAR :Beneficio medio este año
@@ -1007,6 +1007,9 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Acelerac
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Marca esta casilla para permitir que OpenTTD intente usar aceleración por hardware. El cambio de configuración sólo tendrá efecto después de reiniciar el juego
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}El ajuste sólo tendrá efecto después de reiniciar el juego
STR_GAME_OPTIONS_VIDEO_VSYNC :{BLACK}Sincronización vertical
STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Marca esta casilla para activar la sincronización vertical en la pantalla. El cambio sólo se aplicará después de reiniciar el juego. Sólo funciona si la aceleración por hardware está activada.
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Tamaño de la interfaz
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Selecciona el tamaño de los elementos de la interfaz a usar
@@ -1087,11 +1090,11 @@ STR_NUM_CUSTOM :Personalizado
STR_NUM_CUSTOM_NUMBER :Personalizado ({NUM})
STR_VARIETY_NONE :Ninguna
STR_VARIETY_VERY_LOW :Muy baja
STR_VARIETY_VERY_LOW :Muy Baja
STR_VARIETY_LOW :Baja
STR_VARIETY_MEDIUM :Media
STR_VARIETY_HIGH :Alta
STR_VARIETY_VERY_HIGH :Muy alta
STR_VARIETY_VERY_HIGH :Muy Alta
STR_AI_SPEED_VERY_SLOW :Muy lenta
STR_AI_SPEED_SLOW :Lenta
@@ -1099,7 +1102,7 @@ STR_AI_SPEED_MEDIUM :Media
STR_AI_SPEED_FAST :Rápida
STR_AI_SPEED_VERY_FAST :Muy rápida
STR_SEA_LEVEL_VERY_LOW :Muy bajo
STR_SEA_LEVEL_VERY_LOW :Muy Bajo
STR_SEA_LEVEL_LOW :Bajo
STR_SEA_LEVEL_MEDIUM :Medio
STR_SEA_LEVEL_HIGH :Alto
@@ -1730,7 +1733,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_GAMEUNITS :Unidad del jueg
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER :Unidad de potencia de vehículos: {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_HELPTEXT :Cada vez que se muestre la potencia de un vehículo en la interfaz de usuario, se empleará la unidad seleccionada
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperial (cv)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_IMPERIAL :Imperial (hp)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_METRIC :Métrico (cv)
STR_CONFIG_SETTING_LOCALISATION_UNITS_POWER_SI :SI (kW)
@@ -3220,12 +3223,12 @@ STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Financiar la co
STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Comprar derechos de transporte exclusivos
STR_LOCAL_AUTHORITY_ACTION_BRIBE :Sobornar a la autoridad local
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Iniciar una pequeña campaña publicitaria local para atraer más pasajeros y carga a sus servicios de transporte.{}Proporciona un incremento temporal en la calificación de las estaciones en un radio pequeño alrededor del centro del municipio.{}Coste: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Iniciar una campaña publicitaria local mediana para atraer más pasajeros y carga a sus servicios de transporte.{}Proporciona un incremento temporal en la calificación de las estaciones en un radio mediano alrededor del centro del municipio.{}Coste: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Iniciar una gran campaña publicitaria local para atraer más pasajeros y carga a sus servicios de transporte.{}Proporciona un incremento temporal en la calificación de las estaciones en un radio grande alrededor del centro del municipio.{}Coste: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Pagar la reconstrucción de las carreteras locales.{}Provoca considerables complicaciones de tráfico durante 6 meses.{}Coste: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Iniciar una campaña publicitaria local pequeña para atraer más pasajeros y carga a sus servicios de transporte.{}Proporciona un incremento temporal en la calificación de las estaciones en un radio pequeño alrededor del centro del municipio.{}Coste: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Inicia una campaña publicitaria local mediana para atraer más pasajeros y carga a sus servicios de transporte.{}Proporciona un incremento temporal en la calificación de las estaciones en un radio mediano alrededor del centro del municipio.{}Coste: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Iniciar una campaña publicitaria local grande para atraer más pasajeros y carga a sus servicios de transporte.{}Proporciona un incremento temporal en la calificación de las estaciones en un radio grande alrededor del centro del municipio.{}Coste: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Paga la reconstrucción de las carreteras locales.{}Provoca considerables complicaciones de tráfico durante 6 meses.{}Coste: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Construye una estatua en honor a su empresa.{}Proporciona un incremento permanente en la calificación de las estaciones de este municipio.{}Coste: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Pagar la construcción de nuevos edificios comerciales en el municipio.{}Proporciona un incremento temporal en el crecimiento del municipio.{}Coste: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Paga la construcción de nuevos edificios comerciales en el municipio.{}Proporciona un incremento temporal en el crecimiento del municipio.{}Coste: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Compra derechos de transporte exclusivos en este municipio durante un año.{}Las autoridades no permitirán el uso de las estaciones de la competencia.{}Coste: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Soborna a las autoridades locales para aumentar su calificación, con el riesgo de sufrir una penalización severa si es descubierto.{}Coste: {CURRENCY_LONG}

View File

@@ -1007,6 +1007,7 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Acelerac
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Activar esta casilla para intentar emplear la aceleración por hardware. Este cambio solo tiene efecto tras reiniciar el juego
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Esta configuración solo tendrá efecto después de reiniciar el juego
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Tamaño de la interfaz
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Elegir el tamaño de los elementos de la interfaz

View File

@@ -1006,6 +1006,7 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Hårdvar
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Markera denna rutan för att tillåta OpenTTD att försöka använda hårdvaruacceleration. Ändrad inställning kommer bara att gälla efter omstart.
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Inställningen kommer bara att gälla efter omstart av spelet
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Gränssnittstorlek
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Välj vilken gränssnittsstorlek som ska användas

View File

@@ -962,6 +962,8 @@ STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}OpenTTD-
STR_GAME_OPTIONS_RESOLUTION :{BLACK}திரையின் அளவு
STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}திரை அளவினைத் தேர்ந்தெடுக்கவும்
STR_GAME_OPTIONS_RESOLUTION_OTHER :மற்றவை
STR_GAME_OPTIONS_RESOLUTION_ITEM :{NUM}x{NUM}
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}இடைமுக அளவு
@@ -1696,6 +1698,7 @@ STR_FACE_LOAD :{BLACK}ஏற
STR_FACE_LOAD_TOOLTIP :{BLACK}பிடித்த முகத்தினை பதிவேற்று
STR_FACE_LOAD_DONE :{WHITE}உங்களுடைய பிடித்த முகம் OpenTTD உள்ளமைவு கோப்பிலிருந்து ஏற்றப்பட்டுள்ளது
STR_FACE_FACECODE :{BLACK}விளையாடுபவர் முக எண்
STR_FACE_FACECODE_TOOLTIP :{BLACK}நிறுவனரின் முக எண்னை பார் மற்றும்/அல்லது அமை
STR_FACE_FACECODE_CAPTION :{WHITE}நிறுவனரின் முக எண்னை பார் அல்லது அமை
STR_FACE_FACECODE_SET :{WHITE}புதிய முக எண் குறி அமைக்கப்பட்டது
STR_FACE_SAVE :{BLACK}சேமி
@@ -2117,6 +2120,7 @@ STR_RAIL_TOOLBAR_MAGLEV_CONSTRUCTION_CAPTION :மேக்ல
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}இரயில்வே இருப்புப் பாதையினை கட்டவும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும்
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}இரயில் பணிமனையினைக் (இரயில்களை வாங்க மற்றும் பழுதுபார்க்க) கட்டவும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும்
STR_RAIL_TOOLBAR_TOOLTIP_CONVERT_RAIL_TO_WAYPOINT :{BLACK}இரயில் தடத்தை வழிப்புள்ளியாக மாற்றும். வழிப்புள்ளிகளை இணைக்க Ctrl-ஐ அழுத்தவும். கட்டுமான/செலவு மதிப்பீட்டினை காட்டShift-ஐ அழுத்தவும்.
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_STATION :{BLACK}இரயில் நிலையத்தினை கட்டவும். Ctrl அழுத்தினால் நிலையங்களினை இணைக்கலாம். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும்
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_SIGNALS :{BLACK}இரயில்வே சிக்னல்களைக் கட்டவும். Ctrl அழுத்தினால் சிக்னல் வகைகளை மாற்றலாம்{}இரயில் தடத்தின்மேல் இழுத்தினால் சிக்னல்களை அமைக்கலாம். Ctrl அழுத்தினால் அடுத்த எணைப்பு வரை சிக்னல்கள் அமைக்கப்படும்{}Ctrl+Click அழுத்தினால் சிக்னல் தேர்ந்தெடுக்கும் திரை தெரியும்/மரையும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும்
STR_RAIL_TOOLBAR_TOOLTIP_BUILD_RAILROAD_BRIDGE :{BLACK}இரயில்வே பாலத்தினை கட்டவும். Shift அழுத்தினால் கட்டுமான/செலவு மதிப்பீடு காட்டப்படும்

View File

@@ -960,6 +960,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}เล
STR_GAME_OPTIONS_RESOLUTION_OTHER :อื่นๆ
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}ขนาดของแผงควบคุม

View File

@@ -974,6 +974,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}選擇
STR_GAME_OPTIONS_RESOLUTION_OTHER :其它
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}介面大小
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}選擇使用的介面元素大小

View File

@@ -993,6 +993,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :diğer
STR_GAME_OPTIONS_RESOLUTION_ITEM :{NUM}x{NUM}
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Arayüz boyutu
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Kullanmak üzere arayüz bileşen boyutunu seçin

View File

@@ -1134,6 +1134,7 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Прис
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Увімкнутий прапорець дозволить використання грою прискорення апаратного забезпечення. Налаштування запрацює тільки після перезапуску гри
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Налаштування запрацює тільки після перезапуску гри
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Розмір інтерфейсу
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Оберіть розмір елементів інтерфейсу

View File

@@ -520,6 +520,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :расна
# Custom currency window

View File

@@ -969,6 +969,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Selektea
STR_GAME_OPTIONS_RESOLUTION_OTHER :oars
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Interfacegrutte
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :Normaal

View File

@@ -484,6 +484,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :altra
# Custom currency window

View File

@@ -804,6 +804,7 @@ STR_GAME_OPTIONS_AUTOSAVE_DROPDOWN_EVERY_1_MONTH :Секој ме
# Custom currency window

View File

@@ -417,6 +417,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :oħrajn
# Custom currency window

View File

@@ -757,6 +757,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :अन्य
# Custom currency window

View File

@@ -962,6 +962,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :دیگر
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :دو برابر

View File

@@ -942,6 +942,7 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :دیگر
STR_GAME_OPTIONS_BASE_GRF :{BLACK}بُنیادی گرافک سیٹ
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}بُنیادی گرافک سیٹ اختیار کریں
STR_GAME_OPTIONS_BASE_GRF_STATUS :{RED}{NUM} missing/corrupted file{P "" s}

View File

@@ -1006,6 +1006,7 @@ STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Tăng t
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Đánh dấu vào ô này để cho phép OpenTTD thử sử dụng tăng tốc phần cứng. Sẽ có tác dụng sau khi khởi động lại trò chơi
STR_GAME_OPTIONS_VIDEO_ACCELERATION_RESTART :{WHITE}Thiết lập chỉ có tác dụng sau khi khởi động lại trò chơi
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Kích thước giao diện
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Chọn kích thước của các đối tượng trên giao diện

View File

@@ -972,6 +972,7 @@ STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Dewiswch
STR_GAME_OPTIONS_RESOLUTION_OTHER :arall
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Maint rhyngwyneb
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Dewis maint yr elfennau rhyngwyneb i'w defnyddio

View File

@@ -367,6 +367,7 @@ public:
static Path *invalid_path;
Path(NodeID n, bool source = false);
virtual ~Path() = default;
/** Get the node this leg passes. */
inline NodeID GetNode() const { return this->node; }

View File

@@ -498,7 +498,7 @@ struct AboutWindow : public Window {
int line_height; ///< The height of a single line
static const int num_visible_lines = 19; ///< The number of lines visible simultaneously
static const uint TIMER_INTERVAL = 150; ///< Scrolling interval in ms
static const uint TIMER_INTERVAL = 2100; ///< Scrolling interval, scaled by line text line height. This value chosen to maintain parity: 2100 / FONT_HEIGHT_NORMAL = 150ms
GUITimer timer;
AboutWindow() : Window(&_about_desc)
@@ -506,7 +506,6 @@ struct AboutWindow : public Window {
this->InitNested(WN_GAME_OPTIONS_ABOUT);
this->text_position = this->GetWidget<NWidgetBase>(WID_A_SCROLLING_TEXT)->pos_y + this->GetWidget<NWidgetBase>(WID_A_SCROLLING_TEXT)->current_y;
this->timer.SetInterval(TIMER_INTERVAL);
}
void SetStringParameters(int widget) const override
@@ -529,6 +528,10 @@ struct AboutWindow : public Window {
d.width = std::max(d.width, GetStringBoundingBox(_credits[i]).width);
}
*size = maxdim(*size, d);
/* Set scroll interval based on required speed. To keep scrolling smooth,
* the interval is adjusted rather than the distance moved. */
this->timer.SetInterval(TIMER_INTERVAL / FONT_HEIGHT_NORMAL);
}
void DrawWidget(const Rect &r, int widget) const override
@@ -767,6 +770,12 @@ struct TooltipsWindow : public Window
case TCC_RIGHT_CLICK: if (!_right_button_down) delete this; break;
case TCC_HOVER: if (!_mouse_hovering) delete this; break;
case TCC_NONE: break;
case TCC_EXIT_VIEWPORT: {
Window *w = FindWindowFromPt(_cursor.pos.x, _cursor.pos.y);
if (w == nullptr || IsPtInWindowViewport(w, _cursor.pos.x, _cursor.pos.y) == nullptr) delete this;
break;
}
}
}
};
@@ -783,7 +792,7 @@ void GuiShowTooltips(Window *parent, StringID str, uint paramcount, const uint64
{
DeleteWindowById(WC_TOOLTIPS, 0);
if (str == STR_NULL) return;
if (str == STR_NULL || !_cursor.in_window) return;
new TooltipsWindow(parent, str, paramcount, params, close_tooltip);
}

View File

@@ -11,6 +11,7 @@
#include <math.h>
#include "core/math_func.hpp"
#include "framerate_type.h"
#include "settings_type.h"
#include "safeguards.h"
#include "mixer.h"
@@ -45,7 +46,7 @@ static MxStreamCallback _music_stream = nullptr;
* stops overflowing when too many sounds are played at the same time, which
* causes an even worse sound quality.
*/
static const int MAX_VOLUME = 128 * 128;
static const int MAX_VOLUME = 32767;
/**
* Perform the rate conversion between the input and output.
@@ -60,7 +61,7 @@ static int RateConversion(T *b, int frac_pos)
return ((b[0] * ((1 << 16) - frac_pos)) + (b[1] * frac_pos)) >> 16;
}
static void mix_int16(MixerChannel *sc, int16 *buffer, uint samples)
static void mix_int16(MixerChannel *sc, int16 *buffer, uint samples, uint8 effect_vol)
{
if (samples > sc->samples_left) samples = sc->samples_left;
sc->samples_left -= samples;
@@ -69,8 +70,8 @@ static void mix_int16(MixerChannel *sc, int16 *buffer, uint samples)
const int16 *b = (const int16 *)sc->memory + sc->pos;
uint32 frac_pos = sc->frac_pos;
uint32 frac_speed = sc->frac_speed;
int volume_left = sc->volume_left;
int volume_right = sc->volume_right;
int volume_left = sc->volume_left * effect_vol / 255;
int volume_right = sc->volume_right * effect_vol / 255;
if (frac_speed == 0x10000) {
/* Special case when frac_speed is 0x10000 */
@@ -96,7 +97,7 @@ static void mix_int16(MixerChannel *sc, int16 *buffer, uint samples)
sc->pos = b - (const int16 *)sc->memory;
}
static void mix_int8_to_int16(MixerChannel *sc, int16 *buffer, uint samples)
static void mix_int8_to_int16(MixerChannel *sc, int16 *buffer, uint samples, uint8 effect_vol)
{
if (samples > sc->samples_left) samples = sc->samples_left;
sc->samples_left -= samples;
@@ -105,8 +106,8 @@ static void mix_int8_to_int16(MixerChannel *sc, int16 *buffer, uint samples)
const int8 *b = sc->memory + sc->pos;
uint32 frac_pos = sc->frac_pos;
uint32 frac_speed = sc->frac_speed;
int volume_left = sc->volume_left;
int volume_right = sc->volume_right;
int volume_left = sc->volume_left * effect_vol / 255;
int volume_right = sc->volume_right * effect_vol / 255;
if (frac_speed == 0x10000) {
/* Special case when frac_speed is 0x10000 */
@@ -154,13 +155,21 @@ void MxMixSamples(void *buffer, uint samples)
/* Fetch music if a sampled stream is available */
if (_music_stream) _music_stream((int16*)buffer, samples);
/* Apply simple x^3 scaling to master effect volume. This increases the
* perceived difference in loudness to better match expectations. effect_vol
* is expected to be in the range 0-127 hence the division by 127 * 127 to
* get back into range. */
uint8 effect_vol = (_settings_client.music.effect_vol *
_settings_client.music.effect_vol *
_settings_client.music.effect_vol) / (127 * 127);
/* Mix each channel */
for (mc = _channels; mc != endof(_channels); mc++) {
if (mc->active) {
if (mc->is16bit) {
mix_int16(mc, (int16*)buffer, samples);
mix_int16(mc, (int16*)buffer, samples, effect_vol);
} else {
mix_int8_to_int16(mc, (int16*)buffer, samples);
mix_int8_to_int16(mc, (int16*)buffer, samples, effect_vol);
}
if (mc->samples_left == 0) MxCloseChannel(mc);
}

View File

@@ -1071,7 +1071,7 @@ static const char *LoadDefaultDLSFile(const char *user_dls)
const char *MusicDriver_DMusic::Start(const StringList &parm)
{
/* Initialize COM */
if (FAILED(CoInitializeEx(nullptr, COINITBASE_MULTITHREADED))) return "COM initialization failed";
if (FAILED(CoInitializeEx(nullptr, COINIT_MULTITHREADED))) return "COM initialization failed";
/* Create the DirectMusic object */
if (FAILED(CoCreateInstance(

View File

@@ -29,7 +29,15 @@ static FMusicDriver_FluidSynth iFMusicDriver_FluidSynth;
/** List of sound fonts to try by default. */
static const char *default_sf[] = {
/* Debian/Ubuntu/OpenSUSE preferred */
/* FluidSynth preferred */
/* See: https://www.fluidsynth.org/api/settings_synth.html#settings_synth_default-soundfont */
"/usr/share/soundfonts/default.sf2",
/* Debian/Ubuntu preferred */
/* See: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=929185 */
"/usr/share/sounds/sf3/default-GM.sf3",
/* OpenSUSE preferred */
"/usr/share/sounds/sf2/FluidR3_GM.sf2",
/* RedHat/Fedora/Arch preferred */
@@ -77,12 +85,22 @@ const char *MusicDriver_FluidSynth::Start(const StringList &param)
/* Load a SoundFont and reset presets (so that new instruments
* get used from the SoundFont) */
if (!sfont_name) {
int i;
sfont_id = FLUID_FAILED;
for (i = 0; default_sf[i]; i++) {
if (!fluid_is_soundfont(default_sf[i])) continue;
sfont_id = fluid_synth_sfload(_midi.synth, default_sf[i], 1);
if (sfont_id != FLUID_FAILED) break;
/* Try loading the default soundfont registered with FluidSynth. */
char *default_soundfont;
fluid_settings_dupstr(_midi.settings, "synth.default-soundfont", &default_soundfont);
if (fluid_is_soundfont(default_soundfont)) {
sfont_id = fluid_synth_sfload(_midi.synth, default_soundfont, 1);
}
/* If no default soundfont found, try our own list. */
if (sfont_id == FLUID_FAILED) {
for (int i = 0; default_sf[i]; i++) {
if (!fluid_is_soundfont(default_sf[i])) continue;
sfont_id = fluid_synth_sfload(_midi.synth, default_sf[i], 1);
if (sfont_id != FLUID_FAILED) break;
}
}
if (sfont_id == FLUID_FAILED) return "Could not open any sound font";
} else {

View File

@@ -26,6 +26,7 @@
#include "settings_gui.h"
#include "widgets/dropdown_func.h"
#include "widgets/dropdown_type.h"
#include "widgets/slider_func.h"
#include "widgets/music_widget.h"
@@ -643,8 +644,6 @@ static void ShowMusicTrackSelection()
}
struct MusicWindow : public Window {
static const int slider_width = 3;
MusicWindow(WindowDesc *desc, WindowNumber number) : Window(desc)
{
this->InitNested(number);
@@ -740,27 +739,13 @@ struct MusicWindow : public Window {
break;
}
case WID_M_MUSIC_VOL: case WID_M_EFFECT_VOL: {
/* Draw a wedge indicating low to high volume level. */
const int ha = (r.bottom - r.top) / 5;
int wx1 = r.left, wx2 = r.right;
if (_current_text_dir == TD_RTL) std::swap(wx1, wx2);
const uint shadow = _colour_gradient[COLOUR_GREY][3];
const uint fill = _colour_gradient[COLOUR_GREY][6];
const uint light = _colour_gradient[COLOUR_GREY][7];
const std::vector<Point> wedge{ Point{wx1, r.bottom - ha}, Point{wx2, r.top + ha}, Point{wx2, r.bottom - ha} };
GfxFillPolygon(wedge, fill);
GfxDrawLine(wedge[0].x, wedge[0].y, wedge[2].x, wedge[2].y, light);
GfxDrawLine(wedge[1].x, wedge[1].y, wedge[2].x, wedge[2].y, _current_text_dir == TD_RTL ? shadow : light);
GfxDrawLine(wedge[0].x, wedge[0].y, wedge[1].x, wedge[1].y, shadow);
/* Draw a slider handle indicating current volume level. */
const int sw = ScaleGUITrad(slider_width);
byte volume = (widget == WID_M_MUSIC_VOL) ? _settings_client.music.music_vol : _settings_client.music.effect_vol;
if (_current_text_dir == TD_RTL) volume = 127 - volume;
const int x = r.left + (volume * (r.right - r.left - sw) / 127);
DrawFrameRect(x, r.top, x + sw, r.bottom, COLOUR_GREY, FR_NONE);
case WID_M_MUSIC_VOL:
DrawVolumeSliderWidget(r, _settings_client.music.music_vol);
break;
case WID_M_EFFECT_VOL:
DrawVolumeSliderWidget(r, _settings_client.music.effect_vol);
break;
}
}
}
@@ -801,19 +786,11 @@ struct MusicWindow : public Window {
break;
case WID_M_MUSIC_VOL: case WID_M_EFFECT_VOL: { // volume sliders
int x = pt.x - this->GetWidget<NWidgetBase>(widget)->pos_x;
byte *vol = (widget == WID_M_MUSIC_VOL) ? &_settings_client.music.music_vol : &_settings_client.music.effect_vol;
byte new_vol = Clamp(x * 127 / (int)this->GetWidget<NWidgetBase>(widget)->current_x, 0, 127);
if (_current_text_dir == TD_RTL) new_vol = 127 - new_vol;
/* Clamp to make sure min and max are properly settable */
if (new_vol > 124) new_vol = 127;
if (new_vol < 3) new_vol = 0;
if (new_vol != *vol) {
*vol = new_vol;
if (widget == WID_M_MUSIC_VOL) MusicDriver::GetInstance()->SetVolume(new_vol);
byte &vol = (widget == WID_M_MUSIC_VOL) ? _settings_client.music.music_vol : _settings_client.music.effect_vol;
if (ClickVolumeSliderWidget(this->GetWidget<NWidgetBase>(widget)->GetCurrentRect(), pt, vol)) {
if (widget == WID_M_MUSIC_VOL) MusicDriver::GetInstance()->SetVolume(vol);
this->SetDirty();
SetWindowClassesDirty(WC_GAME_OPTIONS);
}
if (click_count > 0) this->mouse_capture_widget = widget;

View File

@@ -239,7 +239,18 @@ SOCKET NetworkAddress::Resolve(int family, int socktype, int flags, SocketList *
strecpy(this->hostname, fam == AF_INET ? "0.0.0.0" : "::", lastof(this->hostname));
}
static bool _resolve_timeout_error_message_shown = false;
auto start = std::chrono::steady_clock::now();
int e = getaddrinfo(StrEmpty(this->hostname) ? nullptr : this->hostname, port_name, &hints, &ai);
auto end = std::chrono::steady_clock::now();
std::chrono::seconds duration = std::chrono::duration_cast<std::chrono::seconds>(end - start);
if (!_resolve_timeout_error_message_shown && duration >= std::chrono::seconds(5)) {
DEBUG(net, 0, "getaddrinfo for hostname \"%s\", port %s, address family %s and socket type %s took %i seconds",
this->hostname, port_name, AddressFamilyAsString(family), SocketTypeAsString(socktype), (int)duration.count());
DEBUG(net, 0, " this is likely an issue in the DNS name resolver's configuration causing it to time out");
_resolve_timeout_error_message_shown = true;
}
if (reset_hostname) strecpy(this->hostname, "", lastof(this->hostname));

View File

@@ -74,19 +74,12 @@ uint32 _sync_seed_2; ///< Second part of the seed.
#endif
uint32 _sync_frame; ///< The frame to perform the sync check.
bool _network_first_time; ///< Whether we have finished joining or not.
bool _network_udp_server; ///< Is the UDP server started?
uint16 _network_udp_broadcast; ///< Timeout for the UDP broadcasts.
uint8 _network_advertise_retries; ///< The number of advertisement retries we did.
CompanyMask _network_company_passworded; ///< Bitmask of the password status of all companies.
/* Check whether NETWORK_NUM_LANDSCAPES is still in sync with NUM_LANDSCAPE */
static_assert((int)NETWORK_NUM_LANDSCAPES == (int)NUM_LANDSCAPE);
static_assert((int)NETWORK_COMPANY_NAME_LENGTH == MAX_LENGTH_COMPANY_NAME_CHARS * MAX_CHAR_LENGTH);
extern NetworkUDPSocketHandler *_udp_client_socket; ///< udp client socket
extern NetworkUDPSocketHandler *_udp_server_socket; ///< udp server socket
extern NetworkUDPSocketHandler *_udp_master_socket; ///< udp master socket
/** The amount of clients connected */
byte _network_clients_connected = 0;
@@ -724,7 +717,7 @@ bool NetworkServerStart()
/* Try to start UDP-server */
DEBUG(net, 1, "starting listeners for incoming server queries");
_network_udp_server = _udp_server_socket->Listen();
NetworkUDPServerListen();
_network_company_states = CallocT<NetworkCompanyState>(MAX_COMPANIES);
_network_server = true;
@@ -1060,7 +1053,6 @@ void NetworkStartUp()
_network_available = NetworkCoreInitialize();
_network_dedicated = false;
_network_need_advertise = true;
_network_advertise_retries = 0;
/* Generate an server id when there is none yet */
if (StrEmpty(_settings_client.network.network_id)) NetworkGenerateServerId();

View File

@@ -500,6 +500,7 @@ public:
switch (widget) {
case WID_NG_MATRIX:
resize->height = WD_MATRIX_TOP + std::max(GetSpriteSize(SPR_BLOT).height, (uint)FONT_HEIGHT_NORMAL) + WD_MATRIX_BOTTOM;
fill->height = resize->height;
size->height = 12 * resize->height;
break;
@@ -954,7 +955,7 @@ static const NWidgetPart _nested_network_game_widgets[] = {
EndContainer(),
NWidget(WWT_PANEL, COLOUR_LIGHT_BLUE, WID_NG_DETAILS),
NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(5, 5, 5),
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_NG_DETAILS_SPACER), SetMinimalSize(140, 155), SetResize(0, 1), SetFill(1, 1), // Make sure it's at least this wide
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_NG_DETAILS_SPACER), SetMinimalSize(140, 0), SetMinimalTextLines(15, 24 + WD_PAR_VSEP_NORMAL), SetResize(0, 1), SetFill(1, 1), // Make sure it's at least this wide
NWidget(NWID_HORIZONTAL, NC_NONE), SetPIP(5, 5, 5),
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_NG_NEWGRF_MISSING_SEL),
NWidget(WWT_PUSHTXTBTN, COLOUR_WHITE, WID_NG_NEWGRF_MISSING), SetFill(1, 0), SetDataTip(STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_BUTTON, STR_NEWGRF_SETTINGS_FIND_MISSING_CONTENT_TOOLTIP),

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