Compare commits

...

267 Commits
master ... 1.11

Author SHA1 Message Date
Sergii Pylypenko
ea4d7f9737 Fixed compilation 2021-08-22 00:28:05 +03:00
Sergii Pylypenko
bd866de601 Emscripten: socket proxy first draft 2021-07-18 02:29:32 +03:00
Sergii Pylypenko
4d49fa47fa Emscripten: Fixed compilation 2021-07-08 00:22:25 +03:00
Sergii Pylypenko
70c1b39337 Updated todo 2021-07-08 00:20:20 +03:00
Sergii Pylypenko
bc4e4890c6 Emscripten: disable page zoom 2021-07-08 00:18:02 +03:00
Sergii Pylypenko
589b6bc92a Emscripten: console text input 2021-07-07 23:46:07 +03:00
Sergii Pylypenko
ad3f0ff143 Emscripten: fixed key events for text input 2021-07-07 23:11:56 +03:00
Sergii Pylypenko
8ffb519ec6 Emscripten: text input with HTML <input> element 2021-06-24 01:00:17 +03:00
Sergii Pylypenko
4eed59213e Fixed console obscured by vertical toolbar 2021-06-24 00:38:31 +03:00
Sergii Pylypenko
f6c674683c Emscripten: fixed Ctrl key not working 2021-06-22 01:08:14 +03:00
Sergii Pylypenko
8459f5dd43 Updated todo 2021-06-22 00:48:13 +03:00
Sergii Pylypenko
0427eab5c6 Emscripten: added a hit counter to loading screen 2021-06-22 00:46:26 +03:00
Sergii Pylypenko
9d119889d1 Emscripten, removed more network hacks, Emscripten bug 12996 is fixed in Emscripten 2.0.20 2021-06-20 02:53:37 +03:00
Sergii Pylypenko
44c7cc19b8 Emscripten: removed network stubs and re-enabled multiplayer dialog 2021-06-20 02:32:37 +03:00
Sergii Pylypenko
dbb9fa9b6f Emscripten: fixed fontconfig font path 2021-06-19 01:10:34 +03:00
Sergii Pylypenko
7b1902a8b0 Emscripten: compile libiculx for RTL text support 2021-06-17 01:07:27 +03:00
Sergii Pylypenko
b880e93416 Updated todo 2021-06-10 01:42:46 +03:00
Sergii Pylypenko
6832b8ff31 Emscripten: Sync FS before closing the browser window 2021-05-16 01:25:34 +03:00
Sergii Pylypenko
315bcaab30 Emscripten: fixed a warning 2021-05-16 01:24:13 +03:00
Sergii Pylypenko
1b6eb4829c Emscripten: updated emsdk patch 2021-05-16 00:37:00 +03:00
Sergii Pylypenko
9cb1ebf0c1 Fixed fast forward not working in single-threaded mode 2021-05-16 00:30:08 +03:00
Sergii Pylypenko
d51517d548 Fixed a crash when saving to network - this should be done from the video thread 2021-05-16 00:23:06 +03:00
Sergii Pylypenko
fde3be923c Removed duplicate setting 2021-05-15 23:44:25 +03:00
Sergii Pylypenko
bed585d1ea Enabled LTO for Android 64-bit architectures 2021-05-11 01:45:25 +03:00
Sergii Pylypenko
ba6a3cd4a4 Updated todo 2021-05-11 01:07:48 +03:00
Sergii Pylypenko
4d369cbeb2 Option to disable mouse cursor for touchscreen devices 2021-05-11 01:05:10 +03:00
Sergii Pylypenko
8cccaceda8 Updated todo 2021-05-11 00:06:33 +03:00
Sergii Pylypenko
db5aac4d51 Updated todo 2021-05-11 00:05:58 +03:00
Sergii Pylypenko
9910e38534 Updated todo 2021-05-11 00:04:58 +03:00
Sergii Pylypenko
2ca3174436 Merge branch '1.11' of github.com:pelya/openttd-android into 1.11 2021-05-11 00:02:38 +03:00
Sergii Pylypenko
241bd7277d Fixed online content dialog 2021-05-11 00:02:18 +03:00
Sergii Pylypenko
dee909d23f Fast forward requires threaded renderer, and OpenTTD have fixed threaded renderer in SDL1.2 backend 2021-05-10 23:54:50 +03:00
Sergii Pylypenko
1acfc90c98 Emscripten: updated deploy script 2021-05-08 00:14:58 +03:00
Sergii Pylypenko
948c30ee63 Updated todo: Fast Forward button bug somehow disappeared by itself, well I don't mind 2021-05-08 00:08:13 +03:00
Sergii Pylypenko
3949f87465 Fixed mutex deadlock in libtimidity shutdown function 2021-05-08 00:03:20 +03:00
Sergii Pylypenko
26f6a01580 Renamed GetMinSizing() to GetMinButtonSize(), we do not use it for anything but button size 2021-05-07 22:54:49 +03:00
Sergii Pylypenko
1efdce0358 Removed less used sizing types 2021-05-07 22:51:44 +03:00
Sergii Pylypenko
e80df6ae8e Removed NWST_STEP and min_step, we don't need two variables doing the same thing 2021-05-07 22:24:45 +03:00
Sergii Pylypenko
607d73f872 Merge tag '1.11.2' into 1.11 2021-05-07 21:53:27 +03:00
Sergii Pylypenko
a737180146 Updated revision file 2021-05-07 21:42:52 +03:00
Sergii Pylypenko
f048c692f1 Disabled on-screen keyboard in default config, we have native text input 2021-05-07 02:17:27 +03:00
Sergii Pylypenko
3980253155 Emscripten: Fixed liblzo2 compilation 2021-05-06 02:56:17 +03:00
Sergii Pylypenko
40ad95c98c Load TTF fonts by default 2021-05-06 02:19:50 +03:00
Sergii Pylypenko
ab36c6b189 Emscripten: fixed linking with freetype library 2021-05-06 01:53:06 +03:00
Sergii Pylypenko
e375bf460b Updated todo 2021-05-06 01:51:06 +03:00
Sergii Pylypenko
fb803563b7 Better colors for build confirmation estimated cost tooltip 2021-05-06 01:45:55 +03:00
Sergii Pylypenko
693ae0cf84 Emscripten: disabled fullscreen mode, it apparently crashes in iOS 14.4 2021-05-06 00:12:08 +03:00
Sergii Pylypenko
754ec97141 Updated TODO 2021-05-06 00:02:53 +03:00
Sergii Pylypenko
de3a9955d0 Emscripten: enable debug logs 2021-05-05 23:49:21 +03:00
Sergii Pylypenko
58bb93fd59 Emscripten: disable extmidi 2021-05-05 23:49:08 +03:00
Sergii Pylypenko
47b4e2d339 Emscripten: libicu is not working anyway, because there are no libicuuc and libicu-le-hb available 2021-05-05 23:32:53 +03:00
Sergii Pylypenko
47798e7364 Emscripten: explicitly linking to libexpat and libuuid is not necessary 2021-05-05 23:31:51 +03:00
Sergii Pylypenko
a37ae35b29 Emscripten: fixed compilation with fontconfig 2021-05-05 23:30:34 +03:00
Sergii Pylypenko
a4ab459e5a Emscripten: disabled libtimidity in cmake 2021-05-05 23:29:27 +03:00
Sergii Pylypenko
a2539bc50d Emscripten: disabled libtimidity for now, it does not work anyway on Chrome for Android because of massive lag 2021-05-05 22:51:29 +03:00
Sergii Pylypenko
cdb07d9960 Emscripten: fixed fontconfig compilation 2021-05-05 22:49:07 +03:00
Sergii Pylypenko
866d9c71bc Emscripten: added fontconfig library 2021-05-05 02:49:37 +03:00
Sergii Pylypenko
a7cc30e2c7 Emscripten: on the other hand, let's make audio buffer slightly bigger 2021-05-05 01:47:05 +03:00
Sergii Pylypenko
7a952eddbe Emscripten: Try smaller audio buffer 2021-05-05 01:45:58 +03:00
Sergii Pylypenko
befad1d00f Fixed saving config file 2021-05-05 00:50:59 +03:00
Sergii Pylypenko
836b8b9406 Emscripten: Fixed relative paths 2021-05-05 00:20:45 +03:00
Sergii Pylypenko
7d90871a36 Emscripten: updated deply script 2021-05-05 00:17:31 +03:00
Sergii Pylypenko
55ef341194 Emscripten: fixed deploy script 2021-05-05 00:09:30 +03:00
Sergii Pylypenko
90320ddaed Changed default settings to match Android default config file 2021-05-05 00:08:42 +03:00
Sergii Pylypenko
347a543d9e Emscripten: script to deploy the webapp 2021-05-04 23:47:00 +03:00
Sergii Pylypenko
6daf1a3dd5 Fixed incorrect buffer size for Timidity mixer routine 2021-05-04 23:05:17 +03:00
Sergii Pylypenko
a1cdf3be27 Emscripten: increase audio buffer to unreasonable size 2021-05-04 23:04:17 +03:00
Sergii Pylypenko
6d3cb7b41e Fixed libtimidity not working with SDL2 2021-05-04 22:54:17 +03:00
Sergii Pylypenko
b4d123d916 Fixed OpenMSX not recognized 2021-05-04 22:26:52 +03:00
Charles Pigott
672f285218 Update: Changelog for 1.11.2 release 2021-05-03 19:33:42 +01:00
Charles Pigott
f11b06ff6a Update: Backport language changes 2021-05-03 19:33:42 +01:00
rubidium42
f9595543ca Fix #9117, 04ce1f07: [Fluidsynth] Infinite wait when stopping song (#9181)
In FluidSynth 2.2.0 an extra state was added to denote stopping. To transition
from this state to a stopped state the rendering needs to be running. Since
04ce1f07 locking was added that skipped the rendering when something else held
a lock, so the state would never get to stopped and join would never return.
2021-05-03 19:33:42 +01:00
PeterN
9aa335aca3 Fix: Query windows may be partially drawn initially. (#9184)
Query window was not marked dirty after being moved on init. It was then marked dirty once the white border flash completed.
2021-05-03 19:33:42 +01:00
PeterN
05aed133c7 Fix #9174: Don't update text effect if it has been reset. (#9183) 2021-05-03 19:33:42 +01:00
Jonathan G Rennison
b9ea4f07e4 Fix #9113: Assertion failure when removing airport with order backup (#9182) 2021-05-03 19:33:42 +01:00
Milek7
8b5bd34a65 Codechange: Acquire video buffer before taking game state lock to prevent erratic fast forward behaviour (#9140) 2021-05-03 19:33:42 +01:00
Michael Lutz
72090f39ce Fix #9147: Delay making screenshots until the next draw tick as we may not access the video buffer from the game thread. 2021-05-03 19:33:42 +01:00
Michael Lutz
de61dadaa9 Codechange: Generalise the delayed blitter change to a generic video driver command queue. 2021-05-03 19:33:42 +01:00
PeterN
d52a66642d Fix: Update text effect size when font zoom is changed. (#9174) 2021-05-03 19:33:42 +01:00
frosch
d92d807e1d Fix: [NewGRF] industry variable 66 and object variable 46 clamped the squared-euclidian distance to 16 bit, when they should not. 2021-05-03 19:33:42 +01:00
frosch
60f85dbc37 Fix: [NewGRF] industry variables 65 and 66 ignored the parameter, and always used the north tile. 2021-05-03 19:33:42 +01:00
rubidium42
dbba489fcf Fix: [Network] Reading beyond the length of the server's ID when hashing password
Under normal circumstances the server's ID is 32 characters excluding '\0', however this can be changed at the server. This ID is sent to the server for company name hashing. The client reads it into a statically allocated buffer of 33 bytes, but fills only the bytes it received from the server. However, the hash assumes all 33 bytes are set, thus potentially reading uninitialized data, or a part of the server ID of a previous game in the hashing routine.
It is still reading from memory assigned to the server ID, so nothing bad happens, except that company passwords might not work correctly.
2021-05-03 19:33:42 +01:00
PeterN
dd70d0ad85 Fix: Crash when extra viewport height is zero with sign in view. (#9175)
If a viewport sign straddles the top of a viewport, a crash will occur if the viewport height is zero. This is resolved by simply not attempting to draw the viewport in this situation, consistent with other widgets.
2021-05-03 19:33:42 +01:00
rubidium42
a8c5f8a10b Codechange: move some OS abstraction method implementations out of the header 2021-05-03 19:33:42 +01:00
rubidium42
ef258b1686 Codechange: encapsulate network error handling 2021-05-03 19:33:42 +01:00
rubidium42
3265e56294 Codechange: rename NetworkError to ShowNetworkError 2021-05-03 19:33:42 +01:00
Loïc Guilloux
5e7f9cc22c Fix: Don't consider regression AIs when starting a random AI (#9164) 2021-05-03 19:33:42 +01:00
Loïc Guilloux
f3b8ff0e17 Change: [Actions] Add a 2 minutes timeout for regression test (#9166) 2021-05-03 19:33:42 +01:00
rubidium42
c3d134793f Fix #6598: Prevent invalid memory accesses when abandoning a join from within a network game
One could join a network game from within an already running network game. This would call a NetworkDisconnect, but keeps the UI alive. If, during that process the join is aborted, e.g. by cancelling on a password dialog, you would still be in your network game but also get shown the server list.
Solve all the underlying problems by falling back to the main UI when (re)connecting to a(nother) server.
2021-05-03 19:33:42 +01:00
rubidium42
59c356ad39 Fix #6598: Do not disconnect before company number validation
NetworkClientConnectGame already does a NetworkDisconnect, so no reason to do it here
2021-05-03 19:33:42 +01:00
Patric Stout
2514cf3c5c Fix b3003dd1: swap SERVER_GAME_INFO with CLIENT_GAME_INFO (#9129)
The idea is that if you query an older server that does not support
this packet yet, the client receives an error. The assumption was
that on every "illegal packet" the connection would be closed. This
turns out to be false.

Now CLIENT_GAME_INFO aligns with the old PACKET_CLIENT_NEWGRFS_CHECKED,
which does a pre-check (which fails), and an error is sent back
and the connection is closed.

This is not a nice solution, but it is the best we got.
2021-05-03 19:33:42 +01:00
Patric Stout
1eb20db8db Add: ability to retrieve game info from server over TCP 2021-05-03 19:33:42 +01:00
Patric Stout
32ead3aba6 Codechange: be explicit in pointer comparisons 2021-05-03 19:33:42 +01:00
Patric Stout
cae0b46e38 Codechange: move all NetworkGameInfo related functions to a single file
It currently was a bit scattered over the place. Part of
NetworkGameInfo is also the GRF Identifiers that goes with it.
2021-05-03 19:33:42 +01:00
Patric Stout
4f8a2c2999 Doc: indicate the most common options for CMake 2021-05-03 19:33:42 +01:00
Patric Stout
9932f4ea50 Doc: split up which libraries are used for which situation 2021-05-03 19:33:42 +01:00
Patric Stout
0a5a06c431 Doc: fix OpenGFX / OpenSFX / OpenMSX links in README 2021-05-03 19:33:42 +01:00
Patric Stout
d570120e17 Doc: update the supported platforms to match current master 2021-05-03 19:33:42 +01:00
rubidium42
abbbeb752a Change: [Network] Safeguard from using errno/strerror for handling network errors
They are likely not working as expected on Windows, so prevent their usage.
Winsock does not set errno and strerror does not return anything useful for Winsock error numbers.
2021-05-03 19:33:42 +01:00
rubidium42
9afe3d77e6 Codechange: [Network] Do not leak os_abstraction.h via base_media_func.h 2021-05-03 19:33:42 +01:00
rubidium42
6362e29ad7 Codechange: [Network] Do not leak os_abstraction.h via fios.h 2021-05-03 19:33:42 +01:00
rubidium42
bc0501e96f Codechange: [Network] Do not leak os_abstraction.h via network_func 2021-05-03 19:33:42 +01:00
rubidium42
7e6f00c85a Change: [Network] Use string error messages instead of numeric error numbers that need to be looked up 2021-05-03 19:33:42 +01:00
rubidium42
bf07420916 Fix: [Network] errno and strerror do not handle network errors on Windows 2021-05-03 19:33:42 +01:00
rubidium42
21b196d5c4 Fix #9152, Fix #9153: screenshot command showed error messages when successful 2021-05-03 19:33:42 +01:00
Patric Stout
26b7500f3b Remove: performance measurements in YAPF
YAPF was constantly measuring its performance, but only at
certain debug-levels this information was shown.

Now after years, I sincerely wonder if anyone still knows about this
feature and who still use it. Especially with the new framerate window,
this detailed performance is not as meaningful anymore as it once
was.
2021-05-03 19:33:42 +01:00
Patric Stout
9a203b2b2c Cleanup: remove weird left-over comment in yapf.hpp 2021-05-03 19:33:42 +01:00
PeterN
c3eae71778 Fix: Incorrect vertical alignment of icon and text in DropDownListIconItem. (#9133)
This happens if the bounding dimensions are changed so that each item is the same size, as happens on the railtype/roadtype dropdown lists, as the vertical offset was calculated before this dimension is changed.
2021-05-03 19:33:42 +01:00
Milek7
b1d3b9544e Codechange: Use __attribute__ access none to silence GCC 11 -Wmaybe-uninitialized warnings (#9124) 2021-05-03 19:33:42 +01:00
PeterN
45c866cbd1 Fix: Count engine details text in lines rather than pixels. (#9107)
This allows the details panel to scale correctly for different zoom levels.
2021-05-03 19:33:42 +01:00
rubidium42
f8f57ab46f Fix: [Network] Prevent stalling save game transfer when compression is slow 2021-05-03 19:33:42 +01:00
PeterN
ef48195ffa Fix: Use width of tiny arrow string instead of scaled pixels in ship/aircraft list. (#9102) 2021-05-03 19:33:42 +01:00
Michael Lutz
967c2ed56c Fix: [OpenGL] Main loop expects to start with the video buffer unmapped. (#9100) 2021-05-03 19:33:42 +01:00
PeterN
037bd14ed8 Fix #9097: Upper 16 bits of cargo base payment rate were discarded. (#9098)
NewGRF spec says that base payment rate is 32 bits, but it was loaded into a 16 bit variable. This value is loaded into Money variable after inflation is applied.
2021-05-03 19:33:42 +01:00
rubidium42
8eb53fa1a0 Fix: String validation could leave invalid Utf8 encoded strings (#9096)
In case a character was encoded in multiple bytes, but required fewer bytes to be encoded, the first byte would be copied to the output leaving an invalid Utf8 encoded string. Later uses of the validated string would use the same decode logic, which would yield a question mark and just read a single byte, so nothing dangerous happened.
Furthermore, because the next byte would not be a first byte of an encoded Utf8 character, the last few valid characters could be removed by the validation as well.
2021-05-03 19:33:42 +01:00
glx22
4b14a84510 Fix: [CMake] Check nforenum and grfcodec return value 2021-05-03 19:33:42 +01:00
glx22
4e1b0eda94 Fix: [CMake] Incorrect dependency checks for GRF 2021-05-03 19:33:42 +01:00
Michael Lutz
bf727cb26a Codechange: [Win32] Try getting an OpenGL 4.5 context first before aiming at 3.2. 2021-05-03 19:33:42 +01:00
Michael Lutz
e609c936a4 Change: [Win32] Limit the OpenGL video driver to OpenGL 3.2 or newer on Windows. 2021-05-03 19:33:42 +01:00
Michael Lutz
59ce9b4d2f Fix: [OpenGL] Check maximum supported texture size against screen resolution. 2021-05-03 19:33:42 +01:00
PeterN
ceee558fe5 Codechange: Scale rating minigraphs on station window list. (#9075)
Minigraphs did not adjust size to accomodate large text, either by font size or font zoom, leading to cropped labels.
Minigraphs and spacing are now scaled by font zoom, as this seems to behave better than gui zoom in this instance.
2021-05-03 19:33:42 +01:00
Loïc Guilloux
2bc7e5a8e2 Fix 799eb31: [CMake] Don't include regression AIs in bundles (#9068) 2021-05-03 19:33:42 +01:00
Loïc Guilloux
8d1d271cda Fix d4f0b6f4: [CMake] CMAKE_PROJECT_VERSION_XXX are not in CMake 3.9 (#9154) 2021-05-03 19:33:42 +01:00
glx22
c454cc09b3 Fix: Auto-fill version details in rev.cpp and ottres.rc 2021-05-03 19:33:42 +01:00
Sergii Pylypenko
4a9dbfbe65 Emscripten: build with timidity 2021-05-03 01:53:40 +03:00
Sergii Pylypenko
da31bb7e66 Emscripten: updated app manifest 2021-05-03 00:26:35 +03:00
Sergii Pylypenko
9623c6bfd2 Emscripten: fixed build script 2021-05-03 00:13:57 +03:00
Sergii Pylypenko
f138d2645c Emscripten: fixed init script 2021-05-03 00:13:48 +03:00
Sergii Pylypenko
747d429fb3 Emscripten: request fullscreen on first mouse click 2021-05-02 23:55:45 +03:00
Sergii Pylypenko
910d87d5c5 Emscripten: small fix to build script 2021-05-02 23:36:55 +03:00
Sergii Pylypenko
6d59c9e9d5 Emscripten: fixed data file path 2021-05-02 23:32:51 +03:00
Sergii Pylypenko
cc638cb825 Revert "Emscripten: fullscreen by default" - SDL2 fullscreen flag is emulated, it won't make browser window borderless
This reverts commit abbe0a4a0a.
2021-05-02 23:30:34 +03:00
Sergii Pylypenko
0f45d014a0 Emscripten: fixed build script 2021-05-02 23:30:11 +03:00
Sergii Pylypenko
5108cf6c58 Emscripten: add SFX and music to the data file 2021-05-02 23:28:41 +03:00
Sergii Pylypenko
503e6c9876 Emscripten: Include GFX baseset into data file 2021-05-02 02:22:31 +03:00
Sergii Pylypenko
abbe0a4a0a Emscripten: fullscreen by default 2021-05-02 02:03:24 +03:00
Sergii Pylypenko
e85e585f3e Emscripten: Re-enabled sounds 2021-05-02 01:56:17 +03:00
Sergii Pylypenko
b98ad2036a emscripten: moved build scripts from root dir 2021-05-02 00:55:14 +03:00
Sergii Pylypenko
de194454b6 Emscripten: added app manifest and favicon 2021-05-02 00:54:55 +03:00
Sergii Pylypenko
73c4b2673b Emscripten: disabled relative mouse mode 2021-05-01 00:10:46 +03:00
Sergii Pylypenko
7c185bc75e Added Emscripten build scripts 2021-04-30 23:58:27 +03:00
Sergii Pylypenko
6c658cb0f5 Updated Emscripten liblzma patch for Emscripten 2.0.15 2021-04-30 23:56:13 +03:00
Sergii Pylypenko
fd84cfa196 Fixed Multiplayer dialog 2021-04-26 01:13:53 +03:00
Sergii Pylypenko
066a20c696 Updated revision 2021-04-26 00:11:47 +03:00
Sergii Pylypenko
5b2f316cda Fixed text input in the wrong edit box in Multiplayer server list 2021-04-26 00:05:45 +03:00
Sergii Pylypenko
1c0c2b7345 Fixed a crash in game options dialog 2021-04-25 23:48:28 +03:00
Sergii Pylypenko
561ce3ee7f Merge tag '1.11.1' into 1.11 2021-04-25 22:58:47 +03:00
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
Sergii Pylypenko
6ad10ffb54 Updated todo 2021-04-06 00:00:42 +03:00
Sergii Pylypenko
5210515f24 Updated revision 2021-04-01 21:20:51 +03:00
Sergii Pylypenko
403ff8badd Merge tag '1.11.0' into 1.11 2021-04-01 21:19:42 +03:00
Patric Stout
bd80ec7cff Fix: [CMake] if the regex for STABLETAG is empty, it means it is stable
This feels a bit inside out, but it makes sense: if there are no
"beta1" or "RC1" mentions, it means it is a stable release.
2021-04-01 13:34:39 +02:00
Patric Stout
935debbf6f Fix: [Actions] "is-tag" variable is the 5th element, not 6th
The 6th is "is-stable-tag", but it is currently broken in meaning.
Betas and RCs are considered "stable", but final releases are not.
This is the reason it was working for RC1, but not for the final
release.
2021-04-01 13:34:39 +02:00
Patric Stout
4eac2163f5 Doc: Prepare for 1.11.0 release 2021-04-01 12:39:58 +02:00
Patric Stout
150341ba29 Codechange: Disable asserts for release 2021-04-01 12:39:58 +02:00
Patric Stout
183df5c981 Codechange: Suppress warnings when asserts are disabled (#8917) 2021-04-01 11:50:37 +02:00
translators
7fb12afc4f Update: Translations from eints
catalan: 2 changes by J0anJosep
2021-04-01 10:28:08 +02:00
Charles Pigott
92f966821e Codechange: Suppress warnings when asserts are disabled (#8916) 2021-04-01 10:28:08 +02:00
translators
903bd3d750 Update: Translations from eints
luxembourgish: 1 change by phreeze83
serbian: 59 changes by nkrs
2021-04-01 10:28:08 +02:00
Charles Pigott
edbae9ad6c Fix #8803: Only auto-remove signals when rail can be built (#8904) 2021-04-01 10:28:08 +02:00
translators
a931a18d05 Update: Translations from eints
english (us): 23 changes by 2TallTyler
luxembourgish: 63 changes by phreeze83
ukrainian: 72 changes by StepanIvasyn
catalan: 5 changes by J0anJosep
turkish: 5 changes by nullaf
2021-04-01 10:28:08 +02:00
Mike
b36b1a8cf9 Fix #8565: Stopped road vehicle displays a speed different than 0 (#8901) 2021-04-01 10:28:08 +02:00
translators
b8af503ff5 Update: Translations from eints
english (us): 7 changes by HAJDog247
czech: 18 changes by PatrikSamuelTauchim
luxembourgish: 99 changes by phreeze83
serbian: 4 changes by nkrs
catalan: 20 changes by J0anJosep
french: 1 change by arikover
portuguese: 30 changes by azulcosta
2021-04-01 10:28:08 +02:00
translators
766b9895bf Update: Translations from eints
swedish: 30 changes by kustridaren
spanish (mexican): 1 change by absay
japanese: 13 changes by Azusa257
vietnamese: 1 change by KhoiCanDev
estonian: 12 changes by siimsoni
czech: 6 changes by PatrikSamuelTauchim, 2 changes by tomas-vl
chinese (simplified): 88 changes by clzls
arabic (egypt): 16 changes by AviationGamerX
luxembourgish: 4 changes by phreeze83
korean: 34 changes by telk5093
italian: 16 changes by AlphaJack
german: 1 change by danidoedel, 1 change by Wuzzy2
slovak: 30 changes by FuryPapaya
catalan: 35 changes by J0anJosep
tamil: 16 changes by Aswn
dutch: 32 changes by Afoklala
portuguese (brazilian): 14 changes by Greavez, 5 changes by jpsl00
2021-04-01 10:28:08 +02:00
Charles Pigott
2b78c22349 Fix #8886: Don't try to resolve folders within tars named '.' 2021-04-01 10:28:08 +02:00
translators
4bcc3a4f3f Update: Translations from eints
norwegian (bokmal): 28 changes by Anolitt
spanish (mexican): 29 changes by absay
galician: 1 change by JohnBoyFan
vietnamese: 30 changes by KhoiCanDev
estonian: 31 changes by siimsoni
czech: 6 changes by tomas-vl
arabic (egypt): 73 changes by AviationGamerX
hungarian: 37 changes by pnpBrumi
german: 24 changes by danidoedel, 4 changes by matthiasradde, 2 changes by SecretIdetity
russian: 2 changes by SecretIdetity
finnish: 40 changes by lanurmi
catalan: 47 changes by J0anJosep
lithuanian: 30 changes by devbotas
spanish: 29 changes by JohnBoyFan
french: 30 changes by MalaGaM
portuguese (brazilian): 7 changes by jpsl00, 5 changes by Greavez
polish: 31 changes by Milek7
2021-04-01 10:28:08 +02:00
translators
d5b8829fb4 Update: Translations from eints 2021-04-01 10:28:08 +02:00
Patric Stout
872d1f1396 Change: scale heightmaps we export to highest peak and inform the user of this value
Before this commit, it scaled to map-height-limit. Recently this
could also be set to "auto", meaning players don't really know
or care about this value.

This also means that if a player exported a heightmap and wanted
to import it again, looking like the exact same map, he did not
know what value for "highest peak" to use.
2021-04-01 10:28:08 +02:00
Patric Stout
1e905dea20 Fix: store the recent new game_creation settings in savegames
This allows us to later on see what someone did, and makes sure
that "restart" command still knows how the game was created.
2021-04-01 10:28:08 +02:00
Patric Stout
cedc5c4de8 Feature: allow setting a custom terrain type to define highest peak
At least, TGP will try to reach it. It heavily depends on the map
if it is reachable at all. But for sure it will do its atmost to
get there!
2021-04-01 10:28:08 +02:00
Patric Stout
13b1e585da Add: allow setting the highest mountain for heightmaps
It will add some slack to the map height limit if that was set
to auto.
2021-04-01 10:28:08 +02:00
Patric Stout
6dcc7f93c3 Feature: auto-detect map height limit based on generated map
This opens up the true power of the TGP terrain generator, as it
is no longer constrainted by an arbitrary low map height limit,
especially for extreme terrain types.

In other words: on a 1kx1k map with "Alpinist" terrain type, the
map is now really hilly with default settings.

People can still manually limit the map height if they so wish,
and after the terrain generation the limit is stored in the
savegame as if the user set it.

Cheats still allow you to change this value.
2021-04-01 10:28:08 +02:00
Patric Stout
9496990f53 Change: rename setting "max_heightlevel" to "map_height_limit"
This better reflects what it is, and hopefully removes a bit of
the confusion people are having what this setting actually does.

Additionally, update the text on the setting to better inform
users what it is doing exactly, so they can make an educated
decision on how to change it.

Next commit will introduce an "auto" value, which should be the
new default. The rename has as added benefit that everyone will
start out on the "auto" value.
2021-04-01 10:28:08 +02:00
Patric Stout
d700db0e7d Change: remove "maximum map height" from the New Game GUI
This setting influence the max heightlevel, and not as the name
suggests: the height of the generated map.

How ever you slice it, it is a very weird place to add this
setting, and it is better off being only in the settings menu.

Commits following this commit also make it more useful, so users
no longer have to care about it.
2021-04-01 10:28:08 +02:00
Patric Stout
ae0b641768 Feature: setting to indicate desert coverage for tropic climate
This is an indication value; the game tries to get as close as it
can, but due to the complex tropic rules, that is unlikely to be
exact.

In the end, it picks a height-level to base the desert/tropic
line on. This is strictly seen not needed, as we can convert any
tile to either. But it is the simplest way to get started with
this without redoing all related functions.
2021-04-01 10:28:08 +02:00
Patric Stout
eff2376871 Feature: setting to indicate snow coverage for arctic climate (replaces snow line height)
Setting the snow coverage (in % of the map) makes a lot more sense
to the human, while still allowing the niche player to set (by
finding the correct %) a snow line height they like. This makes for
easier defaults, as it decoupled terrain height from amount of snow.

Maps can never be 100% snow, as we do not have sprites for coastal
tiles.

Internally, this calculates the best snow line height to approach
this coverage as close as possible.
2021-04-01 10:28:08 +02:00
Milek7
3fae244f54 Change: Do not disallow persistent buffer mapping on AMD GPUs, as it is actually faster. 2021-04-01 10:28:08 +02:00
translators
d77d0c9a5f Update: Translations from eints
chinese (traditional): 25 changes by SiderealArt
japanese: 81 changes by taku315
2021-04-01 10:28:08 +02:00
Koen Bussemaker
0b6e84f4cf Fix #8875: Filter string in station window breaks flow in user interface 2021-04-01 10:28:08 +02:00
Patric Stout
14692bf2e4 Fix: placing random trees in SE crashes the game (#8892)
This used to work by accident: originally the code checked if
GenerateWorld was threaded. If not, it would abort the function.
This worked for placing trees, because it was also returning false
when it was not active.

With the recent changes, that check got removed, and this crash
started to happen. So now check if we have a modal window, which
is a very solid indication we are generating the world.
2021-04-01 10:28:08 +02:00
translators
1f8bd4a8d7 Update: Translations from eints
slovak: 6 changes by FuryPapaya
2021-04-01 10:28:08 +02:00
translators
10d5fc46f9 Update: Translations from eints
arabic (egypt): 22 changes by AviationGamerX
2021-04-01 10:28:08 +02:00
translators
28aeedc4e7 Update: Translations from eints
slovak: 10 changes by FuryPapaya
2021-04-01 10:28:08 +02:00
translators
5802f61e42 Update: Translations from eints
chinese (simplified): 2 changes by clzls
korean: 2 changes by telk5093
slovak: 9 changes by FuryPapaya
catalan: 4 changes by J0anJosep
polish: 4 changes by pAter-exe
2021-04-01 10:28:08 +02:00
Michael Lutz
4e51cd1a03 Fix f0f96e31: [OpenGL] Broken window resizing due to invalid buffer pitch on texture creation. 2021-04-01 10:28:08 +02:00
translators
70117d3b82 Update: Translations from eints
vietnamese: 118 changes by KhoiCanDev
slovak: 13 changes by FuryPapaya
2021-04-01 10:28:08 +02:00
frosch
4d3b14af6f Fix f0f96e31: [OpenGL] warning: comparison of integer expressions of different signedness. (#8881) 2021-04-01 10:28:08 +02:00
Michael Lutz
da55c7c69f Fix #8871: [OpenGL] Initialize all buffers after resize and clear back buffer. (#8877) 2021-04-01 10:28:08 +02:00
translators
2c93c3b9cb Update: Translations from eints
ukrainian: 1 change by StepanIvasyn
2021-04-01 10:28:08 +02:00
dP
ea484bc9a6 Fix: Recompute road/railtype availability after disabling the engine 2021-04-01 10:28:08 +02:00
Peter Nelson
8e6522acef Fix: OSK layout not scaled for 2x or 4x GUI scale. 2021-04-01 10:28:08 +02:00
translators
3a3fb37dfe Update: Translations from eints
spanish (mexican): 8 changes by absay
ukrainian: 13 changes by StepanIvasyn
dutch: 3 changes by Afoklala
lithuanian: 1 change by devbotas
2021-04-01 10:28:08 +02:00
translators
2272de80e2 Update: Translations from eints
ukrainian: 10 changes by StepanIvasyn
portuguese: 78 changes by azulcosta
2021-04-01 10:28:08 +02:00
translators
38b506ecd6 Update: Translations from eints
swedish: 1 change by kustridaren
estonian: 1 change by siimsoni
russian: 5 changes by Ln-Wolf, 3 changes by SecretIdetity
ukrainian: 7 changes by StepanIvasyn
lithuanian: 31 changes by devbotas
portuguese: 54 changes by azulcosta
2021-04-01 10:28:08 +02:00
translators
df96bcf75c Update: Translations from eints
estonian: 2 changes by siimsoni
2021-04-01 10:28:08 +02:00
translators
63f6ae30e2 Update: Translations from eints
swedish: 10 changes by kustridaren
norwegian (bokmal): 3 changes by buzzCraft
czech: 39 changes by PatrikSamuelTauchim
ukrainian: 4 changes by StepanIvasyn
2021-04-01 10:28:08 +02:00
translators
87def2fd9e Update: Translations from eints
english (us): 8 changes by 2TallTyler
estonian: 16 changes by siimsoni
korean: 5 changes by telk5093
italian: 32 changes by AlphaJack
german: 5 changes by Wuzzy2
danish: 15 changes by achton
lithuanian: 89 changes by devbotas
spanish: 3 changes by MontyMontana
french: 8 changes by arikover
portuguese (brazilian): 3 changes by Greavez
polish: 17 changes by yazalo, 2 changes by pAter-exe
2021-04-01 10:28:08 +02:00
Tyler Trahan
6c93f02ff9 Add: Title game for 1.11 branch by Chrnan6710 (#8910) 2021-03-30 19:36:30 +02:00
Sergii Pylypenko
78c60cc896 Updated todo 2021-03-15 22:32:17 +02:00
Sergii Pylypenko
463537d0ec Updated version file 2021-03-15 22:23:59 +02:00
Sergii Pylypenko
f2ed31a2de Fixed tram type menu missing 2021-03-15 22:18:55 +02:00
Sergii Pylypenko
952f9e9793 Smaller status bar, like in the desktop version 2021-03-15 21:49:54 +02:00
Sergii Pylypenko
1c0338dc36 Fixed game options dialog 2021-03-15 21:28:15 +02:00
291 changed files with 7669 additions and 3161 deletions

View File

@@ -94,7 +94,7 @@ jobs:
- name: Test
run: |
cd build
ctest -j $(nproc)
ctest -j $(nproc) --timeout 120
macos:
name: Mac OS
@@ -175,5 +175,5 @@ jobs:
- name: Test
run: |
cd build
ctest -j $(sysctl -n hw.logicalcpu)
ctest -j $(sysctl -n hw.logicalcpu) --timeout 120

View File

@@ -96,7 +96,7 @@ jobs:
TZ='UTC' date +"%Y-%m-%d %H:%M UTC" > .release_date
cat .ottdrev | cut -f 1 -d$'\t' > .version
if [ $(cat .ottdrev | cut -f 6 -d$'\t') = '1' ]; then
if [ $(cat .ottdrev | cut -f 5 -d$'\t') = '1' ]; then
# Assume that all tags are always releases. Why else make a tag?
IS_TAG="true"
@@ -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

@@ -1 +1 @@
1.11.0-beta2 20210228 0 f30f4b68921544099e7278c0a9c57b9658a45a50 1 1 2021
1.11.2 20210503 0 672f285218c6817784d86f737987b75db4bc78fc 1 1 2021

View File

@@ -4,10 +4,12 @@ if(NOT BINARY_NAME)
set(BINARY_NAME openttd)
endif()
project(${BINARY_NAME})
project(${BINARY_NAME}
VERSION 1.11.2
)
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.
@@ -72,6 +74,9 @@ add_custom_target(find_version
${CMAKE_COMMAND}
-DFIND_VERSION_BINARY_DIR=${CMAKE_BINARY_DIR}/generated
-DCPACK_BINARY_DIR=${CMAKE_BINARY_DIR}
-DREV_MAJOR=${PROJECT_VERSION_MAJOR}
-DREV_MINOR=${PROJECT_VERSION_MINOR}
-DREV_BUILD=${PROJECT_VERSION_PATCH}
$<$<BOOL:ANDROID>:-DANDROID=TRUE>
-P "${CMAKE_SOURCE_DIR}/cmake/scripts/FindVersion.cmake"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
@@ -233,6 +238,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)
@@ -253,7 +259,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)
@@ -291,6 +297,11 @@ if(ANDROID)
# A bug in Android NDK r22: https://github.com/android/ndk/issues/1418
if(ANDROID_ABI STREQUAL "armeabi-v7a" OR ANDROID_ABI STREQUAL "x86")
set_source_files_properties(${CMAKE_SOURCE_DIR}/src/settings.cpp PROPERTIES COMPILE_FLAGS "-O0")
else()
if(NOT CMAKE_BUILD_TYPE STREQUAL Debug)
target_compile_options(openttd PRIVATE -flto=thin)
target_link_libraries(openttd -flto=thin)
endif()
endif()
endif(ANDROID)
@@ -319,7 +330,7 @@ if(EMSCRIPTEN)
add_definitions(-s DISABLE_EXCEPTION_CATCHING=0)
# Export functions to Javascript.
target_link_libraries(WASM::WASM INTERFACE "-s EXPORTED_FUNCTIONS='[\"_main\", \"_em_openttd_add_server\"]' -s EXTRA_EXPORTED_RUNTIME_METHODS='[\"cwrap\"]'")
target_link_libraries(WASM::WASM INTERFACE "-s EXPORTED_FUNCTIONS='[\"_main\"]' -s EXPORTED_RUNTIME_METHODS='[\"cwrap\"]'")
# Preload all the files we generate during build.
# As we do not compile with FreeType / FontConfig, we also have no way to
@@ -328,13 +339,20 @@ if(EMSCRIPTEN)
# the more languages you add the slower downloading becomes, we decided to
# only ship the English language.
target_link_libraries(WASM::WASM INTERFACE "--preload-file ${CMAKE_BINARY_DIR}/baseset@/baseset")
target_link_libraries(WASM::WASM INTERFACE "--preload-file ${CMAKE_BINARY_DIR}/lang/english.lng@/lang/english.lng")
target_link_libraries(WASM::WASM INTERFACE "--preload-file ${CMAKE_BINARY_DIR}/lang@/lang")
target_link_libraries(WASM::WASM INTERFACE "--preload-file ${CMAKE_SOURCE_DIR}/bin/ai@/ai")
target_link_libraries(WASM::WASM INTERFACE "--preload-file ${CMAKE_SOURCE_DIR}/bin/game@/game")
target_link_libraries(WASM::WASM INTERFACE "--preload-file ${CMAKE_SOURCE_DIR}/bin/scripts@/scripts")
target_link_libraries(WASM::WASM INTERFACE "--preload-file ${CMAKE_BINARY_DIR}/fonts@/fonts")
target_link_libraries(WASM::WASM INTERFACE "--preload-file ${CMAKE_BINARY_DIR}/icudt68l.dat@/usr/share/icu/68.2/icudt68l.dat")
#target_link_libraries(WASM::WASM INTERFACE "--preload-file ${CMAKE_BINARY_DIR}/timidity@/timidity")
# We use IDBFS for persistent storage.
target_link_libraries(WASM::WASM INTERFACE "-lidbfs.js")
# Socket proxy
target_link_libraries(WASM::WASM INTERFACE "-lwebsocket.js")
# Use custom pre-js and shell.html.
target_link_libraries(WASM::WASM INTERFACE "--pre-js ${CMAKE_SOURCE_DIR}/os/emscripten/pre.js")
target_link_libraries(WASM::WASM INTERFACE "--shell-file ${CMAKE_SOURCE_DIR}/os/emscripten/shell.html")

View File

@@ -2,26 +2,27 @@
## Required/optional libraries
The following libraries are used by OpenTTD for:
OpenTTD makes use of the following external libraries:
- zlib: (de)compressing of old (0.3.0-1.0.5) savegames, content downloads,
- (encouraged) zlib: (de)compressing of old (0.3.0-1.0.5) savegames, content downloads,
heightmaps
- liblzo2: (de)compressing of old (pre 0.3.0) savegames
- liblzma: (de)compressing of savegames (1.1.0 and later)
- libpng: making screenshots and loading heightmaps
- (encouraged) liblzma: (de)compressing of savegames (1.1.0 and later)
- (encouraged) libpng: making screenshots and loading heightmaps
- (optional) liblzo2: (de)compressing of old (pre 0.3.0) savegames
For Linux, the following additional libraries are used (for non-dedicated only):
- libSDL2: hardware access (video, sound, mouse)
- libfreetype: loading generic fonts and rendering them
- libfontconfig: searching for fonts, resolving font names to actual fonts
- libicu: handling of right-to-left scripts (e.g. Arabic and Persian) and
natural sorting of strings (Linux only)
- libSDL2: hardware access (video, sound, mouse) (not required for Windows or macOS)
natural sorting of strings
OpenTTD does not require any of the libraries to be present, but without
liblzma you cannot open most recent savegames and without zlib you cannot
open most older savegames or use the content downloading system.
Without libSDL/liballegro on non-Windows and non-macOS machines you have
no graphical user interface; you would be building a dedicated server.
## Windows:
## Windows
You need Microsoft Visual Studio 2017 or more recent.
@@ -77,6 +78,8 @@ files himself via the `ZERO_CHECK` project.
## All other platforms
Minimum required version of CMake is 3.9.
By default this produces a Debug build with assertations enabled.
This is a far slower build than release builds.
```bash
mkdir build
@@ -88,6 +91,25 @@ make
For more information on how to use CMake (including how to make Release builds),
we urge you to read [their excellent manual](https://cmake.org/cmake/help/latest/guide/user-interaction/index.html).
## CMake Options
Via CMake, several options can be influenced to get different types of
builds.
- `-DCMAKE_BUILD_TYPE=RelWithDebInfo`: build a release build. This is
significant faster than a debug build, but has far less useful information
in case of a crash.
- `-DOPTION_DEDICATED=ON`: build OpenTTD without a GUI. Useful if you are
running a headless server, as it requires less libraries to operate.
- `-DOPTION_USE_ASSERTS=OFF`: disable asserts. Use with care, as assert
statements capture early signs of trouble. Release builds have them
disabled by default.
- `-DOPTION_USE_THREADS=OFF`: disable the use of threads. This will block
the interface in many places, and in general gives a worse experience of
the game. Use with care.
- `-DOPTION_TOOLS_ONLY=ON`: only build tools like `strgen`. Does not build
the game itself. Useful for cross-compiling.
## Supported compilers
Every compiler that is supported by CMake and supports C++17, should be

View File

@@ -46,15 +46,13 @@ OpenTTD has a [community-maintained wiki](https://wiki.openttd.org/), including
OpenTTD has been ported to several platforms and operating systems.
The currently working platforms are:
The currently supported platforms are:
- FreeBSD (SDL)
- Haiku (SDL)
- Linux (SDL)
- macOS (universal) (Cocoa video and sound drivers)
- OpenBSD (SDL)
- OS/2 (SDL)
- Windows (Win32 GDI (faster) or SDL)
- Linux (SDL (OpenGL and non-OpenGL))
- macOS (universal) (Cocoa)
- Windows (Win32 GDI / OpenGL)
Other platforms may also work (in particular various BSD systems), but we don't actively test or maintain these.
### 1.3.1) Legacy support
Platforms, languages and compilers change.
@@ -79,9 +77,9 @@ For some platforms, you will need to refer to [the installation guide](https://w
The free data files, split into OpenGFX for graphics, OpenSFX for sounds and
OpenMSX for music can be found at:
- https://www.openttd.org/download-opengfx for OpenGFX
- https://www.openttd.org/download-opensfx for OpenSFX
- https://www.openttd.org/download-openmsx for OpenMSX
- https://www.openttd.org/downloads/opengfx-releases/ for OpenGFX
- https://www.openttd.org/downloads/opensfx-releases/ for OpenSFX
- https://www.openttd.org/downloads/openmsx-releases/ for OpenMSX
Please follow the readme of these packages about the installation procedure.
The Windows installer can optionally download and install these packages.

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,77 @@
1.11.2 (2021-05-03)
------------------------------------------------------------------------
Change: [Win32] Limit hardware accelerated video driver to OpenGL 3.2 or higher (#9077)
Change: More improvements to the GUI at different scales (#9075, #9102, #9107, #9133, #9174, #9183)
Fix: Query windows could be partially drawn (#9184)
Fix #9113: Crash when removing an airport that exists in an aircraft's orders (#9182)
Fix #9117: [Fluidsynth] Hang when changing song (#9181)
Fix: String validation could leave invalid UTF-8 encoded strings (#9096)
Fix: [Network] Out-of-bounds memory access with modified servers sending too short password salts (#9176)
Fix: Crash when extra viewport with zero height has sign in view (#9175)
Fix #9147: Crash when taking screenshots (#9169)
Fix #6598: [Network] Prevent crashes when (re)joining network game by falling back to main menu first (#9163)
Fix #9152: Screenshot success popup window was treated as an error (#9159)
Fix: Fast-forward stuttering when vsync is enabled (#9140)
Fix: [Network, Win32] Network errors were handled badly (#9116)
Fix: [Network] Savegame transfer could stall in rare cases (#9106)
Fix #9097: [NewGRF] Cargo initial payment variable was being truncated (#9098)
Fix: [NewGRF] Industry variable 66 and object variable 46 erroneously truncated the distance (#9088)
Fix: [NewGRF] Industry variables 65 and 66 ignored the parameter, and always used the north tile (#9088)
Fix: Do not include regression test AI in bundle (#9068, #9164)
Fix #9062: [Win32] Version in executable was not set to current release version (#9066, #9154)
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)
Feature: Auto-detect map height limit based on generated map (#8891)
Feature: Setting to indicate desert coverage for tropic climate and snow coverage for arctic climate (replaces snow line height) (#8891)
Add: Allow setting the highest mountain for heightmaps (#8891)
Change: Scale exported heightmaps to highest peak and inform the user of this value (#8891)
Change: Remove "maximum map height" from the New Game GUI (#8891)
Fix #8803: Only auto-remove signals when rail can be built (#8904)
Fix #8565: Stopped road vehicle displays a speed different than 0 (#8901)
Fix #8886: Don't try to resolve folders within tars named '.' (#8893)
Fix: Placing random trees in SE crashes the game (#8892)
Fix #8875: Filter string in station window breaks flow in user interface (#8885)
Fix #8871: [OpenGL] Initialize all buffers after resize and clear back buffer (#8877)
Fix: OpenGL performance with some AMD GPUs (#8876)
Fix: Recompute road/railtype availability after disabling the engine (#8872)
Fix: OSK layout not scaled for 2x or 4x GUI scale (#8868)
1.11.0-RC1 (2021-03-14)
------------------------------------------------------------------------
Feature: Option to (dis-)allow hardware accelerated video drivers (#8819)

View File

@@ -4,6 +4,7 @@
#
macro(compile_flags)
if(MSVC)
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
@@ -18,6 +19,7 @@ macro(compile_flags)
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

@@ -35,9 +35,9 @@ function(create_grf_command)
-DNFORENUM_EXECUTABLE=${NFORENUM_EXECUTABLE}
-DGRFCODEC_EXECUTABLE=${GRFCODEC_EXECUTABLE}
-P ${CMAKE_SOURCE_DIR}/cmake/scripts/CreateGRF.cmake
MAIN_DEPENDENCY ${GRF_NFO_SOURCE_FILES}
MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/cmake/scripts/CreateGRF.cmake
DEPENDS ${GRF_PNG_BINARY_FILES}
${CMAKE_SOURCE_DIR}/cmake/scripts/CreateGRF.cmake
${GRF_NFO_SOURCE_FILES}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
COMMENT "Generating ${GRF_SOURCE_FOLDER_NAME}.grf"
)

View File

@@ -27,11 +27,13 @@ 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)
COMPONENT language_files
REGEX "ai/[^\.]+$" EXCLUDE # Ignore subdirs in ai dir
)
install(FILES
${CMAKE_SOURCE_DIR}/COPYING.md

View File

@@ -56,7 +56,7 @@ function(set_options)
option(OPTION_DEDICATED "Build dedicated server only (no GUI)" OFF)
option(OPTION_INSTALL_FHS "Install with Filesystem Hierarchy Standard folders" ${DEFAULT_OPTION_INSTALL_FHS})
option(OPTION_USE_ASSERTS "Use assertions; leave enabled for nightlies, betas, and RCs" ON)
option(OPTION_USE_ASSERTS "Use assertions; leave enabled for nightlies, betas, and RCs" OFF)
if(EMSCRIPTEN)
# Although pthreads is supported, it is not in a way yet that is
# useful for us.

View File

@@ -39,6 +39,20 @@ foreach(NFO_LINE IN LISTS NFO_LINES)
endif()
endforeach()
execute_process(COMMAND ${NFORENUM_EXECUTABLE} -s sprites/${GRF_SOURCE_FOLDER_NAME}.nfo)
execute_process(COMMAND ${GRFCODEC_EXECUTABLE} -n -s -e -p1 ${GRF_SOURCE_FOLDER_NAME}.grf)
execute_process(COMMAND ${NFORENUM_EXECUTABLE} -s sprites/${GRF_SOURCE_FOLDER_NAME}.nfo RESULT_VARIABLE RESULT)
if(RESULT)
if(NOT RESULT MATCHES "^[0-9]*$")
message(FATAL_ERROR "Failed to run NFORenum (${RESULT}), please check NFORENUM_EXECUTABLE variable")
endif()
message(FATAL_ERROR "NFORenum failed")
endif()
execute_process(COMMAND ${GRFCODEC_EXECUTABLE} -n -s -e -p1 ${GRF_SOURCE_FOLDER_NAME}.grf RESULT_VARIABLE RESULT)
if(RESULT)
if(NOT RESULT MATCHES "^[0-9]*$")
message(FATAL_ERROR "Failed to run GRFCodec (${RESULT}), please check GRFCODEC_EXECUTABLE variable")
endif()
message(FATAL_ERROR "GRFCodec failed")
endif()
execute_process(COMMAND ${CMAKE_COMMAND} -E copy ${GRF_SOURCE_FOLDER_NAME}.grf ${GRF_BINARY_FILE})

View File

@@ -1,5 +1,15 @@
cmake_minimum_required(VERSION 3.5)
if(NOT REV_MAJOR)
set(REV_MAJOR 0)
endif()
if(NOT REV_MINOR)
set(REV_MINOR 0)
endif()
if(NOT REV_BUILD)
set(REV_BUILD 0)
endif()
#
# Finds the current version of the current folder.
#
@@ -83,7 +93,7 @@ if(GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git" AND NOT ANDROID)
set(REV_ISTAG 1)
string(REGEX REPLACE "^[0-9.]+$" "" STABLETAG "${TAG}")
if(NOT STABLETAG STREQUAL "")
if(STABLETAG STREQUAL "")
set(REV_ISSTABLETAG 1)
else()
set(REV_ISSTABLETAG 0)

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

@@ -1,6 +1,6 @@
OpenTTD's known bugs
Last updated: 2021-03-14
Release version: 1.11.0-RC1
Last updated: 2021-04-01
Release version: 1.11.0
------------------------------------------------------------------------

Binary file not shown.

13
os/emscripten/deploy-webapp.sh Executable file
View File

@@ -0,0 +1,13 @@
#!/bin/sh
INSTALL_PATH=`pwd`/../../../openttd-touch-webapp
MESSAGE="`git log --format=%B -n 1 HEAD`"
[ -n "$1" ] && MESSAGE="$1"
export NO_CLEAN=1
./emscripten-build.sh release $INSTALL_PATH || exit 1
cd $INSTALL_PATH || exit 1
git commit -a -m "$MESSAGE" && git push

View File

@@ -0,0 +1,3 @@
#!/bin/bash
./emscripten-build.sh debug

281
os/emscripten/emscripten-build.sh Executable file
View File

@@ -0,0 +1,281 @@
#!/bin/bash
BUILD_TYPE=Release
[ "$1" = "debug" ] && BUILD_TYPE=Debug
[ "$1" = "release" ] && BUILD_TYPE=Release
OPT="-O3 -flto=thin"
[ "$BUILD_TYPE" = "Debug" ] && OPT="-g -O1"
INSTALL_PATH=/var/www/html/
[ -n "$2" ] && INSTALL_PATH="$2"
cd ../..
[ -z "`which emsdk`" ] && export PATH=`pwd`/../emsdk:$PATH
[ -z "`which emsdk`" ] && { echo "Put emsdk into your PATH"; exit 1 ; }
[ -z "$PATH_EMSDK" ] && PATH_EMSDK="`which emsdk | xargs dirname`"
source "$PATH_EMSDK/emsdk_env.sh"
mkdir -p build-wasm-$BUILD_TYPE
cd build-wasm-$BUILD_TYPE
# ===== Build dependency libraries =====
embuilder build liblzma ogg vorbis zlib sdl2 freetype icu harfbuzz
embuilder build --lto liblzma ogg vorbis zlib sdl2 freetype icu harfbuzz
autoreconf -V || exit 1 # No autotools installed
[ -e icu-le-hb-1.0.3/build-wasm/lib/libicu-le-hb.a ] || {
wget -nc https://github.com/harfbuzz/icu-le-hb/archive/refs/tags/1.0.3.tar.gz || exit 1
tar xvf 1.0.3.tar.gz || exit 1
cd icu-le-hb-1.0.3
autoreconf -fi
emconfigure ./configure --prefix=`pwd`/build-wasm \
--disable-shared --enable-static \
HARFBUZZ_CFLAGS="-I`em-config EMSCRIPTEN_ROOT`/cache/sysroot/include/harfbuzz" \
HARFBUZZ_LIBS="-lharfbuzz" \
ICU_CFLAGS="-I`em-config EMSCRIPTEN_ROOT`/cache/sysroot/include -DU_DEFINE_FALSE_AND_TRUE=1" \
ICU_LIBS="-licuuc" \
CFLAGS="$OPT" \
LDFLAGS="$OPT" \
|| exit 1
make -j8 V=1 || exit 1
make install || exit 1
cd ..
}
# ===== Compile libicu twice, because libiculx requires icu-le-hb, which requires libicuuc =====
# Same libicu version as in emscripten ports and with the same compilation flags taken from $PATH_EMSDK/upstream/emscripten/tools/ports/icu.py
# We cannot use zip archive from emscripten ports, because it has Windows line endings in configure script and it won't run
# CFLAGS="-DU_USING_ICU_NAMESPACE=0 \
# -DU_NO_DEFAULT_INCLUDE_UTF_HEADERS=1 \
# -DUNISTR_FROM_CHAR_EXPLICIT=explicit \
# -DUNISTR_FROM_STRING_EXPLICIT=explicit \
# -DU_STATIC_IMPLEMENTATION"
[ -e icu/build-wasm/lib/libiculx.a ] || {
wget -nc https://github.com/unicode-org/icu/releases/download/release-68-2/icu4c-68_2-src.tgz || exit 1
tar xvf icu4c-68_2-src.tgz || exit 1
cd icu/source || exit 1
autoreconf -fi
# Cross-compile host tools
[ -d cross ] || {
mkdir -p cross
cd cross
../configure || exit 1
make -j8 || exit 1
cd ..
}
emconfigure ./configure --prefix=`pwd`/../build-wasm \
--disable-shared --enable-static \
--enable-layoutex --disable-extras \
--disable-tools --disable-tests --disable-samples \
--with-cross-build=`pwd`/cross \
--with-data-packaging=archive \
--datadir=/usr/share \
ICULEHB_CFLAGS="-I`pwd`/../../icu-le-hb-1.0.3/build-wasm/include/icu-le-hb" \
ICULEHB_LIBS="-L`pwd`/../../icu-le-hb-1.0.3/build-wasm/lib -licu-le-hb" \
CFLAGS="$OPT" \
LDFLAGS="$OPT" \
|| exit 1
make -j8 || exit 1
sed -i "s@^datadir *= *.*@datadir = `pwd`/../build-wasm/share@" icudefs.mk || exit 1
make install || exit 1
cd ../..
}
[ -e libtimidity-0.2.7/build-wasm/lib/libtimidity.a ] || {
wget -nc https://sourceforge.net/projects/libtimidity/files/libtimidity/0.2.7/libtimidity-0.2.7.tar.gz || exit 1
tar xvf libtimidity-0.2.7.tar.gz || exit 1
cd libtimidity-0.2.7 || exit 1
autoreconf -fi
emconfigure ./configure --prefix=`pwd`/build-wasm \
--disable-shared --enable-static \
--disable-ao --disable-aotest \
CFLAGS="$OPT" \
LDFLAGS="$OPT" \
--with-timidity-cfg="/timidity/timidity.cfg" || exit 1
make -j8 || exit 1
make install || exit 1
cd ..
}
[ -e expat-2.3.0/build-wasm/lib/libexpat.a ] || {
wget -nc https://github.com/libexpat/libexpat/releases/download/R_2_3_0/expat-2.3.0.tar.gz || exit 1
tar xvf expat-2.3.0.tar.gz || exit 1
cd expat-2.3.0
autoreconf -fi
emconfigure ./configure --prefix=`pwd`/build-wasm \
--disable-shared --enable-static \
--without-xmlwf --without-docbook --without-examples --without-tests \
CFLAGS="$OPT" \
LDFLAGS="$OPT" \
|| exit 1
make -j8 || exit 1
make install || exit 1
cd ..
}
[ -e libuuid-1.0.3/build-wasm/lib/libuuid.a ] || {
wget -nc https://sourceforge.net/projects/libuuid/files/libuuid-1.0.3.tar.gz || exit 1
tar xvf libuuid-1.0.3.tar.gz || exit 1
cd libuuid-1.0.3
autoreconf -fi
emconfigure ./configure --prefix=`pwd`/build-wasm \
--disable-shared --enable-static \
CFLAGS="$OPT" \
LDFLAGS="$OPT" \
|| exit 1
make -j8 || exit 1
make install || exit 1
cd ..
}
# ===== Fontconfig is convoluted shit =====
[ -e fontconfig-2.13.1/build-wasm/lib/libfontconfig.a ] || {
wget -nc https://www.freedesktop.org/software/fontconfig/release/fontconfig-2.13.1.tar.gz || exit 1
tar xvf fontconfig-2.13.1.tar.gz || exit 1
cd fontconfig-2.13.1
# Tests do not compile, disable them
#sed -i 's/po-conf test/po-conf/' Makefile.am
patch -p1 < ../../os/emscripten/fontconfig-2.13.1.patch || exit 1
autoreconf -fi
emconfigure ./configure --prefix=`pwd`/build-wasm \
--disable-shared --enable-static \
--disable-docs cross_compiling=yes \
ac_cv_func_fstatfs=no ac_cv_func_fstatvfs=no \
FREETYPE_CFLAGS="-I`em-config EMSCRIPTEN_ROOT`/cache/sysroot/include/freetype2 \
-I`em-config EMSCRIPTEN_ROOT`/cache/sysroot/include/freetype2/freetype" \
FREETYPE_LIBS="-lfreetype" \
EXPAT_CFLAGS="-I`pwd`/../expat-2.3.0/build-wasm/include" \
EXPAT_LIBS="-L`pwd`/../expat-2.3.0/build-wasm/lib -lexpat" \
UUID_CFLAGS="-I`pwd`/../libuuid-1.0.3/build-wasm/include" \
UUID_LIBS="-L`pwd`/../libuuid-1.0.3/build-wasm/lib -luuid" \
CFLAGS="$OPT" \
LDFLAGS="$OPT" \
|| exit 1
make -j8 V=1 || exit 1
make install || exit 1
cd ..
}
# -s EXPORTED_FUNCTIONS=['_main','_memchr']
[ -e lzo-2.10/build-wasm/lib/liblzo2.a ] || {
wget -nc https://www.oberhumer.com/opensource/lzo/download/lzo-2.10.tar.gz || exit 1
tar xvf lzo-2.10.tar.gz || exit 1
cd lzo-2.10
autoreconf -fi
emconfigure ./configure --prefix=`pwd`/build-wasm \
--disable-shared --enable-static \
--disable-asm \
CFLAGS="$OPT" \
LDFLAGS="$OPT -s EXPORTED_FUNCTIONS=['_main','_memchr']" \
|| exit 1
make -j8 || exit 1
make install || exit 1
cd ..
}
# ===== Download data files =====
mkdir -p baseset
[ -e baseset/opengfx-0.6.1.tar ] || {
wget -nc https://cdn.openttd.org/opengfx-releases/0.6.1/opengfx-0.6.1-all.zip || exit 1
unzip opengfx-0.6.1-all.zip || exit 1
rm opengfx-0.6.1-all.zip
mv opengfx-0.6.1.tar baseset/ || exit 1
}
[ -e baseset/opensfx-1.0.1.tar ] || {
wget -nc https://cdn.openttd.org/opensfx-releases/1.0.1/opensfx-1.0.1-all.zip || exit 1
unzip opensfx-1.0.1-all.zip || exit 1
rm opensfx-1.0.1-all.zip
mv opensfx-1.0.1.tar baseset/ || exit 1
}
[ -e baseset/openmsx-0.4.0 ] || {
wget -nc https://cdn.openttd.org/openmsx-releases/0.4.0/openmsx-0.4.0-all.zip || exit 1
unzip openmsx-0.4.0-all.zip || exit 1
rm openmsx-0.4.0-all.zip
cd baseset || exit 1
tar xvf ../openmsx-0.4.0.tar || exit 1
cd ..
rm openmsx-0.4.0.tar
}
[ -e icudt68l.dat ] || {
cp -f "icu/source/data/in/icudt68l.dat" ./ || exit 1
}
[ -e fonts/fonts.conf ] || {
wget -nc https://sourceforge.net/projects/libsdl-android/files/openttd-fonts.zip || exit 1
unzip openttd-fonts.zip || exit 1
rm openttd-fonts.zip
sed 's@/usr/share/fonts@/fonts@g' fontconfig-2.13.1/build-wasm/etc/fonts/fonts.conf > fonts/fonts.conf || exit 1
}
#[ -e TimGM6mb.sf2 ] || {
# wget -nc 'https://sourceforge.net/p/mscore/code/HEAD/tree/trunk/mscore/share/sound/TimGM6mb.sf2?format=raw' -O TimGM6mb.sf2 || exit 1
#}
#[ -e timidity/timidity.cfg ] || {
# wget -nc https://sourceforge.net/projects/libsdl-android/files/timidity.zip || exit 1
# unzip timidity.zip
#}
# ===== Build OpenTTD code generation tools =====
[ -e build-host ] || {
rm -rf build-host
mkdir -p build-host
cd build-host
cmake ../.. -DOPTION_TOOLS_ONLY=ON || exit 1
make -j8 tools || exit 1
cd ..
}
# ===== Build OpenTTD itself =====
[ -e Makefile ] || emcmake cmake .. \
-DHOST_BINARY_DIR=$(pwd)/build-host -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DOPTION_USE_ASSERTS=OFF \
-DFREETYPE_INCLUDE_DIRS=`em-config EMSCRIPTEN_ROOT`/cache/sysroot/include/freetype2 \
-DFREETYPE_LIBRARY=-lfreetype \
-DFontconfig_INCLUDE_DIR=`pwd`/fontconfig-2.13.1/build-wasm/include \
-DFontconfig_LIBRARY=`pwd`/fontconfig-2.13.1/build-wasm/lib/libfontconfig.a \
-DLZO_INCLUDE_DIR=`pwd`/lzo-2.10/build-wasm/include \
-DLZO_LIBRARY=`pwd`/lzo-2.10/build-wasm/lib/liblzo2.a \
-DPC_ICU_i18n_FOUND=YES \
-DPC_ICU_i18n_INCLUDE_DIRS=`pwd`/icu/build-wasm/include \
-DICU_i18n_LIBRARY=`pwd`/icu/build-wasm/lib/libicui18n.a \
-DPC_ICU_lx_FOUND=YES \
-DPC_ICU_lx_INCLUDE_DIRS=`pwd`/icu-le-hb-1.0.3/build-wasm/include/icu-le-hb \
-DICU_lx_LIBRARY=`pwd`/icu/build-wasm/lib/libiculx.a \
-DLZO_LIBRARY=`pwd`/lzo-2.10/build-wasm/lib/liblzo2.a \
-DCMAKE_CXX_FLAGS="-sUSE_FREETYPE=1" \
-DCMAKE_EXE_LINKER_FLAGS="-sUSE_FREETYPE=1 \
-L`pwd`/icu-le-hb-1.0.3/build-wasm/lib -licu-le-hb -lharfbuzz \
-L`pwd`/icu/build-wasm/lib -licudata -licuuc \
-L`pwd`/expat-2.3.0/build-wasm/lib -lexpat \
-L`pwd`/libuuid-1.0.3/build-wasm/lib -luuid" \
|| exit 1
# -I`em-config EMSCRIPTEN_ROOT`/cache/sysroot/include/freetype2/freetype
# -DTimidity_LIBRARY=`pwd`/libtimidity-0.2.7/build-wasm/lib/libtimidity.a \
# -DTimidity_INCLUDE_DIR=`pwd`/libtimidity-0.2.7/build-wasm/include \
[ -z "$NO_CLEAN" ] && rm -f openttd.html
emmake make -j8 VERBOSE=1 || exit 1
cp -f *.html *.js *.data *.wasm ../media/openttd.256.png ../os/emscripten/openttd.webapp "$INSTALL_PATH"

View File

@@ -14,7 +14,7 @@ diff --git a/embuilder.py b/embuilder.py
index 818262190ed..ab7d5adb7b2 100755
--- a/embuilder.py
+++ b/embuilder.py
@@ -60,6 +60,7 @@
@@ -69,6 +69,7 @@
'harfbuzz',
'icu',
'libjpeg',
@@ -22,14 +22,14 @@ index 818262190ed..ab7d5adb7b2 100755
'libpng',
'ogg',
'regal',
@@ -197,6 +198,8 @@ def main():
build_port('ogg', libname('libogg'))
@@ -203,6 +204,8 @@
build_port('giflib')
elif what == 'libjpeg':
build_port('libjpeg', libname('libjpeg'))
build_port('libjpeg')
+ elif what == 'liblzma':
+ build_port('liblzma', libname('liblzma'))
+ build_port('liblzma')
elif what == 'libpng':
build_port('libpng', libname('libpng'))
build_port('libpng')
elif what == 'sdl2':
diff --git a/src/settings.js b/src/settings.js
index 61cd98939ba..be6fcb678c6 100644
@@ -50,7 +50,7 @@ new file mode 100644
index 00000000000..e9567ef36ff
--- /dev/null
+++ b/tools/ports/liblzma.py
@@ -0,0 +1,160 @@
@@ -0,0 +1,159 @@
+# Copyright 2020 The Emscripten Authors. All rights reserved.
+# Emscripten is available under two separate licenses, the MIT license and the
+# University of Illinois/NCSA Open Source License. Both these licenses can be
@@ -68,10 +68,10 @@ index 00000000000..e9567ef36ff
+
+
+def get(ports, settings, shared):
+ libname = ports.get_lib_name('liblzma')
+ libname = 'liblzma.a'
+ ports.fetch_project('liblzma', 'https://tukaani.org/xz/xz-' + VERSION + '.tar.gz', 'xz-' + VERSION, sha512hash=HASH)
+
+ def create():
+ def create(final):
+ ports.clear_project_build('liblzma')
+
+ source_path = os.path.join(ports.get_dir(), 'liblzma', 'xz-' + VERSION)
@@ -90,7 +90,6 @@ index 00000000000..e9567ef36ff
+
+ open(os.path.join(dest_path, 'src', 'config.h'), 'w').write(config_h)
+
+ final = os.path.join(dest_path, libname)
+ include_dirs = [os.path.join(dest_path, 'src', 'liblzma', p) for p in include_dirs_rel]
+ ports.build_port(os.path.join(dest_path, 'src'), final, flags=build_flags, exclude_dirs=exclude_dirs, exclude_files=exclude_files, includes=include_dirs)
+
@@ -99,11 +98,11 @@ index 00000000000..e9567ef36ff
+
+ return final
+
+ return [shared.Cache.get(libname, create, what='port')]
+ return [shared.Cache.get_lib(libname, create, what='port')]
+
+
+def clear(ports, settings, shared):
+ shared.Cache.erase_file(ports.get_lib_name('liblzma'))
+ shared.Cache.erase_file('liblzma.a')
+
+
+def process_args(ports):

View File

@@ -0,0 +1,13 @@
Only in fontconfig-2.13.1-new: Makefile
diff -u -r fontconfig-2.13.1/Makefile.am fontconfig-2.13.1-new/Makefile.am
--- fontconfig-2.13.1/Makefile.am 2018-06-05 13:36:38.000000000 +0300
+++ fontconfig-2.13.1-new/Makefile.am 2021-05-05 22:32:49.230804234 +0300
@@ -24,7 +24,7 @@
SUBDIRS=fontconfig fc-case fc-lang src \
fc-cache fc-cat fc-conflist fc-list fc-match \
fc-pattern fc-query fc-scan fc-validate conf.d \
- its po po-conf test
+ its po po-conf
if ENABLE_DOCS
SUBDIRS += doc
endif

View File

@@ -0,0 +1,16 @@
{
"name": "OpenTTD",
"short_name": "OpenTTD",
"description": "Open-source transport business simulation game",
"display": "fullscreen",
"orientation": "landscape",
"icons": [
{
"src": "openttd.256.png",
"sizes": "256x256",
"type": "image/png"
}
],
"start_url": "openttd.html",
"background_color": "green"
}

View File

@@ -1,4 +1,4 @@
Module.arguments.push('-mnull', '-snull', '-vsdl:relative_mode');
Module.arguments.push('-d1');
Module['websocket'] = { url: function(host, port, proto) {
/* openttd.org hosts a WebSocket proxy for the content service. */
if (host == "content.openttd.org" && port == 3978 && proto == "tcp") {
@@ -13,16 +13,20 @@ Module['websocket'] = { url: function(host, port, proto) {
} };
Module.preRun.push(function() {
personal_dir = '/home/web_user/.openttd';
content_download_dir = personal_dir + '/content_download'
const personal_dir = '/home/web_user/.local/share/openttd';
const content_download_dir = personal_dir + '/content_download'
/* Because of the "-c" above, all user-data is stored in /user_data. */
FS.mkdir(personal_dir);
FS.mount(IDBFS, {}, personal_dir);
FS.mount(IDBFS, {}, '/home/web_user');
Module.addRunDependency('syncfs');
FS.syncfs(true, function (err) {
/* FS.mkdir() tends to fail if parent folders do not exist. */
if (!FS.analyzePath(personal_dir).exists) {
FS.mkdir('/home/web_user/.local');
FS.mkdir('/home/web_user/.local/share');
FS.mkdir(personal_dir);
}
if (!FS.analyzePath(content_download_dir).exists) {
FS.mkdir(content_download_dir);
}
@@ -31,7 +35,7 @@ Module.preRun.push(function() {
}
/* Check if the OpenGFX baseset is already downloaded. */
if (!FS.analyzePath(content_download_dir + '/baseset/opengfx-0.6.0.tar').exists) {
if (false && !FS.analyzePath(content_download_dir + '/baseset/opengfx-0.6.0.tar').exists) {
window.openttd_downloaded_opengfx = true;
FS.createPreloadedFile(content_download_dir + '/baseset', 'opengfx-0.6.0.tar', 'https://installer.cdn.openttd.org/emscripten/opengfx-0.6.0.tar', true, true);
} else {
@@ -64,13 +68,6 @@ Module.preRun.push(function() {
Module.onAbort();
}
window.openttd_server_list = function() {
add_server = Module.cwrap("em_openttd_add_server", null, ["string", "number"]);
/* Add servers that support WebSocket here. Example:
* add_server("localhost", 3979); */
}
var leftButtonDown = false;
document.addEventListener("mousedown", e => {
if (e.button == 0) {

View File

@@ -3,7 +3,10 @@
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>OpenTTD</title>
<link rel="manifest" href="openttd.webapp">
<link rel="icon" href="openttd.256.png">
<style>
body {
font-family: Tahoma, Arial, Helvetica, sans-serif;
@@ -79,6 +82,22 @@
padding: 4px 4px;
}
div.textinput {
position: absolute;
width: 100%;
z-index: 4;
display: "none";
}
#textinputbox {
width: 100%;
font-size: xx-large;
}
#textinputbutton {
width: 100%;
}
canvas.emscripten {
border: 0px none;
height: 100%;
@@ -90,6 +109,9 @@
</head>
<body>
<div class="background">
<a href="https://hits.seeyoufarm.com">
<img src="https://hits.seeyoufarm.com/api/count/incr/badge.svg?url=https%3A%2F%2Fpelya.github.io%2Fopenttd-touch-webapp&count_bg=%2379C83D&title_bg=%23555555&icon=&icon_color=%23E7E7E7&title=hits&edge_flat=false"/>
</a>
<div id="box">
<div id="title">
Loading ...
@@ -103,6 +125,11 @@
Warning: savegames are stored in the Indexed DB of your browser.<br/>Your browser can delete savegames without notice!
</div>
</div>
<div class="textinput" id="textinput">
<input type="textinput" id="textinputbox" value="" onfocusout="Module.finishTextInput();" tabindex=1></input>
<br/>
<input type="submit" id="textinputbutton" value="OK" onclick="Module.finishTextInput();" ></input>
</div>
<div>
<canvas class="emscripten" id="canvas" oncontextmenu="event.preventDefault()" tabindex=-1></canvas>
</div>
@@ -174,6 +201,8 @@
document.getElementById("title").innerHTML = "Thank you for playing!";
document.getElementById("message").innerHTML = "We hope you enjoyed OpenTTD!<br/><br/>Reload your browser to restart the game.";
FS.syncfs(false, function (err) { window.close('','_parent',''); });
},
onAbort: function() {
@@ -193,8 +222,52 @@
document.getElementById("filesystem").style.display = "none";
}, 300);
}, 10000);
},
textInputValue: null,
startTextInput: function(text) {
if (document.getElementById("textinput").style.display != "none") {
//Module.print("Text input already started");
return;
}
//Module.print("Start text input!");
Module.textInputValue = null;
document.getElementById("textinput").style.display = "block";
document.getElementById("textinputbox").value = text;
document.getElementById("textinputbox").focus();
document.getElementById("textinputbox").onkeyup = function(evt) {
if (evt.key === "Enter") {
Module.finishTextInput();
}
};
},
getTextInput: function() {
if (Module.textInputValue !== null) {
var value = Module.textInputValue;
Module.textInputValue = null;
return value;
}
return null;
},
finishTextInput: function() {
if (document.getElementById("textinput").style.display == "none") {
//Module.print("Text input not started");
return;
}
//Module.print("Text input finished!");
Module.textInputValue = document.getElementById("textinputbox").value;
Module.print(Module.textInputValue);
document.getElementById("textinput").style.display = "none";
document.getElementById("canvas").focus();
},
};
document.getElementById("textinput").style.display = "none"; // It's not hiding with CSS
document.getElementById("canvas").focus();
window.onerror = function() {
Module.onAbort();

View File

@@ -7,6 +7,7 @@ class Regression extends AIInfo {
function GetAPIVersion() { return "1.11"; }
function GetDate() { return "2007-03-18"; }
function CreateInstance() { return "Regression"; }
function UseAsRandomAI() { return false; }
}
RegisterAI(Regression());

View File

@@ -7,6 +7,7 @@ class StationList extends AIInfo {
function GetAPIVersion() { return "1.11"; }
function GetDate() { return "2007-03-18"; }
function CreateInstance() { return "StationList"; }
function UseAsRandomAI() { return false; }
}
RegisterAI(StationList());

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

@@ -836,6 +836,7 @@ public:
SQInteger val = _fs->PopTarget();
SQInteger key = _fs->PopTarget();
SQInteger attrs = hasattrs ? _fs->PopTarget():-1;
(void)attrs; // assert only
assert((hasattrs && attrs == key-1) || !hasattrs);
unsigned char flags = (hasattrs?NEW_SLOT_ATTRIBUTES_FLAG:0)|(isstatic?NEW_SLOT_STATIC_FLAG:0);
SQInteger table = _fs->TopTarget(); //<<BECAUSE OF THIS NO COMMON EMIT FUNC IS POSSIBLE

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()
for(SQInteger i = 0;i < len; i++) SQSharedState::EnqueueMarkObject(_values[i], queue);
}
void SQTable::Mark(SQCollectable **chain)
void SQTable::EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue)
{
START_MARK()
if(_delegate) _delegate->Mark(chain);
if(_delegate) queue.Enqueue(_delegate);
SQInteger len = _numofnodes;
for(SQInteger i = 0; i < len; i++){
SQSharedState::MarkObject(_nodes[i].key, chain);
SQSharedState::MarkObject(_nodes[i].val, chain);
SQSharedState::EnqueueMarkObject(_nodes[i].key, queue);
SQSharedState::EnqueueMarkObject(_nodes[i].val, queue);
}
END_MARK()
}
void SQClass::Mark(SQCollectable **chain)
void SQClass::EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue)
{
START_MARK()
_members->Mark(chain);
if(_base) _base->Mark(chain);
SQSharedState::MarkObject(_attributes, chain);
queue.Enqueue(_members);
if(_base) queue.Enqueue(_base);
SQSharedState::EnqueueMarkObject(_attributes, queue);
for(SQUnsignedInteger i =0; i< _defaultvalues.size(); i++) {
SQSharedState::MarkObject(_defaultvalues[i].val, chain);
SQSharedState::MarkObject(_defaultvalues[i].attrs, chain);
SQSharedState::EnqueueMarkObject(_defaultvalues[i].val, queue);
SQSharedState::EnqueueMarkObject(_defaultvalues[i].attrs, queue);
}
for(SQUnsignedInteger j =0; j< _methods.size(); j++) {
SQSharedState::MarkObject(_methods[j].val, chain);
SQSharedState::MarkObject(_methods[j].attrs, chain);
SQSharedState::EnqueueMarkObject(_methods[j].val, queue);
SQSharedState::EnqueueMarkObject(_methods[j].attrs, queue);
}
for(SQUnsignedInteger k =0; k< _metamethods.size(); k++) {
SQSharedState::MarkObject(_metamethods[k], chain);
SQSharedState::EnqueueMarkObject(_metamethods[k], queue);
}
END_MARK()
}
void SQInstance::Mark(SQCollectable **chain)
void SQInstance::EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue)
{
START_MARK()
_class->Mark(chain);
queue.Enqueue(_class);
SQUnsignedInteger nvalues = _class->_defaultvalues.size();
for(SQUnsignedInteger i =0; i< nvalues; i++) {
SQSharedState::MarkObject(_values[i], chain);
SQSharedState::EnqueueMarkObject(_values[i], queue);
}
END_MARK()
}
void SQGenerator::Mark(SQCollectable **chain)
void SQGenerator::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()
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 SQClosure::Mark(SQCollectable **chain)
void SQClosure::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 < _outervalues.size(); i++) SQSharedState::EnqueueMarkObject(_outervalues[i], queue);
for(SQUnsignedInteger i = 0; i < _defaultparams.size(); i++) SQSharedState::EnqueueMarkObject(_defaultparams[i], queue);
}
void SQNativeClosure::Mark(SQCollectable **chain)
void SQNativeClosure::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);
}
void SQUserData::Mark(SQCollectable **chain){
START_MARK()
if(_delegate) _delegate->Mark(chain);
END_MARK()
void SQUserData::EnqueueMarkObjectForChildren(SQGCMarkerQueue &queue){
if(_delegate) queue.Enqueue(_delegate);
}
void SQCollectable::UnMark() { _uiRef&=~MARK_FLAG; }

View File

@@ -2,7 +2,7 @@
#ifndef _SQOBJECT_H_
#define _SQOBJECT_H_
#include <limits>
#include <vector>
#include "squtils.h"
#define SQ_CLOSURESTREAM_HEAD (('S'<<24)|('Q'<<16)|('I'<<8)|('R'))
@@ -345,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,25 +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);
SQGCMarkerQueue queue;
queue.Enqueue(vms);
#ifdef WITH_ASSERT
SQInteger x = _table(_thread(_root_vm)->_roottable)->CountUsed();
_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);
#endif
_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;
@@ -289,8 +329,10 @@ SQInteger SQSharedState::CollectGarbage(SQVM *vm)
t = t->_next;
}
_gc_chain = tchain;
#ifdef WITH_ASSERT
SQInteger z = _table(_thread(_root_vm)->_roottable)->CountUsed();
assert(z == x);
#endif
return n;
}
#endif
@@ -353,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

@@ -1471,8 +1471,8 @@ 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)
{
#ifdef _DEBUG
SQInteger prevstackbase = _stackbase;
#ifdef WITH_ASSERT
SQInteger prevstackbase = _stackbase;
#endif
switch(type(closure)) {
case OT_CLOSURE: {
@@ -1484,7 +1484,7 @@ SQInteger prevstackbase = _stackbase;
return ret;
}
break;
case OT_NATIVECLOSURE:{
case OT_NATIVECLOSURE: {
bool suspend;
return CallNative(_nativeclosure(closure), nparams, stackbase, outres,suspend);
@@ -1504,7 +1504,7 @@ SQInteger prevstackbase = _stackbase;
default:
return false;
}
#ifdef _DEBUG
#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

@@ -111,7 +111,7 @@ struct AIListWindow : public Window {
{
if (widget == WID_AIL_LIST) {
this->line_height = FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM;
this->line_height = GetMinSizing(NWST_STEP, this->line_height);
this->line_height = GetMinButtonSize(this->line_height);
resize->width = 1;
resize->height = this->line_height;
@@ -352,7 +352,7 @@ struct AISettingsWindow : public Window {
{
if (widget == WID_AIS_BACKGROUND) {
this->line_height = std::max(SETTING_BUTTON_HEIGHT, FONT_HEIGHT_NORMAL) + WD_MATRIX_TOP + WD_MATRIX_BOTTOM;
this->line_height = GetMinSizing(NWST_STEP, this->line_height);
this->line_height = GetMinButtonSize(this->line_height);
resize->width = 1;
resize->height = this->line_height;
@@ -703,19 +703,19 @@ static const NWidgetPart _nested_ai_config_widgets[] = {
EndContainer(),
NWidget(NWID_SPACER), SetMinimalSize(0, 9),
NWidget(WWT_FRAME, COLOUR_MAUVE), SetDataTip(STR_AI_CONFIG_GAMESCRIPT, STR_NULL), SetPadding(0, 5, 4, 5),
NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_AIC_GAMELIST), SetSizingType(NWST_STEP), SetMinimalSize(288, 14), SetFill(1, 0), SetMatrixDataTip(1, 1, STR_AI_CONFIG_GAMELIST_TOOLTIP),
NWidget(WWT_MATRIX, COLOUR_MAUVE, WID_AIC_GAMELIST), SetSizingType(NWST_BUTTON), 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),
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(),
EndContainer(),
EndContainer(),
@@ -782,12 +782,12 @@ struct AIConfigWindow : public Window {
{
switch (widget) {
case WID_AIC_GAMELIST:
this->line_height = GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM);
this->line_height = GetMinButtonSize(FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM);
size->height = this->line_height;
break;
case WID_AIC_LIST:
this->line_height = GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM);
this->line_height = GetMinButtonSize(FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM);
size->height = 8 * this->line_height;
break;
@@ -1109,7 +1109,7 @@ struct AIDebugWindow : public Window {
void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *fill, Dimension *resize) override
{
if (widget == WID_AID_LOG_PANEL) {
resize->height = GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL);
resize->height = GetMinButtonSize(FONT_HEIGHT_NORMAL + WD_PAR_VSEP_NORMAL);
size->height = 14 * resize->height + this->top_offset + this->bottom_offset;
}
}
@@ -1126,7 +1126,7 @@ struct AIDebugWindow : public Window {
bool dirty = false;
Dimension d = GetSpriteSize(SPR_COMPANY_ICON);
uint offset_y = Center(0, GetMinSizing(NWST_STEP, d.height + WD_MATRIX_TOP + WD_MATRIX_BOTTOM + 1), d.height);
uint offset_y = Center(0, GetMinButtonSize(d.height + WD_MATRIX_TOP + WD_MATRIX_BOTTOM + 1), d.height);
/* Paint the company icons */
for (CompanyID i = COMPANY_FIRST; i < MAX_COMPANIES; i++) {
NWidgetCore *button = this->GetWidget<NWidgetCore>(i + WID_AID_COMPANY_BUTTON_START);

View File

@@ -335,7 +335,7 @@ public:
d.width += padding.width;
d.height += padding.height;
*size = maxdim(*size, d);
size->height = GetMinSizing(NWST_STEP, size->height);
size->height = GetMinButtonSize(size->height);
break;
}
@@ -347,7 +347,7 @@ public:
size->width = std::max(size->width, GetStringBoundingBox(as->name).width);
}
this->line_height = GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM);
this->line_height = GetMinButtonSize(FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM);
size->height = 5 * this->line_height;
break;
}
@@ -591,7 +591,7 @@ static const NWidgetPart _nested_build_airport_widgets[] = {
NWidget(NWID_HORIZONTAL),
/* Airport dropdown selector and picture. */
NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetFill(1, 0), SetPIP(2, 0, 2),
NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetSizingType(NWST_STEP), SetDataTip(STR_STATION_BUILD_AIRPORT_CLASS_LABEL, STR_NULL), SetFill(1, 0),
NWidget(WWT_LABEL, COLOUR_DARK_GREEN), SetSizingType(NWST_BUTTON), SetDataTip(STR_STATION_BUILD_AIRPORT_CLASS_LABEL, STR_NULL), SetFill(1, 0),
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_AP_CLASS_DROPDOWN), SetFill(1, 0), SetDataTip(STR_BLACK_STRING, STR_STATION_BUILD_AIRPORT_TOOLTIP),
NWidget(WWT_EMPTY, COLOUR_DARK_GREEN, WID_AP_AIRPORT_SPRITE), SetFill(1, 0),
EndContainer(),
@@ -602,9 +602,9 @@ static const NWidgetPart _nested_build_airport_widgets[] = {
NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_AP_SCROLLBAR),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_AP_LAYOUT_DECREASE), SetSizingType(NWST_STEP), SetMinimalSize(12, 0), SetDataTip(AWV_DECREASE, STR_NULL),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_AP_LAYOUT_DECREASE), SetSizingType(NWST_BUTTON), SetMinimalSize(12, 0), SetDataTip(AWV_DECREASE, STR_NULL),
NWidget(WWT_LABEL, COLOUR_GREY, WID_AP_LAYOUT_NUM), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_BLACK_STRING, STR_NULL),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_AP_LAYOUT_INCREASE), SetSizingType(NWST_STEP), SetMinimalSize(12, 0), SetDataTip(AWV_INCREASE, STR_NULL),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_AP_LAYOUT_INCREASE), SetSizingType(NWST_BUTTON), SetMinimalSize(12, 0), SetDataTip(AWV_INCREASE, STR_NULL),
EndContainer(),
NWidget(WWT_EMPTY, COLOUR_DARK_GREEN, WID_AP_EXTRA_TEXT), SetFill(1, 0), SetMinimalSize(150, 0),
EndContainer(),

View File

@@ -597,6 +597,7 @@ static CommandCost ReplaceChain(Vehicle **chain, DoCommandFlag flags, bool wagon
/* Sell wagon */
CommandCost ret = DoCommand(0, wagon->index, 0, DC_EXEC, GetCmdSellVeh(wagon));
(void)ret; // assert only
assert(ret.Succeeded());
new_vehs[i] = nullptr;
@@ -652,6 +653,7 @@ static CommandCost ReplaceChain(Vehicle **chain, DoCommandFlag flags, bool wagon
for (int i = num_units - 1; i > 0; i--) {
CommandCost ret = CmdMoveVehicle(old_vehs[i], old_head, DC_EXEC | DC_AUTOREPLACE, false);
(void)ret; // assert only
assert(ret.Succeeded());
}
}

View File

@@ -82,7 +82,7 @@ class ReplaceVehicleWindow : public Window {
bool replace_engines; ///< If \c true, engines are replaced, if \c false, wagons are replaced (only for trains).
bool reset_sel_engine; ///< Also reset #sel_engine while updating left and/or right and no valid engine selected.
GroupID sel_group; ///< Group selected to replace.
int details_height; ///< Minimal needed height of the details panels (found so far).
int details_height; ///< Minimal needed height of the details panels, in text lines (found so far).
byte sort_criteria; ///< Criteria of sorting vehicles.
bool descending_sort_order; ///< Order of sorting vehicles.
bool show_hidden_engines; ///< Whether to show the hidden engines.
@@ -230,7 +230,7 @@ public:
this->engines[0].ForceRebuild();
this->engines[1].ForceRebuild();
this->reset_sel_engine = true;
this->details_height = ((vehicletype == VEH_TRAIN) ? 10 : 9) * FONT_HEIGHT_NORMAL + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
this->details_height = ((vehicletype == VEH_TRAIN) ? 10 : 9);
this->sel_engine[0] = INVALID_ENGINE;
this->sel_engine[1] = INVALID_ENGINE;
this->show_hidden_engines = _engine_sort_show_hidden_engines[vehicletype];
@@ -275,7 +275,7 @@ public:
case WID_RV_LEFT_DETAILS:
case WID_RV_RIGHT_DETAILS:
size->height = this->details_height;
size->height = FONT_HEIGHT_NORMAL * this->details_height + padding.height;
break;
case WID_RV_TRAIN_WAGONREMOVE_TOGGLE: {
@@ -478,7 +478,7 @@ public:
NWidgetBase *nwi = this->GetWidget<NWidgetBase>(side == 0 ? WID_RV_LEFT_DETAILS : WID_RV_RIGHT_DETAILS);
int text_end = DrawVehiclePurchaseInfo(nwi->pos_x + WD_FRAMETEXT_LEFT, nwi->pos_x + nwi->current_x - WD_FRAMETEXT_RIGHT,
nwi->pos_y + WD_FRAMERECT_TOP, this->sel_engine[side], ted);
needed_height = std::max(needed_height, text_end - (int)nwi->pos_y + WD_FRAMERECT_BOTTOM);
needed_height = std::max(needed_height, (text_end - (int)nwi->pos_y - WD_FRAMERECT_TOP) / FONT_HEIGHT_NORMAL);
}
}
if (needed_height != this->details_height) { // Details window are not high enough, enlarge them.

View File

@@ -274,7 +274,7 @@ template <class Tbase_set>
return p;
}
#include "network/network_content.h"
#include "network/core/tcp_content_type.h"
template <class Tbase_set> const char *TryGetBaseSetFile(const ContentInfo *ci, bool md5sum, const Tbase_set *s)
{

View File

@@ -61,13 +61,14 @@ protected:
name(name), description(description)
{
if (usable) {
Blitters &blitters = GetBlitters();
assert(blitters.find(this->name) == blitters.end());
/*
* Only add when the blitter is usable. Do not bail out or
* do more special things since the blitters are always
* instantiated upon start anyhow and freed upon shutdown.
*/
std::pair<Blitters::iterator, bool> P = GetBlitters().insert(Blitters::value_type(this->name, this));
assert(P.second);
blitters.insert(Blitters::value_type(this->name, this));
} else {
DEBUG(driver, 1, "Not registering blitter %s as it is not usable", name);
}

View File

@@ -199,7 +199,7 @@ public:
sprite_dim.height++; // Sprite is rendered one pixel down in the matrix field.
text_dim.height++; // Allowing the bottom row pixels to be rendered on the edge of the matrix field.
resize->height = std::max(sprite_dim.height, text_dim.height) + 2; // Max of both sizes + account for matrix edges.
resize->height = GetMinSizing(NWST_STEP, resize->height);
resize->height = GetMinButtonSize(resize->height);
this->bridgetext_offset = WD_MATRIX_LEFT + sprite_dim.width + 1; // Left edge of text, 1 pixel distance from the sprite.
size->width = this->bridgetext_offset + text_dim.width + WD_MATRIX_RIGHT;

View File

@@ -83,16 +83,15 @@ struct BuildInfoWindow : public Window
/* Increase slightly to have some space around the box. */
size->width += 2 + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT;
size->height += 2 + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
size->height += 6 + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
}
void DrawWidget(const Rect &r, int widget) const override
{
/* There is only one widget. */
GfxFillRect(r.left, r.top, r.right, r.bottom, PC_BLACK);
GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, PC_LIGHT_YELLOW);
DrawFrameRect(r.left, r.top, r.right, r.bottom, COLOUR_GREY, FR_NONE);
int top = r.top + WD_FRAMERECT_TOP;
int top = r.top + WD_FRAMERECT_TOP + 4;
Money cost = BuildInfoWindow::cost;
StringID msg = STR_MESSAGE_ESTIMATED_COST;
SetDParam(0, cost);
@@ -189,8 +188,8 @@ struct BuildConfirmationWindow : Window {
{
switch (widget) {
case WID_BC_OK:
size->width = GetMinSizing(NWST_BUTTON) * 2;
size->height = GetMinSizing(NWST_BUTTON) * 3;
size->width = GetMinButtonSize() * 2;
size->height = GetMinButtonSize() * 3;
break;
}
}

View File

@@ -45,7 +45,7 @@
uint GetEngineListHeight(VehicleType type)
{
uint size = std::max<uint>(FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM, GetVehicleImageCellSize(type, EIT_PURCHASE).height);
return GetMinSizing(NWST_STEP, size);
return GetMinButtonSize(size);
}
static const NWidgetPart _nested_build_vehicle_widgets[] = {
@@ -61,12 +61,12 @@ static const NWidgetPart _nested_build_vehicle_widgets[] = {
NWidget(WWT_PANEL, COLOUR_GREY),
NWidget(NWID_VERTICAL),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_BV_SORT_ASCENDING_DESCENDING), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER), SetSizingType(NWST_STEP),
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_BV_SORT_DROPDOWN), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_SORT_CRITERIA), SetSizingType(NWST_STEP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_BV_SORT_ASCENDING_DESCENDING), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER), SetSizingType(NWST_BUTTON),
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_BV_SORT_DROPDOWN), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_SORT_CRITERIA), SetSizingType(NWST_BUTTON),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BV_SHOW_HIDDEN_ENGINES), SetSizingType(NWST_STEP),
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_BV_CARGO_FILTER_DROPDOWN), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_FILTER_CRITERIA), SetSizingType(NWST_STEP),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_BV_SHOW_HIDDEN_ENGINES), SetSizingType(NWST_BUTTON),
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_BV_CARGO_FILTER_DROPDOWN), SetResize(1, 0), SetFill(1, 0), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_FILTER_CRITERIA), SetSizingType(NWST_BUTTON),
EndContainer(),
NWidget(NWID_SPACER), SetFill(1, 1),
EndContainer(),
@@ -1061,7 +1061,7 @@ struct BuildVehicleWindow : Window {
CargoID cargo_filter[NUM_CARGO + 3]; ///< Available cargo filters; CargoID or CF_ANY or CF_NONE or CF_ENGINES
StringID cargo_filter_texts[NUM_CARGO + 4]; ///< Texts for filter_cargo, terminated by INVALID_STRING_ID
byte cargo_filter_criteria; ///< Selected cargo filter
int details_height; ///< Minimal needed height of the details panels (found so far).
int details_height; ///< Minimal needed height of the details panels, in text lines (found so far).
Scrollbar *vscroll;
TestedEngineDetails te; ///< Tested cost and capacity after refit.
@@ -1121,7 +1121,7 @@ struct BuildVehicleWindow : Window {
widget->tool_tip = STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP + type;
widget->SetLowered(this->show_hidden_engines);
this->details_height = ((this->vehicle_type == VEH_TRAIN) ? 10 : 9) * FONT_HEIGHT_NORMAL + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
this->details_height = ((this->vehicle_type == VEH_TRAIN) ? 10 : 9);
this->FinishInitNested(tile == INVALID_TILE ? (int)type : tile);
@@ -1559,14 +1559,14 @@ struct BuildVehicleWindow : Window {
break;
case WID_BV_PANEL:
size->height = this->details_height;
size->height = FONT_HEIGHT_NORMAL * this->details_height + padding.height;
break;
case WID_BV_SORT_ASCENDING_DESCENDING: {
Dimension d = GetStringBoundingBox(this->GetWidget<NWidgetCore>(widget)->widget_data);
d.width += padding.width + Window::SortButtonWidth() * 2; // Doubled since the string is centred and it also looks better.
d.height += padding.height;
d.height = GetMinSizing(NWST_STEP, d.height);
d.height = GetMinButtonSize(d.height);
*size = maxdim(*size, d);
break;
}
@@ -1627,12 +1627,12 @@ struct BuildVehicleWindow : Window {
NWidgetBase *nwi = this->GetWidget<NWidgetBase>(WID_BV_PANEL);
int text_end = DrawVehiclePurchaseInfo(nwi->pos_x + WD_FRAMETEXT_LEFT, nwi->pos_x + nwi->current_x - WD_FRAMETEXT_RIGHT,
nwi->pos_y + WD_FRAMERECT_TOP, this->sel_engine, this->te);
needed_height = std::max(needed_height, text_end - (int)nwi->pos_y + WD_FRAMERECT_BOTTOM);
needed_height = std::max(needed_height, (text_end - (int)nwi->pos_y - WD_FRAMERECT_TOP) / FONT_HEIGHT_NORMAL);
}
if (needed_height != this->details_height) { // Details window are not high enough, enlarge them.
int resize = needed_height - this->details_height;
this->details_height = needed_height;
this->ReInit(0, resize);
this->ReInit(0, resize * FONT_HEIGHT_NORMAL);
return;
}
}

View File

@@ -59,7 +59,7 @@ struct CargoSpec {
uint8 rating_colour;
uint8 weight; ///< Weight of a single unit of this cargo type in 1/16 ton (62.5 kg).
uint16 multiplier; ///< Capacity multiplier for vehicles. (8 fractional bits)
uint16 initial_payment;
uint32 initial_payment; ///< Initial payment rate before inflation is applied.
uint8 transit_days[2];
bool is_freight; ///< Cargo type is considered to be freight (affects train freight multiplier).

View File

@@ -125,7 +125,7 @@ static int32 ClickChangeDateCheat(int32 p1, int32 p2)
*/
static int32 ClickChangeMaxHlCheat(int32 p1, int32 p2)
{
p1 = Clamp(p1, MIN_MAX_HEIGHTLEVEL, MAX_MAX_HEIGHTLEVEL);
p1 = Clamp(p1, MIN_MAP_HEIGHT_LIMIT, MAX_MAP_HEIGHT_LIMIT);
/* Check if at least one mountain on the map is higher than the new value.
* If yes, disallow the change. */
@@ -133,18 +133,18 @@ static int32 ClickChangeMaxHlCheat(int32 p1, int32 p2)
if ((int32)TileHeight(t) > p1) {
ShowErrorMessage(STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN, INVALID_STRING_ID, WL_ERROR);
/* Return old, unchanged value */
return _settings_game.construction.max_heightlevel;
return _settings_game.construction.map_height_limit;
}
}
/* Execute the change and reload GRF Data */
_settings_game.construction.max_heightlevel = p1;
_settings_game.construction.map_height_limit = p1;
ReloadNewGRFData();
/* The smallmap uses an index from heightlevels to colours. Trigger rebuilding it. */
InvalidateWindowClassesData(WC_SMALLMAP, 2);
return _settings_game.construction.max_heightlevel;
return _settings_game.construction.map_height_limit;
}
/** Available cheats. */
@@ -188,7 +188,7 @@ static const CheatEntry _cheats_ui[] = {
{SLE_BOOL, STR_CHEAT_CROSSINGTUNNELS, &_cheats.crossing_tunnels.value, &_cheats.crossing_tunnels.been_used, nullptr },
{SLE_BOOL, STR_CHEAT_NO_JETCRASH, &_cheats.no_jetcrash.value, &_cheats.no_jetcrash.been_used, nullptr },
{SLE_BOOL, STR_CHEAT_SETUP_PROD, &_cheats.setup_prod.value, &_cheats.setup_prod.been_used, &ClickSetProdCheat },
{SLE_UINT8, STR_CHEAT_EDIT_MAX_HL, &_settings_game.construction.max_heightlevel, &_cheats.edit_max_hl.been_used, &ClickChangeMaxHlCheat },
{SLE_UINT8, STR_CHEAT_EDIT_MAX_HL, &_settings_game.construction.map_height_limit, &_cheats.edit_max_hl.been_used, &ClickChangeMaxHlCheat },
{SLE_INT32, STR_CHEAT_CHANGE_DATE, &_cur_year, &_cheats.change_date.been_used, &ClickChangeDateCheat },
};

View File

@@ -527,7 +527,7 @@ public:
uint Height(uint width) const override
{
return GetMinSizing(NWST_STEP, std::max(FONT_HEIGHT_NORMAL, ScaleGUITrad(12) + 2));
return GetMinButtonSize(std::max(FONT_HEIGHT_NORMAL, ScaleGUITrad(12) + 2));
}
bool Selectable() const override
@@ -1216,65 +1216,65 @@ static const NWidgetPart _nested_select_company_manager_face_widgets[] = {
NWidget(NWID_SPACER), SetMinimalSize(0, 2), SetFill(1, 0),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_HAIR_TEXT), SetFill(1, 0),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_HAIR_L), SetSizingType(NWST_STEP), SetDataTip(AWV_DECREASE, STR_FACE_HAIR_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_HAIR), SetSizingType(NWST_STEP), SetDataTip(STR_EMPTY, STR_FACE_HAIR_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_HAIR_R), SetSizingType(NWST_STEP), SetDataTip(AWV_INCREASE, STR_FACE_HAIR_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_HAIR_L), SetSizingType(NWST_BUTTON), SetDataTip(AWV_DECREASE, STR_FACE_HAIR_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_HAIR), SetSizingType(NWST_BUTTON), SetDataTip(STR_EMPTY, STR_FACE_HAIR_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_HAIR_R), SetSizingType(NWST_BUTTON), SetDataTip(AWV_INCREASE, STR_FACE_HAIR_TOOLTIP),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_EYEBROWS_TEXT), SetFill(1, 0),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYEBROWS_L), SetSizingType(NWST_STEP), SetDataTip(AWV_DECREASE, STR_FACE_EYEBROWS_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_EYEBROWS), SetSizingType(NWST_STEP), SetDataTip(STR_EMPTY, STR_FACE_EYEBROWS_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYEBROWS_R), SetSizingType(NWST_STEP), SetDataTip(AWV_INCREASE, STR_FACE_EYEBROWS_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYEBROWS_L), SetSizingType(NWST_BUTTON), SetDataTip(AWV_DECREASE, STR_FACE_EYEBROWS_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_EYEBROWS), SetSizingType(NWST_BUTTON), SetDataTip(STR_EMPTY, STR_FACE_EYEBROWS_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYEBROWS_R), SetSizingType(NWST_BUTTON), SetDataTip(AWV_INCREASE, STR_FACE_EYEBROWS_TOOLTIP),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_EYECOLOUR_TEXT), SetFill(1, 0),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYECOLOUR_L), SetSizingType(NWST_STEP), SetDataTip(AWV_DECREASE, STR_FACE_EYECOLOUR_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_EYECOLOUR), SetSizingType(NWST_STEP), SetDataTip(STR_EMPTY, STR_FACE_EYECOLOUR_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYECOLOUR_R), SetSizingType(NWST_STEP), SetDataTip(AWV_INCREASE, STR_FACE_EYECOLOUR_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYECOLOUR_L), SetSizingType(NWST_BUTTON), SetDataTip(AWV_DECREASE, STR_FACE_EYECOLOUR_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_EYECOLOUR), SetSizingType(NWST_BUTTON), SetDataTip(STR_EMPTY, STR_FACE_EYECOLOUR_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_EYECOLOUR_R), SetSizingType(NWST_BUTTON), SetDataTip(AWV_INCREASE, STR_FACE_EYECOLOUR_TOOLTIP),
EndContainer(),
EndContainer(),
NWidget(NWID_VERTICAL),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_GLASSES_TEXT), SetFill(1, 0),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_GLASSES_L), SetSizingType(NWST_STEP), SetDataTip(AWV_DECREASE, STR_FACE_GLASSES_TOOLTIP_2),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_GLASSES), SetSizingType(NWST_STEP), SetDataTip(STR_EMPTY, STR_FACE_GLASSES_TOOLTIP_2),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_GLASSES_R), SetSizingType(NWST_STEP), SetDataTip(AWV_INCREASE, STR_FACE_GLASSES_TOOLTIP_2),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_GLASSES_L), SetSizingType(NWST_BUTTON), SetDataTip(AWV_DECREASE, STR_FACE_GLASSES_TOOLTIP_2),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_GLASSES), SetSizingType(NWST_BUTTON), SetDataTip(STR_EMPTY, STR_FACE_GLASSES_TOOLTIP_2),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_GLASSES_R), SetSizingType(NWST_BUTTON), SetDataTip(AWV_INCREASE, STR_FACE_GLASSES_TOOLTIP_2),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_NOSE_TEXT), SetFill(1, 0),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_NOSE_L), SetSizingType(NWST_STEP), SetDataTip(AWV_DECREASE, STR_FACE_NOSE_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_NOSE), SetSizingType(NWST_STEP), SetDataTip(STR_EMPTY, STR_FACE_NOSE_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_NOSE_R), SetSizingType(NWST_STEP), SetDataTip(AWV_INCREASE, STR_FACE_NOSE_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_NOSE_L), SetSizingType(NWST_BUTTON), SetDataTip(AWV_DECREASE, STR_FACE_NOSE_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_NOSE), SetSizingType(NWST_BUTTON), SetDataTip(STR_EMPTY, STR_FACE_NOSE_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_NOSE_R), SetSizingType(NWST_BUTTON), SetDataTip(AWV_INCREASE, STR_FACE_NOSE_TOOLTIP),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_LIPS_MOUSTACHE_TEXT), SetFill(1, 0),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_LIPS_MOUSTACHE_L), SetSizingType(NWST_STEP), SetDataTip(AWV_DECREASE, STR_FACE_LIPS_MOUSTACHE_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_LIPS_MOUSTACHE), SetSizingType(NWST_STEP), SetDataTip(STR_EMPTY, STR_FACE_LIPS_MOUSTACHE_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_LIPS_MOUSTACHE_R), SetSizingType(NWST_STEP), SetDataTip(AWV_INCREASE, STR_FACE_LIPS_MOUSTACHE_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_LIPS_MOUSTACHE_L), SetSizingType(NWST_BUTTON), SetDataTip(AWV_DECREASE, STR_FACE_LIPS_MOUSTACHE_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_LIPS_MOUSTACHE), SetSizingType(NWST_BUTTON), SetDataTip(STR_EMPTY, STR_FACE_LIPS_MOUSTACHE_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_LIPS_MOUSTACHE_R), SetSizingType(NWST_BUTTON), SetDataTip(AWV_INCREASE, STR_FACE_LIPS_MOUSTACHE_TOOLTIP),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_CHIN_TEXT), SetFill(1, 0),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_CHIN_L), SetSizingType(NWST_STEP), SetDataTip(AWV_DECREASE, STR_FACE_CHIN_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_CHIN), SetSizingType(NWST_STEP), SetDataTip(STR_EMPTY, STR_FACE_CHIN_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_CHIN_R), SetSizingType(NWST_STEP), SetDataTip(AWV_INCREASE, STR_FACE_CHIN_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_CHIN_L), SetSizingType(NWST_BUTTON), SetDataTip(AWV_DECREASE, STR_FACE_CHIN_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_CHIN), SetSizingType(NWST_BUTTON), SetDataTip(STR_EMPTY, STR_FACE_CHIN_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_CHIN_R), SetSizingType(NWST_BUTTON), SetDataTip(AWV_INCREASE, STR_FACE_CHIN_TOOLTIP),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_JACKET_TEXT), SetFill(1, 0),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_JACKET_L), SetSizingType(NWST_STEP), SetDataTip(AWV_DECREASE, STR_FACE_JACKET_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_JACKET), SetSizingType(NWST_STEP), SetDataTip(STR_EMPTY, STR_FACE_JACKET_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_JACKET_R), SetSizingType(NWST_STEP), SetDataTip(AWV_INCREASE, STR_FACE_JACKET_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_JACKET_L), SetSizingType(NWST_BUTTON), SetDataTip(AWV_DECREASE, STR_FACE_JACKET_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_JACKET), SetSizingType(NWST_BUTTON), SetDataTip(STR_EMPTY, STR_FACE_JACKET_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_JACKET_R), SetSizingType(NWST_BUTTON), SetDataTip(AWV_INCREASE, STR_FACE_JACKET_TOOLTIP),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_COLLAR_TEXT), SetFill(1, 0),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_COLLAR_L), SetSizingType(NWST_STEP), SetDataTip(AWV_DECREASE, STR_FACE_COLLAR_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_COLLAR), SetSizingType(NWST_STEP), SetDataTip(STR_EMPTY, STR_FACE_COLLAR_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_COLLAR_R), SetSizingType(NWST_STEP), SetDataTip(AWV_INCREASE, STR_FACE_COLLAR_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_COLLAR_L), SetSizingType(NWST_BUTTON), SetDataTip(AWV_DECREASE, STR_FACE_COLLAR_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_COLLAR), SetSizingType(NWST_BUTTON), SetDataTip(STR_EMPTY, STR_FACE_COLLAR_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_COLLAR_R), SetSizingType(NWST_BUTTON), SetDataTip(AWV_INCREASE, STR_FACE_COLLAR_TOOLTIP),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_SCMF_TIE_EARRING_TEXT), SetFill(1, 0),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_TIE_EARRING_L), SetSizingType(NWST_STEP), SetDataTip(AWV_DECREASE, STR_FACE_TIE_EARRING_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_TIE_EARRING), SetSizingType(NWST_STEP), SetDataTip(STR_EMPTY, STR_FACE_TIE_EARRING_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_TIE_EARRING_R), SetSizingType(NWST_STEP), SetDataTip(AWV_INCREASE, STR_FACE_TIE_EARRING_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_TIE_EARRING_L), SetSizingType(NWST_BUTTON), SetDataTip(AWV_DECREASE, STR_FACE_TIE_EARRING_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_SCMF_TIE_EARRING), SetSizingType(NWST_BUTTON), SetDataTip(STR_EMPTY, STR_FACE_TIE_EARRING_TOOLTIP),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_SCMF_TIE_EARRING_R), SetSizingType(NWST_BUTTON), SetDataTip(AWV_INCREASE, STR_FACE_TIE_EARRING_TOOLTIP),
EndContainer(),
EndContainer(),
EndContainer(),
@@ -1382,8 +1382,8 @@ public:
yesno_dim.width += WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT;
yesno_dim.height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
yesno_dim.width = GetMinSizing(NWST_STEP, yesno_dim.width);
yesno_dim.height = GetMinSizing(NWST_STEP, yesno_dim.height);
yesno_dim.width = GetMinButtonSize(yesno_dim.width);
yesno_dim.height = GetMinButtonSize(yesno_dim.height);
/* Size of the number button + arrows. */
Dimension number_dim = {0, 0};

View File

@@ -13,6 +13,7 @@
#include "engine_func.h"
#include "landscape.h"
#include "saveload/saveload.h"
#include "network/core/game_info.h"
#include "network/network.h"
#include "network/network_func.h"
#include "network/network_base.h"
@@ -907,7 +908,7 @@ DEF_CONSOLE_CMD(ConNetworkReconnect)
/* Don't resolve the address first, just print it directly as it comes from the config file. */
IConsolePrintF(CC_DEFAULT, "Reconnecting to %s:%d...", _settings_client.network.last_host, _settings_client.network.last_port);
NetworkClientConnectGame(NetworkAddress(_settings_client.network.last_host, _settings_client.network.last_port), playas);
NetworkClientConnectGame(_settings_client.network.last_host, _settings_client.network.last_port, playas);
return true;
}
@@ -921,7 +922,6 @@ DEF_CONSOLE_CMD(ConNetworkConnect)
}
if (argc < 2) return false;
if (_networking) NetworkDisconnect(); // we are in network-mode, first close it!
const char *port = nullptr;
const char *company = nullptr;
@@ -949,7 +949,7 @@ DEF_CONSOLE_CMD(ConNetworkConnect)
IConsolePrintF(CC_DEFAULT, " port: %s", port);
}
NetworkClientConnectGame(NetworkAddress(ip, rport), join_as);
NetworkClientConnectGame(ip, rport, join_as);
return true;
}
@@ -1365,7 +1365,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;
}
@@ -1451,7 +1453,7 @@ DEF_CONSOLE_CMD(ConScreenShot)
ScreenshotType type = SC_VIEWPORT;
uint32 width = 0;
uint32 height = 0;
const char *name = nullptr;
std::string name{};
uint32 arg_index = 1;
if (argc > arg_index) {

View File

@@ -32,6 +32,9 @@
#ifdef __ANDROID__
#include <SDL_screenkeyboard.h>
#endif
#ifdef __EMSCRIPTEN__
#include <emscripten.h>
#endif
static const uint ICON_HISTORY_SIZE = 20;
static const uint ICON_LINE_SPACING = 2;
@@ -187,7 +190,15 @@ struct IConsoleWindow : Window
this->InitNested(0);
this->truncate_timer.SetInterval(3000);
ResizeWindow(this, _screen.width, _screen.height / 3);
ResizeWindow(this, _screen.width - GetMinButtonSize() * 2, _screen.height / 3);
this->left = GetMinButtonSize();
#ifdef __EMSCRIPTEN__
// TODO: move this code to SDL2 Emscripten backend
EM_ASM({
Module.startTextInput(UTF8ToString($0));
}, "");
#endif // __EMSCRIPTEN__
}
~IConsoleWindow()
@@ -233,6 +244,23 @@ struct IConsoleWindow : Window
if (_focused_window == this && _iconsole_cmdline.caret) {
DrawString(this->line_offset + delta + _iconsole_cmdline.caretxoffs, right, this->height - this->line_height, "_", TC_WHITE, SA_LEFT | SA_FORCE);
}
#ifdef __EMSCRIPTEN__
// TODO: move this code to SDL2 Emscripten backend
char buf[512] = "";
int status = EM_ASM_INT({
var value = Module.getTextInput();
if (value == null) {
return 0;
}
var lengthBytes = Math.min(512, lengthBytesUTF8(value) + 1);
stringToUTF8(value, $0, lengthBytes);
return 1;
}, buf);
if (status) {
this->OnQueryTextFinished(buf);
}
#endif
}
void OnQueryTextFinished(char *str) override
@@ -261,6 +289,16 @@ struct IConsoleWindow : Window
if (_iconsole_cmdline.HandleCaret()) this->SetDirty();
}
void OnClick(Point pt, int widget, int click_count) override
{
#ifdef __EMSCRIPTEN__
// TODO: move this code to SDL2 Emscripten backend
EM_ASM({
Module.startTextInput(UTF8ToString($0));
}, "");
#endif // __EMSCRIPTEN__
}
EventState OnKeyPress(WChar key, uint16 keycode) override
{
if (_focused_window != this) return ES_NOT_HANDLED;
@@ -436,11 +474,11 @@ void IConsoleResize(Window *w)
switch (_iconsole_mode) {
case ICONSOLE_OPENED:
w->height = _screen.height / 3;
w->width = _screen.width;
w->width = _screen.width - GetMinButtonSize() * 2;
break;
case ICONSOLE_FULL:
w->height = _screen.height - ICON_BOTTOM_BORDERWIDTH;
w->width = _screen.width;
w->width = _screen.width - GetMinButtonSize() * 2;
break;
default: return;
}

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

@@ -678,7 +678,7 @@ struct DepotWindow : Window {
int base_width = this->count_width + this->header_width;
resize->height = std::max<uint>(GetVehicleImageCellSize(this->type, EIT_IN_DEPOT).height, min_height);
resize->height = GetMinSizing(NWST_STEP, resize->height);
resize->height = GetMinButtonSize(resize->height);
if (this->type == VEH_TRAIN) {
resize->width = 1;
size->width = base_width + 2 * ScaleGUITrad(29); // about 2 parts

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

@@ -221,8 +221,9 @@ DriverFactoryBase::DriverFactoryBase(Driver::Type type, int priority, const char
strecpy(buf, GetDriverTypeName(type), lastof(buf));
strecpy(buf + 5, name, lastof(buf));
std::pair<Drivers::iterator, bool> P = GetDrivers().insert(Drivers::value_type(buf, this));
assert(P.second);
Drivers &drivers = GetDrivers();
assert(drivers.find(buf) == drivers.end());
drivers.insert(Drivers::value_type(buf, this));
}
/**

View File

@@ -549,6 +549,7 @@ void SetupEngines()
* in any case, and we just cleaned the pool. */
assert(Engine::CanAllocateItem());
const Engine *e = new Engine(eid.type, eid.internal_id);
(void)e; // assert only
assert(e->index == index);
index++;
}
@@ -721,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) {
@@ -747,8 +746,14 @@ static void EnableEngineForCompany(EngineID eid, CompanyID company)
static void DisableEngineForCompany(EngineID eid, CompanyID company)
{
Engine *e = Engine::Get(eid);
Company *c = Company::Get(company);
ClrBit(e->company_avail, company);
if (e->type == VEH_TRAIN) {
c->avail_railtypes = GetCompanyRailtypes(c->index);
} else if (e->type == VEH_ROAD) {
c->avail_roadtypes = GetCompanyRoadTypes(c->index);
}
if (company == _local_company) {
AddRemoveEngineFromAutoreplaceAndBuildWindows(e->type);
@@ -997,8 +1002,7 @@ static void NewVehicleAvailable(Engine *e)
if (e->type == VEH_TRAIN) {
/* maybe make another rail type available */
RailType railtype = e->u.rail.railtype;
assert(railtype < RAILTYPE_END);
assert(e->u.rail.railtype < RAILTYPE_END);
for (Company *c : Company::Iterate()) c->avail_railtypes = AddDateIntroducedRailTypes(c->avail_railtypes | GetRailTypeInfo(e->u.rail.railtype)->introduces_railtypes, _date);
} else if (e->type == VEH_ROAD) {
/* maybe make another road type available */

View File

@@ -429,6 +429,9 @@ FILE *FioFOpenFile(const std::string &filename, const char *mode, Subdirectory s
if (token == "..") {
if (tokens.size() < 2) return nullptr;
tokens.pop_back();
} else if (token == ".") {
/* Do nothing. "." means current folder, but you can create tar files with "." in the path.
* This confuses our file resolver. So, act like this folder doesn't exist. */
} else {
tokens.push_back(token);
}

View File

@@ -13,7 +13,7 @@
#include "gfx_type.h"
#include "company_base.h"
#include "newgrf_config.h"
#include "network/core/tcp_content.h"
#include "network/core/tcp_content_type.h"
/** Special values for save-load window for the data parameter of #InvalidateWindowData. */

View File

@@ -42,7 +42,6 @@ LoadCheckData _load_check_data; ///< Data loaded from save during SL_LOAD_CHE
static bool _fios_path_changed;
static bool _savegame_sort_dirty;
static const char *NETWORK_SAVE_FILENAME = "network-save.sav";
/**
@@ -569,7 +568,7 @@ public:
break;
case WID_SL_DRIVES_DIRECTORIES_LIST:
resize->height = GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL);
resize->height = GetMinButtonSize(FONT_HEIGHT_NORMAL);
size->height = resize->height * 5 + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
break;
case WID_SL_SORT_BYNAME:
@@ -731,20 +730,11 @@ public:
this->SetDirty();
break;
case WID_SL_LOAD_NETWORK_BUTTON: {
std::string savePath = FiosMakeSavegameName(NETWORK_SAVE_FILENAME);
#ifdef __ANDROID__
if (!SDL_ANDROID_CloudLoad(savePath.c_str(), NULL, "OpenTTD")) {
case WID_SL_LOAD_NETWORK_BUTTON:
_file_to_saveload.cloud_load = true;
delete this;
break;
}
#endif
_file_to_saveload.SetMode(FIOS_TYPE_FILE);
_file_to_saveload.SetName(savePath.c_str());
_file_to_saveload.SetTitle("Network Save");
_switch_mode = SM_LOAD_GAME;
break;
}
}
}
void OnMouseLoop() override

View File

@@ -33,6 +33,7 @@
#include "game/game_instance.hpp"
#include "string_func.h"
#include "thread.h"
#include "tgp.h"
#include "safeguards.h"
@@ -118,6 +119,8 @@ static void _GenerateWorld()
ConvertGroundTilesIntoWaterTiles();
IncreaseGeneratingWorldProgress(GWP_OBJECT);
_settings_game.game_creation.snow_line_height = DEF_SNOWLINE_HEIGHT;
} else {
GenerateLandscape(_gw.mode);
GenerateClearTile();
@@ -283,6 +286,22 @@ void GenerateWorld(GenWorldMode mode, uint size_x, uint size_y, bool reset_setti
InitializeGame(_gw.size_x, _gw.size_y, true, reset_settings);
PrepareGenerateWorldProgress();
if (_settings_game.construction.map_height_limit == 0) {
uint estimated_height = 0;
if (_gw.mode == GWM_EMPTY && _game_mode != GM_MENU) {
estimated_height = _settings_game.game_creation.se_flat_world_height;
} else if (_gw.mode == GWM_HEIGHTMAP) {
estimated_height = _settings_game.game_creation.heightmap_height;
} else if (_settings_game.game_creation.land_generator == LG_TERRAGENESIS) {
estimated_height = GetEstimationTGPMapHeight();
} else {
estimated_height = 0;
}
_settings_game.construction.map_height_limit = std::max(MAP_HEIGHT_LIMIT_AUTO_MINIMUM, std::min(MAX_MAP_HEIGHT_LIMIT, estimated_height + MAP_HEIGHT_LIMIT_AUTO_CEILING_ROOM));
}
/* Load the right landscape stuff, and the NewGRFs! */
GfxLoadSprites();
LoadStringWidthTable();

View File

@@ -42,10 +42,15 @@ enum TgenSmoothness {
TGEN_SMOOTHNESS_END, ///< Used to iterate.
};
static const uint CUSTOM_TERRAIN_TYPE_NUMBER_DIFFICULTY = 5; ///< Value for custom terrain type in difficulty settings.
static const uint CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY = 4; ///< Value for custom sea level in difficulty settings.
static const uint CUSTOM_SEA_LEVEL_MIN_PERCENTAGE = 1; ///< Minimum percentage a user can specify for custom sea level.
static const uint CUSTOM_SEA_LEVEL_MAX_PERCENTAGE = 90; ///< Maximum percentage a user can specify for custom sea level.
static const uint MAP_HEIGHT_LIMIT_AUTO_MINIMUM = 30; ///< When map height limit is auto, make this the lowest possible map height limit.
static const uint MAP_HEIGHT_LIMIT_AUTO_CEILING_ROOM = 15; ///< When map height limit is auto, the map height limit will be the higest peak plus this value.
typedef void GWDoneProc(); ///< Procedure called when the genworld process finishes
typedef void GWAbortProc(); ///< Called when genworld is aborted

View File

@@ -46,6 +46,15 @@ enum GenerateLandscapeWindowMode {
GLWM_SCENARIO, ///< Generate flat land.
};
/**
* Get the map height limit, or if set to "auto", the absolute limit.
*/
static uint GetMapHeightLimit()
{
if (_settings_newgame.construction.map_height_limit == 0) return MAX_MAP_HEIGHT_LIMIT;
return _settings_newgame.construction.map_height_limit;
}
/**
* Changes landscape type and sets genworld window dirty
* @param landscape new landscape type
@@ -107,8 +116,10 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = {
NWidget(NWID_VERTICAL), SetPIP(0, 4, 0),
NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0),
NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAX_HEIGHTLEVEL, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SNOW_LINE_HEIGHT, STR_NULL), SetFill(1, 1),
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_LABEL),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SNOW_COVERAGE, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DESERT_COVERAGE, STR_NULL), SetFill(1, 1),
EndContainer(),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SMOOTHNESS, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_QUANTITY_OF_RIVERS, STR_NULL), SetFill(1, 1),
@@ -116,17 +127,19 @@ static const NWidgetPart _nested_generate_landscape_widgets[] = {
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_NUMBER_OF_TOWNS, STR_NULL), SetFill(1, 1),
EndContainer(),
NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0),
/* Max. heightlevel. */
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_SELECTOR),
/* Snow coverage. */
NWidget(NWID_HORIZONTAL),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_MAX_HEIGHTLEVEL_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN), SetFill(0, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_MAX_HEIGHTLEVEL_TEXT), SetDataTip(STR_BLACK_INT, STR_NULL), SetFill(1, 0),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_MAX_HEIGHTLEVEL_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_MAX_HEIGHTLEVEL_UP), SetFill(0, 1),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_COVERAGE_DOWN), SetFill(0, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_SNOW_COVERAGE_TEXT, STR_NULL), SetFill(1, 0),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_COVERAGE_UP), SetFill(0, 1),
EndContainer(),
/* Snow line. */
/* Desert coverage. */
NWidget(NWID_HORIZONTAL),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_LINE_DOWN), SetFill(0, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_TEXT), SetDataTip(STR_BLACK_INT, STR_NULL), SetFill(1, 0),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_LINE_UP), SetFill(0, 1),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_DESERT_COVERAGE_DOWN), SetFill(0, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_DESERT_COVERAGE_TEXT, STR_NULL), SetFill(1, 0),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_DESERT_COVERAGE_UP), SetFill(0, 1),
EndContainer(),
EndContainer(),
/* Starting date. */
NWidget(NWID_HORIZONTAL),
@@ -208,21 +221,31 @@ static const NWidgetPart _nested_heightmap_load_widgets[] = {
NWidget(NWID_VERTICAL), SetPIP(0, 4, 0),
NWidget(NWID_HORIZONTAL), SetPIP(0, 3, 0),
NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_MAX_HEIGHTLEVEL, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SNOW_LINE_HEIGHT, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_HEIGHTMAP_HEIGHT, STR_NULL), SetFill(1, 1),
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_LABEL),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_SNOW_COVERAGE, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DESERT_COVERAGE, STR_NULL), SetFill(1, 1),
EndContainer(),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_MAPGEN_DATE, STR_NULL), SetFill(1, 1),
NWidget(WWT_TEXT, COLOUR_ORANGE), SetDataTip(STR_GAME_OPTIONS_TOWN_NAMES_FRAME, STR_NULL), SetFill(1, 1),
EndContainer(),
NWidget(NWID_VERTICAL, NC_EQUALSIZE), SetPIP(0, 4, 0),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_MAX_HEIGHTLEVEL_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN), SetFill(0, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_MAX_HEIGHTLEVEL_TEXT), SetDataTip(STR_BLACK_INT, STR_NULL), SetFill(1, 0),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_MAX_HEIGHTLEVEL_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_MAX_HEIGHTLEVEL_UP), SetFill(0, 1),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_HEIGHT_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN), SetFill(0, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_HEIGHT_TEXT), SetDataTip(STR_BLACK_INT, STR_NULL), SetFill(1, 0),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_HEIGHTMAP_HEIGHT_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_HEIGHTMAP_HEIGHT_UP), SetFill(0, 1),
EndContainer(),
NWidget(NWID_SELECTION, INVALID_COLOUR, WID_GL_CLIMATE_SEL_SELECTOR),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_COVERAGE_DOWN), SetFill(0, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_SNOW_COVERAGE_TEXT, STR_NULL), SetFill(1, 0),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_COVERAGE_UP), SetFill(0, 1),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_SNOW_LINE_DOWN), SetFill(0, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_TEXT), SetDataTip(STR_BLACK_INT, STR_NULL), SetFill(1, 0),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_SNOW_LEVEL_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_SNOW_LINE_UP), SetFill(0, 1),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_MAPGEN_DESERT_COVERAGE_DOWN), SetFill(0, 1),
NWidget(WWT_TEXTBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_TEXT), SetDataTip(STR_MAPGEN_DESERT_COVERAGE_TEXT, STR_NULL), SetFill(1, 0),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_DESERT_COVERAGE_UP), SetDataTip(SPR_ARROW_UP, STR_MAPGEN_DESERT_COVERAGE_UP), SetFill(0, 1),
EndContainer(),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_IMGBTN, COLOUR_ORANGE, WID_GL_START_DATE_DOWN), SetDataTip(SPR_ARROW_DOWN, STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD), SetFill(0, 1),
@@ -305,7 +328,7 @@ static DropDownList BuildTownNameDropDown()
}
static const StringID _elevations[] = {STR_TERRAIN_TYPE_VERY_FLAT, STR_TERRAIN_TYPE_FLAT, STR_TERRAIN_TYPE_HILLY, STR_TERRAIN_TYPE_MOUNTAINOUS, STR_TERRAIN_TYPE_ALPINIST, INVALID_STRING_ID};
static const StringID _elevations[] = {STR_TERRAIN_TYPE_VERY_FLAT, STR_TERRAIN_TYPE_FLAT, STR_TERRAIN_TYPE_HILLY, STR_TERRAIN_TYPE_MOUNTAINOUS, STR_TERRAIN_TYPE_ALPINIST, STR_TERRAIN_TYPE_CUSTOM, INVALID_STRING_ID};
static const StringID _sea_lakes[] = {STR_SEA_LEVEL_VERY_LOW, STR_SEA_LEVEL_LOW, STR_SEA_LEVEL_MEDIUM, STR_SEA_LEVEL_HIGH, STR_SEA_LEVEL_CUSTOM, INVALID_STRING_ID};
static const StringID _rivers[] = {STR_RIVERS_NONE, STR_RIVERS_FEW, STR_RIVERS_MODERATE, STR_RIVERS_LOT, INVALID_STRING_ID};
static const StringID _smoothness[] = {STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH, STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_SMOOTH, STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_ROUGH, STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_ROUGH, INVALID_STRING_ID};
@@ -336,6 +359,10 @@ struct GenerateLandscapeWindow : public Window {
this->SetWidgetDisabledState(WID_GL_TOWN_PULLDOWN, _game_mode == GM_EDITOR);
this->SetWidgetDisabledState(WID_GL_INDUSTRY_PULLDOWN, _game_mode == GM_EDITOR);
/* In case the map_height_limit is changed, clamp heightmap_height and custom_terrain_type. */
_settings_newgame.game_creation.heightmap_height = Clamp(_settings_newgame.game_creation.heightmap_height, MIN_HEIGHTMAP_HEIGHT, GetMapHeightLimit());
_settings_newgame.game_creation.custom_terrain_type = Clamp(_settings_newgame.game_creation.custom_terrain_type, MIN_CUSTOM_TERRAIN_TYPE, GetMapHeightLimit());
this->OnInvalidateData();
}
@@ -346,8 +373,9 @@ struct GenerateLandscapeWindow : public Window {
case WID_GL_START_DATE_TEXT: SetDParam(0, ConvertYMDToDate(_settings_newgame.game_creation.starting_year, 0, 1)); break;
case WID_GL_MAPSIZE_X_PULLDOWN: SetDParam(0, 1LL << _settings_newgame.game_creation.map_x); break;
case WID_GL_MAPSIZE_Y_PULLDOWN: SetDParam(0, 1LL << _settings_newgame.game_creation.map_y); break;
case WID_GL_MAX_HEIGHTLEVEL_TEXT: SetDParam(0, _settings_newgame.construction.max_heightlevel); break;
case WID_GL_SNOW_LEVEL_TEXT: SetDParam(0, _settings_newgame.game_creation.snow_line_height); break;
case WID_GL_HEIGHTMAP_HEIGHT_TEXT: SetDParam(0, _settings_newgame.game_creation.heightmap_height); break;
case WID_GL_SNOW_COVERAGE_TEXT: SetDParam(0, _settings_newgame.game_creation.snow_coverage); break;
case WID_GL_DESERT_COVERAGE_TEXT: SetDParam(0, _settings_newgame.game_creation.desert_coverage); break;
case WID_GL_TOWN_PULLDOWN:
if (_game_mode == GM_EDITOR) {
@@ -371,7 +399,14 @@ struct GenerateLandscapeWindow : public Window {
case WID_GL_INDUSTRY_PULLDOWN: SetDParam(0, _game_mode == GM_EDITOR ? STR_CONFIG_SETTING_OFF : _num_inds[_settings_newgame.difficulty.industry_density]); break;
case WID_GL_LANDSCAPE_PULLDOWN: SetDParam(0, _landscape[_settings_newgame.game_creation.land_generator]); break;
case WID_GL_TERRAIN_PULLDOWN: SetDParam(0, _elevations[_settings_newgame.difficulty.terrain_type]); break;
case WID_GL_TERRAIN_PULLDOWN:
if (_settings_newgame.difficulty.terrain_type == CUSTOM_TERRAIN_TYPE_NUMBER_DIFFICULTY) {
SetDParam(0, STR_TERRAIN_TYPE_CUSTOM_VALUE);
SetDParam(1, _settings_newgame.game_creation.custom_terrain_type);
} else {
SetDParam(0, _elevations[_settings_newgame.difficulty.terrain_type]); break;
}
break;
case WID_GL_WATER_PULLDOWN:
if (_settings_newgame.difficulty.quantity_sea_lakes == CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY) {
@@ -438,20 +473,41 @@ struct GenerateLandscapeWindow : public Window {
}
/* Disable snowline if not arctic */
this->SetWidgetDisabledState(WID_GL_SNOW_LEVEL_TEXT, _settings_newgame.game_creation.landscape != LT_ARCTIC);
this->SetWidgetDisabledState(WID_GL_SNOW_COVERAGE_TEXT, _settings_newgame.game_creation.landscape != LT_ARCTIC);
/* Disable desert if not tropic */
this->SetWidgetDisabledState(WID_GL_DESERT_COVERAGE_TEXT, _settings_newgame.game_creation.landscape != LT_TROPIC);
/* Set snow/rainforest selections */
int climate_plane = 0;
switch (_settings_newgame.game_creation.landscape) {
case LT_TEMPERATE: climate_plane = SZSP_VERTICAL; break;
case LT_ARCTIC: climate_plane = 0; break;
case LT_TROPIC: climate_plane = 1; break;
case LT_TOYLAND: climate_plane = SZSP_VERTICAL; break;
}
this->GetWidget<NWidgetStacked>(WID_GL_CLIMATE_SEL_LABEL)->SetDisplayedPlane(climate_plane);
this->GetWidget<NWidgetStacked>(WID_GL_CLIMATE_SEL_SELECTOR)->SetDisplayedPlane(climate_plane);
/* Update availability of decreasing / increasing start date and snow level */
this->SetWidgetDisabledState(WID_GL_MAX_HEIGHTLEVEL_DOWN, _settings_newgame.construction.max_heightlevel <= MIN_MAX_HEIGHTLEVEL);
this->SetWidgetDisabledState(WID_GL_MAX_HEIGHTLEVEL_UP, _settings_newgame.construction.max_heightlevel >= MAX_MAX_HEIGHTLEVEL);
if (mode == GLWM_HEIGHTMAP) {
this->SetWidgetDisabledState(WID_GL_HEIGHTMAP_HEIGHT_DOWN, _settings_newgame.game_creation.heightmap_height <= MIN_HEIGHTMAP_HEIGHT);
this->SetWidgetDisabledState(WID_GL_HEIGHTMAP_HEIGHT_UP, _settings_newgame.game_creation.heightmap_height >= GetMapHeightLimit());
}
this->SetWidgetDisabledState(WID_GL_START_DATE_DOWN, _settings_newgame.game_creation.starting_year <= MIN_YEAR);
this->SetWidgetDisabledState(WID_GL_START_DATE_UP, _settings_newgame.game_creation.starting_year >= MAX_YEAR);
this->SetWidgetDisabledState(WID_GL_SNOW_LEVEL_DOWN, _settings_newgame.game_creation.snow_line_height <= MIN_SNOWLINE_HEIGHT || _settings_newgame.game_creation.landscape != LT_ARCTIC);
this->SetWidgetDisabledState(WID_GL_SNOW_LEVEL_UP, _settings_newgame.game_creation.snow_line_height >= MAX_SNOWLINE_HEIGHT || _settings_newgame.game_creation.landscape != LT_ARCTIC);
this->SetWidgetDisabledState(WID_GL_SNOW_COVERAGE_DOWN, _settings_newgame.game_creation.snow_coverage <= 0 || _settings_newgame.game_creation.landscape != LT_ARCTIC);
this->SetWidgetDisabledState(WID_GL_SNOW_COVERAGE_UP, _settings_newgame.game_creation.snow_coverage >= 100 || _settings_newgame.game_creation.landscape != LT_ARCTIC);
this->SetWidgetDisabledState(WID_GL_DESERT_COVERAGE_DOWN, _settings_newgame.game_creation.desert_coverage <= 0 || _settings_newgame.game_creation.landscape != LT_TROPIC);
this->SetWidgetDisabledState(WID_GL_DESERT_COVERAGE_UP, _settings_newgame.game_creation.desert_coverage >= 100 || _settings_newgame.game_creation.landscape != LT_TROPIC);
/* Do not allow a custom sea level with the original land generator. */
if (_settings_newgame.game_creation.land_generator == LG_ORIGINAL &&
_settings_newgame.difficulty.quantity_sea_lakes == CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY) {
_settings_newgame.difficulty.quantity_sea_lakes = CUSTOM_SEA_LEVEL_MIN_PERCENTAGE;
/* Do not allow a custom sea level or terrain type with the original land generator. */
if (_settings_newgame.game_creation.land_generator == LG_ORIGINAL) {
if (_settings_newgame.difficulty.quantity_sea_lakes == CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY) {
_settings_newgame.difficulty.quantity_sea_lakes = 1;
}
if (_settings_newgame.difficulty.terrain_type == CUSTOM_TERRAIN_TYPE_NUMBER_DIFFICULTY) {
_settings_newgame.difficulty.terrain_type = 1;
}
}
}
@@ -460,7 +516,7 @@ struct GenerateLandscapeWindow : public Window {
{
const StringID *strs = nullptr;
switch (widget) {
case WID_GL_MAX_HEIGHTLEVEL_TEXT:
case WID_GL_HEIGHTMAP_HEIGHT_TEXT:
SetDParam(0, MAX_TILE_HEIGHT);
*size = GetStringBoundingBox(STR_JUST_INT);
break;
@@ -474,12 +530,17 @@ struct GenerateLandscapeWindow : public Window {
case WID_GL_MAPSIZE_Y_PULLDOWN:
SetDParamMaxValue(0, MAX_MAP_SIZE);
*size = maxdim(*size, GetStringBoundingBox(STR_JUST_INT));
size->width = size->width + GetMinSizing(NWST_BUTTON);
size->width = size->width + GetMinButtonSize();
break;
case WID_GL_SNOW_LEVEL_TEXT:
case WID_GL_SNOW_COVERAGE_TEXT:
SetDParamMaxValue(0, MAX_TILE_HEIGHT);
*size = maxdim(*size, GetStringBoundingBox(STR_JUST_INT));
*size = maxdim(*size, GetStringBoundingBox(STR_MAPGEN_SNOW_COVERAGE_TEXT));
break;
case WID_GL_DESERT_COVERAGE_TEXT:
SetDParamMaxValue(0, MAX_TILE_HEIGHT);
*size = maxdim(*size, GetStringBoundingBox(STR_MAPGEN_DESERT_COVERAGE_TEXT));
break;
case WID_GL_HEIGHTMAP_SIZE_TEXT:
@@ -497,7 +558,13 @@ struct GenerateLandscapeWindow : public Window {
case WID_GL_INDUSTRY_PULLDOWN: strs = _num_inds; break;
case WID_GL_LANDSCAPE_PULLDOWN: strs = _landscape; break;
case WID_GL_TERRAIN_PULLDOWN: strs = _elevations; break;
case WID_GL_TERRAIN_PULLDOWN:
strs = _elevations;
SetDParamMaxValue(0, MAX_MAP_HEIGHT_LIMIT);
*size = maxdim(*size, GetStringBoundingBox(STR_TERRAIN_TYPE_CUSTOM_VALUE));
break;
case WID_GL_WATER_PULLDOWN:
strs = _sea_lakes;
SetDParamMaxValue(0, CUSTOM_SEA_LEVEL_MAX_PERCENTAGE);
@@ -603,22 +670,22 @@ struct GenerateLandscapeWindow : public Window {
break;
}
case WID_GL_MAX_HEIGHTLEVEL_DOWN:
case WID_GL_MAX_HEIGHTLEVEL_UP: // Height level buttons
case WID_GL_HEIGHTMAP_HEIGHT_DOWN:
case WID_GL_HEIGHTMAP_HEIGHT_UP: // Height level buttons
/* Don't allow too fast scrolling */
if (!(this->flags & WF_TIMEOUT) || this->timeout_timer <= 1) {
this->HandleButtonClick(widget);
_settings_newgame.construction.max_heightlevel = Clamp(_settings_newgame.construction.max_heightlevel + widget - WID_GL_MAX_HEIGHTLEVEL_TEXT, MIN_MAX_HEIGHTLEVEL, MAX_MAX_HEIGHTLEVEL);
_settings_newgame.game_creation.heightmap_height = Clamp(_settings_newgame.game_creation.heightmap_height + widget - WID_GL_HEIGHTMAP_HEIGHT_TEXT, MIN_HEIGHTMAP_HEIGHT, GetMapHeightLimit());
this->InvalidateData();
}
_left_button_clicked = false;
break;
case WID_GL_MAX_HEIGHTLEVEL_TEXT: // Height level text
this->widget_id = WID_GL_MAX_HEIGHTLEVEL_TEXT;
SetDParam(0, _settings_newgame.construction.max_heightlevel);
ShowQueryString(STR_JUST_INT, STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT, 4, this, CS_NUMERAL, QSF_ENABLE_DEFAULT);
case WID_GL_HEIGHTMAP_HEIGHT_TEXT: // Height level text
this->widget_id = WID_GL_HEIGHTMAP_HEIGHT_TEXT;
SetDParam(0, _settings_newgame.game_creation.heightmap_height);
ShowQueryString(STR_JUST_INT, STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT, 4, this, CS_NUMERAL, QSF_ENABLE_DEFAULT);
break;
@@ -640,22 +707,40 @@ struct GenerateLandscapeWindow : public Window {
ShowQueryString(STR_JUST_INT, STR_MAPGEN_START_DATE_QUERY_CAPT, 8, this, CS_NUMERAL, QSF_ENABLE_DEFAULT);
break;
case WID_GL_SNOW_LEVEL_DOWN:
case WID_GL_SNOW_LEVEL_UP: // Snow line buttons
case WID_GL_SNOW_COVERAGE_DOWN:
case WID_GL_SNOW_COVERAGE_UP: // Snow coverage buttons
/* Don't allow too fast scrolling */
if (!(this->flags & WF_TIMEOUT) || this->timeout_timer <= 1) {
this->HandleButtonClick(widget);
_settings_newgame.game_creation.snow_line_height = Clamp(_settings_newgame.game_creation.snow_line_height + widget - WID_GL_SNOW_LEVEL_TEXT, MIN_SNOWLINE_HEIGHT, MAX_SNOWLINE_HEIGHT);
_settings_newgame.game_creation.snow_coverage = Clamp(_settings_newgame.game_creation.snow_coverage + (widget - WID_GL_SNOW_COVERAGE_TEXT) * 10, 0, 100);
this->InvalidateData();
}
_left_button_clicked = false;
break;
case WID_GL_SNOW_LEVEL_TEXT: // Snow line text
this->widget_id = WID_GL_SNOW_LEVEL_TEXT;
SetDParam(0, _settings_newgame.game_creation.snow_line_height);
ShowQueryString(STR_JUST_INT, STR_MAPGEN_SNOW_LINE_QUERY_CAPT, 4, this, CS_NUMERAL, QSF_ENABLE_DEFAULT);
case WID_GL_SNOW_COVERAGE_TEXT: // Snow coverage text
this->widget_id = WID_GL_SNOW_COVERAGE_TEXT;
SetDParam(0, _settings_newgame.game_creation.snow_coverage);
ShowQueryString(STR_JUST_INT, STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT, 4, this, CS_NUMERAL, QSF_ENABLE_DEFAULT);
break;
case WID_GL_DESERT_COVERAGE_DOWN:
case WID_GL_DESERT_COVERAGE_UP: // Desert coverage buttons
/* Don't allow too fast scrolling */
if (!(this->flags & WF_TIMEOUT) || this->timeout_timer <= 1) {
this->HandleButtonClick(widget);
_settings_newgame.game_creation.desert_coverage = Clamp(_settings_newgame.game_creation.desert_coverage + (widget - WID_GL_DESERT_COVERAGE_TEXT) * 10, 0, 100);
this->InvalidateData();
}
_left_button_clicked = false;
break;
case WID_GL_DESERT_COVERAGE_TEXT: // Desert line text
this->widget_id = WID_GL_DESERT_COVERAGE_TEXT;
SetDParam(0, _settings_newgame.game_creation.desert_coverage);
ShowQueryString(STR_JUST_INT, STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT, 4, this, CS_NUMERAL, QSF_ENABLE_DEFAULT);
break;
case WID_GL_LANDSCAPE_PULLDOWN: // Landscape generator
@@ -723,8 +808,12 @@ struct GenerateLandscapeWindow : public Window {
void OnTimeout() override
{
static const int raise_widgets[] = {WID_GL_MAX_HEIGHTLEVEL_DOWN, WID_GL_MAX_HEIGHTLEVEL_UP, WID_GL_START_DATE_DOWN, WID_GL_START_DATE_UP, WID_GL_SNOW_LEVEL_UP, WID_GL_SNOW_LEVEL_DOWN, WIDGET_LIST_END};
for (const int *widget = raise_widgets; *widget != WIDGET_LIST_END; widget++) {
static const int newgame_raise_widgets[] = {WID_GL_START_DATE_DOWN, WID_GL_START_DATE_UP, WID_GL_SNOW_COVERAGE_UP, WID_GL_SNOW_COVERAGE_DOWN, WID_GL_DESERT_COVERAGE_UP, WID_GL_DESERT_COVERAGE_DOWN, WIDGET_LIST_END};
static const int heightmap_raise_widgets[] = {WID_GL_HEIGHTMAP_HEIGHT_DOWN, WID_GL_HEIGHTMAP_HEIGHT_UP, WID_GL_START_DATE_DOWN, WID_GL_START_DATE_UP, WID_GL_SNOW_COVERAGE_UP, WID_GL_SNOW_COVERAGE_DOWN, WID_GL_DESERT_COVERAGE_UP, WID_GL_DESERT_COVERAGE_DOWN, WIDGET_LIST_END};
const int *widget = (mode == GLWM_HEIGHTMAP) ? heightmap_raise_widgets : newgame_raise_widgets;
for (; *widget != WIDGET_LIST_END; widget++) {
if (this->IsWidgetLowered(*widget)) {
this->RaiseWidget(*widget);
this->SetWidgetDirty(*widget);
@@ -767,7 +856,15 @@ struct GenerateLandscapeWindow : public Window {
break;
case WID_GL_INDUSTRY_PULLDOWN: _settings_newgame.difficulty.industry_density = index; break;
case WID_GL_TERRAIN_PULLDOWN: _settings_newgame.difficulty.terrain_type = index; break;
case WID_GL_TERRAIN_PULLDOWN: {
if ((uint)index == CUSTOM_TERRAIN_TYPE_NUMBER_DIFFICULTY) {
this->widget_id = widget;
SetDParam(0, _settings_newgame.game_creation.custom_terrain_type);
ShowQueryString(STR_JUST_INT, STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT, 4, this, CS_NUMERAL, QSF_NONE);
}
_settings_newgame.difficulty.terrain_type = index;
break;
}
case WID_GL_WATER_PULLDOWN: {
if ((uint)index == CUSTOM_SEA_LEVEL_NUMBER_DIFFICULTY) {
@@ -793,19 +890,21 @@ struct GenerateLandscapeWindow : public Window {
} else {
/* An empty string means revert to the default */
switch (this->widget_id) {
case WID_GL_MAX_HEIGHTLEVEL_TEXT: value = DEF_MAX_HEIGHTLEVEL; break;
case WID_GL_HEIGHTMAP_HEIGHT_TEXT: value = MAP_HEIGHT_LIMIT_AUTO_MINIMUM; break;
case WID_GL_START_DATE_TEXT: value = DEF_START_YEAR; break;
case WID_GL_SNOW_LEVEL_TEXT: value = DEF_SNOWLINE_HEIGHT; break;
case WID_GL_SNOW_COVERAGE_TEXT: value = DEF_SNOW_COVERAGE; break;
case WID_GL_DESERT_COVERAGE_TEXT: value = DEF_DESERT_COVERAGE; break;
case WID_GL_TOWN_PULLDOWN: value = 1; break;
case WID_GL_TERRAIN_PULLDOWN: value = MIN_MAP_HEIGHT_LIMIT; break;
case WID_GL_WATER_PULLDOWN: value = CUSTOM_SEA_LEVEL_MIN_PERCENTAGE; break;
default: NOT_REACHED();
}
}
switch (this->widget_id) {
case WID_GL_MAX_HEIGHTLEVEL_TEXT:
this->SetWidgetDirty(WID_GL_MAX_HEIGHTLEVEL_TEXT);
_settings_newgame.construction.max_heightlevel = Clamp(value, MIN_MAX_HEIGHTLEVEL, MAX_MAX_HEIGHTLEVEL);
case WID_GL_HEIGHTMAP_HEIGHT_TEXT:
this->SetWidgetDirty(WID_GL_HEIGHTMAP_HEIGHT_TEXT);
_settings_newgame.game_creation.heightmap_height = Clamp(value, MIN_HEIGHTMAP_HEIGHT, GetMapHeightLimit());
break;
case WID_GL_START_DATE_TEXT:
@@ -813,15 +912,24 @@ struct GenerateLandscapeWindow : public Window {
_settings_newgame.game_creation.starting_year = Clamp(value, MIN_YEAR, MAX_YEAR);
break;
case WID_GL_SNOW_LEVEL_TEXT:
this->SetWidgetDirty(WID_GL_SNOW_LEVEL_TEXT);
_settings_newgame.game_creation.snow_line_height = Clamp(value, MIN_SNOWLINE_HEIGHT, MAX_SNOWLINE_HEIGHT);
case WID_GL_SNOW_COVERAGE_TEXT:
this->SetWidgetDirty(WID_GL_SNOW_COVERAGE_TEXT);
_settings_newgame.game_creation.snow_coverage = Clamp(value, 0, 100);
break;
case WID_GL_DESERT_COVERAGE_TEXT:
this->SetWidgetDirty(WID_GL_DESERT_COVERAGE_TEXT);
_settings_newgame.game_creation.desert_coverage = Clamp(value, 0, 100);
break;
case WID_GL_TOWN_PULLDOWN:
_settings_newgame.game_creation.custom_town_number = Clamp(value, 1, CUSTOM_TOWN_MAX_NUMBER);
break;
case WID_GL_TERRAIN_PULLDOWN:
_settings_newgame.game_creation.custom_terrain_type = Clamp(value, MIN_CUSTOM_TERRAIN_TYPE, GetMapHeightLimit());
break;
case WID_GL_WATER_PULLDOWN:
_settings_newgame.game_creation.custom_sea_level = Clamp(value, CUSTOM_SEA_LEVEL_MIN_PERCENTAGE, CUSTOM_SEA_LEVEL_MAX_PERCENTAGE);
break;
@@ -938,7 +1046,7 @@ struct CreateScenarioWindow : public Window
this->SetWidgetDisabledState(WID_CS_START_DATE_DOWN, _settings_newgame.game_creation.starting_year <= MIN_YEAR);
this->SetWidgetDisabledState(WID_CS_START_DATE_UP, _settings_newgame.game_creation.starting_year >= MAX_YEAR);
this->SetWidgetDisabledState(WID_CS_FLAT_LAND_HEIGHT_DOWN, _settings_newgame.game_creation.se_flat_world_height <= 0);
this->SetWidgetDisabledState(WID_CS_FLAT_LAND_HEIGHT_UP, _settings_newgame.game_creation.se_flat_world_height >= MAX_TILE_HEIGHT);
this->SetWidgetDisabledState(WID_CS_FLAT_LAND_HEIGHT_UP, _settings_newgame.game_creation.se_flat_world_height >= GetMapHeightLimit());
this->SetWidgetLoweredState(WID_CS_TEMPERATE, _settings_newgame.game_creation.landscape == LT_TEMPERATE);
this->SetWidgetLoweredState(WID_CS_ARCTIC, _settings_newgame.game_creation.landscape == LT_ARCTIC);
@@ -971,9 +1079,9 @@ struct CreateScenarioWindow : public Window
}
*size = maxdim(*size, GetStringBoundingBox(str));
size->width += padding.width;
size->width = GetMinSizing(NWST_BUTTON, size->width);
size->width = GetMinButtonSize(size->width);
size->height += padding.height;
size->height = GetMinSizing(NWST_BUTTON, size->height);
size->height = GetMinButtonSize(size->height);
}
void OnClick(Point pt, int widget, int click_count) override
@@ -1028,7 +1136,7 @@ struct CreateScenarioWindow : public Window
this->HandleButtonClick(widget);
this->SetDirty();
_settings_newgame.game_creation.se_flat_world_height = Clamp(_settings_newgame.game_creation.se_flat_world_height + widget - WID_CS_FLAT_LAND_HEIGHT_TEXT, 0, _settings_game.construction.max_heightlevel);
_settings_newgame.game_creation.se_flat_world_height = Clamp(_settings_newgame.game_creation.se_flat_world_height + widget - WID_CS_FLAT_LAND_HEIGHT_TEXT, 0, GetMapHeightLimit());
}
_left_button_clicked = false;
break;
@@ -1074,7 +1182,7 @@ struct CreateScenarioWindow : public Window
case WID_CS_FLAT_LAND_HEIGHT_TEXT:
this->SetWidgetDirty(WID_CS_FLAT_LAND_HEIGHT_TEXT);
_settings_newgame.game_creation.se_flat_world_height = Clamp(value, 0, _settings_game.construction.max_heightlevel);
_settings_newgame.game_creation.se_flat_world_height = Clamp(value, 0, GetMapHeightLimit());
break;
}
@@ -1304,6 +1412,12 @@ static void _SetGeneratingWorldProgress(GenWorldProgress cls, uint progress, uin
static_assert(lengthof(percent_table) == GWP_CLASS_COUNT + 1);
assert(cls < GWP_CLASS_COUNT);
/* Check if we really are generating the world.
* For example, placing trees via the SE also calls this function, but
* shouldn't try to update the progress.
*/
if (!HasModalProgress()) return;
if (IsGeneratingWorldAborted()) {
HandleGeneratingWorldAbortion();
return;

View File

@@ -1399,7 +1399,7 @@ void ScreenSizeChanged()
void UndrawMouseCursor()
{
/* Don't undraw mouse cursor if it is handled by the video driver. */
if (VideoDriver::GetInstance()->UseSystemCursor()) return;
if (VideoDriver::GetInstance()->UseSystemCursor() || !_settings_client.gui.draw_mouse_cursor) return;
/* Don't undraw the mouse cursor if the screen is not ready */
if (_screen.dst_ptr == nullptr) return;
@@ -1415,7 +1415,7 @@ void UndrawMouseCursor()
void DrawMouseCursor()
{
/* Don't draw mouse cursor if it is handled by the video driver. */
if (VideoDriver::GetInstance()->UseSystemCursor()) return;
if (VideoDriver::GetInstance()->UseSystemCursor() || !_settings_client.gui.draw_mouse_cursor) return;
/* Don't draw the mouse cursor if the screen is not ready */
if (_screen.dst_ptr == nullptr) return;

View File

@@ -244,6 +244,28 @@ static void LoadSpriteTables()
}
static void RealChangeBlitter(const char *repl_blitter)
{
const char *cur_blitter = BlitterFactory::GetCurrentBlitter()->GetName();
if (strcmp(cur_blitter, repl_blitter) == 0) return;
DEBUG(driver, 1, "Switching blitter from '%s' to '%s'... ", cur_blitter, repl_blitter);
Blitter *new_blitter = BlitterFactory::SelectBlitter(repl_blitter);
if (new_blitter == nullptr) NOT_REACHED();
DEBUG(driver, 1, "Successfully switched to %s.", repl_blitter);
if (!VideoDriver::GetInstance()->AfterBlitterChange()) {
/* Failed to switch blitter, let's hope we can return to the old one. */
if (BlitterFactory::SelectBlitter(cur_blitter) == nullptr || !VideoDriver::GetInstance()->AfterBlitterChange()) usererror("Failed to reinitialize video driver. Specify a fixed blitter in the config");
}
/* Clear caches that might have sprites for another blitter. */
VideoDriver::GetInstance()->ClearSystemSprites();
ClearFontCache();
GfxClearSpriteCache();
ReInitAllWindows();
}
/**
* Check blitter needed by NewGRF config and switch if needed.
* @return False when nothing changed, true otherwise.
@@ -309,7 +331,7 @@ static bool SwitchNewGRFBlitter()
if (BlitterFactory::GetBlitterFactory(repl_blitter) == nullptr) continue;
/* Inform the video driver we want to switch blitter as soon as possible. */
VideoDriver::GetInstance()->ChangeBlitter(repl_blitter);
VideoDriver::GetInstance()->QueueOnMainThread(std::bind(&RealChangeBlitter, repl_blitter));
break;
}

View File

@@ -114,7 +114,7 @@ static NWidgetBase *MakeNWidgetCompanyLines(int *biggest_index)
for (int widnum = WID_GL_FIRST_COMPANY; widnum <= WID_GL_LAST_COMPANY; widnum++) {
NWidgetBackground *panel = new NWidgetBackground(WWT_PANEL, COLOUR_BROWN, widnum);
panel->sizing_type = NWST_STEP;
panel->sizing_type = NWST_BUTTON;
panel->SetMinimalSize(246, line_height);
panel->SetFill(1, 0);
panel->SetDataTip(0x0, STR_GRAPH_KEY_COMPANY_SELECTION_TOOLTIP);
@@ -647,7 +647,7 @@ static const NWidgetPart _nested_operating_profit_widgets[] = {
NWidget(NWID_VERTICAL),
NWidget(NWID_SPACER), SetFill(0, 1), SetResize(0, 1),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_CV_KEY_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP),
SetSizingType(NWST_STEP),
SetSizingType(NWST_BUTTON),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN, WID_CV_RESIZE),
EndContainer(),
EndContainer(),
@@ -699,7 +699,7 @@ static const NWidgetPart _nested_income_graph_widgets[] = {
NWidget(NWID_VERTICAL),
NWidget(NWID_SPACER), SetFill(0, 1), SetResize(0, 1),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_CV_KEY_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP),
SetSizingType(NWST_STEP),
SetSizingType(NWST_BUTTON),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN, WID_CV_RESIZE),
EndContainer(),
EndContainer(),
@@ -749,7 +749,7 @@ static const NWidgetPart _nested_delivered_cargo_graph_widgets[] = {
NWidget(NWID_VERTICAL),
NWidget(NWID_SPACER), SetFill(0, 1), SetResize(0, 1),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_CV_KEY_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP),
SetSizingType(NWST_STEP),
SetSizingType(NWST_BUTTON),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN, WID_CV_RESIZE),
EndContainer(),
EndContainer(),
@@ -805,9 +805,9 @@ static const NWidgetPart _nested_performance_history_widgets[] = {
NWidget(NWID_VERTICAL),
NWidget(NWID_SPACER), SetFill(0, 1), SetResize(0, 1),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_PHG_DETAILED_PERFORMANCE), SetMinimalSize(50, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_PERFORMANCE_DETAIL_KEY, STR_GRAPH_PERFORMANCE_DETAIL_TOOLTIP),
SetSizingType(NWST_STEP),
SetSizingType(NWST_BUTTON),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_PHG_KEY), SetMinimalSize(50, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP),
SetSizingType(NWST_STEP),
SetSizingType(NWST_BUTTON),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN, WID_PHG_RESIZE),
EndContainer(),
EndContainer(),
@@ -857,7 +857,7 @@ static const NWidgetPart _nested_company_value_graph_widgets[] = {
NWidget(NWID_VERTICAL),
NWidget(NWID_SPACER), SetFill(0, 1), SetResize(0, 1),
NWidget(WWT_PUSHTXTBTN, COLOUR_BROWN, WID_CV_KEY_BUTTON), SetMinimalSize(50, 0), SetMinimalTextLines(1, WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM + 2), SetDataTip(STR_GRAPH_KEY_BUTTON, STR_GRAPH_KEY_TOOLTIP),
SetSizingType(NWST_STEP),
SetSizingType(NWST_BUTTON),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN, WID_CV_RESIZE),
EndContainer(),
EndContainer(),

View File

@@ -46,37 +46,37 @@ static const NWidgetPart _nested_group_widgets[] = {
NWidget(NWID_HORIZONTAL),
/* left part */
NWidget(NWID_VERTICAL),
NWidget(WWT_PANEL, COLOUR_GREY, WID_GL_ALL_VEHICLES), SetFill(1, 0), SetMinimalTextLines(1, WD_DROPDOWNTEXT_TOP + WD_DROPDOWNTEXT_BOTTOM), 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),
NWidget(WWT_MATRIX, COLOUR_GREY, WID_GL_LIST_GROUP), SetMatrixDataTip(1, 0, STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP),
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(),
/* right part */
NWidget(NWID_VERTICAL),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GL_GROUP_BY_ORDER), SetSizingType(NWST_STEP), SetMinimalSize(81, 12), SetDataTip(STR_STATION_VIEW_GROUP, STR_TOOLTIP_GROUP_ORDER),
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GL_GROUP_BY_DROPDOWN), SetSizingType(NWST_STEP), SetMinimalSize(167, 12), SetDataTip(0x0, STR_TOOLTIP_GROUP_ORDER),
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_GL_GROUP_BY_ORDER), SetSizingType(NWST_BUTTON), SetMinimalSize(81, 12), SetDataTip(STR_STATION_VIEW_GROUP, STR_TOOLTIP_GROUP_ORDER),
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GL_GROUP_BY_DROPDOWN), SetSizingType(NWST_BUTTON), SetMinimalSize(167, 12), SetDataTip(0x0, STR_TOOLTIP_GROUP_ORDER),
NWidget(WWT_PANEL, COLOUR_GREY), SetMinimalSize(12, 12), SetResize(1, 0), EndContainer(),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GL_SORT_BY_ORDER), SetSizingType(NWST_STEP), SetMinimalSize(81, 12), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_GL_SORT_BY_ORDER), SetSizingType(NWST_BUTTON), SetMinimalSize(81, 12), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER),
NWidget(WWT_DROPDOWN, COLOUR_GREY, WID_GL_SORT_BY_DROPDOWN), SetMinimalSize(167, 12), SetDataTip(0x0, STR_TOOLTIP_SORT_CRITERIA),
NWidget(WWT_PANEL, COLOUR_GREY), SetMinimalSize(12, 12), SetResize(1, 0), EndContainer(),
EndContainer(),
@@ -86,14 +86,14 @@ static const NWidgetPart _nested_group_widgets[] = {
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY), 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,8 +229,8 @@ 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 = GetMinSizing(NWST_STEP, this->tiny_step_height);
this->tiny_step_height += WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
this->tiny_step_height = GetMinButtonSize(this->tiny_step_height);
return WD_FRAMERECT_LEFT + 8 +
this->column_size[VGC_FOLD].width + 2 +
@@ -256,7 +256,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 + WD_MATRIX_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;
@@ -387,7 +387,7 @@ public:
resize->height = this->tiny_step_height;
/* Minimum height is the height of the list widget minus all and default vehicles... */
size->height = (this->vli.vtype >= VEH_SHIP ? 3.5 : 7) * GetVehicleListHeight(this->vli.vtype, this->tiny_step_height) - 2 * this->tiny_step_height;
size->height = (this->vli.vtype >= VEH_SHIP ? 3.5 : 7) * 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;
@@ -430,11 +430,6 @@ public:
*size = maxdim(*size, d);
break;
}
case WID_GL_INFO: {
size->height = (FONT_HEIGHT_NORMAL * 3) + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
break;
}
}
}
@@ -556,11 +551,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: {
@@ -601,7 +596,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];
@@ -893,8 +888,12 @@ public:
/* We do not support VehicleClicked() here since the contextual action may only make sense for individual vehicles */
if (vindex == v->index) {
if (vehgroup.NumVehicles() == 1) {
ShowVehicleViewWindow(v);
} else {
ShowVehicleListWindow(v);
}
}
break;
}

View File

@@ -368,7 +368,7 @@ static void GrayscaleToMapHeights(uint img_width, uint img_height, byte *map)
/* 0 is sea level.
* Other grey scales are scaled evenly to the available height levels > 0.
* (The coastline is independent from the number of height levels) */
heightmap_height = 1 + (heightmap_height - 1) * _settings_game.construction.max_heightlevel / 255;
heightmap_height = 1 + (heightmap_height - 1) * _settings_game.game_creation.heightmap_height / 255;
}
SetTileHeight(tile, heightmap_height);

View File

@@ -2140,6 +2140,7 @@ static Industry *CreateNewIndustry(TileIndex tile, IndustryType type, IndustryAv
Industry *i = nullptr;
size_t layout_index = RandomRange((uint32)indspec->layouts.size());
CommandCost ret = CreateNewIndustryHelper(tile, type, DC_EXEC, indspec, layout_index, seed, GB(seed2, 0, 16), OWNER_NONE, creation_type, &i);
(void)ret; // assert only
assert(i != nullptr || ret.Failed());
return i;
}

View File

@@ -421,7 +421,7 @@ public:
if (this->index[i] == INVALID_INDUSTRYTYPE) continue;
d = maxdim(d, GetStringBoundingBox(GetIndustrySpec(this->index[i])->name));
}
resize->height = GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM);
resize->height = GetMinButtonSize(FONT_HEIGHT_NORMAL + WD_MATRIX_TOP + WD_MATRIX_BOTTOM);
d.width += FONT_HEIGHT_NORMAL * 5 / 4 + padding.width;
d.height = 5 * resize->height;
*size = maxdim(*size, d);
@@ -927,7 +927,7 @@ public:
if (first) {
if (has_accept) y += WD_PAR_VSEP_WIDE;
DrawString(left + WD_FRAMERECT_LEFT, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_PRODUCTION_LAST_MONTH_TITLE);
y += this->editable == EA_RATE ? GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL) : FONT_HEIGHT_NORMAL;
y += this->editable == EA_RATE ? GetMinButtonSize(FONT_HEIGHT_NORMAL) : FONT_HEIGHT_NORMAL;
if (this->editable == EA_RATE) this->production_offset_y = y;
first = false;
}
@@ -942,7 +942,7 @@ public:
if (this->editable == EA_RATE) {
DrawArrowButtons(left + WD_FRAMETEXT_LEFT, y, COLOUR_YELLOW, (this->clicked_line == IL_RATE1 + j) ? this->clicked_button : 0,
i->production_rate[j] > 0, i->production_rate[j] < 255);
y += GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL);
y += GetMinButtonSize(FONT_HEIGHT_NORMAL);
} else {
y += FONT_HEIGHT_NORMAL;
}
@@ -957,7 +957,7 @@ public:
DrawString(x, right - WD_FRAMERECT_RIGHT, y, STR_INDUSTRY_VIEW_PRODUCTION_LEVEL);
DrawArrowButtons(left + WD_FRAMETEXT_LEFT, y, COLOUR_YELLOW, (this->clicked_line == IL_MULTIPLIER) ? this->clicked_button : 0,
i->prod_level > PRODLEVEL_MINIMUM, i->prod_level < PRODLEVEL_MAXIMUM);
y += GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL);
y += GetMinButtonSize(FONT_HEIGHT_NORMAL);
}
/* Get the extra message for the GUI */
@@ -1017,9 +1017,9 @@ public:
case EA_RATE:
if (pt.y >= this->production_offset_y) {
if ((pt.y - this->production_offset_y) % GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL) > (uint)SETTING_BUTTON_HEIGHT) break;;
if ((pt.y - this->production_offset_y) % GetMinButtonSize(FONT_HEIGHT_NORMAL) > (uint)SETTING_BUTTON_HEIGHT) break;;
int row = (pt.y - this->production_offset_y) / GetMinSizing(NWST_STEP, FONT_HEIGHT_NORMAL);
int row = (pt.y - this->production_offset_y) / GetMinButtonSize(FONT_HEIGHT_NORMAL);
for (uint j = 0; j < lengthof(i->produced_cargo); j++) {
if (i->produced_cargo[j] == CT_INVALID) continue;
row--;
@@ -1235,7 +1235,7 @@ static const NWidgetPart _nested_industry_directory_widgets[] = {
NWidget(NWID_HORIZONTAL),
NWidget(NWID_VERTICAL),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_TEXTBTN, COLOUR_BROWN, WID_ID_DROPDOWN_ORDER), SetSizingType(NWST_STEP), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER),
NWidget(WWT_TEXTBTN, COLOUR_BROWN, WID_ID_DROPDOWN_ORDER), SetSizingType(NWST_BUTTON), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER),
NWidget(WWT_DROPDOWN, COLOUR_BROWN, WID_ID_DROPDOWN_CRITERIA), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_SORT_CRITERIA),
NWidget(WWT_DROPDOWN, COLOUR_BROWN, WID_ID_FILTER_BY_ACC_CARGO), SetMinimalSize(225, 12), SetFill(0, 1), SetDataTip(STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER, STR_TOOLTIP_FILTER_CRITERIA),
NWidget(WWT_DROPDOWN, COLOUR_BROWN, WID_ID_FILTER_BY_PROD_CARGO), SetMinimalSize(225, 12), SetFill(0, 1), SetDataTip(STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER, STR_TOOLTIP_FILTER_CRITERIA),
@@ -1669,7 +1669,7 @@ public:
for (uint i = 0; i < this->industries.size(); i++) {
d = maxdim(d, GetStringBoundingBox(this->GetIndustryString(this->industries[i])));
}
resize->height = d.height = GetMinSizing(NWST_STEP, d.height);
resize->height = d.height = GetMinButtonSize(d.height);
d.height *= 5;
d.width += padding.width + WD_FRAMERECT_LEFT + WD_FRAMERECT_RIGHT;
d.height += padding.height + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;

View File

@@ -31,6 +31,7 @@
#include "pathfinder/npf/aystar.h"
#include "saveload/saveload.h"
#include "framerate_type.h"
#include <array>
#include <list>
#include <set>
@@ -116,7 +117,7 @@ Point InverseRemapCoords2(int x, int y, bool clamp_to_map, bool *clamped)
/* Bring the coordinates near to a valid range. At the top we allow a number
* of extra tiles. This is mostly due to the tiles on the north side of
* the map possibly being drawn higher due to the extra height levels. */
int extra_tiles = CeilDiv(_settings_game.construction.max_heightlevel * TILE_HEIGHT, TILE_PIXELS);
int extra_tiles = CeilDiv(_settings_game.construction.map_height_limit * TILE_HEIGHT, TILE_PIXELS);
Point old_pt = pt;
pt.x = Clamp(pt.x, -extra_tiles * TILE_SIZE, max_x);
pt.y = Clamp(pt.y, -extra_tiles * TILE_SIZE, max_y);
@@ -967,11 +968,10 @@ static void GenerateTerrain(int type, uint flag)
#include "table/genland.h"
static void CreateDesertOrRainForest()
static void CreateDesertOrRainForest(uint desert_tropic_line)
{
TileIndex update_freq = MapSize() / 4;
const TileIndexDiffC *data;
uint max_desert_height = CeilDiv(_settings_game.construction.max_heightlevel, 4);
for (TileIndex tile = 0; tile != MapSize(); ++tile) {
if ((tile % update_freq) == 0) IncreaseGeneratingWorldProgress(GWP_LANDSCAPE);
@@ -981,7 +981,7 @@ static void CreateDesertOrRainForest()
for (data = _make_desert_or_rainforest_data;
data != endof(_make_desert_or_rainforest_data); ++data) {
TileIndex t = AddTileIndexDiffCWrap(tile, *data);
if (t != INVALID_TILE && (TileHeight(t) >= max_desert_height || IsTileType(t, MP_WATER))) break;
if (t != INVALID_TILE && (TileHeight(t) >= desert_tropic_line || IsTileType(t, MP_WATER))) break;
}
if (data == endof(_make_desert_or_rainforest_data)) {
SetTropicZone(tile, TROPICZONE_DESERT);
@@ -1294,6 +1294,115 @@ static void CreateRivers()
}
}
/**
* Calculate what height would be needed to cover N% of the landmass.
*
* The function allows both snow and desert/tropic line to be calculated. It
* tries to find the closests height which covers N% of the landmass; it can
* be below or above it.
*
* Tropic has a mechanism where water and tropic tiles in mountains grow
* inside the desert. To better approximate the requested coverage, this is
* taken into account via an edge histogram, which tells how many neighbouring
* tiles are lower than the tiles of that height. The multiplier indicates how
* severe this has to be taken into account.
*
* @param coverage A value between 0 and 100 indicating a percentage of landmass that should be covered.
* @param edge_multiplier How much effect neighbouring tiles that are of a lower height level have on the score.
* @return The estimated best height to use to cover N% of the landmass.
*/
static uint CalculateCoverageLine(uint coverage, uint edge_multiplier)
{
const DiagDirection neighbour_dir[] = {
DIAGDIR_NE,
DIAGDIR_SE,
DIAGDIR_SW,
DIAGDIR_NW,
};
/* Histogram of how many tiles per height level exist. */
std::array<int, MAX_TILE_HEIGHT + 1> histogram = {};
/* Histogram of how many neighbour tiles are lower than the tiles of the height level. */
std::array<int, MAX_TILE_HEIGHT + 1> edge_histogram = {};
/* Build a histogram of the map height. */
for (TileIndex tile = 0; tile < MapSize(); tile++) {
uint h = TileHeight(tile);
histogram[h]++;
if (edge_multiplier != 0) {
/* Check if any of our neighbours is below us. */
for (auto dir : neighbour_dir) {
TileIndex neighbour_tile = AddTileIndexDiffCWrap(tile, TileIndexDiffCByDiagDir(dir));
if (IsValidTile(neighbour_tile) && TileHeight(neighbour_tile) < h) {
edge_histogram[h]++;
}
}
}
}
/* The amount of land we have is the map size minus the first (sea) layer. */
uint land_tiles = MapSizeX() * MapSizeY() - histogram[0];
int best_score = land_tiles;
/* Our goal is the coverage amount of the land-mass. */
int goal_tiles = land_tiles * coverage / 100;
/* We scan from top to bottom. */
uint h = MAX_TILE_HEIGHT;
uint best_h = h;
int current_tiles = 0;
for (; h > 0; h--) {
current_tiles += histogram[h];
int current_score = goal_tiles - current_tiles;
/* Tropic grows from water and mountains into the desert. This is a
* great visual, but it also means we* need to take into account how
* much less desert tiles are being created if we are on this
* height-level. We estimate this based on how many neighbouring
* tiles are below us for a given length, assuming that is where
* tropic is growing from.
*/
if (edge_multiplier != 0 && h > 1) {
/* From water tropic tiles grow for a few tiles land inward. */
current_score -= edge_histogram[1] * edge_multiplier;
/* Tropic tiles grow into the desert for a few tiles. */
current_score -= edge_histogram[h] * edge_multiplier;
}
if (std::abs(current_score) < std::abs(best_score)) {
best_score = current_score;
best_h = h;
}
/* Always scan all height-levels, as h == 1 might give a better
* score than any before. This is true for example with 0% desert
* coverage. */
}
return best_h;
}
/**
* Calculate the line from which snow begins.
*/
static void CalculateSnowLine()
{
/* We do not have snow sprites on coastal tiles, so never allow "1" as height. */
_settings_game.game_creation.snow_line_height = std::max(CalculateCoverageLine(_settings_game.game_creation.snow_coverage, 0), 2u);
}
/**
* Calculate the line (in height) between desert and tropic.
* @return The height of the line between desert and tropic.
*/
static uint8 CalculateDesertLine()
{
/* CalculateCoverageLine() runs from top to bottom, so we need to invert the coverage. */
return CalculateCoverageLine(100 - _settings_game.game_creation.desert_coverage, 4);
}
void GenerateLandscape(byte mode)
{
/** Number of steps of landscape generation */
@@ -1378,7 +1487,20 @@ void GenerateLandscape(byte mode)
MarkWholeScreenDirty();
IncreaseGeneratingWorldProgress(GWP_LANDSCAPE);
if (_settings_game.game_creation.landscape == LT_TROPIC) CreateDesertOrRainForest();
switch (_settings_game.game_creation.landscape) {
case LT_ARCTIC:
CalculateSnowLine();
break;
case LT_TROPIC: {
uint desert_tropic_line = CalculateDesertLine();
CreateDesertOrRainForest(desert_tropic_line);
break;
}
default:
break;
}
CreateRivers();
}

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
@@ -1180,8 +1181,6 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Skakel rampe aa
STR_CONFIG_SETTING_CITY_APPROVAL :Stadsraad se gesindheid teenoor omgewings-konstruksie: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Kies hoeveel invloed klank en skade aan die omgewing deur maatskappye aan die stadswaardering het en verderde bouwerk in die stad.
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maksimum kaarthoogte: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Stel die maksimum toegelate berghoogte
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Kan nie die berghoogte verander nie - daar is hoër berge as hierdie op die kaart
STR_CONFIG_SETTING_AUTOSLOPE :Laat landargitektuur toe onder geboue, spore, ens.: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Laat Landargitektuur onder geboue en spore sonder om dit te verwyder
@@ -2790,12 +2789,6 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Hoev. dorpe:
STR_MAPGEN_DATE :{BLACK}Datum:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Hoev. nywerhede:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maksimum kaarthoogte
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Verhoog berge met een teël
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Verminder berghoogte met een teël
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Sneeu lyn hoogte:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Beweeg die sneeu lyn een op
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Beweeg die sneeu lyn een af
STR_MAPGEN_LAND_GENERATOR :{BLACK}Land genereerder:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrein tipe:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Seevlak:
@@ -2821,8 +2814,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Reliëfk
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Grootte:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Verander maksimum kaarthoogte
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Verander sneeu lyn hoogte
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Verander begin jaar
# SE Map generation

View File

@@ -187,6 +187,7 @@ STR_COLOUR_ORANGE :برتقالي
STR_COLOUR_BROWN :بني
STR_COLOUR_GREY :رمادي
STR_COLOUR_WHITE :ابيض
STR_COLOUR_DEFAULT :الإفتراضي
# Units used in OpenTTD
STR_UNITS_VELOCITY_IMPERIAL :{COMMA}{NBSP}ميل/س
@@ -218,19 +219,23 @@ STR_UNITS_HEIGHT_IMPERIAL :{COMMA}{NBSP}
STR_UNITS_HEIGHT_SI :{COMMA}{NBSP} متر
# Common window strings
STR_LIST_FILTER_TITLE :{BLACK}تصفية القائمة
STR_LIST_FILTER_OSKTITLE :{BLACK} ادخل فلتر
STR_LIST_FILTER_TOOLTIP :{BLACK} اختر كلمة اساسية لفلترة القائمة
STR_TOOLTIP_GROUP_ORDER :{BLACK}حدد ترتيب التجميع
STR_TOOLTIP_SORT_ORDER :{BLACK} اختر طريقة الترتيب - تنازلي / تصاعدي
STR_TOOLTIP_SORT_CRITERIA :{BLACK} اختر نوع الترتيب
STR_TOOLTIP_FILTER_CRITERIA :{BLACK}حدد معايير المُرَشِح
STR_BUTTON_SORT_BY :{BLACK} رتب بـ
STR_BUTTON_CATCHMENT :{BLACK}مدى التغطية
STR_TOOLTIP_CATCHMENT :{BLACK}عرض منطقة التغطية
STR_TOOLTIP_CLOSE_WINDOW :{BLACK}اغلاق الاطار
STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS :{BLACK}عنوان الاطار- اسحب لتحريك الاطار
STR_TOOLTIP_SHADE :{BLACK}نافذة الظل - تعرض العنوان فقط
STR_TOOLTIP_DEBUG :{BLACK}اظهر معلومات صائد اخطاء الاضافات الجديدة.
STR_TOOLTIP_DEFSIZE :{BLACK}تغيير حجم النافذة إلى الحجم الافتراضي. Ctrl + Click لتخزين الحجم الحالي كإعداد افتراضي
STR_TOOLTIP_STICKY :{BLACK}علم هذه النافذة كغير قابلة للإقفال باستخدام زر إغلاق كل النوافذ, اضغط مع Ctrl لجعل الأمر إفتراضيا
STR_TOOLTIP_RESIZE :{BLACK}اضغط واسحب لتعديل حجم الاطار
STR_TOOLTIP_TOGGLE_LARGE_SMALL_WINDOW :{BLACK}تبديل حجم الاطار كبير / صغير
@@ -239,7 +244,15 @@ STR_TOOLTIP_HSCROLL_BAR_SCROLLS_LIST :{BLACK}عمود
STR_TOOLTIP_DEMOLISH_BUILDINGS_ETC :{BLACK}هدم المباني و غيرها في مربع من الأرض.
# Show engines button
STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN :{BLACK}عرض المخفي
STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE :{BLACK}عرض المخفي
STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP :{BLACK}عرض المخفي
STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT :{BLACK}عرض المخفي
STR_SHOW_HIDDEN_ENGINES_VEHICLE_TRAIN_TOOLTIP :{BLACK}من خلال تمكين هذا الزر ، يتم أيضًا عرض عربات القطار المخفية
STR_SHOW_HIDDEN_ENGINES_VEHICLE_ROAD_VEHICLE_TOOLTIP :{BLACK}من خلال تمكين هذا الزر ، يتم أيضًا عرض مركبات الطرق المخفية
STR_SHOW_HIDDEN_ENGINES_VEHICLE_SHIP_TOOLTIP :{BLACK}من خلال تمكين هذا الزر ، يتم أيضًا عرض السفن المخفية
STR_SHOW_HIDDEN_ENGINES_VEHICLE_AIRCRAFT_TOOLTIP :{BLACK}من خلال تمكين هذا الزر ، يتم أيضًا عرض الطائرات المخفية
# Query window
STR_BUTTON_DEFAULT :{BLACK}افتراضي
@@ -292,6 +305,8 @@ STR_SORT_BY_RANGE :مدى
STR_SORT_BY_POPULATION :عدد السكان
# Group by options for vehicle list
STR_GROUP_BY_NONE :لا شيء
STR_GROUP_BY_SHARED_ORDERS :لأوامر المشتركة
# Tooltips for the main toolbar
STR_TOOLBAR_TOOLTIP_PAUSE_GAME :{BLACK}ايقاف اللعبة
@@ -304,6 +319,8 @@ STR_TOOLBAR_TOOLTIP_DISPLAY_SUBSIDIES :{BLACK}اظها
STR_TOOLBAR_TOOLTIP_DISPLAY_LIST_OF_COMPANY_STATIONS :{BLACK}عرض قائمة محطات الشركة.
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_FINANCES :{BLACK}عرض السجل المالي للشركة
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_GENERAL :{BLACK}عرض معلومات الشركة
STR_TOOLBAR_TOOLTIP_DISPLAY_STORY_BOOK :{BLACK}عرض كتاب القصص
STR_TOOLBAR_TOOLTIP_DISPLAY_GOALS_LIST :{BLACK}عرض قائمة الأهداف
STR_TOOLBAR_TOOLTIP_DISPLAY_GRAPHS :{BLACK}عرض المخططات
STR_TOOLBAR_TOOLTIP_DISPLAY_COMPANY_LEAGUE :{BLACK}عرض جدول ترتيب الشركات
STR_TOOLBAR_TOOLTIP_FUND_CONSTRUCTION_OF_NEW :{BLACK}موّل انشاء مصنع / عرض كل المصانع
@@ -315,6 +332,7 @@ STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_IN :{BLACK}تكبي
STR_TOOLBAR_TOOLTIP_ZOOM_THE_VIEW_OUT :{BLACK}تصغير الصورة
STR_TOOLBAR_TOOLTIP_BUILD_RAILROAD_TRACK :{BLACK}ادوات بناء سكة حديد
STR_TOOLBAR_TOOLTIP_BUILD_ROADS :{BLACK}ادوات بناء الطرق
STR_TOOLBAR_TOOLTIP_BUILD_TRAMWAYS :{BLACK}بناء خطوط الترام
STR_TOOLBAR_TOOLTIP_BUILD_SHIP_DOCKS :{BLACK}ادوات السفن
STR_TOOLBAR_TOOLTIP_BUILD_AIRPORTS :{BLACK}بناء مطارات
STR_TOOLBAR_TOOLTIP_LANDSCAPING :{BLACK}افتح مدير تحرير التضاريس لرفع / خفض الارض, زراعة الاشجار, الخ.
@@ -377,6 +395,7 @@ STR_FILE_MENU_EXIT :خروج
# map menu
STR_MAP_MENU_MAP_OF_WORLD :خريطة العالم
STR_MAP_MENU_EXTRA_VIEWPORT :شاشة عرض اضافية
STR_MAP_MENU_LINGRAPH_LEGEND :مفتاح تدفق البضائع
STR_MAP_MENU_SIGN_LIST :قائمة العلامات
############ range for town menu starts
@@ -400,10 +419,12 @@ STR_GRAPH_MENU_CARGO_PAYMENT_RATES :معدل تكل
############ range for company league menu starts
STR_GRAPH_MENU_COMPANY_LEAGUE_TABLE :ترتيب الشركات
STR_GRAPH_MENU_DETAILED_PERFORMANCE_RATING :تقييم أداء مفصل
STR_GRAPH_MENU_HIGHSCORE :قائمه المتفوقين
############ range ends here
############ range for industry menu starts
STR_INDUSTRY_MENU_INDUSTRY_DIRECTORY :دليل المصانع
STR_INDUSTRY_MENU_INDUSTRY_CHAIN :سلاسل الصناعة
STR_INDUSTRY_MENU_FUND_NEW_INDUSTRY :مول بناء مصنع
############ range ends here
@@ -440,6 +461,7 @@ STR_TOOLBAR_SOUND_MUSIC :الموسيق
############ range for message menu starts
STR_NEWS_MENU_LAST_MESSAGE_NEWS_REPORT :الرسالة الأخيرة/التقرير الجديد
STR_NEWS_MENU_MESSAGE_HISTORY_MENU :الرسائل السابقة
STR_NEWS_MENU_DELETE_ALL_MESSAGES :احذف كل الرسائل
############ range ends here
############ range for about menu starts
@@ -939,6 +961,10 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}دقة
STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}اختر دقة الشاشة
STR_GAME_OPTIONS_RESOLUTION_OTHER :اخرى
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}حدد العنصر المطلوب
@@ -947,9 +973,21 @@ STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_NORMAL :تقريب عا
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_2X_ZOOM :تقريب ×2
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_4X_ZOOM :تقريب ×4
STR_GAME_OPTIONS_FONT_ZOOM :{BLACK}حجم الخط
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_TOOLTIP :{BLACK}حدد حجم خط الواجهة المراد استخدامه
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_AUTO :(كشف أوتوماتيكي)
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}حدد معدل تحديث الشاشة
STR_GAME_OPTIONS_REFRESH_RATE_OTHER :أخرى
STR_GAME_OPTIONS_REFRESH_RATE_ITEM :{NUM}هرتز
STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}قد تؤثر معدلات التحديث الأعلى من 60 هرتز على الأداء.
STR_GAME_OPTIONS_BASE_GRF :{BLACK} الواجهة الرسومية الاساسية
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK} اختر مجموعة الواجهة الرسومية
@@ -962,7 +1000,7 @@ STR_GAME_OPTIONS_BASE_SFX_DESCRIPTION_TOOLTIP :{BLACK}معلو
STR_GAME_OPTIONS_BASE_MUSIC :{BLACK}قاعده الموسيقى الاساسيه
STR_GAME_OPTIONS_BASE_MUSIC_TOOLTIP :{BLACK}اختر الموسيقى الاساسية التي تود استخدامها
STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ملف غير صالح{P ""}
STR_GAME_OPTIONS_BASE_MUSIC_STATUS :{RED}{NUM} ملف غير صالح
STR_GAME_OPTIONS_BASE_MUSIC_DESCRIPTION_TOOLTIP :{BLACK}معلومات اضافية عن الموسيقى الاساسية
STR_ERROR_RESOLUTION_LIST_FAILED :{WHITE}فشل في استرداد قائمة الدقة المدعومة
@@ -1056,6 +1094,7 @@ STR_WARNING_NO_SUITABLE_AI :{WHITE}لايو
STR_CONFIG_SETTING_TREE_CAPTION :{WHITE}الإعدادات
STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}مدد الكل
STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}إسحب الكل
STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(لا يوجد تفسير متوفر)
STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK} فئة:
STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}نوع:
@@ -1090,6 +1129,7 @@ STR_CONFIG_SETTING_HORIZONTAL_POS_RIGHT :يمين
STR_CONFIG_SETTING_CONSTRUCTION_SPEED ::سرعة البناء {STRING}
STR_CONFIG_SETTING_VEHICLE_BREAKDOWNS ::تعطلات العربة {STRING}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :حد ارتفاع الخريطة:{STRING}
STR_CONFIG_SETTING_AUTOSLOPE :السماح بتحريك الأرض تحت المباني, الطرق, الخ : {STRING}
STR_CONFIG_SETTING_CATCHMENT :السماح بحدود اكثر واقعية للمحطات بحسب الحجم: {STRING}
STR_CONFIG_SETTING_EXTRADYNAMITE :السماح بحذف اكثر من الطرق المملوكة للمدينة و الجسور و غيرها: {STRING}
@@ -1302,6 +1342,7 @@ STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :الاخبار
STR_CONFIG_SETTING_STARTING_YEAR :سنة البدايه: {STRING}
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :لا تنتهي
STR_CONFIG_SETTING_ALLOW_SHARES :السماح بشراء حصص من الشركات الاخرى: {STRING}
STR_CONFIG_SETTING_DRAG_SIGNALS_DENSITY :عند السحب ، ضع الإشارات كل: {STRING}
STR_CONFIG_SETTING_SEMAPHORE_BUILD_BEFORE_DATE :اتاحة استخدام الأشارات بالأعلام قبل :{STRING}
STR_CONFIG_SETTING_ENABLE_SIGNAL_GUI :السماح باستخدام اشارات واجهة المستخدم الرسومية: {STRING}
STR_CONFIG_SETTING_DEFAULT_SIGNAL_TYPE :نوع الاشارة الذي يبنى قياسيا: {STRING}
@@ -1348,6 +1389,7 @@ STR_CONFIG_SETTING_TOWN_GROWTH_FAST :سريع
STR_CONFIG_SETTING_TOWN_GROWTH_VERY_FAST :سريع جدا
STR_CONFIG_SETTING_CITY_SIZE_MULTIPLIER :مضاعف المدن المبدئي: {STRING}
STR_CONFIG_SETTING_LINKGRAPH_INTERVAL_HELPTEXT :الوقت بين عمليات إعادة الحساب المتتابعة للرسم البياني الرابط. تحسب كل عملية إعادة حساب الخطط لمكون واحد من الرسم البياني. هذا يعني أن القيمة X لهذا الإعداد لا تعني أنه سيتم تحديث الرسم البياني كل X أيام. إلا بعض المكونات. كلما قمت بتعيينه أقل، كلما زاد وقت الCPU لحسابها. كلما قمت بضبطها لفترة أطول ، كلما اسغرق الوقت حتى يتم بدأ توزيع البضائع على طرق جديدة.
STR_CONFIG_SETTING_DEMAND_SIZE_HELPTEXT :ضبط هذا إلى أقل من 100٪ يؤدي إلى جعل التوزيع المتماثل يتصرف مثل التوزيع غير المتماثل. سيتم إعادة شحنات أقل غصبا إذا تم إرسال مبلغ معين إلى المحطة. إذا قمت بتعيينه على 0٪ ، فإن التوزيع المتماثل يتصرف تمامًا مثل التوزيع غير المتماثل
STR_CONFIG_SETTING_LOCALISATION_UNITS_VELOCITY_METRIC :(متري (كم / ساعة
@@ -1358,6 +1400,7 @@ STR_CONFIG_SETTING_LOCALISATION_UNITS_WEIGHT_METRIC :(متري (طن
STR_CONFIG_SETTING_LOCALISATION_UNITS_FORCE ::وحدات جهد الجر {STRING}
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_IMPERIAL :إمبراطوري (قدم)
STR_CONFIG_SETTING_LOCALISATION_UNITS_HEIGHT_METRIC :م) متري)
STR_CONFIG_SETTING_GRAPHICS :رسوميات {ORANGE}
@@ -1440,6 +1483,7 @@ STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}اختي
STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK} اختيار مناطق عالم الألعب
STR_INTRO_TOOLTIP_GAME_OPTIONS :{BLACK}عرض خيارات اللعبة
STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}عرض قائمه المتفوقين
STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}إعدادات العرض
STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}عرض إعدادات اﻹضافات
STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK} ابحث عن محتوى جديد او تحديث
@@ -1449,6 +1493,7 @@ STR_INTRO_TRANSLATION :{BLACK}هذة
# Quit window
STR_QUIT_CAPTION :{WHITE}انهاء
STR_QUIT_ARE_YOU_SURE_YOU_WANT_TO_EXIT_OPENTTD :{YELLOW}هل أنت متأكد أنك تريد إغلاق OpenTTD؟
STR_QUIT_YES :{BLACK}نعم
STR_QUIT_NO :{BLACK}لا
@@ -1850,6 +1895,7 @@ STR_CONTENT_UNSELECT_ALL_CAPTION_TOOLTIP :{BLACK} ضع ع
STR_CONTENT_SEARCH_EXTERNAL :{BLACK}بحث المواقع الخارجية
STR_CONTENT_FILTER_TITLE :{BLACK}مُرَشِح:
STR_CONTENT_OPEN_URL :{BLACK} زيارة الموقع
STR_CONTENT_OPEN_URL_TOOLTIP :{BLACK}قم بزيارة الموقع لهذا المحتوى
STR_CONTENT_DOWNLOAD_CAPTION :{BLACK} تحميل
STR_CONTENT_DOWNLOAD_CAPTION_TOOLTIP :{BLACK} ابدأ تحميل المحتويات المختارة
STR_CONTENT_TOTAL_DOWNLOAD_SIZE :{SILVER} حجم البيانات التي سيتم تحميلها: {WHITE}{BYTES}
@@ -1916,8 +1962,16 @@ STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}غير
STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}اخفاء الاجرام تماما بدلا من الشفافية
# Linkgraph legend window
STR_LINKGRAPH_LEGEND_CAPTION :{BLACK}مفتاح تدفق البضائع
STR_LINKGRAPH_LEGEND_ALL :{BLACK}الكل
STR_LINKGRAPH_LEGEND_NONE :{BLACK}لا شيء
STR_LINKGRAPH_LEGEND_SELECT_COMPANIES :{BLACK}حدد الشركات المراد عرضها
STR_LINKGRAPH_LEGEND_COMPANY_TOOLTIP :{BLACK}{STRING}{}{COMPANY}
# Linkgraph legend window and linkgraph legend in smallmap
STR_LINKGRAPH_LEGEND_UNUSED :{TINY_FONT}{BLACK}غير مستخدم
STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLACK}عادي الاستخدام
STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}زائد الاستخدام
# Base for station construction window(s)
STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}وضح منطقة التغطية
@@ -2039,6 +2093,8 @@ STR_ROAD_TOOLBAR_TOOLTIP_BUILD_ROAD_TUNNEL :{BLACK}بناء
STR_ROAD_TOOLBAR_TOOLTIP_BUILD_TRAMWAY_TUNNEL :{BLACK}بناء نفق ترام
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_ROAD :{BLACK}بدل بناء/إزالة الطرق
STR_ROAD_TOOLBAR_TOOLTIP_TOGGLE_BUILD_REMOVE_FOR_TRAMWAYS :{BLACK}بدل بناء / ازالة طرق الترام
STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_ROAD :{BLACK}تحويل / ترقية نوع الطريق. Shift يبدل بين البناء / إظهار تقدير التكلفة
STR_ROAD_TOOLBAR_TOOLTIP_CONVERT_TRAM :{BLACK}تحويل / ترقية نوع الطريق. Shift يبدل بين البناء / إظهار تقدير التكلفة
STR_ROAD_NAME_TRAM :خط الترام
@@ -2198,10 +2254,13 @@ STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP :{BLACK}اعرض
STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP :{BLACK}اربط بالخريطة المصغرة
STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP :{BLACK}اعرض المصانع المختارة في الخرائط المصغرة ايضا.
STR_INDUSTRY_CARGOES_SELECT_CARGO :{BLACK}اختر البضائع
STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP :{BLACK}حدد البضائع التي تريد عرضها
STR_INDUSTRY_CARGOES_SELECT_INDUSTRY :{BLACK}اختر الصناعة
STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP :{BLACK}حدد الصناعة التي تريد عرضها
# Land area window
STR_LAND_AREA_INFORMATION_CAPTION :{WHITE}معلومات ارض
STR_LAND_AREA_INFORMATION_LOCATION_TOOLTIP :{BLACK}قم بتوسيط الشاشة على موقع المربع. يؤدي الضغط على Ctrl + النقر بالماوس إلى فتح منفذ عرض جديد على موقع المربع
STR_LAND_AREA_INFORMATION_COST_TO_CLEAR_N_A :{BLACK} تكلفة الازالة : {LTBLUE} غير متاح
STR_LAND_AREA_INFORMATION_COST_TO_CLEAR :{BLACK}تكلفة الازالة : {RED}{CURRENCY_LONG}
STR_LAND_AREA_INFORMATION_REVENUE_WHEN_CLEARED :{BLACK} الدخل عند للتجديد: {LTBLUE}{CURRENCY_LONG}
@@ -2368,12 +2427,6 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}عدد المدن:
STR_MAPGEN_DATE :{BLACK}التاريخ:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}عدد المصانع:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK} :أقصى ارتفاع للخريطة
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK} زيادة الارتفاع الأقصى للجبال على الخريطة بواحد
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK} خفض الحد الأقصى للارتفاع الجبال على الخريطة بواحد
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK} ارتفاع خط الثلج
STR_MAPGEN_SNOW_LINE_UP :{BLACK}ارفع خط الثلج مستوى واحد
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}خفض خط الثلج مستوى واحد
STR_MAPGEN_LAND_GENERATOR :{BLACK}مولد الخريطة:
STR_MAPGEN_TERRAIN_TYPE :{BLACK} نوع التضاريس
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}مستوى البحر
@@ -2399,8 +2452,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}اسم
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}الحجم:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} * {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}تغيير أعلى ارتفاع للخريطة
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}غير مستوى خط الثلج
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}غير سنة البداية
# SE Map generation
@@ -2611,6 +2662,7 @@ STR_TOWN_POPULATION :{BLACK}سكان
STR_TOWN_VIEW_TOWN_CAPTION :{WHITE}{TOWN}
STR_TOWN_VIEW_CITY_CAPTION :{WHITE}{TOWN} - مدينة -
STR_TOWN_VIEW_POPULATION_HOUSES :{BLACK}السكان: {ORANGE}{COMMA}{BLACK} المنازل: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_LAST_MONTH_MAX :{BLACK}{CARGO_LIST} الشهر الماضي: {ORANGE}{COMMA}{BLACK} الأقصى: {ORANGE}{COMMA}
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH :{BLACK} نمو المدينة يتطلب بضائع
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_GENERAL :{ORANGE}{STRING}{RED} مطلوب
STR_TOWN_VIEW_CARGO_FOR_TOWNGROWTH_REQUIRED_WINTER :{ORANGE}{STRING}{BLACK}مطلوب في الشتاء
@@ -2635,6 +2687,8 @@ STR_TOWN_VIEW_RENAME_TOWN_BUTTON :اعادة تس
# Town local authority window
STR_LOCAL_AUTHORITY_CAPTION :{WHITE}بلدية {TOWN}
STR_LOCAL_AUTHORITY_ZONE :{BLACK}المنطقة
STR_LOCAL_AUTHORITY_ZONE_TOOLTIP :{BLACK}عرض منطقة حدود السلطة المحلية
STR_LOCAL_AUTHORITY_COMPANY_RATINGS :{BLACK}تقييم اداء الشركات
STR_LOCAL_AUTHORITY_COMPANY_RATING :{YELLOW}{COMPANY} {COMPANY_NUM}: {ORANGE}{STRING}
STR_LOCAL_AUTHORITY_ACTIONS_TITLE :{BLACK}الخيارات المتاحة
@@ -2661,6 +2715,7 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW} اشت
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW} ارشي السلطات المحلية لزيادة كفائة الشركة. هناك عقاب شديد اذا ما اكتشفت الرشوة.{} التكلفة: {CURRENCY_LONG}
# Goal window
STR_GOALS_SPECTATOR :الأهداف العالمية
STR_GOALS_TEXT :{ORANGE}{STRING}
# Goal question window
@@ -2670,7 +2725,9 @@ STR_GOAL_QUESTION_CAPTION_WARNING :تحذير
STR_GOAL_QUESTION_CAPTION_ERROR :خطا
############ Start of Goal Question button list
STR_GOAL_QUESTION_BUTTON_YES :نعم
STR_GOAL_QUESTION_BUTTON_RETRY :إعادة المحاولة
STR_GOAL_QUESTION_BUTTON_RESTART :إعادة تشغيل
############ End of Goal Question button list
# Subsidies window
@@ -2683,7 +2740,7 @@ STR_SUBSIDIES_SUBSIDISED_FROM_TO :{ORANGE}{STRING
STR_SUBSIDIES_TOOLTIP_CLICK_ON_SERVICE_TO_CENTER :{BLACK}اضغط على الخدمة لتوسيط الخريطة على المصنع/المدينة. اضغط + كنترول لفتح شاشة عرض جديدة للمدينة.
# Story book window
STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY}كتاب القصة
STR_STORY_BOOK_CAPTION :{WHITE}{COMPANY}كتاب القصص
# Station list window
STR_STATION_LIST_TOOLTIP :{BLACK}اسم المحطة - اضغط على اسم المحطة لتوسيطها في الشاشة. اضغط + كنترول لفتح شاشة عرض جديدة بمنطقة المحطة.
@@ -2705,11 +2762,15 @@ STR_STATION_VIEW_ACCEPTS_BUTTON :{BLACK}يستق
STR_STATION_VIEW_ACCEPTS_TOOLTIP :{BLACK}عرض لائحة بالبضائع المقبولة
STR_STATION_VIEW_ACCEPTS_CARGO :{BLACK}يقبل: {WHITE}{CARGO_LIST}
STR_STATION_VIEW_EXCLUSIVE_RIGHTS_COMPANY :{YELLOW}{COMPANY}{BLACK} اشترى حقوق النقل الحصرية في هذه المدينة.
STR_STATION_VIEW_RATINGS_BUTTON :{BLACK}معدل النقل
STR_STATION_VIEW_RATINGS_TOOLTIP :{BLACK}اظهار معدل النقل للمحطة
STR_STATION_VIEW_GROUP :{BLACK}جمع بواسطة
STR_STATION_VIEW_WAITING_AMOUNT :الكمية: في الانتظار
STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} من {STATION}
STR_STATION_VIEW_TO :{YELLOW}{CARGO_SHORT} إلى {STATION}
############ range for rating starts
@@ -2738,7 +2799,7 @@ STR_STATION_VIEW_RENAME_STATION_CAPTION :اعادة تس
STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK} ركز شاشة العرض على نقطة العبور
STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}غير اسم نقطة العبور
STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK} ضع العوامة في مركز شاشة العرض
STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK} ضع العوامة في مركز الشاشة
STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK} غير اسم العومة
STR_EDIT_WAYPOINT_NAME :{WHITE}عدل اسم نقطة العبور
@@ -2771,6 +2832,7 @@ STR_FINANCES_BORROW_BUTTON :{BLACK}اقتر
STR_FINANCES_BORROW_TOOLTIP :{BLACK}زيادة حجم القرض المسموح به
STR_FINANCES_REPAY_BUTTON :{BLACK}تسديد{CURRENCY_LONG}
STR_FINANCES_REPAY_TOOLTIP :{BLACK}اعادة جزء من القرض
STR_FINANCES_INFRASTRUCTURE_BUTTON :{BLACK}البنية التحتية
# Company view
STR_COMPANY_VIEW_CAPTION :{WHITE}{COMPANY} {BLACK}{COMPANY_NUM}
@@ -2786,6 +2848,13 @@ STR_COMPANY_VIEW_SHIPS :{WHITE}{COMMA}
STR_COMPANY_VIEW_VEHICLES_NONE :{WHITE}بدون
STR_COMPANY_VIEW_COMPANY_VALUE :{GOLD}قيمة الشركة: {WHITE}{CURRENCY_LONG}
STR_COMPANY_VIEW_SHARES_OWNED_BY :{WHITE}( {COMMA}% مملوكة بواسطة {COMPANY})
STR_COMPANY_VIEW_INFRASTRUCTURE :{GOLD}البنية تحتية:
STR_COMPANY_VIEW_INFRASTRUCTURE_RAIL :{WHITE}{COMMA} قطعة السكك الحديدية
STR_COMPANY_VIEW_INFRASTRUCTURE_ROAD :{WHITE}{COMMA} قطعة الطريق
STR_COMPANY_VIEW_INFRASTRUCTURE_WATER :{WHITE}{COMMA} مربعات الماء
STR_COMPANY_VIEW_INFRASTRUCTURE_STATION :{WHITE}{COMMA} مربع من المحطة
STR_COMPANY_VIEW_INFRASTRUCTURE_AIRPORT :{WHITE}{COMMA} مطار
STR_COMPANY_VIEW_INFRASTRUCTURE_NONE :{WHITE}لا شيء
STR_COMPANY_VIEW_BUILD_HQ_BUTTON :{BLACK}بناء مقر الشركة الرئيسي
STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP :{BLACK}ابني مقر الشركة
@@ -2793,6 +2862,10 @@ STR_COMPANY_VIEW_VIEW_HQ_BUTTON :{BLACK}عرض
STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP :{BLACK}اعرض مقر الشركة
STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}اعادة بناء مقر الشركة
STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}اعادة بناء مقر الشركة بمكان آخر و بتكلفة 1% من قيمة الشركة.
STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}التفاصيل
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}عرض تفاصيل حسابات البنية التحتية
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}أعطاء المال
STR_COMPANY_VIEW_GIVE_MONEY_TOOLTIP :{BLACK}إعطاء المال لهذه الشركة
STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}وجة جديد
STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}اختر وجة جديد للمدير
@@ -2810,10 +2883,21 @@ STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP :{BLACK}بيع 2
STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION :اسم الشركة
STR_COMPANY_VIEW_PRESIDENT_S_NAME_QUERY_CAPTION :اسم صاحب الشركة
STR_COMPANY_VIEW_GIVE_MONEY_QUERY_CAPTION :أدخل مبلغ المال الذي تريد تقديمه
STR_BUY_COMPANY_MESSAGE :{WHITE}نحن نبحث عن شركة لتشتري شركتنا.{}{} عل ترغب في شراء {COMPANY} بـ {CURRENCY_LONG}؟
# Company infrastructure window
STR_COMPANY_INFRASTRUCTURE_VIEW_CAPTION :{WHITE}البنية التحتية لـ {COMPANY}
STR_COMPANY_INFRASTRUCTURE_VIEW_RAIL_SECT :{GOLD}قطع السكك الحديدية:
STR_COMPANY_INFRASTRUCTURE_VIEW_SIGNALS :{WHITE}إشارات
STR_COMPANY_INFRASTRUCTURE_VIEW_ROAD_SECT :{GOLD}قطع الطريق:
STR_COMPANY_INFRASTRUCTURE_VIEW_TRAM_SECT :{GOLD}قطع الترام:
STR_COMPANY_INFRASTRUCTURE_VIEW_WATER_SECT :{GOLD}مربعات من الماء:
STR_COMPANY_INFRASTRUCTURE_VIEW_CANALS :{WHITE}القنوات
STR_COMPANY_INFRASTRUCTURE_VIEW_STATION_SECT :{GOLD}المحطات:
STR_COMPANY_INFRASTRUCTURE_VIEW_STATIONS :{WHITE}مربعات من المحطة
STR_COMPANY_INFRASTRUCTURE_VIEW_AIRPORTS :{WHITE}المطارات
# Industry directory
STR_INDUSTRY_DIRECTORY_CAPTION :{WHITE}صناعات
@@ -2896,6 +2980,9 @@ STR_GROUP_REMOVE_ALL_VEHICLES :أزل جميع
STR_GROUP_RENAME_CAPTION :{BLACK}إعادة تسمية مجموعة
STR_GROUP_PROFIT_THIS_YEAR :دخل هذه السنة:
STR_GROUP_PROFIT_LAST_YEAR :دخل السنة الماضية:
STR_GROUP_OCCUPANCY :الاستخدام الحالي:
# Build vehicle window
STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :عربات قطار جديدة
@@ -2931,6 +3018,7 @@ STR_PURCHASE_INFO_ALL_TYPES :كل انواع
STR_PURCHASE_INFO_NONE :بدون
STR_PURCHASE_INFO_ALL_BUT :الكل الا {CARGO_LIST}
STR_PURCHASE_INFO_MAX_TE :{BLACK}تأثير الجذب القصى: {GOLD}{FORCE}
STR_PURCHASE_INFO_AIRCRAFT_TYPE :{BLACK}نوع الطائرة:{GOLD}{STRING}
STR_BUY_VEHICLE_TRAIN_LIST_TOOLTIP :{BLACK}قائمة اختيار القطارات - اضغط على العربة لعرض معلوماتها
STR_BUY_VEHICLE_ROAD_VEHICLE_LIST_TOOLTIP :{BLACK}قائمة اختيار العربات - اضغط على العربة لاظهار معلوماتها
@@ -2960,7 +3048,14 @@ STR_BUY_VEHICLE_ROAD_VEHICLE_RENAME_TOOLTIP :{BLACK} اعا
STR_BUY_VEHICLE_SHIP_RENAME_TOOLTIP :{BLACK}اعادة تسمية نوع السفينة
STR_BUY_VEHICLE_AIRCRAFT_RENAME_TOOLTIP :{BLACK}اعادة تسمية نوع الطائرة
STR_BUY_VEHICLE_TRAIN_HIDE_TOGGLE_BUTTON :{BLACK}إخفاء
STR_BUY_VEHICLE_ROAD_VEHICLE_HIDE_TOGGLE_BUTTON :{BLACK}إخفاء
STR_BUY_VEHICLE_SHIP_HIDE_TOGGLE_BUTTON :{BLACK}إخفاء
STR_BUY_VEHICLE_AIRCRAFT_HIDE_TOGGLE_BUTTON :{BLACK}إخفاء
STR_BUY_VEHICLE_TRAIN_SHOW_TOGGLE_BUTTON :{BLACK}عرض
STR_BUY_VEHICLE_ROAD_VEHICLE_SHOW_TOGGLE_BUTTON :{BLACK}عرض
STR_BUY_VEHICLE_SHIP_SHOW_TOGGLE_BUTTON :{BLACK}عرض
STR_BUY_VEHICLE_AIRCRAFT_SHOW_TOGGLE_BUTTON :{BLACK}عرض
STR_BUY_VEHICLE_AIRCRAFT_HIDE_SHOW_TOGGLE_TOOLTIP :{BLACK} تبيدل بين إخفاء / عرض نوع الطائرة
@@ -3099,6 +3194,7 @@ STR_REPLACE_REMOVE_WAGON_HELP :{BLACK} الم
# Vehicle view
STR_VEHICLE_VIEW_CAPTION :{WHITE}{VEHICLE}
STR_VEHICLE_VIEW_ROAD_VEHICLE_CENTER_TOOLTIP :{BLACK}وسط الشاشة على موقع السيارة.النقر بالماوس مرتين لمتابعة السيارة. يفتح Ctrl + النقر بالماوس منفذ عرض جديد على موقع السيارة
STR_VEHICLE_VIEW_TRAIN_SEND_TO_DEPOT_TOOLTIP :{BLACK} ارسل القطار للورشة - مفتاح التحكم (كنترول) + الضغط سيرسله لصيانة فقط
STR_VEHICLE_VIEW_ROAD_VEHICLE_SEND_TO_DEPOT_TOOLTIP :{BLACK}ارسل العربة الى الورشة. مفتاح التحكم (كنترول) + الضغط ترسل للصيانة فقط
@@ -3188,6 +3284,7 @@ STR_VEHICLE_DETAILS_SERVICING_INTERVAL_PERCENT :{BLACK}فترا
STR_VEHICLE_DETAILS_INCREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK}زيادة فترات الصيانة بقدر 10. ومع مفتاح كنترول بمقدار 5.
STR_VEHICLE_DETAILS_DECREASE_SERVICING_INTERVAL_TOOLTIP :{BLACK} انقاص فترات الصيانة بمعدل 10. Ctrl+ الضغط الانقاص بمعدل 5.
STR_VEHICLE_DETAILS_DAYS :الأيام
STR_QUERY_RENAME_TRAIN_CAPTION :{WHITE}اسم القطار
STR_QUERY_RENAME_ROAD_VEHICLE_CAPTION :{WHITE}تسمية العربة
@@ -3424,6 +3521,7 @@ STR_TIMETABLE_STATUS_NOT_STARTED :{BLACK}جدول
STR_TIMETABLE_STATUS_START_AT :{BLACK}جدولة الاعمال ستبدأ فى {STRING}
STR_TIMETABLE_STARTING_DATE :{BLACK}تاريخ البدأ
STR_TIMETABLE_STARTING_DATE_TOOLTIP :{BLACK}حدد تاريخًا كنقطة بداية لهذا الجدول الزمني. يحدد Ctrl + Click نقطة البداية لهذا الجدول الزمني ويوزع جميع المركبات التي تشارك هذا الطلب بالتساوي بناءً على ترتيبها النسبي ، إذا كان الطلب محددًا بجدول زمني كامل
STR_TIMETABLE_CHANGE_TIME :{BLACK}غير الوقت
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}غير مقدار الزمن الذي يستغرقه هذا الامر
@@ -3486,6 +3584,7 @@ STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW} شاش
STR_AI_CONFIG_CAPTION :{WHITE}إعدادات الذكاء الصناعي
STR_AI_CONFIG_HUMAN_PLAYER :لاعب انساني
STR_AI_CONFIG_RANDOM_AI :ذكاء صناعي عشوائي
STR_AI_CONFIG_NONE :(لا شيء)
STR_AI_CONFIG_MOVE_UP :{BLACK}انقل للاعلى
STR_AI_CONFIG_MOVE_UP_TOOLTIP :{BLACK}انقل الذكاء الاصطناعي المختار للاعلى
@@ -3510,6 +3609,7 @@ STR_AI_LIST_CANCEL :{BLACK} الغ
STR_AI_LIST_CANCEL_TOOLTIP :{BLACK} لا تغير الذكاء الصناعي
STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}التقط لقطة شاشة كاملة
STR_SCREENSHOT_WORLD_SCREENSHOT :{BLACK}صور الخاريطة الكاملة
# AI Parameters
STR_AI_SETTINGS_CLOSE :{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
@@ -2612,9 +2613,6 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Herri kopurua:
STR_MAPGEN_DATE :{BLACK}Data:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Industria kopurua:
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Elur garaiera:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Igo puntu batean elur garaiera
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Jeitsi puntu batean elur garaiera
STR_MAPGEN_LAND_GENERATOR :{BLACK}Paisaia sortzailea:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Lur mota:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Itsaso kopurua:
@@ -2640,8 +2638,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Garaiera
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Tamaina:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Aldatu maparen garaiera maximoa
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Elur garaiera aldatu
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Hasierako urtea aldatu
# SE Map generation

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}Выберыце памер элементаў інтэрфейсу
@@ -1488,8 +1489,6 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Пераклю
STR_CONFIG_SETTING_CITY_APPROVAL :Стаўленьне гарадзкой рады да рэструктурызацыі навакольляў: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Выберыце ўзровень шуму й забруджваньня навакольнага асяроддзя кампаніямі, які ўплывае на іх рэйтынґ у гарадах і магчымасьць далейшага будаўніцтва каля гарадоў
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Максімальная вышыня: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Усталёўка максімальна дапушчальнай вышыні гор на мапе
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Немагчыма зьмяніць максімальную вышыню. На мапе ёсць горы вышэй гэтага значэньня.
STR_CONFIG_SETTING_AUTOSLOPE :Дазволіць зьмену ляндшафту пад будынкамі, дарогамі й г. д. (аўтаспускі): {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Дазволіць зьмену ляндшафту пад будынкамі й рэйкамi, не выдаляючы іx
@@ -3111,12 +3110,6 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Колькасьць гарадоў:
STR_MAPGEN_DATE :{BLACK}Дата:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Колькасьць прадпрыемстваў:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Макс. вышыня мапы:
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Павялічыць максімальную вышыню мапы на 1
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Паменшыць максімальную вышыню мапы на 1
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Вышыня сьнегавой лініі:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Падняць сьнегавую лінію
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Апусьціць сьнегавую лінію
STR_MAPGEN_LAND_GENERATOR :{BLACK}Ґенэратар ляндшафту:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Тып ляндшафту:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Колькасьць азёраў/мораў:
@@ -3142,8 +3135,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Назв
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Памер:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} * {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Максімальная вышыня мапы
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Зьмяніць вышыню сьнегавой лініі
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Зьмяніць год пачатку гульні
# SE Map generation

View File

@@ -378,7 +378,7 @@ STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Colocar
STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Salvar cenário
STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Carregar cenário
STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Salvar mapa topográfico
STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Carregar mapa de elevação
STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Carregar mapa topográfico
STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Sair do editor de cenários
STR_SCENEDIT_FILE_MENU_SEPARATOR :
STR_SCENEDIT_FILE_MENU_QUIT :Sair
@@ -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
@@ -1125,6 +1128,8 @@ STR_TERRAIN_TYPE_FLAT :Plano
STR_TERRAIN_TYPE_HILLY :Acidentado
STR_TERRAIN_TYPE_MOUNTAINOUS :Montanhoso
STR_TERRAIN_TYPE_ALPINIST :Alpinista
STR_TERRAIN_TYPE_CUSTOM :Altura personalizada
STR_TERRAIN_TYPE_CUSTOM_VALUE :Altura personalizada ({NUM})
STR_CITY_APPROVAL_PERMISSIVE :Permissivo
STR_CITY_APPROVAL_TOLERANT :Tolerante
@@ -1206,9 +1211,11 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Alterna desastr
STR_CONFIG_SETTING_CITY_APPROVAL :Atitude da prefeitura em relação à restruturação local: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Escolhe como a poluição sonoroa e ambiental afeta a classificação na cidade e as ações futuras naquela área
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Altura máx. do mapa: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Define a altitude máxima para montanhas no mapa
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Impossível definir a altitude máx. do mapa para esse valor. Há ao menos uma montanha mais alta que isso
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Limite de altura do mapa: {STRING}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Define a altura máxima do terreno do mapa. Com "(automático)", um bom valor será escolhido após a geração do terreno
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :(automático)
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Impossível definir o limite de altura do mapa para este valor. Há ao menos uma montanha mais alta que isso
STR_CONFIG_SETTING_AUTOSLOPE :Permitir paisagismo sob edifícios, trilhos, etc.: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permite paisagismo sob edifícios e vias sem precisar removê-las
STR_CONFIG_SETTING_CATCHMENT :Dimensionamento mais realista das áreas de abrangência: {STRING}
@@ -1352,7 +1359,13 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Define quantas
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Dist máx da borda para Refinarias de Óleo: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Refinarias são construídas apenas nas bordas, ou no litoral, para ilhas
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Altura da linha de neve: {STRING}
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Controla a que altitude a neve começa nos climas sub-árticos. Neve também afeta geração de indústrias e necessidades para o crescimento das cidades
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Controla a que altitude a neve começa nos climas sub-árticos. Neve também afeta geração de indústrias e necessidades para o crescimento das cidades. Só pode ser modificado por meio do Editor de cenário ou é de outra forma calculado por meio de "cobertura de neve"
STR_CONFIG_SETTING_SNOW_COVERAGE :Cobertura de neve: {STRING}
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Controla a quantidade aproximada de neve no terreno subártico. A neve também afeta os requisitos de geração de indústria e crescimento de cidades. Usado apenas durante a geração de mapas. Terreno logo acima do nível do mar é sempre sem neve
STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_DESERT_COVERAGE :Cobertura do deserto: {STRING}
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Controla a quantidade aproximada de deserto no terreno tropical. O deserto também afeta a geração de indústrias. Usado apenas durante a geração do mapa
STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Irregularidade do terreno: {STRING}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis apenas) Escolhe a frequência de colinas: Terrenos planos têm menos colinas, mais espalhadas. Montanhosos tem mais colinas, que pode se tornar repetitivo
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Muito Regular
@@ -2340,6 +2353,9 @@ STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD
STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Sim, baixar os gráficos
STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Não, sair do OpenTTD
STR_MISSING_GRAPHICS_ERROR_TITLE :{WHITE}O download falhou
STR_MISSING_GRAPHICS_ERROR :{BLACK}O download de gráficos falhou.{}Por favor, baixe os gráficos manualmente.
STR_MISSING_GRAPHICS_ERROR_QUIT :{BLACK}Sair do OpenTTD
# Transparency settings window
STR_TRANSPARENCY_CAPTION :{WHITE}Opções de Transparência
@@ -2890,12 +2906,17 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}No. de cidades:
STR_MAPGEN_DATE :{BLACK}Data:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}No. de indústrias:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Altitude máx. do mapa:
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Aumenta a altitude máxima das montanhas no mapa em uma unidade
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Diminui a altitude máxima das montanhas no mapa em uma unidade
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Linha da neve
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Aumentar a linha da neve em um ponto
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Diminuir a linha da neve em um ponto
STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Pico mais alto:
STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Aumentar a altura máxima do pico mais alto no mapa por um
STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Diminuir a altura máxima do pico mais alto no mapa por um
STR_MAPGEN_SNOW_COVERAGE :{BLACK}Cobertura de neve:
STR_MAPGEN_SNOW_COVERAGE_UP :{BLACK}Aumentar em dez porcento a cobertura de neve
STR_MAPGEN_SNOW_COVERAGE_DOWN :{BLACK}Reduzir em dez porcento a cobertura de neve
STR_MAPGEN_SNOW_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_DESERT_COVERAGE :{BLACK}Cobertura do deserto:
STR_MAPGEN_DESERT_COVERAGE_UP :{BLACK}Aumentar a cobertura do deserto em dez por cento
STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Diminuir a cobertura do deserto em dez por cento
STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_LAND_GENERATOR :{BLACK}Gerador de terra
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Tipo de terreno
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Nível do mar:
@@ -2921,8 +2942,10 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nome do
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Tamanho:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Alterar a altitude máxima do mapa
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Mudar linha da neve
STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Altura alvo do pico
STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT :{WHITE}Pico mais alto
STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT :{WHITE}Cobertura de neve (%)
STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT :{WHITE}Cobertura do deserto (%)
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Mudar data de início
# SE Map generation
@@ -4339,6 +4362,7 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Apenas u
STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Captura de tela gigante
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}A captura de tela terá uma resolução de {COMMA}x{COMMA} pixels. Pode levar algum tempo. Deseja continuar?
STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}Mapa topográfico salvo com sucesso como '{STRING}'. O pico mais alto é {NUM}
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Foto salvado com sucesso como '{STRING}'
STR_ERROR_SCREENSHOT_FAILED :{WHITE}Falha ao tirar foto!

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}Изберете размера на интерфейс елемент за използване
@@ -1159,8 +1160,6 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Включва
STR_CONFIG_SETTING_CITY_APPROVAL :Отношението на градския съвет към реструктурирането на района: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Изберете какво количество шум и поражения по околната среда причинени от компаниите афектират техния рейтинг в града и бъдещи конструкции в района.
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Максимална височина на картата: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Определете максималната допустима височина за планини на картата
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Не можете да зададете максималната височина на картата на тази стойност. Поне една планина на карта е по-висока
STR_CONFIG_SETTING_AUTOSLOPE :Тераформиране под постройки (autoslope): {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Разреши промяна на наклона на терена под постройки и пътища без необходимост от премахване
@@ -2671,12 +2670,6 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Брой градове:
STR_MAPGEN_DATE :{BLACK}Дата:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Брой индустрии:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Максимална височина на картата:
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Увеличаване на максималната височина на планините на карта с едно
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Намаляне максималната височина на планините на карта с едно
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Снежна линия:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Преместване снежната линия нагоре
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Преместване снежната линия надолу
STR_MAPGEN_LAND_GENERATOR :{BLACK}Земегенератор:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Тип на терен:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Морско ниво:
@@ -2702,8 +2695,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Име
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Размер:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Промяна на максималната височина на картата
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Височина на снежната линия
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Промяна началната година
# SE Map generation

View File

@@ -387,7 +387,7 @@ STR_SCENEDIT_FILE_MENU_QUIT :Surt
############ range for settings menu starts
STR_SETTINGS_MENU_GAME_OPTIONS :Opcions de la partida
STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :Configuració
STR_SETTINGS_MENU_SCRIPT_SETTINGS :Paràmetres de les IA i de l'script de la partida
STR_SETTINGS_MENU_SCRIPT_SETTINGS :Paràmetres dels scripts d'IA/partida
STR_SETTINGS_MENU_NEWGRF_SETTINGS :Extensions NewGRF
STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :Opcions de transparència
STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :Mostra els noms de les poblacions
@@ -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
@@ -1125,6 +1128,8 @@ STR_TERRAIN_TYPE_FLAT :Pla
STR_TERRAIN_TYPE_HILLY :Accidentat
STR_TERRAIN_TYPE_MOUNTAINOUS :Muntanyós
STR_TERRAIN_TYPE_ALPINIST :Escarpat
STR_TERRAIN_TYPE_CUSTOM :Alçada personalitzada
STR_TERRAIN_TYPE_CUSTOM_VALUE :Alçada personalitzada ({NUM})
STR_CITY_APPROVAL_PERMISSIVE :Permissiva
STR_CITY_APPROVAL_TOLERANT :Tolerant
@@ -1206,9 +1211,11 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Permet o no que
STR_CONFIG_SETTING_CITY_APPROVAL :Actitud de l'alcaldia de la població enfront les reestructuracions a la zona: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Establiu com afecta al prestigi de les companyies el soroll i els danys ambientals que provoquen. Aquest prestigi influirà en la futura acceptació o denegació d'accions de construcció a la zona.
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Alçada màxima del mapa: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Estableix l'alçada màxima permesa del terreny en el mapa
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}No es pot escollir aquesta alçada màxima del mapa: hi ha alguna zona del mapa actual que és més alta.
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Alçada màxima del mapa: {STRING}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Estableix l'alçada màxima del terreny del mapa. Amb «Automàtica», s'escollirà un valor adequat després que es generi el terreny.
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :Automàtica
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}No es pot escollir aquest límit d'alçada del mapa. Hi ha almenys una muntanya al mapa que és més alta.
STR_CONFIG_SETTING_AUTOSLOPE :Permet la modificació del terreny sota edificis, rails, etc.: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permet modelar el terreny sota les vies, els edificis i altres elements sense eliminar-los.
STR_CONFIG_SETTING_CATCHMENT :Estableix una mida més real de l'àrea d'influència: {STRING}
@@ -1340,7 +1347,7 @@ STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Mostra el nom d
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Afegeix una línia a la finestra de construcció de vehicles que mostri de quin NewGRF és el vehicle seleccionat.
STR_CONFIG_SETTING_LANDSCAPE :Paisatge: {STRING}
STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :El tipus de paisatge defineix escenaris amb diferents tipus de càrrega i requisits per al creixement de les poblacions. Els NewGRF i l'script de la partida poden modificar-ne l'aparença i el comportament
STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :El tipus de paisatge defineix escenaris amb diferents tipus de càrrega i requisits per al creixement de les poblacions. Els NewGRF i l'script de partida poden modificar-ne l'aparença i el comportament.
STR_CONFIG_SETTING_LAND_GENERATOR :Generador de terrenys: {STRING}
STR_CONFIG_SETTING_LAND_GENERATOR_HELPTEXT :L'algorisme generador original depèn del tipus de gràfics base i crea formes de terreny predefinides. TerraGenesis és un generador basat en el soroll Perlin que permet una configuració més precisa
STR_CONFIG_SETTING_LAND_GENERATOR_ORIGINAL :Original
@@ -1352,7 +1359,13 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Fixa el nombre
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Distància màxima des de la vora a les indústries de petroli: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limita a quina distància del mapa es poden construir refineries de petroli i plataformes petrolíferes. En mapes amb illes, serveix per assegurar que estan prop de la costa. En mapes de més de 256 caselles, aquest valor s'escala automàticament.
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Alçada dels estatges amb neu: {STRING}
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Controla a quina alçada la neu comença en el paisatge subàrtic. La neu també afecta la generació d'indústries i els requisits per al creixement de les poblacions
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Controla a quina alçada la neu comença en el paisatge subàrtic. La neu també afecta la generació d'indústries i els requisits per al creixement de les poblacions. Només es pot modificar a l'editor d'escenaris; altrament, es calcula fent servir la proporció de terreny nevat.
STR_CONFIG_SETTING_SNOW_COVERAGE :Terreny nevat: {STRING}
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Controla la quantitat aproximada de terreny nevat que hi ha en els paisatges subàrtics. La neu afecta a la generació d'indústries i el creixement de les poblacions. Només s'usa durant la generació de mapes. El terreny d'alçada propera al nivell del mar mai està nevat.
STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}{NBSP}%
STR_CONFIG_SETTING_DESERT_COVERAGE :Terreny desèrtic: {STRING}
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Controla la quantitat aproximada de terreny desèrtic que hi ha en els paisatges tropicals. Els deserts afecten a la generació d'indústries. Només s'usa durant la generació de mapes.
STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}{NBSP}%
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Geografia del terreny: {STRING}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Només TerraGenesis) Escollir la suavitat del paisatge: els terrenys suaus tenen menys turons i són regulars; els terrenys més rugosos són irregulars i tenen molts turons
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Molt suau
@@ -1437,7 +1450,7 @@ STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_LONG :llarga (31 Des
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_SHORT :curta (31-12-2008)
STR_CONFIG_SETTING_DATE_FORMAT_IN_SAVE_NAMES_ISO :ISO (2008-12-31)
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Posa en pausa automàticament quan comenci una nova partida: {STRING}
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME :Posa en pausa automàticament quan comenci una partida nova: {STRING}
STR_CONFIG_SETTING_PAUSE_ON_NEW_GAME_HELPTEXT :Quan està activat, el joc es posa en pausa automàticament quan es comenci una partida nova, permetent a l'usuari estudiar el mapa més detalladament
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL :Accions permeses mentre s'està fent una pausa a la partida: {STRING}
STR_CONFIG_SETTING_COMMAND_PAUSE_LEVEL_HELPTEXT :Seleccioneu quines accions es poden realitzar mentre s'està fent una pausa a la partida.
@@ -1455,7 +1468,7 @@ STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE :Mostra l'arriba
STR_CONFIG_SETTING_TIMETABLE_SHOW_ARRIVAL_DEPARTURE_HELPTEXT :Mostra als horaris l'arribada anticipadament i les hores de sortida
STR_CONFIG_SETTING_QUICKGOTO :Creació ràpida d'ordres per a vehicles: {STRING}
STR_CONFIG_SETTING_QUICKGOTO_HELPTEXT :Preselecciona el botó 'Vés a' quan s'obri la finestra d'ordres
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Tipus predeterminat de via (en nova partida/càrrega de partida): {STRING}
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE :Tipus predeterminat de via (després de carregar una partida o crear-ne una nova): {STRING}
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_HELPTEXT :Tipus de via a seleccionar després de començar o carregar una partida. 'El més antic disponible' selecciona el tipus de vies més antic disponible, 'El més modern disponible' selecciona el tipus de vies més modern, i 'El més utilitzat disponible' selecciona el tipus de vies que s'utilitzi més actualment
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_FIRST :El més antic disponible
STR_CONFIG_SETTING_DEFAULT_RAIL_TYPE_LAST :El més modern disponible
@@ -1511,7 +1524,7 @@ STR_CONFIG_SETTING_AI_BUILDS_SHIPS :Desactiva els v
STR_CONFIG_SETTING_AI_BUILDS_SHIPS_HELPTEXT :Activant aquesta opció fa que sigui impossible construir vaixells als jugadors IA.
STR_CONFIG_SETTING_AI_PROFILE :Perfil de paràmetres predeterminat: {STRING}
STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Escolliu quin perfil de paràmetres utilitzar per les IA aleatòries o com a valors inicials quan s'afegeix una nova IA o script de la partida.
STR_CONFIG_SETTING_AI_PROFILE_HELPTEXT :Escolliu el perfil de paràmetres de les IA aleatòries o els valors inicials quan s'afegeix una nova IA o script de partida.
STR_CONFIG_SETTING_AI_PROFILE_EASY :Fàcil
STR_CONFIG_SETTING_AI_PROFILE_MEDIUM :Mitjà
STR_CONFIG_SETTING_AI_PROFILE_HARD :Difícil
@@ -1531,11 +1544,11 @@ STR_CONFIG_SETTING_SERVINT_TRAINS_HELPTEXT :Estableix l'int
STR_CONFIG_SETTING_SERVINT_VALUE :{COMMA}{NBSP}di{P 0 a es}/%
STR_CONFIG_SETTING_SERVINT_DISABLED :Desactivat
STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES :Interval per defecte de servei per als vehicles: {STRING}
STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Estableix l'interval de revisió predeterminat pels nous vehicles de caretera, si no hi ha un interval de revisió explícit pel vehicle
STR_CONFIG_SETTING_SERVINT_ROAD_VEHICLES_HELPTEXT :Estableix l'interval de revisió predeterminat pels vehicles de carretera que es comprin, si no hi ha un interval de revisió explícit pel vehicle.
STR_CONFIG_SETTING_SERVINT_AIRCRAFT :Interval per defecte de servei per a les aeronaus: {STRING}
STR_CONFIG_SETTING_SERVINT_AIRCRAFT_HELPTEXT :Estableix l'interval de revisió predeterminat pels nous avions, si no hi ha un interval de revisió explícit pel vehicle
STR_CONFIG_SETTING_SERVINT_SHIPS :Interval per defecte de servei per als vaixells: {STRING}
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Estableix l'interval de revisió predeterminat pels nous vaixells, si no hi ha un interval de revisió explícit pel vehicle
STR_CONFIG_SETTING_SERVINT_SHIPS_HELPTEXT :Estableix l'interval de revisió predeterminat pels vaixells que es comprin, si no hi ha un interval de revisió explícit pel vehicle.
STR_CONFIG_SETTING_NOSERVICE :Desactiva les revisions quan les avaries s'estableixen a cap: {STRING}
STR_CONFIG_SETTING_NOSERVICE_HELPTEXT :Quan està activat, els vehicles no són revisats si no es poden espatllar
STR_CONFIG_SETTING_WAGONSPEEDLIMITS :Activa límits de velocitat per als vagons: {STRING}
@@ -1565,7 +1578,7 @@ STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED :Altres canvis d
STR_CONFIG_SETTING_NEWS_INDUSTRY_CHANGES_UNSERVED_HELPTEXT :Mostra les notícies de canvis als nivells de producció de les indústries que no estan proveïdes ni per la companyia ni pels competidors
STR_CONFIG_SETTING_NEWS_ADVICE :Alertes / informació sobre els vehicles de la companyia: {STRING}
STR_CONFIG_SETTING_NEWS_ADVICE_HELPTEXT :Mostra missatges sobre vehicles que necessitin atenció
STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Nous vehicles: {STRING}
STR_CONFIG_SETTING_NEWS_NEW_VEHICLES :Vehicles nous: {STRING}
STR_CONFIG_SETTING_NEWS_NEW_VEHICLES_HELPTEXT :Mostra les notícies d'aparicions de nous tipus de vehicles
STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE :Canvis en l'admissió de càrrega: {STRING}
STR_CONFIG_SETTING_NEWS_CHANGES_ACCEPTANCE_HELPTEXT :Mostra missatges sobre les estacions que canviïn l'acceptació d'alguna càrrega
@@ -1618,10 +1631,10 @@ STR_CONFIG_SETTING_CYCLE_SIGNAL_ALL :Totes
STR_CONFIG_SETTING_TOWN_LAYOUT :Disposició de carreteres per les noves poblacions: {STRING}
STR_CONFIG_SETTING_TOWN_LAYOUT_HELPTEXT :Disposició per la xarxa de carreteres de les poblacions
STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Original
STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Millors carreteres
STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :graella 2x2
STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :graella 3x3
STR_CONFIG_SETTING_TOWN_LAYOUT_DEFAULT :Distribució millorada
STR_CONFIG_SETTING_TOWN_LAYOUT_BETTER_ROADS :Distribució millorada
STR_CONFIG_SETTING_TOWN_LAYOUT_2X2_GRID :Graella 2x2
STR_CONFIG_SETTING_TOWN_LAYOUT_3X3_GRID :Graella 3x3
STR_CONFIG_SETTING_TOWN_LAYOUT_RANDOM :Aleatori
STR_CONFIG_SETTING_ALLOW_TOWN_ROADS :Les poblacions poden construir carreteres: {STRING}
STR_CONFIG_SETTING_ALLOW_TOWN_ROADS_HELPTEXT :Permet a les poblacions construir carreteres per créixer. Desactiveu aquesta opció per evitar que les poblacions construeixin carreteres.
@@ -1813,7 +1826,7 @@ STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... no s
# Intro window
STR_INTRO_CAPTION :{WHITE}OpenTTD {REV}
STR_INTRO_NEW_GAME :{BLACK}Nova partida
STR_INTRO_NEW_GAME :{BLACK}Partida nova
STR_INTRO_LOAD_GAME :{BLACK}Carrega una partida
STR_INTRO_PLAY_SCENARIO :{BLACK}Juga un escenari
STR_INTRO_PLAY_HEIGHTMAP :{BLACK}Juga un mapa d'alçades
@@ -1825,7 +1838,7 @@ STR_INTRO_HIGHSCORE :{BLACK}Taula de
STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}Configuració
STR_INTRO_NEWGRF_SETTINGS :{BLACK}Extensions NewGRF
STR_INTRO_ONLINE_CONTENT :{BLACK}Contingut en línia
STR_INTRO_SCRIPT_SETTINGS :{BLACK}Paràmetres de les IA/script de la partida
STR_INTRO_SCRIPT_SETTINGS :{BLACK}Paràmetres dels scripts d'IA/partida
STR_INTRO_QUIT :{BLACK}Surt
STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}Comença una partida nova. Ctrl+Clic salta la configuració del mapa
@@ -1845,7 +1858,7 @@ STR_INTRO_TOOLTIP_HIGHSCORE :{BLACK}Mostra l
STR_INTRO_TOOLTIP_CONFIG_SETTINGS_TREE :{BLACK}Mostra la finestra de configuració
STR_INTRO_TOOLTIP_NEWGRF_SETTINGS :{BLACK}Mostra la configuració de les extensions NewGRF
STR_INTRO_TOOLTIP_ONLINE_CONTENT :{BLACK}Comprova si hi ha continguts nous i actualitzats per a descarregar
STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Mostra els paràmetres de les IA/Script de la partida
STR_INTRO_TOOLTIP_SCRIPT_SETTINGS :{BLACK}Mostra els paràmetres dels scripts d'IA/partida
STR_INTRO_TOOLTIP_QUIT :{BLACK}Surt de l'OpenTTD.
STR_INTRO_BASESET :{WHITE}Al joc de gràfics base seleccionat li falten {NUM} sprite{P "" s}.{}Si us plau, comproveu si hi ha actualitzacions disponibles.
@@ -2251,7 +2264,7 @@ STR_NETWORK_SERVER_MESSAGE_GAME_UNPAUSED :Partida represa
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_NOT_ENOUGH_PLAYERS :nombre de jugadors
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_CONNECTING_CLIENTS :connectant clients
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_MANUAL :manual
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :script de la partida
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_GAME_SCRIPT :script de partida
STR_NETWORK_SERVER_MESSAGE_GAME_REASON_LINK_GRAPH :s'està esperant que s'actualitzi el graf de distribució
############ End of leave-in-this-order
STR_NETWORK_MESSAGE_CLIENT_LEAVING :deixant
@@ -2318,7 +2331,7 @@ STR_CONTENT_TYPE_SCENARIO :Escenari
STR_CONTENT_TYPE_HEIGHTMAP :Mapa d'alçades
STR_CONTENT_TYPE_BASE_SOUNDS :Sons base
STR_CONTENT_TYPE_BASE_MUSIC :Música base
STR_CONTENT_TYPE_GAME_SCRIPT :Script de la partida
STR_CONTENT_TYPE_GAME_SCRIPT :Script de partida
STR_CONTENT_TYPE_GS_LIBRARY :Llibreria GS
# Content downloading progress window
@@ -2330,7 +2343,7 @@ STR_CONTENT_DOWNLOAD_PROGRESS_SIZE :{WHITE}{BYTES}{
# Content downloading error messages
STR_CONTENT_ERROR_COULD_NOT_CONNECT :{WHITE}No s'ha pogut connectar amb el servidor de continguts...
STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}Descàrrega fallida...
STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD :{WHITE}La descàrrega ha fallat...
STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_CONNECTION_LOST :{WHITE}... connexió perduda
STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... no es pot escriure al fitxer
STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}No s'han pogut descomprimir els arxius descarregats
@@ -2340,6 +2353,9 @@ STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}L'OpenTT
STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Sí, descarregar els gràfics
STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}No, surt de l'OpenTTD.
STR_MISSING_GRAPHICS_ERROR_TITLE :{WHITE}Ha fallat la descàrrega.
STR_MISSING_GRAPHICS_ERROR :{BLACK}La descàrrega de gràfics ha fallat.{}Si us plau, baixeu els gràfics manualment.
STR_MISSING_GRAPHICS_ERROR_QUIT :{BLACK}Surt de l'OpenTTD
# Transparency settings window
STR_TRANSPARENCY_CAPTION :{WHITE}Opcions de transparència
@@ -2423,7 +2439,7 @@ STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Nombre d
STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Selecciona el nombre d'andanes de l'estació de tren
STR_STATION_BUILD_PLATFORM_LENGTH :{BLACK}Mida de les andanes
STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Selecciona la mida de les andanes de l'estació de tren
STR_STATION_BUILD_DRAG_DROP :{BLACK}Arrossega i Deixa
STR_STATION_BUILD_DRAG_DROP :{BLACK}Arrossega i deixa
STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Construeix una estació arrossegant i deixant
STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Selecciona un tipus de estació a mostrar
@@ -2577,60 +2593,60 @@ STR_PLANT_TREE_CAPTION :{WHITE}Arbres
STR_PLANT_TREE_TOOLTIP :{BLACK}Selecciona el tipus d'arbre a plantar. Si la casella ja conté un arbre, s'afegiran més arbres d'altres espècies independentment de quin estigui seleccionat
STR_TREES_RANDOM_TYPE :{BLACK}Arbres de tipus aleatori
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Situar arbres de tipus aleatori. Shift commuta construeix/mostra el cost estimat
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Arbres Aleatoris
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Planta arbres
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Planta arbres aleatòriament al paisatge
STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normal
STR_TREES_MODE_NORMAL_TOOLTIP :{BLACK}Planta un arbre a cada casella arrossegant el ratolí pel paisatge.
STR_TREES_MODE_FOREST_SM_BUTTON :Arbreda
STR_TREES_MODE_FOREST_SM_BUTTON :{BLACK}Arbreda
STR_TREES_MODE_FOREST_SM_TOOLTIP :{BLACK}Planta petits boscos arrossegant el ratolí pel paisatge.
STR_TREES_MODE_FOREST_LG_BUTTON :{BLACK}Bosc
STR_TREES_MODE_FOREST_LG_TOOLTIP :{BLACK}Planta grans boscos arrossegant el ratolí pel paisatge.
# Land generation window (SE)
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Generador de Terreny
STR_TERRAFORM_TOOLBAR_LAND_GENERATION_CAPTION :{WHITE}Generador de terreny
STR_TERRAFORM_TOOLTIP_PLACE_ROCKY_AREAS_ON_LANDSCAPE :{BLACK}Situa àrees de roques al paisatge
STR_TERRAFORM_TOOLTIP_DEFINE_DESERT_AREA :{BLACK}Defineix àrea de desert.{}Mantingues apretat Ctrl per treure'l
STR_TERRAFORM_TOOLTIP_INCREASE_SIZE_OF_LAND_AREA :{BLACK}Augmenta la mida de l'àrea de terreny a rebaixar/elevar
STR_TERRAFORM_TOOLTIP_DECREASE_SIZE_OF_LAND_AREA :{BLACK}Disminueix la mida de l'àrea de terreny a rebaixar/elevar
STR_TERRAFORM_TOOLTIP_GENERATE_RANDOM_LAND :{BLACK}Genera un terreny aleatori
STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Crear nou escenari
STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Restableix paisatge
STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Treure totes les propietats pertanyents a companyies del mapa
STR_TERRAFORM_SE_NEW_WORLD :{BLACK}Crea un escenari nou
STR_TERRAFORM_RESET_LANDSCAPE :{BLACK}Restableix el paisatge
STR_TERRAFORM_RESET_LANDSCAPE_TOOLTIP :{BLACK}Treu del mapa totes les propietats de les companyies.
STR_QUERY_RESET_LANDSCAPE_CAPTION :{WHITE}Restableix Paisatge
STR_RESET_LANDSCAPE_CONFIRMATION_TEXT :{WHITE}Estàs segur que vols treure totes les propietats pertanyents a companyies?
# Town generation window (SE)
STR_FOUND_TOWN_CAPTION :{WHITE}Generació de Poblacions
STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Nova Població
STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Funda una nova població. Shift+Clic mostra el cost estimat
STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Localitat Aleatòria
STR_FOUND_TOWN_CAPTION :{WHITE}Generació de poblacions
STR_FOUND_TOWN_NEW_TOWN_BUTTON :{BLACK}Població nova
STR_FOUND_TOWN_NEW_TOWN_TOOLTIP :{BLACK}Funda una població. Shift+Clic en mostra el cost estimat.
STR_FOUND_TOWN_RANDOM_TOWN_BUTTON :{BLACK}Crea una població aleatòria
STR_FOUND_TOWN_RANDOM_TOWN_TOOLTIP :{BLACK}Funda una població en un lloc aleatori
STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Moltes poblacions aleatòries
STR_FOUND_TOWN_MANY_RANDOM_TOWNS :{BLACK}Crea moltes poblacions aleatòries
STR_FOUND_TOWN_RANDOM_TOWNS_TOOLTIP :{BLACK}Omple el mapa amb poblacions situades aleatòriament
STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Nom de la població:
STR_FOUND_TOWN_NAME_TITLE :{YELLOW}Nom de la població nova:
STR_FOUND_TOWN_NAME_EDITOR_TITLE :{BLACK}Introdueix el nom de la població
STR_FOUND_TOWN_NAME_EDITOR_HELP :{BLACK}Clica per introduir el nom de la població
STR_FOUND_TOWN_NAME_RANDOM_BUTTON :{BLACK}Nom aleatori
STR_FOUND_TOWN_NAME_RANDOM_TOOLTIP :{BLACK}Genera un nom aleatori nou
STR_FOUND_TOWN_INITIAL_SIZE_TITLE :{YELLOW}Mida de població:
STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Petit
STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Mitjà
STR_FOUND_TOWN_INITIAL_SIZE_SMALL_BUTTON :{BLACK}Petita
STR_FOUND_TOWN_INITIAL_SIZE_MEDIUM_BUTTON :{BLACK}Mitjana
STR_FOUND_TOWN_INITIAL_SIZE_LARGE_BUTTON :{BLACK}Gran
STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Aleatori
STR_FOUND_TOWN_SIZE_RANDOM :{BLACK}Aleatòria
STR_FOUND_TOWN_INITIAL_SIZE_TOOLTIP :{BLACK}Selecciona la mida de la població
STR_FOUND_TOWN_CITY :{BLACK}Ciutat
STR_FOUND_TOWN_CITY_TOOLTIP :{BLACK}Les ciutats creixen més ràpid que els pobles{}Depenent de la configuració, són més grans quan es funden
STR_FOUND_TOWN_ROAD_LAYOUT :{YELLOW}Disposició de les carreteres de la població:
STR_FOUND_TOWN_SELECT_TOWN_ROAD_LAYOUT :{BLACK}Selecciona la disposició de les carreteres utilitzades per a aquesta població
STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Original
STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Millors carreteres
STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}graella 2x2
STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}graella 3x3
STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Aleatori
STR_FOUND_TOWN_SELECT_LAYOUT_ORIGINAL :{BLACK}Distribució original
STR_FOUND_TOWN_SELECT_LAYOUT_BETTER_ROADS :{BLACK}Distribució millorada
STR_FOUND_TOWN_SELECT_LAYOUT_2X2_GRID :{BLACK}Graella 2x2
STR_FOUND_TOWN_SELECT_LAYOUT_3X3_GRID :{BLACK}Graella 3x3
STR_FOUND_TOWN_SELECT_LAYOUT_RANDOM :{BLACK}Aleatòria
# Fund new industry window
STR_FUND_INDUSTRY_CAPTION :{WHITE}Finança una nova indústria
@@ -2676,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}
@@ -2890,12 +2906,17 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Nombre de poblacions:
STR_MAPGEN_DATE :{BLACK}Data:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Nombre d'indústries:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Alçada màxima del mapa:
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Augmenta l'alçada màxima del terreny en el mapa en una unitat
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Disminueix l'alçada màxima del mapa en una unitat
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Alçada dels estatges amb neu:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Mou els estatges amb neu un pas amunt
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Mou els estatges amb neu un pas avall
STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Alçada del cim més alt:
STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Augmenta l'alçada màxima o l'alçada màxima dels cims en una unitat
STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Redueix l'alçada màxima o l'alçada màxima dels cims en una unitat
STR_MAPGEN_SNOW_COVERAGE :{BLACK}Proporció de terreny nevat:
STR_MAPGEN_SNOW_COVERAGE_UP :{BLACK}Augmenta un 10 % la proporció de terreny nevat
STR_MAPGEN_SNOW_COVERAGE_DOWN :{BLACK}Redueix un 10 % la proporció de terreny nevat
STR_MAPGEN_SNOW_COVERAGE_TEXT :{BLACK}{NUM}{NBSP}%
STR_MAPGEN_DESERT_COVERAGE :{BLACK}Proporció de terreny desèrtic:
STR_MAPGEN_DESERT_COVERAGE_UP :{BLACK}Augmenta un 10 % la proporció de terreny desèrtic
STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Redueix un 10 % la proporció de terreny desèrtic
STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}{NBSP}%
STR_MAPGEN_LAND_GENERATOR :{BLACK}Generació de terrenys:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Tipus de terreny:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Nivell de mar:
@@ -2921,8 +2942,10 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nom del
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Mida:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Canvia l'alçada màxima del mapa
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Canvia l'alçada d'inici d'estatges amb neu
STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Alçada desitjada dels cims
STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT :{WHITE}Alçada màxima dels cims
STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT :{WHITE}Percentatge de terreny amb neu
STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT :{WHITE}Percentatge de terreny desèrtic
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Canviar l'any inicial
# SE Map generation
@@ -3362,24 +3385,24 @@ STR_FINANCES_CAPTION :{WHITE}Finances
STR_FINANCES_EXPENDITURE_INCOME_TITLE :{WHITE}Despeses/Ingressos
STR_FINANCES_YEAR :{WHITE}{NUM}
STR_FINANCES_SECTION_CONSTRUCTION :{GOLD}Construcció
STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Nous Vehicles
STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Desp. de Circ. de Trens
STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Desp. de Circ. de Vehicles
STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Desp. de Circ. d'Avions
STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Desp. de Circ. de Vaixells
STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Manteniment de Propietats
STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Ingressos de Trens
STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Ingressos de Vehicles
STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Ingressos d'Avions
STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Ingressos de Vaixells
STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Interessos del Préstec
STR_FINANCES_SECTION_NEW_VEHICLES :{GOLD}Compra de vehicles
STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}Desp. de circ. de trens
STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}Desp. de circ. de vehicles
STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}Desp. de circ. d'aeronaus
STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}Desp. de circ. de vaixells
STR_FINANCES_SECTION_PROPERTY_MAINTENANCE :{GOLD}Manteniment de propietats
STR_FINANCES_SECTION_TRAIN_INCOME :{GOLD}Ingressos de trens
STR_FINANCES_SECTION_ROAD_VEHICLE_INCOME :{GOLD}Ingressos de vehicles
STR_FINANCES_SECTION_AIRCRAFT_INCOME :{GOLD}Ingressos d'avions
STR_FINANCES_SECTION_SHIP_INCOME :{GOLD}Ingressos de vaixells
STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}Interessos del préstec
STR_FINANCES_SECTION_OTHER :{GOLD}Altres
STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG}
STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG}
STR_FINANCES_TOTAL_CAPTION :{WHITE}Total:
STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Balanç del Banc
STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}Balanç bancari
STR_FINANCES_LOAN_TITLE :{WHITE}Préstec
STR_FINANCES_MAX_LOAN :{WHITE}Préstec Màxim: {BLACK}{CURRENCY_LONG}
STR_FINANCES_MAX_LOAN :{WHITE}Préstec màxim: {BLACK}{CURRENCY_LONG}
STR_FINANCES_TOTAL_CURRENCY :{BLACK}{CURRENCY_LONG}
STR_FINANCES_BORROW_BUTTON :{BLACK}Demana {CURRENCY_LONG}
STR_FINANCES_BORROW_TOOLTIP :{BLACK}Augmenta l'import del préstec Ctrl+Clic per demanar tants diners com sigui possible
@@ -3534,7 +3557,7 @@ STR_GROUP_DEFAULT_AIRCRAFTS :Avions desagrup
STR_GROUP_COUNT_WITH_SUBGROUP :{TINY_FONT}{COMMA} (+{COMMA})
STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grups - Clica en un grup per llistar tots els vehicles d'aquest grup. Arrossega i solta per a canviar-ne la jerarquia.
STR_GROUPS_CLICK_ON_GROUP_FOR_TOOLTIP :{BLACK}Grups - Clica en un grup per llistar tots els vehicles d'aquest grup. Arrossega i deixa per a canviar-ne la jerarquia.
STR_GROUP_CREATE_TOOLTIP :{BLACK}Clica per crear un grup
STR_GROUP_DELETE_TOOLTIP :{BLACK}Elimina el grup seleccionat
STR_GROUP_RENAME_TOOLTIP :{BLACK}Canvia el nom del grup seleccionat
@@ -3555,19 +3578,19 @@ STR_GROUP_OCCUPANCY :Ocupació actua
STR_GROUP_OCCUPANCY_VALUE :{NUM}%
# Build vehicle window
STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Compra de nous vehicles ferroviaris
STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Compra de nous vehicles ferroviaris per vies electrificades
STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Compra de nous vehicles monorail
STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Compra de nous vehicles Maglev
STR_BUY_VEHICLE_TRAIN_RAIL_CAPTION :Compra de vehicles ferroviaris
STR_BUY_VEHICLE_TRAIN_ELRAIL_CAPTION :Compra de vehicles ferroviaris per vies electrificades
STR_BUY_VEHICLE_TRAIN_MONORAIL_CAPTION :Compra de vehicles monorail
STR_BUY_VEHICLE_TRAIN_MAGLEV_CAPTION :Compra de vehicles Maglev
STR_BUY_VEHICLE_ROAD_VEHICLE_CAPTION :Compra de nous vehicles de carretera
STR_BUY_VEHICLE_TRAM_VEHICLE_CAPTION :Nous vehicles de tramvia
STR_BUY_VEHICLE_TRAM_VEHICLE_CAPTION :Compra de vehicles de tramvia
############ range for vehicle availability starts
STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Compra de nous vehicles sobre vies
STR_BUY_VEHICLE_ROAD_VEHICLE_ALL_CAPTION :Automòbils nous
STR_BUY_VEHICLE_SHIP_CAPTION :Compra de nous vaixells
STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Compra de noves aeronaus
STR_BUY_VEHICLE_TRAIN_ALL_CAPTION :Compra de vehicles sobre vies
STR_BUY_VEHICLE_ROAD_VEHICLE_ALL_CAPTION :Compra automòbils
STR_BUY_VEHICLE_SHIP_CAPTION :Compra de vaixells
STR_BUY_VEHICLE_AIRCRAFT_CAPTION :Compra d'aeronaus
############ range for vehicle availability ends
STR_PURCHASE_INFO_COST_WEIGHT :{BLACK}Cost: {GOLD}{CURRENCY_LONG}{BLACK} Pes: {GOLD}{WEIGHT_SHORT}
@@ -3685,20 +3708,20 @@ STR_DEPOT_AUTOREPLACE_ROAD_VEHICLE_TOOLTIP :{BLACK}Autosubs
STR_DEPOT_AUTOREPLACE_SHIP_TOOLTIP :{BLACK}Autosubstitueix tots els vaixells de la drassana
STR_DEPOT_AUTOREPLACE_AIRCRAFT_TOOLTIP :{BLACK}Autosubstitueix tots els avions de l'hangar
STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Nous Vehicles
STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Nous Vehicles
STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Nous Vaixells
STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Nou Avió
STR_DEPOT_TRAIN_NEW_VEHICLES_BUTTON :{BLACK}Compra vehicles
STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_BUTTON :{BLACK}Compra vehicles
STR_DEPOT_SHIP_NEW_VEHICLES_BUTTON :{BLACK}Compra vaixells
STR_DEPOT_AIRCRAFT_NEW_VEHICLES_BUTTON :{BLACK}Compra avions
STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Compra un nou vehicle ferroviari
STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Compra un nou automòbil
STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Compra un nou vaixell
STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Compra un nou avió
STR_DEPOT_TRAIN_NEW_VEHICLES_TOOLTIP :{BLACK}Compra vehicles ferroviaris.
STR_DEPOT_ROAD_VEHICLE_NEW_VEHICLES_TOOLTIP :{BLACK}Compra automòbils nous.
STR_DEPOT_SHIP_NEW_VEHICLES_TOOLTIP :{BLACK}Compra vaixells nous.
STR_DEPOT_AIRCRAFT_NEW_VEHICLES_TOOLTIP :{BLACK}Compra avions nous.
STR_DEPOT_CLONE_TRAIN :{BLACK}Clona Tren
STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Clona Vehicle
STR_DEPOT_CLONE_SHIP :{BLACK}Clona Vaixell
STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Clona Avió
STR_DEPOT_CLONE_TRAIN :{BLACK}Clona un tren
STR_DEPOT_CLONE_ROAD_VEHICLE :{BLACK}Clona un vehicle
STR_DEPOT_CLONE_SHIP :{BLACK}Clona un vaixell
STR_DEPOT_CLONE_AIRCRAFT :{BLACK}Clona aeronau
STR_DEPOT_CLONE_TRAIN_DEPOT_INFO :{BLACK}Això comprarà una còpia del tren inclosos tots els vagons. Clica aquest botó i després en un tren dins o fora de les cotxeres. Control+Clic compartirà les ordres. Shift+Clic mostra el cost estimat sense comprar-lo
STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Això comprarà una còpia del vehicle. Clica aquest botó i després en un vehicle dins o fora de les cotxeres. Control+Clic compartirà les ordres. Shift+Clic mostra el cost estimat sense comprar-lo
@@ -4203,11 +4226,11 @@ STR_AI_GAME_SCRIPT :{BLACK}Script d
STR_AI_GAME_SCRIPT_TOOLTIP :{BLACK}Mostra el registre de l'script de partida.
STR_ERROR_AI_NO_AI_FOUND :No s'ha trobat una IA adequada per carregar.{}Aquesta IA és una IA falsa i no farà res.{}Pots descarregar diverses IA via el sistema de "Contingut en línia"
STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Un dels scripts executant-se s'ha penjat. Si us plau, informeu-ne a l'autor de l'script amb una captura de pantalla de la finestra de depuració IA/script de la partida.
STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}La finestra de depuració de les IA i l'script de la partida només està disponible al servidor.
STR_ERROR_AI_PLEASE_REPORT_CRASH :{WHITE}Un dels scripts que s'estava executant ha fallat. Si us plau, informeu l'autor de l'script amb una captura de pantalla de la finestra de depuració de l'script d'IA/partida.
STR_ERROR_AI_DEBUG_SERVER_ONLY :{YELLOW}La finestra de depuració de les IA i l'script de partida només està disponible al servidor.
# AI configuration window
STR_AI_CONFIG_CAPTION :{WHITE}Configuració de la IA/script de partida
STR_AI_CONFIG_CAPTION :{WHITE}Configuració dels scripts de les IA/partida
STR_AI_CONFIG_GAMELIST_TOOLTIP :{BLACK}Aquest és l'script que s'usarà a la propera partida.
STR_AI_CONFIG_AILIST_TOOLTIP :{BLACK}Aquesta llista conté les IA que es carregaran a la propera partida.
STR_AI_CONFIG_HUMAN_PLAYER :Jugador humà
@@ -4339,6 +4362,7 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Només s
STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Captura de pantalla enorme
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}La captura de pantalla tindrà una resolució de {COMMA} x {COMMA} píxels. Es tardarà una estona a fer la captura. Vols continuar?
STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}Mapa d'alçades desat correctament amb el nom «{STRING}». El cim més alt té alçada {NUM}.
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Captura de pantalla desada correctament com a '{STRING}'
STR_ERROR_SCREENSHOT_FAILED :{WHITE}Error en la captura de pantalla!
@@ -4665,7 +4689,7 @@ STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}... vehi
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}No hi haurà cap vehicle disponible
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}Canvia la teva configuració dels NewGRF
STR_ERROR_NO_VEHICLES_AVAILABLE_YET :{WHITE}Encara no hi ha vehicles disponibles
STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Iniciar una nova partida després de {DATE_SHORT} o usar un NewGRF que proporcioni vehicles primerencs
STR_ERROR_NO_VEHICLES_AVAILABLE_YET_EXPLANATION :{WHITE}Inicieu una partida nova després de {DATE_SHORT} o useu un NewGRF que proporcioni vehicles primerencs.
# Specific vehicle errors
STR_ERROR_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}No pots fer que un tren passi d'una senyal amb perill...

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
@@ -1277,8 +1278,6 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Uključivanje n
STR_CONFIG_SETTING_CITY_APPROVAL :Stav gradske uprave prema restrukturiranju područja: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Odaberi koliko buka i ekološka šteta utječu na gradsku ocjenu pojedine tvrtke i na daljnja građevinska djelovanja u njihovim područjima
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Najveća visina karte: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Postavi najveću dopuštenu visinu planina na karti
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Nije moguće postaviti najveću visinu karte na ovu vrijednost. Barem jedna planina na karti je viša.
STR_CONFIG_SETTING_AUTOSLOPE :Dopusti uređivanje krajolika ispod građevina, tračnica, itd.: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Dopusti uređivanje krajolika ispod građevina i pruga bez njihovog uklanjanja
@@ -2913,12 +2912,6 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Broj gradova:
STR_MAPGEN_DATE :{BLACK}Datum:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Broj industrija:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Najveća visina karte:
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Povećaj za jedan najveću visinu planina na karti
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Smanji za jedan najveću visinu planina na karti
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Visina linije snijega
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Pomakni visinu linije snijega za jedan gore
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Pomakni visinu linije snijega za jedan dolje
STR_MAPGEN_LAND_GENERATOR :{BLACK}Izrađivač zemljišta:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Vrsta terena:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Razina mora:
@@ -2944,8 +2937,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Ime visi
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Veličina:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Promijeni najveću visinu karte
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Promijeni visinu linije snijega
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Promijeni početnu godinu
# SE Map generation

View File

@@ -1034,6 +1034,7 @@ STR_GAME_OPTIONS_CURRENCY_CNY :Čínský renmi
STR_GAME_OPTIONS_CURRENCY_HKD :Hongkongský dolar (HKD)
STR_GAME_OPTIONS_CURRENCY_INR :Indická rupie (INR)
STR_GAME_OPTIONS_CURRENCY_IDR :Indonéská rupie (IDR)
STR_GAME_OPTIONS_CURRENCY_MYR :Malajsijský Ringgit (MYR)
############ end of currency region
STR_GAME_OPTIONS_ROAD_VEHICLES_DROPDOWN_LEFT :Vlevo
@@ -1086,6 +1087,11 @@ STR_GAME_OPTIONS_FULLSCREEN_TOOLTIP :{BLACK}Zaškrtn
STR_GAME_OPTIONS_RESOLUTION :{BLACK}Rozlišení obrazovky
STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Zvolit rozlišení obrazovky
STR_GAME_OPTIONS_RESOLUTION_OTHER :jiné
STR_GAME_OPTIONS_RESOLUTION_ITEM :{NUM}x{NUM}
STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Hardwarová akcelerace
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í
@@ -1104,7 +1110,13 @@ STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_NORMAL :Běžné
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_2X_ZOOM :Dvojnásobná velikost
STR_GAME_OPTIONS_FONT_ZOOM_DROPDOWN_4X_ZOOM :Čtyřnásobná velikost
STR_GAME_OPTIONS_GRAPHICS :{BLACK}Grafiky
STR_GAME_OPTIONS_REFRESH_RATE :{BLACK}Obnovovací frekvence obrazovky
STR_GAME_OPTIONS_REFRESH_RATE_TOOLTIP :{BLACK}Zvolit obnovovací frekvenci obrazovky
STR_GAME_OPTIONS_REFRESH_RATE_OTHER :ostatní
STR_GAME_OPTIONS_REFRESH_RATE_ITEM :{NUM}Hz
STR_GAME_OPTIONS_REFRESH_RATE_WARNING :{WHITE}Obnovovací frekvence vyšší než 60Hz může mít dopad výkon.
STR_GAME_OPTIONS_BASE_GRF :{BLACK}Základní sada grafiky
STR_GAME_OPTIONS_BASE_GRF_TOOLTIP :{BLACK}Zvol základní sadu grafiky
@@ -1200,6 +1212,8 @@ STR_TERRAIN_TYPE_FLAT :plochá
STR_TERRAIN_TYPE_HILLY :kopcovitá
STR_TERRAIN_TYPE_MOUNTAINOUS :hornatá
STR_TERRAIN_TYPE_ALPINIST :Alpské
STR_TERRAIN_TYPE_CUSTOM :Vlastní výška
STR_TERRAIN_TYPE_CUSTOM_VALUE :Vlastní výška ({NUM})
STR_CITY_APPROVAL_PERMISSIVE :nezaujatý
STR_CITY_APPROVAL_TOLERANT :tolerantní
@@ -1281,9 +1295,11 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Katastrofy, kte
STR_CONFIG_SETTING_CITY_APPROVAL :Postoj městské rady k úpravám v oblasti: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Vyber jak moc hluku a změn prostředí poškozuje hodnocení společnosti u města a tak dále komplikuje budoucí stavbu na jeho území
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maximální výška mapy: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Nastavit maximální povolenou výšku hor na mapě
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Nemůžete změnit maximální výšku mapy na tuto hodnotu. Alespoň jedna hora na mapě je vyšší.
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Maximální výška mapy: {STRING}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Nastav maximální výšku terénu. S volbou "(automaticky)" bude po vygenerování terénu vybrána dobrá hodnota.
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :(automaticky)
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Nelze změnit maximální výšku mapy na tuto hodnotu. Alespoň jedna hora na mapě je vyšší.
STR_CONFIG_SETTING_AUTOSLOPE :Povolit srovnání terénu pod budovami, kolejemi atd. (autoslope): {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Povoluje změnu terénu pod budovami a tratěmi bez jejich odstranění
STR_CONFIG_SETTING_CATCHMENT :Povolit u oblasti pokrytí realističtější velikost: {STRING}
@@ -1427,7 +1443,13 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Nastavuje množ
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximální vzdálenost ropného průmyslu od okraje mapy: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Omezení, jak daleko od okrajů mapy mohou být postaveny rafinerie a ropné vrty. Je-li při okraji mapy voda, toto omezení zajišťuje, že se rafinerie a ropné vrty vyskytují poblíž pobřeží. Na mapách větších než 256 polí je toto omezení úměrně přizpůsobeno.
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Výška sněhové čáry: {STRING}
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Určuje o jaké výšky se vyskytuje sníh u subarktického klimatu. Sníh rovněž ovlivňuje vytváření průmyslu a požadavky na růst měst
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Určuje od jaké výšky se sníh vyskytuje v subarktickém klimatu. Sníh ovlivňuje vytváření průmyslu a požadavky na růst měst. Sněžná čára může být upravena jen v editoru scénáře. V ostatních případech bývá počítána pomocí "pokrytí sněhem"
STR_CONFIG_SETTING_SNOW_COVERAGE :Pokrytí sněhem: {STRING}
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Určuje přibližné množství sněhu v subarktické krajině. Sníh rovněž ovlivňuje generování průmyslu a požadavky na růst měst. Použito pouze při generování mapy. Terén těsně nad úrovní výšky moře zůstane bez sněhu.
STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_DESERT_COVERAGE :Pokrytí pouštěmi: {STRING}
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Určuje přibližné množství pouště v tropické krajině. Pouště rovněž ovlivňují generování průmyslu. Použito pouze při generování mapy.
STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Členitost krajiny: {STRING}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Pouze TerraGenesis) Zvol množství hor: Rovinatý terén má méně hor, které jsou však rozlehlejší. Členitý terén má mnoho hor, u kterých se může zdát, že se opakují
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :velmi rovná
@@ -1543,6 +1565,10 @@ STR_CONFIG_SETTING_EXPENSES_LAYOUT :Zobrazovat odd
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Určuje rozložení okna s firemními výdaji
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS :Automaticky odstraňovat návěstidla během výstavby železnice: {STRING}
STR_CONFIG_SETTING_AUTO_REMOVE_SIGNALS_HELPTEXT :Automaticky odstraňovat návěstidla, pokud překáží během výstavby železnice. Poznámka: Může způsobit kolize vlaků.
STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT :Rychlostní omezení zrychleného běhu hry: {STRING}
STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_HELPTEXT :Omez jak rychle hra beží při zrychleném běhu. 0 = neomezeno (tak rychle, jak tvůj počítač dovolí). Hodnoty pod 100% zpomalí hru. Horní limit záleží na specifikacích tvého počítače a může se v každé hře lišit.
STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% normální rychlosti hry
STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_ZERO :Bez omezení (tak rychle, jak jen tvůj počítač dovolí)
STR_CONFIG_SETTING_SOUND_TICKER :Noviny - shrnutí: {STRING}
STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Přehrávat zvuk při zobrazení shrnutí zprávy
@@ -1733,12 +1759,17 @@ STR_CONFIG_SETTING_ZOOM_MIN :Maximální úr
STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Maximální přiblížení pohledu. Nastavení většího přiblížení má větší nároky na paměť počítače
STR_CONFIG_SETTING_ZOOM_MAX :Maximální úroveň oddálení: {STRING}
STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Maximální oddálení pohledu. Příliš velké nastavení může způsobovat velké odezvy
STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Nejvyšší dovolené rozlišení spritů: {STRING}
STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Omezit maximální dovolené rozlišení spritů. Omezení rozlišení spritů zabrání použití grafik ve vysokém rozlišení, jsou-li dostupné. Tímto lze docílit jednotného vzhledu hry, pokud je použit mix GRF souborů s grafikami ve vysokém rozlišení, i bez nich.
STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x
STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x
STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normální
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_MIN :4x
STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x
STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_NORMAL :1x
STR_CONFIG_SETTING_TOWN_GROWTH :Rychlost růstu měst: {STRING}
STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Rychlost růstu měst
STR_CONFIG_SETTING_TOWN_GROWTH_NONE :nulová
@@ -1873,6 +1904,8 @@ STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Nedostat
STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Alokování {BYTES} grafické mezipaměti selhalo. Grafická mezipaměť byla zredukována na {BYTES}. To sníží výkon OpenTTD. Pro snížení paměťových nároků můžeš zkusit vypnout 32bpp grafiku a/nebo úrovně přiblížení
# Video initalization errors
STR_VIDEO_DRIVER_ERROR :{WHITE}Chyba v nastavení zobrazení...
STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... nebyla nalezené kompatibilní grafická karta. Hardwarová akcelerace zakázana
# Intro window
STR_INTRO_CAPTION :{WHITE}OpenTTD {REV}
@@ -2400,10 +2433,13 @@ STR_CONTENT_ERROR_COULD_NOT_DOWNLOAD_FILE_NOT_WRITABLE :{WHITE}... do s
STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Nešlo rozbalit stažený soubor
STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Chybějící grafika
STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD vyžaduje grafiky, které nebyly nalezeny. Povolíte OpenTTD stáhnout a nainstalovat tyto grafiky?
STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD vyžaduje grafiky, které nebyly nalezeny. Povolíš OpenTTD stáhnout a nainstalovat tyto grafiky?
STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Ano, stáhnout grafiky
STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Ne, ukončit OpenTTD
STR_MISSING_GRAPHICS_ERROR_TITLE :{WHITE}Stahování selhalo
STR_MISSING_GRAPHICS_ERROR :{BLACK}Stahování grafik selhalo.{}Stáhněte, prosím, grafiky ručně.
STR_MISSING_GRAPHICS_ERROR_QUIT :{BLACK}Opustit OpenTTD
# Transparency settings window
STR_TRANSPARENCY_CAPTION :{WHITE}Nastavení průhlednosti
@@ -2960,12 +2996,17 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Množství měst:
STR_MAPGEN_DATE :{BLACK}Datum:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Množství průmyslu:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maximální výška mapy:
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Zvýšit maximální výšku hor na mapě o jeden stup
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Snížit maximální výšku hor na mapě o jeden stup
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Výška sněžné čáry:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Zvýšit sněžnou čáru o jednu úroveň
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Snížit sněžnou čáru o jednu úroveň
STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Nejvyšší vrchol:
STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Zvýšit maximální možnou výšku nejvyššího vrcholu na mapě o jednu úrov
STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Snížit maximální možnou výšku nejvyššího vrcholu na mapě o jednu úrov
STR_MAPGEN_SNOW_COVERAGE :{BLACK}Pokrytí sněhem:
STR_MAPGEN_SNOW_COVERAGE_UP :{BLACK}Zvýšit pokrytí sněhem o deset procent
STR_MAPGEN_SNOW_COVERAGE_DOWN :{BLACK}Snížit pokrytí sněhem o deset procent
STR_MAPGEN_SNOW_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_DESERT_COVERAGE :{BLACK}Pokrytí pouštěmi:
STR_MAPGEN_DESERT_COVERAGE_UP :{BLACK}Zvětšit pokrytí pouštěmi o deset procent
STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Zmenšit pokrytí pouštěmi o deset procent
STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_LAND_GENERATOR :{BLACK}Generátor krajiny:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Typ krajiny:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Četnost jezer:
@@ -2991,8 +3032,10 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Jméno v
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Velikost:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Změnit maximální výšku mapy
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Změnit výšku sněžne čáry
STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Cílová výška vrcholu
STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT :{WHITE}Nejvyšší vrchol
STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT :{WHITE}Pokrytí sněhem (v %)
STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT :{WHITE}Pokrytí pouštěmi (v %)
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Změnit počáteční rok
# SE Map generation
@@ -3184,6 +3227,7 @@ STR_NEWGRF_BUGGY :{WHITE}Grafika
STR_NEWGRF_BUGGY_ARTICULATED_CARGO :{WHITE}Informace o nákladu/možnosti přestavby pro '{1:ENGINE}' se po nákupu změnily. To může způsobit problémy při automatické výměně vozidel
STR_NEWGRF_BUGGY_ENDLESS_PRODUCTION_CALLBACK :{WHITE}Grafika '{1:STRING}' způsobila nekonečnou smyčku v callbacku produkce průmyslu
STR_NEWGRF_BUGGY_UNKNOWN_CALLBACK_RESULT :{WHITE}Funkce {1:HEX} vrátila neznámý / neplatný výsledek {2:HEX}
STR_NEWGRF_BUGGY_INVALID_CARGO_PRODUCTION_CALLBACK :{WHITE}'{1:STRING}' vrátil neplatný typ nákladu ve zpětném volání produkce na {2:HEX}
# 'User removed essential NewGRFs'-placeholders for stuff without specs
STR_NEWGRF_INVALID_CARGO :<neplatný náklad>
@@ -3269,19 +3313,23 @@ STR_LOCAL_AUTHORITY_ACTION_NEW_BUILDINGS :Dotovat nové b
STR_LOCAL_AUTHORITY_ACTION_EXCLUSIVE_TRANSPORT :Koupit výhradní právo k přepravě
STR_LOCAL_AUTHORITY_ACTION_BRIBE :Podplatit místní správu
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Zahájit malou reklamní kampaň, která přiláká více cestujících a nákladu.{}Cena: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Zahájit středně velkou reklamní kampaň, která přiláká více cestujících a nákladu.{}Cena: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Zahájit velkou reklamní kampaň, která přiláká více cestujících a nákladu.{}Cena: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Dotovat rekonstrukci místní silniční sítě. Způsobí problémy v dopravě po dobu 6 měsíců.{}Cena: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Postavit sochu vlastníka jako poctu tvé společnosti.{}Cena: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Dotovat stavbu nových obchodních budov ve městě.{}Cena: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Koupit roční výhradní práva k přepravě zboží z tohoto města po dobu jednoho roku. Místní správa dovolí cestujícím a nákladu používat pouze stanice tvé společnosti.{}Cena: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_SMALL_ADVERTISING :{YELLOW}Zahájit malou reklamní kampaň, která přiláká více cestujících a nákladu.{}Poskytuje dočasné zvýšení hodnocení přepravy v blízkém okolí městského centra.{}Cena: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_MEDIUM_ADVERTISING :{YELLOW}Zahájit středně velkou reklamní kampaň, která přiláká více cestujících a nákladu.{}Poskytuje dočasné zvýšení hodnocení přepravy ve středně širokém okolí městského centra.{}Cena: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_LARGE_ADVERTISING :{YELLOW}Zahájit velkou reklamní kampaň, která přiláká více cestujících a nákladu.{}Poskytuje dočasné zvýšení hodnocení přepravy v širokém okolí městského centra.{}Cena: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_ROAD_RECONSTRUCTION :{YELLOW}Dotovat rekonstrukci sítě místních ulic.{}Způsobí problémy v dopravě po dobu až 6ti měsíců.{}Cena: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_STATUE_OF_COMPANY :{YELLOW}Postavit sochu jako poctu tvé společnosti.{}Poskytuje trvalý bonus k hodnocení stanic v tomto městě.{}Cena: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_NEW_BUILDINGS :{YELLOW}Dotovat stavbu nových obchodních budov ve městě.{}Poskytuje dočasné zvýšení rychlosti růstu města.{}Cena: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_EXCLUSIVE_TRANSPORT :{YELLOW}Koupit 1 roční výhradní přepravní práva z tohoto města. Místní správa nedovolí dovolí cestujícím ani nákladu používat stanice tvých konkurentů.{}Cena: {CURRENCY_LONG}
STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Podplatit místní správu pro zvýšení hodnocení společnosti. Riziko trestu v případě přistižení.{}Cena: {CURRENCY_LONG}
# Goal window
STR_GOALS_CAPTION :{WHITE}{COMPANY} Cíle
STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globální cíle
STR_GOALS_SPECTATOR :Globální cíle
STR_GOALS_GLOBAL_BUTTON :{BLACK}Globální
STR_GOALS_GLOBAL_BUTTON_HELPTEXT :{BLACK}Zobrazit globání cíle
STR_GOALS_COMPANY_BUTTON :{BLACK}Společnost
STR_GOALS_COMPANY_BUTTON_HELPTEXT :{BLACK}Zobrazit cíle společnosti
STR_GOALS_TEXT :{ORANGE}{STRING}
STR_GOALS_NONE :{ORANGE}- Žádné -
STR_GOALS_PROGRESS :{ORANGE}{STRING}
@@ -3656,6 +3704,7 @@ STR_PURCHASE_INFO_PWAGPOWER_PWAGWEIGHT :{BLACK}Poháně
STR_PURCHASE_INFO_REFITTABLE_TO :{BLACK}Refitovatelné na: {GOLD}{STRING}
STR_PURCHASE_INFO_ALL_TYPES :Všechny druhy nákladu
STR_PURCHASE_INFO_NONE :Žádné
STR_PURCHASE_INFO_ENGINES_ONLY :Pouze lokomotivy
STR_PURCHASE_INFO_ALL_BUT :Všechny kromě {CARGO_LIST}
STR_PURCHASE_INFO_MAX_TE :{BLACK}Max. tažná síla: {GOLD}{FORCE}
STR_PURCHASE_INFO_AIRCRAFT_RANGE :{BLACK}Dosah: {GOLD}{COMMA} polí
@@ -4406,6 +4455,7 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Byl nale
STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Velký screenshot
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Snímek obrazovky bude mít rozlišení {COMMA} x {COMMA} pixelů. Toto může nějakou chvíli trvat. Chcete pokračovat?
STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}Výšková mapa úspěšně uložena jako '{STRING}'. Nejvyšší vrchol je {NUM}
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Screenshot úspěšně uložen jako '{STRING}'
STR_ERROR_SCREENSHOT_FAILED :{WHITE}Screenshot neuložen!

View File

@@ -989,6 +989,8 @@ STR_GAME_OPTIONS_RESOLUTION :{BLACK}Skærmop
STR_GAME_OPTIONS_RESOLUTION_TOOLTIP :{BLACK}Vælg ønsket skærmopløsning
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
@@ -1181,8 +1183,6 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Slå katastrofe
STR_CONFIG_SETTING_CITY_APPROVAL :Byrådets holdning til omstrukturering: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Vælg hvor meget selskaber støj og miljømæssige skader påvirker byvurdering og fremtidige byggeretigheder i området
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maksimal map højde: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Indstil den maksimale tilladte højde for bjerge på kortet
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Du kan ikke sætte den maksimale kortet højde for denne værdi. Mindst et bjerg på kortet er højere
STR_CONFIG_SETTING_AUTOSLOPE :Tillad landskabsformning under bygninger, spor, etc. (autoslope): {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Tillad landskabsformning under bygninger og spor uden at fjerne dem
@@ -1441,6 +1441,7 @@ STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS :Hold byggeværk
STR_CONFIG_SETTING_PERSISTENT_BUILDINGTOOLS_HELPTEXT :Hold bygnings-værktøjer til broer, tunneler, mv. åben efter brug
STR_CONFIG_SETTING_EXPENSES_LAYOUT :Grupper udgifter i firmaets finansvindue: {STRING}
STR_CONFIG_SETTING_EXPENSES_LAYOUT_HELPTEXT :Definer layout for firmaets udgifter-vindue
STR_CONFIG_SETTING_FAST_FORWARD_SPEED_LIMIT_VAL :{NUM}% normal simulationshastighed
STR_CONFIG_SETTING_SOUND_TICKER :Nyhedssymbol: {STRING}
STR_CONFIG_SETTING_SOUND_TICKER_HELPTEXT :Afspil lyd for opsummerede nyheds beskeder
@@ -1554,6 +1555,7 @@ STR_CONFIG_SETTING_ENDING_YEAR :Slutår for poi
STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Årstal hvor spillet slutter pointoptælling. Ved slutningen af dette år bliver selskabets point optaget, og topresultater-skærmen bliver vist. Spillerne kan fortsætte med at spille efter dette.{}Hvis dette er før spillets start år, bliver topresultater-skærmen aldrig vist.
STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM}
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Aldrig
STR_CONFIG_SETTING_ECONOMY_TYPE_SMOOTH :Smooth
STR_CONFIG_SETTING_ALLOW_SHARES :Tillad at købe aktier i andre selskaber: {STRING}
STR_CONFIG_SETTING_ALLOW_SHARES_HELPTEXT :Hvis aktiveret, tillades køb og salg af selskabsaktier. Aktier vil kun være tilgængelige for selskaber der er nået en hvis alder
STR_CONFIG_SETTING_MIN_YEARS_FOR_SHARES :Mindste selskabsalder for aktiehandel: {STRING}
@@ -1605,6 +1607,7 @@ STR_CONFIG_SETTING_TOWN_CARGOGENMODE_BITCOUNT :Lineær
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT :Placering af træer i spillet: {STRING}
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_HELPTEXT :Kontroller den tilfældige fremkomst af træer i løbet af spillet. Dette vil påvirke industrier der afhænger træers vækst, f.eks. savværker
STR_CONFIG_SETTING_EXTRA_TREE_PLACEMENT_SPREAD_ALL :Voks og spred ud overalt
STR_CONFIG_SETTING_TOOLBAR_POS :Placering af værktøjslinje: {STRING}
STR_CONFIG_SETTING_TOOLBAR_POS_HELPTEXT :Horisontal placering af hovedværktøjlinjen i toppen af skærmen
@@ -1761,6 +1764,7 @@ STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Utilstr
STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Allokering af {BYTES} spritecache fejlede. Spritecachen blev indskrænket til {BYTES}. Dette vil sænke OpenTTDs ydelse. Du kan forsøge at slå 32bpp grafik og/eller zoom-ind niveauer for at reducere hukommelseskravet
# Video initalization errors
STR_VIDEO_DRIVER_ERROR_NO_HARDWARE_ACCELERATION :{WHITE}... ingen kompatibel GPU fundet. Hardware-acceleration deaktiveret
# Intro window
STR_INTRO_CAPTION :{WHITE}OpenTTD {REV}
@@ -2817,12 +2821,6 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Antal byer:
STR_MAPGEN_DATE :{BLACK}Dato:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Antal industrier:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maksimal map højde:
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Øge den maksimale højde af bjerge på kortet med en
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Formindsk den maksimale højde af bjerge på kortet med en
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Snegrænse
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Flyt snegrænsen een op
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Flyt snegrænsen een ned
STR_MAPGEN_LAND_GENERATOR :{BLACK}Terrængenerator:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terræntype:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Havniveau
@@ -2848,8 +2846,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Højdeko
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Størrelse:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Skift maksimal kort højde
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Ændre snegrænsen
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Ændre startår
# SE Map generation
@@ -3066,6 +3062,7 @@ STR_SIGN_LIST_MATCH_CASE_TOOLTIP :{BLACK}Vis matc
# Sign window
STR_EDIT_SIGN_CAPTION :{WHITE}Ændre skiltets tekst
STR_EDIT_SIGN_LOCATION_TOOLTIP :{BLACK}Centrér skærmen ved skiltets placering. Ctrl+klik åbner et nyt vindue ved skiltets placering
STR_EDIT_SIGN_NEXT_SIGN_TOOLTIP :{BLACK}Gå til næste skilt
STR_EDIT_SIGN_PREVIOUS_SIGN_TOOLTIP :{BLACK}Gå til forrige skilt
@@ -3139,6 +3136,7 @@ STR_LOCAL_AUTHORITY_ACTION_TOOLTIP_BRIBE :{YELLOW}Bestik
STR_GOALS_CAPTION :{WHITE}{COMPANY} Mål
STR_GOALS_SPECTATOR_CAPTION :{WHITE}Globale Mål
STR_GOALS_SPECTATOR :Globale Mål
STR_GOALS_GLOBAL_BUTTON :{BLACK}Global
STR_GOALS_TEXT :{ORANGE}{STRING}
STR_GOALS_NONE :{ORANGE}- Ingen -
STR_GOALS_PROGRESS :{ORANGE}{STRING}
@@ -3274,7 +3272,7 @@ STR_STATION_VIEW_CLOSE_AIRPORT_TOOLTIP :{BLACK}Forhindr
STR_WAYPOINT_VIEW_CAPTION :{WHITE}{WAYPOINT}
STR_WAYPOINT_VIEW_CENTER_TOOLTIP :{BLACK}Centrer skærmen over vejpunktets lokalitet. Ctrl+Klik åbner et nyt vindue ved waypointets lokalitet.
STR_WAYPOINT_VIEW_CHANGE_WAYPOINT_NAME :{BLACK}Omdøb waypoint
STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Centrer skræmen over bøjens lokalitet. Ctrl+Klik åbner et nyt vindue ved bøjens lokalitet.
STR_BUOY_VIEW_CENTER_TOOLTIP :{BLACK}Centrér skærmen ved bøjens placering. Ctrl+klik åbner et nyt vindue ved bøjens placering
STR_BUOY_VIEW_CHANGE_BUOY_NAME :{BLACK}Ændre navnet på bøjen
STR_EDIT_WAYPOINT_NAME :{WHITE}Omdøb waypoint
@@ -3339,6 +3337,7 @@ STR_COMPANY_VIEW_RELOCATE_HQ :{BLACK}Flyt hov
STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS :{BLACK}Flyt selskabets hovedkvarter for 1% af selskabsværdien. Shift skifter mellem at flytte og vise prisoverslag.
STR_COMPANY_VIEW_INFRASTRUCTURE_BUTTON :{BLACK}Detaljer
STR_COMPANY_VIEW_INFRASTRUCTURE_TOOLTIP :{BLACK}Se detaljerede infrastruktur-tal
STR_COMPANY_VIEW_GIVE_MONEY_BUTTON :{BLACK}Giv penge
STR_COMPANY_VIEW_NEW_FACE_BUTTON :{BLACK}Nyt ansigt
STR_COMPANY_VIEW_NEW_FACE_TOOLTIP :{BLACK}Vælg nyt ansigt til direktøren
@@ -3623,10 +3622,10 @@ STR_DEPOT_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Dette vi
STR_DEPOT_CLONE_SHIP_DEPOT_INFO :{BLACK}Dette vil købe en kopi af skibet. Klik på denne knap og så på et skib indeni eller udenfor dokken. Ctrl-klik vil dele ordrer. Shift-klik vil vise prisoverslag.
STR_DEPOT_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Dette vil købe en kopi af et fly. Klik på denne knap og så på et fly indeni eller udenfor hangaren. Ctrl-klik vil dele ordrer. Shift-klik viser estimerede omkostninger uden at indkøbe
STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centrer skærmen over remisens lokalitet. Ctrl+Klik åbner et nyt vindue ved remisens lokalitet.
STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centrer skærmen over værkstedets lokalitet. Ctrl+Klik åbner et nyt vindue ved køretøjsværkstedets lokalitet.
STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centrer skærmen over skibsdokkens lokalitet. Ctrl+Klik åbner et nyt vindue ved skibsdokkens lokalitet.
STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centrér skærmen over hangarens lokalitet. Ctrl+Klik åbner et nyt vindue ved hangarens lokalitet.
STR_DEPOT_TRAIN_LOCATION_TOOLTIP :{BLACK}Centrér skærmen over remisens placering. Ctrl+klik åbner et nyt vindue ved remisens placering
STR_DEPOT_ROAD_VEHICLE_LOCATION_TOOLTIP :{BLACK}Centrér skærmen ved værkstedets placering. Ctrl+klik åbner et nyt vindue ved køretøjsværkstedets placering
STR_DEPOT_SHIP_LOCATION_TOOLTIP :{BLACK}Centrér skærmen ved skibsdokkens placering. Ctrl+klik åbner et nyt vindue ved skibsdokkens placering
STR_DEPOT_AIRCRAFT_LOCATION_TOOLTIP :{BLACK}Centrér skærmen ved hangarens placering. Ctrl+klik åbner et nyt vindue ved hangarens placering
STR_DEPOT_VEHICLE_ORDER_LIST_TRAIN_TOOLTIP :{BLACK}Vis en liste over alle tog med denne remise i ordrelisten
STR_DEPOT_VEHICLE_ORDER_LIST_ROAD_VEHICLE_TOOLTIP :{BLACK}Vis liste over alle køretøjer med dette værksted i ordrelisten
@@ -3975,6 +3974,7 @@ STR_ORDER_REFIT_STOP_ORDER :(Tilpas til {ST
STR_ORDER_STOP_ORDER :(Stop)
STR_ORDER_GO_TO_STATION :{STRING} {STATION} {STRING}
STR_ORDER_GO_TO_STATION_CAN_T_USE_STATION :{PUSH_COLOUR}{RED}(Kan ikke bruge station){POP_COLOUR} {STRING} {STATION} {STRING}
STR_ORDER_IMPLICIT :(Automatisk)
@@ -4425,6 +4425,7 @@ STR_ERROR_DEPOT_WRONG_DEPOT_TYPE :Forkert depotty
STR_ERROR_TRAIN_TOO_LONG_AFTER_REPLACEMENT :{WHITE}{VEHICLE} er blevet for langt efter udskiftning
STR_ERROR_AUTOREPLACE_NOTHING_TO_DO :{WHITE}Ingen autoudskiftning/-fornyelse foretaget.
STR_ERROR_AUTOREPLACE_MONEY_LIMIT :(ikke penge nok)
STR_ERROR_AUTOREPLACE_INCOMPATIBLE_REFIT :{WHITE}Nyt køretøj kan ikke auto-tilpasses i ordren{NUM}
# Rail construction errors
STR_ERROR_IMPOSSIBLE_TRACK_COMBINATION :{WHITE}Umulig sporkombination

View File

@@ -357,9 +357,9 @@ STR_TOOLBAR_TOOLTIP_LAND_BLOCK_INFORMATION :{BLACK}Landinfo
STR_TOOLBAR_TOOLTIP_SWITCH_TOOLBAR :{BLACK}Knoppenbalken wisselen
# Extra tooltips for the scenario editor toolbar
STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Scenario opslaan of laden, scenario-editor verlaten, afsluiten
STR_SCENEDIT_TOOLBAR_TOOLTIP_SAVE_SCENARIO_LOAD_SCENARIO :{BLACK}Scenario opslaan of laden, scenariobewerker verlaten, afsluiten
STR_SCENEDIT_TOOLBAR_OPENTTD :{YELLOW}OpenTTD
STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Scenario-editor
STR_SCENEDIT_TOOLBAR_SCENARIO_EDITOR :{YELLOW}Scenariobewerker
STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_BACKWARD :{BLACK}Startdatum 1 jaar terugzetten
STR_SCENEDIT_TOOLBAR_TOOLTIP_MOVE_THE_STARTING_DATE_FORWARD :{BLACK}Startdatum 1 jaar vooruitzetten
STR_SCENEDIT_TOOLBAR_TOOLTIP_SET_DATE :{BLACK}Klik om het startjaar op te geven
@@ -378,7 +378,7 @@ STR_SCENEDIT_FILE_MENU_SAVE_SCENARIO :Scenario opslaa
STR_SCENEDIT_FILE_MENU_LOAD_SCENARIO :Scenario laden
STR_SCENEDIT_FILE_MENU_SAVE_HEIGHTMAP :Hoogtekaart opslaan
STR_SCENEDIT_FILE_MENU_LOAD_HEIGHTMAP :Hoogtekaart laden
STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Scenario-editor sluiten
STR_SCENEDIT_FILE_MENU_QUIT_EDITOR :Scenariobewerker sluiten
STR_SCENEDIT_FILE_MENU_SEPARATOR :
STR_SCENEDIT_FILE_MENU_QUIT :Afsluiten
############ range for SE file menu starts
@@ -1006,6 +1006,9 @@ 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_VIDEO_VSYNC :{BLACK}VSync
STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}Selecteer dit vakje om het scherm verticaal te synchroniseren. De wijziging gaat pas in nadat je het spel opnieuw hebt opgestart. Werkt alleen als hardwareversnelling is ingeschakeld
STR_GAME_OPTIONS_GUI_ZOOM_FRAME :{BLACK}Menupuntgrootte
STR_GAME_OPTIONS_GUI_ZOOM_DROPDOWN_TOOLTIP :{BLACK}Kiest de grootte van bedieningselementen
@@ -1124,6 +1127,8 @@ STR_TERRAIN_TYPE_FLAT :Vlak
STR_TERRAIN_TYPE_HILLY :Heuvelachtig
STR_TERRAIN_TYPE_MOUNTAINOUS :Bergachtig
STR_TERRAIN_TYPE_ALPINIST :Berglandschap
STR_TERRAIN_TYPE_CUSTOM :Aangepaste hoogte
STR_TERRAIN_TYPE_CUSTOM_VALUE :Aangepaste hoogte ({NUM})
STR_CITY_APPROVAL_PERMISSIVE :Toegeeflijk
STR_CITY_APPROVAL_TOLERANT :Neutraal
@@ -1205,8 +1210,10 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Rampen in-uitsc
STR_CONFIG_SETTING_CITY_APPROVAL :Houding van gemeentebestuur ten opzichte van herstructurering omgeving: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Bepaalt in hoeverre lawaai en schade aan het milieu door bedrijven de stadswaardering en verdere bouwacties beïnvloeden in hun omgeving
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maximale kaarthoogte: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Maximaal toegestane hoogte voor bergen op de kaart instellen
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Limiet voor kaarthoogte: {STRING}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Stelt de maximale hoogte voor het terrein op de kaart in. Met '(auto)' wordt een goede waarde genomen nadat het terrein is gegenereerd
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :(auto)
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Je kunt de maximale kaarthoogte niet in deze waarde wijzigen. Minstens één berg op de kaart is hoger.
STR_CONFIG_SETTING_AUTOSLOPE :Omgeving aanpassen onder gebouwen, spoorwegen enz. toestaan: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Staat het aanpassen van funderingen onder gebouwen en sporen toe zonder deze te verwijderen
@@ -1351,7 +1358,13 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Stelt in hoevee
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximumafstand van de rand voor olieraffinaderijen: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Olieraffinaderijen worden alleen gebouwd nabij de kaartgrens, dat is aan de kust van eilandkaarten
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Sneeuwhoogte: {STRING}
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Stelt in op welke hoogte de sneeuw begint in subarctisch landschap. Sneeuw heeft ook invloed op het ontstaan van industrieën en op de vereisten voor stadsgroei.
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Stelt in op welke hoogte de sneeuw begint in subarctisch landschap. Sneeuw heeft ook invloed op het ontstaan van industrieën en op de vereisten voor stadsgroei. Kan alleen worden aangepast in de scenariobewerker of wordt berekend met behulp van 'sneeuwoppervlak'
STR_CONFIG_SETTING_SNOW_COVERAGE :Sneeuwoppervlak: {STRING}
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Bepaalt de hoeveelheid sneeuw in het subarctische landschap. Sneeuw is ook van invloed op de industrieën en de groei van steden. Wordt alleen gebruikt tijdens het maken van de kaart. Land net boven zeeniveau krijgt nooit sneeuw
STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_DESERT_COVERAGE :Woestijnoppervlak: {STRING}
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Bepaalt de hoeveelheid woestijn in het tropische landschap. Woestijn is ook van invloed op industrieën. Wordt alleen gebruikt tijdens het maken van de kaart
STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Ruwheid van het terrein: {STRING}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Alleen TerraGenesis) Kiest de frequentie van heuvels: gladde landschappen hebben minder, meer wijdverspreide heuvels. Ruwe landschappen hebben veel heuvels, die repetitief kunnen lijken.
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Erg glad
@@ -2029,10 +2042,10 @@ STR_NETWORK_SERVER_LIST_PLAYER_NAME_OSKTITLE :{BLACK}Vul je n
STR_NETWORK_SERVER_LIST_ENTER_IP :{BLACK}Voer het IP-adres van de server in
# Start new multiplayer server
STR_NETWORK_START_SERVER_CAPTION :{WHITE}Start nieuw multiplayerspel
STR_NETWORK_START_SERVER_CAPTION :{WHITE}Nieuw spel met meerdere spelers starten
STR_NETWORK_START_SERVER_NEW_GAME_NAME :{BLACK}Spelnaam:
STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}De spelnaam wordt weergegeven aan andere spelers in het multiplayerspelselectiemenu
STR_NETWORK_START_SERVER_NEW_GAME_NAME_TOOLTIP :{BLACK}De spelnaam wordt weergegeven aan andere spelers in het spelselectiemenu voor meerdere spelers
STR_NETWORK_START_SERVER_SET_PASSWORD :{BLACK}Wachtwoord instellen
STR_NETWORK_START_SERVER_PASSWORD_TOOLTIP :{BLACK}Beveilig je spel met een wachtwoord als je niet wilt dat dit algemeen toegankelijk is
@@ -2339,6 +2352,9 @@ STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD
STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Ja, grafische elementen downloaden
STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Nee, OpenTTD afsluiten
STR_MISSING_GRAPHICS_ERROR_TITLE :{WHITE}Downloaden mislukt
STR_MISSING_GRAPHICS_ERROR :{BLACK}Grafische elementen downloaden mislukt.{}Download de grafische elementen handmatig.
STR_MISSING_GRAPHICS_ERROR_QUIT :{BLACK}OpenTTD afsluiten
# Transparency settings window
STR_TRANSPARENCY_CAPTION :{WHITE}Doorzichtigheidsopties
@@ -2889,12 +2905,17 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Aantal steden:
STR_MAPGEN_DATE :{BLACK}Datum:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Aantal industrieën:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maximale kaarthoogte
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Verhoog de maximale hoogte van bergen op de kaart met één
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Verklein de maximale hoogte van bergen op de kaart met één
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Hoogte van sneeuwgrens:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Verhoog de sneeuwgrens met één
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Verlaag de sneeuwgrens met één
STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Hoogste berg:
STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Verhoogt de maximale hoogte van de hoogste berg op de kaart met één
STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Verlaagt de maximale hoogte van de hoogste berg op de kaart met één
STR_MAPGEN_SNOW_COVERAGE :{BLACK}Sneeuwoppervlak:
STR_MAPGEN_SNOW_COVERAGE_UP :{BLACK}Vergroot het sneeuwoppervlak met tien procent
STR_MAPGEN_SNOW_COVERAGE_DOWN :{BLACK}Verkleint het sneeuwoppervlak met tien procent
STR_MAPGEN_SNOW_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_DESERT_COVERAGE :{BLACK}Woestijnoppervlak:
STR_MAPGEN_DESERT_COVERAGE_UP :{BLACK}Vergroot het woestijnoppervlak met tien procent
STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Verkleint het woestijnoppervlak met tien procent
STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_LAND_GENERATOR :{BLACK}Landgenerator:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terreintype:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Zeeniveau:
@@ -2920,8 +2941,10 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Naam van
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Grootte:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Maximale kaarthoogte wijzigen
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Hoogte van sneeuwgrens wijzigen
STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Gewenste hoogte van bergen
STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT :{WHITE}Hoogste berg
STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT :{WHITE}Sneeuwoppervlak (in %)
STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT :{WHITE}Woestijnoppervlak (in %)
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Verander startjaar
# SE Map generation
@@ -4338,6 +4361,7 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Alleen b
STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Grote schermfoto
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}De schermfoto heeft een resolutie van {COMMA} x {COMMA} pixels. Het maken van de schermfoto kan even duren. Verder gaan?
STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}Hoogtekaart opgeslagen als '{STRING}'. Hoogste berg is {NUM}
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Schermafbeelding opgeslagen als '{STRING}'
STR_ERROR_SCREENSHOT_FAILED :{WHITE}Schermfoto mislukt!

View File

@@ -1002,6 +1002,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
@@ -1120,6 +1123,8 @@ STR_TERRAIN_TYPE_FLAT :Flat
STR_TERRAIN_TYPE_HILLY :Hilly
STR_TERRAIN_TYPE_MOUNTAINOUS :Mountainous
STR_TERRAIN_TYPE_ALPINIST :Alpinist
STR_TERRAIN_TYPE_CUSTOM :Custom height
STR_TERRAIN_TYPE_CUSTOM_VALUE :Custom height ({NUM})
STR_CITY_APPROVAL_PERMISSIVE :Permissive
STR_CITY_APPROVAL_TOLERANT :Tolerant
@@ -1201,9 +1206,11 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Toggle disaster
STR_CONFIG_SETTING_CITY_APPROVAL :Town council's attitude towards area restructuring: {STRING2}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Choose how much noise and environmental damage by companies affect their town rating and further construction actions in their area
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maximum map height: {STRING2}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Set the maximum allowed height for mountains on the map
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}You can't set the maximum map height to this value. At least one mountain on the map is higher
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Map height limit: {STRING2}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Set the maximum height of the map terrain. With "(auto)" a good value will be picked after terrain generation
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :(auto)
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}You can't set the map height limit to this value. At least one mountain on the map is higher
STR_CONFIG_SETTING_AUTOSLOPE :Allow landscaping under buildings, tracks, etc.: {STRING2}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Allow landscaping under buildings and tracks without removing them
STR_CONFIG_SETTING_CATCHMENT :Allow more realistically sized catchment areas: {STRING2}
@@ -1272,6 +1279,8 @@ STR_CONFIG_SETTING_VIDEO_16BPP :{BLACK}16 bit
STR_CONFIG_SETTING_VIDEO_16BPP_HELPTEXT :{BLACK}Set video color depth to 16 bits per pixel, this requires restart, this video mode does not support water animation
STR_CONFIG_SETTING_VIDEO_24BPP :{BLACK}24 bit
STR_CONFIG_SETTING_VIDEO_24BPP_HELPTEXT :{BLACK}Set video color depth to 24 bits per pixel, this video mode supports water animation
STR_CONFIG_SETTING_MOUSE_CURSOR :{BLACK}Mouse cursor
STR_CONFIG_SETTING_MOUSE_CURSOR_HELPTEXT :{BLACK}Show mouse cursor
STR_CONFIG_SETTING_SHOWFINANCES :Show finances window at the end of the year: {STRING2}
STR_CONFIG_SETTING_SHOWFINANCES_HELPTEXT :If enabled, the finances window pops up at the end of each year to allow easy inspection of the financial status of the company
STR_CONFIG_SETTING_NONSTOP_BY_DEFAULT :New orders are 'non-stop' by default: {STRING2}
@@ -1367,7 +1376,13 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Set how many in
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximum distance from edge for Oil industries: {STRING2}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limit for how far from the map border oil refineries and oil rigs can be constructed. On island maps this ensures they are near the coast. On maps larger than 256 tiles, this value is scaled up.
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snow line height: {STRING2}
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Control at what height snow starts in sub-arctic landscape. Snow also affects industry generation and town growth requirements
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Controls at what height snow starts in sub-arctic landscape. Snow also affects industry generation and town growth requirements. Can only be modified via Scenario Editor or is otherwise calculated via "snow coverage"
STR_CONFIG_SETTING_SNOW_COVERAGE :Snow coverage: {STRING2}
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Controls the approximate amount of snow on the sub-arctic landscape. Snow also affects industry generation and town growth requirements. Only used during map generation. Land just above sea level is always without snow
STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_DESERT_COVERAGE :Desert coverage: {STRING2}
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Control the approximate amount of desert on the tropical landscape. Desert also affects industry generation. Only used during map generation
STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Roughness of terrain: {STRING2}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis only) Choose the frequency of hills: Smooth landscapes have fewer, more wide-spread hills. Rough landscapes have many hills, which may look repetitive
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Very Smooth
@@ -2927,12 +2942,17 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}No. of towns:
STR_MAPGEN_DATE :{BLACK}Date:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}No. of industries:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maximum map height:
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Increase the maximum height of mountains on the map by one
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Decrease the maximum height of mountains on the map by one
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Snow line height:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Move the snow line height one up
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Move the snow line height one down
STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Highest peak:
STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Increase the maximum height of highest peak on the map by one
STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Decrease the maximum height of highest peak on the map by one
STR_MAPGEN_SNOW_COVERAGE :{BLACK}Snow coverage:
STR_MAPGEN_SNOW_COVERAGE_UP :{BLACK}Increase snow coverage by ten percent
STR_MAPGEN_SNOW_COVERAGE_DOWN :{BLACK}Decrease snow coverage by ten percent
STR_MAPGEN_SNOW_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_DESERT_COVERAGE :{BLACK}Desert coverage:
STR_MAPGEN_DESERT_COVERAGE_UP :{BLACK}Increase desert coverage by ten percent
STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Decrease desert coverage by ten percent
STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_LAND_GENERATOR :{BLACK}Land generator:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrain type:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Sea level:
@@ -2958,8 +2978,10 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Heightma
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Size:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Change maximum map height
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Change snow line height
STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Target peak height
STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT :{WHITE}Highest peak
STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT :{WHITE}Snow coverage (in %)
STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT :{WHITE}Desert coverage (in %)
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Change starting year
# SE Map generation
@@ -4376,6 +4398,7 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Only a f
STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Huge screenshot
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}The screenshot will have a resolution of {COMMA} x {COMMA} pixels. Taking the screenshot may take a while. Do you want to continue?
STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}Heightmap successfully saved as '{RAW_STRING}'. Highest peak is {NUM}
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Screenshot successfully saved as '{RAW_STRING}'
STR_ERROR_SCREENSHOT_FAILED :{WHITE}Screenshot failed!

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}
@@ -2669,9 +2670,6 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}No. of towns:
STR_MAPGEN_DATE :{BLACK}Date:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}No. of industries:
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Snow line height:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Move the snow line height one up
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Move the snow line height one down
STR_MAPGEN_LAND_GENERATOR :{BLACK}Land generator:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrain type:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Sea level:
@@ -2697,7 +2695,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Heightma
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Size:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Change snow line height
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Change starting year
# SE Map generation

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
@@ -1124,6 +1127,8 @@ STR_TERRAIN_TYPE_FLAT :Flat
STR_TERRAIN_TYPE_HILLY :Hilly
STR_TERRAIN_TYPE_MOUNTAINOUS :Mountainous
STR_TERRAIN_TYPE_ALPINIST :Alpinist
STR_TERRAIN_TYPE_CUSTOM :Custom height
STR_TERRAIN_TYPE_CUSTOM_VALUE :Custom height ({NUM})
STR_CITY_APPROVAL_PERMISSIVE :Permissive
STR_CITY_APPROVAL_TOLERANT :Tolerant
@@ -1205,9 +1210,11 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Toggle disaster
STR_CONFIG_SETTING_CITY_APPROVAL :Town council's attitude towards area restructuring: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Choose how much noise and environmental damage by companies affect their town rating and further construction actions in their area
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maximum map height: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Set the maximum allowed height for mountains on the map
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}You can't set the maximum map height to this value. At least one mountain on the map is higher
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Map height limit: {STRING}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Set the maximum height of the map terrain. With "(auto)" a good value will be picked after terrain generation
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :(auto)
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}You can't set the map height limit to this value. At least one mountain on the map is higher
STR_CONFIG_SETTING_AUTOSLOPE :Allow terraforming under buildings, tracks, etc.: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Allow terraforming under buildings and tracks without removing them
STR_CONFIG_SETTING_CATCHMENT :Allow more realistically sized catchment areas: {STRING}
@@ -1351,7 +1358,13 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Set how many in
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximum distance from edge for Oil industries: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limit for how far from the map border oil refineries and oil rigs can be constructed. On island maps this ensures they are near the coast. On maps larger than 256 tiles, this value is scaled up.
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Snow line height: {STRING}
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Control at what height snow starts in sub-arctic landscape. Snow also affects industry generation and town growth requirements
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Controls at what height snow starts in sub-arctic landscape. Snow also affects industry generation and town growth requirements. Can only be modified via Scenario Editor or is otherwise calculated via "snow coverage"
STR_CONFIG_SETTING_SNOW_COVERAGE :Snow coverage: {STRING}
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Controls the approximate amount of snow on the sub-arctic landscape. Snow also affects industry generation and town growth requirements. Only used during map generation. Land just above sea level is always without snow
STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_DESERT_COVERAGE :Desert coverage: {STRING}
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Control the approximate amount of desert on the tropical landscape. Desert also affects industry generation. Only used during map generation
STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Roughness of terrain: {STRING}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis only) Choose the frequency of hills: Smooth landscapes have fewer, more wide-spread hills. Rough landscapes have many hills, which may look repetitive
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Very Smooth
@@ -1661,12 +1674,17 @@ STR_CONFIG_SETTING_ZOOM_MIN :Maximum zoom in
STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :The maximum zoom-in level for viewports. Note that enabling higher zoom-in levels increases memory requirements
STR_CONFIG_SETTING_ZOOM_MAX :Maximum zoom out level: {STRING}
STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :The maximum zoom-out level for viewports. Higher zoom-out levels might cause lag when used
STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Highest resolution sprites to use: {STRING}
STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Limit the maximum resolution to use for sprites. Limiting sprite resolution will avoid using high resolution graphics even when available. This can help keep the game appearance unified when using a mix of GRF files with and without high resolution graphics.
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_MIN :4x
STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x
STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_NORMAL :1x
STR_CONFIG_SETTING_TOWN_GROWTH :Town growth speed: {STRING}
STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Speed of town growth
STR_CONFIG_SETTING_TOWN_GROWTH_NONE :None
@@ -2334,6 +2352,9 @@ STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD
STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Yes, download the graphics
STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}No, quit OpenTTD
STR_MISSING_GRAPHICS_ERROR_TITLE :{WHITE}Downloading failed
STR_MISSING_GRAPHICS_ERROR :{BLACK}Downloading graphics failed.{}Please download graphics manually.
STR_MISSING_GRAPHICS_ERROR_QUIT :{BLACK}Exit OpenTTD
# Transparency settings window
STR_TRANSPARENCY_CAPTION :{WHITE}Transparency Options
@@ -2884,12 +2905,17 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}No. of towns:
STR_MAPGEN_DATE :{BLACK}Date:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}No. of industries:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maximum map height:
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Increase the maximum height of mountains on the map by one
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Decrease the maximum height of mountains on the map by one
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Snow line height:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Move the snow line height up one
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Move the snow line height down one
STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Highest peak:
STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Increase the maximum height of highest peak on the map by one
STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Decrease the maximum height of highest peak on the map by one
STR_MAPGEN_SNOW_COVERAGE :{BLACK}Snow coverage:
STR_MAPGEN_SNOW_COVERAGE_UP :{BLACK}Increase snow coverage by ten percent
STR_MAPGEN_SNOW_COVERAGE_DOWN :{BLACK}Decrease snow coverage by ten percent
STR_MAPGEN_SNOW_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_DESERT_COVERAGE :{BLACK}Desert coverage:
STR_MAPGEN_DESERT_COVERAGE_UP :{BLACK}Increase desert coverage by ten percent
STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Decrease desert coverage by ten percent
STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_LAND_GENERATOR :{BLACK}Land generator:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terrain type:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Sea level:
@@ -2915,8 +2941,10 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Heightma
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Size:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Change maximum map height
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Change snow line height
STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Target peak height
STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT :{WHITE}Highest peak
STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT :{WHITE}Snow coverage (in %)
STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT :{WHITE}Desert coverage (in %)
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Change starting year
# SE Map generation
@@ -4333,6 +4361,7 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Only a f
STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Huge screenshot
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}The screenshot will have a resolution of {COMMA} x {COMMA} pixels. Taking the screenshot may take a while. Do you want to continue?
STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}Heightmap successfully saved as '{STRING}'. Highest peak is {NUM}
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Screenshot successfully saved as '{STRING}'
STR_ERROR_SCREENSHOT_FAILED :{WHITE}Screenshot failed!

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
@@ -2277,9 +2278,6 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Kiom da urboj:
STR_MAPGEN_DATE :{BLACK}Dato:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Kiom da industrioj:
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Neĝlinia alteco:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Altigu la neĝlinion per unu
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Malaltigu la neĝlinion per unu
STR_MAPGEN_LAND_GENERATOR :{BLACK}Landgenerilo:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Terentipo:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Marnivelo:
@@ -2305,7 +2303,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Mapa nom
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Grandeco:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Ŝanĝu altecon de la neĝlinio
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Ŝanĝu komencjaron
# SE Map generation

View File

@@ -173,7 +173,7 @@ STR_QUANTITY_WHEAT :{WEIGHT_LONG} n
STR_QUANTITY_RUBBER :{VOLUME_LONG} kummi
STR_QUANTITY_SUGAR :{WEIGHT_LONG} suhkrut
STR_QUANTITY_TOYS :{COMMA} mänguas{P i ja}
STR_QUANTITY_SWEETS :{COMMA} kontitäi{P s t} maiustusi
STR_QUANTITY_SWEETS :{COMMA}{NBSP}kotitäi{P s t} maiustusi
STR_QUANTITY_COLA :{VOLUME_LONG} koolat
STR_QUANTITY_CANDYFLOSS :{WEIGHT_LONG} suhkruvatti
STR_QUANTITY_BUBBLES :{COMMA} mull{P "" i}
@@ -871,7 +871,7 @@ STR_NEWS_DISASTER_COAL_MINE_SUBSIDENCE :{BIG_FONT}{BLAC
STR_NEWS_DISASTER_FLOOD_VEHICLE :{BIG_FONT}{BLACK}Üleujutused!{}Vähemalt {COMMA} kadunut arvatakse surnuks peale olulist üleujutust!
STR_NEWS_COMPANY_IN_TROUBLE_TITLE :{BIG_FONT}{BLACK}Ettevõttel on probleeme!
STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}Ettevõte {STRING} müüakse maha ja kuulutatakse pankrot, kui tulemused peatselt ei parane!
STR_NEWS_COMPANY_IN_TROUBLE_DESCRIPTION :{BIG_FONT}{BLACK}Ettevõte {STRING} müüakse maha või kuulutatakse pankrotistunuks, kui tulemused peatselt ei parane!
STR_NEWS_COMPANY_MERGER_TITLE :{BIG_FONT}{BLACK}Ettevõtete ühinemine!
STR_NEWS_COMPANY_MERGER_DESCRIPTION :{BIG_FONT}{BLACK}{STRING} müüdi ettevõttele {STRING} {CURRENCY_LONG} eest!
STR_NEWS_COMPANY_BANKRUPT_TITLE :{BIG_FONT}{BLACK}Pankrot!
@@ -1014,10 +1014,10 @@ STR_GAME_OPTIONS_TOWN_NAMES_FRAME :{BLACK}Asulate
STR_GAME_OPTIONS_TOWN_NAMES_DROPDOWN_TOOLTIP :{BLACK}Vali asulanimede stiil
############ start of townname region
STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Inglise (originaalne)
STR_GAME_OPTIONS_TOWN_NAME_ORIGINAL_ENGLISH :Inglise (algne)
STR_GAME_OPTIONS_TOWN_NAME_FRENCH :Prantsusmaa
STR_GAME_OPTIONS_TOWN_NAME_GERMAN :Saksamaa
STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Inglise (Lisa)
STR_GAME_OPTIONS_TOWN_NAME_ADDITIONAL_ENGLISH :Inglise (täiendatud)
STR_GAME_OPTIONS_TOWN_NAME_LATIN_AMERICAN :Ladina-Ameerika
STR_GAME_OPTIONS_TOWN_NAME_SILLY :Tobedad
STR_GAME_OPTIONS_TOWN_NAME_SWEDISH :Rootsi
@@ -1060,9 +1060,10 @@ STR_GAME_OPTIONS_RESOLUTION_OTHER :muu
STR_GAME_OPTIONS_RESOLUTION_ITEM :{NUM}x{NUM}
STR_GAME_OPTIONS_VIDEO_ACCELERATION :{BLACK}Riistvarakiirendus
STR_GAME_OPTIONS_VIDEO_ACCELERATION_TOOLTIP :{BLACK}Märgides selle ruudu, lubad OpenTTD-l üritada kasutada riistvarakiirendust. Muudetud seade omab mõju pärast mängu taaskäivitust
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
@@ -1181,6 +1182,8 @@ STR_TERRAIN_TYPE_FLAT :Tasane
STR_TERRAIN_TYPE_HILLY :Künklik
STR_TERRAIN_TYPE_MOUNTAINOUS :Mägine
STR_TERRAIN_TYPE_ALPINIST :Alpinist
STR_TERRAIN_TYPE_CUSTOM :Määratud kõrgus
STR_TERRAIN_TYPE_CUSTOM_VALUE :Määratud kõrgus ({NUM})
STR_CITY_APPROVAL_PERMISSIVE :Soodustav
STR_CITY_APPROVAL_TOLERANT :Salliv
@@ -1195,14 +1198,14 @@ STR_CONFIG_SETTING_EXPAND_ALL :{BLACK}Ava kõi
STR_CONFIG_SETTING_COLLAPSE_ALL :{BLACK}Sulge kõik
STR_CONFIG_SETTING_NO_EXPLANATION_AVAILABLE_HELPTEXT :(seletus puudub)
STR_CONFIG_SETTING_DEFAULT_VALUE :{LTBLUE}Vaikeväärtus: {ORANGE}{STRING}
STR_CONFIG_SETTING_TYPE :{LTBLUE}Seade rühm: {ORANGE}{STRING}
STR_CONFIG_SETTING_TYPE :{LTBLUE}Seade liik: {ORANGE}{STRING}
STR_CONFIG_SETTING_TYPE_CLIENT :Kliendiseade (ei salvestu koos mänguga; mõjutab kõiki mänge)
STR_CONFIG_SETTING_TYPE_GAME_MENU :Mängu seade (salvestub koos mänguga; mõjutab ainult uusi mänge)
STR_CONFIG_SETTING_TYPE_GAME_INGAME :Mängu seaded (hoitakse salvestuses; mõjutab ainult praegust mängu)
STR_CONFIG_SETTING_TYPE_COMPANY_MENU :Ettevõtte seaded (hoitakse salvestuses; mõjutab ainult uusi mänge)
STR_CONFIG_SETTING_TYPE_COMPANY_INGAME :Ettevõtte seaded (hoitakse salvestuses; mõjutab ainult praegust ettevõtet)
STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Rühm:
STR_CONFIG_SETTING_RESTRICT_CATEGORY :{BLACK}Jagu:
STR_CONFIG_SETTING_RESTRICT_TYPE :{BLACK}Liik:
STR_CONFIG_SETTING_RESTRICT_DROPDOWN_HELPTEXT :{BLACK}Piirab varem tehtud filtridega alljärgnevat loendit
STR_CONFIG_SETTING_RESTRICT_BASIC :Põhilised (kuva vaid tähtsad seaded)
@@ -1262,9 +1265,11 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Lülita sisse/v
STR_CONFIG_SETTING_CITY_APPROVAL :Astuse omavalitsuse suhtumine pinnase restruktureerimisse: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Vali kui suurt mõju tekitavad müra ning keskkonna muudatused ettevõtte mainele ja edasistele ehitustoimingutele antud piirkonnas
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Kaardi ülemkõrgus: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Sea kaardil paiknevatele mägedele ülemine kõrguspiir
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Kaardi maksimaalset kõrgust pole sellisele kõrgusele võimalik sätestada. Vähemalt üks mägi on antud kõrgusest suurem.
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Kaardi kõrguspiir: {STRING}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Määra ülempiir kaardil oleva maastiku kõrgusele. "(Auto)" leiab sobiva väärtuse pärast, kui maastik on tekitatud
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :(auto)
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Sellist väärtust ei saa kaardi kõrguspiirile anda. Vähemalt üks mägi kaardil on kõrgem
STR_CONFIG_SETTING_AUTOSLOPE :Maastikukujundus majade, rööbaste jms. all (autoslope): {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Lase maja- ja rööpaalust maad kujundada ilma neid eemaldamata
STR_CONFIG_SETTING_CATCHMENT :Reaalsemad veekogud: {STRING}
@@ -1409,6 +1414,12 @@ STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maksimaalne kau
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Naftatöötlemistehased ehitatakse ainult kaardi piirile, see on rannikul saartega mängitaval kaardil.
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Lumepiiri kõrgus: {STRING}
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Määra, millisel kõrgusel algab sub-arktiline maastik. Lumi mõjutab ka tööstuste loomist ja asulate kasvamise nõudeid
STR_CONFIG_SETTING_SNOW_COVERAGE :Lumekatvus: {STRING}
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Mõjutab umbkaudset lume osakaalu lähisartikilisel maastikul. Lumi mõjutab ka tööstuste tekitamist ja asulate kasvuvajadusi. Kasutatakse vaid kaardi tekitamisel. Vahetult merepiiri kohal on maa alati lumevaba
STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_DESERT_COVERAGE :Kõrbekatvus: {STRING}
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Mõjuta umbkaudset kõrbe osakaalu troopilisel maastikul. Kõrb mõjutab ka tööstuste tekitamist. Kasutatakse vaid kaardi tekitamisel
STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Maastiku järskus (ainult TerraGenesis) : {STRING}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis only) Vali mägede tihedus: Laugetel maastikel on vähem, laiema ulatusega mägesid. Mägistel maastikel on palju mägesid, mis võivad näha välja samasugused
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Väga lauge
@@ -1426,9 +1437,9 @@ STR_CONFIG_SETTING_TREE_PLACER_ORIGINAL :Algupärane
STR_CONFIG_SETTING_TREE_PLACER_IMPROVED :Täiustatud
STR_CONFIG_SETTING_ROAD_SIDE :Sõidukid: {STRING}
STR_CONFIG_SETTING_ROAD_SIDE_HELPTEXT :Vali liikluse suund
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Kõrgustekaardi pööramine: {STRING}
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Vastu-päevapidi
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Päevapidi
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION :Kõrguskaardi pööre: {STRING}
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_COUNTER_CLOCKWISE :Vastupäeva
STR_CONFIG_SETTING_HEIGHTMAP_ROTATION_CLOCKWISE :Päripäeva
STR_CONFIG_SETTING_SE_FLAT_WORLD_HEIGHT :Kõrguse level kui kõrgele lapik kaart läheb: {STRING}
STR_CONFIG_SETTING_EDGES_NOT_EMPTY :{WHITE}Üks või enam ruutu põhjaäärel pole tühjad
STR_CONFIG_SETTING_EDGES_NOT_WATER :{WHITE}Üks või enam ääreruutu pole vesi
@@ -1892,7 +1903,7 @@ STR_INTRO_TOOLTIP_SCENARIO_EDITOR :{BLACK}Loo oma
STR_INTRO_TOOLTIP_MULTIPLAYER :{BLACK}Alusta mitmikmängu
STR_INTRO_TOOLTIP_TEMPERATE :{BLACK}Vali 'parasvöötme' maastik
STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Vali 'lähispolaarne' maastik
STR_INTRO_TOOLTIP_SUB_ARCTIC_LANDSCAPE :{BLACK}Vali 'lähisarktiline' maastik
STR_INTRO_TOOLTIP_SUB_TROPICAL_LANDSCAPE :{BLACK}Vali 'lähistroopiline' maastik
STR_INTRO_TOOLTIP_TOYLAND_LANDSCAPE :{BLACK}Vali 'mänguasjamaa' maastik
@@ -1930,7 +1941,7 @@ STR_CHEAT_NO_JETCRASH :{LTBLUE}Reaktii
STR_CHEAT_EDIT_MAX_HL :{LTBLUE}Muuda kaardi ülemkõrgust {ORANGE}{NUM}
STR_CHEAT_EDIT_MAX_HL_QUERY_CAPT :{WHITE}Muuda kaardil olevate mägede ülemkõrgust
STR_CHEAT_SWITCH_CLIMATE_TEMPERATE_LANDSCAPE :Parasvöötme maastik
STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Arktiline maastik
STR_CHEAT_SWITCH_CLIMATE_SUB_ARCTIC_LANDSCAPE :Lähisarktiline maastik
STR_CHEAT_SWITCH_CLIMATE_SUB_TROPICAL_LANDSCAPE :Troopiline maastik
STR_CHEAT_SWITCH_CLIMATE_TOYLAND_LANDSCAPE :Mänguasjamaa
STR_CHEAT_CHANGE_DATE :{LTBLUE}Muuda kuupäeva: {ORANGE} {DATE_SHORT}
@@ -2397,6 +2408,9 @@ STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD
STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Jah, laadi graafika alla
STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Ei, välju OpenTTD-st
STR_MISSING_GRAPHICS_ERROR_TITLE :{WHITE}Allalaadimine ebaõnnestus
STR_MISSING_GRAPHICS_ERROR :{BLACK}Graafika allalaadimine ebaõnnestus.{}Palun laadida graafika alla käsitsi.
STR_MISSING_GRAPHICS_ERROR_QUIT :{BLACK}Välju OpenTTD-st
# Transparency settings window
STR_TRANSPARENCY_CAPTION :{WHITE}Läbipaistvuse seadistus
@@ -2474,7 +2488,7 @@ STR_WAYPOINT_GRAPHICS_TOOLTIP :{BLACK}Vali mel
# Rail station construction window
STR_STATION_BUILD_RAIL_CAPTION :{WHITE}Raudteejaama valik
STR_STATION_BUILD_ORIENTATION :{BLACK}Orientatsioon
STR_STATION_BUILD_ORIENTATION :{BLACK}Suund
STR_STATION_BUILD_RAILROAD_ORIENTATION_TOOLTIP :{BLACK}Raudteejaamale suuna valimine
STR_STATION_BUILD_NUMBER_OF_TRACKS :{BLACK}Radade arv
STR_STATION_BUILD_NUMBER_OF_TRACKS_TOOLTIP :{BLACK}Vali raudteejaama perroonide arv
@@ -2483,8 +2497,8 @@ STR_STATION_BUILD_PLATFORM_LENGTH_TOOLTIP :{BLACK}Vali rau
STR_STATION_BUILD_DRAG_DROP :{BLACK}Lohistamine
STR_STATION_BUILD_DRAG_DROP_TOOLTIP :{BLACK}Ehita jaam kasutades hiirega lohistamist
STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Vali jaama klass mida tahad näidata
STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Vali ehitatava jaama tüüp
STR_STATION_BUILD_STATION_CLASS_TOOLTIP :{BLACK}Vali idatav jaamarühm
STR_STATION_BUILD_STATION_TYPE_TOOLTIP :{BLACK}Vali näidatav jaamaliik
STR_STATION_CLASS_DFLT :Esialgne jaam
STR_STATION_CLASS_WAYP :Meldepunktid
@@ -2561,7 +2575,7 @@ STR_STATION_BUILD_BUS_ORIENTATION :{WHITE}Bussijaa
STR_STATION_BUILD_BUS_ORIENTATION_TOOLTIP :{BLACK}Vali bussijaamale suund
STR_STATION_BUILD_TRUCK_ORIENTATION :{WHITE}Laadimisplatsi suund
STR_STATION_BUILD_TRUCK_ORIENTATION_TOOLTIP :{BLACK}Vali laadimisplatsile suund
STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Reisitrammi Jaama Suund
STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION :{WHITE}Reisitrammijaama suund
STR_STATION_BUILD_PASSENGER_TRAM_ORIENTATION_TOOLTIP :{BLACK}Vali reisitrammijaama suund
STR_STATION_BUILD_CARGO_TRAM_ORIENTATION :{WHITE}Kaubatrammi Jaama Suund
STR_STATION_BUILD_CARGO_TRAM_ORIENTATION_TOOLTIP :{BLACK}Vali kaubatrammijaama suund
@@ -2592,7 +2606,7 @@ STR_TOOLBAR_AIRCRAFT_BUILD_AIRPORT_TOOLTIP :{BLACK}Ehita le
# Airport construction window
STR_STATION_BUILD_AIRPORT_CAPTION :{WHITE}Lennuvälja valik
STR_STATION_BUILD_AIRPORT_TOOLTIP :{BLACK}Vali lennuvälja suurus ja tüüp
STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Lennujaama liik
STR_STATION_BUILD_AIRPORT_CLASS_LABEL :{BLACK}Lennuvälja järk
STR_STATION_BUILD_AIRPORT_LAYOUT_NAME :{BLACK}Paigutus {NUM}
STR_AIRPORT_SMALL :Väike
@@ -2622,7 +2636,7 @@ STR_LANDSCAPING_TOOLTIP_PURCHASE_LAND :{BLACK}Maa ostm
# Object construction window
STR_OBJECT_BUILD_CAPTION :{WHITE}Objekti valik
STR_OBJECT_BUILD_TOOLTIP :{BLACK}Vali ehitatav objekt. Shift valib ehitamise/hinna kuvamise režiimi
STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Vali ehitatava objekti klass
STR_OBJECT_BUILD_CLASS_TOOLTIP :{BLACK}Vali ehitatava objekti järk
STR_OBJECT_BUILD_PREVIEW_TOOLTIP :{BLACK}Objekti eelvaade
STR_OBJECT_BUILD_SIZE :{BLACK}Suurus: {GOLD}{NUM} x {NUM} ruutu
@@ -2737,7 +2751,7 @@ STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY :{BLACK}Kohalik
STR_LAND_AREA_INFORMATION_LOCAL_AUTHORITY_NONE :puudub
STR_LAND_AREA_INFORMATION_LANDINFO_COORDS :{BLACK}Koordinaadid: {LTBLUE}{NUM} x {NUM} x {NUM} ({STRING})
STR_LAND_AREA_INFORMATION_BUILD_DATE :{BLACK}Ehitatud: {LTBLUE}{DATE_LONG}
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Jaama liik: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_CLASS :{BLACK}Jaama järk: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_STATION_TYPE :{BLACK}Jaama liik: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_AIRPORT_CLASS :{BLACK}Lennuvälja liik: {LTBLUE}{STRING}
STR_LAND_AREA_INFORMATION_AIRPORT_NAME :{BLACK}Lennujaama nimi: {LTBLUE}{STRING}
@@ -2942,17 +2956,22 @@ STR_SAVELOAD_OSKTITLE :{BLACK}Sisesta
# World generation
STR_MAPGEN_WORLD_GENERATION_CAPTION :{WHITE}Maailma tekitamine
STR_MAPGEN_MAPSIZE :{BLACK}Kaardi mõõtmed:
STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Määrab maakaardi mõõtmed ruutudes. Ruute, mida saab kasutada, on pisut vähem
STR_MAPGEN_MAPSIZE_TOOLTIP :{BLACK}Määrab kaardi mõõtmed ruutudes. Ruute, mida saab kasutada, on pisut vähem
STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Asustusi:
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Asustuste arv:
STR_MAPGEN_DATE :{BLACK}Algus:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Tööstustihedus:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Kaardi ülemkõrgus:
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Tõsta maksimaalset kaardi mägede kõrgust ühe võrra
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Langeta maksimaalset kaardi mägede kõrgust ühe võrra
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Lumepiiri kõrgus:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Lumepiiri liigutamine ühe võrra üles
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Lumepiiri liigutamine ühe võrra alla
STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Kõrgpunkt:
STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Suurenda kaardi kõrgpunkti ühe võrra
STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Vähenda kaardi kõrgpunkti ühe võrra
STR_MAPGEN_SNOW_COVERAGE :{BLACK}Lumekatvus:
STR_MAPGEN_SNOW_COVERAGE_UP :{BLACK}Suurenda lumekatvust kümne protsendi võrra
STR_MAPGEN_SNOW_COVERAGE_DOWN :{BLACK}Vähenda lumekatvust kümne protsendi võrra
STR_MAPGEN_SNOW_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_DESERT_COVERAGE :{BLACK}Kõrbekatvus:
STR_MAPGEN_DESERT_COVERAGE_UP :{BLACK}Suurenda kõrbekatvust kümne protsendi võrra
STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Vähenda kõrbekatvust kümne protsendi võrra
STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_LAND_GENERATOR :{BLACK}Maatekituse meetod:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Maapinna tüüp:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Merepinna tase:
@@ -2973,13 +2992,15 @@ STR_MAPGEN_BORDER_RANDOM :{BLACK}Suvaline
STR_MAPGEN_BORDER_RANDOMIZE :{BLACK}Suvaline
STR_MAPGEN_BORDER_MANUAL :{BLACK}Määratud
STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Kõrgustekaardi pööre:
STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Kõrgusekaardi nimi:
STR_MAPGEN_HEIGHTMAP_ROTATION :{BLACK}Kõrguskaardi pööre:
STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Kõrguskaardi nimi:
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Suurus:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Muuda maksimaalset kaardi kõrgust
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Muuda lumepiiri kõrgust
STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Soovitud kõrgpunkt
STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT :{WHITE}Kõrgpunkt
STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT :{WHITE}Lumekatvus (%)
STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT :{WHITE}Kõrbekatvus (%)
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Muuda algusaastat
# SE Map generation
@@ -3360,7 +3381,7 @@ STR_STATION_VIEW_CARGO_SUPPLY_RATING :{WHITE}{STRING}
STR_STATION_VIEW_GROUP :{BLACK}Jaotusalus
STR_STATION_VIEW_WAITING_STATION :Jaam: ootel
STR_STATION_VIEW_WAITING_AMOUNT :Summa: ootel
STR_STATION_VIEW_WAITING_AMOUNT :Kogus: ootel
STR_STATION_VIEW_PLANNED_STATION :Jaam: eeldatav
STR_STATION_VIEW_PLANNED_AMOUNT :Summa: eeldatav
STR_STATION_VIEW_FROM :{YELLOW}{CARGO_SHORT} jaamast {STATION}
@@ -3598,7 +3619,7 @@ STR_GROUP_RENAME_TOOLTIP :{BLACK}Ümberni
STR_GROUP_LIVERY_TOOLTIP :{BLACK}Muuda valitud jao värvistikku
STR_GROUP_REPLACE_PROTECTION_TOOLTIP :{BLACK}Klõpsa, et kaitsta seda jagu globaalse automaatasenduse eest
STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Kustuta Grupp
STR_QUERY_GROUP_DELETE_CAPTION :{WHITE}Kõrvalda jagu
STR_GROUP_DELETE_QUERY_TEXT :{WHITE}Kas oled kindel, et tahad kustutada selle grupi ja kõik järglased?
STR_GROUP_ADD_SHARED_VEHICLE :Kõik jagatud sõidukid
@@ -4022,8 +4043,8 @@ STR_ORDERS_LIST_TOOLTIP :{BLACK}Korraldu
STR_ORDER_INDEX :{COMMA}:{NBSP}
STR_ORDER_TEXT :{STRING} {STRING} {STRING}
STR_ORDERS_END_OF_ORDERS :- - Korraldused läbi - -
STR_ORDERS_END_OF_SHARED_ORDERS :- - Jagatud korraldused läbi - -
STR_ORDERS_END_OF_ORDERS :- - Korralduste lõpp - -
STR_ORDERS_END_OF_SHARED_ORDERS :- - Jagatud korralduste lõpp - -
# Order bottom buttons
STR_ORDER_NON_STOP :{BLACK}Vahepeatusteta
@@ -4397,6 +4418,7 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Mäng ei
STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Hiiglaslik kuvapaugutus
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Kuvapaugutuse mõõtmed saavad olema {COMMA} x {COMMA} pikslit. Kuvapaugutuse tegemine võib võtta tükk aega. Kas sa oled kindel, et sa soovid jätkata?
STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}Kõrguskaart edukalt salvestatud, kui '{STRING}'. Kõrgpunkt on {NUM}
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Ekraanipilt on edukalt salvestatud nimega '{STRING}'
STR_ERROR_SCREENSHOT_FAILED :{WHITE}Ekraanipildi tegemine nurjus!

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}
@@ -2438,9 +2439,6 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Nr. av bygdum:
STR_MAPGEN_DATE :{BLACK}Dato:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Nr. av ídnaðum:
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Hædd á kava linju:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Flyt kava linjuna eitt upp
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Flyt kava linjuna eitt niður
STR_MAPGEN_LAND_GENERATOR :{BLACK}Lendis framleiðari:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Slag av lendi:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Sjóvarmáli:
@@ -2466,7 +2464,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Navn á
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Stødd:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} * {NUM}
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Broyt hædd á kava linju
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Broyt byrjunar ár
# SE Map generation

View File

@@ -755,7 +755,7 @@ STR_SMALLMAP_LEGENDA_WATER :{TINY_FONT}{BLA
STR_SMALLMAP_LEGENDA_NO_OWNER :{TINY_FONT}{BLACK}Ei omistajaa
STR_SMALLMAP_LEGENDA_TOWNS :{TINY_FONT}{BLACK}Taajamia
STR_SMALLMAP_LEGENDA_INDUSTRIES :{TINY_FONT}{BLACK}Teollisuutta
STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Autiomaata
STR_SMALLMAP_LEGENDA_DESERT :{TINY_FONT}{BLACK}Aavikko
STR_SMALLMAP_LEGENDA_SNOW :{TINY_FONT}{BLACK}Lunta
STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Näytä kuntien nimet kartalla
@@ -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
@@ -1124,6 +1127,8 @@ STR_TERRAIN_TYPE_FLAT :Tasainen
STR_TERRAIN_TYPE_HILLY :Kukkulainen
STR_TERRAIN_TYPE_MOUNTAINOUS :Vuoristoinen
STR_TERRAIN_TYPE_ALPINIST :Vuorikiipeilijä
STR_TERRAIN_TYPE_CUSTOM :Oma korkeus
STR_TERRAIN_TYPE_CUSTOM_VALUE :Oma korkeus ({NUM})
STR_CITY_APPROVAL_PERMISSIVE :Salliva
STR_CITY_APPROVAL_TOLERANT :Suvaitseva
@@ -1205,9 +1210,11 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Ottaa käyttö
STR_CONFIG_SETTING_CITY_APPROVAL :Valtuuston asenne alueiden uudelleenjärjestelyyn: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Valitse, kuinka paljon yhtiöiden aiheuttama melu ja ympäristövahingot vaikuttavat niiden arvioihin sekä tuleviin rakennustoimiin alueella
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Kartan suurin sallittu korkeus: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Määritä suurin sallittu korkeus vuorille
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Tämä arvo ei kelpaa kartan suurimmaksi sallituksi korkeudeksi, sillä kartalla on ainakin yksi sitä korkeampi vuori
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Kartan korkeusraja: {STRING}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Aseta kartan maaston maksimikorkeus. Kun valittuna on ”(auto)”, sopiva arvo valitaan maaston luomisen jälkeen
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :(auto)
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Tämä arvo ei kelpaa kartan korkeusrajaksi, sillä kartalla on ainakin yksi sitä korkeampi vuori
STR_CONFIG_SETTING_AUTOSLOPE :Salli maaston muokkaaminen rakennusten, raiteiden jne. juurella: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Sallii maaston muokkaamisen rakennusten ja ratojen alta tuhoamatta niitä
STR_CONFIG_SETTING_CATCHMENT :Realistisemman kokoiset vaikutusalueet: {STRING}
@@ -1351,7 +1358,13 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Määritä, kui
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Suurin sallittu etäisyys kartan reunoilta öljyteollisuudelle: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Öljynjalostamojen ja öljylauttojen suurin etäisyys kartan reunasta. Saarikartoilla tämä takaa sen, että ne ovat lähellä rannikkoa. Yli 256 ruudun kartoilla tätä arvoa suurennetaan suhteessa kartan kokoon.
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Lumirajan korkeus: {STRING}
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Määritä, millä korkeudella lumiraja on pohjoisessa maastotyypissä. Lumi vaikuttaa teollisuuslaitosten luontiin sekä kuntien kasvuedellytyksiin
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Määritä, millä korkeudella lumiraja on pohjoisessa maastotyypissä. Lumi vaikuttaa teollisuuslaitosten luontiin sekä kuntien kasvuedellytyksiin. Voidaan muuttaa vain Skenaariomuokkaimessa, muuten lasketaan ”lumen peiton” perusteella
STR_CONFIG_SETTING_SNOW_COVERAGE :Lumen peitto: {STRING}
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Säätele lumen määrän suuruusluokkaa pohjoisessa maastossa. Lumi vaikuttaa myös teollisuuden luontiin ja kuntien kasvuedellytyksiin. Käytetään vain karttaa luodessa. Juuri merenpinnan yläpuolella oleva maa on aina lumetonta
STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}{NBSP}%
STR_CONFIG_SETTING_DESERT_COVERAGE :Aavikon peitto: {STRING}
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Säätele aavikon määrän suuruusluokkaa subtrooppisessa maastossa. Aavikko vaikuttaa myös teollisuuden luontiin. Käytetään vain karttaa luodessa
STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}{NBSP}%
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Maaston epätasaisuus: {STRING}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(Vain TerraGenesis) Määritä mäkien tiheys: Tasaisessa maastossa mäet ovat laajempia ja niitä on vähemmän. Epätasaisessa maastossa on enemmän mäkiä, mikä voi saada maaston näyttämään itseään toistavalta
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Erittäin tasainen
@@ -1661,12 +1674,17 @@ STR_CONFIG_SETTING_ZOOM_MIN :Suurin sallittu
STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Suurin mahdollinen lähennystaso näkymille. Huomioi, että suuret lähennystasot vaativat enemmän muistia
STR_CONFIG_SETTING_ZOOM_MAX :Suurin sallittu pienennystaso: {STRING}
STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Pienin mahdollinen lähennystaso näkymille. Pienet lähennystasot voivat aiheuttaa suorituskykyongelmia
STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Korkein käytettävä sprite-resoluutio: {STRING}
STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Rajoita suurinta spriteille käytettävää resoluutiota. Resoluution rajoittaminen estää korkean tarkkuuden grafiikoiden käyttämisen vaikka niitä olisi saatavilla. Tämä voi auttaa pitämään pelin ulkoasun yhtenäisenä käytettäessä sekaisin GRF-tiedostoja, joista osalla on ja osalla ei ole korkean tarkkuuden grafiikoita.
STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x
STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x
STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Tavallinen
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_MIN :4x
STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x
STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_NORMAL :1x
STR_CONFIG_SETTING_TOWN_GROWTH :Kuntien kasvunopeus: {STRING}
STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Kunnan kasvunopeus
STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Ei kasvua
@@ -2332,8 +2350,11 @@ STR_CONTENT_ERROR_COULD_NOT_EXTRACT :{WHITE}Ei voitu
STR_MISSING_GRAPHICS_SET_CAPTION :{WHITE}Puuttuvat grafiikat
STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD vaatii toimiakseen grafiikat, mutta niitä ei löydetty. Sallitaanko grafiikoiden lataus ja asennus?
STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Kyllä, lataa grafiiikat
STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Ei, sulje OpenTTD
STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Ei, lopeta OpenTTD
STR_MISSING_GRAPHICS_ERROR_TITLE :{WHITE}Lataus epäonnistui
STR_MISSING_GRAPHICS_ERROR :{BLACK}Grafiikoiden lataus epäonnistui.{}Lataa grafiikat manuaalisesti.
STR_MISSING_GRAPHICS_ERROR_QUIT :{BLACK}Lopeta OpenTTD
# Transparency settings window
STR_TRANSPARENCY_CAPTION :{WHITE}Läpinäkyvyysasetukset
@@ -2884,12 +2905,17 @@ STR_MAPGEN_BY :{BLACK}×
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Kuntien määrä:
STR_MAPGEN_DATE :{BLACK}Päivämäärä:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Teollisuuden määrä:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Suurin sallittu kartan korkeus:
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Kasvata suurinta sallittua vuorten korkeutta yhdellä
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Vähennä suurinta sallittua vuorten korkeutta yhdellä
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Lumirajan korkeus:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Siirrä lumirajaa yksi taso ylöspäin
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Siirrä lumirajaa yksi taso alaspäin
STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Korkein huippu:
STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Korota kartan korkeimman huipun maksimikorkeutta yhdellä
STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Madalla kartan korkeimman huipun maksimikorkeutta yhdellä
STR_MAPGEN_SNOW_COVERAGE :{BLACK}Lumen peitto:
STR_MAPGEN_SNOW_COVERAGE_UP :{BLACK}Kasvata lumen peittoa 10 prosentilla
STR_MAPGEN_SNOW_COVERAGE_DOWN :{BLACK}Vähennä lumen peittoa 10 prosentilla
STR_MAPGEN_SNOW_COVERAGE_TEXT :{BLACK}{NUM}{NBSP}%
STR_MAPGEN_DESERT_COVERAGE :{BLACK}Aavikon peitto:
STR_MAPGEN_DESERT_COVERAGE_UP :{BLACK}Kasvata aavikon peittoa 10 prosentilla
STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Vähennä aavikon peittoa 10 prosentilla
STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}{NBSP}%
STR_MAPGEN_LAND_GENERATOR :{BLACK}Maastogeneraattori:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Maaston tyyppi:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Merenpinta:
@@ -2915,8 +2941,10 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Korkeusk
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Koko:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM}×{NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Muuta suurinta sallittua kartan korkeutta
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Vaihda lumirajan korkeutta
STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Huipun tavoitekorkeus
STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT :{WHITE}Korkein huippu
STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT :{WHITE}Lumen peitto (%)
STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT :{WHITE}Aavikon peitto (%)
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Vaihda aloitusvuosi
# SE Map generation
@@ -4333,6 +4361,7 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Vain til
STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Suuri kuvankaappaus
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Kuvankaappauksen tarkkuus tulee olemaan {COMMA} x {COMMA} pikseliä. Kuvankaappauksen ottaminen voi kestää jonkin aikaa. Haluatko jatkaa?
STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}Korkeuskartta tallennettu nimellä ”{STRING}”. Korkein huippu on {NUM}
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Kuvakaappaus tallennettu nimellä ”{STRING}”.
STR_ERROR_SCREENSHOT_FAILED :{WHITE}Kuvakaappaus epäonnistui!
@@ -4438,7 +4467,7 @@ STR_ERROR_CAN_T_BUILD_CARGO_TRAM_STATION :{WHITE}Ei voi r
STR_ERROR_CAN_T_BUILD_DOCK_HERE :{WHITE}Satamaa ei voi rakentaa tähän...
STR_ERROR_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Lentokenttää ei voi rakentaa...
STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Liitä yhteen useampi asema/lastausalue.
STR_ERROR_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Vieressä on useampi kuin yksi olemassaoleva asema tai kuormausalue.
STR_ERROR_STATION_TOO_SPREAD_OUT :{WHITE}... asema liian levittäytynyt
STR_ERROR_TOO_MANY_STATIONS_LOADING :{WHITE}Liian monta asemaa ja lastausaluetta.
STR_ERROR_TOO_MANY_STATION_SPECS :{WHITE}Rautatieasema on jakautunut liian moneen osaan
@@ -4471,7 +4500,7 @@ STR_ERROR_MUST_DEMOLISH_DOCK_FIRST :{WHITE}Satama p
STR_ERROR_MUST_DEMOLISH_AIRPORT_FIRST :{WHITE}Lentokenttä pitää tuhota ensin.
# Waypoint related errors
STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Liittää useamman kuin yhden reittipisteen
STR_ERROR_WAYPOINT_ADJOINS_MORE_THAN_ONE_EXISTING :{WHITE}Vieressä on useampi kuin yksi olemassaoleva reittipiste.
STR_ERROR_TOO_CLOSE_TO_ANOTHER_WAYPOINT :{WHITE}Liian lähellä toista reittipistettä
STR_ERROR_CAN_T_BUILD_TRAIN_WAYPOINT :{WHITE}Junien reittipistettä ei voi rakentaa tähän...

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
@@ -1125,6 +1128,8 @@ STR_TERRAIN_TYPE_FLAT :Plat
STR_TERRAIN_TYPE_HILLY :Collinaire
STR_TERRAIN_TYPE_MOUNTAINOUS :Montagneux
STR_TERRAIN_TYPE_ALPINIST :Alpin
STR_TERRAIN_TYPE_CUSTOM :Hauteur personnalisée
STR_TERRAIN_TYPE_CUSTOM_VALUE :Hauteur personnalisée ({NUM})
STR_CITY_APPROVAL_PERMISSIVE :Laxiste
STR_CITY_APPROVAL_TOLERANT :Tolérante
@@ -1206,9 +1211,11 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Activer/Désact
STR_CONFIG_SETTING_CITY_APPROVAL :Attitude du conseil municipal envers la restructuration de la zone{NBSP}: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Définit comment le bruit et les dommages environnementaux des compagnies affectent leur réputation et leurs prochaines actions de constructions dans la zone
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Altitude maximum de la carte{NBSP}: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Définir l'altitude maximum autorisée pour les montagnes sur la carte
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Vous ne pouvez pas régler l'altitude maximum de la carte sur cette valeur. Au moins une montagne sur la carte est plus haute
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Hauteur limite de la carte: {STRING}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Définissez la hauteur maximale du terrain de la carte. Avec "(auto)", une bonne valeur sera choisie après la création du terrain
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :(auto)
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Vous ne pouvez pas définir la hauteur limite de la carte sur cette valeur. Il y a uu moins une montagne sur la carte qui est plus haute
STR_CONFIG_SETTING_AUTOSLOPE :Terrassement sous les bâtiments, voies, etc.{NBSP}: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Autoriser le terrassement sous les bâtiments et les voies sans les retirer
STR_CONFIG_SETTING_CATCHMENT :Autoriser des zones de desserte plus réalistes{NBSP}: {STRING}
@@ -1352,7 +1359,13 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Définit combie
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Distance maximum depuis les bords pour les industries pétrolières{NBSP}: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Limite de distance par rapport au bord de la carte où les raffineries et les plateformes pétrolières peuvent être construites. Sur les cartes d'îles cela assure qu'elles sont près de la côte. Sur les cartes plus large que 256 tuiles, cette valeur est mise à l'échelle.
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Altitude d'enneigement{NBSP}: {STRING}
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Contrôle à quelle altitude la neige commence dans le climat sub-arctique.La neige affecte aussi la génération des industries et les exigences pour la croissance des villes
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Contrôle à quelle altitude la neige commence dans le climat sub-arctique. La neige affecte aussi la génération des industries et les exigences pour la croissance des villes. Ne peut être modifié que via l'éditeur de scénario autrement il est calculé via "couverture de neige"
STR_CONFIG_SETTING_SNOW_COVERAGE :Couverture de neige: {STRING}
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Contrôle la quantité approximative de neige sur le paysage sub-arctique. La neige affecte également la production des industrielles et les besoins de croissance des villes. Seulement utilisé lors de la création de la carte. La terre juste au-dessus du niveau de la mer est toujours sans neige
STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_DESERT_COVERAGE :Couverture du désert: {STRING}
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Contrôlez la quantité approximative de zone du désert sur le paysage tropical. Le désert affecte également la création du nombre d'industries. Uniquement utilisé lors de la création de la carte
STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Rugosité du terrain{NBSP}: {STRING}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(TerraGenesis only) Choisir la fréquence des collines{NBSP}: Les paysages doux ont des collines moins nombreuses et plus éloignées. Les paysages rudes ont beaucoup de collines, ce qui peut sembler répétitif
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Très lisse
@@ -1662,12 +1675,17 @@ STR_CONFIG_SETTING_ZOOM_MIN :Zoom avant maxi
STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Le zoom avant maximum pour les vues. Noter qu'activer un plus grand zoom avant augment les besoins en mémoire
STR_CONFIG_SETTING_ZOOM_MAX :Zoom arrière maximum{NBSP}: {STRING}
STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Le zoom arrière maximum pour les vues. Noter que l'usage d'un plus grand zoom arrière peut causer un retard
STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Résolution maximale des sprites{NBSP}: {STRING}
STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Limite la résolution des graphismes. Même si des sprites de plus haute résolution sont disponibles, ils ne seront pas utilisés. Cela peut aider à garder un aspect cohérent quand plusieurs fichiers GRF avec des résolutions différentes sont utilisés.
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_MIN :4x
STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x
STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_NORMAL :1x
STR_CONFIG_SETTING_TOWN_GROWTH :Vitesse de croissance des villes{NBSP}: {STRING}
STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :Vitesse de croissance des villes
STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Aucune
@@ -2335,6 +2353,9 @@ STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD
STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Oui, télécharger les graphiques
STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Non, quitter OpenTTD
STR_MISSING_GRAPHICS_ERROR_TITLE :{WHITE}Téléchargement échoué
STR_MISSING_GRAPHICS_ERROR :{BLACK}Le téléchargement des graphismes a échoué.{}Il faudrait les télécharger manuellement.
STR_MISSING_GRAPHICS_ERROR_QUIT :{BLACK}Quitter OpenTTD
# Transparency settings window
STR_TRANSPARENCY_CAPTION :{WHITE}Options de transparence
@@ -2885,12 +2906,17 @@ STR_MAPGEN_BY :{BLACK}{NBSP}×
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Nb. de villes{NBSP}:
STR_MAPGEN_DATE :{BLACK}Date{NBSP}:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Nb. d'industries{NBSP}:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Altitude maximum de la carte
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Augmenter l'altitude maximum des montagnes sur la carte de 1
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Réduire l'altitude maximum des montagne sur la carte de 1
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Alt. d'enneigement{NBSP}:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Augmenter l'altitude d'enneigement
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Baisser l'altitude d'enneigement
STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Sommet le plus élevé:
STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Augmenter la hauteur maximale du plus haut sommet de la carte de un
STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Diminuer la hauteur maximale du plus haut sommet de la carte de un
STR_MAPGEN_SNOW_COVERAGE :{BLACK}Couverture de la neige:
STR_MAPGEN_SNOW_COVERAGE_UP :{BLACK}Augmenter la couverture de neige de dix pour cent
STR_MAPGEN_SNOW_COVERAGE_DOWN :{BLACK}Diminuer la couverture de neige de dix pour cent
STR_MAPGEN_SNOW_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_DESERT_COVERAGE :{BLACK}Couverture du désert:
STR_MAPGEN_DESERT_COVERAGE_UP :{BLACK}Augmenter la couverture du désert de dix pour cent
STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Diminuer la couverture du désert de dix pour cent
STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_LAND_GENERATOR :{BLACK}Générateur{NBSP}:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Type de terrain{NBSP}:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Niveau de la mer{NBSP}:
@@ -2916,8 +2942,10 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nom de l
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Taille{NBSP}:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM}{NBSP}×{NBSP}{NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Modifier l'altitude maximum de la carte
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Modifier l'altitude d'enneigement
STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Hauteur du pic
STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT :{WHITE}Le point le plus haut
STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT :{WHITE}Couverture de neige (en %)
STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT :{WHITE}Couverture du désert (en %)
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Modifier l'année de départ
# SE Map generation
@@ -3412,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
@@ -4334,6 +4362,7 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Seuls le
STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Très grande capture d'écran
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}La capture d'écran aura une résolution de {COMMA} x {COMMA} pixels. Faire cette capture peut prendre un moment . Êtes-vous sûr de vouloir continuer{NBSP}?
STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}La carte de hauteur a bien été enregistrée sous '{STRING}'. Le pic le plus élevé est {NUM}
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Copie d'écran enregistrée avec succès sous "{STRING}"
STR_ERROR_SCREENSHOT_FAILED :{WHITE}Échec de la copie d'écran{NBSP}!

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
@@ -1360,8 +1361,6 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Toglaich dunaid
STR_CONFIG_SETTING_CITY_APPROVAL :Beachdan comhairle a' bhaile air leasachadh raointean: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Tagh am meud dhe dh'fhuaim is milleadh na h-àrainneachd le companaidhean a tha a dhìth mus bi buaidh air luachadh a' bhaile is barrachd togail san sgìre
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Àirde as motha a mhapa: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Suidhich an àirde as motha aig beanntan a bhios ceadaichte air a mhapa
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Chan urrainn dhut àirde as motha a mhapa a shuidheachadh air an luach seo. Tha beinn air a mhapa a tha nas àirde.
STR_CONFIG_SETTING_AUTOSLOPE :Ceadaich atharrachadh crutha-tìre fo thogalaichean, slighean agus msaa.: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Ceadaich atharrachadh crutha-tìre fo thogalaichean is slighean gun a bhith gan toirt air falbh
@@ -2967,12 +2966,6 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Bailtean:
STR_MAPGEN_DATE :{BLACK}Ceann-latha:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Gnìomhachasan:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Àirde as motha a mhapa
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Meudaich an àirde as motha dhe bheanntan air a mhapa le a h-aon
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Lùghdaich an àirde as motha dhe bheanntan air a mhapa le a h-aon
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Àirde na loidhne-shneachda:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Gluais an loidhne-shneachda suas aon cheum
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Gluais an loidhne-shneachda sìos aon cheum
STR_MAPGEN_LAND_GENERATOR :{BLACK}Gineadair crutha-thìre:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Seòrsa a' chrutha-thìre:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Àirde na mara:
@@ -2998,8 +2991,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Ainm a'
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Meud:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Atharraich an àirde as motha air mapa
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Atharraich àirde na loidhne-shneachda
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Atharraich am bliadhna-tòiseachaidh
# SE Map generation

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
@@ -1180,8 +1181,6 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Activa os desas
STR_CONFIG_SETTING_CITY_APPROVAL :Actitude das autoridades locáis cara a restruturacións de áreas: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Escolle ata que punto o ruido e danos medioambientais producidos polas compañias afectan á súa valoración municipal e ás próximas actividades construtivas na súa área
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Altura máxima do mapa: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Establecer a altura máxima permitida para os montes do mapa
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Non podes establecer a altura máxima do mapa a este valor. Canda menos un monte do mapa é maior
STR_CONFIG_SETTING_AUTOSLOPE :Permitir modificacións do terreo baixo edificios, vías, etc. (autopendente): {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Permite modificar o terreo baixo edificacións e vías sen retiralos
@@ -2198,6 +2197,7 @@ STR_NETWORK_MESSAGE_CLIENT_COMPANY_SPECTATE :*** {STRING} un
STR_NETWORK_MESSAGE_CLIENT_COMPANY_NEW :*** {STRING} comezou unha nova compañía (#{2:NUM})
STR_NETWORK_MESSAGE_CLIENT_LEFT :*** {STRING} saiu da partida ({2:STRING})
STR_NETWORK_MESSAGE_NAME_CHANGE :*** {STRING} cambiou o seu nome a {STRING}
STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} deu {2:CURRENCY_LONG} a {1:STRING}
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}O servidor pechou a sesión
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}O servidor estase a reiniciar...{}Agarda por favor...
@@ -2808,12 +2808,6 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Nº de cidades:
STR_MAPGEN_DATE :{BLACK}Data:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Nº de industrias:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Altura máxima do mapa:
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Aumenta a altura máxima dos montes do mapa en un
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Diminiuir a altura máxima dos montes do mapa en un
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Cota de neve:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Subir a cota de neve unha altura
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Baixar a cota de neve unha altura
STR_MAPGEN_LAND_GENERATOR :{BLACK}Xerador de terreo:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Tipo de terreo:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Nivel do mar:
@@ -2839,8 +2833,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nome do
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Tamaño:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Cambiar altura máxima do mapa
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Cambiar a altura da cota de neve
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Cambia-lo ano de inicio
# SE Map generation

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
@@ -1125,6 +1128,8 @@ STR_TERRAIN_TYPE_FLAT :Flach
STR_TERRAIN_TYPE_HILLY :Hügelig
STR_TERRAIN_TYPE_MOUNTAINOUS :Bergig
STR_TERRAIN_TYPE_ALPINIST :Alpin
STR_TERRAIN_TYPE_CUSTOM :Benutzerdefinierte Höhe
STR_TERRAIN_TYPE_CUSTOM_VALUE :Benutzerdefinierte Höhe ({NUM})
STR_CITY_APPROVAL_PERMISSIVE :Hoch
STR_CITY_APPROVAL_TOLERANT :Mäßig
@@ -1206,9 +1211,11 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Ein- oder Aussc
STR_CONFIG_SETTING_CITY_APPROVAL :Toleranz der Stadtverwaltung gegenüber Landschaftsumgestaltungen: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Auswählen, wie stark Lärm und Umweltschäden die Stadtbewertung einer Firma sinken lassen. Bei einer zu schlechten Bewertung werden dann in dieser Stadt keine Bauvorhaben mehr genehmigt
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maximale Höhe auf der Karte: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Setze die maximal erlaubte Höhe für Berge auf der Karte
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Die maximale Höhe der Karte kann nicht auf diesen Wert gesetzt werden. Mindestens ein Berg auf der Karte ist höher.
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Höhenlimit der Karte: {STRING}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Bestimme die maximale Höhe der Karte. Mit "(auto)" wird ein passender Wert nach der Weltgenerierung bestimmt.
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :(auto)
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Das Höhenlimit der Karte kann nicht auf diesen Wert gesetzt werden. Mindestens ein Berg auf der Karte ist höher.
STR_CONFIG_SETTING_AUTOSLOPE :Landschaftsbau unter Gebäuden, Gleisen, usw. erlauben: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Erlaube Erdbauarbeiten unter Gebäuden oder Infrastruktur, ohne sie zu entfernen
STR_CONFIG_SETTING_CATCHMENT :Verschiedene Stationstypen haben unterschiedlich große Einzugsgebiete: {STRING}
@@ -1352,7 +1359,13 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Wähle wieviele
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Maximalabstand vom Kartenrand für Ölraffinerien: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Ölraffinerien werden nur in der Nähe des Kartenrands gebaut, bei inselreichen Karten nahe der Küste
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Schneegrenze auf: {STRING}
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Wähle die Höhe der Schneefallgrenze im subarktischen Klima. Schnee beeinflusst auch die Platzierung von Industrien und Voraussetzungen für Städtewachstum
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Wähle die Höhe der Schneefallgrenze im subarktischen Klima. Schnee beeinflusst auch die Platzierung von Industrien und Voraussetzungen für Städtewachstum. Dies kann nur im Scenario-Editor geändert werden oder wird ansonsten anhand der Einstellung "Schneebedeckung" berechnet.
STR_CONFIG_SETTING_SNOW_COVERAGE :Schneebedeckung: {STRING}
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Steuert die ungefähre Menge von Schneeflächen im subarktischen Klima. Schnee beeinflusst die Platzierung von Industrien und Vorausstzungen für Städtewachstum. Dies kann nur während der Kartenerzeugung benutzt werden. Land knapp über dem Meeresspiegel ist stets schneefrei.
STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_DESERT_COVERAGE :Wüstenbedeckung: {STRING}
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Steuert die ungefähre Menge von Wüsten im tropischen Klima. Wüsten beeinflussen das Erzeugen von Industriebtrieben. Dies kann nur während der Kartenerzeugung benutzt werden.
STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :Rauheit des Geländes: {STRING}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(nur TerraGenesis) Wähle die Häufigkeit von Hügeln: Rollende Landschaften haben wenige, weit verteilte Hügel. Zerklüftete Landschaften haben viele Hügel, was wiederum sich wiederholend aussehen kann
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Sehr eben
@@ -1802,7 +1815,7 @@ STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_LEVEL :{WHITE}... Komp
STR_CONFIG_ERROR_INVALID_SAVEGAME_COMPRESSION_ALGORITHM :{WHITE}... „{STRING}“ nicht als Format für Spielstände verfügbar. Nutze stattdessen „{STRING}“
STR_CONFIG_ERROR_INVALID_BASE_GRAPHICS_NOT_FOUND :{WHITE}... ignoriere Basisgrafiken „{STRING}“: nicht gefunden
STR_CONFIG_ERROR_INVALID_BASE_SOUNDS_NOT_FOUND :{WHITE}... ignoriere Basissounds „{STRING}“: nicht gefunden
STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignoriere Musikset „{STRING}“: nicht gefunden
STR_CONFIG_ERROR_INVALID_BASE_MUSIC_NOT_FOUND :{WHITE}... ignoriere Basismusikset „{STRING}“: nicht gefunden
STR_CONFIG_ERROR_OUT_OF_MEMORY :{WHITE}Zu wenig Arbeitsspeicher
STR_CONFIG_ERROR_SPRITECACHE_TOO_BIG :{WHITE}Reservieren von {BYTES} des Spritecaches fehlgeschlagen. Der Spritecache wurde auf {BYTES} verkleinert. Dies wird die Performance von OpenTTD verschlechtern. Um den Speicherbedarf zu verringern, kann man versuchen, 32bpp-Grafiken auszuschalten und/oder den Zoom-Level zu begrenzen
@@ -2316,7 +2329,7 @@ STR_CONTENT_TYPE_AI :{G=w}KI
STR_CONTENT_TYPE_AI_LIBRARY :{G=w}KI-Bibliothek
STR_CONTENT_TYPE_SCENARIO :{G=n}Szenario
STR_CONTENT_TYPE_HEIGHTMAP :{G=w}Reliefkarte
STR_CONTENT_TYPE_BASE_SOUNDS :Basissound
STR_CONTENT_TYPE_BASE_SOUNDS :Basissounds
STR_CONTENT_TYPE_BASE_MUSIC :Basismusik
STR_CONTENT_TYPE_GAME_SCRIPT :Skript
STR_CONTENT_TYPE_GS_LIBRARY :Skript-Bibliothek
@@ -2340,6 +2353,9 @@ STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}OpenTTD
STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Ja, Grafiken herunterladen
STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Nein, OpenTTD beenden
STR_MISSING_GRAPHICS_ERROR_TITLE :{WHITE}Download fehlgeschlagen
STR_MISSING_GRAPHICS_ERROR :{BLACK}Download der Grafiken fehlgeschlagen.{}Bitte Grafiken manuell herunterladen.
STR_MISSING_GRAPHICS_ERROR_QUIT :{BLACK}OpenTTD verlassen
# Transparency settings window
STR_TRANSPARENCY_CAPTION :{WHITE}Transparenzeinstellungen
@@ -2890,12 +2906,17 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Städteanzahl:
STR_MAPGEN_DATE :{BLACK}Datum:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Industriedichte:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maximalhöhe der Karte:
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Die Maximalhöhe von Bergen auf der Karte um eins erhöhen
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Die Maximalhöhe von Bergen auf der Karte um eins verringern
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Schneegrenze:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Schneegrenze um eine Stufe erhöhen
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Schneegrenze um eine Stufe senken
STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Höchster Gipfel:
STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}Die maximale Höhe des höchsten Gipfels auf der Karte um eins erhöhen
STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}Die maximale Höhe des höchsten Gipfels auf der Karte um eins verringern
STR_MAPGEN_SNOW_COVERAGE :{BLACK}Schneebedeckung:
STR_MAPGEN_SNOW_COVERAGE_UP :{BLACK}Schneebedeckung um zehn Prozent erhöhen
STR_MAPGEN_SNOW_COVERAGE_DOWN :{BLACK}Schneebedeckung um zehn Prozent verringern
STR_MAPGEN_SNOW_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_DESERT_COVERAGE :{BLACK}Wüstenbedeckung:
STR_MAPGEN_DESERT_COVERAGE_UP :{BLACK}Wüstenabdeckung um zehn Prozent erhöhen
STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}Wüstenbedeckung um zehn Prozent verringern
STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_LAND_GENERATOR :{BLACK}Landgenerator:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Landschaftstyp:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Gewässermenge:
@@ -2921,8 +2942,10 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Reliefka
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Größe:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} × {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Maximalhöhe der Karte ändern
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Höhe der Schneegrenze ändern
STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}Angestrebte Gipfelhöhe
STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT :{WHITE}Höchster Gipfel
STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT :{WHITE}Schneebedeckung (in %)
STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT :{WHITE}Wüstenbedeckung (in %)
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Startjahr ändern
# SE Map generation
@@ -4339,6 +4362,7 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Nur ein
STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Riesiger Screenshot
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}Der Screenshot wird die Auflösung von {COMMA} × {COMMA} Pixeln haben. Das kann einige Zeit dauern. Soll fortgefahren werden?
STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}Reliefkarte erfolgreich als „{STRING}“ gespeichert. Der höchste Gipfel ist {NUM}
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}Screenshot gespeichert als „{STRING}“
STR_ERROR_SCREENSHOT_FAILED :{WHITE}Screenshot fehlgeschlagen

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}Επιλέξτε το μέγεθος στοιχείου διεπαφής
@@ -1293,8 +1294,6 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Εναλλαγ
STR_CONFIG_SETTING_CITY_APPROVAL :Στάση δημοτικού συμβουλίου ως προς τον μετασχηματισμό της περιοχής: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Επιλογή πόσο ο θόρυβος και η περιβαλλοντικη καταστροφή άπο εταιρίες επηρεάζουν τα ποσοστά αποδοχής και περαιτέρω έργα στη περιοχή
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Μέγιστο ύψος χάρτη: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :Ορισμός του μέγιστου επιτρεπτού ύψους βουνών στο χάρτη
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE} Δεν μπορείτε να θέσετε το μέγιστο ύψος χάρτη σε αυτή τη τιμή. Τουλάχιστον ένα βουνό στο χάρτη είναι πιο ψηλό.
STR_CONFIG_SETTING_AUTOSLOPE :Να επιτρέπεται η διαμόρφωση εδάφους κάτω από κτίρια, γραμμές, κλπ.: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Επιτρέπεται η διαμόρφωση του εδάφους κάτω από κτίρια και σιδηροτροχιές χωρίς αυτά να αφαιρούνται
@@ -2935,12 +2934,6 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Αριθμός πόλεων:
STR_MAPGEN_DATE :{BLACK}Ημερομηνία:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Αριθμός βιομηχανιών:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Μέγιστο ύψος χάρτη
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}Αύξηση του μέγιστου ύψους βουνών του χάρτη κατά ένα
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}Μείωση του μέγιστου ύψους βουνών του χάρτη κατά ένα
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Ύψος γραμμής χιονιού:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Μετακίνηση του ύψους της γραμμής χιονιού ένα πάνω
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Μετακίνηση του ύψους της γραμμής χιονιού ένα κάτω
STR_MAPGEN_LAND_GENERATOR :{BLACK}Δημιουργός εδάφους:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Τύπος εδάφους:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Επίπεδο θάλασσας:
@@ -2966,8 +2959,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Όνομ
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Μέγεθος:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} × {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Αλλαγή μέγιστου ύψους χάρτη
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Άλλαγη του ύψους της γράμμης χιονιού
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Αλλαγή έτους έναρξης
# SE Map generation

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}בחר את ממשק גודל העצם לשימוש
@@ -1174,8 +1175,6 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :אפשר/מנע
STR_CONFIG_SETTING_CITY_APPROVAL :יחס מועצת העיר כלפי שינוי מבנה אזורי: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :בחר באיזו מידה רעש ונזק סביבתי ע"י חברות משפיעים על הדירוג העירוני שלהן ופעולות בנייה עתידיות באזור
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :גובה מפה מקסימלי: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :קבע את הגובה המקסימלי להרים במפה
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}לא ניתן לקבוע את הגובה המקסימלי במפה לערך זה. קיים לפחות הר אחד גבוה יותר
STR_CONFIG_SETTING_AUTOSLOPE :אפשר יצירת מילוי עפר תחת מבנים, פסי רכבת וכו': {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :אפשר שינוי פני השטח מתחת לבניינים ולמסילות ללא הסרתם
@@ -2751,12 +2750,6 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK} :מספר העיירות
STR_MAPGEN_DATE :{BLACK} :תאריך
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK} :מספר התעשיות
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}גובה מפה מקסימלי:
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}הגדל את הגובה המקסימלי של הרים במפה ביחידה אחת
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}הקטן את הגובה המקסימלי במפה ביחידה אחת
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}גובה קו השלג
STR_MAPGEN_SNOW_LINE_UP :{BLACK}הגבה את קו השלג
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}הנמך את קו השלג
STR_MAPGEN_LAND_GENERATOR :{BLACK} :מחולל פני שטח
STR_MAPGEN_TERRAIN_TYPE :{BLACK} :סוג הקרקע
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK} :כמות ימים/אגמים
@@ -2782,8 +2775,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK} :שם
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}גודל:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} על {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}שינוי הגובה המקסימלי במפה
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}שנה את גובה קו השלג
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}שנה את שנת הפתיחה
# SE Map generation

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
@@ -1188,6 +1191,8 @@ STR_TERRAIN_TYPE_FLAT :Sík
STR_TERRAIN_TYPE_HILLY :Dombos
STR_TERRAIN_TYPE_MOUNTAINOUS :Hegyvidéki
STR_TERRAIN_TYPE_ALPINIST :Alpesi
STR_TERRAIN_TYPE_CUSTOM :Egyéni magasság
STR_TERRAIN_TYPE_CUSTOM_VALUE :Egyéni magasság ({NUM})
STR_CITY_APPROVAL_PERMISSIVE :Engedékeny
STR_CITY_APPROVAL_TOLERANT :Toleráns
@@ -1269,8 +1274,10 @@ STR_CONFIG_SETTING_DISASTERS_HELPTEXT :Ha engedélyezv
STR_CONFIG_SETTING_CITY_APPROVAL :Városi tanács hozzáállása a területének az átépítéséhez: {STRING}
STR_CONFIG_SETTING_CITY_APPROVAL_HELPTEXT :Válaszd ki, hogy mennyi zaj és környezeti kár okozása befolyásolja a cég megítélését egy városban, mely hatással van a cég további építési lehetőségeire a város területén belül
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL :Maximális térképmagasság: {STRING}
STR_CONFIG_SETTING_MAX_HEIGHTLEVEL_HELPTEXT :A térképen található hegyek maximális magasságának beállítása
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT :Térkép magasságkorlátja: {STRING}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_HELPTEXT :Beállíthatod a térkép legmagasabb pontjának tengerszint feletti magasságát. "(automatikus)" esetén az értéket a térképgenerátor határozza meg.
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_VALUE :{NUM}
STR_CONFIG_SETTING_MAP_HEIGHT_LIMIT_AUTO :(automatikus)
STR_CONFIG_SETTING_TOO_HIGH_MOUNTAIN :{WHITE}Nem állíthatod erre az értékre a maximális térképmagasságot. Legalább egy hegy magasabb ennél
STR_CONFIG_SETTING_AUTOSLOPE :Épületek, vágányok stb. alatti tereprendezés engedélyezése: {STRING}
STR_CONFIG_SETTING_AUTOSLOPE_HELPTEXT :Tájrendezés engedélyezése épületek és utak alatt azok eltávolítása nélkül
@@ -1415,7 +1422,13 @@ STR_CONFIG_SETTING_INDUSTRY_DENSITY_HELPTEXT :Mennyi gazdasá
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE :Olajfinomítók és olajfúró tornyok maximális távolsága a térkép szélétől: {STRING}
STR_CONFIG_SETTING_OIL_REF_EDGE_DISTANCE_HELPTEXT :Megadhatod, hogy a térkép szélétől milyen messze épülhetnek olajfinomítók és olajfúró tornyok. Sziget jellegű térképek esetén így a part közelében fognak épülni. 256 mezőnél szélesebb, ill. hosszabb térképek esetén ez az érték felszorzódik.
STR_CONFIG_SETTING_SNOWLINE_HEIGHT :Hóhatár magassága: {STRING}
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Ezzel a beállítással szabályozhatod a szub-arktikus táj hóhatárát. A hó befolyással lehet a gazdasági épületek generálására és a települések növekedésére.
STR_CONFIG_SETTING_SNOWLINE_HEIGHT_HELPTEXT :Ezzel a beállítással szabályozhatod a szub-arktikus táj hóhatárát. A hó befolyással lehet a gazdasági épületek generálására és a települések növekedésére. Csak a pályaszerkesztőben lehet állítani, más esetben a havas terület százalékos kiterjedéséből kerül kiszámításra.
STR_CONFIG_SETTING_SNOW_COVERAGE :Havas terület kiterjedése: {STRING}
STR_CONFIG_SETTING_SNOW_COVERAGE_HELPTEXT :Beállíthatod, hogy a szub-arktikus tájon a térkép mekkora részét fedje hó. A hó befolyással van a gazdasági épületek elhelyezésére és a települések növekedésére. A beállítás csak a térképgenerátort érinti. A tengerszint feletti legelső szintet sosem fedheti hó.
STR_CONFIG_SETTING_SNOW_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_DESERT_COVERAGE :Sivatag kiterjedése: {STRING}
STR_CONFIG_SETTING_DESERT_COVERAGE_HELPTEXT :Beállíthatod, hogy a szubtrópusi tájon a térkép mekkora részét fedje sivatag. A sivatag hatással van a gazdasági épületek elhelyezésére és a települések növekedésére. A beállítás csak a térképgenerátort érinti.
STR_CONFIG_SETTING_DESERT_COVERAGE_VALUE :{NUM}%
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN :A terep durvasága: {STRING}
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_HELPTEXT :(csak TerraGenesis esetén) Kiválaszthatod a hegyek mennyiségét: a sima térképeken kevesebb, de kiterjedtebb hegy van, míg a durva térképeken sok hegy van, amik kissé ismétlődőnek tűnhetnek.
STR_CONFIG_SETTING_ROUGHNESS_OF_TERRAIN_VERY_SMOOTH :Nagyon sima
@@ -1725,12 +1738,17 @@ STR_CONFIG_SETTING_ZOOM_MIN :A nagyítás ma
STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT :Maximális nagyítás mértéke. A nagyobb nagyítási mérték több memóriát igényel
STR_CONFIG_SETTING_ZOOM_MAX :A kicsinyítés maximális mértéke: {STRING}
STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT :Maximális kicsinyítés mértéke. A nagyobb kicsinyítési mérték szaggatást okozhat
STR_CONFIG_SETTING_SPRITE_ZOOM_MIN :Sprite-ok maximális felbontása: {STRING}
STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT :Meghatározhatod a sprite-ok maximális felbontását. Ha korlátozod a maximális felbontást, akkor abban az esetben is kisebb felbontású sprite-ok fognak megjelenni, ha egyébként lenne nagyobb felbontású is. Ez akkor lehet hasznos, ha olyan NewGRF-ek keverékét használod, amelyek különböző felbontással rendelkeznek, konzisztensebb megjelenést biztosítva a játéknak.
STR_CONFIG_SETTING_ZOOM_LVL_MIN :4x
STR_CONFIG_SETTING_ZOOM_LVL_IN_2X :2x
STR_CONFIG_SETTING_ZOOM_LVL_NORMAL :Normál
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_MIN :4x
STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_IN_2X :2x
STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_NORMAL :1x
STR_CONFIG_SETTING_TOWN_GROWTH :Települések növekedési sebessége: {STRING}
STR_CONFIG_SETTING_TOWN_GROWTH_HELPTEXT :A települések növekedési sebessége
STR_CONFIG_SETTING_TOWN_GROWTH_NONE :Nincs
@@ -2398,6 +2416,9 @@ STR_MISSING_GRAPHICS_SET_MESSAGE :{BLACK}Az OpenT
STR_MISSING_GRAPHICS_YES_DOWNLOAD :{BLACK}Igen, a grafikai alapcsomag letöltése
STR_MISSING_GRAPHICS_NO_QUIT :{BLACK}Nem, kilépés az OpenTTD-ből
STR_MISSING_GRAPHICS_ERROR_TITLE :{WHITE}Letöltés sikertelen
STR_MISSING_GRAPHICS_ERROR :{BLACK}A grafikus alapcsomag letöltése sikertelen.{}Tölts le manuálisan egy grafikus alapcsomagot!
STR_MISSING_GRAPHICS_ERROR_QUIT :{BLACK}Kilépés az OpenTTD-ből
# Transparency settings window
STR_TRANSPARENCY_CAPTION :{WHITE}Átlátszósági beállítások
@@ -2948,12 +2969,17 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Várossűrűség:
STR_MAPGEN_DATE :{BLACK}Dátum:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Gazd. épületek száma:
STR_MAPGEN_MAX_HEIGHTLEVEL :{BLACK}Maximum térképmagasság:
STR_MAPGEN_MAX_HEIGHTLEVEL_UP :{BLACK}A hegyek maximális magasságának növelése a térképen eggyel
STR_MAPGEN_MAX_HEIGHTLEVEL_DOWN :{BLACK}A hegyek maximális magasságának csökkentése a térképen eggyel
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Hóhatár:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}A hóhatár megnövelése eggyel
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}A hóhatár csökkentése eggyel
STR_MAPGEN_HEIGHTMAP_HEIGHT :{BLACK}Legmagasabb pont:
STR_MAPGEN_HEIGHTMAP_HEIGHT_UP :{BLACK}A térkép legmagasabb pontjának tengerszint feletti magasságának növelése eggyel
STR_MAPGEN_HEIGHTMAP_HEIGHT_DOWN :{BLACK}A térkép legmagasabb pontjának tengerszint feletti magasságának csökkentése eggyel
STR_MAPGEN_SNOW_COVERAGE :{BLACK}Havas terület kiterjedése:
STR_MAPGEN_SNOW_COVERAGE_UP :{BLACK}A havas terület kiterjedésének növelése 10%-kal
STR_MAPGEN_SNOW_COVERAGE_DOWN :{BLACK}A havas terület kiterjedésének csökkentése 10%-kal
STR_MAPGEN_SNOW_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_DESERT_COVERAGE :{BLACK}Sivatag kiterjedése:
STR_MAPGEN_DESERT_COVERAGE_UP :{BLACK}A sivatag kiterjedésének növelése 10%-kal
STR_MAPGEN_DESERT_COVERAGE_DOWN :{BLACK}A sivatag kiterjedésének csökkentése 10%-kal
STR_MAPGEN_DESERT_COVERAGE_TEXT :{BLACK}{NUM}%
STR_MAPGEN_LAND_GENERATOR :{BLACK}Térkép generátor:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Tereptípus:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Tengerszint:
@@ -2979,8 +3005,10 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Magassá
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Méret:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} x {NUM}
STR_MAPGEN_MAX_HEIGHTLEVEL_QUERY_CAPT :{WHITE}Térkép maximális magasságának megváltozatása
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Hóhatár megváltoztatása
STR_MAPGEN_TERRAIN_TYPE_QUERY_CAPT :{WHITE}A legmagasabb pont tengerszint feletti magassága
STR_MAPGEN_HEIGHTMAP_HEIGHT_QUERY_CAPT :{WHITE}Legmagasabb pont
STR_MAPGEN_SNOW_COVERAGE_QUERY_CAPT :{WHITE}A havas terület kiterjedése (százalékban)
STR_MAPGEN_DESERT_COVERAGE_QUERY_CAPT :{WHITE}A sivatag kiterjedése (százalékban)
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Kezdő év megváltoztatása
# SE Map generation
@@ -4397,6 +4425,7 @@ STR_WARNING_FALLBACK_SOUNDSET :{WHITE}Csak egy
STR_WARNING_SCREENSHOT_SIZE_CAPTION :{WHITE}Hatalmas képernyőkép
STR_WARNING_SCREENSHOT_SIZE_MESSAGE :{YELLOW}A képernyőkép felbontása {COMMA} x {COMMA} pixel lesz. A méret miatt ez eltarthat egy ideig. Szeretnéd folytatni?
STR_MESSAGE_HEIGHTMAP_SUCCESSFULLY :{WHITE}Magasságtérkép sikeresen elmentve '{STRING}' néven. A térkép legmagasabb pontja: {NUM}
STR_MESSAGE_SCREENSHOT_SUCCESSFULLY :{WHITE}A képernyő elmentve '{STRING}' néven
STR_ERROR_SCREENSHOT_FAILED :{WHITE}A képmentés nem sikerült!

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}
@@ -2544,9 +2545,6 @@ STR_MAPGEN_BY :{BLACK}*
STR_MAPGEN_NUMBER_OF_TOWNS :{BLACK}Fjöldi bæja:
STR_MAPGEN_DATE :{BLACK}Dags.:
STR_MAPGEN_NUMBER_OF_INDUSTRIES :{BLACK}Fjöldi iðnaða:
STR_MAPGEN_SNOW_LINE_HEIGHT :{BLACK}Hæð snjólínu:
STR_MAPGEN_SNOW_LINE_UP :{BLACK}Hækka snjólínu upp um eitt þrep
STR_MAPGEN_SNOW_LINE_DOWN :{BLACK}Lækka snjólínu niður um eitt þrep
STR_MAPGEN_LAND_GENERATOR :{BLACK}Landmyndun:
STR_MAPGEN_TERRAIN_TYPE :{BLACK}Gerð lands:
STR_MAPGEN_QUANTITY_OF_SEA_LAKES :{BLACK}Magn sjávar:
@@ -2572,7 +2570,6 @@ STR_MAPGEN_HEIGHTMAP_NAME :{BLACK}Nafn hæ
STR_MAPGEN_HEIGHTMAP_SIZE_LABEL :{BLACK}Stærð:
STR_MAPGEN_HEIGHTMAP_SIZE :{ORANGE}{NUM} * {NUM}
STR_MAPGEN_SNOW_LINE_QUERY_CAPT :{WHITE}Breyta hæð snjólínu
STR_MAPGEN_START_DATE_QUERY_CAPT :{WHITE}Breyta upphafsári
# SE Map generation

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