mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2026-09-15 12:59:45 +00:00
Compare commits
73
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8c6bca29ad | ||
|
|
266dd80f6c | ||
|
|
9674ff71de | ||
|
|
3907ac518b | ||
|
|
e1cc80b01c | ||
|
|
6e3ae628fc | ||
|
|
6bb37edfb6 | ||
|
|
b64f637c72 | ||
|
|
cf0e6d4cb4 | ||
|
|
5049fbb081 | ||
|
|
56ed79e448 | ||
|
|
620695587d | ||
|
|
8dacca9a71 | ||
|
|
c4e023bd6e | ||
|
|
9973b7fb64 | ||
|
|
f87b1df566 | ||
|
|
3bba6e4abd | ||
|
|
9ccce57438 | ||
|
|
6bdc8e5fae | ||
|
|
034649e7f5 | ||
|
|
35fd0dfd4e | ||
|
|
86a4d377b1 | ||
|
|
35195bb2bc | ||
|
|
459fd42e1d | ||
|
|
6aea2454c8 | ||
|
|
926f5d548d | ||
|
|
8f47b642b6 | ||
|
|
46a3508f50 | ||
|
|
202f1046f6 | ||
|
|
7c14dedeb6 | ||
|
|
92254bda01 | ||
|
|
7e74fca7d8 | ||
|
|
68aaeec3a8 | ||
|
|
0a92b3366c | ||
|
|
3764aa5134 | ||
|
|
62d9bf8d0f | ||
|
|
4a4be744b6 | ||
|
|
e41df385d7 | ||
|
|
93b3a66678 | ||
|
|
c2f3e0e326 | ||
|
|
27284db36f | ||
|
|
f352512c8d | ||
|
|
ed1e402960 | ||
|
|
747f57bcec | ||
|
|
8290a798fc | ||
|
|
089969e1ca | ||
|
|
e821b3a9b8 | ||
|
|
dda6cab17a | ||
|
|
c0544563a6 | ||
|
|
577b0cc260 | ||
|
|
1b73417e5f | ||
|
|
79b6b9cb66 | ||
|
|
db9d5a909f | ||
|
|
1e74834441 | ||
|
|
e90cf8509a | ||
|
|
a47b4631ea | ||
|
|
767e1cc37e | ||
|
|
b7993793c8 | ||
|
|
9e65157548 | ||
|
|
a190606f2e | ||
|
|
e95a85315c | ||
|
|
73a6525129 | ||
|
|
f5929d413b | ||
|
|
ca46154068 | ||
|
|
0e9e94a94b | ||
|
|
2b8d1bcb51 | ||
|
|
169ac7c91d | ||
|
|
595d9357c3 | ||
|
|
b4b5c09ff9 | ||
|
|
6e9b952623 | ||
|
|
adf1227290 | ||
|
|
578e833284 | ||
|
|
0821df8537 |
@@ -1,3 +1,43 @@
|
||||
0.6.0-beta5 (2008-03-04)
|
||||
------------------------------------------------------------------------
|
||||
-Feature: Vehicle variable FE bit 8 (r12331) [FS#1812]
|
||||
-Feature: Vehicle variable FE bit 5 and 6 (r12330)
|
||||
-Feature: Support loading full range of 0xD0xx NewGRF strings which includes 0xD000 to 0xD3FF (r12316)
|
||||
-Feature: Ability to change aircraft speed factor, from so called 'realistic' (matching other vehicles) (1/1) to original TTD speed (1/4) (r12293, r12294)
|
||||
-Fix: Don't pause/unpause the game when showing load/save windows when the game is paused due to missing GRFs (r12336) [FS#1733]
|
||||
-Fix: Disallow building level crossings over one-way roads as this allowed competitors to remove the one-way state (r12329) [FS#1819]
|
||||
-Fix: Wrong Y pillar specified for girder with arch bridge (r12328)
|
||||
-Fix: Vehicles could be sorted in a wrong order when a vehicle name changed - cached name was not invalidated (r12324)
|
||||
-Fix: Vehicle sorting by name was broken, it was comparing two the same strings (when caching was not used) (r12323) [FS#1821]
|
||||
-Fix: Endian issue when saving/loading group owner (r12322)
|
||||
-Change: Update readme about where openttd looks for files (r12321)
|
||||
-Fix: Wrong transparency options could be saved after toggling all (r12320) [FS#1817]
|
||||
-Fix: Map string IDs that are embedded from other strings (r12317) [FS#1815]
|
||||
-Fix: Include prop 25 data for all train parts, not just those that carry cargo (r12314)
|
||||
-Fix: YAPF and NTP did not apply penalty for uphill tracks on steep slopes (r12313)
|
||||
-Fix: Restore timetable from backupped orders and add group ID to the backup (r12296) [FS#1549]
|
||||
-Fix: Do not draw trees nor lamps between tram tracks (r12290) [FS#1807]
|
||||
-Fix: [Win32] Don't create save dir on install (r12269)
|
||||
-Fix: Autoreplace did not update vehicle index for timetable window (r12261) [FS#1805]
|
||||
-Fix: GetProductionAroundTiles() may fail if only the second production slot exists (r12258)
|
||||
-Fix: Removing the Broken FollowTrack_t (pathfinding) fixed related functions (r12252) [FS#1801]
|
||||
-Fix: Town variables 0x9E to 0xAD (company ratings) returned wrong values (r12247)
|
||||
-Fix: Proper usage of Clamp() (r12246)
|
||||
-Fix: Typo resulting in no players are given the engine preview offer (r12244)
|
||||
-Fix: Mac OSX bundle display name should be 'OpenTTD' (r12234) [FS#1798]
|
||||
-Fix: [NewGRF] Support using any base price for rail and road vehicles' running cost, show running cost of wagons if available (r12209)
|
||||
-Fix: When loading a savegame fails, don't start creating a new game, just go straight back to the intro screen (r12202)
|
||||
-Fix: Force AI to build rail or road instead of bridges if possible, so it doesn't build bridges everywhere (r12200)
|
||||
-Fix: "Transparent buildings" now only toggles buildings, so show tick when buildings are transparent [FS#1789] (r12198)
|
||||
-Fix: Show correct last year profit when the train had negative income [FS#1788] (r12197)
|
||||
-Fix: There can be oil rigs at map borders, do not set water class for them [FS#1787] (r12195)
|
||||
-Fix: Clamp various town variables to 16bit prior to returning the value (r12192)
|
||||
-Fix: Do not start overtaking if the RV reaches wrong-way one-way-road in the next tiles (r12191)
|
||||
-Fix: YAPF always shows 0ms PF time in debug for debug level 2 [FS#1786] (r12190)
|
||||
-Fix: Assert when trying to play tile sound at NW border of map (placing buyos, leveling land) [FS#1784] (r12186)
|
||||
-Fix: Wrong operator priority, hopefully harmless (r12185)
|
||||
-Fix: Take into account possible loan when AI is deciding which bridge to build, so it won't build wooden bridges everytime (r12184)
|
||||
|
||||
0.6.0-beta4 (2008-02-18)
|
||||
------------------------------------------------------------------------
|
||||
-Feature: Allow buttons to resize in NewGRF settings window (r12172)
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ log() {
|
||||
}
|
||||
|
||||
set_default() {
|
||||
released_version=""
|
||||
released_version="0.6.0-beta5"
|
||||
|
||||
ignore_extra_parameters="0"
|
||||
# We set all kinds of defaults for params. Later on the user can override
|
||||
|
||||
+1
-2
@@ -11,14 +11,13 @@ by the number below on http://bugs.openttd.org.
|
||||
If the bug report is closed, it has been fixed, which then can be verified
|
||||
in the latest SVN version of /trunk.
|
||||
|
||||
Bugs for 0.6.0-beta3
|
||||
Bugs for 0.6.0-beta5
|
||||
------------------------------------------------------------------------
|
||||
URL: http://bugs.openttd.org
|
||||
|
||||
- 1762 Strange Autoreplace behaviour
|
||||
- 1711 Gravel and Clay have no worth
|
||||
- 1693 Removing road does not reset owner
|
||||
- 1549 Timetable + group ID are not backed up with orders
|
||||
- 1495 Long vehicles block multistop station
|
||||
- 1487 Ending_year is never written to
|
||||
- 1473 Train not going to available platform
|
||||
|
||||
+7
-1
@@ -1,4 +1,10 @@
|
||||
openttd (0.6.0~beta4) unstable; urgency=low
|
||||
openttd (0.6.0~beta5) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
-- Matthijs Kooijman <m.kooijman@student.utwente.nl> Mon, 04 Mar 2008 18:06:31 +0100
|
||||
|
||||
openttd (0.6.0~beta4-1) unstable; urgency=low
|
||||
|
||||
* New upstream release.
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleDisplayName</key>
|
||||
<string>Open Transport Tycoon</string>
|
||||
<string>OpenTTD</string>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>openttd</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
!define APPNAME "OpenTTD" ; Define application name
|
||||
!define APPVERSION "0.6.0" ; Define application version
|
||||
!define INSTALLERVERSION 42 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!!
|
||||
!define INSTALLERVERSION 43 ; NEED TO UPDATE THIS FOR EVERY RELEASE!!!
|
||||
|
||||
!define APPURLLINK "http://www.openttd.org"
|
||||
!define APPNAMEANDVERSION "${APPNAME} ${APPVERSION}-beta4"
|
||||
!define APPNAMEANDVERSION "${APPNAME} ${APPVERSION}-beta5"
|
||||
!define APPVERSIONINTERNAL "${APPVERSION}.0" ; Needs to be of the format X.X.X.X
|
||||
|
||||
!define MUI_ICON "..\..\..\media\openttd.ico"
|
||||
@@ -97,8 +97,6 @@ Section "!OpenTTD" Section1
|
||||
; Overwrite files by default, but don't complain on failure
|
||||
SetOverwrite try
|
||||
|
||||
; Make savegame folder
|
||||
SetOutPath "$INSTDIR\save"
|
||||
; Define root variable relative to installer
|
||||
!define PATH_ROOT "..\..\..\"
|
||||
|
||||
|
||||
Regular → Executable
+1
-1
@@ -194,7 +194,7 @@ Function IsCachedVersion(version)
|
||||
End Function
|
||||
|
||||
Dim version
|
||||
version = DetermineSVNVersion
|
||||
version = "0.6.0-beta5"
|
||||
If Not (IsCachedVersion(version) And FSO.FileExists("../src/rev.cpp") And FSO.FileExists("../src/ottdres.rc")) Then
|
||||
UpdateFiles version
|
||||
End If
|
||||
|
||||
Regular → Executable
+2
-1
@@ -71,7 +71,8 @@ Function load_main_data(filename)
|
||||
line = "PNG" Or _
|
||||
line = "WIN32" Or _
|
||||
line = "MSVC" Or _
|
||||
line = "DIRECTMUSIC" _
|
||||
line = "DIRECTMUSIC" Or _
|
||||
line = "NO_THREADS" _
|
||||
) Then skip = skip + 1
|
||||
deep = deep + 1
|
||||
Case "#"
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -272,7 +272,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -2175,10 +2175,6 @@
|
||||
<Filter
|
||||
Name="YAPF"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\..\src\yapf\follow_track.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\yapf\follow_track.hpp"
|
||||
>
|
||||
@@ -2203,10 +2199,6 @@
|
||||
RelativePath=".\..\src\yapf\yapf_base.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\yapf\yapf_common.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\yapf\yapf_common.hpp"
|
||||
>
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -272,7 +272,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -270,7 +270,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -2172,10 +2172,6 @@
|
||||
<Filter
|
||||
Name="YAPF"
|
||||
>
|
||||
<File
|
||||
RelativePath=".\..\src\yapf\follow_track.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\yapf\follow_track.hpp"
|
||||
>
|
||||
@@ -2200,10 +2196,6 @@
|
||||
RelativePath=".\..\src\yapf\yapf_base.hpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\yapf\yapf_common.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\yapf\yapf_common.hpp"
|
||||
>
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
@@ -270,7 +270,7 @@
|
||||
FavorSizeOrSpeed="2"
|
||||
OmitFramePointers="true"
|
||||
AdditionalIncludeDirectories="..\objs\langs"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\""
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\"OpenTTD\";WITH_ASSERT"
|
||||
StringPooling="true"
|
||||
ExceptionHandling="1"
|
||||
RuntimeLibrary="0"
|
||||
|
||||
+96
-17
@@ -1,6 +1,6 @@
|
||||
OpenTTD README
|
||||
Last updated: 2008-02-18
|
||||
Release version: 0.6.0-beta4
|
||||
Last updated: 2008-03-04
|
||||
Release version: 0.6.0-beta5
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -11,6 +11,9 @@ Table of Contents:
|
||||
* 2.1 Reporting Bugs
|
||||
3.0) Supported Platforms
|
||||
4.0) Installing and running OpenTTD
|
||||
* 4.1 (Required) 3rd party files
|
||||
* 4.2 OpenTTD directories
|
||||
* 4.3 Portable Installations (External Media)
|
||||
5.0) OpenTTD features
|
||||
6.0) Configuration File
|
||||
7.0) Compiling
|
||||
@@ -88,25 +91,100 @@ archive which you have to extract to a directory where you want OpenTTD to
|
||||
be installed, or you have downloaded an installer, which will automatically
|
||||
extract OpenTTD in the given directory.
|
||||
|
||||
Before you run OpenTTD, you need to put the game's datafiles into the data/
|
||||
subdirectory. You need the following files from the original version
|
||||
of TTD as OpenTTD makes use of the original TTD artwork. The Windows
|
||||
installer optionally can copy these files from your Transport Tycoon Deluxe
|
||||
CD-ROM.
|
||||
OpenTTD looks in multiple locations to find the required data files (described
|
||||
in section 4.2). Installing any 3rd party files into a "shared" location has
|
||||
the advantage that you only need to do this step once, rather than copying the
|
||||
data files into all OpenTTD versions you have.
|
||||
Savegames, screenshots, etc are saved relative to the config file (openttd.cfg)
|
||||
currently being used. This means that if you use a config file in one of the
|
||||
shared directories, savegames will reside in the save/ directory next to the
|
||||
openttd.cfg file there.
|
||||
If you want savegames and screenshots in the directory where the OpenTTD binary
|
||||
resides, simply have your config file in that location. But if you remove this
|
||||
config file, savegames will still be in this directory (see notes in section 4.2)
|
||||
|
||||
4.1) (Required) 3rd party files:
|
||||
---- ---------------------------
|
||||
|
||||
Before you run OpenTTD, you need to put the game's datafiles into a data/
|
||||
directory which can be located in various places addressed in the following
|
||||
section.
|
||||
As OpenTTD makes use of the original TTD artwork you will need the files listed
|
||||
below, which you can find on a Transport Tycoon Deluxe CD-ROM.
|
||||
The Windows installer optionally can copy these files from that CD-ROM.
|
||||
|
||||
List of the required files:
|
||||
sample.cat
|
||||
trg1r.grf
|
||||
trgcr.grf
|
||||
trghr.grf
|
||||
trgir.grf
|
||||
trgtr.grf
|
||||
- sample.cat
|
||||
- trg1r.grf
|
||||
- trgcr.grf
|
||||
- trghr.grf
|
||||
- trgir.grf
|
||||
- trgtr.grf
|
||||
|
||||
(Alternatively you can use the TTD GRF files from the DOS version: TRG1.GRF,
|
||||
TRGC.GRF, TRGH.GRF, TRGI.GRF, TRGT.GRF.
|
||||
Alternatively you can use the TTD GRF files from the DOS version:
|
||||
- TRG1.GRF
|
||||
- TRGC.GRF
|
||||
- TRGH.GRF
|
||||
- TRGI.GRF
|
||||
- TRGT.GRF
|
||||
|
||||
If you want music you need to copy the gm/ folder from Windows TTD into your
|
||||
OpenTTD folder, not your data folder.
|
||||
If you want the TTD music, copy the gm/ folder from the Windows version
|
||||
of TTD to your OpenTTD folder (not your data folder - also explained in
|
||||
the following sections).
|
||||
|
||||
Do NOT copy files included with OpenTTD into "shared" directories (explained in
|
||||
the following sections) as sooner or later you will run into graphical glitches
|
||||
when using other versions of the game.
|
||||
|
||||
4.2) OpenTTD directories
|
||||
---- -------------------------------
|
||||
|
||||
The TTD artwork files listed in the section 4.1 "(Required) 3rd party files"
|
||||
can be placed in a few different locations:
|
||||
1. The current working directory (from where you started OpenTTD)
|
||||
2. Your personal directory
|
||||
Windows: C:\Documents and Settings\<username>\My Documents\OpenTTD
|
||||
Mac OSX: ~/Documents/OpenTTD
|
||||
Linux: ~/.openttd
|
||||
3. The shared directory
|
||||
Windows: C:\Documents and Settings\All Users\Documents\OpenTTD
|
||||
Mac OSX: /Library/Application Support/OpenTTD
|
||||
Linux: not available
|
||||
4. The binary directory (where the OpenTTD executable is)
|
||||
Windows: C:\Program Files\OpenTTD
|
||||
Linux: /usr/games
|
||||
5. The installation directory (Linux only)
|
||||
Linux: /usr/share/games/openttd
|
||||
6. The application bundle (Mac OSX only)
|
||||
It includes the OTTD files (grf+lng) and it will work as long as they aren't touched
|
||||
|
||||
Notes:
|
||||
- Linux in the previous list means .deb, but most paths should be similar for others.
|
||||
- The previous search order is also used for newgrfs and openttd.cfg.
|
||||
- If openttd.cfg is not found, then it will be created using the 2, 4, 1, 3, 5 order.
|
||||
- Savegames will be relative to the config file only if there is no save/
|
||||
directory in paths with higher priority than the config file path, but
|
||||
autosaves and screenshots will always be relative to the config file.
|
||||
|
||||
The prefered setup:
|
||||
Place 3rd party files in shared directory (or in personal directory if you don't
|
||||
have write access on shared directory) and have your openttd.cfg config file in
|
||||
personal directory (where the game will then also place savegames and screenshots).
|
||||
|
||||
|
||||
4.3) Portable Installations (External Media):
|
||||
---- ----------------------------------------
|
||||
|
||||
You can install OpenTTD on external media so you can take it with you, i.e.
|
||||
using a USB key, or a USB HDD, etc.
|
||||
Create a directory where you shall store the game in (i.e. OpenTTD/).
|
||||
Copy the binary (OpenTTD.exe, OpenTTD.app, openttd, etc), data/ and your
|
||||
openttd.cfg to this directory.
|
||||
You can copy binaries for any operating system into this directory, which will
|
||||
allow you to play the game on nearly any computer you can attach the external
|
||||
media to.
|
||||
As always - additional grf files are stored in the data/ dir (for details,
|
||||
again, see section 4.1).
|
||||
|
||||
|
||||
5.0) OpenTTD features:
|
||||
@@ -285,6 +363,7 @@ The OpenTTD team (in alphabetical order):
|
||||
Bjarni Corfitzen (Bjarni) - MacOSX port, coder and vehicles
|
||||
Matthijs Kooijman (blathijs) - Pathfinder-guru, pool rework
|
||||
Loïc Guilloux (glx) - General coding
|
||||
Christoph Elsenhans (frosch) - General coding
|
||||
Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;)
|
||||
Jonathan Coome (Maedhros) - High priest of the newGRF Temple
|
||||
Attila Bán (MiHaMiX) - WebTranslator, Nightlies, Wiki and bugtracker host
|
||||
|
||||
@@ -466,14 +466,12 @@ network/core/udp.cpp
|
||||
network/core/udp.h
|
||||
|
||||
# YAPF
|
||||
yapf/follow_track.cpp
|
||||
yapf/follow_track.hpp
|
||||
yapf/nodelist.hpp
|
||||
yapf/track_dir.hpp
|
||||
yapf/yapf.h
|
||||
yapf/yapf.hpp
|
||||
yapf/yapf_base.hpp
|
||||
yapf/yapf_common.cpp
|
||||
yapf/yapf_common.hpp
|
||||
yapf/yapf_costbase.hpp
|
||||
yapf/yapf_costcache.hpp
|
||||
|
||||
+78
-40
@@ -69,10 +69,9 @@ enum {
|
||||
};
|
||||
|
||||
|
||||
static TrackBits GetRailTrackStatus(TileIndex tile)
|
||||
static inline TrackBits GetRailTrackStatus(TileIndex tile)
|
||||
{
|
||||
uint32 r = GetTileTrackStatus(tile, TRANSPORT_RAIL, 0);
|
||||
return (TrackBits)(byte) (r | r >> 8);
|
||||
return TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0));
|
||||
}
|
||||
|
||||
|
||||
@@ -112,8 +111,8 @@ static void AiStateVehLoop(Player *p)
|
||||
|
||||
/* not profitable? */
|
||||
if (v->age >= 730 &&
|
||||
v->profit_last_year >> 8 < _price.station_value * 5 &&
|
||||
v->profit_this_year >> 8 < _price.station_value * 5) {
|
||||
v->profit_last_year < _price.station_value * 5 * 256 &&
|
||||
v->profit_this_year < _price.station_value * 5 * 256) {
|
||||
_players_ai[p->index].state_counter = 0;
|
||||
_players_ai[p->index].state = AIS_SELL_VEHICLE;
|
||||
_players_ai[p->index].cur_veh = v;
|
||||
@@ -1902,7 +1901,7 @@ struct AiRailPathFindData {
|
||||
bool flag;
|
||||
};
|
||||
|
||||
static bool AiEnumFollowTrack(TileIndex tile, AiRailPathFindData *a, int track, uint length, byte *state)
|
||||
static bool AiEnumFollowTrack(TileIndex tile, AiRailPathFindData *a, int track, uint length)
|
||||
{
|
||||
if (a->flag) return true;
|
||||
|
||||
@@ -2198,26 +2197,55 @@ static void AiBuildRailConstruct(Player *p)
|
||||
_players_ai[p->index].cur_tile_a += TileOffsByDiagDir(_players_ai[p->index].cur_dir_a);
|
||||
|
||||
if (arf.best_ptr[0] & 0x80) {
|
||||
int i;
|
||||
int32 bridge_len = GetTunnelBridgeLength(arf.bridge_end_tile, _players_ai[p->index].cur_tile_a);
|
||||
TileIndex t1 = _players_ai[p->index].cur_tile_a;
|
||||
TileIndex t2 = arf.bridge_end_tile;
|
||||
|
||||
/* Figure out which (rail)bridge type to build
|
||||
* start with best bridge, then go down to worse and worse bridges
|
||||
* unnecessary to check for worst bridge (i=0), since AI will always build
|
||||
* that. AI is so fucked up that fixing this small thing will probably not
|
||||
* solve a thing
|
||||
*/
|
||||
for (i = MAX_BRIDGES - 1; i != 0; i--) {
|
||||
if (CheckBridge_Stuff(i, bridge_len)) {
|
||||
CommandCost cost = DoCommand(arf.bridge_end_tile, _players_ai[p->index].cur_tile_a, i | (_players_ai[p->index].railtype_to_use << 8), DC_AUTO, CMD_BUILD_BRIDGE);
|
||||
if (CmdSucceeded(cost) && cost.GetCost() < (p->player_money >> 5)) break;
|
||||
int32 bridge_len = GetTunnelBridgeLength(t1, t2);
|
||||
|
||||
DiagDirection dir = (TileX(t1) == TileX(t2) ? DIAGDIR_SE : DIAGDIR_SW);
|
||||
Track track = AxisToTrack(DiagDirToAxis(dir));
|
||||
|
||||
if (t2 < t1) dir = ReverseDiagDir(dir);
|
||||
|
||||
/* try to build a long rail instead of bridge... */
|
||||
bool fail = false;
|
||||
CommandCost cost;
|
||||
TileIndex t = t1;
|
||||
|
||||
/* try to build one rail on each tile - can't use CMD_BUILD_RAILROAD_TRACK now, it can build one part of track without failing */
|
||||
do {
|
||||
cost = DoCommand(t, _players_ai[p->index].railtype_to_use, track, DC_AUTO | DC_NO_WATER, CMD_BUILD_SINGLE_RAIL);
|
||||
/* do not allow building over existing track */
|
||||
if (CmdFailed(cost) || IsTileType(t, MP_RAILWAY)) {
|
||||
fail = true;
|
||||
break;
|
||||
}
|
||||
t += TileOffsByDiagDir(dir);
|
||||
} while (t != t2);
|
||||
|
||||
/* can we build long track? */
|
||||
if (!fail) cost = DoCommand(t1, t2, _players_ai[p->index].railtype_to_use | (track << 4), DC_AUTO | DC_NO_WATER, CMD_BUILD_RAILROAD_TRACK);
|
||||
|
||||
if (!fail && CmdSucceeded(cost) && cost.GetCost() <= p->player_money) {
|
||||
DoCommand(t1, t2, _players_ai[p->index].railtype_to_use | (track << 4), DC_AUTO | DC_NO_WATER | DC_EXEC, CMD_BUILD_RAILROAD_TRACK);
|
||||
} else {
|
||||
|
||||
/* Figure out which (rail)bridge type to build
|
||||
* start with best bridge, then go down to worse and worse bridges
|
||||
* unnecessary to check for worst bridge (i=0), since AI will always build that. */
|
||||
int i;
|
||||
for (i = MAX_BRIDGES - 1; i != 0; i--) {
|
||||
if (CheckBridge_Stuff(i, bridge_len)) {
|
||||
CommandCost cost = DoCommand(t1, t2, i | (_players_ai[p->index].railtype_to_use << 8), DC_AUTO, CMD_BUILD_BRIDGE);
|
||||
if (CmdSucceeded(cost) && cost.GetCost() < (p->player_money >> 1) && cost.GetCost() < ((p->player_money + _economy.max_loan - p->current_loan) >> 5)) break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Build it */
|
||||
DoCommand(t1, t2, i | (_players_ai[p->index].railtype_to_use << 8), DC_AUTO | DC_EXEC, CMD_BUILD_BRIDGE);
|
||||
}
|
||||
|
||||
// Build it
|
||||
DoCommand(arf.bridge_end_tile, _players_ai[p->index].cur_tile_a, i | (_players_ai[p->index].railtype_to_use << 8), DC_AUTO | DC_EXEC, CMD_BUILD_BRIDGE);
|
||||
|
||||
_players_ai[p->index].cur_tile_a = arf.bridge_end_tile;
|
||||
_players_ai[p->index].cur_tile_a = t2;
|
||||
_players_ai[p->index].state_counter = 0;
|
||||
} else if (arf.best_ptr[0] & 0x40) {
|
||||
// tunnel
|
||||
@@ -2849,7 +2877,7 @@ static bool AiCheckRoadPathBetter(AiRoadFinder *arf, const byte *p)
|
||||
}
|
||||
|
||||
|
||||
static bool AiEnumFollowRoad(TileIndex tile, AiRoadEnum *a, int track, uint length, byte *state)
|
||||
static bool AiEnumFollowRoad(TileIndex tile, AiRoadEnum *a, int track, uint length)
|
||||
{
|
||||
uint dist = DistanceManhattan(tile, a->dest);
|
||||
|
||||
@@ -2884,7 +2912,7 @@ static bool AiCheckRoadFinished(Player *p)
|
||||
tile = TILE_MASK(_players_ai[p->index].cur_tile_a + TileOffsByDiagDir(dir));
|
||||
|
||||
if (IsRoadStopTile(tile) || IsTileDepotType(tile, TRANSPORT_ROAD)) return false;
|
||||
bits = GetTileTrackStatus(tile, TRANSPORT_ROAD, ROADTYPES_ROAD) & _ai_road_table_and[dir];
|
||||
bits = TrackStatusToTrackdirBits(GetTileTrackStatus(tile, TRANSPORT_ROAD, ROADTYPES_ROAD)) & _ai_road_table_and[dir];
|
||||
if (bits == 0) return false;
|
||||
|
||||
are.best_dist = (uint)-1;
|
||||
@@ -3087,26 +3115,36 @@ do_some_terraform:
|
||||
tile = TILE_MASK(_players_ai[p->index].cur_tile_a + TileOffsByDiagDir(_players_ai[p->index].cur_dir_a));
|
||||
|
||||
if (arf.best_ptr[0] & 0x80) {
|
||||
int i;
|
||||
int32 bridge_len;
|
||||
_players_ai[p->index].cur_tile_a = arf.bridge_end_tile;
|
||||
bridge_len = GetTunnelBridgeLength(tile, _players_ai[p->index].cur_tile_a); // tile
|
||||
TileIndex t1 = tile;
|
||||
TileIndex t2 = arf.bridge_end_tile;
|
||||
|
||||
/* Figure out what (road)bridge type to build
|
||||
* start with best bridge, then go down to worse and worse bridges
|
||||
* unnecessary to check for worse bridge (i=0), since AI will always build that.
|
||||
*AI is so fucked up that fixing this small thing will probably not solve a thing
|
||||
*/
|
||||
for (i = 10; i != 0; i--) {
|
||||
if (CheckBridge_Stuff(i, bridge_len)) {
|
||||
CommandCost cost = DoCommand(tile, _players_ai[p->index].cur_tile_a, i + ((0x80 | ROADTYPES_ROAD) << 8), DC_AUTO, CMD_BUILD_BRIDGE);
|
||||
if (CmdSucceeded(cost) && cost.GetCost() < (p->player_money >> 5)) break;
|
||||
int32 bridge_len = GetTunnelBridgeLength(t1, t2);
|
||||
|
||||
Axis axis = (TileX(t1) == TileX(t2) ? AXIS_Y : AXIS_X);
|
||||
|
||||
/* try to build a long road instead of bridge - CMD_BUILD_LONG_ROAD has to fail if it couldn't build at least one piece! */
|
||||
CommandCost cost = DoCommand(t2, t1, (t2 < t1 ? 1 : 2) | (axis << 2) | (ROADTYPE_ROAD << 3), DC_AUTO | DC_NO_WATER, CMD_BUILD_LONG_ROAD);
|
||||
|
||||
if (CmdSucceeded(cost) && cost.GetCost() <= p->player_money) {
|
||||
DoCommand(t2, t1, (t2 < t1 ? 1 : 2) | (axis << 2) | (ROADTYPE_ROAD << 3), DC_AUTO | DC_EXEC | DC_NO_WATER, CMD_BUILD_LONG_ROAD);
|
||||
} else {
|
||||
int i;
|
||||
|
||||
/* Figure out what (road)bridge type to build
|
||||
* start with best bridge, then go down to worse and worse bridges
|
||||
* unnecessary to check for worse bridge (i=0), since AI will always build that */
|
||||
for (i = MAX_BRIDGES - 1; i != 0; i--) {
|
||||
if (CheckBridge_Stuff(i, bridge_len)) {
|
||||
CommandCost cost = DoCommand(t1, t2, i + ((0x80 | ROADTYPES_ROAD) << 8), DC_AUTO, CMD_BUILD_BRIDGE);
|
||||
if (CmdSucceeded(cost) && cost.GetCost() < (p->player_money >> 1) && cost.GetCost() < ((p->player_money + _economy.max_loan - p->current_loan) >> 5)) break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Build it */
|
||||
DoCommand(t1, t2, i + ((0x80 | ROADTYPES_ROAD) << 8), DC_AUTO | DC_EXEC, CMD_BUILD_BRIDGE);
|
||||
}
|
||||
|
||||
// Build it
|
||||
DoCommand(tile, _players_ai[p->index].cur_tile_a, i + ((0x80 | ROADTYPES_ROAD) << 8), DC_AUTO | DC_EXEC, CMD_BUILD_BRIDGE);
|
||||
|
||||
_players_ai[p->index].cur_tile_a = t2;
|
||||
_players_ai[p->index].state_counter = 0;
|
||||
} else if (arf.best_ptr[0] & 0x40) {
|
||||
// tunnel
|
||||
|
||||
@@ -1251,7 +1251,7 @@ static void AiNew_CheckVehicle(Player *p, Vehicle *v)
|
||||
if (v->age > 360) {
|
||||
// If both years together are not more than AI_MINIMUM_ROUTE_PROFIT,
|
||||
// it is not worth the line I guess...
|
||||
if ((v->profit_last_year + v->profit_this_year) >> 8 < AI_MINIMUM_ROUTE_PROFIT ||
|
||||
if (v->profit_last_year + v->profit_this_year < (Money)256 * AI_MINIMUM_ROUTE_PROFIT ||
|
||||
(v->reliability * 100 >> 16) < 40) {
|
||||
// There is a possibility that the route is fucked up...
|
||||
if (v->cargo.DaysInTransit() > AI_VEHICLE_LOST_DAYS) {
|
||||
|
||||
+11
-2
@@ -924,6 +924,10 @@ static int UpdateAircraftSpeed(Vehicle *v, uint speed_limit = SPEED_LIMIT_NONE,
|
||||
uint spd = v->acceleration * 16;
|
||||
byte t;
|
||||
|
||||
/* Adjust speed limits by plane speed factor to prevent taxiing
|
||||
* and take-off speeds being too low. */
|
||||
speed_limit *= _patches.plane_speed;
|
||||
|
||||
if (v->u.air.cached_max_speed < speed_limit) {
|
||||
if (v->cur_speed < speed_limit) hard_limit = false;
|
||||
speed_limit = v->u.air.cached_max_speed;
|
||||
@@ -939,7 +943,9 @@ static int UpdateAircraftSpeed(Vehicle *v, uint speed_limit = SPEED_LIMIT_NONE,
|
||||
* method at slower speeds. This also results in less reduction at slow
|
||||
* speeds to that aircraft do not get to taxi speed straight after
|
||||
* touchdown. */
|
||||
if (!hard_limit && v->cur_speed > speed_limit) speed_limit = v->cur_speed - max(1, (v->cur_speed * v->cur_speed) / 16384);
|
||||
if (!hard_limit && v->cur_speed > speed_limit) {
|
||||
speed_limit = v->cur_speed - max(1, ((v->cur_speed * v->cur_speed) / 16384) / _patches.plane_speed);
|
||||
}
|
||||
|
||||
spd = min(v->cur_speed + (spd >> 8) + (v->subspeed < t), speed_limit);
|
||||
|
||||
@@ -953,6 +959,9 @@ static int UpdateAircraftSpeed(Vehicle *v, uint speed_limit = SPEED_LIMIT_NONE,
|
||||
InvalidateWindowWidget(WC_VEHICLE_VIEW, v->index, VVW_WIDGET_START_STOP_VEH);
|
||||
}
|
||||
|
||||
/* Adjust distance moved by plane speed setting */
|
||||
if (_patches.plane_speed > 1) spd /= _patches.plane_speed;
|
||||
|
||||
if (!(v->direction & 1)) spd = spd * 3 / 4;
|
||||
|
||||
spd += v->progress;
|
||||
@@ -1574,7 +1583,7 @@ static inline bool CheckSendAircraftToHangarForReplacement(const Vehicle *v)
|
||||
/* There is no autoreplace assigned to this EngineID so we will set it to renew to the same type if needed */
|
||||
new_engine = v->engine_type;
|
||||
|
||||
if(!p->engine_renew || (v->age - v->max_age) < p->engine_renew_months * 30) {
|
||||
if (!v->NeedsAutorenewing(p)) {
|
||||
/* No need to replace the aircraft */
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
|
||||
#include "table/strings.h"
|
||||
|
||||
|
||||
/*
|
||||
* move the cargo from one engine to another if possible
|
||||
*/
|
||||
@@ -342,8 +343,7 @@ CommandCost MaybeReplaceVehicle(Vehicle *v, bool check, bool display_costs)
|
||||
}
|
||||
|
||||
// check if the vehicle should be replaced
|
||||
if (!p->engine_renew ||
|
||||
w->age - w->max_age < (p->engine_renew_months * 30) || // replace if engine is too old
|
||||
if (!w->NeedsAutorenewing(p) || // replace if engine is too old
|
||||
w->max_age == 0) { // rail cars got a max age of 0
|
||||
/* If the vehicle belongs to a group, check if the group is protected from the global autoreplace.
|
||||
If not, chek if an global auto remplacement is defined */
|
||||
|
||||
+24
-11
@@ -230,8 +230,8 @@ static int CDECL TrainEngineRunningCostSorter(const void *a, const void *b)
|
||||
const RailVehicleInfo *rvi_a = RailVehInfo(*(const EngineID*)a);
|
||||
const RailVehicleInfo *rvi_b = RailVehInfo(*(const EngineID*)b);
|
||||
|
||||
Money va = rvi_a->running_cost_base * _price.running_rail[rvi_a->running_cost_class] * (rvi_a->railveh_type == RAILVEH_MULTIHEAD ? 2 : 1);
|
||||
Money vb = rvi_b->running_cost_base * _price.running_rail[rvi_b->running_cost_class] * (rvi_b->railveh_type == RAILVEH_MULTIHEAD ? 2 : 1);
|
||||
Money va = rvi_a->running_cost * GetPriceByIndex(rvi_a->running_cost_class) * (rvi_a->railveh_type == RAILVEH_MULTIHEAD ? 2 : 1);
|
||||
Money vb = rvi_b->running_cost * GetPriceByIndex(rvi_b->running_cost_class) * (rvi_b->railveh_type == RAILVEH_MULTIHEAD ? 2 : 1);
|
||||
int r = ClampToI32(va - vb);
|
||||
|
||||
return _internal_sort_order ? -r : r;
|
||||
@@ -248,8 +248,8 @@ static int CDECL TrainEnginePowerVsRunningCostSorter(const void *a, const void *
|
||||
* Because of this, the return value have to be reversed as well and we return b - a instead of a - b.
|
||||
* Another thing is that both power and running costs should be doubled for multiheaded engines.
|
||||
* Since it would be multipling with 2 in both numerator and denumerator, it will even themselves out and we skip checking for multiheaded. */
|
||||
Money va = (rvi_a->running_cost_base * _price.running_rail[rvi_a->running_cost_class]) / max(1U, (uint)rvi_a->power);
|
||||
Money vb = (rvi_b->running_cost_base * _price.running_rail[rvi_b->running_cost_class]) / max(1U, (uint)rvi_b->power);
|
||||
Money va = (rvi_a->running_cost * GetPriceByIndex(rvi_a->running_cost_class)) / max(1U, (uint)rvi_a->power);
|
||||
Money vb = (rvi_b->running_cost * GetPriceByIndex(rvi_b->running_cost_class)) / max(1U, (uint)rvi_b->power);
|
||||
int r = ClampToI32(vb - va);
|
||||
|
||||
return _internal_sort_order ? -r : r;
|
||||
@@ -312,9 +312,12 @@ static int CDECL RoadVehEngineSpeedSorter(const void *a, const void *b)
|
||||
|
||||
static int CDECL RoadVehEngineRunningCostSorter(const void *a, const void *b)
|
||||
{
|
||||
const int va = RoadVehInfo(*(const EngineID*)a)->running_cost;
|
||||
const int vb = RoadVehInfo(*(const EngineID*)b)->running_cost;
|
||||
const int r = va - vb;
|
||||
const RoadVehicleInfo *rvi_a = RoadVehInfo(*(const EngineID*)a);
|
||||
const RoadVehicleInfo *rvi_b = RoadVehInfo(*(const EngineID*)b);
|
||||
|
||||
Money va = rvi_a->running_cost * GetPriceByIndex(rvi_a->running_cost_class);
|
||||
Money vb = rvi_b->running_cost * GetPriceByIndex(rvi_b->running_cost_class);
|
||||
int r = ClampToI32(va - vb);
|
||||
|
||||
if (r == 0) {
|
||||
/* Use EngineID to sort instead since we want consistent sorting */
|
||||
@@ -574,6 +577,14 @@ static int DrawRailWagonPurchaseInfo(int x, int y, EngineID engine_number, const
|
||||
y += 10;
|
||||
}
|
||||
}
|
||||
|
||||
/* Running cost */
|
||||
if (rvi->running_cost_class != 0xFF) {
|
||||
SetDParam(0, GetEngineProperty(engine_number, 0x0D, rvi->running_cost) * GetPriceByIndex(rvi->running_cost_class) >> 8);
|
||||
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, TC_FROMSTRING);
|
||||
y += 10;
|
||||
}
|
||||
|
||||
return y;
|
||||
}
|
||||
|
||||
@@ -603,9 +614,11 @@ static int DrawRailEnginePurchaseInfo(int x, int y, EngineID engine_number, cons
|
||||
}
|
||||
|
||||
/* Running cost */
|
||||
SetDParam(0, (GetEngineProperty(engine_number, 0x0D, rvi->running_cost_base) * _price.running_rail[rvi->running_cost_class] >> 8) << multihead);
|
||||
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, TC_FROMSTRING);
|
||||
y += 10;
|
||||
if (rvi->running_cost_class != 0xFF) {
|
||||
SetDParam(0, (GetEngineProperty(engine_number, 0x0D, rvi->running_cost) * GetPriceByIndex(rvi->running_cost_class) >> 8) << multihead);
|
||||
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, TC_FROMSTRING);
|
||||
y += 10;
|
||||
}
|
||||
|
||||
/* Powered wagons power - Powered wagons extra weight */
|
||||
if (rvi->pow_wag_power != 0) {
|
||||
@@ -630,7 +643,7 @@ static int DrawRoadVehPurchaseInfo(int x, int y, EngineID engine_number, const R
|
||||
y += 10;
|
||||
|
||||
/* Running cost */
|
||||
SetDParam(0, rvi->running_cost * _price.roadveh_running >> 8);
|
||||
SetDParam(0, rvi->running_cost * GetPriceByIndex(rvi->running_cost_class) >> 8);
|
||||
DrawString(x, y, STR_PURCHASE_INFO_RUNNINGCOST, TC_FROMSTRING);
|
||||
y += 10;
|
||||
|
||||
|
||||
+1
-1
@@ -315,7 +315,7 @@ static void ClickTile_Clear(TileIndex tile)
|
||||
/* not used */
|
||||
}
|
||||
|
||||
static uint32 GetTileTrackStatus_Clear(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
static TrackStatus GetTileTrackStatus_Clear(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
+2
-2
@@ -399,7 +399,7 @@ CommandCost DoCommand(TileIndex tile, uint32 p1, uint32 p2, uint32 flags, uint32
|
||||
CommandProc *proc;
|
||||
|
||||
/* Do not even think about executing out-of-bounds tile-commands */
|
||||
if (tile >= MapSize() || IsTileType(tile, MP_VOID)) {
|
||||
if (!IsValidTile(tile)) {
|
||||
_cmd_text = NULL;
|
||||
return CMD_ERROR;
|
||||
}
|
||||
@@ -499,7 +499,7 @@ bool DoCommandP(TileIndex tile, uint32 p1, uint32 p2, CommandCallback *callback,
|
||||
int y = TileY(tile) * TILE_SIZE;
|
||||
|
||||
/* Do not even think about executing out-of-bounds tile-commands */
|
||||
if (tile >= MapSize() || IsTileType(tile, MP_VOID)) {
|
||||
if (!IsValidTile(tile)) {
|
||||
_cmd_text = NULL;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -168,6 +168,18 @@ static inline int32 ClampToI32(const int64 a)
|
||||
return (int32)a;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reduce an usigned 64-bit int to an unsigned 16-bit one
|
||||
*
|
||||
* @param a The 64-bit value to clamp
|
||||
* @return The 64-bit value reduced to a 16-bit value
|
||||
* @see ClampU(uint, uint, uint)
|
||||
*/
|
||||
static inline uint16 ClampToU16(const uint64 a)
|
||||
{
|
||||
return min(a, 0xFFFF);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the (absolute) difference between two (scalar) variables
|
||||
*
|
||||
|
||||
@@ -716,9 +716,8 @@ static void DisasterTick_Submarine(Vehicle *v)
|
||||
|
||||
tile = v->tile + TileOffsByDiagDir(DirToDiagDir(v->direction));
|
||||
if (IsValidTile(tile)) {
|
||||
TrackdirBits r = (TrackdirBits)GetTileTrackStatus(tile, TRANSPORT_WATER, 0);
|
||||
|
||||
if (TrackdirBitsToTrackBits(r) == TRACK_BIT_ALL && !Chance16(1, 90)) {
|
||||
TrackBits trackbits = TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_WATER, 0));
|
||||
if (trackbits == TRACK_BIT_ALL && !Chance16(1, 90)) {
|
||||
GetNewVehiclePosResult gp = GetNewVehiclePos(v);
|
||||
SetDisasterVehiclePos(v, gp.x, gp.y, v->z_pos);
|
||||
return;
|
||||
|
||||
+1
-1
@@ -64,7 +64,7 @@ static void ChangeTileOwner_Dummy(TileIndex tile, PlayerID old_player, PlayerID
|
||||
/* not used */
|
||||
}
|
||||
|
||||
static uint32 GetTileTrackStatus_Dummy(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
static TrackStatus GetTileTrackStatus_Dummy(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
+16
-5
@@ -163,14 +163,16 @@ int UpdateCompanyRatingAndValue(Player *p, bool update)
|
||||
num++;
|
||||
if (v->age > 730) {
|
||||
/* Find the vehicle with the lowest amount of profit */
|
||||
if (min_profit_first || min_profit > v->profit_last_year >> 8) {
|
||||
min_profit = v->profit_last_year >> 8;
|
||||
if (min_profit_first || min_profit > v->profit_last_year) {
|
||||
min_profit = v->profit_last_year;
|
||||
min_profit_first = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
min_profit >>= 8; // remove the fract part
|
||||
|
||||
_score_part[owner][SCORE_VEHICLES] = num;
|
||||
/* Don't allow negative min_profit to show */
|
||||
if (min_profit > 0)
|
||||
@@ -844,9 +846,9 @@ static const Money _price_base[NUM_PRICES] = {
|
||||
55, ///< remove_dock
|
||||
1600, ///< remove_house
|
||||
40, ///< remove_road
|
||||
5600, ///< running_rail[0] railroad
|
||||
5200, ///< running_rail[1] monorail
|
||||
4800, ///< running_rail[2] maglev
|
||||
5600, ///< running_rail[0] steam
|
||||
5200, ///< running_rail[1] diesel
|
||||
4800, ///< running_rail[2] electric
|
||||
9600, ///< aircraft_running
|
||||
1600, ///< roadveh_running
|
||||
5600, ///< ship_running
|
||||
@@ -912,6 +914,15 @@ void StartupEconomy()
|
||||
_economy.fluct = GB(Random(), 0, 8) + 168;
|
||||
}
|
||||
|
||||
|
||||
Money GetPriceByIndex(uint8 index)
|
||||
{
|
||||
if (index > NUM_PRICES) return 0;
|
||||
|
||||
return ((Money*)&_price)[index];
|
||||
}
|
||||
|
||||
|
||||
Pair SetupSubsidyDecodeParam(const Subsidy* s, bool mode)
|
||||
{
|
||||
TileIndex tile;
|
||||
|
||||
@@ -41,4 +41,6 @@ uint MoveGoodsToStation(TileIndex tile, int w, int h, CargoID type, uint amount)
|
||||
void VehiclePayment(Vehicle *front_v);
|
||||
void LoadUnloadStation(Station *st);
|
||||
|
||||
Money GetPriceByIndex(uint8 index);
|
||||
|
||||
#endif /* ECONOMY_FUNC_H */
|
||||
|
||||
+1
-1
@@ -218,7 +218,7 @@ static PlayerID GetBestPlayer(uint8 pp)
|
||||
if (best_player == PLAYER_SPECTATOR) return PLAYER_SPECTATOR;
|
||||
|
||||
SetBit(mask, best_player);
|
||||
} while (--p != 0);
|
||||
} while (--pp != 0);
|
||||
|
||||
return best_player;
|
||||
}
|
||||
|
||||
+2
-1
@@ -36,7 +36,7 @@ struct RailVehicleInfo {
|
||||
uint16 max_speed;
|
||||
uint16 power;
|
||||
uint16 weight;
|
||||
byte running_cost_base;
|
||||
byte running_cost;
|
||||
byte running_cost_class;
|
||||
EngineClass engclass; ///< Class of engine for this vehicle
|
||||
byte capacity;
|
||||
@@ -90,6 +90,7 @@ struct RoadVehicleInfo {
|
||||
byte image_index;
|
||||
byte base_cost;
|
||||
byte running_cost;
|
||||
byte running_cost_class;
|
||||
SoundFxByte sfx;
|
||||
byte max_speed;
|
||||
byte capacity;
|
||||
|
||||
+2
-2
@@ -126,7 +126,7 @@ static void DrawTrainEngineInfo(EngineID engine, int x, int y, int maxw)
|
||||
SetDParam(3, rvi->power << multihead);
|
||||
SetDParam(1, rvi->weight << multihead);
|
||||
|
||||
SetDParam(4, rvi->running_cost_base * _price.running_rail[rvi->running_cost_class] >> 8 << multihead);
|
||||
SetDParam(4, rvi->running_cost * GetPriceByIndex(rvi->running_cost_class) >> 8 << multihead);
|
||||
|
||||
if (rvi->capacity != 0) {
|
||||
SetDParam(5, rvi->cargo_type);
|
||||
@@ -155,7 +155,7 @@ static void DrawRoadVehEngineInfo(EngineID engine, int x, int y, int maxw)
|
||||
|
||||
SetDParam(0, (_price.roadveh_base >> 3) * rvi->base_cost >> 5);
|
||||
SetDParam(1, rvi->max_speed * 10 / 32);
|
||||
SetDParam(2, rvi->running_cost * _price.roadveh_running >> 8);
|
||||
SetDParam(2, rvi->running_cost * GetPriceByIndex(rvi->running_cost_class) >> 8);
|
||||
SetDParam(3, rvi->cargo_type);
|
||||
SetDParam(4, rvi->capacity);
|
||||
|
||||
|
||||
+1
-1
@@ -37,7 +37,7 @@ bool _screen_disable_anim = false; ///< Disable palette animation (important f
|
||||
bool _exit_game;
|
||||
bool _networking; ///< are we in networking mode?
|
||||
byte _game_mode;
|
||||
byte _pause_game;
|
||||
int8 _pause_game;
|
||||
int _pal_first_dirty;
|
||||
int _pal_count_dirty;
|
||||
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ struct Group : PoolItem<Group, GroupID, &_Group_pool> {
|
||||
char *name; ///< Group Name
|
||||
|
||||
uint16 num_vehicle; ///< Number of vehicles wich belong to the group
|
||||
PlayerID owner; ///< Group Owner
|
||||
PlayerByte owner; ///< Group Owner
|
||||
VehicleTypeByte vehicle_type; ///< Vehicle type of the group
|
||||
|
||||
bool replace_protection; ///< If set to true, the global autoreplace have no effect on the group
|
||||
|
||||
@@ -134,6 +134,9 @@ CommandCost CmdDeleteGroup(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||
if (v->group_id == g->index && v->type == g->vehicle_type) v->group_id = DEFAULT_GROUP;
|
||||
}
|
||||
|
||||
/* Update backupped orders if needed */
|
||||
if (_backup_orders_data.group == g->index) _backup_orders_data.group = DEFAULT_GROUP;
|
||||
|
||||
/* If we set an autoreplace for the group we delete, remove it. */
|
||||
if (_current_player < MAX_PLAYERS) {
|
||||
Player *p;
|
||||
|
||||
+2
-2
@@ -483,8 +483,8 @@ static void GroupWndProc(Window *w, WindowEvent *e)
|
||||
|
||||
if (w->resize.step_height == PLY_WND_PRC__SIZE_OF_ROW_BIG2) DrawSmallOrderList(v, x + 138, y2);
|
||||
|
||||
SetDParam(0, v->profit_this_year >> 8);
|
||||
SetDParam(1, v->profit_last_year >> 8);
|
||||
SetDParam(0, v->GetDisplayProfitThisYear());
|
||||
SetDParam(1, v->GetDisplayProfitLastYear());
|
||||
DrawString(x + 19, y2 + w->resize.step_height - 8, STR_0198_PROFIT_THIS_YEAR_LAST_YEAR, TC_FROMSTRING);
|
||||
|
||||
if (IsValidGroupID(v->group_id)) {
|
||||
|
||||
@@ -815,7 +815,7 @@ static void ClickTile_Industry(TileIndex tile)
|
||||
ShowIndustryViewWindow(GetIndustryIndex(tile));
|
||||
}
|
||||
|
||||
static uint32 GetTileTrackStatus_Industry(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
static TrackStatus GetTileTrackStatus_Industry(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@@ -2019,7 +2019,6 @@ enum {
|
||||
*/
|
||||
static void ChangeIndustryProduction(Industry *i, bool monthly)
|
||||
{
|
||||
extern StringID MapGRFStringID(uint32 grfid, StringID str);
|
||||
StringID str = STR_NULL;
|
||||
bool closeit = false;
|
||||
const IndustrySpec *indspec = GetIndustrySpec(i->type);
|
||||
|
||||
+3
-8
@@ -437,16 +437,16 @@ void DoClearSquare(TileIndex tile)
|
||||
MarkTileDirtyByTile(tile);
|
||||
}
|
||||
|
||||
/** Returns trackdirbits in lower two bytes and additional info about track status in upper two bytes
|
||||
/** Returns information about trackdirs and signal states.
|
||||
* If there is any trackbit at 'side', return all trackdirbits.
|
||||
* For TRANSPORT_ROAD, return 0 if there is no roadbit (of given subtype) at given side.
|
||||
* For TRANSPORT_ROAD, return no trackbits if there is no roadbit (of given subtype) at given side.
|
||||
* @param tile tile to get info about
|
||||
* @param mode transport type
|
||||
* @param sub_mode for TRANSPORT_ROAD, roadtypes to check
|
||||
* @param side side we are entering from, INVALID_DIAGDIR to return all trackbits
|
||||
* @return trackdirbits and other info depending on 'mode'
|
||||
*/
|
||||
uint32 GetTileTrackStatus(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
TrackStatus GetTileTrackStatus(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
{
|
||||
return _tile_type_procs[GetTileType(tile)]->get_tile_track_status_proc(tile, mode, sub_mode, side);
|
||||
}
|
||||
@@ -919,8 +919,3 @@ TileIndex AdjustTileCoordRandomly(TileIndex a, byte rng)
|
||||
TileY(a) + (GB(r, 8, 8) * rn * 2 >> 8) - rn
|
||||
));
|
||||
}
|
||||
|
||||
bool IsValidTile(TileIndex tile)
|
||||
{
|
||||
return (tile < MapSizeX() * MapMaxY() && TileX(tile) != MapMaxX());
|
||||
}
|
||||
|
||||
@@ -26,8 +26,6 @@ byte GetSnowLine(void);
|
||||
byte HighestSnowLine(void);
|
||||
void ClearSnowLine(void);
|
||||
|
||||
bool IsValidTile(TileIndex tile);
|
||||
|
||||
uint GetPartialZ(int x, int y, Slope corners);
|
||||
uint GetSlopeZ(int x, int y);
|
||||
void GetSlopeZOnEdge(Slope tileh, DiagDirection edge, int *z1, int *z2);
|
||||
|
||||
@@ -214,7 +214,7 @@ STR_00F3_400M :{BLACK}{TINYFON
|
||||
STR_00F4_500M :{BLACK}{TINYFONT}500m
|
||||
STR_00F5_TRAINS :{BLACK}{TINYFONT}Trens
|
||||
STR_00F6_ROAD_VEHICLES :{BLACK}{TINYFONT}Automóveis
|
||||
STR_00F7_SHIPS :{BLACK}{TINYFONT}Navios
|
||||
STR_00F7_SHIPS :{BLACK}{TINYFONT}Embarcação
|
||||
STR_00F8_AIRCRAFT :{BLACK}{TINYFONT}Aeronaves
|
||||
STR_00F9_TRANSPORT_ROUTES :{BLACK}{TINYFONT}Rotas de Transporte
|
||||
STR_00FA_COAL_MINE :{BLACK}{TINYFONT}Mina de Carvão
|
||||
@@ -372,7 +372,7 @@ STR_SORT_BY_DROPDOWN_NAME :Nome
|
||||
STR_SORT_BY_DATE :{BLACK}Data
|
||||
STR_SORT_BY_NUMBER :Número
|
||||
STR_SORT_BY_PROFIT_LAST_YEAR :Lucros do último ano
|
||||
STR_SORT_BY_PROFIT_THIS_YEAR :Lucros deste ano
|
||||
STR_SORT_BY_PROFIT_THIS_YEAR :Lucro anual
|
||||
STR_SORT_BY_AGE :Idade
|
||||
STR_SORT_BY_RELIABILITY :Confiabilidade
|
||||
STR_SORT_BY_TOTAL_CAPACITY_PER_CARGOTYPE :Capacidade total por tipo de carga
|
||||
@@ -467,7 +467,7 @@ STR_0194_SHOW_TRANSPORT_ROUTES_ON :{BLACK}Exibir r
|
||||
STR_0195_SHOW_VEGETATION_ON_MAP :{BLACK}Exibir vegetação no mapa
|
||||
STR_0196_SHOW_LAND_OWNERS_ON_MAP :{BLACK}Exibir propriedades no mapa
|
||||
STR_0197_TOGGLE_TOWN_NAMES_ON_OFF :{BLACK}Alternar exibir/ocultar nomes das cidades no mapa
|
||||
STR_0198_PROFIT_THIS_YEAR_LAST_YEAR :{TINYFONT}{BLACK}Lucro deste ano: {CURRENCY} (ano passado: {CURRENCY})
|
||||
STR_0198_PROFIT_THIS_YEAR_LAST_YEAR :{TINYFONT}{BLACK}Lucro anual: {CURRENCY} (último ano: {CURRENCY})
|
||||
|
||||
############ range for service numbers starts
|
||||
STR_AGE :{COMMA} ano{P "" s} ({COMMA})
|
||||
@@ -894,7 +894,7 @@ STR_TOWNNAME_HUNGARIAN :Húngaro
|
||||
STR_TOWNNAME_AUSTRIAN :Austríaco
|
||||
STR_TOWNNAME_ROMANIAN :Romeno
|
||||
STR_TOWNNAME_CZECH :Checo
|
||||
STR_TOWNNAME_SWISS :Suiça
|
||||
STR_TOWNNAME_SWISS :Suiço
|
||||
STR_TOWNNAME_DANISH :Dinamarquês
|
||||
STR_TOWNNAME_TURKISH :Turco
|
||||
STR_TOWNNAME_ITALIAN :Italiano
|
||||
@@ -911,7 +911,7 @@ STR_CURR_CHF :Franco Suíço
|
||||
STR_CURR_CZK :Coroa Checa (CZK)
|
||||
STR_CURR_DEM :Marco Alemão (DEM)
|
||||
STR_CURR_DKK :Coroa Dinamarquesa (DKK)
|
||||
STR_CURR_ESP :Peseta (ESP)
|
||||
STR_CURR_ESP :Peso (ESP)
|
||||
STR_CURR_FIM :Marco Finlandês (FIM)
|
||||
STR_CURR_FRF :Franco (FRF)
|
||||
STR_CURR_GRD :Dracma Grego (GRD)
|
||||
@@ -926,7 +926,7 @@ STR_CURR_RUR :Rublo Russo (RU
|
||||
STR_CURR_SIT :Tolar Eslovênio (SIT)
|
||||
STR_CURR_SEK :Coroa Sueca (SEK)
|
||||
STR_CURR_YTL :Lira Turca (YTL)
|
||||
STR_CURR_SKK :Koruna Eslovaca (SKK)
|
||||
STR_CURR_SKK :Coroa Eslovaca (SKK)
|
||||
STR_CURR_BRR :Real Brasileiro (BRL)
|
||||
|
||||
STR_CURR_CUSTOM :Personalizado...
|
||||
@@ -963,8 +963,8 @@ STR_MONTH_OCT :Outubro
|
||||
STR_MONTH_NOV :Novembro
|
||||
STR_MONTH_DEC :Dezembro
|
||||
|
||||
STR_HEADING_FOR_STATION :{LTBLUE}Dirigindo-se para {STATION}
|
||||
STR_HEADING_FOR_STATION_VEL :{LTBLUE}Dirigindo-se para {STATION}, {VELOCITY}
|
||||
STR_HEADING_FOR_STATION :{LTBLUE}Indo para {STATION}
|
||||
STR_HEADING_FOR_STATION_VEL :{LTBLUE}Indo para {STATION}, {VELOCITY}
|
||||
STR_NO_ORDERS :{LTBLUE}Sem ordens
|
||||
STR_NO_ORDERS_VEL :{LTBLUE}Sem ordens, {VELOCITY}
|
||||
|
||||
@@ -1049,7 +1049,7 @@ STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Fila de
|
||||
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Deslocar janela quando o cursor está na borda do mapa: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Permitir o suborno da autoridade local: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Permtir compra de direitos exclusivos de transporte: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Permitir o envio de dinheiro a outras companhias: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Permitir o envio de dinheiro a outras empresas: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Estações não uniformes: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Multiplicador de peso para trens simulando trens pesados: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Permitir estações drive-through em ruas locais: {ORANGE}{STRING}
|
||||
@@ -1115,12 +1115,12 @@ STR_CONFIG_PATCHES_RIGHT_MOUSE_BTN_EMU_OFF :Desligado
|
||||
STR_CONFIG_PATCHES_PAUSE_ON_NEW_GAME :{LTBLUE}Pausar automaticamente ao inicar um novo jogo: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS :{LTBLUE}Usar a lista avançada de veículos: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OFF :Desligado
|
||||
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OWN :Própria Compania
|
||||
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_ALL :Todas as companias
|
||||
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_OWN :Própria empresa
|
||||
STR_CONFIG_PATCHES_ADVANCED_VEHICLE_LISTS_ALL :Todas as empresas
|
||||
STR_CONFIG_PATCHES_LOADING_INDICATORS :{LTBLUE}Usar indicadores de carga: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_LOADING_INDICATORS_OFF :Desligado
|
||||
STR_CONFIG_PATCHES_LOADING_INDICATORS_OWN :Própria Compania
|
||||
STR_CONFIG_PATCHES_LOADING_INDICATORS_ALL :Todas as Companias
|
||||
STR_CONFIG_PATCHES_LOADING_INDICATORS_OWN :Própria empresa
|
||||
STR_CONFIG_PATCHES_LOADING_INDICATORS_ALL :Todas as empresas
|
||||
STR_CONFIG_PATCHES_TIMETABLE_ALLOW :{LTBLUE}Ativar plano de horário para veículos: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_TIMETABLE_IN_TICKS :{LTBLUE}Exibir plano de horário em tiques ao invés de dias: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE :{LTBLUE}Tipo padrão de ferrovia (ao criar ou carregar um jogo): {ORANGE}{STRING}
|
||||
@@ -1162,7 +1162,7 @@ STR_CONFIG_PATCHES_COLORED_NEWS_YEAR :{LTBLUE}Noticia
|
||||
STR_CONFIG_PATCHES_STARTING_YEAR :{LTBLUE}Data de início: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENDING_YEAR :{LTBLUE}Terminar jogo em: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Ativar economia regular (alterações menores)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Permite comprar ações de outras companhias
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Permite comprar ações de outras empresas
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Ao arrastar colocar sinais a cada: {ORANGE}{STRING} quadrado(s)
|
||||
STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Automaticamente constroi semáforos anteriores: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENABLE_SIGNAL_GUI :{LTBLUE}Ativar interface de sinais: {ORANGE}{STRING}
|
||||
@@ -1206,6 +1206,19 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Alterar valor
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Alguns ou todos os intervalo(s) de serviço predefinidos abaixo são incompatíveis com o valor escolhido! São válidos 5-90% e 30-800 dias
|
||||
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Pathfinder para trens: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(Não recomendado)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Recomendado)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Pathfinder para automóveis: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Original {RED}(Não recomendado)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(Recomendado)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Pathfinder para embarcações: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Original {BLUE}(Recomendado)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(Não recomendado)
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :terreno temperado
|
||||
STR_SUB_ARCTIC_LANDSCAPE :terreno subártico
|
||||
STR_SUB_TROPICAL_LANDSCAPE :terreno subtropical
|
||||
@@ -1224,8 +1237,8 @@ STR_CHEAT_SWITCH_CLIMATE :{LTBLUE}Mudar d
|
||||
STR_CHEAT_CHANGE_DATE :{LTBLUE}Alterar data: {ORANGE} {DATE_SHORT}
|
||||
STR_CHEAT_SETUP_PROD :{LTBLUE}Ativar modificação de valores de produção: {ORANGE}{STRING}
|
||||
|
||||
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Dirigindo-se para {WAYPOINT}
|
||||
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Dirigindo-se para {WAYPOINT}, {VELOCITY}
|
||||
STR_HEADING_FOR_WAYPOINT :{LTBLUE}Indo para {WAYPOINT}
|
||||
STR_HEADING_FOR_WAYPOINT_VEL :{LTBLUE}Indo para {WAYPOINT}, {VELOCITY}
|
||||
|
||||
STR_GO_TO_WAYPOINT :Ir via {WAYPOINT}
|
||||
STR_GO_NON_STOP_TO_WAYPOINT :Ir sem parar via {WAYPOINT}
|
||||
@@ -1395,10 +1408,10 @@ STR_NETWORK_INTERNET_ADVERTISE :Internet (divul
|
||||
STR_NETWORK_CLIENTS_SELECT :{BLACK}{SKIP}{SKIP}{NUM} cliente{P "" s}
|
||||
STR_NETWORK_NUMBER_OF_CLIENTS :{BLACK}Máximo de clientes:
|
||||
STR_NETWORK_NUMBER_OF_CLIENTS_TIP :{BLACK}Escolha o número máximo de clientes. Não é necessário estarem todos preenchidos
|
||||
STR_NETWORK_COMPANIES_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} compan{P ia ias}
|
||||
STR_NETWORK_COMPANIES_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{NUM} empresa{P "" s}
|
||||
STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}Máximo de empresas:
|
||||
STR_NETWORK_NUMBER_OF_COMPANIES_TIP :{BLACK}Limita o servidor para uma certa quantia de empresas
|
||||
STR_NETWORK_SPECTATORS_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} espectator{P "" es}
|
||||
STR_NETWORK_SPECTATORS_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} espectador{P "" es}
|
||||
STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}Max espectadores:
|
||||
STR_NETWORK_NUMBER_OF_SPECTATORS_TIP :{BLACK}Limita o servidor para um certa quantia de espectadores
|
||||
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Idioma falado:
|
||||
@@ -1747,7 +1760,7 @@ STR_2030_SERVICE_SUBSIDY_OFFERED :{BLACK}{BIGFONT
|
||||
STR_2031_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subsídio concedido a {COMPANY}!{}{} Transporte de {STRING} de {STATION} para {STATION} receberá 50% extra durante um ano!
|
||||
STR_2032_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subsídio concedido a {COMPANY}!{}{} Transporte de {STRING} de {STATION} para {STATION} receberá em dobro durante um ano!
|
||||
STR_2033_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subsídio concedido a {COMPANY}!{}{} Transporte de {STRING} de {STATION} para {STATION} receberá o triplo durante um ano!
|
||||
STR_2034_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subsídio concedido a {COMPANY}!{}{}Transporte de {STRING} de {STATION} para {STATION} receberá o quadruplo durante um ano!
|
||||
STR_2034_SERVICE_SUBSIDY_AWARDED :{BLACK}{BIGFONT}Subsídio concedido a {COMPANY}!{}{} Transporte de {STRING} de {STATION} para {STATION} receberá o quadruplo durante um ano!
|
||||
STR_2035_LOCAL_AUTHORITY_REFUSES :{WHITE}a autoridade local de {TOWN} não permite que outro aeroporto seja construído nesta cidade
|
||||
STR_2036_COTTAGES :Casas de campo
|
||||
STR_2037_HOUSES :Casas
|
||||
@@ -1786,7 +1799,7 @@ STR_2056 :{TINYFONT}{WHIT
|
||||
STR_2057 :{ORANGE}{TOWN}{BLACK} ({COMMA})
|
||||
STR_2058_UNDER_CONSTRUCTION :{STRING} (em construção)
|
||||
STR_2059_IGLOO :Iglú
|
||||
STR_205A_TEPEES :Tepees
|
||||
STR_205A_TEPEES :Ocas
|
||||
STR_205B_TEAPOT_HOUSE :Casa-bule
|
||||
STR_205C_PIGGY_BANK :Mealheiro
|
||||
|
||||
@@ -1998,8 +2011,8 @@ STR_4828_PRODUCES :{BLACK}Produz:
|
||||
STR_482A_PRODUCTION_LAST_MONTH :{BLACK}Produção no mês passado:
|
||||
STR_482B_TRANSPORTED :{YELLOW}{CARGO}{BLACK} ({COMMA}% transportado)
|
||||
STR_482C_CENTER_THE_MAIN_VIEW_ON :{BLACK}Centralizar visualização na localização da indústria
|
||||
STR_482D_NEW_UNDER_CONSTRUCTION :{BLACK}{BIGFONT}Nova {STRING} em construção em {TOWN}!
|
||||
STR_482E_NEW_BEING_PLANTED_NEAR :{BLACK}{BIGFONT}Nova {STRING} sendo plantada em {TOWN}!
|
||||
STR_482D_NEW_UNDER_CONSTRUCTION :{BLACK}{BIGFONT}Nov{G o a} {STRING} em construção em {TOWN}!
|
||||
STR_482E_NEW_BEING_PLANTED_NEAR :{BLACK}{BIGFONT}Nov{G o a} {STRING} sendo plantada em {TOWN}!
|
||||
STR_482F_COST :{BLACK}Custo: {YELLOW}{CURRENCY}
|
||||
STR_4830_CAN_T_CONSTRUCT_THIS_INDUSTRY :{WHITE}Impossível construir este tipo de indústria aqui...
|
||||
STR_4831_FOREST_CAN_ONLY_BE_PLANTED :{WHITE}...a floresta só pode ser plantada acima do nível de neve
|
||||
@@ -2243,7 +2256,7 @@ STR_7031_CHANGE_THE_COMPANY_VEHICLE :{BLACK}Alterar
|
||||
STR_7032_CHANGE_THE_PRESIDENT_S :{BLACK}Alterar nome do presidente
|
||||
STR_7033_CHANGE_THE_COMPANY_NAME :{BLACK}Alterar nome da empresa
|
||||
STR_7034_CLICK_ON_SELECTED_NEW_COLOR :{BLACK}Clique no novo esquema de cor
|
||||
STR_7035_INCREASE_SIZE_OF_LOAN :{BLACK}Aumentar empréstimo
|
||||
STR_7035_INCREASE_SIZE_OF_LOAN :{BLACK}Pedir empréstimo
|
||||
STR_7036_REPAY_PART_OF_LOAN :{BLACK}Pagar parte do empréstimo
|
||||
STR_7037_PRESIDENT :{WHITE}{PLAYERNAME}{}{GOLD}(Presidente)
|
||||
STR_7038_INAUGURATED :{GOLD}Inaugurado: {WHITE}{NUM}
|
||||
@@ -2568,12 +2581,12 @@ STR_80CD_CS_INC_OIL_TANKER :Petroleiro CS-I
|
||||
STR_80CE_MPS_PASSENGER_FERRY :Barco de Passageiros MPS
|
||||
STR_80CF_FFP_PASSENGER_FERRY :Barco de Passageiros FFP
|
||||
STR_80D0_BAKEWELL_300_HOVERCRAFT :Hovercraft Bakewell 300
|
||||
STR_80D1_CHUGGER_CHUG_PASSENGER :Barco de Passageiros Chugger-Chug
|
||||
STR_80D2_SHIVERSHAKE_PASSENGER_FERRY :Barco de Passageiros Shivershake
|
||||
STR_80D3_YATE_CARGO_SHIP :Navio de Bens Yate
|
||||
STR_80D4_BAKEWELL_CARGO_SHIP :Navio de Bens Bakewell
|
||||
STR_80D5_MIGHTYMOVER_CARGO_SHIP :Navio de Bens Mightymover
|
||||
STR_80D6_POWERNAUT_CARGO_SHIP :Navio de Bens Powernaut
|
||||
STR_80D1_CHUGGER_CHUG_PASSENGER :Navio de Passageiros Chugger-Chug
|
||||
STR_80D2_SHIVERSHAKE_PASSENGER_FERRY :Navio de Passageiros Shivershake
|
||||
STR_80D3_YATE_CARGO_SHIP :Cargueiro Yate
|
||||
STR_80D4_BAKEWELL_CARGO_SHIP :Cargueiro Bakewell
|
||||
STR_80D5_MIGHTYMOVER_CARGO_SHIP :Cargueiro Mightymover
|
||||
STR_80D6_POWERNAUT_CARGO_SHIP :Cargueiro Powernaut
|
||||
STR_80D7_SAMPSON_U52 :Sampson U52
|
||||
STR_80D8_COLEMAN_COUNT :Coleman Count
|
||||
STR_80D9_FFP_DART :FFP Dart
|
||||
@@ -2655,8 +2668,8 @@ STR_TIMETABLE_STAY_FOR :e ficar durante
|
||||
STR_TIMETABLE_DAYS :{COMMA} dia{P "" s}
|
||||
STR_TIMETABLE_TICKS :{COMMA} tique{P "" s}
|
||||
|
||||
STR_HEADING_FOR_TRAIN_DEPOT :{ORANGE}Dirigindo-se ao depósito de {TOWN}
|
||||
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{ORANGE}Dirigindo-se ao depósito de {TOWN}, {VELOCITY}
|
||||
STR_HEADING_FOR_TRAIN_DEPOT :{ORANGE}Indo para o depósito de {TOWN}
|
||||
STR_HEADING_FOR_TRAIN_DEPOT_VEL :{ORANGE}Indo para o depósito de {TOWN}, {VELOCITY}
|
||||
STR_HEADING_FOR_TRAIN_DEPOT_SERVICE :{LTBLUE}Manutenção no depósito de {TOWN}
|
||||
STR_HEADING_FOR_TRAIN_DEPOT_SERVICE_VEL :{LTBLUE}Manutenção no depósito de {TOWN}, {VELOCITY}
|
||||
|
||||
@@ -2764,7 +2777,7 @@ STR_885C_BROKEN_DOWN :{RED}Quebrado
|
||||
STR_885D_AGE_RUNNING_COST_YR :{BLACK}Idade: {LTBLUE}{STRING}{BLACK} Custo de circulação: {LTBLUE}{CURRENCY}/ano
|
||||
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED :{BLACK}Peso: {LTBLUE}{WEIGHT_S} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Velocidade Máx.: {LTBLUE}{VELOCITY}
|
||||
STR_VEHICLE_INFO_WEIGHT_POWER_MAX_SPEED_MAX_TE :{BLACK}Peso: {LTBLUE}{WEIGHT_S} {BLACK}Potência: {LTBLUE}{POWER}{BLACK} Velocidade: {LTBLUE}{VELOCITY} {BLACK}Manutenção.: {LTBLUE}{FORCE}
|
||||
STR_885F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucros deste ano: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
|
||||
STR_885F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucro anual: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
|
||||
STR_8860_RELIABILITY_BREAKDOWNS :{BLACK}Confiabilidade: {LTBLUE}{COMMA}% {BLACK}Quebras desde a última manutenção: {LTBLUE}{COMMA}
|
||||
STR_8861_STOPPED :{RED}Parado
|
||||
STR_8862_CAN_T_MAKE_TRAIN_PASS_SIGNAL :{WHITE}Impossível fazer o trem passar o sinal de perigo...
|
||||
@@ -2788,9 +2801,9 @@ STR_INCOMPATIBLE_RAIL_TYPES :Tipo de ferrovi
|
||||
STR_TRAIN_NO_POWER :{RED}Sem força
|
||||
STR_TRAIN_START_NO_CATENARY :Essa linha não tem energia, portanto o trem não parte
|
||||
|
||||
STR_NEW_VEHICLE_NOW_AVAILABLE :{BLACK}{BIGFONT}Novo {STRING} agora disponível!
|
||||
STR_NEW_VEHICLE_NOW_AVAILABLE :{BLACK}{BIGFONT}Nov{G o a} {STRING} agora disponível!
|
||||
STR_NEW_VEHICLE_TYPE :{BLACK}{BIGFONT}{ENGINE}
|
||||
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Novo {STRING} agora disponível! - {ENGINE}
|
||||
STR_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Nov{G o a} {STRING} agora disponível! - {ENGINE}
|
||||
|
||||
STR_CAN_T_SELL_DESTROYED_VEHICLE :{WHITE}Impossível vender veículo destruído...
|
||||
STR_CAN_T_REFIT_DESTROYED_VEHICLE :{WHITE}Impossível adptar veículo destruído...
|
||||
@@ -2819,7 +2832,7 @@ STR_9009_CAN_T_BUILD_ROAD_VEHICLE :{WHITE}Impossí
|
||||
STR_900C_DETAILS :{WHITE}{VEHICLE} (Detalhes)
|
||||
STR_900D_AGE_RUNNING_COST_YR :{BLACK}Idade: {LTBLUE}{STRING}{BLACK} Custo de circulação: {LTBLUE}{CURRENCY}/ano
|
||||
STR_900E_MAX_SPEED :{BLACK}Velocidade Máx.: {LTBLUE}{VELOCITY}
|
||||
STR_900F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucros deste ano: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
|
||||
STR_900F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucro anual: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
|
||||
STR_9010_RELIABILITY_BREAKDOWNS :{BLACK}Confiabilidade: {LTBLUE}{COMMA}% {BLACK}Quebras desde a última manutenção: {LTBLUE}{COMMA}
|
||||
STR_9011_BUILT_VALUE :{LTBLUE}{ENGINE}{BLACK} Construído: {LTBLUE}{NUM}{BLACK} Valor: {LTBLUE}{CURRENCY}
|
||||
STR_9012_CAPACITY :{BLACK}Capacidade: {LTBLUE}{CARGO}
|
||||
@@ -2827,8 +2840,8 @@ STR_9013_MUST_BE_STOPPED_INSIDE :{WHITE}...deve
|
||||
STR_9014_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Impossível vender automóvel...
|
||||
STR_9015_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Impossível iniciar/parar automóvel...
|
||||
STR_9016_ROAD_VEHICLE_IS_WAITING :{WHITE}Automóvel {COMMA} está aguardando na garagem
|
||||
STR_HEADING_FOR_ROAD_DEPOT :{ORANGE}Dirigindo-se à garagem de {TOWN}
|
||||
STR_HEADING_FOR_ROAD_DEPOT_VEL :{ORANGE}Dirigindo-se à garagem de {TOWN}, {VELOCITY}
|
||||
STR_HEADING_FOR_ROAD_DEPOT :{ORANGE}Indo para a garagem de {TOWN}
|
||||
STR_HEADING_FOR_ROAD_DEPOT_VEL :{ORANGE}Indo para a garagem de {TOWN}, {VELOCITY}
|
||||
STR_HEADING_FOR_ROAD_DEPOT_SERVICE :{LTBLUE}Manutenção na garagem de {TOWN}
|
||||
STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL :{LTBLUE}Manutenção na garagem de {TOWN}, {VELOCITY}
|
||||
STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT :{WHITE}Impossível enviar o veículo para a garagem...
|
||||
@@ -2895,15 +2908,15 @@ STR_980F :{WHITE}{VEHICLE
|
||||
STR_9811_DETAILS :{WHITE}{VEHICLE} (Detalhes)
|
||||
STR_9812_AGE_RUNNING_COST_YR :{BLACK}Idade: {LTBLUE}{STRING}{BLACK} Custo de circulação: {LTBLUE}{CURRENCY}/ano
|
||||
STR_9813_MAX_SPEED :{BLACK}Velocidade Máx.: {LTBLUE}{VELOCITY}
|
||||
STR_9814_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucros deste ano: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
|
||||
STR_9814_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucro anual: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
|
||||
STR_9815_RELIABILITY_BREAKDOWNS :{BLACK}Confiabilidade: {LTBLUE}{COMMA}% {BLACK}Quebras desde a última manutenção: {LTBLUE}{COMMA}
|
||||
STR_9816_BUILT_VALUE :{LTBLUE}{ENGINE}{BLACK} Construído: {LTBLUE}{NUM}{BLACK} Valor: {LTBLUE}{CURRENCY}
|
||||
STR_9817_CAPACITY :{BLACK}Capacidade: {LTBLUE}{CARGO}
|
||||
STR_9818_CAN_T_STOP_START_SHIP :{WHITE}Impossível iniciar/parar embarcação...
|
||||
STR_9819_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Impossível enviar embarcação para o depósito...
|
||||
STR_981A_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Incapaz de encontrar depósito local
|
||||
STR_HEADING_FOR_SHIP_DEPOT :{ORANGE}Dirigindo-se ao depósito naval de {TOWN}
|
||||
STR_HEADING_FOR_SHIP_DEPOT_VEL :{ORANGE}Dirigindo-se ao depósito naval {TOWN}, {VELOCITY}
|
||||
STR_HEADING_FOR_SHIP_DEPOT :{ORANGE}Indo para o depósito naval de {TOWN}
|
||||
STR_HEADING_FOR_SHIP_DEPOT_VEL :{ORANGE}Indo para o depósito naval {TOWN}, {VELOCITY}
|
||||
STR_HEADING_FOR_SHIP_DEPOT_SERVICE :{LTBLUE}Manutenção no depósito naval de {TOWN}
|
||||
STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL :{LTBLUE}Manutenção no depósito naval de {TOWN}, {VELOCITY}
|
||||
STR_981C_SHIP_IS_WAITING_IN_DEPOT :{WHITE}Embarcação {COMMA} está aguardando no depósito naval
|
||||
@@ -2963,12 +2976,12 @@ STR_A00B_ORDERS :{WHITE}{VEHICLE
|
||||
STR_A00C_DETAILS :{WHITE}{VEHICLE} (Detalhes)
|
||||
STR_A00D_AGE_RUNNING_COST_YR :{BLACK}Idade: {LTBLUE}{STRING}{BLACK} Custo de circulação: {LTBLUE}{CURRENCY}/ano
|
||||
STR_A00E_MAX_SPEED :{BLACK}Velocidade Máx.: {LTBLUE}{VELOCITY}
|
||||
STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucros deste ano: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
|
||||
STR_A00F_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Lucro anual: {LTBLUE}{CURRENCY} (último ano: {CURRENCY})
|
||||
STR_A010_RELIABILITY_BREAKDOWNS :{BLACK}Confiabilidade: {LTBLUE}{COMMA}% {BLACK}Quebras desde a última manutenção: {LTBLUE}{COMMA}
|
||||
STR_A011_BUILT_VALUE :{LTBLUE}{ENGINE}{BLACK} Construído: {LTBLUE}{NUM}{BLACK} Valor: {LTBLUE}{CURRENCY}
|
||||
STR_A012_CAN_T_SEND_AIRCRAFT_TO :{WHITE}Impossível enviar aeronave para o hangar...
|
||||
STR_HEADING_FOR_HANGAR :{ORANGE}Dirigindo-se ao hangar de {STATION}
|
||||
STR_HEADING_FOR_HANGAR_VEL :{ORANGE}Dirigindo-se ao hangar de {STATION}, {VELOCITY}
|
||||
STR_HEADING_FOR_HANGAR :{ORANGE}Indo para o hangar de {STATION}
|
||||
STR_HEADING_FOR_HANGAR_VEL :{ORANGE}Indo para o hangar de {STATION}, {VELOCITY}
|
||||
STR_HEADING_FOR_HANGAR_SERVICE :{LTBLUE}Manutenção no Hangar de {STATION}
|
||||
STR_HEADING_FOR_HANGAR_SERVICE_VEL :{LTBLUE}Manutenção no Hangar de {STATION}, {VELOCITY}
|
||||
STR_A014_AIRCRAFT_IS_WAITING_IN :{WHITE}Aeronave {COMMA} está aguardando no hangar
|
||||
@@ -3026,7 +3039,7 @@ STR_B001_ROAD_VEHICLE_DESTROYED :{BLACK}{BIGFONT
|
||||
STR_B002_OIL_REFINERY_EXPLOSION :{BLACK}{BIGFONT}Explosão na refinaria de petróleo em {TOWN}!
|
||||
STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS :{BLACK}{BIGFONT}Fábrica destruída em circunstâncias suspeitas em {TOWN}!
|
||||
STR_B004_UFO_LANDS_NEAR :{BLACK}{BIGFONT}OVNI pousa próximo a {TOWN}!
|
||||
STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Afundamento de mina de carvão deixa um rasto de destruição em {TOWN}!
|
||||
STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Afundamento da mina de carvão deixa um rasto de destruição em {TOWN}!
|
||||
STR_B006_FLOOD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Inundações!{}Pelo menos {COMMA} perdidos ou mortos após terríveis inundações!
|
||||
|
||||
STR_BRIBE_FAILED :{WHITE}A sua tentativa de suborno foi
|
||||
@@ -3168,7 +3181,7 @@ STR_DEPOT_AUTOREPLACE_AIRCRAFT_TIP :{BLACK}Autosubs
|
||||
STR_VEHICLE_LIST_TRAIN_DEPOT :{BLACK}{STRING} - {COMMA} Tre{P m ns}
|
||||
STR_VEHICLE_LIST_ROADVEH_DEPOT :{BLACK}{STRING} - {COMMA} Automóve{P l is}
|
||||
STR_VEHICLE_LIST_SHIP_DEPOT :{BLACK}{STRING} - {COMMA} Embarcaç{P ão ões}
|
||||
STR_VEHICLE_LIST_AIRCRAFT_DEPOT :{BLACK}{STRING} - {COMMA} Aeronave
|
||||
STR_VEHICLE_LIST_AIRCRAFT_DEPOT :{BLACK}{STRING} - {COMMA} Aeronave{P "" s}
|
||||
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Substituir {STRING}
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Iniciar Substituição
|
||||
@@ -3344,6 +3357,7 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Alternar
|
||||
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Alternar transparência para construções como estações, depósitos, pontos de controle e eletrificação da ferrovia
|
||||
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Alternar transparência para pontes
|
||||
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Alternar transparência para estruturas como faróis e antenas, talvez no futuro para efeitos visuais
|
||||
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Alternar transparência para catenária. CTRL+click para travar.
|
||||
STR_TRANSPARENT_LOADING_DESC :{BLACK}Altera transparência para os indicadores de carga
|
||||
|
||||
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
|
||||
@@ -3358,20 +3372,20 @@ STR_GROUP_NAME_FORMAT :Agrupar {COMMA}
|
||||
STR_GROUP_TINY_NAME :{TINYFONT}{GROUP}
|
||||
STR_GROUP_ALL_TRAINS :Todos os trens
|
||||
STR_GROUP_ALL_ROADS :Todos os automóveis
|
||||
STR_GROUP_ALL_SHIPS :Todos os navios
|
||||
STR_GROUP_ALL_SHIPS :Todas as embarcações
|
||||
STR_GROUP_ALL_AIRCRAFTS :Todas as aeronaves
|
||||
STR_GROUP_DEFAULT_TRAINS :Trens sem grupo
|
||||
STR_GROUP_DEFAULT_ROADS :Automóveis sem grupo
|
||||
STR_GROUP_DEFAULT_SHIPS :Navios sem grupo
|
||||
STR_GROUP_DEFAULT_SHIPS :Embarcações sem grupo
|
||||
STR_GROUP_DEFAULT_AIRCRAFTS :Aeronaves sem grupo
|
||||
STR_GROUP_TINY_NUM :{TINYFONT}{COMMA}
|
||||
STR_GROUP_ADD_SHARED_VEHICLE :Adicionar veículos compartilhados
|
||||
STR_GROUP_REMOVE_ALL_VEHICLES :Remover todos os veículos
|
||||
|
||||
STR_GROUP_TRAINS_CAPTION :{WHITE}{GROUP} - {COMMA} Trem{P "" s}
|
||||
STR_GROUP_ROADVEH_CAPTION :{WHITE}{GROUP} - {COMMA} Automóvel{P "" s}
|
||||
STR_GROUP_SHIPS_CAPTION :{WHITE}{GROUP} - {COMMA} Navio{P "" s}
|
||||
STR_GROUP_AIRCRAFTS_CAPTION :{WHITE}{GROUP} - {COMMA} Aeronave
|
||||
STR_GROUP_TRAINS_CAPTION :{WHITE}{GROUP} - {COMMA} Tre{P m ns}
|
||||
STR_GROUP_ROADVEH_CAPTION :{WHITE}{GROUP} - {COMMA} Automóve{P l is}
|
||||
STR_GROUP_SHIPS_CAPTION :{WHITE}{GROUP} - {COMMA} Embarcaç{P ão ões}
|
||||
STR_GROUP_AIRCRAFTS_CAPTION :{WHITE}{GROUP} - {COMMA} Aeronave{P "" s}
|
||||
STR_GROUP_RENAME_CAPTION :{BLACK}Renomear um grupo
|
||||
STR_GROUP_REPLACE_CAPTION :{WHITE}Substituir Veículos de "{GROUP}"
|
||||
|
||||
|
||||
@@ -1206,6 +1206,19 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Промяна стойноста на настройка
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Някои от стойностите за интервал(и) на сервиз са несъвместими с избраните настройки! 5-90% и 30-800 са валидни стойности
|
||||
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Пътенамирач за влакове: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(Не е препоръчано)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Препоръчано)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Пътенамирач за пътни превозни средства: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Оригинал {RED}(Не е препоръчано)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(Препоръчано)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Пътенамирач за кораби: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Оригинал {BLUE}(Препоръчано)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(Не е препоръчано)
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :умерен климат
|
||||
STR_SUB_ARCTIC_LANDSCAPE :Арктичен климат
|
||||
STR_SUB_TROPICAL_LANDSCAPE :Тропически климат
|
||||
|
||||
@@ -1204,6 +1204,19 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Canvia el valor de l'adjustament
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Alguns o tots els intervals de manteniment següents són incompatibles amb el valor triat! 5-90% i 30-800 dies són els vàlids
|
||||
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Cerca de rutes per trens: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(No recomanat)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Recomanat)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Cerca de rutes per vehicles: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Original {RED}(No recomanat)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(Recomanat)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Cerca de rutes per vaixells: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Original {BLUE}(Recomanat)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(Not recomanat)
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :paisatge temperat
|
||||
STR_SUB_ARCTIC_LANDSCAPE :paisatge subàrtic
|
||||
STR_SUB_TROPICAL_LANDSCAPE :paisatge subtropical
|
||||
@@ -3340,6 +3353,7 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Activa/D
|
||||
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Activa/Desactiva transparència dels edificis com ara estacions, cotxeres, punts de trobada i catenàries
|
||||
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Activa/Desactiva transparència dels ponts
|
||||
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Activa/Desactiva transparència de les estructures com ara fars i antenes
|
||||
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Commuta la transparència de la catenària. CTRL+clic per bloquejar.
|
||||
STR_TRANSPARENT_LOADING_DESC :{BLACK}Activa/Desactiva la transparència pels indicadors de carregament
|
||||
|
||||
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
|
||||
|
||||
+22
-8
@@ -1262,6 +1262,19 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Změnit hodnotu nastavení
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Některé nebo všechny základní intervaly servisů níže nesouhlasí s vybraným nastavením! 5-90 % nebo 30-800 dní jsou platné hodnoty
|
||||
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Hledač cesty pro vlaky: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(nedoporučuje se)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(doporučený)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Hledač cesty pro silniční vozidla: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :původní {RED}(nedoporučuje se)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(doporučený)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Hledač cesty pro lodě: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :původní {BLUE}(doporučený)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(nedoporučuje se)
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :krajina mírného pásma
|
||||
STR_SUB_ARCTIC_LANDSCAPE :subarktická krajina
|
||||
STR_SUB_TROPICAL_LANDSCAPE :subtropická kraina
|
||||
@@ -3397,14 +3410,15 @@ STR_DRIVE_THROUGH_ERROR_ON_TOWN_ROAD :{WHITE}... tato
|
||||
STR_DRIVE_THROUGH_ERROR_DIRECTION :{WHITE}... silnice je otočena jiným směrem
|
||||
|
||||
STR_TRANSPARENCY_TOOLB :{WHITE}Nastavení průhlednosti
|
||||
STR_TRANSPARENT_SIGNS_DESC :{BLACK}Změna průhlednosti jmen stanic
|
||||
STR_TRANSPARENT_TREES_DESC :{BLACK}Změna průhlednosti stromů
|
||||
STR_TRANSPARENT_HOUSES_DESC :{BLACK}Změna průhlednosti domů
|
||||
STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Změna průhlednosti továren
|
||||
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Změna průhlednosti postavitelných objektů, jako stanic, kontrolních bodů a vedení
|
||||
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Změna průhlednosti mostů
|
||||
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Změna průhlednosti staveb jako majáků, vysílačů a doplňků (v budoucnosti)
|
||||
STR_TRANSPARENT_LOADING_DESC :{BLACK}Přepnout průhlednost pro ukazatele naložení
|
||||
STR_TRANSPARENT_SIGNS_DESC :{BLACK}Změna průhlednosti jmen stanic. Nastavení se zamkne CTRL+kliknutím.
|
||||
STR_TRANSPARENT_TREES_DESC :{BLACK}Změna průhlednosti stromů. Nastavení se zamkne CTRL+kliknutím.
|
||||
STR_TRANSPARENT_HOUSES_DESC :{BLACK}Změna průhlednosti domů. Nastavení se zamkne CTRL+kliknutím.
|
||||
STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Změna průhlednosti továren. Nastavení se zamkne CTRL+kliknutím.
|
||||
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Změna průhlednosti postavitelných objektů, jako stanic, dep a kontrolních bodů. Nastavení se zamkne CTRL+kliknutím.
|
||||
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Změna průhlednosti mostů. Nastavení se zamkne CTRL+kliknutím.
|
||||
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Změna průhlednosti staveb jako majáků, vysílačů a doplňků (v budoucnosti). Nastavení se zamkne CTRL+kliknutím.
|
||||
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Změna průhlednosti elektrifikace. Nastavení se zamkne CTRL+kliknutím.
|
||||
STR_TRANSPARENT_LOADING_DESC :{BLACK}Přepnout průhlednost pro ukazatele naložení. Nastavení se zamkne CTRL+kliknutím.
|
||||
|
||||
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
|
||||
STR_PERCENT_UP :{WHITE}{NUM}%{UPARROW}
|
||||
|
||||
@@ -1204,6 +1204,19 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Verander waarde
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Sommige of alle van de standaard reparatie interval(len) hier onder zijn ongeldig met gekozen instelling! 5-90% en 30-800 dagen zijn geldig
|
||||
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Routezoeker voor treinen: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(Niet aanbevolen)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Aanbevolen)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Routezoeker voor voertuigen: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Original {RED}(Niet aanbevolen)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(Recommended)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Routezoeker voor schepen: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Original {BLUE}(Aanbevolen)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(Niet aanbevolen)
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :gematigd landschap
|
||||
STR_SUB_ARCTIC_LANDSCAPE :subarctisch landschap
|
||||
STR_SUB_TROPICAL_LANDSCAPE :subtropisch landschap
|
||||
@@ -3340,6 +3353,7 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Wissel d
|
||||
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Wissel doorzichtigheid voor gebouwen zoals stations, depots, waypoints en bovenleiding
|
||||
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Wissel doorzichtigheid voor bruggen
|
||||
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Wissel doorzichtigheid voor structuren zoals vuurtoren en antennes, in de toekomst misschien voor eyecandy
|
||||
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Doorzichtigheid voor bovenleiding. CTRL+klik voor onthouden.
|
||||
STR_TRANSPARENT_LOADING_DESC :{BLACK}Schakel tussen doorzichtigheid voor laad indicatoren
|
||||
|
||||
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
|
||||
|
||||
@@ -1050,6 +1050,7 @@ STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Allow b
|
||||
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Allow sending money to other companies: {ORANGE}{STRING1}
|
||||
STR_CONFIG_PATCHES_NONUNIFORM_STATIONS :{LTBLUE}Nonuniform stations: {ORANGE}{STRING1}
|
||||
STR_CONFIG_PATCHES_FREIGHT_TRAINS :{LTBLUE}Weight multiplier for freight to simulate heavy trains: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PLANE_SPEED :{LTBLUE}Plane speed factor: {ORANGE}1 / {STRING1}
|
||||
STR_CONFIG_PATCHES_STOP_ON_TOWN_ROAD :{LTBLUE}Allow drive-through road stops on town owned roads: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ADJACENT_STATIONS :{LTBLUE}Allow building adjacent stations: {ORANGE}{STRING}
|
||||
|
||||
@@ -1611,6 +1612,7 @@ STR_1004_TOO_HIGH :{WHITE}Too high
|
||||
STR_1005_NO_SUITABLE_RAILROAD_TRACK :{WHITE}No suitable railway track
|
||||
STR_1007_ALREADY_BUILT :{WHITE}...already built
|
||||
STR_1008_MUST_REMOVE_RAILROAD_TRACK :{WHITE}Must remove railway track first
|
||||
STR_ERR_CROSSING_ON_ONEWAY_ROAD :{WHITE}Road is one way or blocked
|
||||
STR_100A_RAILROAD_CONSTRUCTION :{WHITE}Railway Construction
|
||||
STR_TITLE_ELRAIL_CONSTRUCTION :{WHITE}Electrified Railway Construction
|
||||
STR_100B_MONORAIL_CONSTRUCTION :{WHITE}Monorail Construction
|
||||
|
||||
+17
-3
@@ -754,7 +754,7 @@ STR_0246_FACTORY :{BLACK}Vabrik
|
||||
STR_0247_STEEL_MILL :{BLACK}Terasetööstus
|
||||
STR_0248_FARM :{BLACK}Talu
|
||||
STR_0249_IRON_ORE_MINE :{BLACK}Rauamaagikaevandus
|
||||
STR_024A_OIL_WELLS :{BLACK}Naftapuurauk
|
||||
STR_024A_OIL_WELLS :{BLACK}Naftapuuraugud
|
||||
STR_024B_BANK :{BLACK}Pank
|
||||
STR_024C_PAPER_MILL :{BLACK}Paberitehas
|
||||
STR_024D_FOOD_PROCESSING_PLANT :{BLACK}Toidutöötlustehas
|
||||
@@ -1144,7 +1144,7 @@ STR_CONFIG_PATCHES_SIGNALSIDE :{LTBLUE}Paiguta
|
||||
STR_CONFIG_PATCHES_SHOWFINANCES :{LTBLUE}Aasta lõpus näidatakse rahavoogude aruannet: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_NEW_NONSTOP :{LTBLUE}TTDPatchiga ühilduv 'mittepeatumine': {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ROADVEH_QUEUE :{LTBLUE}Mootorsõidukite järjekorrad (koos mahueffektidega): {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Kursori ekraani serva viimisel keritakse vaadet: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_AUTOSCROLL :{LTBLUE}Kursoriga ekraaniserva puudutamisel keritakse vaadet: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_BRIBE :{LTBLUE}Luba kohalikule omavalitsusele altkäemaksu maksmine: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ALLOW_EXCLUSIVE :{LTBLUE}Luba eksklusiivseid veoõiguseid osta: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ALLOW_GIVE_MONEY :{LTBLUE}Luba teistele ettevõtetele raha saata: {ORANGE}{STRING}
|
||||
@@ -1262,7 +1262,7 @@ STR_CONFIG_PATCHES_ENDING_YEAR :{LTBLUE}Mäng l
|
||||
STR_CONFIG_PATCHES_SMOOTH_ECONOMY :{LTBLUE}Luba sujuv majandus (väiksemad muutused)
|
||||
STR_CONFIG_PATCHES_ALLOW_SHARES :{LTBLUE}Luba teiste ettevõtete aktsiate ostmine
|
||||
STR_CONFIG_PATCHES_DRAG_SIGNALS_DENSITY :{LTBLUE}Venitades rajatavate signaalide paigutustihedus: {ORANGE}{STRING} ühik(ut)
|
||||
STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Ehita ise semaforid enne: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_SEMAPHORE_BUILD_BEFORE_DATE :{LTBLUE}Semafore ehitatakse enne: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_ENABLE_SIGNAL_GUI :{LTBLUE}Näita signalisatsiooni GUI-d: {ORANGE}{STRING}
|
||||
|
||||
STR_CONFIG_PATCHES_TOWN_LAYOUT_INVALID :{WHITE}Stsenaariumiredaktor ei tunnista "ilma teedeta" linnaplaneeringut
|
||||
@@ -1304,6 +1304,19 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Muuda seadete väärtusi
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Mõni või kõik vaikimisi hooldusperioodid on kõlbmatud! Lubatud on 5-90% või 30-800 päeva
|
||||
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Rongide rajaleidja: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(ebasoovitatav)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(soovitatav)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Maanteesõidukite rajaleidja: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Algne {RED}(ebasoovitatav)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(soovitatav)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Laevade rajaleidja: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Algne {BLUE}(soovitatav)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(ebasoovitatav)
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :Parasvöötme maastik
|
||||
STR_SUB_ARCTIC_LANDSCAPE :Arktiline maastik
|
||||
STR_SUB_TROPICAL_LANDSCAPE :Troopiline maastik
|
||||
@@ -3440,6 +3453,7 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Vaheta t
|
||||
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Vaheta läbipaistvust ehitistel nagu: jaamad, depood, vahepunktid ja elektriliinid
|
||||
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Vaheta sildade läbipaistvust
|
||||
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Vaheta läbipaistvust rajatistel, nagu: majakad, antennid ja võimalik, et tulevikus ka silmailu
|
||||
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Õhuliinide läbipaistvuse vahetamine. CTRL-klahvi toel klõpsamine lukustab.
|
||||
STR_TRANSPARENT_LOADING_DESC :{BLACK}Vaheta laadimisnäidikute läbipaistvust
|
||||
|
||||
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
|
||||
|
||||
+34
-20
@@ -1205,6 +1205,19 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Changer valeur du paramètre
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Un ou plusieurs intervalles de service par défaut ci-dessous sont incompatibles avec le paramètre choisi! 5-90% et 30-800 jours sont valides
|
||||
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Recherche de chemin des trains: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(Non recommandé)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Recommandé)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Recherche de chemin des véhicules routiers: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Original {RED}(Not recommandé)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(Recommandé)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Recherche de chemin des navires: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Original {BLUE}(Recommandé)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(Not recommandé)
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :environnement 'Tempéré'
|
||||
STR_SUB_ARCTIC_LANDSCAPE :environnement 'Arctique'
|
||||
STR_SUB_TROPICAL_LANDSCAPE :environnement 'Tropical'
|
||||
@@ -1291,8 +1304,8 @@ STR_SELECT_STATION_TYPE_TIP :{BLACK}Choisir
|
||||
STR_FAST_FORWARD :{BLACK}Avance rapide du jeu
|
||||
STR_MESSAGE_HISTORY :{WHITE}Historique des Messages
|
||||
STR_MESSAGE_HISTORY_TIP :{BLACK}Liste des messages récents
|
||||
STR_MESSAGES_DISABLE_ALL :{BLACK}Tous sommaires
|
||||
STR_MESSAGES_ENABLE_ALL :{BLACK}Tous complets
|
||||
STR_MESSAGES_DISABLE_ALL :{BLACK}Désactiver tout
|
||||
STR_MESSAGES_ENABLE_ALL :{BLACK}Activer tout
|
||||
|
||||
STR_CONSTRUCT_COAL_MINE_TIP :{BLACK}Construire une mine de charbon
|
||||
STR_CONSTRUCT_FOREST_TIP :{BLACK}Planter une forêt
|
||||
@@ -2678,11 +2691,11 @@ STR_ALL_AVAIL_RAIL_VEHICLES :{WHITE}Véhicul
|
||||
|
||||
STR_881F_BUILD_VEHICLE :{BLACK}Construire
|
||||
STR_CLONE_ROAD_VEHICLE :{BLACK}Copier Véhicule
|
||||
STR_CLONE_ROAD_VEHICLE_INFO :{BLACK}Effectuer la copie d'un véhicule routier. Ctrl-clic partagera les ordres
|
||||
STR_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Effectuer la copie d'un véhicule routier. Cliquer ici puis sur un véhicule routier dans ou hors d'un dépôt. Ctrl-clic partagera les ordres
|
||||
STR_CLONE_ROAD_VEHICLE_INFO :{BLACK}Effectuer la copie d'un véhicule routier. Ctrl-clic pour partager les ordres
|
||||
STR_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Effectuer la copie d'un véhicule routier. Cliquer ici puis sur un véhicule routier dans ou hors d'un dépôt. Ctrl-clic pour partager les ordres
|
||||
STR_CLONE_TRAIN :{BLACK}Copier Train
|
||||
STR_CLONE_TRAIN_INFO :{BLACK}Effectuer la copie d'un train et ses wagons. Ctrl-clic partagera les ordres
|
||||
STR_CLONE_TRAIN_DEPOT_INFO :{BLACK}Effectuer la copie d'un train et ses wagons. Cliquer ici puis sur un train dans ou hors d'un dépôt. Ctrl-clic partagera les ordres
|
||||
STR_CLONE_TRAIN_INFO :{BLACK}Effectuer la copie d'un train et ses wagons. Ctrl-clic pour partager les ordres
|
||||
STR_CLONE_TRAIN_DEPOT_INFO :{BLACK}Effectuer la copie d'un train et ses wagons. Cliquer ici puis sur un train dans ou hors d'un dépôt. Ctrl-clic pour partager les ordres
|
||||
STR_8820_RENAME :{BLACK}Renommer
|
||||
STR_8823_SKIP :{BLACK}Suivant
|
||||
STR_8824_DELETE :{BLACK}Supprimer
|
||||
@@ -2691,7 +2704,7 @@ STR_8826_GO_TO :{BLACK}Aller à
|
||||
STR_8827_FULL_LOAD :{BLACK}Charger
|
||||
STR_8828_UNLOAD :{BLACK}Décharger
|
||||
STR_REFIT :{BLACK}Réaménager
|
||||
STR_REFIT_TIP :{BLACK}Choisir pour quelle cargaison réaménager pour cet ordre. Ctrl-clic pour retirer l'instruction de réaménagement
|
||||
STR_REFIT_TIP :{BLACK}Choisir pour quelle cargaison réaménager pour cet ordre. Ctrl-clic pour retirer l'instruction de réaménagement
|
||||
STR_REFIT_ORDER :(Réaménager pour {STRING})
|
||||
STR_TIMETABLE_VIEW :{BLACK}Horaire
|
||||
STR_TIMETABLE_VIEW_TOOLTIP :{BLACK}Basculer vers la vue horaire
|
||||
@@ -2744,7 +2757,7 @@ STR_884F_SHOW_DETAILS_OF_CARGO_CARRIED :{BLACK}Afficher
|
||||
STR_8850_SHOW_DETAILS_OF_TRAIN_VEHICLES :{BLACK}Afficher des informations sur les wagons
|
||||
STR_8851_SHOW_CAPACITIES_OF_EACH :{BLACK}Afficher la capacité de chaque wagon
|
||||
STR_SHOW_TOTAL_CARGO :{BLACK}Afficher la capacité totale du train, par type de cargaison
|
||||
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Liste des ordres - Cliquer sur un ordre pour le sélectionner. Cliquer avec Ctrl déplace la vue sur la station
|
||||
STR_8852_ORDERS_LIST_CLICK_ON_ORDER :{BLACK}Liste des ordres - Cliquer sur un ordre pour le sélectionner. Ctrl-clic pour déplacer la vue sur la station
|
||||
STR_8853_SKIP_THE_CURRENT_ORDER :{BLACK}Sauter l'ordre courant, et enchaîner sur le suivant. Ctrl-clic pour sauter l'ordre sélectionné
|
||||
STR_8854_DELETE_THE_HIGHLIGHTED :{BLACK}Supprime l'ordre sélectionné
|
||||
STR_8855_MAKE_THE_HIGHLIGHTED_ORDER :{BLACK}Transformer l'ordre sélectionné en Sans-Arrêt
|
||||
@@ -2882,8 +2895,8 @@ STR_9805_SHIPS :{WHITE}{COMPANY
|
||||
STR_9808_NEW_SHIPS :{WHITE}Nouveaux navires
|
||||
STR_9809_BUILD_SHIP :{BLACK}Construire navire
|
||||
STR_CLONE_SHIP :{BLACK}Copier Navire
|
||||
STR_CLONE_SHIP_INFO :{BLACK}Effectuer la copie d'un navire. Ctrl-clic partagera les ordres
|
||||
STR_CLONE_SHIP_DEPOT_INFO :{BLACK}Effectuer la copie d'un navire. Cliquer ici puis sur un navire dans ou hors d'un dépôt. Ctrl-clic partagera les ordres
|
||||
STR_CLONE_SHIP_INFO :{BLACK}Effectuer la copie d'un navire. Ctrl-clic pour partager les ordres
|
||||
STR_CLONE_SHIP_DEPOT_INFO :{BLACK}Effectuer la copie d'un navire. Cliquer ici puis sur un navire dans ou hors d'un dépôt. Ctrl-clic pour partager les ordres
|
||||
STR_980B_SHIP_MUST_BE_STOPPED_IN :{WHITE}Le navire doit être arrêté au dépôt
|
||||
STR_980C_CAN_T_SELL_SHIP :{WHITE}Impossible de vendre navire...
|
||||
STR_980D_CAN_T_BUILD_SHIP :{WHITE}Impossible de construire navire...
|
||||
@@ -2949,8 +2962,8 @@ STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Impossib
|
||||
STR_A002_AIRCRAFT_HANGAR :{WHITE}Hangar à {STATION}
|
||||
STR_A003_NEW_AIRCRAFT :{BLACK}Nouvel aéronef
|
||||
STR_CLONE_AIRCRAFT :{BLACK}Copier aéronef
|
||||
STR_CLONE_AIRCRAFT_INFO :{BLACK}Effectuer une copie de l'aéronef. Ctrl-clic partagera les ordres
|
||||
STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Effectuer la copie d'un aéronef. Cliquer ici puis sur un aéronef dans ou hors d'un hangar. Ctrl-clic partagera les ordres
|
||||
STR_CLONE_AIRCRAFT_INFO :{BLACK}Effectuer une copie de l'aéronef. Ctrl-clic pour partager les ordres
|
||||
STR_CLONE_AIRCRAFT_INFO_HANGAR_WINDOW :{BLACK}Effectuer la copie d'un aéronef. Cliquer ici puis sur un aéronef dans ou hors d'un hangar. Ctrl-clic pour partager les ordres
|
||||
STR_A005_NEW_AIRCRAFT :{WHITE}Nouvel Aéronef
|
||||
STR_A006_BUILD_AIRCRAFT :{BLACK}Construire aéronef
|
||||
STR_A008_CAN_T_BUILD_AIRCRAFT :{WHITE}Impossible de construire l'aéronef...
|
||||
@@ -3334,14 +3347,15 @@ STR_DRIVE_THROUGH_ERROR_ON_TOWN_ROAD :{WHITE}...cette
|
||||
STR_DRIVE_THROUGH_ERROR_DIRECTION :{WHITE}...mauvaise orientation de la route
|
||||
|
||||
STR_TRANSPARENCY_TOOLB :{WHITE}Options de transparence
|
||||
STR_TRANSPARENT_SIGNS_DESC :{BLACK}Transparence des noms de station
|
||||
STR_TRANSPARENT_TREES_DESC :{BLACK}Transparence des arbres
|
||||
STR_TRANSPARENT_HOUSES_DESC :{BLACK}Transparence des maisons
|
||||
STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Transparence des industries
|
||||
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Transparence des éléments constructibles tels que stations, dépôts, points de contrôle et caténaire
|
||||
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Transparence des ponts
|
||||
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Transparence des structures telles que phares et antennes
|
||||
STR_TRANSPARENT_LOADING_DESC :{BLACK}Basculer la transparence pour les indicateurs de chargement
|
||||
STR_TRANSPARENT_SIGNS_DESC :{BLACK}Transparence des noms de station. Ctrl-clic pour vérouiller.
|
||||
STR_TRANSPARENT_TREES_DESC :{BLACK}Transparence des arbres. Ctrl-clic pour vérouiller.
|
||||
STR_TRANSPARENT_HOUSES_DESC :{BLACK}Transparence des maisons. Ctrl-clic pour vérouiller.
|
||||
STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Transparence des industries. Ctrl-clic pour vérouiller.
|
||||
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Transparence des éléments constructibles tels que stations, dépôts, points de contrôle et caténaire. Ctrl-clic pour vérouiller.
|
||||
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Transparence des ponts. Ctrl-clic pour vérouiller.
|
||||
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Transparence des structures telles que phares et antennes. Ctrl-clic pour vérouiller.
|
||||
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Transparence des caténaires. Ctrl-clic pour vérouiller.
|
||||
STR_TRANSPARENT_LOADING_DESC :{BLACK}Transparence pour les indicateurs de chargement. Ctrl-clic pour vérouiller.
|
||||
|
||||
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
|
||||
STR_PERCENT_UP :{WHITE}{NUM}%{UPARROW}
|
||||
|
||||
@@ -1269,6 +1269,19 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Válassz beállítási értéket
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}A lenti alap szervíz intervallum beállítások némelyike/mindegyike inkompatibilis a választott beállítással! Csak 5-90% és 30-800 napig elfogadható.
|
||||
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Útvonalkereső vonatokhoz: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(Ellenjavallt)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Ajánlott)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Útvonalkereső közúti járművekhez: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Eredeti {RED}(Ellenjavallt)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(Ajánlott)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Útvonalkereső hajókhoz: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Eredeti {BLUE}(Ajánlott)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(Ellenjavallt)
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :mérsékelt táj
|
||||
STR_SUB_ARCTIC_LANDSCAPE :sarkköri táj
|
||||
STR_SUB_TROPICAL_LANDSCAPE :trópusi táj
|
||||
@@ -3442,6 +3455,7 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Átkapcs
|
||||
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Átkapcsolni az építhető elemekre (állomások, depók, útipontok és felsővezeték)
|
||||
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Átkapcsolni a hidakra
|
||||
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Átkapcsolni egyéb épületekre, mint világítótorony és antennák (esetleg egyéb jövőbeni díszek)
|
||||
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Átlátszóság kapcsolása a vezetékekhez, CTRL+click a zároláshoz.
|
||||
STR_TRANSPARENT_LOADING_DESC :{BLACK}Átlátszó betöltésjelző kapcsolása (ki/be)
|
||||
|
||||
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
|
||||
|
||||
+22
-8
@@ -1206,6 +1206,19 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Cambia impostazione
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Alcuni degli intervalli sottostanti sono incompatibili con l'impostazione scelta! Valori ammessi: 5-90% e 30-800 giorni
|
||||
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Pathfinder per i treni: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(non raccomandato)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(raccomandato)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Pathfinder per gli automezzi: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Originale {RED}(non raccomandato)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(raccomandato)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Pathfinder per le navi: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Originale {BLUE}(raccomandato)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(non raccomandato)
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :Paesaggio 'temperato'
|
||||
STR_SUB_ARCTIC_LANDSCAPE :Paesaggio 'sub-artico'
|
||||
STR_SUB_TROPICAL_LANDSCAPE :Paesaggio 'sub-tropicale'
|
||||
@@ -3335,14 +3348,15 @@ STR_DRIVE_THROUGH_ERROR_ON_TOWN_ROAD :{WHITE}...quest
|
||||
STR_DRIVE_THROUGH_ERROR_DIRECTION :{WHITE}...strada rivolta nella direzione sbagliata
|
||||
|
||||
STR_TRANSPARENCY_TOOLB :{WHITE}Opzioni trasparenza
|
||||
STR_TRANSPARENT_SIGNS_DESC :{BLACK}Attiva/disattiva la trasparenza dei nomi delle stazioni
|
||||
STR_TRANSPARENT_TREES_DESC :{BLACK}Attiva/disattiva la trasparenza degli alberi
|
||||
STR_TRANSPARENT_HOUSES_DESC :{BLACK}Attiva/disattiva la trasparenza degli edifici
|
||||
STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Attiva/disattiva la trasparenza delle industrie
|
||||
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Attiva/disattiva la trasparenza delle strutture edificabili come stazioni, depositi, waypoint e catenarie
|
||||
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Attiva/disattiva la trasparenza dei ponti
|
||||
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Attiva/disattiva la trasparenza di strutture come fari, antenne e altri futuri oggetti decorativi
|
||||
STR_TRANSPARENT_LOADING_DESC :{BLACK}Attiva/disattiva la trasparenza degli indicatori di caricamento
|
||||
STR_TRANSPARENT_SIGNS_DESC :{BLACK}Attiva/disattiva la trasparenza dei nomi delle stazioni. CTRL+clic per bloccare.
|
||||
STR_TRANSPARENT_TREES_DESC :{BLACK}Attiva/disattiva la trasparenza degli alberi. CTRL+clic per bloccare.
|
||||
STR_TRANSPARENT_HOUSES_DESC :{BLACK}Attiva/disattiva la trasparenza degli edifici. CTRL+clic per bloccare.
|
||||
STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Attiva/disattiva la trasparenza delle industrie. CTRL+clic per bloccare.
|
||||
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Attiva/disattiva la trasparenza delle strutture edificabili come stazioni, depositi e waypoint. CTRL+clic per bloccare.
|
||||
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Attiva/disattiva la trasparenza dei ponti. CTRL+clic per bloccare.
|
||||
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Attiva/disattiva la trasparenza di strutture come fari e antenne. CTRL+clic per bloccare.
|
||||
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Attiva/disattiva la trasparenza delle catenarie. CTRL+clic per bloccare.
|
||||
STR_TRANSPARENT_LOADING_DESC :{BLACK}Attiva/disattiva la trasparenza degli indicatori di caricamento. CTRL+clic per bloccare.
|
||||
|
||||
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
|
||||
STR_PERCENT_UP :{WHITE}{NUM}%{UPARROW}
|
||||
|
||||
@@ -1204,6 +1204,19 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}設定を変更します
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}以下のデフォルトの修理間隔は選択した設定に対応していません!5〜90%もしくは30〜800日が使用できます。
|
||||
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}電車の経路処理アルゴリズム:{ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP{RED}(すすめない)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF{BLUE}(おすすめ)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}道路車両の経路処理アルゴリズム:{ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :本来{RED}(すすめない)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF{BLUE}(おすすめ)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}船舶の経路処理アルゴリズム:{ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :本来{BLUE}(おすすめ)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF{RED}(すすめない)
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :温帯国
|
||||
STR_SUB_ARCTIC_LANDSCAPE :亜寒帯国
|
||||
STR_SUB_TROPICAL_LANDSCAPE :亜熱帯国
|
||||
@@ -3340,6 +3353,7 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}工業
|
||||
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}交通社所有の建物などの透明性を入/切
|
||||
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}橋の透明性を入/切
|
||||
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}灯台、送信機などの透明性を入/切
|
||||
STR_TRANSPARENT_CATENARY_DESC :{BLACK}懸垂索の透明度を入/切します。CTRL+クリックすると、ロックします。
|
||||
STR_TRANSPARENT_LOADING_DESC :{BLACK}積み降ろしの表示の透明性を切り替え
|
||||
|
||||
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
|
||||
|
||||
@@ -16,6 +16,7 @@ STR_EMPTY :
|
||||
STR_0007_FLAT_LAND_REQUIRED :{WHITE}평지가 필요합니다!
|
||||
STR_0008_WAITING :{BLACK}대기: {WHITE}{STRING}
|
||||
STR_0009 :{WHITE}{CARGO}
|
||||
STR_EN_ROUTE_FROM :{YELLOW}({1:STATION}에서 온 {0:SHORTCARGO})
|
||||
STR_000C_ACCEPTS :{BLACK}받음: {WHITE}
|
||||
STR_000D_ACCEPTS :{BLACK}받음: {GOLD}
|
||||
STR_000E :
|
||||
@@ -1204,6 +1205,19 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}설정값 변경
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}아래 기본 점검간격의 일부 혹은 전체가 선택된 설정과 맞지 않습니다. 5-90%와 30-800일이 사용 가능합니다.
|
||||
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}열차용 경로탐색: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(비추천)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(추천)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}차량을 위한 경로탐색: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :오리지널 {RED}(비추천)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(추천)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}선박을 위한 경로탐색: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :오리지널 {BLUE}(추천)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(비추천)
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :온대 기후
|
||||
STR_SUB_ARCTIC_LANDSCAPE :냉대 기후
|
||||
STR_SUB_TROPICAL_LANDSCAPE :열대 기후
|
||||
@@ -3340,6 +3354,7 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}산업
|
||||
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}정거장, 차량기지, 웨이포인트, 연결고리와 같은 건설 가능한 것들에 대한 투명 전환
|
||||
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}다리 투명 전환
|
||||
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}등대와 안테나와 같은 구조물 투명 전환
|
||||
STR_TRANSPARENT_CATENARY_DESC :{BLACK}케이블 보이기/숨기기. 고정하려면 CTRL+클릭하세요.
|
||||
STR_TRANSPARENT_LOADING_DESC :{BLACK}적재 정도 투명 전환
|
||||
|
||||
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
|
||||
|
||||
@@ -15,6 +15,7 @@ STR_EMPTY :
|
||||
STR_0007_FLAT_LAND_REQUIRED :{WHITE}É necessário terreno plano
|
||||
STR_0008_WAITING :{BLACK}Em espera: {WHITE}{STRING}
|
||||
STR_0009 :{WHITE}{CARGO}
|
||||
STR_EN_ROUTE_FROM :{YELLOW}({SHORTCARGO} em rota de {STATION})
|
||||
STR_000C_ACCEPTS :{BLACK}Aceita: {WHITE}
|
||||
STR_000D_ACCEPTS :{BLACK}Aceita: {GOLD}
|
||||
STR_000E :
|
||||
@@ -724,6 +725,7 @@ STR_028D_PLACE_LIGHTHOUSE :{BLACK}Colocar
|
||||
STR_028E_PLACE_TRANSMITTER :{BLACK}Colocar transmissor
|
||||
STR_028F_DEFINE_DESERT_AREA :{BLACK}Definir área de deserto.{}Manter a tecla CTRL pressionada para remover
|
||||
STR_CREATE_LAKE :{BLACK}Definir área de água.{}Construir um canal com a tecla CTRL numa área que não seja a do mar, senão inundar-se-iam as zonas circundantes
|
||||
STR_CREATE_RIVER :{BLACK}Colocar rios.
|
||||
STR_0290_DELETE :{BLACK}Apagar
|
||||
STR_0291_DELETE_THIS_TOWN_COMPLETELY :{BLACK}Apagar completamente esta cidade
|
||||
STR_0292_SAVE_SCENARIO :Guardar cenário
|
||||
@@ -1202,6 +1204,7 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Alterar valor
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Alguns ou todos os intervalo(s) de serviço predefinidos abaixo são incompatíveis com o valor escolhido! São válidos 5-90% e 30-800 dias
|
||||
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :Terreno temperado
|
||||
STR_SUB_ARCTIC_LANDSCAPE :terreno subárctico
|
||||
STR_SUB_TROPICAL_LANDSCAPE :terreno subtropical
|
||||
|
||||
@@ -1268,6 +1268,19 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Zmenit hodnotu nastavenia
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Niektore alebo vsetky implicitne servisne intervaly su nekompatibilne s vybranym nastavenim. 5-90% a 30-800 dni su platne.
|
||||
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Algoritmus hladania cesty pre vlaky: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(neodporúca sa)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(odporúca sa)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Algoritmus hladania cesty pre automobily: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :pôvodný {RED}(neodporúca sa)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(odporúca sa)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Algoritmus hladania cesty pre lode: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :pôvodný {BLUE}(odporúca sa)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(neodporúca sa)
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :krajina mierneho pasma
|
||||
STR_SUB_ARCTIC_LANDSCAPE :subarkticka krajina
|
||||
STR_SUB_TROPICAL_LANDSCAPE :subtropicka krajina
|
||||
@@ -3404,6 +3417,7 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Prepnút
|
||||
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Prepnút priehladnost staníc, garáží, tratí, ...
|
||||
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Prepnút priehladnost mostov
|
||||
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Prepnút priehladnost objektov ako sú majáky a antény
|
||||
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Prepnút priehladnost pre trakcné vedenie. CTRL+klik pre uzamknutie.
|
||||
STR_TRANSPARENT_LOADING_DESC :{BLACK}Prepnút priehladnost pre ukazovatele nakladania a vykladania
|
||||
|
||||
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
|
||||
|
||||
@@ -16,6 +16,7 @@ STR_EMPTY :
|
||||
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Potrebno je ravno zemljišče
|
||||
STR_0008_WAITING :{BLACK}Čaka: {WHITE}{STRING}
|
||||
STR_0009 :{WHITE}{CARGO}
|
||||
STR_EN_ROUTE_FROM :{YELLOW}({SHORTCARGO} na poti iz {STATION})
|
||||
STR_000C_ACCEPTS :{BLACK}Sprejema: {WHITE}
|
||||
STR_000D_ACCEPTS :{BLACK}Sprejema: {GOLD}
|
||||
STR_000E :
|
||||
@@ -1245,6 +1246,7 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Spremeni vrednost
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Nekatera ali vsa privzeta obdobja servisiranja spodaj niso združljiva z izborom! 5-90% in 30-800 dni je veljavno
|
||||
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :Zmerno podnebje
|
||||
STR_SUB_ARCTIC_LANDSCAPE :Sub arktično podnebje
|
||||
STR_SUB_TROPICAL_LANDSCAPE :Sub tropsko podnebje
|
||||
|
||||
@@ -1205,6 +1205,19 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Cambiar valor de la opción
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Alguno o todos los intervalos de servicio por defecto mostrados son incompatibles con la configuración elegida! 5-90% y 30-800 días son válidos
|
||||
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Pathfinder para trenes: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(No recomendado)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(Recomendado)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Pathfinder para vehículos de carretera: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Original {RED}(No recomendado)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(Recomendado)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Pathfinder para barcos: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Original {BLUE}(Recomendado)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(No recomendado)
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :Paisaje templado
|
||||
STR_SUB_ARCTIC_LANDSCAPE :Paisaje sub-ártico
|
||||
STR_SUB_TROPICAL_LANDSCAPE :Paisaje sub-tropical
|
||||
@@ -3341,6 +3354,7 @@ STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Activar
|
||||
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Activar transparencias para construcciones como estaciones, depósitos, puntos de paso, etc.
|
||||
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Activar transparencias para puentes
|
||||
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Activar transparencias para estructuras como faros, antenas, etc.
|
||||
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Activar transparencia para la catenaria. CTRL+click para bloquear.
|
||||
STR_TRANSPARENT_LOADING_DESC :{BLACK}Ajustar transparencia para los indicadores de carga
|
||||
|
||||
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
|
||||
|
||||
@@ -15,6 +15,7 @@ STR_EMPTY :
|
||||
STR_0007_FLAT_LAND_REQUIRED :{WHITE}Platt mark krävs
|
||||
STR_0008_WAITING :{BLACK}Väntar: {WHITE}{STRING}
|
||||
STR_0009 :{WHITE}{CARGO}
|
||||
STR_EN_ROUTE_FROM :{YELLOW}({SHORTCARGO} på väg från {STATION})
|
||||
STR_000C_ACCEPTS :{BLACK}Accepterar: {WHITE}
|
||||
STR_000D_ACCEPTS :{BLACK}Accepterar: {GOLD}
|
||||
STR_000E :
|
||||
@@ -1203,6 +1204,7 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Ändra inställningsvärde
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Några eller alla av standard serviceintervalls-inställningarna är felaktiga! (5-90% och 30-800 dagar är giltiga inställningar)
|
||||
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :Tempererat landskap
|
||||
STR_SUB_ARCTIC_LANDSCAPE :Sub-arktiskt landskap
|
||||
STR_SUB_TROPICAL_LANDSCAPE :Sub-tropiskt landskap
|
||||
|
||||
+138
-125
@@ -82,7 +82,6 @@ STR_0022_WHEAT :пшениця
|
||||
STR_0022_WHEAT.r :пшениці
|
||||
STR_0022_WHEAT.z :пшеницю
|
||||
STR_0023_RUBBER :каучук
|
||||
STR_0023_RUBBER.r :каучука
|
||||
STR_0023_RUBBER.z :каучук
|
||||
STR_0024_SUGAR :цукор
|
||||
STR_0024_SUGAR.r :цукру
|
||||
@@ -273,7 +272,7 @@ STR_ABBREV_BATTERIES :{TINYFONT}БТ
|
||||
STR_ABBREV_PLASTIC :{TINYFONT}ПЛ
|
||||
STR_ABBREV_FIZZY_DRINKS :{TINYFONT}ГЗ
|
||||
STR_ABBREV_NONE :{TINYFONT}Ні
|
||||
STR_ABBREV_ALL :{TINYFONT}Все!!!
|
||||
STR_ABBREV_ALL :{TINYFONT}Все
|
||||
STR_00AE :{WHITE}{DATE_SHORT}
|
||||
STR_00AF :{WHITE}{DATE_LONG}
|
||||
STR_00B0_MAP :{WHITE}Карта - {STRING}
|
||||
@@ -350,8 +349,8 @@ STR_00FF_FARM :{BLACK}{TINYFON
|
||||
STR_0100_FACTORY :{BLACK}{TINYFONT}Фабрика
|
||||
STR_0101_PRINTING_WORKS :{BLACK}{TINYFONT}Друкарня
|
||||
STR_0102_OIL_WELLS :{BLACK}{TINYFONT}Нафтова свердловина
|
||||
STR_0103_IRON_ORE_MINE :{BLACK}{TINYFONT}Залізнорудна шахта
|
||||
STR_0104_STEEL_MILL :{BLACK}{TINYFONT}Сталеварний завод
|
||||
STR_0103_IRON_ORE_MINE :{BLACK}{TINYFONT}Залізорудна шахта
|
||||
STR_0104_STEEL_MILL :{BLACK}{TINYFONT}Сталеливарний завод
|
||||
STR_0105_BANK :{BLACK}{TINYFONT}Банк
|
||||
STR_0106_PAPER_MILL :{BLACK}{TINYFONT}Паперова фабрика
|
||||
STR_0107_GOLD_MINE :{BLACK}{TINYFONT}Золоторудна шахта
|
||||
@@ -462,13 +461,13 @@ STR_UNITS_VOLUME_LONG_METRIC :{COMMA} літ
|
||||
STR_UNITS_VOLUME_LONG_SI :{COMMA} м³
|
||||
|
||||
STR_UNITS_FORCE_IMPERIAL :{COMMA}x10³ lbf
|
||||
STR_UNITS_FORCE_METRIC :{COMMA} ton force
|
||||
STR_UNITS_FORCE_SI :{COMMA} kN
|
||||
STR_UNITS_FORCE_METRIC :{COMMA} тон-сил
|
||||
STR_UNITS_FORCE_SI :{COMMA} кН
|
||||
|
||||
############ range for menu starts
|
||||
STR_0154_OPERATING_PROFIT_GRAPH :Операційний прибуток
|
||||
STR_0155_INCOME_GRAPH :Графік доходів
|
||||
STR_0156_DELIVERED_CARGO_GRAPH :Доставлення вантажів
|
||||
STR_0156_DELIVERED_CARGO_GRAPH :Доставка вантажів
|
||||
STR_0157_PERFORMANCE_HISTORY_GRAPH :Графік продуктивності
|
||||
STR_0158_COMPANY_VALUE_GRAPH :Вартість компанії
|
||||
STR_0159_CARGO_PAYMENT_RATES :Вартість перевезень
|
||||
@@ -488,7 +487,7 @@ STR_SORT_CRITERIA_TIP :{BLACK}Вибе
|
||||
STR_SORT_BY :{BLACK}Сортувати
|
||||
|
||||
STR_SORT_BY_POPULATION :{BLACK}за населенням
|
||||
STR_SORT_BY_PRODUCTION :{BLACK}за виробництвом
|
||||
STR_SORT_BY_PRODUCTION :{BLACK}за продуктивністю
|
||||
STR_SORT_BY_TYPE :{BLACK}за типом
|
||||
STR_SORT_BY_TRANSPORTED :{BLACK}за перевезенням
|
||||
STR_SORT_BY_NAME :{BLACK}за назвою
|
||||
@@ -576,7 +575,7 @@ STR_0189 :{BLACK}{SMALLDO
|
||||
STR_018A_CAN_T_CHANGE_SERVICING :{WHITE}Не можна змінити інтервал обслуговування...
|
||||
STR_018B_CLOSE_WINDOW :{BLACK}Закрити вікно
|
||||
STR_018C_WINDOW_TITLE_DRAG_THIS :{BLACK}Заголовок вікна - потягніть для переміщення вікна
|
||||
STR_STICKY_BUTTON :{BLACK}Закріпити вікно
|
||||
STR_STICKY_BUTTON :{BLACK}Закріпити вікно - воно не буде закриватися командою "Закрити всі вікна"
|
||||
STR_RESIZE_BUTTON :{BLACK}Натисніть і тягніть для зміни розміру вікна
|
||||
STR_SAVELOAD_HOME_BUTTON :{BLACK}Натисніть для переходу до поточного каталогу збереження/завантаження
|
||||
STR_018D_DEMOLISH_BUILDINGS_ETC :{BLACK}Зруйнувати будинки, дороги і т.п.
|
||||
@@ -695,8 +694,8 @@ STR_01F7_SELECT_CUSTOM_2_USER_DEFINED :{BLACK}Вибр
|
||||
STR_01F8_CLEAR_CURRENT_PROGRAM_CUSTOM1 :{BLACK}Очистити програму (тільки для Набору 1 або Набору 2)
|
||||
STR_01F9_SAVE_MUSIC_SETTINGS :{BLACK}Зберегти налаштування музики
|
||||
STR_01FA_CLICK_ON_MUSIC_TRACK_TO :{BLACK}Виберіть доріжку, щоб додати до програми (тільки для Набору 1 або Набору 2)
|
||||
STR_CLICK_ON_TRACK_TO_REMOVE :{BLACK}Клікніть мишою на назві мелодії для її видалення зі списку (лише Набір1 та Набір2)
|
||||
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Вкл/викл випадкову програму
|
||||
STR_CLICK_ON_TRACK_TO_REMOVE :{BLACK}Клікніть на мелодії для її видалення зі списку (лише Набір1 та Набір2)
|
||||
STR_01FB_TOGGLE_PROGRAM_SHUFFLE :{BLACK}Вкл./відкл. випадкову програму
|
||||
STR_01FC_SHOW_MUSIC_TRACK_SELECTION :{BLACK}Показує вікно вибору музичної програми
|
||||
STR_01FD_CLICK_ON_SERVICE_TO_CENTER :{BLACK}Натисніть для показу в центрі екрану
|
||||
STR_01FE_DIFFICULTY :{BLACK}Складність ({STRING})
|
||||
@@ -711,17 +710,17 @@ STR_0206_ARRIVAL_OF_FIRST_VEHICLE :{YELLOW}При
|
||||
STR_0207_ARRIVAL_OF_FIRST_VEHICLE :{YELLOW}Прибуття першого транспорту на станцію конкурента
|
||||
STR_0208_ACCIDENTS_DISASTERS :{YELLOW}Нещасні випадки/стихійні лиха
|
||||
STR_0209_COMPANY_INFORMATION :{YELLOW}Інформація компанії
|
||||
STR_NEWS_OPEN_CLOSE :{YELLOW}Відкриття / закриття підприємств
|
||||
STR_NEWS_OPEN_CLOSE :{YELLOW}Відкриття/закриття підприємств
|
||||
STR_020A_ECONOMY_CHANGES :{YELLOW}Зміни в економіці
|
||||
STR_INDUSTRY_CHANGES_SERVED_BY_PLAYER :{YELLOW}Зміна обсягів виробництва на підприємствах гравця
|
||||
STR_INDUSTRY_CHANGES_SERVED_BY_OTHER :{YELLOW}Зміна обсягів виробництва на підприємствах суперників
|
||||
STR_INDUSTRY_CHANGES_SERVED_BY_PLAYER :{YELLOW}Зміна обсягів виробництва на підприємствах, обслуговуваних гравцем
|
||||
STR_INDUSTRY_CHANGES_SERVED_BY_OTHER :{YELLOW}Зміна обсягів виробництва на підприємствах, обслуговуваних суперниками
|
||||
STR_OTHER_INDUSTRY_PRODUCTION_CHANGES :{YELLOW}Інші зміни обсягів виробництва
|
||||
STR_020B_ADVICE_INFORMATION_ON_PLAYER :{YELLOW}Поради/інформація про транспорт гравця
|
||||
STR_020C_NEW_VEHICLES :{YELLOW}Новий транспорт
|
||||
STR_020D_CHANGES_OF_CARGO_ACCEPTANCE :{YELLOW}Зміни в попиті на перевезення
|
||||
STR_020E_SUBSIDIES :{YELLOW}Субсидії
|
||||
STR_020F_GENERAL_INFORMATION :{YELLOW}Загальна інформація
|
||||
STR_MESSAGES_ALL :{YELLOW}Відображати повідомлення /Коротко/Повно/Викл
|
||||
STR_MESSAGES_ALL :{YELLOW}Відображати повідомлення: відкл. / коротко / повно
|
||||
STR_MESSAGE_SOUND :{YELLOW}Звукове сповіщення для підсумкових новин
|
||||
STR_0210_TOO_FAR_FROM_PREVIOUS_DESTINATIO :{WHITE}...дуже далеко від попереднього пункту призначення
|
||||
STR_0211_TOP_COMPANIES_WHO_REACHED :{BIGFONT}{BLACK}Кращі компанії, що досягли {NUM}{}(рівень {STRING})
|
||||
@@ -777,7 +776,7 @@ STR_0243_FOREST :{BLACK}{G=m}Л
|
||||
STR_0244_OIL_REFINERY :{BLACK}{G=m}Нафтопереробний завод
|
||||
STR_0245_OIL_RIG :{BLACK}{G=f}Нафтова платформа
|
||||
STR_0246_FACTORY :{BLACK}{G=f}Фабрика
|
||||
STR_0247_STEEL_MILL :{BLACK}{G=m}Сталеварний завод
|
||||
STR_0247_STEEL_MILL :{BLACK}{G=m}Сталеливарний завод
|
||||
STR_0248_FARM :{BLACK}{G=f}Ферма
|
||||
STR_0249_IRON_ORE_MINE :{BLACK}{G=f}Залізорудна шахта
|
||||
STR_024A_OIL_WELLS :{BLACK}{G=f}Нафтова свердловина
|
||||
@@ -811,12 +810,12 @@ STR_0265_PLANT_FOREST :{BLACK}Поса
|
||||
STR_0266_CONSTRUCT_OIL_REFINERY :{BLACK}Будувати нафтопереробний завод
|
||||
STR_0267_CONSTRUCT_OIL_RIG_CAN_ONLY :{BLACK}Будувати нафтову платформу (тільки біля краю карти)
|
||||
STR_0268_CONSTRUCT_FACTORY :{BLACK}Будувати фабрику
|
||||
STR_0269_CONSTRUCT_STEEL_MILL :{BLACK}Будуватисталеварний завод
|
||||
STR_0269_CONSTRUCT_STEEL_MILL :{BLACK}Будувати сталеливарний завод
|
||||
STR_026A_CONSTRUCT_FARM :{BLACK}Будувати ферму
|
||||
STR_026B_CONSTRUCT_IRON_ORE_MINE :{BLACK}Будувати залізорудну шахту
|
||||
STR_026C_CONSTRUCT_OIL_WELLS :{BLACK}Будувати нафтову свердловину
|
||||
STR_026D_CONSTRUCT_BANK_CAN_ONLY :{BLACK}Будувати банк (тільки у містах з населенням більше 1200)
|
||||
STR_026E_CONSTRUCT_PAPER_MILL :{BLACK}Будувати паперову фабоику
|
||||
STR_026E_CONSTRUCT_PAPER_MILL :{BLACK}Будувати паперову фабрику
|
||||
STR_026F_CONSTRUCT_FOOD_PROCESSING :{BLACK}Будувати продуктовий завод
|
||||
STR_0270_CONSTRUCT_PRINTING_WORKS :{BLACK}Будувати друкарню
|
||||
STR_0271_CONSTRUCT_GOLD_MINE :{BLACK}Будувати золоторудну шахту
|
||||
@@ -866,7 +865,7 @@ STR_0299_SAVE_SCENARIO :{WHITE}Збер
|
||||
STR_029A_PLAY_SCENARIO :{BLACK}Грати за сценарієм
|
||||
STR_PLAY_HEIGHTMAP :{BLACK}Грати з карти висот
|
||||
STR_PLAY_HEIGHTMAP_HINT :{BLACK}Почати нову гру, використавши карту висот за ландшафт
|
||||
STR_QUIT_SCENARIO_QUERY :{YELLOW}Ви дійсно бажаєти вийти зі сценарію?
|
||||
STR_QUIT_SCENARIO_QUERY :{YELLOW}Ви дійсно бажаєте вийти зі сценарію?
|
||||
STR_029C_QUIT_EDITOR :{WHITE}Вихід з редактору
|
||||
STR_029D_CAN_ONLY_BE_BUILT_IN_TOWNS :{WHITE}...можливо будувати лише у містах з населенням не менш 1200
|
||||
STR_029E_MOVE_THE_STARTING_DATE :{BLACK}Перенести початкову дату на 1 рік назад
|
||||
@@ -963,8 +962,8 @@ STR_02FC_LOAD_A_SAVED_GAME :{BLACK}Прод
|
||||
STR_02FE_CREATE_A_CUSTOMIZED_GAME :{BLACK}Створити свій сценарій
|
||||
STR_02FF_SELECT_SINGLE_PLAYER_GAME :{BLACK}Грати одному
|
||||
STR_0300_SELECT_MULTIPLAYER_GAME :{BLACK}Грати з 2-8 гравцями
|
||||
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Показати налашування гри
|
||||
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Показати налашування складності
|
||||
STR_0301_DISPLAY_GAME_OPTIONS :{BLACK}Показати налаштування гри
|
||||
STR_0302_DISPLAY_DIFFICULTY_OPTIONS :{BLACK}Показати налаштування складності
|
||||
STR_0303_START_A_NEW_GAME_USING :{BLACK}Почати нову гру, використовуючи сценарій
|
||||
STR_0304_QUIT :{BLACK}Вихід
|
||||
STR_0305_QUIT_OPENTTD :{BLACK}покинути 'OpenTTD'
|
||||
@@ -995,21 +994,21 @@ STR_031C_SCREENSHOT_FAILED :{WHITE}Поми
|
||||
STR_0329_PURCHASE_LAND_FOR_FUTURE :{BLACK}Купити ділянку для використання у майбутньому
|
||||
STR_032F_AUTOSAVE :{RED}Автозбереження
|
||||
STR_SAVING_GAME :{RED}* * ЗБЕРЕЖЕННЯ ГРИ * *
|
||||
STR_SAVE_STILL_IN_PROGRESS :{WHITE}Збереження...,{}зачекайте поки завершиться!
|
||||
STR_SAVE_STILL_IN_PROGRESS :{WHITE}Збереження...{}зачекайте, доки завершиться!
|
||||
STR_0330_SELECT_EZY_STREET_STYLE :{BLACK}Вибрати програму 'Дорожні теми'
|
||||
|
||||
STR_6 :{BLACK}6
|
||||
STR_7 :{BLACK}7
|
||||
|
||||
############ start of townname region
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Англійські(Оригінальні)
|
||||
STR_TOWNNAME_ORIGINAL_ENGLISH :Англійські (оригінальні)
|
||||
STR_TOWNNAME_FRENCH :Французькі
|
||||
STR_TOWNNAME_GERMAN :Німецькі
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :Англійські(Додаткові)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Латино-Американські
|
||||
STR_TOWNNAME_ADDITIONAL_ENGLISH :Англійські (додаткові)
|
||||
STR_TOWNNAME_LATIN_AMERICAN :Латиноамериканські
|
||||
STR_TOWNNAME_SILLY :Кумедні
|
||||
STR_TOWNNAME_SWEDISH :Шведські
|
||||
STR_TOWNNAME_DUTCH :Голандські
|
||||
STR_TOWNNAME_DUTCH :Голландські
|
||||
STR_TOWNNAME_FINNISH :Фінські
|
||||
STR_TOWNNAME_POLISH :Польські
|
||||
STR_TOWNNAME_SLOVAKISH :Словацькі
|
||||
@@ -1022,7 +1021,7 @@ STR_TOWNNAME_SWISS :Швейцар
|
||||
STR_TOWNNAME_DANISH :Датські
|
||||
STR_TOWNNAME_TURKISH :Турецькі
|
||||
STR_TOWNNAME_ITALIAN :Італійські
|
||||
STR_TOWNNAME_CATALAN :Каталанські
|
||||
STR_TOWNNAME_CATALAN :Каталонські
|
||||
############ end of townname region
|
||||
|
||||
STR_CURR_GBP :Фунт (£)
|
||||
@@ -1039,14 +1038,14 @@ STR_CURR_ESP :Іспансь
|
||||
STR_CURR_FIM :Фінська марка (FIM)
|
||||
STR_CURR_FRF :Франк (FRF)
|
||||
STR_CURR_GRD :Грецька драхма (GRD)
|
||||
STR_CURR_HUF :Угорський форінт (HUF)
|
||||
STR_CURR_HUF :Угорський форинт (HUF)
|
||||
STR_CURR_ISK :Ісландська крона (ISK)
|
||||
STR_CURR_ITL :Італійська ліра (ITL)
|
||||
STR_CURR_NLG :Голандський гульден (NLG)
|
||||
STR_CURR_NLG :Голландський гульден (NLG)
|
||||
STR_CURR_NOK :Норвезька крона (NOK)
|
||||
STR_CURR_PLN :Польський злотий (PLN)
|
||||
STR_CURR_ROL :Румунський лей (ROL)
|
||||
STR_CURR_RUR :Російський рубль (RUR)
|
||||
STR_CURR_RUR :Російський рубель (RUR)
|
||||
STR_CURR_SIT :Словенський талер (SIT)
|
||||
STR_CURR_SEK :Шведська крона (SEK)
|
||||
STR_CURR_YTL :Турецька ліра (YTL)
|
||||
@@ -1254,7 +1253,7 @@ STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MONORAIL :Монорей
|
||||
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MAGLEV :Магнітна подушка
|
||||
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_FIRST :Перша з доступних
|
||||
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_LAST :Остання з доступних
|
||||
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED :Найчастіш використовувана
|
||||
STR_CONFIG_PATCHES_DEFAULT_RAIL_TYPE_MOST_USED :Найчастіше використовувана
|
||||
|
||||
STR_CONFIG_PATCHES_ALWAYS_BUILD_INFRASTRUCTURE :{LTBLUE}Показувати засоби будівництва, коли нема відповідного транспорту: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_MAX_TRAINS :{LTBLUE}Макс. поїздів у гравця: {ORANGE}{STRING}
|
||||
@@ -1330,6 +1329,19 @@ STR_CONFIG_PATCHES_CURRENCY :{CURRENCY}
|
||||
STR_CONFIG_PATCHES_QUERY_CAPT :{WHITE}Змініть значення
|
||||
STR_CONFIG_PATCHES_SERVICE_INTERVAL_INCOMPATIBLE :{WHITE}Одне чи декілька значень інтервалів несумісні за даних умов! Дозволено 5-90% та 30-800 днів
|
||||
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS :{LTBLUE}Шукач шляху для поїздів: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NTP :NTP {RED}(не рекомендовано)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_TRAINS_YAPF :YAPF {BLUE}(рекомендовано)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH :{LTBLUE}Шукач шляху для автомобілів: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_OPF :Оригінальний {RED}(не рекомендовано)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_ROADVEH_YAPF :YAPF {BLUE}(рекомендовано)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS :{LTBLUE}Шукач шляху для кораблів: {ORANGE}{STRING}
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_OPF :Оригінальний {BLUE}(рекомендовано)
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_NPF :NPF
|
||||
STR_CONFIG_PATCHES_PATHFINDER_FOR_SHIPS_YAPF :YAPF {RED}(не рекомендовано)
|
||||
|
||||
STR_TEMPERATE_LANDSCAPE :Помірний ландшафт
|
||||
STR_SUB_ARCTIC_LANDSCAPE :Субарктичний ландшафт
|
||||
STR_SUB_TROPICAL_LANDSCAPE :Субтропічний ландшафт
|
||||
@@ -1488,7 +1500,7 @@ STR_NETWORK_GAME_INFO :{SILVER}Інф
|
||||
STR_ORANGE :{ORANGE}{STRING}
|
||||
STR_NETWORK_CLIENTS :{SILVER}Клієнт: {WHITE}{COMMA} / {COMMA} - {COMMA} / {COMMA}
|
||||
STR_NETWORK_LANGUAGE :{SILVER}Мова: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Шаблонt: {WHITE}{STRING}
|
||||
STR_NETWORK_TILESET :{SILVER}Шаблон: {WHITE}{STRING}
|
||||
STR_NETWORK_MAP_SIZE :{SILVER}Розмір карти: {WHITE}{COMMA}x{COMMA}
|
||||
STR_NETWORK_SERVER_VERSION :{SILVER}Версія серверу: {WHITE}{STRING}
|
||||
STR_NETWORK_SERVER_ADDRESS :{SILVER}Адреса серверу: {WHITE}{STRING} : {NUM}
|
||||
@@ -1497,7 +1509,7 @@ STR_NETWORK_CURRENT_DATE :{SILVER}Пот
|
||||
STR_NETWORK_PASSWORD :{SILVER}Захищено паролем!
|
||||
STR_NETWORK_SERVER_OFFLINE :{SILVER}Сервер відключений
|
||||
STR_NETWORK_SERVER_FULL :{SILVER}Сервер зайнятий
|
||||
STR_NETWORK_VERSION_MISMATCH :{SILVER}Версія не сумісна
|
||||
STR_NETWORK_VERSION_MISMATCH :{SILVER}Версія не співпадає
|
||||
STR_NETWORK_GRF_MISMATCH :{SILVER}NEWGRF ПОМИЛКА
|
||||
|
||||
STR_NETWORK_JOIN_GAME :{BLACK}Приєднатися
|
||||
@@ -1523,7 +1535,7 @@ STR_NETWORK_COMPANIES_SELECT :{BLACK}{SKIP}{S
|
||||
STR_NETWORK_NUMBER_OF_COMPANIES :{BLACK}Максимум компаній:
|
||||
STR_NETWORK_NUMBER_OF_COMPANIES_TIP :{BLACK}Обмежує кількість компаній на сервері
|
||||
STR_NETWORK_SPECTATORS_SELECT :{BLACK}{SKIP}{SKIP}{SKIP}{SKIP}{NUM} споглядач{P "" а ів}
|
||||
STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}Максмум глядачів:
|
||||
STR_NETWORK_NUMBER_OF_SPECTATORS :{BLACK}Максимум глядачів:
|
||||
STR_NETWORK_NUMBER_OF_SPECTATORS_TIP :{BLACK}Обмежує кількість глядачів на сервері
|
||||
STR_NETWORK_LANGUAGE_SPOKEN :{BLACK}Мова:
|
||||
STR_NETWORK_LANGUAGE_TIP :{BLACK}Інші гравці будуть знати якою мовою спілкуються на сервері
|
||||
@@ -1543,7 +1555,7 @@ STR_NETWORK_LANG_BULGARIAN :Болгарс
|
||||
STR_NETWORK_LANG_CHINESE :Китайська
|
||||
STR_NETWORK_LANG_CZECH :Чеська
|
||||
STR_NETWORK_LANG_DANISH :Датська
|
||||
STR_NETWORK_LANG_DUTCH :Німецька
|
||||
STR_NETWORK_LANG_DUTCH :Голландська
|
||||
STR_NETWORK_LANG_ESPERANTO :Есперанто
|
||||
STR_NETWORK_LANG_FINNISH :Фінська
|
||||
STR_NETWORK_LANG_HUNGARIAN :Угорська
|
||||
@@ -1553,7 +1565,7 @@ STR_NETWORK_LANG_JAPANESE :Японськ
|
||||
STR_NETWORK_LANG_KOREAN :Корейська
|
||||
STR_NETWORK_LANG_LITHUANIAN :Литовська
|
||||
STR_NETWORK_LANG_NORWEGIAN :Норвезька
|
||||
STR_NETWORK_LANG_POLISH :Польськая
|
||||
STR_NETWORK_LANG_POLISH :Польська
|
||||
STR_NETWORK_LANG_PORTUGUESE :Португальська
|
||||
STR_NETWORK_LANG_ROMANIAN :Румунська
|
||||
STR_NETWORK_LANG_RUSSIAN :Російська
|
||||
@@ -1565,7 +1577,7 @@ STR_NETWORK_LANG_TURKISH :Турецьк
|
||||
STR_NETWORK_LANG_UKRAINIAN :Українська
|
||||
############ End of leave-in-this-order
|
||||
|
||||
STR_NETWORK_GAME_LOBBY :{WHITE}Multiplayer game lobby
|
||||
STR_NETWORK_GAME_LOBBY :{WHITE}Мережева гра - кімната
|
||||
|
||||
STR_NETWORK_PREPARE_TO_JOIN :{BLACK}Підготовка до з'єднання: {ORANGE}{STRING}
|
||||
STR_NETWORK_COMPANY_LIST_TIP :{BLACK}Список всіх компаній присутніх у цій грі. Ви можете як приєднатись до компанії так і створити нову, якщо є вільне місце
|
||||
@@ -1614,18 +1626,18 @@ STR_NETWORK_NEED_GAME_PASSWORD_CAPTION :{WHITE}Серв
|
||||
STR_NETWORK_NEED_COMPANY_PASSWORD_CAPTION :{WHITE}Компанія захищена паролем. Введіть пароль
|
||||
STR_NETWORK_CLIENT_LIST :{WHITE}Список клієнтів
|
||||
|
||||
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Не знайдено мережевого пристрою або закомпільовано без ENABLE_NETWORK
|
||||
STR_NETWORK_ERR_NOTAVAILABLE :{WHITE} Не знайдено мережевого пристрою або скомпільовано без ENABLE_NETWORK
|
||||
STR_NETWORK_ERR_NOSERVER :{WHITE} Не знайдено жодної мережної гри
|
||||
STR_NETWORK_ERR_NOCONNECTION :{WHITE} Сервер не відповідає на запит
|
||||
STR_NETWORK_ERR_NOCONNECTION :{WHITE} Сервер не відповів на запит
|
||||
STR_NETWORK_ERR_NEWGRF_MISMATCH :{WHITE} Не можна з'єднатись внаслідок неспівпадання NewGRF
|
||||
STR_NETWORK_ERR_DESYNC :{WHITE} Помилка синхронізації з мережною грою
|
||||
STR_NETWORK_ERR_LOSTCONNECTION :{WHITE} З'єднання втрачено
|
||||
STR_NETWORK_ERR_SAVEGAMEERROR :{WHITE} Неможливо завантажити гру
|
||||
STR_NETWORK_ERR_SERVER_START :{WHITE} Неможливо створити сервер
|
||||
STR_NETWORK_ERR_CLIENT_START :{WHITE} Неможливо з'єднатися
|
||||
STR_NETWORK_ERR_TIMEOUT :{WHITE} Таймаут з'єднання #{NUM}
|
||||
STR_NETWORK_ERR_TIMEOUT :{WHITE} Тайм-аут з'єднання #{NUM}
|
||||
STR_NETWORK_ERR_SERVER_ERROR :{WHITE} Помилка протоколу - з'єднання розірвано
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Версія кліента не співпадає з версією сервера
|
||||
STR_NETWORK_ERR_WRONG_REVISION :{WHITE} Версія клієнта не співпадає з версією сервера
|
||||
STR_NETWORK_ERR_WRONG_PASSWORD :{WHITE} Пароль невірний
|
||||
STR_NETWORK_ERR_SERVER_FULL :{WHITE} Сервер переповнений
|
||||
STR_NETWORK_ERR_SERVER_BANNED :{WHITE} Вас відключено від цього серверу
|
||||
@@ -1693,7 +1705,7 @@ STR_PNGMAP_ERR_FILE_NOT_FOUND :{WHITE}...фа
|
||||
STR_PNGMAP_ERR_IMAGE_TYPE :{WHITE}...неможливо конвертувати. треба 8 чи 24-bit PNG формат.
|
||||
STR_PNGMAP_ERR_MISC :{WHITE}...Помилка. (можливо зіпсований файл)
|
||||
|
||||
STR_BMPMAP_ERROR :{WHITE}Не можу завантажити лашдшафт з BMP...
|
||||
STR_BMPMAP_ERROR :{WHITE}Не можу завантажити ландшафт з BMP...
|
||||
STR_BMPMAP_ERR_IMAGE_TYPE :{WHITE}...неможливо перетворити тип зображення
|
||||
|
||||
##id 0x0800
|
||||
@@ -1745,7 +1757,7 @@ STR_1019_BUILD_TRAIN_DEPOT_FOR_BUILDING :{BLACK}Буду
|
||||
STR_101A_BUILD_RAILROAD_STATION :{BLACK}Будувати станцію
|
||||
STR_101B_BUILD_RAILROAD_SIGNALS :{BLACK}Будувати сигнал
|
||||
STR_101C_BUILD_RAILROAD_BRIDGE :{BLACK}Будувати міст
|
||||
STR_101D_BUILD_RAILROAD_TUNNEL :{BLACK}Будувати туннель
|
||||
STR_101D_BUILD_RAILROAD_TUNNEL :{BLACK}Будувати тунель
|
||||
STR_101E_TOGGLE_BUILD_REMOVE_FOR :{BLACK}Будувати/демонтувати колію або сигнали
|
||||
STR_101F_BRIDGE_SELECTION_CLICK :{BLACK}Вибір мосту - натисніть на міст, який бажаєте збудувати
|
||||
STR_1020_SELECT_RAILROAD_DEPOT_ORIENTATIO :{BLACK}Вибір орієнтації депо
|
||||
@@ -1758,7 +1770,7 @@ STR_RAILROAD_TRACK_WITH_EXITSIGNALS :Колія з
|
||||
STR_RAILROAD_TRACK_WITH_COMBOSIGNALS :Колія з комбо-сигналами
|
||||
STR_RAILROAD_TRACK_WITH_NORMAL_PRESIGNALS :Залізнична колія зі звичайним та пре-сигналами
|
||||
STR_RAILROAD_TRACK_WITH_NORMAL_EXITSIGNALS :Залізнична колія зі звичайним та вихід-сигналами
|
||||
STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS :Колія з нормальними і комбо-сигналами
|
||||
STR_RAILROAD_TRACK_WITH_NORMAL_COMBOSIGNALS :Колія зі звичайним і комбо-сигналами
|
||||
STR_RAILROAD_TRACK_WITH_PRE_EXITSIGNALS :Залізнична колія з пре- та вихід-сигналами
|
||||
STR_RAILROAD_TRACK_WITH_PRE_COMBOSIGNALS :Колія з пре- і комбо-сигналами
|
||||
STR_RAILROAD_TRACK_WITH_EXIT_COMBOSIGNALS :Колія з вихідними і комбо-сигналами
|
||||
@@ -1771,7 +1783,7 @@ STR_1801_MUST_REMOVE_ROAD_FIRST :{WHITE}Споч
|
||||
STR_ROAD_WORKS_IN_PROGRESS :{WHITE}Дорога ремонтується
|
||||
STR_1802_ROAD_CONSTRUCTION :{WHITE}Будівництво дороги
|
||||
STR_WHITE_TRAMWAY_CONSTRUCTION :{WHITE}Будівництво трамвайної колії
|
||||
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Виберіть дорожний міст
|
||||
STR_1803_SELECT_ROAD_BRIDGE :{WHITE}Виберіть дорожній міст
|
||||
STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION :{WHITE}... односторонні дороги не можуть перетинатись
|
||||
STR_1804_CAN_T_BUILD_ROAD_HERE :{WHITE}Неможливо тут побудувати дорогу ...
|
||||
STR_CAN_T_BUILD_TRAMWAY_HERE :{WHITE}Тут не можна побудувати трамвайну колію...
|
||||
@@ -1812,7 +1824,7 @@ STR_1816_TREE_LINED_ROAD :Дорога з
|
||||
STR_1817_ROAD_VEHICLE_DEPOT :Автомобільне депо
|
||||
STR_1818_ROAD_RAIL_LEVEL_CROSSING :Залізничний переїзд
|
||||
STR_CAN_T_REMOVE_BUS_STATION :{WHITE}Не можна знести автобусну станцію...
|
||||
STR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Не можна знести грузову станцію...
|
||||
STR_CAN_T_REMOVE_TRUCK_STATION :{WHITE}Не можна знести вантажну станцію...
|
||||
STR_CAN_T_REMOVE_PASSENGER_TRAM_STATION :{WHITE}Не можна знести пасажирську трамвайну станцію...
|
||||
STR_CAN_T_REMOVE_CARGO_TRAM_STATION :{WHITE}Не можна знести вантажну трамвайну станцію...
|
||||
|
||||
@@ -1963,14 +1975,14 @@ STR_3033_ACCEPTS :{BLACK}Прий
|
||||
STR_3034_LOCAL_RATING_OF_TRANSPORT :{BLACK}Місцевий рейтинг транспортної компанії:
|
||||
|
||||
############ range for rating starts
|
||||
STR_3035_APPALLING :Жахливо
|
||||
STR_3036_VERY_POOR :Дуже погано
|
||||
STR_3037_POOR :Погано
|
||||
STR_3038_MEDIOCRE :Середньо
|
||||
STR_3039_GOOD :Добре
|
||||
STR_303A_VERY_GOOD :Дуже добре
|
||||
STR_303B_EXCELLENT :Відмінно
|
||||
STR_303C_OUTSTANDING :Найкраще
|
||||
STR_3035_APPALLING :жахливо
|
||||
STR_3036_VERY_POOR :дуже погано
|
||||
STR_3037_POOR :погано
|
||||
STR_3038_MEDIOCRE :середньо
|
||||
STR_3039_GOOD :добре
|
||||
STR_303A_VERY_GOOD :дуже добре
|
||||
STR_303B_EXCELLENT :відмінно
|
||||
STR_303C_OUTSTANDING :найкраще
|
||||
############ range for rating ends
|
||||
|
||||
STR_303D :{WHITE}{STRING}: {YELLOW}{STRING} ({COMMA}%)
|
||||
@@ -2021,10 +2033,10 @@ STR_3069_BUOY :Бакен
|
||||
STR_306A_BUOY_IN_THE_WAY :{WHITE}...бакен на шляху
|
||||
STR_306C_STATION_TOO_SPREAD_OUT :{WHITE}...станція занадто велика
|
||||
STR_NONUNIFORM_STATIONS_DISALLOWED :{WHITE}...неоднорідні станції відключені
|
||||
STR_USE_CTRL_TO_SELECT_MORE :{BLACK}Утримуйте CTRL для вибору більш ніж одного пункту
|
||||
STR_USE_CTRL_TO_SELECT_MORE :{BLACK}Утримуйте CTRL для вибору декількох пунктів
|
||||
|
||||
STR_UNDEFINED :(невизначено)
|
||||
STR_STAT_CLASS_DFLT :Default station
|
||||
STR_STAT_CLASS_DFLT :Звичайна станція
|
||||
STR_STAT_CLASS_WAYP :Пункт
|
||||
|
||||
##id 0x3800
|
||||
@@ -2166,7 +2178,7 @@ STR_4832_ANNOUNCES_IMMINENT_CLOSURE :{BLACK}{BIGFONT
|
||||
STR_4833_SUPPLY_PROBLEMS_CAUSE_TO :{BLACK}{BIGFONT}{STRING}: проблеми з поставками незабаром призведуть до закриття!
|
||||
STR_4834_LACK_OF_NEARBY_TREES_CAUSES :{BLACK}{BIGFONT}Відсутність дерев поруч незабаром призведе {STRING} до закриття!
|
||||
STR_4835_INCREASES_PRODUCTION :{BLACK}{BIGFONT}{INDUSTRY} збільшує виробництво!
|
||||
STR_4836_NEW_COAL_SEAM_FOUND_AT :{BLACK}{BIGFONT}Знайдені нові залежі вугілля на {INDUSTRY}!{}Очікується збільшення виробництва вдвічі!
|
||||
STR_4836_NEW_COAL_SEAM_FOUND_AT :{BLACK}{BIGFONT}Знайдені нові поклади вугілля на {INDUSTRY}!{}Очікується збільшення виробництва вдвічі!
|
||||
STR_4837_NEW_OIL_RESERVES_FOUND :{BLACK}{BIGFONT}Знайдені нові нафтові запаси на {INDUSTRY}!{}Очікується збільшення виробництва вдвічі!
|
||||
STR_4838_IMPROVED_FARMING_METHODS :{BLACK}{BIGFONT}Удосконалені сільськогосподарські методи на {INDUSTRY} збільшили виробництво вдвічі!
|
||||
STR_4839_PRODUCTION_DOWN_BY_50 :{BLACK}{BIGFONT}{INDUSTRY} виробництво впало на 50%
|
||||
@@ -2186,7 +2198,7 @@ STR_5008_CANNOT_START_AND_END_ON :{WHITE}Поча
|
||||
STR_BRIDGEHEADS_NOT_SAME_HEIGHT :{WHITE}Кінці мостів на різних рівнях
|
||||
STR_BRIDGE_TOO_LOW_FOR_TERRAIN :{WHITE}Міст дуже низький для цього місця
|
||||
STR_500A_START_AND_END_MUST_BE_IN :{WHITE}Початок та кінець мають бути на одній лінії
|
||||
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Невідповідне місце для початку тунеля
|
||||
STR_500B_SITE_UNSUITABLE_FOR_TUNNEL :{WHITE}Невідповідне місце для початку тунелю
|
||||
STR_500D :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY}
|
||||
STR_500E_SUSPENSION_STEEL :Підвісний сталевий
|
||||
STR_500F_GIRDER_STEEL :Балочний сталевий
|
||||
@@ -2221,7 +2233,7 @@ STR_5801_TRANSMITTER :Ретранс
|
||||
STR_5802_LIGHTHOUSE :Маяк
|
||||
STR_5803_COMPANY_HEADQUARTERS :Головний офіс компанії
|
||||
STR_5804_COMPANY_HEADQUARTERS_IN :{WHITE}...на шляху Головний офіс
|
||||
STR_5805_COMPANY_OWNED_LAND :Ця ділянка - власніcть компанії
|
||||
STR_5805_COMPANY_OWNED_LAND :Ця ділянка - власність компанії
|
||||
STR_5806_CAN_T_PURCHASE_THIS_LAND :{WHITE}Неможливо купити цю ділянку ...
|
||||
STR_5807_YOU_ALREADY_OWN_IT :{WHITE}...це вже ваша власність!
|
||||
|
||||
@@ -2288,7 +2300,7 @@ STR_6804_CUSTOM :{BLACK}Вибі
|
||||
STR_6805_MAXIMUM_NO_COMPETITORS :{LTBLUE}Кількість конкурентів: {ORANGE}{COMMA}
|
||||
STR_6806_COMPETITOR_START_TIME :{LTBLUE}Конкуренти починають через: {ORANGE}{STRING}
|
||||
STR_6807_NO_OF_TOWNS :{LTBLUE}Кількість міст: {ORANGE}{STRING}
|
||||
STR_6808_NO_OF_INDUSTRIES :{LTBLUE}Кількість промисловостей: {ORANGE}{STRING}
|
||||
STR_6808_NO_OF_INDUSTRIES :{LTBLUE}Кількість підприємств: {ORANGE}{STRING}
|
||||
STR_6809_MAXIMUM_INITIAL_LOAN_000 :{LTBLUE}Початковий кредит: {ORANGE}{CURRENCY}
|
||||
STR_680A_INITIAL_INTEREST_RATE :{LTBLUE}Відсотки за кредит: {ORANGE}{COMMA}%
|
||||
STR_680B_VEHICLE_RUNNING_COSTS :{LTBLUE}Транспортні витрати: {ORANGE}{STRING}
|
||||
@@ -2366,15 +2378,15 @@ STR_700F_EXPENDITURE_INCOME :{WHITE}Витр
|
||||
STR_7010 :{WHITE}{NUM}
|
||||
STR_7011_CONSTRUCTION :{GOLD}Будівництво
|
||||
STR_7012_NEW_VEHICLES :{GOLD}Нова техніка
|
||||
STR_7013_TRAIN_RUNNING_COSTS :{GOLD}Поїзди: витрати
|
||||
STR_7014_ROAD_VEH_RUNNING_COSTS :{GOLD}Авто: витрати
|
||||
STR_7015_AIRCRAFT_RUNNING_COSTS :{GOLD}Літаки: витрати
|
||||
STR_7016_SHIP_RUNNING_COSTS :{GOLD}Кораблі: витрати
|
||||
STR_7013_TRAIN_RUNNING_COSTS :{GOLD}Витрати, поїзди
|
||||
STR_7014_ROAD_VEH_RUNNING_COSTS :{GOLD}Витрати, автомобілі
|
||||
STR_7015_AIRCRAFT_RUNNING_COSTS :{GOLD}Витрати, літаки
|
||||
STR_7016_SHIP_RUNNING_COSTS :{GOLD}Витрати, кораблі
|
||||
STR_7017_PROPERTY_MAINTENANCE :{GOLD}Утримання власності
|
||||
STR_7018_TRAIN_INCOME :{GOLD}Поїзди: дохід
|
||||
STR_7019_ROAD_VEHICLES_INCOME :{GOLD}Авто: дохід
|
||||
STR_701A_AIRCRAFT_INCOME :{GOLD}Літаки: дохід
|
||||
STR_701B_SHIP_INCOME :{GOLD}Кораблі: дохід
|
||||
STR_7018_TRAIN_INCOME :{GOLD}Дохід, поїзди
|
||||
STR_7019_ROAD_VEHICLES_INCOME :{GOLD}Дохід, автомобілі
|
||||
STR_701A_AIRCRAFT_INCOME :{GOLD}Дохід, літаки
|
||||
STR_701B_SHIP_INCOME :{GOLD}Дохід, кораблі
|
||||
STR_701C_LOAN_INTEREST :{GOLD}Відсотки за кредит
|
||||
STR_701D_OTHER :{GOLD}Інше
|
||||
STR_701E :{BLACK}-{CURRENCY}
|
||||
@@ -2402,7 +2414,7 @@ STR_7031_CHANGE_THE_COMPANY_VEHICLE :{BLACK}Змін
|
||||
STR_7032_CHANGE_THE_PRESIDENT_S :{BLACK}Зміна імені керівника
|
||||
STR_7033_CHANGE_THE_COMPANY_NAME :{BLACK}Зміна назви компанії
|
||||
STR_7034_CLICK_ON_SELECTED_NEW_COLOR :{BLACK}Натисніть на колір, який вам до вподоби
|
||||
STR_7035_INCREASE_SIZE_OF_LOAN :{BLACK}Збільшити розмір кредиту
|
||||
STR_7035_INCREASE_SIZE_OF_LOAN :{BLACK}Взяти кредит
|
||||
STR_7036_REPAY_PART_OF_LOAN :{BLACK}Виплатити частину кредиту
|
||||
STR_7037_PRESIDENT :{WHITE}{PLAYERNAME}{}{GOLD}(Керівник)
|
||||
STR_7038_INAUGURATED :{GOLD}Засновано у: {WHITE}{NUM} році
|
||||
@@ -2426,13 +2438,13 @@ STR_704D_SHOW_KEY_TO_GRAPHS :{BLACK}Пока
|
||||
STR_704E_KEY_TO_COMPANY_GRAPHS :{WHITE}Ключ до графіків компанії
|
||||
STR_704F_CLICK_HERE_TO_TOGGLE_COMPANY :{BLACK}Натисніть для вкл/викл окремого графіку компанії
|
||||
STR_7050_UNITS_OF_CARGO_DELIVERED :{WHITE}Доставка одиниці вантажу
|
||||
STR_7051_COMPANY_PERFORMANCE_RATINGS :{WHITE}Рейтинг продуктивності компанії(найбільший рейтинг=1000)
|
||||
STR_7051_COMPANY_PERFORMANCE_RATINGS :{WHITE}Рейтинг продуктивності компанії (найбільший рейтинг=1000)
|
||||
STR_7052_COMPANY_VALUES :{WHITE}Вартість компанії
|
||||
STR_7053_COMPANY_LEAGUE_TABLE :{WHITE}Таблиця компаній
|
||||
STR_7054 :{WHITE}{STRING}{SETX 45}{ORANGE}{COMPANY} {BLACK}{COMPANYNUM} '{STRING}'
|
||||
STR_7055 :{YELLOW}{STRING}{SETX 45}{ORANGE}{COMPANY} {BLACK}{COMPANYNUM} '{STRING}'
|
||||
STR_7056_TRANSPORT_COMPANY_IN_TROUBLE :{BLACK}{BIGFONT}Компанія у скруті!
|
||||
STR_7057_WILL_BE_SOLD_OFF_OR_DECLARED :{BLACK}{BIGFONT}{COMPANY} буде продано або оголошено банкрутом, якщо найблищим часом не зросте її продуктивність!
|
||||
STR_7057_WILL_BE_SOLD_OFF_OR_DECLARED :{BLACK}{BIGFONT}{COMPANY} буде продано або оголошено банкрутом, якщо найближчим часом не зросте продуктивність!
|
||||
STR_7058_PRESIDENT :{BLACK}{PLAYERNAME}{}(Керівник)
|
||||
STR_7059_TRANSPORT_COMPANY_MERGER :{BLACK}{BIGFONT}Компанії об'єдналися!
|
||||
STR_705A_HAS_BEEN_SOLD_TO_FOR :{BLACK}{BIGFONT}{COMPANY} була викуплена {COMPANY} за {CURRENCY}!
|
||||
@@ -2582,7 +2594,7 @@ STR_803C_OIL_TANKER :Цистерн
|
||||
STR_803D_LIVESTOCK_VAN :вантажівка для тварин
|
||||
STR_803E_GOODS_VAN :вантажівка для товарів
|
||||
STR_803F_GRAIN_HOPPER :вагон для зерна
|
||||
STR_8040_WOOD_TRUCK :лісовіз
|
||||
STR_8040_WOOD_TRUCK :лісовоз
|
||||
STR_8041_IRON_ORE_HOPPER :вагон для залізної руди
|
||||
STR_8042_STEEL_TRUCK :вантажівка для сталі
|
||||
STR_8043_ARMORED_VAN :броньоване авто
|
||||
@@ -2614,7 +2626,7 @@ STR_805C_OIL_TANKER :нафтова
|
||||
STR_805D_LIVESTOCK_VAN :вагон для худоби
|
||||
STR_805E_GOODS_VAN :товарний вагон
|
||||
STR_805F_GRAIN_HOPPER :вагон для зерна
|
||||
STR_8060_WOOD_TRUCK :лісовіз
|
||||
STR_8060_WOOD_TRUCK :лісовоз
|
||||
STR_8061_IRON_ORE_HOPPER :вагон для залізної руди
|
||||
STR_8062_STEEL_TRUCK :платформа для сталі
|
||||
STR_8063_ARMORED_VAN :броньований вагон
|
||||
@@ -2821,7 +2833,7 @@ STR_HEADING_FOR_TRAIN_DEPOT_SERVICE_VEL :{LTBLUE}Тех
|
||||
|
||||
STR_INVALID_ORDER :{RED} (Невірний наказ)
|
||||
|
||||
STR_UNKNOWN_DESTINATION :невідомий напрям
|
||||
STR_UNKNOWN_DESTINATION :невідоме місце призначення
|
||||
STR_8812_EMPTY :{LTBLUE}порожній
|
||||
STR_8813_FROM :{LTBLUE}{CARGO} з {STATION}
|
||||
STR_FROM_MULT :{LTBLUE}{CARGO} з {STATION} (x{NUM})
|
||||
@@ -2833,7 +2845,7 @@ STR_881A_TRAINS_CAN_ONLY_BE_ALTERED :{WHITE}Поїз
|
||||
STR_881B_TRAINS :{WHITE}{COMPANY} - {COMMA} поїзд{P "" и ів}
|
||||
|
||||
STR_881C_NEW_RAIL_VEHICLES :{WHITE}Новий залізничний транспорт
|
||||
STR_NEW_ELRAIL_VEHICLES :{WHITE}Нові елекричні потяги
|
||||
STR_NEW_ELRAIL_VEHICLES :{WHITE}Новий електрозалізничний транспорт
|
||||
STR_881D_NEW_MONORAIL_VEHICLES :{WHITE}Новий монорельсовий транспорт
|
||||
STR_881E_NEW_MAGLEV_VEHICLES :{WHITE}Новий транспорт на магнітній подушці
|
||||
STR_ALL_AVAIL_RAIL_VEHICLES :{WHITE}Потяги
|
||||
@@ -2845,7 +2857,7 @@ STR_CLONE_ROAD_VEHICLE_DEPOT_INFO :{BLACK}Буду
|
||||
STR_CLONE_TRAIN :{BLACK}Клонувати
|
||||
STR_CLONE_TRAIN_INFO :{BLACK}Будувати копію поїзда з усіма вагонами. Утримуйте CTRL для спільного завдання
|
||||
STR_CLONE_TRAIN_DEPOT_INFO :{BLACK}Будувати копію поїзда з усіма вагонами. Натисніть на цю кнопку і потім на поїзд в депо або ззовні. Утримуйте CTRL для спільного завдання
|
||||
STR_8820_RENAME :{BLACK}Ім'я
|
||||
STR_8820_RENAME :{BLACK}Назва
|
||||
STR_8823_SKIP :{BLACK}Пропуск
|
||||
STR_8824_DELETE :{BLACK}Видалити
|
||||
STR_8825_NON_STOP :{BLACK}Беззупн
|
||||
@@ -2877,14 +2889,14 @@ STR_CAN_T_MOVE_THIS_ORDER :{WHITE}Не м
|
||||
STR_CAN_T_SKIP_ORDER :{WHITE}Не можна пропустити цей наказ...
|
||||
STR_CAN_T_SKIP_TO_ORDER :{WHITE}Не можна перейти до цього наказу...
|
||||
STR_8837_CAN_T_MOVE_VEHICLE :{WHITE}Неможливо перемістити транспорт...
|
||||
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}задній потяг зажди слідує follow its front counterpart!!!
|
||||
STR_REAR_ENGINE_FOLLOW_FRONT_ERROR :{WHITE}задній потяг буде завжди йти за переднім
|
||||
STR_8838_N_A :немає{SKIP}
|
||||
STR_8839_CAN_T_SELL_RAILROAD_VEHICLE :{WHITE}Не можна продати поїзд...
|
||||
STR_883A_UNABLE_TO_FIND_ROUTE_TO :{WHITE}Неможливо знайти маршрут до місцевого депо
|
||||
STR_883B_CAN_T_STOP_START_TRAIN :{WHITE}Не можна зупинити/стартувати поїзд...
|
||||
STR_883C_SERVICING_INTERVAL_DAYS :{BLACK}Інтервал техогляду: {LTBLUE}{COMMA} днів{BLACK} Останній техогляд: {LTBLUE}{DATE_LONG}
|
||||
STR_SERVICING_INTERVAL_PERCENT :{BLACK}Інтервал техогляду: {LTBLUE}{COMMA}%{BLACK} Останній техогляд: {LTBLUE}{DATE_LONG}
|
||||
STR_883D_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Поїзди - клікніть на поїзді для детальної інформаціїї
|
||||
STR_883D_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Поїзди - клікніть на поїзді для детальної інформації
|
||||
STR_883E_BUILD_NEW_TRAINS_REQUIRES :{BLACK}Будувати поїзд (потрібне залізничне депо)
|
||||
STR_883F_TRAINS_CLICK_ON_TRAIN_FOR :{BLACK}Поїзди - клікніть на поїзді для інформації, перетягніть для додавання/вилучення
|
||||
STR_8840_BUILD_NEW_TRAIN_VEHICLE :{BLACK}Будувати новий поїзд
|
||||
@@ -2895,7 +2907,7 @@ STR_8844_BUILD_THE_HIGHLIGHTED_TRAIN :{BLACK}Буду
|
||||
STR_8845_RENAME_TRAIN_VEHICLE_TYPE :{BLACK}Перейменуйте тип транспорту
|
||||
STR_8846_CURRENT_TRAIN_ACTION_CLICK :{BLACK}Діяльність поїзда - клікніть тут для його запуску/зупинення
|
||||
STR_8847_SHOW_TRAIN_S_ORDERS :{BLACK}Показати маршрут поїзда
|
||||
STR_8848_CENTER_MAIN_VIEW_ON_TRAIN :{BLACK}Показати поїзд в центрі головноuj екрану
|
||||
STR_8848_CENTER_MAIN_VIEW_ON_TRAIN :{BLACK}Показати поїзд в центрі головного екрану
|
||||
STR_8849_SEND_TRAIN_TO_DEPOT :{BLACK}Направити поїзд у депо
|
||||
STR_884A_FORCE_TRAIN_TO_PROCEED :{BLACK}Ігнорувати червоне світло семафору!
|
||||
STR_884B_REVERSE_DIRECTION_OF_TRAIN :{BLACK}Розвернути поїзд
|
||||
@@ -2917,7 +2929,7 @@ STR_TIMETABLE_TOOLTIP :{BLACK}Розк
|
||||
STR_TIMETABLE_WAIT_TIME_TOOLTIP :{BLACK}Змінити час, впродовж якого має виконуватись наказ
|
||||
STR_TIMETABLE_CLEAR_TIME_TOOLTIP :{BLACK}Очистити час для виділеного наказу
|
||||
STR_TIMETABLE_RESET_LATENESS_TOOLTIP :{BLACK}Очистити лічильник запізнення, щоб транспорт встигнув
|
||||
STR_SERVICE_HINT :{BLACK}Пропустити це завдання поки обслуговування потрібне!!!
|
||||
STR_SERVICE_HINT :{BLACK}Пропустити це завдання, доки не буде потрібне обслуговування
|
||||
STR_VEHICLE_INFO_COST_WEIGHT_SPEED_POWER :{BLACK}Ціна: {CURRENCY} Вага: {WEIGHT_S}{}Швидкість: {VELOCITY}{}Потужність: {POWER}{}Вартість експлуатації: {CURRENCY}/рік{}Місткість: {CARGO}
|
||||
STR_885C_BROKEN_DOWN :{RED}Зламався
|
||||
STR_885D_AGE_RUNNING_COST_YR :{BLACK}Вік: {LTBLUE}{STRING}{BLACK} Транспортні витрати: {LTBLUE}{CURRENCY}/рік
|
||||
@@ -2944,7 +2956,7 @@ STR_RESET_LATENESS :{BLACK}Очис
|
||||
STR_TRAIN_STOPPING :{RED}Зупиняється
|
||||
STR_TRAIN_STOPPING_VEL :{RED}Зупиняється, {VELOCITY}
|
||||
STR_INCOMPATIBLE_RAIL_TYPES :Залізничні колій несумісні
|
||||
STR_TRAIN_NO_POWER :{RED}Неелектрифіковано
|
||||
STR_TRAIN_NO_POWER :{RED}Не електрифіковано
|
||||
STR_TRAIN_START_NO_CATENARY :Нема електрики, поїзд стоїть
|
||||
|
||||
STR_NEW_VEHICLE_NOW_AVAILABLE :{BLACK}{BIGFONT}Став доступним новий {STRING}!
|
||||
@@ -2964,7 +2976,7 @@ STR_TIMETABLE_STATUS_EARLY :Цей тран
|
||||
STR_TIMETABLE_TOTAL_TIME :Цей розклад займе ще {STRING}
|
||||
STR_TIMETABLE_TOTAL_TIME_INCOMPLETE :Цей розклад займе якнайменше {STRING} (не все за розкладом)
|
||||
STR_TIMETABLE_AUTOFILL :{BLACK}Автозаповнення
|
||||
STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Автоматично заповнювати розклад згiдно з даними першої подорожі
|
||||
STR_TIMETABLE_AUTOFILL_TOOLTIP :{BLACK}Автоматично заповнювати розклад згiдно даних першої подорожі
|
||||
|
||||
##id 0x9000
|
||||
STR_9000_ROAD_VEHICLE_IN_THE_WAY :{WHITE}На шляху авто
|
||||
@@ -2986,10 +2998,10 @@ STR_9013_MUST_BE_STOPPED_INSIDE :{WHITE}...ав
|
||||
STR_9014_CAN_T_SELL_ROAD_VEHICLE :{WHITE}Неможливо продати авто...
|
||||
STR_9015_CAN_T_STOP_START_ROAD_VEHICLE :{WHITE}Неможливо зупинити авто...
|
||||
STR_9016_ROAD_VEHICLE_IS_WAITING :{WHITE}Авто {COMMA} чекає в депо
|
||||
STR_HEADING_FOR_ROAD_DEPOT :{ORANGE}Прямує до {TOWN} депо
|
||||
STR_HEADING_FOR_ROAD_DEPOT_VEL :{ORANGE}Прямує до {TOWN} депо, {VELOCITY}
|
||||
STR_HEADING_FOR_ROAD_DEPOT_SERVICE :{LTBLUE}Техогляд в {TOWN} дорожне депо
|
||||
STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL :{LTBLUE}Техогляд в {TOWN} дорожне депо, {VELOCITY}
|
||||
STR_HEADING_FOR_ROAD_DEPOT :{ORANGE}Прямує до {TOWN} дорожного депо
|
||||
STR_HEADING_FOR_ROAD_DEPOT_VEL :{ORANGE}Прямує до {TOWN} дорожного депо, {VELOCITY}
|
||||
STR_HEADING_FOR_ROAD_DEPOT_SERVICE :{LTBLUE}Техогляд в {TOWN} дорожному депо
|
||||
STR_HEADING_FOR_ROAD_DEPOT_SERVICE_VEL :{LTBLUE}Техогляд в {TOWN} дорожному депо, {VELOCITY}
|
||||
STR_9018_CAN_T_SEND_VEHICLE_TO_DEPOT :{WHITE}Неможливо направити авто в депо...
|
||||
STR_9019_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Неможливо знайти місцеве депо
|
||||
STR_901A_ROAD_VEHICLES_CLICK_ON :{BLACK}Авто - натисніть на авто для інформації
|
||||
@@ -3038,7 +3050,7 @@ STR_ROAD_SELECT_TYPE_OF_CARGO_FOR :{BLACK}Обер
|
||||
STR_9800_DOCK_CONSTRUCTION :Будувати порт
|
||||
STR_9801_DOCK_CONSTRUCTION :{WHITE}Будівництво порту
|
||||
STR_9802_CAN_T_BUILD_DOCK_HERE :{WHITE}Неможливо будувати порт тут...
|
||||
STR_9803_SHIP_DEPOT :{WHITE}{TOWN} Корабельне депо
|
||||
STR_9803_SHIP_DEPOT :{WHITE}{TOWN} Док
|
||||
STR_9804_NEW_SHIPS :{BLACK}Нові кораблі
|
||||
STR_9805_SHIPS :{WHITE}{COMPANY} - {COMMA} кораб{P ель лі лів}
|
||||
STR_9808_NEW_SHIPS :{WHITE}Нові кораблі
|
||||
@@ -3046,13 +3058,13 @@ STR_9809_BUILD_SHIP :{BLACK}Буду
|
||||
STR_CLONE_SHIP :{BLACK}Клонувати
|
||||
STR_CLONE_SHIP_INFO :{BLACK}Будувати копію корабля. Утримуйте CTRL для спільного завдання
|
||||
STR_CLONE_SHIP_DEPOT_INFO :{BLACK}Будувати копію корабля. Натисніть на цю кнопку, і потім на корабель в депо або ззовні. Утримуйте CTRL для спільного завдання
|
||||
STR_980B_SHIP_MUST_BE_STOPPED_IN :{WHITE}Корабль має бути в депо
|
||||
STR_980B_SHIP_MUST_BE_STOPPED_IN :{WHITE}Корабль має стояти в доці
|
||||
STR_980C_CAN_T_SELL_SHIP :{WHITE}Неможливо продати корабель...
|
||||
STR_980D_CAN_T_BUILD_SHIP :{WHITE}Неможливо будувати корабель...
|
||||
STR_980E_SHIP_IN_THE_WAY :{WHITE}Корабель на шляху
|
||||
STR_980F :{WHITE}{VEHICLE}
|
||||
STR_9811_DETAILS :{WHITE}{VEHICLE} (Деталі)
|
||||
STR_9812_AGE_RUNNING_COST_YR :{BLACK}Вік: {LTBLUE}{STRING}{BLACK} Траспортні витрати: {LTBLUE}{CURRENCY}/рік
|
||||
STR_9812_AGE_RUNNING_COST_YR :{BLACK}Вік: {LTBLUE}{STRING}{BLACK} Транспортні витрати: {LTBLUE}{CURRENCY}/рік
|
||||
STR_9813_MAX_SPEED :{BLACK}Макс. швидкість: {LTBLUE}{VELOCITY}
|
||||
STR_9814_PROFIT_THIS_YEAR_LAST_YEAR :{BLACK}Прибуток цього року: {LTBLUE}{CURRENCY} (минулого року: {CURRENCY})
|
||||
STR_9815_RELIABILITY_BREAKDOWNS :{BLACK}Надійність: {LTBLUE}{COMMA}% {BLACK}Поломок після останнього техогляду: {LTBLUE}{COMMA}
|
||||
@@ -3061,10 +3073,10 @@ STR_9817_CAPACITY :{BLACK}Міст
|
||||
STR_9818_CAN_T_STOP_START_SHIP :{WHITE}Неможливо зупинити корабель...
|
||||
STR_9819_CAN_T_SEND_SHIP_TO_DEPOT :{WHITE}Неможливо направити корабель в депо...
|
||||
STR_981A_UNABLE_TO_FIND_LOCAL_DEPOT :{WHITE}Неможливо знайти місцеве депо
|
||||
STR_HEADING_FOR_SHIP_DEPOT :{ORANGE}Прямує до {TOWN} депо
|
||||
STR_HEADING_FOR_SHIP_DEPOT_VEL :{ORANGE}Прямує до {TOWN} депо, {VELOCITY}
|
||||
STR_HEADING_FOR_SHIP_DEPOT_SERVICE :{LTBLUE}Техогляд в {TOWN} корабельне депо
|
||||
STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL :{LTBLUE}Техогляд в {TOWN} корабельне депо, {VELOCITY}
|
||||
STR_HEADING_FOR_SHIP_DEPOT :{ORANGE}Прямує до {TOWN} корабельного депо
|
||||
STR_HEADING_FOR_SHIP_DEPOT_VEL :{ORANGE}Прямує до {TOWN} корабельного депо, {VELOCITY}
|
||||
STR_HEADING_FOR_SHIP_DEPOT_SERVICE :{LTBLUE}Техогляд в {TOWN} корабельному депо
|
||||
STR_HEADING_FOR_SHIP_DEPOT_SERVICE_VEL :{LTBLUE}Техогляд в {TOWN} корабельному депо, {VELOCITY}
|
||||
STR_981C_SHIP_IS_WAITING_IN_DEPOT :{WHITE}Корабель {COMMA} чекає в депо
|
||||
STR_981D_BUILD_SHIP_DOCK :{BLACK}Будувати док
|
||||
STR_981E_BUILD_SHIP_DEPOT_FOR_BUILDING :{BLACK}Будувати корабельне депо
|
||||
@@ -3108,7 +3120,7 @@ SERVICE_AT_SHIP_DEPOT :Ремонту
|
||||
##id 0xA000
|
||||
STR_A000_AIRPORTS :{WHITE}Аеропорти
|
||||
STR_A001_CAN_T_BUILD_AIRPORT_HERE :{WHITE}Неможливо будувати аеропорт тут...
|
||||
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} Ангар
|
||||
STR_A002_AIRCRAFT_HANGAR :{WHITE}{STATION} ангар
|
||||
STR_A003_NEW_AIRCRAFT :{BLACK}Новий літак
|
||||
STR_CLONE_AIRCRAFT :{BLACK}Клонувати
|
||||
STR_CLONE_AIRCRAFT_INFO :{BLACK}Будувати копію літака. Утримуйте CTRL для спільного завдання
|
||||
@@ -3128,7 +3140,7 @@ STR_A011_BUILT_VALUE :{LTBLUE}{ENGINE
|
||||
STR_A012_CAN_T_SEND_AIRCRAFT_TO :{WHITE}Неможливо направити літак до ангару...
|
||||
STR_HEADING_FOR_HANGAR :{ORANGE}Летить до {STATION} ангару
|
||||
STR_HEADING_FOR_HANGAR_VEL :{ORANGE}Летить до {STATION} ангару, {VELOCITY}
|
||||
STR_HEADING_FOR_HANGAR_SERVICE :{LTBLUE}Техогляд в {STATION} депо
|
||||
STR_HEADING_FOR_HANGAR_SERVICE :{LTBLUE}Техогляд в {STATION} ангарі
|
||||
STR_HEADING_FOR_HANGAR_SERVICE_VEL :{LTBLUE}Техогляд в {STATION} ангарі, {VELOCITY}
|
||||
STR_A014_AIRCRAFT_IS_WAITING_IN :{WHITE}Літак {COMMA} чекає в ангарі
|
||||
STR_A015_AIRCRAFT_IN_THE_WAY :{WHITE}Літак на шляху
|
||||
@@ -3181,14 +3193,14 @@ STR_TIMETABLE_TITLE :{WHITE}{VEHICLE
|
||||
|
||||
##id 0xB000
|
||||
STR_B000_ZEPPELIN_DISASTER_AT :{BLACK}{BIGFONT}Дирижабль впав на {STATION}!
|
||||
STR_B001_ROAD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Аварія!'НЛО' зіткнулось з авто!
|
||||
STR_B001_ROAD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Автомобіль знищений внаслідок зіткнення з НЛО!
|
||||
STR_B002_OIL_REFINERY_EXPLOSION :{BLACK}{BIGFONT}Вибухнув нафтопереробний завод біля міста {TOWN}!
|
||||
STR_B003_FACTORY_DESTROYED_IN_SUSPICIOUS :{BLACK}{BIGFONT}За невідомих обставин зруйновано фабрику біля міста {TOWN}!
|
||||
STR_B004_UFO_LANDS_NEAR :{BLACK}{BIGFONT}'НЛО' приземлилось біля міста {TOWN}!
|
||||
STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Обвал на вугільній шахті призвів до зсуву грунту біля міста {TOWN}!
|
||||
STR_B004_UFO_LANDS_NEAR :{BLACK}{BIGFONT}НЛО приземлилось біля міста {TOWN}!
|
||||
STR_B005_COAL_MINE_SUBSIDENCE_LEAVES :{BLACK}{BIGFONT}Зсув ґрунту внаслідок обвалу на вугільній шахті біля міста {TOWN}!
|
||||
STR_B006_FLOOD_VEHICLE_DESTROYED :{BLACK}{BIGFONT}Повінь!{}Щонайменше {COMMA} зникло безвісти та загинуло!
|
||||
|
||||
STR_BRIBE_FAILED :{WHITE}Ваша спроба дати хабаря була
|
||||
STR_BRIBE_FAILED :{WHITE}Ваша спроба дати хабара була
|
||||
STR_BRIBE_FAILED_2 :{WHITE}викрита місцевим слідчим
|
||||
STR_BUILD_DATE :{BLACK}Рік випуску: {LTBLUE}{DATE_LONG}
|
||||
|
||||
@@ -3216,7 +3228,7 @@ STR_PERFORMANCE_DETAIL_MIN_PROFIT_TIP :{BLACK}Приб
|
||||
STR_PERFORMANCE_DETAIL_MIN_INCOME_TIP :{BLACK}Найменший місячний прибуток за останні 12 кварталів
|
||||
STR_PERFORMANCE_DETAIL_MAX_INCOME_TIP :{BLACK}Найбільший місячний прибуток за останні 12 кварталів
|
||||
STR_PERFORMANCE_DETAIL_DELIVERED_TIP :{BLACK}Кількість одиниць вантажу, доставлених за останні 4 квартали
|
||||
STR_PERFORMANCE_DETAIL_CARGO_TIP :{BLACK}Кількість видів вантажу, доствлених за останній квартал
|
||||
STR_PERFORMANCE_DETAIL_CARGO_TIP :{BLACK}Кількість видів вантажу, доставлених за останній квартал
|
||||
STR_PERFORMANCE_DETAIL_MONEY_TIP :{BLACK}Сума коштів на рахунку компанії
|
||||
STR_PERFORMANCE_DETAIL_LOAN_TIP :{BLACK}Сума кредиту, що надано компанії
|
||||
STR_PERFORMANCE_DETAIL_TOTAL_TIP :{BLACK}Загальна кількість балів
|
||||
@@ -3228,7 +3240,7 @@ STR_NEWGRF_SET_PARAMETERS :{BLACK}Вста
|
||||
STR_NEWGRF_TIP :{BLACK}Список усіх ваших установок нової графіки. Виберіть для налаштування
|
||||
STR_NEWGRF_NO_FILES_INSTALLED :{BLACK}Відсутні файли нової графіки! Прочитайте інструкцію по встановленню нової графіки
|
||||
STR_NEWGRF_FILENAME :{BLACK}Ім'я файлу: {SILVER}{STRING}
|
||||
STR_NEWGRF_GRF_ID :{BLACK}ID графіки: {SILVER}{STRING}
|
||||
STR_NEWGRF_GRF_ID :{BLACK}GRF ID: {SILVER}{STRING}
|
||||
STR_NEWGRF_MD5SUM :{BLACK}MD5сума: {SILVER}{STRING}
|
||||
STR_NEWGRF_CONFIRMATION_TEXT :{YELLOW}Ви хочете зробити зміни у вже запущеній грі; це може привести до зависання OpenTTD.{}Ви впевнені що хочете зробити це?
|
||||
|
||||
@@ -3237,7 +3249,7 @@ STR_NEWGRF_ERROR_MSG_WARNING :{RED}Попер
|
||||
STR_NEWGRF_ERROR_MSG_ERROR :{RED}Помилка: {SILVER}{STRING}
|
||||
STR_NEWGRF_ERROR_MSG_FATAL :{RED}Збій: {SILVER}{STRING}
|
||||
STR_NEWGRF_ERROR_VERSION_NUMBER :{STRING} не буде працювати з версією TTDPatch, вказаною OpenTTD.
|
||||
STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{STRING} для {STRING} вірсії TTD.
|
||||
STR_NEWGRF_ERROR_DOS_OR_WINDOWS :{STRING} для {STRING}-версії TTD.
|
||||
STR_NEWGRF_ERROR_UNSET_SWITCH :{STRING} розроблено для {STRING}
|
||||
STR_NEWGRF_ERROR_INVALID_PARAMETER :Помилковий параметр для {STRING}: параметр {STRING} ({NUM})
|
||||
STR_NEWGRF_ERROR_LOAD_BEFORE :{STRING} має бути завантажений до {STRING}.
|
||||
@@ -3254,17 +3266,17 @@ STR_NEWGRF_MOVEUP :{BLACK}Вище
|
||||
STR_NEWGRF_MOVEUP_TIP :{BLACK}Перемістити вибрані файли вверх по списку
|
||||
STR_NEWGRF_MOVEDOWN :{BLACK}Нижче
|
||||
STR_NEWGRF_MOVEDOWN_TIP :{BLACK}Перемістити вибрані файли вниз по списку
|
||||
STR_NEWGRF_FILE_TIP :{BLACK}Список встановлених NewGRF файлів. Кслікніть на файлі щоб змінити його параметри
|
||||
STR_NEWGRF_FILE_TIP :{BLACK}Список встановлених NewGRF файлів. Клікніть на файлі, щоб змінити його параметри
|
||||
STR_NEWGRF_PARAMETER :{BLACK}Параметри: {SILVER}{STRING}
|
||||
STR_NEWGRF_PARAMETER_QUERY :{BLACK}ВведітьNewGRF параметри
|
||||
STR_NEWGRF_PARAMETER_QUERY :{BLACK}Введіть параметри NewGRF
|
||||
STR_NEWGRF_NO_INFO :{BLACK}Немає доступної інформації
|
||||
|
||||
STR_NEWGRF_ADD_CAPTION :{WHITE}Доступні NewGRF файли
|
||||
STR_NEWGRF_ADD_FILE :{BLACK}Додати файл
|
||||
STR_NEWGRF_ADD_FILE_TIP :{BLACK}Додати вибраний NewGRF файл до Вашої конфігурації
|
||||
STR_NEWGRF_RESCAN_FILES :{BLACK}Переглянути файли
|
||||
STR_NEWGRF_RESCAN_FILES :{BLACK}Пересканувати файли
|
||||
STR_NEWGRF_RESCAN_FILES_TIP :{BLACK}Оновити список доступних NewGRF файлів
|
||||
STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Не можу додати файл: дублювання GRF ID
|
||||
STR_NEWGRF_DUPLICATE_GRFID :{WHITE}Не можу додати файл: однакові GRF ID
|
||||
|
||||
STR_NEWGRF_NOT_FOUND :{RED}Таких файлів не знайдено
|
||||
STR_NEWGRF_DISABLED :{RED}Вимкнено
|
||||
@@ -3322,12 +3334,12 @@ STR_DEPOT_VEHICLE_ORDER_LIST_AIRCRAFT_TIP :{BLACK}Отри
|
||||
STR_DEPOT_AUTOREPLACE_TRAIN_TIP :{BLACK}Оновити всі поїзди в депо
|
||||
STR_DEPOT_AUTOREPLACE_ROADVEH_TIP :{BLACK}Оновити всі автомобілі в депо
|
||||
STR_DEPOT_AUTOREPLACE_SHIP_TIP :{BLACK}Оновити всі кораблі в депо
|
||||
STR_DEPOT_AUTOREPLACE_AIRCRAFT_TIP :{BLACK}Оновити всі літаки в депо
|
||||
STR_DEPOT_AUTOREPLACE_AIRCRAFT_TIP :{BLACK}Оновити всі літаки в ангарі
|
||||
|
||||
STR_VEHICLE_LIST_TRAIN_DEPOT :{BLACK}{STRING} - {COMMA} Поїзд{P "" и ів}
|
||||
STR_VEHICLE_LIST_ROADVEH_DEPOT :{BLACK}{STRING} - {COMMA} Авто {P "" "" ""}
|
||||
STR_VEHICLE_LIST_SHIP_DEPOT :{BLACK}{STRING} - {COMMA} Кораб{P ель лі лів}
|
||||
STR_VEHICLE_LIST_AIRCRAFT_DEPOT :{BLACK}{STRING} - {COMMA} Аеропорт
|
||||
STR_VEHICLE_LIST_TRAIN_DEPOT :{BLACK}{STRING} - {COMMA} поїзд{P "" и ів}
|
||||
STR_VEHICLE_LIST_ROADVEH_DEPOT :{BLACK}{STRING} - {COMMA} автомобіл{P ь і ів}
|
||||
STR_VEHICLE_LIST_SHIP_DEPOT :{BLACK}{STRING} - {COMMA} кораб{P ель лі лів}
|
||||
STR_VEHICLE_LIST_AIRCRAFT_DEPOT :{BLACK}{STRING} - {COMMA} літак {P "" и ів}
|
||||
|
||||
STR_REPLACE_VEHICLES_WHITE :{WHITE}Оновити {STRING}
|
||||
STR_REPLACE_VEHICLES_START :{BLACK}Почати оновлення
|
||||
@@ -3336,13 +3348,13 @@ STR_NOT_REPLACING :{BLACK}Не м
|
||||
STR_NOT_REPLACING_VEHICLE_SELECTED :{BLACK}Не вибрано машину
|
||||
STR_REPLACE_HELP_LEFT_ARRAY :{BLACK}Виберіть транспорт для оновлення
|
||||
STR_REPLACE_HELP_RIGHT_ARRAY :{BLACK}Виберіть новий транспорт, яким ви бажаєте замінити старий
|
||||
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Натисніть для припинення процесу оновлення потягів що вибрані ліворуч
|
||||
STR_REPLACE_HELP_START_BUTTON :{BLACK}Натисніть для запуску оновлення потягів, що вибрані праворуч на потяги що вибрані праворуч
|
||||
STR_REPLACE_HELP_STOP_BUTTON :{BLACK}Натисніть для припинення процесу оновлення потягів, що вибрані ліворуч
|
||||
STR_REPLACE_HELP_START_BUTTON :{BLACK}Натисніть для запуску оновлення потягів, що вибрані праворуч, на потяги, що вибрані праворуч
|
||||
STR_REPLACE_HELP_RAILTYPE :{BLACK}Виберіть тип колії, для якої Ви хочете оновити потяг
|
||||
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Показує на який потяг буде замінено потяг, зображелий ліворуч
|
||||
STR_REPLACE_HELP_REPLACE_INFO_TAB :{BLACK}Показує, яким потягом буде замінено потяг, вибраний ліворуч
|
||||
STR_REPLACE_HELP :{BLACK}Це дозволить Вам оновити одні види потягів іншими, коли потяг прибуде в депо
|
||||
STR_REPLACE_REMOVE_WAGON :{BLACK}Продаж вагонів!!!: {ORANGE}{SKIP}{STRING}
|
||||
STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Дозволити автооновленню видаляти вагони зберігаючи довжину потягу(починаючи спереду), якщо оновлення робить поїзд довшим.
|
||||
STR_REPLACE_REMOVE_WAGON :{BLACK}Продаж вагонів: {ORANGE}{SKIP}{STRING}
|
||||
STR_REPLACE_REMOVE_WAGON_HELP :{BLACK}Дозволити автооновленню видаляти вагони, зберігаючи довжину потягу (починаючи спереду), якщо оновлення робить поїзд довшим.
|
||||
STR_REPLACE_ENGINE_WAGON_SELECT :{BLACK}Оновлення: {ORANGE}{SKIP}{SKIP}{STRING}
|
||||
STR_REPLACE_ENGINE_WAGON_SELECT_HELP :{BLACK} ЕКСПЕРИМЕНТАЛЬНО {}Переключення між вікнами заміни потягів та вагонів.{}Автозаміна потягів відбудеться лише в тому випадку, якщо співпаде тип вантажу що перевозиться. Ця перевірка проводиться для кожного вагону під час автозаміни.
|
||||
STR_RAIL_VEHICLE_NOT_AVAILABLE :{WHITE}Поїзд недоступний
|
||||
@@ -3432,7 +3444,7 @@ STR_HEIGHTMAP_SCALE_WARNING_CAPTION :{WHITE}Заве
|
||||
STR_HEIGHTMAP_SCALE_WARNING_MESSAGE :{YELLOW}Розміри дуже великі. Продовжити генерацію?
|
||||
STR_TOWN_LAYOUT_WARNING_CAPTION :{WHITE}Попередження про схему міста
|
||||
STR_TOWN_LAYOUT_WARNING_MESSAGE :{YELLOW}Схема міста "не треба більше доріг" небажана. Продовжити генерацію?
|
||||
STR_HEIGHTMAP_NAME :{BLACK}Ім'я рельєфа:
|
||||
STR_HEIGHTMAP_NAME :{BLACK}Назва рельєфу:
|
||||
STR_HEIGHTMAP_SIZE :{BLACK}Розмір: {ORANGE}{NUM} x {NUM}
|
||||
STR_GENERATION_WORLD :{WHITE}Генерація світу...
|
||||
STR_GENERATION_ABORT :{BLACK}Перервати
|
||||
@@ -3498,12 +3510,13 @@ STR_DRIVE_THROUGH_ERROR_DIRECTION :{WHITE}...до
|
||||
STR_TRANSPARENCY_TOOLB :{WHITE}Опції прозорості
|
||||
STR_TRANSPARENT_SIGNS_DESC :{BLACK}Переключити прозорість для знаків станцій
|
||||
STR_TRANSPARENT_TREES_DESC :{BLACK}Переключити прозорість для дерев
|
||||
STR_TRANSPARENT_HOUSES_DESC :{BLACK}Переключити прозорість для будинків
|
||||
STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Переключити прозорість для промисловості
|
||||
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Переключити прозорість для споруд, таких як станції, депо, ЛЕП тощо
|
||||
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Переключити прозорість для мостів
|
||||
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Переключити прозорість для споруд, таких як маяки та антенни (може, потім)
|
||||
STR_TRANSPARENT_LOADING_DESC :{BLACK}Змінити прозорість індикаторів завантаження
|
||||
STR_TRANSPARENT_HOUSES_DESC :{BLACK}Переключити прозорість для будинків. CTRL+click - запам'ятати
|
||||
STR_TRANSPARENT_INDUSTRIES_DESC :{BLACK}Переключити прозорість для промисловості. CTRL+click - запам'ятати
|
||||
STR_TRANSPARENT_BUILDINGS_DESC :{BLACK}Переключити прозорість для споруд, таких як станції, депо тощо. CTRL+click - запам'ятати
|
||||
STR_TRANSPARENT_BRIDGES_DESC :{BLACK}Переключити прозорість для мостів. CTRL+click - запам'ятати
|
||||
STR_TRANSPARENT_STRUCTURES_DESC :{BLACK}Переключити прозорість для споруд, таких як маяки та антени. CTRL+click - запам'ятати
|
||||
STR_TRANSPARENT_CATENARY_DESC :{BLACK}Переключити прозорість для ЛЕП. CTRL+click - запам'ятати
|
||||
STR_TRANSPARENT_LOADING_DESC :{BLACK}Змінити прозорість індикаторів завантаження. CTRL+click - запам'ятати
|
||||
|
||||
STR_PERCENT_UP_SMALL :{TINYFONT}{WHITE}{NUM}%{UPARROW}
|
||||
STR_PERCENT_UP :{WHITE}{NUM}%{UPARROW}
|
||||
@@ -3554,7 +3567,7 @@ STR_PLAYER_NAME :{PLAYERNAME}
|
||||
STR_SIGN_NAME :{SIGN}
|
||||
STR_VEHICLE_NAME :{VEHICLE}
|
||||
|
||||
STR_NAME_MUST_BE_UNIQUE :{WHITE}Ім'я має бути унікальним
|
||||
STR_NAME_MUST_BE_UNIQUE :{WHITE}Назва має бути унікальною
|
||||
|
||||
#### Improved sign GUI
|
||||
STR_NEXT_SIGN_TOOLTIP :{BLACK}Наступне позначення
|
||||
@@ -3617,7 +3630,7 @@ STR_FACE_TIE_EARRING_TIP :{BLACK}Змін
|
||||
|
||||
############ signal GUI
|
||||
STR_SIGNAL_SELECTION :{WHITE}Вибір сигналів
|
||||
STR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Не можна сконвертувати сигнали тут...
|
||||
STR_SIGNAL_CAN_T_CONVERT_SIGNALS_HERE :{WHITE}Не можна конвертувати сигнали тут...
|
||||
STR_BUILD_SIGNAL_SEMAPHORE_NORM_TIP :{BLACK}Звичайний сигнал (семафор){}Сигнали необхідні для того, щоб уникнути зіткнень поїздів на залізницях, де більше одного поїзда.
|
||||
STR_BUILD_SIGNAL_SEMAPHORE_ENTRY_TIP :{BLACK}Вхідний сигнал (семафор){}Зелений, доки є один або більше зелених вихідних сигналів з наступної секції колії. Якщо нема - червоний.
|
||||
STR_BUILD_SIGNAL_SEMAPHORE_EXIT_TIP :{BLACK}Вихідний сигнал (семафор){}Поводиться, як звичайний сигнал, але необхідний для нормальної роботи вхідного або комбінованого сигналів.
|
||||
|
||||
+2
-2
@@ -977,8 +977,8 @@ static void ToolbarOptionsClick(Window *w)
|
||||
if (HasBit(_display_opt, DO_WAYPOINTS)) SetBit(x, 9);
|
||||
if (HasBit(_display_opt, DO_FULL_ANIMATION)) SetBit(x, 10);
|
||||
if (HasBit(_display_opt, DO_FULL_DETAIL)) SetBit(x, 11);
|
||||
if (IsTransparencySet(TO_HOUSES) && IsTransparencySet(TO_TREES)) SetBit(x, 12);
|
||||
if (IsTransparencySet(TO_SIGNS)) SetBit(x, 13);
|
||||
if (IsTransparencySet(TO_HOUSES)) SetBit(x, 12);
|
||||
if (IsTransparencySet(TO_SIGNS)) SetBit(x, 13);
|
||||
WP(w, menu_d).checked_items = x;
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -314,11 +314,11 @@ CommandCost CmdPause(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||
_pause_game += (p1 == 0) ? -1 : 1;
|
||||
|
||||
switch (_pause_game) {
|
||||
case (byte)-4:
|
||||
case (byte)-1:
|
||||
case -4:
|
||||
case -1:
|
||||
_pause_game = 0;
|
||||
break;
|
||||
case (byte)-3:
|
||||
case -3:
|
||||
ShowQuery(
|
||||
STR_NEWGRF_UNPAUSE_WARNING_TITLE,
|
||||
STR_NEWGRF_UNPAUSE_WARNING,
|
||||
|
||||
+3
-2
@@ -219,6 +219,7 @@ static const char *credits[] = {
|
||||
" Bjarni Corfitzen (Bjarni) - MacOSX port, coder and vehicles",
|
||||
" Matthijs Kooijman (blathijs) - Pathfinder-guru, pool rework",
|
||||
" Loïc Guilloux (glx) - General coding",
|
||||
" Christoph Elsenhans (frosch) - General coding",
|
||||
" Jaroslav Mazanec (KUDr) - YAPG (Yet Another Pathfinder God) ;)",
|
||||
" Jonathan Coome (Maedhros) - High priest of the newGRF Temple",
|
||||
" Attila Bán (MiHaMiX) - WebTranslator, Nightlies, Wiki and bugtracker host",
|
||||
@@ -1633,7 +1634,7 @@ static void SaveLoadDlgWndProc(Window *w, WindowEvent *e)
|
||||
case WE_DESTROY:
|
||||
/* pause is only used in single-player, non-editor mode, non menu mode */
|
||||
if (!_networking && _game_mode != GM_EDITOR && _game_mode != GM_MENU) {
|
||||
DoCommandP(0, 0, 0, NULL, CMD_PAUSE);
|
||||
if (_pause_game >= 0) DoCommandP(0, 0, 0, NULL, CMD_PAUSE);
|
||||
}
|
||||
FiosFreeSavegameList();
|
||||
ClrBit(_no_scroll, SCROLL_SAVE);
|
||||
@@ -1725,7 +1726,7 @@ void ShowSaveLoadDialog(SaveLoadDialogMode mode)
|
||||
/* pause is only used in single-player, non-editor mode, non-menu mode. It
|
||||
* will be unpaused in the WE_DESTROY event handler. */
|
||||
if (_game_mode != GM_MENU && !_networking && _game_mode != GM_EDITOR) {
|
||||
DoCommandP(0, 1, 0, NULL, CMD_PAUSE);
|
||||
if (_pause_game >= 0) DoCommandP(0, 1, 0, NULL, CMD_PAUSE);
|
||||
}
|
||||
|
||||
BuildFileList();
|
||||
|
||||
+69
-26
@@ -244,13 +244,24 @@ StringID MapGRFStringID(uint32 grfid, StringID str)
|
||||
STR_BAGS, STR_LITERS, STR_TONS, STR_NOTHING,
|
||||
STR_TONS, STR_NOTHING, STR_LITERS, STR_NOTHING
|
||||
};
|
||||
|
||||
/* 0xD0 and 0xDC stand for all the TextIDs in the range
|
||||
* of 0xD000 (misc graphics texts) and 0xDC00 (misc persistent texts).
|
||||
* These strings are unique to each grf file, and thus require to be used with the
|
||||
* grfid in which they are declared */
|
||||
if (GB(str, 8, 8) == 0xD0 || GB(str, 8, 8) == 0xDC) {
|
||||
return GetGRFStringID(grfid, str);
|
||||
switch (GB(str, 8, 8)) {
|
||||
case 0xD0: case 0xD1: case 0xD2: case 0xD3:
|
||||
case 0xDC:
|
||||
return GetGRFStringID(grfid, str);
|
||||
|
||||
case 0xD4: case 0xD5: case 0xD6: case 0xD7:
|
||||
/* Strings embedded via 0x81 have 0x400 added to them (no real
|
||||
* explanation why...) */
|
||||
return GetGRFStringID(grfid, str - 0x400);
|
||||
|
||||
default: break;
|
||||
}
|
||||
|
||||
#define TEXID_TO_STRINGID(begin, end, stringid) if (str >= begin && str <= end) return str + (stringid - begin)
|
||||
/* We have some changes in our cargo strings, resulting in some missing. */
|
||||
TEXID_TO_STRINGID(0x000E, 0x002D, STR_000E);
|
||||
@@ -377,20 +388,22 @@ static bool RailVehicleChangeInfo(uint engine, int numinfo, int prop, byte **buf
|
||||
|
||||
if (rvi->railveh_type == RAILVEH_MULTIHEAD) runcostfact /= 2;
|
||||
|
||||
rvi->running_cost_base = runcostfact;
|
||||
rvi->running_cost = runcostfact;
|
||||
} break;
|
||||
|
||||
case 0x0E: { // Running cost base
|
||||
uint32 base = grf_load_dword(&buf);
|
||||
|
||||
switch (base) {
|
||||
case 0x4C30: rvi->running_cost_class = 0; break;
|
||||
case 0x4C36: rvi->running_cost_class = 1; break;
|
||||
case 0x4C3C: rvi->running_cost_class = 2; break;
|
||||
case 0: break; // Used by wagons
|
||||
default:
|
||||
grfmsg(1, "RailVehicleChangeInfo: Unsupported running cost base 0x%04X, ignoring", base);
|
||||
break;
|
||||
/* These magic numbers are used in GRFs to specify the base cost:
|
||||
* http://wiki.ttdpatch.net/tiki-index.php?page=BaseCosts
|
||||
*/
|
||||
if (base == 0) {
|
||||
rvi->running_cost_class = 0xFF;
|
||||
} else if (base < 0x4B34 || base > 0x4C54 || (base - 0x4B34) % 6 != 0) {
|
||||
grfmsg(1, "RailVehicleChangeInfo: Unsupported running cost base 0x%04X, ignoring", base);
|
||||
} else {
|
||||
/* Convert the magic number to an index into the price data */
|
||||
rvi->running_cost_class = (base - 0x4B34) / 6;
|
||||
}
|
||||
} break;
|
||||
|
||||
@@ -411,14 +424,14 @@ static bool RailVehicleChangeInfo(uint engine, int numinfo, int prop, byte **buf
|
||||
if (rvi->railveh_type != RAILVEH_MULTIHEAD) {
|
||||
// adjust power and running cost if needed
|
||||
rvi->power /= 2;
|
||||
rvi->running_cost_base /= 2;
|
||||
rvi->running_cost /= 2;
|
||||
}
|
||||
rvi->railveh_type = RAILVEH_MULTIHEAD;
|
||||
} else {
|
||||
if (rvi->railveh_type == RAILVEH_MULTIHEAD) {
|
||||
// adjust power and running cost if needed
|
||||
rvi->power *= 2;
|
||||
rvi->running_cost_base *= 2;
|
||||
rvi->running_cost *= 2;
|
||||
}
|
||||
rvi->railveh_type = rvi->power == 0 ?
|
||||
RAILVEH_WAGON : RAILVEH_SINGLEHEAD;
|
||||
@@ -594,12 +607,23 @@ static bool RoadVehicleChangeInfo(uint engine, int numinfo, int prop, byte **buf
|
||||
rvi->running_cost = grf_load_byte(&buf);
|
||||
break;
|
||||
|
||||
case 0x0A: // Running cost base
|
||||
/** @todo : I have no idea. --pasky
|
||||
* I THINK it is used for overriding the base cost of all road vehicle (_price.roadveh_base) --belugas */
|
||||
grf_load_dword(&buf);
|
||||
ret = true;
|
||||
case 0x0A: { // Running cost base
|
||||
uint32 base= grf_load_dword(&buf);
|
||||
|
||||
/* These magic numbers are used in GRFs to specify the base cost:
|
||||
* http://wiki.ttdpatch.net/tiki-index.php?page=BaseCosts
|
||||
*/
|
||||
if (base == 0) {
|
||||
rvi->running_cost_class = 0xFF;
|
||||
} else if (base < 0x4B34 || base > 0x4C54 || (base - 0x4B34) % 6 != 0) {
|
||||
grfmsg(1, "RailVehicleChangeInfo: Unsupported running cost base 0x%04X, ignoring", base);
|
||||
} else {
|
||||
/* Convert the magic number to an index into the price data */
|
||||
rvi->running_cost_class = (base - 0x4B34) / 6;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
case 0x0E: { // Sprite ID
|
||||
uint8 spriteid = grf_load_byte(&buf);
|
||||
@@ -3229,6 +3253,9 @@ static void FeatureNewName(byte *buf, int len)
|
||||
break;
|
||||
|
||||
case 0xD0:
|
||||
case 0xD1:
|
||||
case 0xD2:
|
||||
case 0xD3:
|
||||
case 0xDC:
|
||||
AddGRFString(_cur_grffile->grfid, id, lang, new_scheme, name, STR_UNDEFINED);
|
||||
break;
|
||||
@@ -3832,12 +3859,12 @@ static void ScanInfo(byte *buf, int len)
|
||||
|
||||
len -= 6;
|
||||
const char *name = grf_load_string(&buf, len);
|
||||
_cur_grfconfig->name = TranslateTTDPatchCodes(name);
|
||||
_cur_grfconfig->name = TranslateTTDPatchCodes(grfid, name);
|
||||
|
||||
len -= strlen(name) + 1;
|
||||
if (len > 0) {
|
||||
const char *info = grf_load_string(&buf, len);
|
||||
_cur_grfconfig->info = TranslateTTDPatchCodes(info);
|
||||
_cur_grfconfig->info = TranslateTTDPatchCodes(grfid, info);
|
||||
}
|
||||
|
||||
/* GLS_INFOSCAN only looks for the action 8, so we can skip the rest of the file */
|
||||
@@ -4007,7 +4034,7 @@ static void GRFLoadError(byte *buf, int len)
|
||||
const char *message = grf_load_string(&buf, len);
|
||||
len -= (strlen(message) + 1);
|
||||
|
||||
error->custom_message = TranslateTTDPatchCodes(message);
|
||||
error->custom_message = TranslateTTDPatchCodes(_cur_grffile->grfid, message);
|
||||
} else {
|
||||
error->message = msgstr[message_id];
|
||||
}
|
||||
@@ -4016,7 +4043,7 @@ static void GRFLoadError(byte *buf, int len)
|
||||
const char *data = grf_load_string(&buf, len);
|
||||
len -= (strlen(data) + 1);
|
||||
|
||||
error->data = TranslateTTDPatchCodes(data);
|
||||
error->data = TranslateTTDPatchCodes(_cur_grffile->grfid, data);
|
||||
}
|
||||
|
||||
/* Only two parameter numbers can be used in the string. */
|
||||
@@ -4078,8 +4105,18 @@ static uint32 GetPatchVariable(uint8 param)
|
||||
/* empty wagon speed increase */
|
||||
case 0x0F: return 0;
|
||||
|
||||
/* plane speed factor */
|
||||
case 0x10: return 4;
|
||||
/* plane speed factor; our patch option is reversed from TTDPatch's,
|
||||
* the following is good for 1x, 2x and 4x (most common?) and...
|
||||
* well not really for 3x. */
|
||||
case 0x10:
|
||||
switch (_patches.plane_speed) {
|
||||
default:
|
||||
case 4: return 1;
|
||||
case 3: return 2;
|
||||
case 2: return 2;
|
||||
case 1: return 4;
|
||||
}
|
||||
|
||||
|
||||
/* 2CC colormap base sprite */
|
||||
case 0x11: return SPR_2CCMAP_BASE;
|
||||
@@ -4521,7 +4558,7 @@ static void FeatureTownName(byte *buf, int len)
|
||||
if (!check_length(len, 1, "FeatureTownName: style name")) return;
|
||||
const char *name = grf_load_string(&buf, len);
|
||||
len -= strlen(name) + 1;
|
||||
grfmsg(6, "FeatureTownName: lang 0x%X -> '%s'", lang, TranslateTTDPatchCodes(name));
|
||||
grfmsg(6, "FeatureTownName: lang 0x%X -> '%s'", lang, TranslateTTDPatchCodes(grfid, name));
|
||||
|
||||
townname->name[nb_gen] = AddGRFString(grfid, id, lang, new_scheme, name, STR_UNDEFINED);
|
||||
|
||||
@@ -4574,7 +4611,7 @@ static void FeatureTownName(byte *buf, int len)
|
||||
} else {
|
||||
const char *text = grf_load_string(&buf, len);
|
||||
len -= strlen(text) + 1;
|
||||
townname->partlist[id][i].parts[j].data.text = TranslateTTDPatchCodes(text);
|
||||
townname->partlist[id][i].parts[j].data.text = TranslateTTDPatchCodes(grfid, text);
|
||||
grfmsg(6, "FeatureTownName: part %d, text %d, '%s' (with probability %d)", i, j, townname->partlist[id][i].parts[j].data.text, prob);
|
||||
}
|
||||
townname->partlist[id][i].parts[j].prob = prob;
|
||||
@@ -5816,6 +5853,12 @@ void LoadNewGRF(uint load_index, uint file_index)
|
||||
* in each loading stage, (try to) open each file specified in the config
|
||||
* and load information from it. */
|
||||
for (GrfLoadingStage stage = GLS_LABELSCAN; stage <= GLS_ACTIVATION; stage++) {
|
||||
/* Set activated grfs back to will-be-activated between reservation- and activation-stage.
|
||||
* This ensures that action7/9 conditions 0x06 - 0x0A work correctly. */
|
||||
for (GRFConfig *c = _grfconfig; c != NULL; c = c->next) {
|
||||
if (c->status == GCS_ACTIVATED) c->status = GCS_INITIALISED;
|
||||
}
|
||||
|
||||
uint slot = file_index;
|
||||
|
||||
_cur_stage = stage;
|
||||
|
||||
@@ -128,4 +128,6 @@ void CDECL grfmsg(int severity, const char *str, ...);
|
||||
bool HasGrfMiscBit(GrfMiscBit bit);
|
||||
bool GetGlobalVariable(byte param, uint32 *value);
|
||||
|
||||
StringID MapGRFStringID(uint32 grfid, StringID str);
|
||||
|
||||
#endif /* NEWGRF_H */
|
||||
|
||||
+22
-14
@@ -23,6 +23,8 @@
|
||||
#include "vehicle_func.h"
|
||||
#include "core/random_func.hpp"
|
||||
#include "direction_func.h"
|
||||
#include "rail_map.h"
|
||||
#include "rail.h"
|
||||
|
||||
|
||||
int _traininfo_vehicle_pitch = 0;
|
||||
@@ -512,12 +514,13 @@ static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, by
|
||||
memset(common_subtypes, 0, sizeof(common_subtypes));
|
||||
|
||||
for (u = v; u != NULL; u = u->Next()) {
|
||||
if (v->type == VEH_TRAIN) user_def_data |= u->u.rail.user_def_data;
|
||||
|
||||
/* Skip empty engines */
|
||||
if (u->cargo_cap == 0) continue;
|
||||
|
||||
cargo_classes |= GetCargo(u->cargo_type)->classes;
|
||||
common_cargos[u->cargo_type]++;
|
||||
if (v->type == VEH_TRAIN) user_def_data |= u->u.rail.user_def_data;
|
||||
common_subtypes[u->cargo_subtype]++;
|
||||
}
|
||||
|
||||
@@ -623,12 +626,17 @@ static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, by
|
||||
case 0xFF: {
|
||||
uint16 modflags = 0;
|
||||
|
||||
/* @todo: There are some other bits that should be implemented:
|
||||
* bit 5: Whether the rail vehicle is powered or not (mostly useful for wagons).
|
||||
* bit 6: This is an electrically powered rail vehicle which is running on normal rail.
|
||||
* bit 8: (Maybe?) Toggled whenever the train reverses.
|
||||
*/
|
||||
if (v->type == VEH_TRAIN) {
|
||||
const Vehicle *u = IsTrainWagon(v) && HasBit(v->vehicle_flags, VRF_POWEREDWAGON) ? v->First() : v;
|
||||
RailType railtype = GetRailType(v->tile);
|
||||
bool powered = IsTrainEngine(v) || (IsTrainWagon(v) && HasBit(v->vehicle_flags, VRF_POWEREDWAGON));
|
||||
bool has_power = powered && HasPowerOnRail(u->u.rail.railtype, railtype);
|
||||
bool is_electric = powered && u->u.rail.railtype == RAILTYPE_ELECTRIC;
|
||||
|
||||
if (has_power) SetBit(modflags, 5);
|
||||
if (is_electric && !has_power) SetBit(modflags, 6);
|
||||
if (HasBit(v->u.rail.flags, VRF_TOGGLE_REVERSE)) SetBit(modflags, 8);
|
||||
}
|
||||
if (HasBit(v->vehicle_flags, VF_BUILT_AS_PROTOTYPE)) SetBit(modflags, 10);
|
||||
|
||||
return variable == 0xFE ? modflags : GB(modflags, 8, 8);
|
||||
@@ -694,14 +702,14 @@ static uint32 VehicleGetVariable(const ResolverObject *object, byte variable, by
|
||||
case 0x4F: return GB(v->reliability, 8, 8);
|
||||
case 0x50: return v->reliability_spd_dec;
|
||||
case 0x51: return GB(v->reliability_spd_dec, 8, 8);
|
||||
case 0x52: return ClampToI32(v->profit_this_year >> 8);
|
||||
case 0x53: return GB(ClampToI32(v->profit_this_year >> 8), 8, 24);
|
||||
case 0x54: return GB(ClampToI32(v->profit_this_year >> 8), 16, 16);
|
||||
case 0x55: return GB(ClampToI32(v->profit_this_year >> 8), 24, 8);
|
||||
case 0x56: return ClampToI32(v->profit_last_year >> 8);
|
||||
case 0x57: return GB(ClampToI32(v->profit_last_year >> 8), 8, 24);
|
||||
case 0x58: return GB(ClampToI32(v->profit_last_year >> 8), 16, 16);
|
||||
case 0x59: return GB(ClampToI32(v->profit_last_year >> 8), 24, 8);
|
||||
case 0x52: return ClampToI32(v->GetDisplayProfitThisYear());
|
||||
case 0x53: return GB(ClampToI32(v->GetDisplayProfitThisYear()), 8, 24);
|
||||
case 0x54: return GB(ClampToI32(v->GetDisplayProfitThisYear()), 16, 16);
|
||||
case 0x55: return GB(ClampToI32(v->GetDisplayProfitThisYear()), 24, 8);
|
||||
case 0x56: return ClampToI32(v->GetDisplayProfitLastYear());
|
||||
case 0x57: return GB(ClampToI32(v->GetDisplayProfitLastYear()), 8, 24);
|
||||
case 0x58: return GB(ClampToI32(v->GetDisplayProfitLastYear()), 16, 16);
|
||||
case 0x59: return GB(ClampToI32(v->GetDisplayProfitLastYear()), 24, 8);
|
||||
case 0x5A: return v->Next() == NULL ? INVALID_VEHICLE : v->Next()->index;
|
||||
case 0x5C: return ClampToI32(v->value);
|
||||
case 0x5D: return GB(ClampToI32(v->value), 8, 24);
|
||||
|
||||
@@ -352,14 +352,14 @@ uint32 IndustryGetVariable(const ResolverObject *object, byte variable, byte par
|
||||
case 0xA6: return industry->type;
|
||||
case 0xA7: return industry->founder;
|
||||
case 0xA8: return industry->random_color;
|
||||
case 0xA9: return Clamp(0, industry->last_prod_year - ORIGINAL_BASE_YEAR, 255);
|
||||
case 0xA9: return Clamp(industry->last_prod_year - ORIGINAL_BASE_YEAR, 0, 255);
|
||||
case 0xAA: return industry->counter;
|
||||
case 0xAB: return GB(industry->counter, 8, 8);
|
||||
case 0xAC: return industry->was_cargo_delivered;
|
||||
|
||||
case 0xB0: return Clamp(0, industry->construction_date - DAYS_TILL_ORIGINAL_BASE_YEAR, 65535); // Date when built since 1920 (in days)
|
||||
case 0xB0: return Clamp(industry->construction_date - DAYS_TILL_ORIGINAL_BASE_YEAR, 0, 65535); // Date when built since 1920 (in days)
|
||||
case 0xB3: return industry->construction_type; // Construction type
|
||||
case 0xB4: return Clamp(0, industry->last_cargo_accepted_at - DAYS_TILL_ORIGINAL_BASE_YEAR, 65535); // Date last cargo accepted since 1920 (in days)
|
||||
case 0xB4: return Clamp(industry->last_cargo_accepted_at - DAYS_TILL_ORIGINAL_BASE_YEAR, 0, 65535); // Date last cargo accepted since 1920 (in days)
|
||||
}
|
||||
|
||||
DEBUG(grf, 1, "Unhandled industry property 0x%X", variable);
|
||||
|
||||
@@ -291,13 +291,13 @@ static uint32 GetRailContinuationInfo(TileIndex tile)
|
||||
uint i;
|
||||
|
||||
for (i = 0; i < lengthof(x_dir); i++, dir++, diagdir++) {
|
||||
uint32 ts = GetTileTrackStatus(tile + TileOffsByDir(*dir), TRANSPORT_RAIL, 0);
|
||||
if (ts != 0) {
|
||||
TrackBits trackbits = TrackStatusToTrackBits(GetTileTrackStatus(tile + TileOffsByDir(*dir), TRANSPORT_RAIL, 0));
|
||||
if (trackbits != TRACK_BIT_NONE) {
|
||||
/* If there is any track on the tile, set the bit in the second byte */
|
||||
SetBit(res, i + 8);
|
||||
|
||||
/* If any track reaches our exit direction, set the bit in the lower byte */
|
||||
if (ts & DiagdirReachesTracks(*diagdir)) SetBit(res, i);
|
||||
if (trackbits & DiagdirReachesTracks(*diagdir)) SetBit(res, i);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -192,7 +192,7 @@ static GRFTextEntry _grf_text[(1 << TABSIZE) * 3];
|
||||
static byte _currentLangID = GRFLX_ENGLISH; ///< by default, english is used.
|
||||
|
||||
|
||||
char *TranslateTTDPatchCodes(const char *str)
|
||||
char *TranslateTTDPatchCodes(uint32 grfid, const char *str)
|
||||
{
|
||||
char *tmp = MallocT<char>(strlen(str) * 10 + 1); // Allocate space to allow for expansion
|
||||
char *d = tmp;
|
||||
@@ -241,7 +241,7 @@ char *TranslateTTDPatchCodes(const char *str)
|
||||
string = *str++;
|
||||
string |= *str++ << 8;
|
||||
d += Utf8Encode(d, SCC_STRING_ID);
|
||||
d += Utf8Encode(d, string);
|
||||
d += Utf8Encode(d, MapGRFStringID(grfid, string));
|
||||
break;
|
||||
}
|
||||
case 0x82:
|
||||
@@ -345,7 +345,7 @@ StringID AddGRFString(uint32 grfid, uint16 stringid, byte langid_to_add, bool ne
|
||||
/* Too many strings allocated, return empty */
|
||||
if (id == lengthof(_grf_text)) return STR_EMPTY;
|
||||
|
||||
translatedtext = TranslateTTDPatchCodes(text_to_add);
|
||||
translatedtext = TranslateTTDPatchCodes(grfid, text_to_add);
|
||||
|
||||
GRFText *newtext = GRFText::New(langid_to_add, translatedtext);
|
||||
|
||||
|
||||
+1
-1
@@ -11,7 +11,7 @@ StringID GetGRFStringID(uint32 grfid, uint16 stringid);
|
||||
const char *GetGRFStringPtr(uint16 stringid);
|
||||
void CleanUpStrings();
|
||||
void SetCurrentGrfLangID(const char *iso_name);
|
||||
char *TranslateTTDPatchCodes(const char *str);
|
||||
char *TranslateTTDPatchCodes(uint32 grfid, const char *str);
|
||||
|
||||
bool CheckGrfLangID(byte lang_id, byte grf_version);
|
||||
|
||||
|
||||
+34
-25
@@ -7,6 +7,7 @@
|
||||
#include "settings_type.h"
|
||||
#include "debug.h"
|
||||
#include "core/bitmath_func.hpp"
|
||||
#include "core/math_func.hpp"
|
||||
#include "town.h"
|
||||
|
||||
/** This function implements the town variables that newGRF defines.
|
||||
@@ -30,8 +31,8 @@ uint32 TownGetVariable(byte variable, byte parameter, bool *available, const Tow
|
||||
/* Town properties */
|
||||
case 0x80: return t->xy;
|
||||
case 0x81: return GB(t->xy, 8, 8);
|
||||
case 0x82: return t->population;
|
||||
case 0x83: return GB(t->population, 8, 8);
|
||||
case 0x82: return ClampToU16(t->population);
|
||||
case 0x83: return GB(ClampToU16(t->population), 8, 8);
|
||||
case 0x8A: return t->grow_counter;
|
||||
case 0x92: return t->flags12; // In original game, 0x92 and 0x93 are really one word. Since flags12 is a byte, this is to adjust
|
||||
case 0x93: return 0;
|
||||
@@ -46,33 +47,41 @@ uint32 TownGetVariable(byte variable, byte parameter, bool *available, const Tow
|
||||
case 0x9C: return t->radius[4];
|
||||
case 0x9D: return GB(t->radius[4], 8, 8);
|
||||
case 0x9E: return t->ratings[0];
|
||||
case 0x9F: return t->ratings[1];
|
||||
case 0xA0: return t->ratings[2];
|
||||
case 0xA1: return t->ratings[3];
|
||||
case 0xA2: return t->ratings[4];
|
||||
case 0xA3: return t->ratings[5];
|
||||
case 0xA4: return t->ratings[6];
|
||||
case 0xA5: return t->ratings[7];
|
||||
case 0x9F: return GB(t->ratings[0], 8, 8);
|
||||
case 0xA0: return t->ratings[1];
|
||||
case 0xA1: return GB(t->ratings[1], 8, 8);
|
||||
case 0xA2: return t->ratings[2];
|
||||
case 0xA3: return GB(t->ratings[2], 8, 8);
|
||||
case 0xA4: return t->ratings[3];
|
||||
case 0xA5: return GB(t->ratings[3], 8, 8);
|
||||
case 0xA6: return t->ratings[4];
|
||||
case 0xA7: return GB(t->ratings[4], 8, 8);
|
||||
case 0xA8: return t->ratings[5];
|
||||
case 0xA9: return GB(t->ratings[5], 8, 8);
|
||||
case 0xAA: return t->ratings[6];
|
||||
case 0xAB: return GB(t->ratings[6], 8, 8);
|
||||
case 0xAC: return t->ratings[7];
|
||||
case 0xAD: return GB(t->ratings[7], 8, 8);
|
||||
case 0xAE: return t->have_ratings;
|
||||
case 0xB2: return t->statues;
|
||||
case 0xB6: return t->num_houses;
|
||||
case 0xB9: return t->growth_rate;
|
||||
case 0xBA: return t->new_max_pass;
|
||||
case 0xBB: return GB(t->new_max_pass, 8, 8);
|
||||
case 0xBC: return t->new_max_mail;
|
||||
case 0xBD: return GB(t->new_max_mail, 8, 8);
|
||||
case 0xBE: return t->new_act_pass;
|
||||
case 0xBF: return GB(t->new_act_pass, 8, 8);
|
||||
case 0xC0: return t->new_act_mail;
|
||||
case 0xC1: return GB(t->new_act_mail, 8, 8);
|
||||
case 0xC2: return t->max_pass;
|
||||
case 0xC3: return GB(t->max_pass, 8, 8);
|
||||
case 0xC4: return t->max_mail;
|
||||
case 0xC5: return GB(t->max_mail, 8, 8);
|
||||
case 0xC6: return t->act_pass;
|
||||
case 0xC7: return GB(t->act_pass, 8, 8);
|
||||
case 0xC8: return t->act_mail;
|
||||
case 0xC9: return GB(t->act_mail, 8, 8);
|
||||
case 0xBA: return ClampToU16(t->new_max_pass);
|
||||
case 0xBB: return GB(ClampToU16(t->new_max_pass), 8, 8);
|
||||
case 0xBC: return ClampToU16(t->new_max_mail);
|
||||
case 0xBD: return GB(ClampToU16(t->new_max_mail), 8, 8);
|
||||
case 0xBE: return ClampToU16(t->new_act_pass);
|
||||
case 0xBF: return GB(ClampToU16(t->new_act_pass), 8, 8);
|
||||
case 0xC0: return ClampToU16(t->new_act_mail);
|
||||
case 0xC1: return GB(ClampToU16(t->new_act_mail), 8, 8);
|
||||
case 0xC2: return ClampToU16(t->max_pass);
|
||||
case 0xC3: return GB(ClampToU16(t->max_pass), 8, 8);
|
||||
case 0xC4: return ClampToU16(t->max_mail);
|
||||
case 0xC5: return GB(ClampToU16(t->max_mail), 8, 8);
|
||||
case 0xC6: return ClampToU16(t->act_pass);
|
||||
case 0xC7: return GB(ClampToU16(t->act_pass), 8, 8);
|
||||
case 0xC8: return ClampToU16(t->act_mail);
|
||||
case 0xC9: return GB(ClampToU16(t->act_mail), 8, 8);
|
||||
case 0xCA: return t->pct_pass_transported;
|
||||
case 0xCB: return t->pct_mail_transported;
|
||||
case 0xCC: return t->new_act_food;
|
||||
|
||||
+1
-2
@@ -607,8 +607,7 @@ static bool CanEnterTile(TileIndex tile, DiagDirection dir, TransportType type,
|
||||
*/
|
||||
static TrackdirBits GetDriveableTrackdirBits(TileIndex dst_tile, Trackdir src_trackdir, TransportType type, uint subtype)
|
||||
{
|
||||
uint32 ts = GetTileTrackStatus(dst_tile, type, subtype);
|
||||
TrackdirBits trackdirbits = (TrackdirBits)(ts & TRACKDIR_BIT_MASK);
|
||||
TrackdirBits trackdirbits = TrackStatusToTrackdirBits(GetTileTrackStatus(dst_tile, type, subtype));
|
||||
|
||||
if (trackdirbits == 0 && type == TRANSPORT_ROAD && HasBit(subtype, ROADTYPE_TRAM)) {
|
||||
/* GetTileTrackStatus() returns 0 for single tram bits.
|
||||
|
||||
+5
-3
@@ -816,9 +816,9 @@ bool SafeSaveOrLoad(const char *filename, int mode, int newgm, Subdirectory subd
|
||||
|
||||
case SL_REINIT:
|
||||
switch (ogm) {
|
||||
default:
|
||||
case GM_MENU: LoadIntroGame(); break;
|
||||
case GM_EDITOR: MakeNewEditorWorld(); break;
|
||||
default: MakeNewGame(false); break;
|
||||
}
|
||||
return false;
|
||||
|
||||
@@ -1399,7 +1399,7 @@ bool AfterLoadGame()
|
||||
|
||||
switch (gcf_res) {
|
||||
case GLC_COMPATIBLE: _switch_mode_errorstr = STR_NEWGRF_COMPATIBLE_LOAD_WARNING; break;
|
||||
case GLC_NOT_FOUND: _switch_mode_errorstr = STR_NEWGRF_DISABLED_WARNING; _pause_game = (byte)-1; break;
|
||||
case GLC_NOT_FOUND: _switch_mode_errorstr = STR_NEWGRF_DISABLED_WARNING; _pause_game = -1; break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
@@ -2364,7 +2364,9 @@ bool AfterLoadGame()
|
||||
|
||||
if (CheckSavegameVersion(87)) {
|
||||
for (TileIndex t = 0; t < map_size; t++) {
|
||||
if (!IsTileType(t, MP_VOID) && (TileX(t) == 0 || TileY(t) == 0 || TileX(t) == MapMaxX() - 1 || TileY(t) == MapMaxY() - 1)) {
|
||||
/* skip oil rigs at borders! */
|
||||
if ((IsTileType(t, MP_WATER) || IsBuoyTile(t)) &&
|
||||
(TileX(t) == 0 || TileY(t) == 0 || TileX(t) == MapMaxX() - 1 || TileY(t) == MapMaxY() - 1)) {
|
||||
/* Some version 86 savegames have wrong water class at map borders (under buoy, or after removing buoy).
|
||||
* This conversion has to be done before buoys with invalid owner are removed. */
|
||||
SetWaterClass(t, WATER_CLASS_SEA);
|
||||
|
||||
+1
-1
@@ -156,6 +156,6 @@ void OTTD_SendThreadMessage(ThreadMsg msg);
|
||||
|
||||
extern byte _game_mode;
|
||||
extern bool _exit_game;
|
||||
extern byte _pause_game;
|
||||
extern int8 _pause_game;
|
||||
|
||||
#endif /* OPENTTD_H */
|
||||
|
||||
@@ -126,6 +126,7 @@ struct BackuppedOrders {
|
||||
|
||||
VehicleID clone;
|
||||
VehicleOrderID orderindex;
|
||||
GroupID group;
|
||||
Order *order;
|
||||
uint16 service_interval;
|
||||
char *name;
|
||||
|
||||
+13
-1
@@ -933,6 +933,7 @@ void BackupVehicleOrders(const Vehicle *v, BackuppedOrders *bak)
|
||||
|
||||
/* Save general info */
|
||||
bak->orderindex = v->cur_order_index;
|
||||
bak->group = v->group_id;
|
||||
bak->service_interval = v->service_interval;
|
||||
if (v->name != NULL) bak->name = strdup(v->name);
|
||||
|
||||
@@ -992,13 +993,24 @@ void RestoreVehicleOrders(const Vehicle *v, const BackuppedOrders *bak)
|
||||
* fails in test mode. By bypassing the test-mode, that no longer is a problem. */
|
||||
for (uint i = 0; bak->order[i].IsValid(); i++) {
|
||||
if (!DoCommandP(0, v->index + (i << 16), PackOrder(&bak->order[i]), NULL,
|
||||
CMD_INSERT_ORDER | CMD_NO_TEST_IF_IN_NETWORK))
|
||||
CMD_INSERT_ORDER | CMD_NO_TEST_IF_IN_NETWORK)) {
|
||||
break;
|
||||
}
|
||||
|
||||
/* Copy timetable */
|
||||
if (!DoCommandP(0, v->index | (i << 16) | (1 << 25),
|
||||
bak->order[i].wait_time << 16 | bak->order[i].travel_time, NULL,
|
||||
CMD_CHANGE_TIMETABLE | CMD_NO_TEST_IF_IN_NETWORK)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Restore vehicle order-index and service interval */
|
||||
DoCommandP(0, v->index, bak->orderindex | (bak->service_interval << 16) , NULL, CMD_RESTORE_ORDER_INDEX);
|
||||
|
||||
/* Restore vehicle group */
|
||||
DoCommandP(0, bak->group, v->index, NULL, CMD_ADD_VEHICLE_GROUP);
|
||||
}
|
||||
|
||||
/** Restore the current order-index of a vehicle and sets service-interval.
|
||||
|
||||
+4
-4
@@ -66,8 +66,8 @@ END
|
||||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 0,6,0,@@REVISION@@
|
||||
PRODUCTVERSION 0,6,0,@@REVISION@@
|
||||
FILEVERSION 0,6,0,12338
|
||||
PRODUCTVERSION 0,6,0,12338
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
@@ -85,14 +85,14 @@ BEGIN
|
||||
VALUE "Comments", "This program is licensed under the GNU General Public License.\0"
|
||||
VALUE "CompanyName", "OpenTTD Development Team\0"
|
||||
VALUE "FileDescription", "OpenTTD\0"
|
||||
VALUE "FileVersion", "Development @@VERSION@@\0"
|
||||
VALUE "FileVersion", "@@VERSION@@\0"
|
||||
VALUE "InternalName", "openttd\0"
|
||||
VALUE "LegalCopyright", "Copyright © OpenTTD Developers 2002-2007. All Rights Reserved.\0"
|
||||
VALUE "LegalTrademarks", "\0"
|
||||
VALUE "OriginalFilename", "openttd.exe\0"
|
||||
VALUE "PrivateBuild", "\0"
|
||||
VALUE "ProductName", "OpenTTD\0"
|
||||
VALUE "ProductVersion", "Development @@VERSION@@\0"
|
||||
VALUE "ProductVersion", "@@VERSION@@\0"
|
||||
VALUE "SpecialBuild", "-\0"
|
||||
END
|
||||
END
|
||||
|
||||
+20
-49
@@ -140,7 +140,6 @@ static const byte _otherdir_mask[4] = {
|
||||
|
||||
static void TPFMode2(TrackPathFinder* tpf, TileIndex tile, DiagDirection direction)
|
||||
{
|
||||
uint bits;
|
||||
RememberData rd;
|
||||
|
||||
assert(tpf->tracktype == TRANSPORT_WATER);
|
||||
@@ -153,43 +152,35 @@ static void TPFMode2(TrackPathFinder* tpf, TileIndex tile, DiagDirection directi
|
||||
if (++tpf->rd.cur_length > 50)
|
||||
return;
|
||||
|
||||
bits = GetTileTrackStatus(tile, tpf->tracktype, tpf->sub_type);
|
||||
bits = (byte)((bits | (bits >> 8)) & _bits_mask[direction]);
|
||||
if (bits == 0)
|
||||
return;
|
||||
TrackStatus ts = GetTileTrackStatus(tile, tpf->tracktype, tpf->sub_type);
|
||||
TrackBits bits = (TrackBits)(TrackStatusToTrackBits(ts) & _bits_mask[direction]);
|
||||
if (bits == TRACK_BIT_NONE) return;
|
||||
|
||||
assert(TileX(tile) != MapMaxX() && TileY(tile) != MapMaxY());
|
||||
|
||||
uint i = 0;
|
||||
/* only one direction */
|
||||
if (KillFirstBit(bits) == 0) {
|
||||
i = FindFirstBit(bits);
|
||||
rd = tpf->rd;
|
||||
goto continue_here;
|
||||
}
|
||||
/* several directions */
|
||||
bool only_one_track = true;
|
||||
do {
|
||||
i = FindFirstBit(bits);
|
||||
Track track = RemoveFirstTrack(&bits);
|
||||
if (bits != TRACK_BIT_NONE) only_one_track = false;
|
||||
rd = tpf->rd;
|
||||
|
||||
/* Change direction 4 times only */
|
||||
if ((byte)i != tpf->rd.pft_var6) {
|
||||
if (!only_one_track && track != tpf->rd.last_choosen_track) {
|
||||
if (++tpf->rd.depth > 4) {
|
||||
tpf->rd = rd;
|
||||
return;
|
||||
}
|
||||
tpf->rd.pft_var6 = (byte)i;
|
||||
tpf->rd.last_choosen_track = track;
|
||||
}
|
||||
|
||||
continue_here:
|
||||
tpf->the_dir = (Trackdir)(i + (HasBit(_otherdir_mask[direction], i) ? 8 : 0));
|
||||
tpf->the_dir = (Trackdir)(track + (HasBit(_otherdir_mask[direction], track) ? 8 : 0));
|
||||
|
||||
if (!tpf->enum_proc(tile, tpf->userdata, tpf->the_dir, tpf->rd.cur_length, NULL)) {
|
||||
if (!tpf->enum_proc(tile, tpf->userdata, tpf->the_dir, tpf->rd.cur_length)) {
|
||||
TPFMode2(tpf, tile, _tpf_new_direction[tpf->the_dir]);
|
||||
}
|
||||
|
||||
tpf->rd = rd;
|
||||
} while (ClrBit(bits, i) != 0);
|
||||
} while (bits != TRACK_BIT_NONE);
|
||||
|
||||
}
|
||||
|
||||
@@ -261,11 +252,11 @@ static void TPFMode1(TrackPathFinder* tpf, TileIndex tile, DiagDirection directi
|
||||
}
|
||||
}
|
||||
|
||||
uint32 bits = GetTileTrackStatus(tile, tpf->tracktype, tpf->sub_type);
|
||||
uint32 bits = TrackStatusToTrackdirBits(GetTileTrackStatus(tile, tpf->tracktype, tpf->sub_type));
|
||||
|
||||
/* Check in case of rail if the owner is the same */
|
||||
if (tpf->tracktype == TRANSPORT_RAIL) {
|
||||
if (bits != 0 && GetTileTrackStatus(tile_org, TRANSPORT_RAIL, 0) != 0) {
|
||||
if (bits != 0 && TrackStatusToTrackdirBits(GetTileTrackStatus(tile_org, TRANSPORT_RAIL, 0)) != TRACKDIR_BIT_NONE) {
|
||||
if (GetTileOwner(tile_org) != GetTileOwner(tile)) return;
|
||||
}
|
||||
}
|
||||
@@ -289,7 +280,7 @@ static void TPFMode1(TrackPathFinder* tpf, TileIndex tile, DiagDirection directi
|
||||
|
||||
/* make sure we are not leaving from invalid side */
|
||||
if (TPFSetTileBit(tpf, tile, tpf->the_dir) && CanAccessTileInDir(tile, TrackdirToExitdir(tpf->the_dir), tpf->tracktype) &&
|
||||
!tpf->enum_proc(tile, tpf->userdata, tpf->the_dir, tpf->rd.cur_length, &tpf->rd.pft_var6) ) {
|
||||
!tpf->enum_proc(tile, tpf->userdata, tpf->the_dir, tpf->rd.cur_length) ) {
|
||||
TPFMode1(tpf, tile, _tpf_new_direction[tpf->the_dir]);
|
||||
}
|
||||
tpf->rd = rd;
|
||||
@@ -312,7 +303,7 @@ void FollowTrack(TileIndex tile, uint16 flags, uint sub_type, DiagDirection dire
|
||||
|
||||
tpf.rd.cur_length = 0;
|
||||
tpf.rd.depth = 0;
|
||||
tpf.rd.pft_var6 = 0;
|
||||
tpf.rd.last_choosen_track = INVALID_TRACK;
|
||||
|
||||
tpf.var2 = HasBit(flags, 15) ? 0x43 : 0xFF; // 0x8000
|
||||
|
||||
@@ -323,8 +314,7 @@ void FollowTrack(TileIndex tile, uint16 flags, uint sub_type, DiagDirection dire
|
||||
tpf.sub_type = sub_type;
|
||||
|
||||
if (HasBit(flags, 11)) {
|
||||
tpf.rd.pft_var6 = 0xFF;
|
||||
tpf.enum_proc(tile, data, INVALID_TRACKDIR, 0, 0);
|
||||
tpf.enum_proc(tile, data, INVALID_TRACKDIR, 0);
|
||||
TPFMode2(&tpf, tile, direction);
|
||||
} else {
|
||||
/* clear the hash_heads */
|
||||
@@ -550,24 +540,6 @@ static bool NtpCheck(NewTrackPathFinder *tpf, TileIndex tile, uint dir, uint len
|
||||
}
|
||||
|
||||
|
||||
static const uint16 _is_upwards_slope[15] = {
|
||||
0, ///< no tileh
|
||||
(1 << TRACKDIR_X_SW) | (1 << TRACKDIR_Y_NW), ///< 1
|
||||
(1 << TRACKDIR_X_SW) | (1 << TRACKDIR_Y_SE), ///< 2
|
||||
(1 << TRACKDIR_X_SW), ///< 3
|
||||
(1 << TRACKDIR_X_NE) | (1 << TRACKDIR_Y_SE), ///< 4
|
||||
0, ///< 5
|
||||
(1 << TRACKDIR_Y_SE), ///< 6
|
||||
0, ///< 7
|
||||
(1 << TRACKDIR_X_NE) | (1 << TRACKDIR_Y_NW), ///< 8,
|
||||
(1 << TRACKDIR_Y_NW), ///< 9
|
||||
0, ///< 10
|
||||
0, ///< 11,
|
||||
(1 << TRACKDIR_X_NE), ///< 12
|
||||
0, ///< 13
|
||||
0, ///< 14
|
||||
};
|
||||
|
||||
static uint DistanceMoo(TileIndex t0, TileIndex t1)
|
||||
{
|
||||
const uint dx = Delta(TileX(t0), TileX(t1));
|
||||
@@ -692,8 +664,8 @@ start_at:
|
||||
if (!IsTileType(tile, MP_RAILWAY) || !IsPlainRailTile(tile)) {
|
||||
/* We found a tile which is not a normal railway tile.
|
||||
* Determine which tracks that exist on this tile. */
|
||||
uint32 ts = GetTileTrackStatus(tile, TRANSPORT_RAIL, 0) & _tpfmode1_and[direction];
|
||||
bits = TrackdirBitsToTrackBits((TrackdirBits)(ts & TRACKDIR_BIT_MASK));
|
||||
TrackStatus ts = GetTileTrackStatus(tile, TRANSPORT_RAIL, 0) & _tpfmode1_and[direction];
|
||||
bits = TrackStatusToTrackBits(ts);
|
||||
|
||||
/* Check that the tile contains exactly one track */
|
||||
if (bits == 0 || KillFirstBit(bits) != 0) break;
|
||||
@@ -737,9 +709,8 @@ start_at:
|
||||
|
||||
si.cur_length += _length_of_track[track];
|
||||
|
||||
/* Check if this rail is an upwards slope. If it is, then add a penalty.
|
||||
* Small optimization here.. if (track&7)>1 then it can't be a slope so we avoid calling GetTileSlope */
|
||||
if ((track & 7) <= 1 && (_is_upwards_slope[GetTileSlope(tile, NULL)] & (1 << track)) ) {
|
||||
/* Check if this rail is an upwards slope. If it is, then add a penalty. */
|
||||
if (IsDiagonalTrackdir(track) && IsUphillTrackdir(GetTileSlope(tile, NULL), track)) {
|
||||
// upwards slope. add some penalty.
|
||||
si.cur_length += 4 * DIAG_FACTOR;
|
||||
}
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@ enum {
|
||||
//supported on all archs)
|
||||
|
||||
struct TrackPathFinder;
|
||||
typedef bool TPFEnumProc(TileIndex tile, void *data, Trackdir trackdir, uint length, byte *state);
|
||||
typedef bool TPFEnumProc(TileIndex tile, void *data, Trackdir trackdir, uint length);
|
||||
typedef void TPFAfterProc(TrackPathFinder *tpf);
|
||||
|
||||
typedef bool NTPEnumProc(TileIndex tile, void *data, int track, uint length);
|
||||
@@ -40,7 +40,7 @@ struct TrackPathFinderLink {
|
||||
struct RememberData {
|
||||
uint16 cur_length;
|
||||
byte depth;
|
||||
byte pft_var6;
|
||||
Track last_choosen_track;
|
||||
};
|
||||
|
||||
struct TrackPathFinder {
|
||||
|
||||
@@ -113,6 +113,40 @@ extern const TrackBits _corner_to_trackbits[] = {
|
||||
TRACK_BIT_LEFT, TRACK_BIT_LOWER, TRACK_BIT_RIGHT, TRACK_BIT_UPPER,
|
||||
};
|
||||
|
||||
extern const TrackdirBits _uphill_trackdirs[] = {
|
||||
TRACKDIR_BIT_NONE , ///< 0 SLOPE_FLAT
|
||||
TRACKDIR_BIT_X_SW | TRACKDIR_BIT_Y_NW, ///< 1 SLOPE_W -> inclined for diagonal track
|
||||
TRACKDIR_BIT_X_SW | TRACKDIR_BIT_Y_SE, ///< 2 SLOPE_S -> inclined for diagonal track
|
||||
TRACKDIR_BIT_X_SW , ///< 3 SLOPE_SW
|
||||
TRACKDIR_BIT_X_NE | TRACKDIR_BIT_Y_SE, ///< 4 SLOPE_E -> inclined for diagonal track
|
||||
TRACKDIR_BIT_NONE , ///< 5 SLOPE_EW
|
||||
TRACKDIR_BIT_Y_SE , ///< 6 SLOPE_SE
|
||||
TRACKDIR_BIT_NONE , ///< 7 SLOPE_WSE -> leveled
|
||||
TRACKDIR_BIT_X_NE | TRACKDIR_BIT_Y_NW, ///< 8 SLOPE_N -> inclined for diagonal track
|
||||
TRACKDIR_BIT_Y_NW , ///< 9 SLOPE_NW
|
||||
TRACKDIR_BIT_NONE , ///< 10 SLOPE_NS
|
||||
TRACKDIR_BIT_NONE , ///< 11 SLOPE_NWS -> leveled
|
||||
TRACKDIR_BIT_X_NE , ///< 12 SLOPE_NE
|
||||
TRACKDIR_BIT_NONE , ///< 13 SLOPE_ENW -> leveled
|
||||
TRACKDIR_BIT_NONE , ///< 14 SLOPE_SEN -> leveled
|
||||
TRACKDIR_BIT_NONE , ///< 15 invalid
|
||||
TRACKDIR_BIT_NONE , ///< 16 invalid
|
||||
TRACKDIR_BIT_NONE , ///< 17 invalid
|
||||
TRACKDIR_BIT_NONE , ///< 18 invalid
|
||||
TRACKDIR_BIT_NONE , ///< 19 invalid
|
||||
TRACKDIR_BIT_NONE , ///< 20 invalid
|
||||
TRACKDIR_BIT_NONE , ///< 21 invalid
|
||||
TRACKDIR_BIT_NONE , ///< 22 invalid
|
||||
TRACKDIR_BIT_X_SW | TRACKDIR_BIT_Y_SE, ///< 23 SLOPE_STEEP_S -> inclined for diagonal track
|
||||
TRACKDIR_BIT_NONE , ///< 24 invalid
|
||||
TRACKDIR_BIT_NONE , ///< 25 invalid
|
||||
TRACKDIR_BIT_NONE , ///< 26 invalid
|
||||
TRACKDIR_BIT_X_SW | TRACKDIR_BIT_Y_NW, ///< 27 SLOPE_STEEP_W -> inclined for diagonal track
|
||||
TRACKDIR_BIT_NONE , ///< 28 invalid
|
||||
TRACKDIR_BIT_X_NE | TRACKDIR_BIT_Y_NW, ///< 29 SLOPE_STEEP_N -> inclined for diagonal track
|
||||
TRACKDIR_BIT_X_NE | TRACKDIR_BIT_Y_SE, ///< 30 SLOPE_STEEP_E -> inclined for diagonal track
|
||||
};
|
||||
|
||||
/* The default multiplier for the cost of building different types of railway
|
||||
* track, which will be divided by 8. Can be changed by newgrf files. */
|
||||
const int _default_railtype_cost_multiplier[RAILTYPE_END] = {
|
||||
|
||||
+23
-14
@@ -360,6 +360,8 @@ CommandCost CmdBuildSingleRail(TileIndex tile, uint32 flags, uint32 p1, uint32 p
|
||||
if (IsNormalRoad(tile)) {
|
||||
if (HasRoadWorks(tile)) return_cmd_error(STR_ROAD_WORKS_IN_PROGRESS);
|
||||
|
||||
if (GetDisallowedRoadDirections(tile) != DRD_NONE) return_cmd_error(STR_ERR_CROSSING_ON_ONEWAY_ROAD);
|
||||
|
||||
RoadTypes roadtypes = GetRoadTypes(tile);
|
||||
RoadBits road = GetRoadBits(tile, ROADTYPE_ROAD);
|
||||
RoadBits tram = GetRoadBits(tile, ROADTYPE_TRAM);
|
||||
@@ -367,7 +369,7 @@ CommandCost CmdBuildSingleRail(TileIndex tile, uint32 flags, uint32 p1, uint32 p
|
||||
default: break;
|
||||
case ROADTYPES_TRAM:
|
||||
/* Tram crossings must always have road. */
|
||||
SetRoadOwner(tile, ROADTYPE_ROAD, _current_player);
|
||||
if (flags & DC_EXEC) SetRoadOwner(tile, ROADTYPE_ROAD, _current_player);
|
||||
roadtypes |= ROADTYPES_ROAD;
|
||||
break;
|
||||
|
||||
@@ -911,8 +913,7 @@ static bool CheckSignalAutoFill(TileIndex &tile, Trackdir &trackdir, int &signal
|
||||
if (tile == INVALID_TILE) return false;
|
||||
|
||||
/* Check for track bits on the new tile */
|
||||
uint32 ts = GetTileTrackStatus(tile, TRANSPORT_RAIL, 0);
|
||||
TrackdirBits trackdirbits = (TrackdirBits)(ts & TRACKDIR_BIT_MASK);
|
||||
TrackdirBits trackdirbits = TrackStatusToTrackdirBits(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0));
|
||||
|
||||
if (TracksOverlap(TrackdirBitsToTrackBits(trackdirbits))) return false;
|
||||
trackdirbits &= TrackdirReachesTrackdirs(trackdir);
|
||||
@@ -2083,17 +2084,21 @@ set_ground:
|
||||
}
|
||||
|
||||
|
||||
static uint32 GetTileTrackStatus_Track(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
static TrackStatus GetTileTrackStatus_Track(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
{
|
||||
if (mode != TRANSPORT_RAIL) return 0;
|
||||
|
||||
TrackBits trackbits = TRACK_BIT_NONE;
|
||||
TrackdirBits red_signals = TRACKDIR_BIT_NONE;
|
||||
|
||||
switch (GetRailTileType(tile)) {
|
||||
default: NOT_REACHED();
|
||||
case RAIL_TILE_NORMAL:
|
||||
return GetTrackBits(tile) * 0x101;
|
||||
trackbits = GetTrackBits(tile);
|
||||
break;
|
||||
|
||||
case RAIL_TILE_SIGNALS: {
|
||||
uint32 ret = GetTrackBits(tile) * 0x101;
|
||||
trackbits = GetTrackBits(tile);
|
||||
byte a = GetPresentSignals(tile);
|
||||
uint b = GetSignalStates(tile);
|
||||
|
||||
@@ -2106,25 +2111,29 @@ static uint32 GetTileTrackStatus_Track(TileIndex tile, TransportType mode, uint
|
||||
if ((a & 0xC) == 0) b |= 0xC;
|
||||
if ((a & 0x3) == 0) b |= 0x3;
|
||||
|
||||
if ((b & 0x8) == 0) ret |= 0x10070000;
|
||||
if ((b & 0x4) == 0) ret |= 0x07100000;
|
||||
if ((b & 0x2) == 0) ret |= 0x20080000;
|
||||
if ((b & 0x1) == 0) ret |= 0x08200000;
|
||||
if ((b & 0x8) == 0) red_signals |= (TRACKDIR_BIT_LEFT_N | TRACKDIR_BIT_X_NE | TRACKDIR_BIT_Y_SE | TRACKDIR_BIT_UPPER_E);
|
||||
if ((b & 0x4) == 0) red_signals |= (TRACKDIR_BIT_LEFT_S | TRACKDIR_BIT_X_SW | TRACKDIR_BIT_Y_NW | TRACKDIR_BIT_UPPER_W);
|
||||
if ((b & 0x2) == 0) red_signals |= (TRACKDIR_BIT_RIGHT_N | TRACKDIR_BIT_LOWER_E);
|
||||
if ((b & 0x1) == 0) red_signals |= (TRACKDIR_BIT_RIGHT_S | TRACKDIR_BIT_LOWER_W);
|
||||
|
||||
return ret;
|
||||
break;
|
||||
}
|
||||
|
||||
case RAIL_TILE_DEPOT: {
|
||||
DiagDirection dir = GetRailDepotDirection(tile);
|
||||
|
||||
if (side != INVALID_DIAGDIR && side != dir) return 0;
|
||||
if (side != INVALID_DIAGDIR && side != dir) break;
|
||||
|
||||
return AxisToTrackBits(DiagDirToAxis(dir)) * 0x101;
|
||||
trackbits = AxisToTrackBits(DiagDirToAxis(dir));
|
||||
break;
|
||||
}
|
||||
|
||||
case RAIL_TILE_WAYPOINT:
|
||||
return GetRailWaypointBits(tile) * 0x101;
|
||||
trackbits = GetRailWaypointBits(tile);
|
||||
break;
|
||||
}
|
||||
|
||||
return CombineTrackStatus(TrackBitsToTrackdirBits(trackbits), red_signals);
|
||||
}
|
||||
|
||||
static void ClickTile_Track(TileIndex tile)
|
||||
|
||||
+1
-1
@@ -189,7 +189,7 @@ static void PlaceRail_Station(TileIndex tile)
|
||||
*/
|
||||
static void GenericPlaceSignals(TileIndex tile)
|
||||
{
|
||||
TrackBits trackbits = (TrackBits)GB(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0), 0, 6);
|
||||
TrackBits trackbits = TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0));
|
||||
|
||||
if (trackbits & TRACK_BIT_VERT) { // N-S direction
|
||||
trackbits = (_tile_fract_coords.x <= _tile_fract_coords.y) ? TRACK_BIT_RIGHT : TRACK_BIT_LEFT;
|
||||
|
||||
+6
-6
@@ -103,9 +103,9 @@ static inline RailType GetRailType(TileIndex t)
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the track bits of the given tile
|
||||
* @param t the tile to set the track bits of
|
||||
* @param r the new track bits for the tile
|
||||
* Sets the rail type of the given tile
|
||||
* @param t the tile to set the rail type of
|
||||
* @param r the new rail type for the tile
|
||||
*/
|
||||
static inline void SetRailType(TileIndex t, RailType r)
|
||||
{
|
||||
@@ -114,9 +114,9 @@ static inline void SetRailType(TileIndex t, RailType r)
|
||||
|
||||
|
||||
/**
|
||||
* Gets the rail type of the given tile
|
||||
* @param t the tile to get the rail type from
|
||||
* @return the rail type of the tile
|
||||
* Gets the track bits of the given tile
|
||||
* @param t the tile to get the track bits from
|
||||
* @return the track bits of the tile
|
||||
*/
|
||||
static inline TrackBits GetTrackBits(TileIndex tile)
|
||||
{
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ extern const char _openttd_revision[] = "@@VERSION@@";
|
||||
* final release will always have a lower version number than the released
|
||||
* version, thus making comparisions on specific revisions easy.
|
||||
*/
|
||||
uint32 _openttd_newgrf_version = 0 << 28 | 6 << 24 | 0 << 20 | 0 << 19 | (@@REVISION@@ & ((1 << 19) - 1));
|
||||
uint32 _openttd_newgrf_version = 0 << 28 | 6 << 24 | 0 << 20 | 0 << 19 | (12338 & ((1 << 19) - 1));
|
||||
|
||||
#ifdef __MORPHOS__
|
||||
/**
|
||||
|
||||
+28
-20
@@ -426,7 +426,6 @@ CommandCost CmdBuildRoad(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||
switch (GetRoadTileType(tile)) {
|
||||
case ROAD_TILE_NORMAL: {
|
||||
if (HasRoadWorks(tile)) return_cmd_error(STR_ROAD_WORKS_IN_PROGRESS);
|
||||
if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
|
||||
|
||||
all_bits = GetAllRoadBits(tile);
|
||||
if (!HasTileRoadType(tile, rt)) break;
|
||||
@@ -443,6 +442,8 @@ CommandCost CmdBuildRoad(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||
if (toggle_drd != DRD_NONE && rt != ROADTYPE_TRAM && GetRoadOwner(tile, ROADTYPE_ROAD) == _current_player) {
|
||||
if (crossing) return_cmd_error(STR_ERR_ONEWAY_ROADS_CAN_T_HAVE_JUNCTION);
|
||||
|
||||
if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
|
||||
|
||||
/* Ignore half built tiles */
|
||||
if (flags & DC_EXEC && rt != ROADTYPE_TRAM && (existing == ROAD_X || existing == ROAD_Y)) {
|
||||
SetDisallowedRoadDirections(tile, GetDisallowedRoadDirections(tile) ^ toggle_drd);
|
||||
@@ -458,7 +459,6 @@ CommandCost CmdBuildRoad(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||
if (HasTileRoadType(tile, rt)) return_cmd_error(STR_1007_ALREADY_BUILT);
|
||||
all_bits = GetCrossingRoadBits(tile);
|
||||
if (pieces & ComplementRoadBits(all_bits)) goto do_clear;
|
||||
if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -509,8 +509,6 @@ CommandCost CmdBuildRoad(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||
case MP_STATION:
|
||||
if (!IsDriveThroughStopTile(tile)) return CMD_ERROR;
|
||||
if (HasTileRoadType(tile, rt)) return_cmd_error(STR_1007_ALREADY_BUILT);
|
||||
/* Don't allow adding roadtype to the roadstop when vehicles are already driving on it */
|
||||
if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
|
||||
break;
|
||||
|
||||
case MP_TUNNELBRIDGE:
|
||||
@@ -560,6 +558,8 @@ do_clear:;
|
||||
}
|
||||
}
|
||||
|
||||
if (!EnsureNoVehicleOnGround(tile)) return CMD_ERROR;
|
||||
|
||||
cost.AddCost(CountBits(pieces) * _price.build_road);
|
||||
if (IsTileType(tile, MP_TUNNELBRIDGE)) {
|
||||
/* Pay for *every* tile of the bridge or tunnel */
|
||||
@@ -634,6 +634,8 @@ CommandCost CmdBuildLongRoad(TileIndex end_tile, uint32 flags, uint32 p1, uint32
|
||||
bool had_success = false;
|
||||
DisallowedRoadDirections drd = DRD_NORTHBOUND;
|
||||
|
||||
_error_message = INVALID_STRING_ID;
|
||||
|
||||
if (p1 >= MapSize()) return CMD_ERROR;
|
||||
|
||||
start_tile = p1;
|
||||
@@ -671,7 +673,6 @@ CommandCost CmdBuildLongRoad(TileIndex end_tile, uint32 flags, uint32 p1, uint32
|
||||
ret = DoCommand(tile, drd << 6 | rt << 4 | bits, 0, flags, CMD_BUILD_ROAD);
|
||||
if (CmdFailed(ret)) {
|
||||
if (_error_message != STR_1007_ALREADY_BUILT) return CMD_ERROR;
|
||||
_error_message = INVALID_STRING_ID;
|
||||
} else {
|
||||
had_success = true;
|
||||
/* Only pay for the upgrade on one side of the bridges and tunnels */
|
||||
@@ -1064,8 +1065,11 @@ static void DrawRoadBits(TileInfo* ti)
|
||||
if (height < minz) return;
|
||||
}
|
||||
|
||||
/* If there are no road bits, return, as there is nothing left to do */
|
||||
if (CountBits(road) < 2) return;
|
||||
|
||||
/* Draw extra details. */
|
||||
for (drts = _road_display_table[roadside][road]; drts->image != 0; drts++) {
|
||||
for (drts = _road_display_table[roadside][road | tram]; drts->image != 0; drts++) {
|
||||
DrawRoadDetail(drts->image, ti, drts->subcoord_x, drts->subcoord_y, 0x10);
|
||||
}
|
||||
}
|
||||
@@ -1310,20 +1314,22 @@ static void ClickTile_Road(TileIndex tile)
|
||||
if (IsRoadDepot(tile)) ShowDepotWindow(tile, VEH_ROAD);
|
||||
}
|
||||
|
||||
/* Converts RoadBits to TrackBits */
|
||||
static const byte _road_trackbits[16] = {
|
||||
0x0, 0x0, 0x0, 0x10, 0x0, 0x2, 0x8, 0x1A, 0x0, 0x4, 0x1, 0x15, 0x20, 0x26, 0x29, 0x3F,
|
||||
};
|
||||
|
||||
static uint32 GetTileTrackStatus_Road(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
static TrackStatus GetTileTrackStatus_Road(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
{
|
||||
|
||||
TrackdirBits trackdirbits = TRACKDIR_BIT_NONE;
|
||||
TrackdirBits red_signals = TRACKDIR_BIT_NONE; // crossing barred
|
||||
switch (mode) {
|
||||
case TRANSPORT_RAIL:
|
||||
if (!IsLevelCrossing(tile)) return 0;
|
||||
return GetCrossingRailBits(tile) * 0x101;
|
||||
if (IsLevelCrossing(tile)) trackdirbits = TrackBitsToTrackdirBits(GetCrossingRailBits(tile));
|
||||
break;
|
||||
|
||||
case TRANSPORT_ROAD:
|
||||
if ((GetRoadTypes(tile) & sub_mode) == 0) return 0;
|
||||
if ((GetRoadTypes(tile) & sub_mode) == 0) break;
|
||||
switch (GetRoadTileType(tile)) {
|
||||
case ROAD_TILE_NORMAL: {
|
||||
const uint drd_to_multiplier[DRD_END] = { 0x101, 0x100, 0x1, 0x0 };
|
||||
@@ -1331,36 +1337,38 @@ static uint32 GetTileTrackStatus_Road(TileIndex tile, TransportType mode, uint s
|
||||
RoadBits bits = GetRoadBits(tile, rt);
|
||||
|
||||
/* no roadbit at this side of tile, return 0 */
|
||||
if (side != INVALID_DIAGDIR && DiagDirToRoadBits(side) & bits == 0) return 0;
|
||||
if (side != INVALID_DIAGDIR && (DiagDirToRoadBits(side) & bits) == 0) break;
|
||||
|
||||
uint multiplier = drd_to_multiplier[rt == ROADTYPE_TRAM ? DRD_NONE : GetDisallowedRoadDirections(tile)];
|
||||
return HasRoadWorks(tile) ? 0 : _road_trackbits[bits] * multiplier;
|
||||
if (!HasRoadWorks(tile)) trackdirbits = (TrackdirBits)(_road_trackbits[bits] * multiplier);
|
||||
break;
|
||||
}
|
||||
|
||||
case ROAD_TILE_CROSSING: {
|
||||
Axis axis = GetCrossingRoadAxis(tile);
|
||||
|
||||
if (side != INVALID_DIAGDIR && axis != DiagDirToAxis(side)) return 0;
|
||||
if (side != INVALID_DIAGDIR && axis != DiagDirToAxis(side)) break;
|
||||
|
||||
uint32 r = AxisToTrackBits(axis) * 0x101;
|
||||
if (IsCrossingBarred(tile)) r *= 0x10001;
|
||||
return r;
|
||||
trackdirbits = TrackBitsToTrackdirBits(AxisToTrackBits(axis));
|
||||
if (IsCrossingBarred(tile)) red_signals = trackdirbits;
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
case ROAD_TILE_DEPOT: {
|
||||
DiagDirection dir = GetRoadDepotDirection(tile);
|
||||
|
||||
if (side != INVALID_DIAGDIR && side != dir) return 0;
|
||||
if (side != INVALID_DIAGDIR && side != dir) break;
|
||||
|
||||
return AxisToTrackBits(DiagDirToAxis(dir)) * 0x101;
|
||||
trackdirbits = TrackBitsToTrackdirBits(AxisToTrackBits(DiagDirToAxis(dir)));
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
return 0;
|
||||
return CombineTrackStatus(trackdirbits, red_signals);
|
||||
}
|
||||
|
||||
static const StringID _road_tile_strings[] = {
|
||||
|
||||
+1
-5
@@ -43,14 +43,10 @@ RoadBits GetAnyRoadBits(TileIndex tile, RoadType rt)
|
||||
|
||||
TrackBits GetAnyRoadTrackBits(TileIndex tile, RoadType rt)
|
||||
{
|
||||
uint32 r;
|
||||
|
||||
/* Don't allow local authorities to build roads through road depots or road stops. */
|
||||
if (IsRoadDepotTile(tile) || (IsTileType(tile, MP_STATION) && !IsDriveThroughStopTile(tile)) || !HasTileRoadType(tile, rt)) {
|
||||
return TRACK_BIT_NONE;
|
||||
}
|
||||
|
||||
r = GetTileTrackStatus(tile, TRANSPORT_ROAD, RoadTypeToRoadTypes(rt));
|
||||
|
||||
return (TrackBits)(byte)(r | (r >> 8));
|
||||
return TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_ROAD, RoadTypeToRoadTypes(rt)));
|
||||
}
|
||||
|
||||
+1
-1
@@ -72,7 +72,7 @@ struct RoadVehicle : public Vehicle {
|
||||
int GetImage(Direction direction) const;
|
||||
int GetDisplaySpeed() const { return this->cur_speed * 10 / 32; }
|
||||
int GetDisplayMaxSpeed() const { return this->max_speed * 10 / 32; }
|
||||
Money GetRunningCost() const { return RoadVehInfo(this->engine_type)->running_cost * _price.roadveh_running; }
|
||||
Money GetRunningCost() const { return RoadVehInfo(this->engine_type)->running_cost * GetPriceByIndex(RoadVehInfo(this->engine_type)->running_cost_class); }
|
||||
bool IsInDepot() const { return this->u.road.state == RVSB_IN_DEPOT; }
|
||||
void Tick();
|
||||
void OnNewDay();
|
||||
|
||||
+36
-29
@@ -398,7 +398,7 @@ static const DiagDirection _road_pf_directions[] = {
|
||||
DIAGDIR_SW, DIAGDIR_NW, DIAGDIR_NW, DIAGDIR_SW, DIAGDIR_NW, DIAGDIR_NE, INVALID_DIAGDIR, INVALID_DIAGDIR
|
||||
};
|
||||
|
||||
static bool EnumRoadSignalFindDepot(TileIndex tile, void* data, Trackdir trackdir, uint length, byte* state)
|
||||
static bool EnumRoadSignalFindDepot(TileIndex tile, void* data, Trackdir trackdir, uint length)
|
||||
{
|
||||
RoadFindDepotData* rfdd = (RoadFindDepotData*)data;
|
||||
|
||||
@@ -1008,10 +1008,10 @@ struct OvertakeData {
|
||||
const Vehicle* u;
|
||||
const Vehicle* v;
|
||||
TileIndex tile;
|
||||
uint16 tilebits;
|
||||
Trackdir trackdir;
|
||||
};
|
||||
|
||||
static void* EnumFindVehToOvertake(Vehicle* v, void* data)
|
||||
static void* EnumFindVehBlockingOvertake(Vehicle* v, void* data)
|
||||
{
|
||||
const OvertakeData* od = (OvertakeData*)data;
|
||||
|
||||
@@ -1020,22 +1020,29 @@ static void* EnumFindVehToOvertake(Vehicle* v, void* data)
|
||||
v : NULL;
|
||||
}
|
||||
|
||||
static bool FindRoadVehToOvertake(OvertakeData *od)
|
||||
/**
|
||||
* Check if overtaking is possible on a piece of track
|
||||
*
|
||||
* @param od Information about the tile and the involved vehicles
|
||||
* @return true if we have to abort overtaking
|
||||
*/
|
||||
static bool CheckRoadBlockedForOvertaking(OvertakeData *od)
|
||||
{
|
||||
uint32 bits;
|
||||
TrackStatus ts = GetTileTrackStatus(od->tile, TRANSPORT_ROAD, od->v->u.road.compatible_roadtypes);
|
||||
TrackdirBits trackdirbits = TrackStatusToTrackdirBits(ts);
|
||||
TrackdirBits red_signals = TrackStatusToRedSignals(ts); // barred level crossing
|
||||
TrackBits trackbits = TrackdirBitsToTrackBits(trackdirbits);
|
||||
|
||||
bits = GetTileTrackStatus(od->tile, TRANSPORT_ROAD, od->v->u.road.compatible_roadtypes);
|
||||
bits |= bits >> 8;
|
||||
/* Track does not continue along overtaking direction || track has junction || levelcrossing is barred */
|
||||
if (!HasBit(trackdirbits, od->trackdir) || (trackbits & ~TRACK_BIT_CROSS) || (red_signals != TRACKDIR_BIT_NONE)) return true;
|
||||
|
||||
if (!(od->tilebits & bits) || (bits & 0x3C3C) || (bits & 0x3F3F0000))
|
||||
return true;
|
||||
return VehicleFromPos(od->tile, od, EnumFindVehToOvertake) != NULL;
|
||||
/* Are there more vehicles on the tile except the two vehicles involved in overtaking */
|
||||
return VehicleFromPos(od->tile, od, EnumFindVehBlockingOvertake) != NULL;
|
||||
}
|
||||
|
||||
static void RoadVehCheckOvertake(Vehicle *v, Vehicle *u)
|
||||
{
|
||||
OvertakeData od;
|
||||
uint16 tt;
|
||||
|
||||
od.v = v;
|
||||
od.u = u;
|
||||
@@ -1055,32 +1062,31 @@ static void RoadVehCheckOvertake(Vehicle *v, Vehicle *u)
|
||||
/* For now, articulated road vehicles can't overtake anything. */
|
||||
if (RoadVehHasArticPart(v)) return;
|
||||
|
||||
/* Vehicles are not driving in same direction || direction is not a diagonal direction */
|
||||
if (v->direction != u->direction || !(v->direction & 1)) return;
|
||||
|
||||
/* Check if vehicle is in a road stop, depot, tunnel or bridge or not on a straight road */
|
||||
if (v->u.road.state >= RVSB_IN_ROAD_STOP || !IsStraightRoadTrackdir((Trackdir)(v->u.road.state & RVSB_TRACKDIR_MASK))) return;
|
||||
|
||||
tt = GetTileTrackStatus(v->tile, TRANSPORT_ROAD, v->u.road.compatible_roadtypes);
|
||||
tt |= tt >> 8;
|
||||
tt &= 0x3F;
|
||||
|
||||
if ((tt & 3) == 0) return;
|
||||
if ((tt & 0x3C) != 0) return;
|
||||
|
||||
if (tt == 3) tt = (v->direction & 2) ? 2 : 1;
|
||||
od.tilebits = tt;
|
||||
od.trackdir = DiagdirToDiagTrackdir(DirToDiagDir(v->direction));
|
||||
|
||||
/* Are the current and the next tile suitable for overtaking?
|
||||
* - Does the track continue along od.trackdir
|
||||
* - No junctions
|
||||
* - No barred levelcrossing
|
||||
* - No other vehicles in the way
|
||||
*/
|
||||
od.tile = v->tile;
|
||||
if (FindRoadVehToOvertake(&od)) return;
|
||||
if (CheckRoadBlockedForOvertaking(&od)) return;
|
||||
|
||||
od.tile = v->tile + TileOffsByDiagDir(DirToDiagDir(v->direction));
|
||||
if (FindRoadVehToOvertake(&od)) return;
|
||||
if (CheckRoadBlockedForOvertaking(&od)) return;
|
||||
|
||||
if (od.u->cur_speed == 0 || od.u->vehstatus& VS_STOPPED) {
|
||||
v->u.road.overtaking_ctr = 0x11;
|
||||
v->u.road.overtaking = 0x10;
|
||||
} else {
|
||||
// if (FindRoadVehToOvertake(&od)) return;
|
||||
// if (CheckRoadBlockedForOvertaking(&od)) return;
|
||||
v->u.road.overtaking_ctr = 0;
|
||||
v->u.road.overtaking = 0x10;
|
||||
}
|
||||
@@ -1113,7 +1119,7 @@ struct FindRoadToChooseData {
|
||||
uint mindist;
|
||||
};
|
||||
|
||||
static bool EnumRoadTrackFindDist(TileIndex tile, void* data, Trackdir trackdir, uint length, byte* state)
|
||||
static bool EnumRoadTrackFindDist(TileIndex tile, void* data, Trackdir trackdir, uint length)
|
||||
{
|
||||
FindRoadToChooseData* frd = (FindRoadToChooseData*)data;
|
||||
uint dist = DistanceManhattan(tile, frd->dest);
|
||||
@@ -1153,9 +1159,9 @@ static Trackdir RoadFindPathToDest(Vehicle* v, TileIndex tile, DiagDirection ent
|
||||
FindRoadToChooseData frd;
|
||||
Trackdir best_track;
|
||||
|
||||
uint32 r = GetTileTrackStatus(tile, TRANSPORT_ROAD, v->u.road.compatible_roadtypes);
|
||||
TrackdirBits signal = (TrackdirBits)GB(r, 16, 16);
|
||||
TrackdirBits trackdirs = (TrackdirBits)GB(r, 0, 16);
|
||||
TrackStatus ts = GetTileTrackStatus(tile, TRANSPORT_ROAD, v->u.road.compatible_roadtypes);
|
||||
TrackdirBits red_signals = TrackStatusToRedSignals(ts); // crossing
|
||||
TrackdirBits trackdirs = TrackStatusToTrackdirBits(ts);
|
||||
|
||||
if (IsTileType(tile, MP_ROAD)) {
|
||||
if (IsRoadDepot(tile) && (!IsTileOwner(tile, v->owner) || GetRoadDepotDirection(tile) == enterdir || (GetRoadTypes(tile) & v->u.road.compatible_roadtypes) == 0)) {
|
||||
@@ -1296,7 +1302,7 @@ do_it:;
|
||||
|
||||
found_best_track:;
|
||||
|
||||
if (HasBit(signal, best_track)) return INVALID_TRACKDIR;
|
||||
if (HasBit(red_signals, best_track)) return INVALID_TRACKDIR;
|
||||
|
||||
return best_track;
|
||||
}
|
||||
@@ -2087,7 +2093,8 @@ void RoadVehicle::OnNewDay()
|
||||
|
||||
if (this->running_ticks == 0) return;
|
||||
|
||||
CommandCost cost(EXPENSES_ROADVEH_RUN, RoadVehInfo(this->engine_type)->running_cost * _price.roadveh_running * this->running_ticks / (364 * DAY_TICKS));
|
||||
const RoadVehicleInfo *rvi = RoadVehInfo(this->engine_type);
|
||||
CommandCost cost(EXPENSES_ROADVEH_RUN, rvi->running_cost * GetPriceByIndex(rvi->running_cost_class) * this->running_ticks / (364 * DAY_TICKS));
|
||||
|
||||
this->profit_this_year -= cost.GetCost();
|
||||
this->running_ticks = 0;
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@
|
||||
|
||||
#include "table/strings.h"
|
||||
|
||||
extern const uint16 SAVEGAME_VERSION = 89;
|
||||
extern const uint16 SAVEGAME_VERSION = 90;
|
||||
uint16 _sl_version; ///< the major savegame version identifier
|
||||
byte _sl_minor_version; ///< the minor savegame version, DO NOT USE!
|
||||
|
||||
|
||||
@@ -1432,6 +1432,7 @@ const SettingDesc _patch_settings[] = {
|
||||
SDT_CONDBOOL(Patches, disable_elrails, 38, SL_MAX_VERSION, 0, NN, false, STR_CONFIG_PATCHES_DISABLE_ELRAILS, SettingsDisableElrail),
|
||||
SDT_CONDVAR(Patches, freight_trains, SLE_UINT8, 39, SL_MAX_VERSION, 0,NN, 1, 1, 255, 1, STR_CONFIG_PATCHES_FREIGHT_TRAINS, NULL),
|
||||
SDT_CONDBOOL(Patches, timetabling, 67, SL_MAX_VERSION, 0, 0, true, STR_CONFIG_PATCHES_TIMETABLE_ALLOW, NULL),
|
||||
SDT_CONDVAR(Patches, plane_speed, SLE_UINT8, 90, SL_MAX_VERSION, 0, 0, 4, 1, 4, 0, STR_CONFIG_PATCHES_PLANE_SPEED, NULL),
|
||||
|
||||
/***************************************************************************/
|
||||
/* Station section of the GUI-configure patches window */
|
||||
|
||||
@@ -818,6 +818,7 @@ static const char *_patches_vehicles[] = {
|
||||
"wagon_speed_limits",
|
||||
"disable_elrails",
|
||||
"freight_trains",
|
||||
"plane_speed",
|
||||
"timetabling",
|
||||
};
|
||||
|
||||
|
||||
@@ -130,6 +130,8 @@ struct Patches {
|
||||
uint8 pathfinder_for_roadvehs; ///< the pathfinder to use for roadvehicles
|
||||
uint8 pathfinder_for_ships; ///< the pathfinder to use for ships
|
||||
|
||||
uint8 plane_speed; ///< divisor for speed of aircraft
|
||||
|
||||
bool autorenew;
|
||||
int16 autorenew_months;
|
||||
int32 autorenew_money;
|
||||
|
||||
+5
-7
@@ -50,10 +50,9 @@ static const TrackBits _ship_sometracks[4] = {
|
||||
TRACK_BIT_Y | TRACK_BIT_LOWER | TRACK_BIT_RIGHT, // 0x2A, // DIAGDIR_NW
|
||||
};
|
||||
|
||||
static TrackBits GetTileShipTrackStatus(TileIndex tile)
|
||||
static inline TrackBits GetTileShipTrackStatus(TileIndex tile)
|
||||
{
|
||||
uint32 r = GetTileTrackStatus(tile, TRANSPORT_WATER, 0);
|
||||
return TrackdirBitsToTrackBits((TrackdirBits)(TRACKDIR_BIT_MASK & (r | r >> 8)));
|
||||
return TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_WATER, 0));
|
||||
}
|
||||
|
||||
void DrawShipEngine(int x, int y, EngineID engine, SpriteID pal)
|
||||
@@ -428,7 +427,7 @@ struct PathFindShip {
|
||||
uint best_length;
|
||||
};
|
||||
|
||||
static bool ShipTrackFollower(TileIndex tile, PathFindShip *pfs, int track, uint length, byte *state)
|
||||
static bool ShipTrackFollower(TileIndex tile, PathFindShip *pfs, int track, uint length)
|
||||
{
|
||||
/* Found dest? */
|
||||
if (tile == pfs->dest_coords) {
|
||||
@@ -592,10 +591,9 @@ static Direction ShipGetNewDirection(Vehicle *v, int x, int y)
|
||||
return _new_vehicle_direction_table[offs];
|
||||
}
|
||||
|
||||
static TrackBits GetAvailShipTracks(TileIndex tile, int dir)
|
||||
static inline TrackBits GetAvailShipTracks(TileIndex tile, int dir)
|
||||
{
|
||||
uint32 r = GetTileTrackStatus(tile, TRANSPORT_WATER, 0);
|
||||
return (TrackBits)((r | r >> 8) & _ship_sometracks[dir]);
|
||||
return GetTileShipTrackStatus(tile) & _ship_sometracks[dir];
|
||||
}
|
||||
|
||||
static const byte _ship_subcoord[4][6][3] = {
|
||||
|
||||
+2
-2
@@ -506,7 +506,7 @@ static bool UpdateSignalsInBuffer(Owner owner)
|
||||
/* FALLTHROUGH */
|
||||
case MP_STATION:
|
||||
case MP_ROAD:
|
||||
if ((TrackBits)(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0) & _enterdir_to_trackbits[dir]) != TRACK_BIT_NONE) {
|
||||
if ((TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0)) & _enterdir_to_trackbits[dir]) != TRACK_BIT_NONE) {
|
||||
/* only add to set when there is some 'interesting' track */
|
||||
_tbdset.Add(tile, dir);
|
||||
_tbdset.Add(tile + TileOffsByDiagDir(dir), ReverseDiagDir(dir));
|
||||
@@ -517,7 +517,7 @@ static bool UpdateSignalsInBuffer(Owner owner)
|
||||
/* jump to next tile */
|
||||
tile = tile + TileOffsByDiagDir(dir);
|
||||
dir = ReverseDiagDir(dir);
|
||||
if ((TrackBits)(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0) & _enterdir_to_trackbits[dir]) != TRACK_BIT_NONE) {
|
||||
if ((TrackStatusToTrackBits(GetTileTrackStatus(tile, TRANSPORT_RAIL, 0)) & _enterdir_to_trackbits[dir]) != TRACK_BIT_NONE) {
|
||||
_tbdset.Add(tile, dir);
|
||||
break;
|
||||
}
|
||||
|
||||
+2
-1
@@ -241,7 +241,8 @@ void SndPlayTileFx(SoundFx sound, TileIndex tile)
|
||||
/* emits sound from center of the tile */
|
||||
int x = TileX(tile) * TILE_SIZE + TILE_SIZE / 2;
|
||||
int y = TileY(tile) * TILE_SIZE - TILE_SIZE / 2;
|
||||
Point pt = RemapCoords(x, y, GetSlopeZ(x, y));
|
||||
uint z = (y < 0 ? 0 : GetSlopeZ(x, y));
|
||||
Point pt = RemapCoords(x, y, z);
|
||||
y += 2 * TILE_SIZE;
|
||||
Point pt2 = RemapCoords(x, y, GetSlopeZ(x, y));
|
||||
SndPlayScreenCoordFx(sound, pt.x, pt2.x, pt.y, pt2.y);
|
||||
|
||||
+12
-14
@@ -474,11 +474,8 @@ void GetProductionAroundTiles(AcceptedCargo produced, TileIndex tile,
|
||||
CargoID cargos[2] = { CT_INVALID, CT_INVALID };
|
||||
|
||||
gpc(tile, cargos);
|
||||
if (cargos[0] != CT_INVALID) {
|
||||
produced[cargos[0]]++;
|
||||
if (cargos[1] != CT_INVALID) {
|
||||
produced[cargos[1]]++;
|
||||
}
|
||||
for (uint i = 0; i < lengthof(cargos); ++i) {
|
||||
if (cargos[i] != CT_INVALID) produced[cargos[i]]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2280,24 +2277,25 @@ static void GetTileDesc_Station(TileIndex tile, TileDesc *td)
|
||||
}
|
||||
|
||||
|
||||
static uint32 GetTileTrackStatus_Station(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
static TrackStatus GetTileTrackStatus_Station(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
{
|
||||
TrackBits trackbits = TRACK_BIT_NONE;
|
||||
|
||||
switch (mode) {
|
||||
case TRANSPORT_RAIL:
|
||||
if (IsRailwayStation(tile) && !IsStationTileBlocked(tile)) {
|
||||
return TrackToTrackBits(GetRailStationTrack(tile)) * 0x101;
|
||||
trackbits = TrackToTrackBits(GetRailStationTrack(tile));
|
||||
}
|
||||
break;
|
||||
|
||||
case TRANSPORT_WATER:
|
||||
/* buoy is coded as a station, it is always on open water */
|
||||
if (IsBuoy(tile)) {
|
||||
TrackBits ts = TRACK_BIT_ALL;
|
||||
trackbits = TRACK_BIT_ALL;
|
||||
/* remove tracks that connect NE map edge */
|
||||
if (TileX(tile) == 0) ts &= ~(TRACK_BIT_X | TRACK_BIT_UPPER | TRACK_BIT_RIGHT);
|
||||
if (TileX(tile) == 0) trackbits &= ~(TRACK_BIT_X | TRACK_BIT_UPPER | TRACK_BIT_RIGHT);
|
||||
/* remove tracks that connect NW map edge */
|
||||
if (TileY(tile) == 0) ts &= ~(TRACK_BIT_Y | TRACK_BIT_LEFT | TRACK_BIT_UPPER);
|
||||
return uint32(ts) * 0x101;
|
||||
if (TileY(tile) == 0) trackbits &= ~(TRACK_BIT_Y | TRACK_BIT_LEFT | TRACK_BIT_UPPER);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -2307,10 +2305,10 @@ static uint32 GetTileTrackStatus_Station(TileIndex tile, TransportType mode, uin
|
||||
Axis axis = DiagDirToAxis(dir);
|
||||
|
||||
if (side != INVALID_DIAGDIR) {
|
||||
if (axis != DiagDirToAxis(side) || (IsStandardRoadStopTile(tile) && dir != side)) return 0;
|
||||
if (axis != DiagDirToAxis(side) || (IsStandardRoadStopTile(tile) && dir != side)) break;
|
||||
}
|
||||
|
||||
return AxisToTrackBits(axis) * 0x101;
|
||||
trackbits = AxisToTrackBits(axis);
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -2318,7 +2316,7 @@ static uint32 GetTileTrackStatus_Station(TileIndex tile, TransportType mode, uin
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
return CombineTrackStatus(TrackBitsToTrackdirBits(trackbits), TRACKDIR_BIT_NONE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
+245
-237
@@ -23,27 +23,10 @@
|
||||
* </ul>
|
||||
*/
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_2_0[] = {
|
||||
{ 0x9C3, PAL_NONE }, { 0x9C7, PAL_NONE }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9C4, PAL_NONE }, { 0x9C8, PAL_NONE }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9C5, PAL_NONE }, { 0x9C7, PAL_NONE }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9C6, PAL_NONE }, { 0x9C8, PAL_NONE }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10E4, PAL_NONE }, { 0x9C7, PAL_NONE }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10E5, PAL_NONE }, { 0x9C8, PAL_NONE }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x110C, PAL_NONE }, { 0x9C7, PAL_NONE }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x110D, PAL_NONE }, { 0x9C8, PAL_NONE }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_2_1[] = {
|
||||
{ 0x986, PAL_NONE }, { 0x988, PAL_NONE }, { 0x985, PAL_NONE }, { 0x987, PAL_NONE },
|
||||
{ 0x98A, PAL_NONE }, { 0x98C, PAL_NONE }, { 0x989, PAL_NONE }, { 0x98B, PAL_NONE },
|
||||
{ 0x98E, PALETTE_TO_STRUCT_WHITE }, { 0x990, PALETTE_TO_STRUCT_WHITE }, { 0x98D, PALETTE_TO_STRUCT_WHITE }, { 0x98F, PALETTE_TO_STRUCT_WHITE },
|
||||
{ 0x992, PALETTE_TO_STRUCT_WHITE }, { 0x994, PALETTE_TO_STRUCT_WHITE }, { 0x991, PALETTE_TO_STRUCT_WHITE }, { 0x993, PALETTE_TO_STRUCT_WHITE },
|
||||
{ 0x10E7, PALETTE_TO_STRUCT_WHITE }, { 0x10E9, PALETTE_TO_STRUCT_WHITE }, { 0x10E6, PALETTE_TO_STRUCT_WHITE }, { 0x10E8, PALETTE_TO_STRUCT_WHITE },
|
||||
{ 0x10EB, PALETTE_TO_STRUCT_WHITE }, { 0x10ED, PALETTE_TO_STRUCT_WHITE }, { 0x10EA, PALETTE_TO_STRUCT_WHITE }, { 0x10EC, PALETTE_TO_STRUCT_WHITE },
|
||||
{ 0x110F, PALETTE_TO_STRUCT_WHITE }, { 0x1111, PALETTE_TO_STRUCT_WHITE }, { 0x110E, PALETTE_TO_STRUCT_WHITE }, { 0x1110, PALETTE_TO_STRUCT_WHITE },
|
||||
{ 0x1113, PALETTE_TO_STRUCT_WHITE }, { 0x1115, PALETTE_TO_STRUCT_WHITE }, { 0x1112, PALETTE_TO_STRUCT_WHITE }, { 0x1114, PALETTE_TO_STRUCT_WHITE },
|
||||
};
|
||||
# define MN(a) {a, PAL_NONE}
|
||||
# define MR(a) {a, PALETTE_TO_STRUCT_RED}
|
||||
# define MW(a) {a, PALETTE_TO_STRUCT_WHITE}
|
||||
# define MC(a) {a, PALETTE_TO_STRUCT_CONCRETE}
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_4_0[] = {
|
||||
{ 0x9A9, PAL_NONE }, { 0x99F, PAL_NONE }, { 0x9B1, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
@@ -199,94 +182,6 @@ static const PalSpriteID _bridge_sprite_table_5_6[] = {
|
||||
{ 0x1113, PALETTE_TO_STRUCT_YELLOW }, { 0x1115, PALETTE_TO_STRUCT_YELLOW }, { 0x1112, PALETTE_TO_STRUCT_YELLOW }, { 0x1114, PALETTE_TO_STRUCT_YELLOW },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_3_0[] = {
|
||||
{ 0x9A9, PALETTE_TO_STRUCT_CONCRETE }, { 0x99F, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B1, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x9A5, PALETTE_TO_STRUCT_CONCRETE }, { 0x997, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AD, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x99D, PALETTE_TO_STRUCT_CONCRETE }, { 0x99F, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B1, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x995, PALETTE_TO_STRUCT_CONCRETE }, { 0x997, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AD, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F2, PALETTE_TO_STRUCT_CONCRETE }, { 0x99F, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B1, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x10EE, PALETTE_TO_STRUCT_CONCRETE }, { 0x997, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AD, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x111A, PALETTE_TO_STRUCT_CONCRETE }, { 0x99F, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B1, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x1116, PALETTE_TO_STRUCT_CONCRETE }, { 0x997, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AD, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_3_1[] = {
|
||||
{ 0x9AA, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A0, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B2, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x9A6, PALETTE_TO_STRUCT_CONCRETE }, { 0x998, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AE, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x99E, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A0, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B2, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x996, PALETTE_TO_STRUCT_CONCRETE }, { 0x998, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AE, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F3, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A0, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B2, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x10EF, PALETTE_TO_STRUCT_CONCRETE }, { 0x998, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AE, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x111B, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A0, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B2, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x1117, PALETTE_TO_STRUCT_CONCRETE }, { 0x998, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AE, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_3_2[] = {
|
||||
{ 0x9AC, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A4, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B4, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x9A8, PALETTE_TO_STRUCT_CONCRETE }, { 0x99C, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B0, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x9A2, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A4, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B4, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x99A, PALETTE_TO_STRUCT_CONCRETE }, { 0x99C, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B0, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F5, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A4, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B4, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F1, PALETTE_TO_STRUCT_CONCRETE }, { 0x99C, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B0, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x111D, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A4, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B4, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x1119, PALETTE_TO_STRUCT_CONCRETE }, { 0x99C, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B0, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_3_3[] = {
|
||||
{ 0x9AB, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A3, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B3, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x9A7, PALETTE_TO_STRUCT_CONCRETE }, { 0x99B, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AF, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x9A1, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A3, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B3, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x999, PALETTE_TO_STRUCT_CONCRETE }, { 0x99B, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AF, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F4, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A3, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B3, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F0, PALETTE_TO_STRUCT_CONCRETE }, { 0x99B, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AF, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x111C, PALETTE_TO_STRUCT_CONCRETE }, { 0x9A3, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B3, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x1118, PALETTE_TO_STRUCT_CONCRETE }, { 0x99B, PALETTE_TO_STRUCT_CONCRETE }, { 0x9AF, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_3_4[] = {
|
||||
{ 0x9B6, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BA, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BC, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x9B5, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B9, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BB, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x9B8, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BA, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BC, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x9B7, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B9, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BB, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F7, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BA, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BC, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F6, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B9, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BB, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x111F, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BA, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BC, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
{ 0x111E, PALETTE_TO_STRUCT_CONCRETE }, { 0x9B9, PALETTE_TO_STRUCT_CONCRETE }, { 0x9BB, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_3_5[] = {
|
||||
{ 0x9BD, PALETTE_TO_STRUCT_CONCRETE }, { 0x9C1, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9BE, PALETTE_TO_STRUCT_CONCRETE }, { 0x9C2, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9BF, PALETTE_TO_STRUCT_CONCRETE }, { 0x9C1, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9C0, PALETTE_TO_STRUCT_CONCRETE }, { 0x9C2, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F8, PALETTE_TO_STRUCT_CONCRETE }, { 0x9C1, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F9, PALETTE_TO_STRUCT_CONCRETE }, { 0x9C2, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1120, PALETTE_TO_STRUCT_CONCRETE }, { 0x9C1, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1121, PALETTE_TO_STRUCT_CONCRETE }, { 0x9C2, PALETTE_TO_STRUCT_CONCRETE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_3_6[] = {
|
||||
{ 0x986, PAL_NONE }, { 0x988, PAL_NONE }, { 0x985, PAL_NONE }, { 0x987, PAL_NONE },
|
||||
{ 0x98A, PAL_NONE }, { 0x98C, PAL_NONE }, { 0x989, PAL_NONE }, { 0x98B, PAL_NONE },
|
||||
{ 0x98E, PALETTE_TO_STRUCT_CONCRETE }, { 0x990, PALETTE_TO_STRUCT_CONCRETE }, { 0x98D, PALETTE_TO_STRUCT_CONCRETE }, { 0x98F, PALETTE_TO_STRUCT_CONCRETE },
|
||||
{ 0x992, PALETTE_TO_STRUCT_CONCRETE }, { 0x994, PALETTE_TO_STRUCT_CONCRETE }, { 0x991, PALETTE_TO_STRUCT_CONCRETE }, { 0x993, PALETTE_TO_STRUCT_CONCRETE },
|
||||
{ 0x10E7, PALETTE_TO_STRUCT_CONCRETE }, { 0x10E9, PALETTE_TO_STRUCT_CONCRETE }, { 0x10E6, PALETTE_TO_STRUCT_CONCRETE }, { 0x10E8, PALETTE_TO_STRUCT_CONCRETE },
|
||||
{ 0x10EB, PALETTE_TO_STRUCT_CONCRETE }, { 0x10ED, PALETTE_TO_STRUCT_CONCRETE }, { 0x10EA, PALETTE_TO_STRUCT_CONCRETE }, { 0x10EC, PALETTE_TO_STRUCT_CONCRETE },
|
||||
{ 0x110F, PALETTE_TO_STRUCT_CONCRETE }, { 0x1111, PALETTE_TO_STRUCT_CONCRETE }, { 0x110E, PALETTE_TO_STRUCT_CONCRETE }, { 0x1110, PALETTE_TO_STRUCT_CONCRETE },
|
||||
{ 0x1113, PALETTE_TO_STRUCT_CONCRETE }, { 0x1115, PALETTE_TO_STRUCT_CONCRETE }, { 0x1112, PALETTE_TO_STRUCT_CONCRETE }, { 0x1114, PALETTE_TO_STRUCT_CONCRETE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_1_1[] = {
|
||||
{ 0x986, PAL_NONE }, { 0x988, PAL_NONE }, { 0x985, PAL_NONE }, { 0x987, PAL_NONE },
|
||||
{ 0x98A, PAL_NONE }, { 0x98C, PAL_NONE }, { 0x989, PAL_NONE }, { 0x98B, PAL_NONE },
|
||||
{ 0x98E, PALETTE_TO_STRUCT_RED }, { 0x990, PALETTE_TO_STRUCT_RED }, { 0x98D, PALETTE_TO_STRUCT_RED }, { 0x98F, PALETTE_TO_STRUCT_RED },
|
||||
{ 0x992, PALETTE_TO_STRUCT_RED }, { 0x994, PALETTE_TO_STRUCT_RED }, { 0x991, PALETTE_TO_STRUCT_RED }, { 0x993, PALETTE_TO_STRUCT_RED },
|
||||
{ 0x10E7, PALETTE_TO_STRUCT_RED }, { 0x10E9, PALETTE_TO_STRUCT_RED }, { 0x10E6, PALETTE_TO_STRUCT_RED }, { 0x10E8, PALETTE_TO_STRUCT_RED },
|
||||
{ 0x10EB, PALETTE_TO_STRUCT_RED }, { 0x10ED, PALETTE_TO_STRUCT_RED }, { 0x10EA, PALETTE_TO_STRUCT_RED }, { 0x10EC, PALETTE_TO_STRUCT_RED },
|
||||
{ 0x110F, PALETTE_TO_STRUCT_RED }, { 0x1111, PALETTE_TO_STRUCT_RED }, { 0x110E, PALETTE_TO_STRUCT_RED }, { 0x1110, PALETTE_TO_STRUCT_RED },
|
||||
{ 0x1113, PALETTE_TO_STRUCT_RED }, { 0x1115, PALETTE_TO_STRUCT_RED }, { 0x1112, PALETTE_TO_STRUCT_RED }, { 0x1114, PALETTE_TO_STRUCT_RED },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_6_0[] = {
|
||||
{ 0x9CD, PAL_NONE }, { 0x9D9, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9CE, PAL_NONE }, { 0x9DA, PAL_NONE }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
@@ -419,37 +314,147 @@ static const PalSpriteID _bridge_sprite_table_8_3[] = {
|
||||
{ 0x1113, PALETTE_TO_STRUCT_RED }, { 0x1115, PALETTE_TO_STRUCT_RED }, { 0x1112, PALETTE_TO_STRUCT_RED }, { 0x1114, PALETTE_TO_STRUCT_RED },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_0_0[] = {
|
||||
{ 0x9F2, PAL_NONE }, { 0x9F6, PAL_NONE }, { 0x9F8, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9F1, PAL_NONE }, { 0x9F5, PAL_NONE }, { 0x9F7, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9F4, PAL_NONE }, { 0x9F6, PAL_NONE }, { 0x9F8, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9F3, PAL_NONE }, { 0x9F5, PAL_NONE }, { 0x9F7, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1109, PAL_NONE }, { 0x9F6, PAL_NONE }, { 0x9F8, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1108, PAL_NONE }, { 0x9F5, PAL_NONE }, { 0x9F7, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1131, PAL_NONE }, { 0x9F6, PAL_NONE }, { 0x9F8, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1130, PAL_NONE }, { 0x9F5, PAL_NONE }, { 0x9F7, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
static const PalSpriteID _bridge_sprite_table_wood_middle[] = {
|
||||
MN( SPR_BTWDN_RAIL_X_REAR ), MN( SPR_BTWDN_X_FRONT ), MN( SPR_BTWDN_X_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTWDN_RAIL_Y_REAR ), MN( SPR_BTWDN_Y_FRONT ), MN( SPR_BTWDN_Y_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTWDN_ROAD_X_REAR ), MN( SPR_BTWDN_X_FRONT ), MN( SPR_BTWDN_X_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTWDN_ROAD_Y_REAR ), MN( SPR_BTWDN_Y_FRONT ), MN( SPR_BTWDN_Y_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTWDN_MONO_X_REAR ), MN( SPR_BTWDN_X_FRONT ), MN( SPR_BTWDN_X_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTWDN_MONO_Y_REAR ), MN( SPR_BTWDN_Y_FRONT ), MN( SPR_BTWDN_Y_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTWDN_MGLV_X_REAR ), MN( SPR_BTWDN_X_FRONT ), MN( SPR_BTWDN_X_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTWDN_MGLV_Y_REAR ), MN( SPR_BTWDN_Y_FRONT ), MN( SPR_BTWDN_Y_PILLAR ), MN( 0x0 ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_0_1[] = {
|
||||
{ 0x9EE, PAL_NONE }, { 0x9ED, PAL_NONE }, { 0x9F0, PAL_NONE }, { 0x9EF, PAL_NONE },
|
||||
{ 0x9EA, PAL_NONE }, { 0x9E9, PAL_NONE }, { 0x9EB, PAL_NONE }, { 0x9EC, PAL_NONE },
|
||||
{ 0x9E6, PAL_NONE }, { 0x9E5, PAL_NONE }, { 0x9E8, PAL_NONE }, { 0x9E7, PAL_NONE },
|
||||
{ 0x9E2, PAL_NONE }, { 0x9E1, PAL_NONE }, { 0x9E3, PAL_NONE }, { 0x9E4, PAL_NONE },
|
||||
{ 0x1105, PAL_NONE }, { 0x1104, PAL_NONE }, { 0x1107, PAL_NONE }, { 0x1106, PAL_NONE },
|
||||
{ 0x1101, PAL_NONE }, { 0x1100, PAL_NONE }, { 0x1102, PAL_NONE }, { 0x1103, PAL_NONE },
|
||||
{ 0x112D, PAL_NONE }, { 0x112C, PAL_NONE }, { 0x112F, PAL_NONE }, { 0x112E, PAL_NONE },
|
||||
{ 0x1129, PAL_NONE }, { 0x1128, PAL_NONE }, { 0x112A, PAL_NONE }, { 0x112B, PAL_NONE },
|
||||
static const PalSpriteID _bridge_sprite_table_wood_heads[] = {
|
||||
MN( SPR_BTWDN_RAIL_X_SLOPE_UP ), MN( SPR_BTWDN_RAIL_Y_SLOPE_UP ), MN( SPR_BTWDN_RAIL_X_SLOPE_DOWN ), MN( SPR_BTWDN_RAIL_Y_SLOPE_DOWN ),
|
||||
MN( SPR_BTWDN_RAIL_RAMP_X_DOWN ), MN( SPR_BTWDN_RAIL_RAMP_Y_DOWN ), MN( SPR_BTWDN_RAIL_RAMP_X_UP ), MN( SPR_BTWDN_RAIL_RAMP_Y_UP ),
|
||||
MN( SPR_BTWDN_ROAD_X_SLOPE_UP ), MN( SPR_BTWDN_ROAD_Y_SLOPE_UP ), MN( SPR_BTWDN_ROAD_X_SLOPE_DOWN ), MN( SPR_BTWDN_ROAD_Y_SLOPE_DOWN ),
|
||||
MN( SPR_BTWDN_ROAD_RAMP_X_DOWN ), MN( SPR_BTWDN_ROAD_RAMP_Y_DOWN ), MN( SPR_BTWDN_ROAD_RAMP_X_UP ), MN( SPR_BTWDN_ROAD_RAMP_Y_UP ),
|
||||
MN( SPR_BTWDN_MONO_X_SLOPE_UP ), MN( SPR_BTWDN_MONO_Y_SLOPE_UP ), MN( SPR_BTWDN_MONO_X_SLOPE_DOWN ), MN( SPR_BTWDN_MONO_Y_SLOPE_DOWN ),
|
||||
MN( SPR_BTWDN_MONO_RAMP_X_DOWN ), MN( SPR_BTWDN_MONO_RAMP_Y_DOWN ), MN( SPR_BTWDN_MONO_RAMP_X_UP ), MN( SPR_BTWDN_MONO_RAMP_Y_UP ),
|
||||
MN( SPR_BTWDN_MGLV_X_SLOPE_UP ), MN( SPR_BTWDN_MGLV_Y_SLOPE_UP ), MN( SPR_BTWDN_MGLV_X_SLOPE_DOWN ), MN( SPR_BTWDN_MGLV_Y_SLOPE_DOWN ),
|
||||
MN( SPR_BTWDN_MGLV_RAMP_X_DOWN ), MN( SPR_BTWDN_MGLV_RAMP_Y_DOWN ), MN( SPR_BTWDN_MGLV_RAMP_X_UP ), MN( SPR_BTWDN_MGLV_RAMP_Y_UP ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_1_0[] = {
|
||||
{ 0x9BD, PALETTE_TO_STRUCT_RED }, { 0x9C1, PALETTE_TO_STRUCT_RED }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9BE, PALETTE_TO_STRUCT_RED }, { 0x9C2, PALETTE_TO_STRUCT_RED }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9BF, PALETTE_TO_STRUCT_RED }, { 0x9C1, PALETTE_TO_STRUCT_RED }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x9C0, PALETTE_TO_STRUCT_RED }, { 0x9C2, PALETTE_TO_STRUCT_RED }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F8, PALETTE_TO_STRUCT_RED }, { 0x9C1, PALETTE_TO_STRUCT_RED }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x10F9, PALETTE_TO_STRUCT_RED }, { 0x9C2, PALETTE_TO_STRUCT_RED }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1120, PALETTE_TO_STRUCT_RED }, { 0x9C1, PALETTE_TO_STRUCT_RED }, { 0x9C9, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0x1121, PALETTE_TO_STRUCT_RED }, { 0x9C2, PALETTE_TO_STRUCT_RED }, { 0x9CA, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
static const PalSpriteID _bridge_sprite_table_concrete_middle[] = {
|
||||
MR( SPR_BTCON_RAIL_X ), MR( SPR_BTCON_X_FRONT ), MN( SPR_BTCON_X_PILLAR ), MN( 0x0 ),
|
||||
MR( SPR_BTCON_RAIL_Y ), MR( SPR_BTCON_Y_FRONT ), MN( SPR_BTCON_Y_PILLAR ), MN( 0x0 ),
|
||||
MR( SPR_BTCON_ROAD_X ), MR( SPR_BTCON_X_FRONT ), MN( SPR_BTCON_X_PILLAR ), MN( 0x0 ),
|
||||
MR( SPR_BTCON_ROAD_Y ), MR( SPR_BTCON_Y_FRONT ), MN( SPR_BTCON_Y_PILLAR ), MN( 0x0 ),
|
||||
MR( SPR_BTCON_MONO_X ), MR( SPR_BTCON_X_FRONT ), MN( SPR_BTCON_X_PILLAR ), MN( 0x0 ),
|
||||
MR( SPR_BTCON_MONO_Y ), MR( SPR_BTCON_Y_FRONT ), MN( SPR_BTCON_Y_PILLAR ), MN( 0x0 ),
|
||||
MR( SPR_BTCON_MGLV_X ), MR( SPR_BTCON_X_FRONT ), MN( SPR_BTCON_X_PILLAR ), MN( 0x0 ),
|
||||
MR( SPR_BTCON_MGLV_Y ), MR( SPR_BTCON_Y_FRONT ), MN( SPR_BTCON_Y_PILLAR ), MN( 0x0 ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_concrete_heads[] = {
|
||||
MN( SPR_BTGEN_RAIL_X_SLOPE_UP ), MN( SPR_BTGEN_RAIL_Y_SLOPE_UP ), MN( SPR_BTGEN_RAIL_X_SLOPE_DOWN ), MN( SPR_BTGEN_RAIL_Y_SLOPE_DOWN ),
|
||||
MN( SPR_BTGEN_RAIL_RAMP_X_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_Y_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_X_UP ), MN( SPR_BTGEN_RAIL_RAMP_Y_UP ),
|
||||
MR( SPR_BTGEN_ROAD_X_SLOPE_UP ), MR( SPR_BTGEN_ROAD_Y_SLOPE_UP ), MR( SPR_BTGEN_ROAD_X_SLOPE_DOWN ), MR( SPR_BTGEN_ROAD_Y_SLOPE_DOWN ),
|
||||
MR( SPR_BTGEN_ROAD_RAMP_X_DOWN ), MR( SPR_BTGEN_ROAD_RAMP_Y_DOWN ), MR( SPR_BTGEN_ROAD_RAMP_X_UP ), MR( SPR_BTGEN_ROAD_RAMP_Y_UP ),
|
||||
MR( SPR_BTGEN_MONO_X_SLOPE_UP ), MR( SPR_BTGEN_MONO_Y_SLOPE_UP ), MR( SPR_BTGEN_MONO_X_SLOPE_DOWN ), MR( SPR_BTGEN_MONO_Y_SLOPE_DOWN ),
|
||||
MR( SPR_BTGEN_MONO_RAMP_X_DOWN ), MR( SPR_BTGEN_MONO_RAMP_Y_DOWN ), MR( SPR_BTGEN_MONO_RAMP_X_UP ), MR( SPR_BTGEN_MONO_RAMP_Y_UP ),
|
||||
MR( SPR_BTGEN_MGLV_X_SLOPE_UP ), MR( SPR_BTGEN_MGLV_Y_SLOPE_UP ), MR( SPR_BTGEN_MGLV_X_SLOPE_DOWN ), MR( SPR_BTGEN_MGLV_Y_SLOPE_DOWN ),
|
||||
MR( SPR_BTGEN_MGLV_RAMP_X_DOWN ), MR( SPR_BTGEN_MGLV_RAMP_Y_DOWN ), MR( SPR_BTGEN_MGLV_RAMP_X_UP ), MR( SPR_BTGEN_MGLV_RAMP_Y_UP ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_archgirder_middle[] = {
|
||||
MN( SPR_BTSGA_RAIL_X_REAR ), MN( SPR_BTSGA_X_FRONT ), MN( SPR_BTSGA_X_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTSGA_RAIL_Y_REAR ), MN( SPR_BTSGA_Y_FRONT ), MN( SPR_BTSGA_Y_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTSGA_ROAD_X_REAR ), MN( SPR_BTSGA_X_FRONT ), MN( SPR_BTSGA_X_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTSGA_ROAD_Y_REAR ), MN( SPR_BTSGA_Y_FRONT ), MN( SPR_BTSGA_Y_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTSGA_MONO_X_REAR ), MN( SPR_BTSGA_X_FRONT ), MN( SPR_BTSGA_X_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTSGA_MONO_Y_REAR ), MN( SPR_BTSGA_Y_FRONT ), MN( SPR_BTSGA_Y_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTSGA_MGLV_X_REAR ), MN( SPR_BTSGA_X_FRONT ), MN( SPR_BTSGA_X_PILLAR ), MN( 0x0 ),
|
||||
MN( SPR_BTSGA_MGLV_Y_REAR ), MN( SPR_BTSGA_Y_FRONT ), MN( SPR_BTSGA_Y_PILLAR ), MN( 0x0 ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_archgirder_heads[] = {
|
||||
MN( SPR_BTGEN_RAIL_X_SLOPE_UP ), MN( SPR_BTGEN_RAIL_Y_SLOPE_UP ), MN( SPR_BTGEN_RAIL_X_SLOPE_DOWN ), MN( SPR_BTGEN_RAIL_Y_SLOPE_DOWN ),
|
||||
MN( SPR_BTGEN_RAIL_RAMP_X_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_Y_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_X_UP ), MN( SPR_BTGEN_RAIL_RAMP_Y_UP ),
|
||||
MW( SPR_BTGEN_ROAD_X_SLOPE_UP ), MW( SPR_BTGEN_ROAD_Y_SLOPE_UP ), MW( SPR_BTGEN_ROAD_X_SLOPE_DOWN ), MW( SPR_BTGEN_ROAD_Y_SLOPE_DOWN ),
|
||||
MW( SPR_BTGEN_ROAD_RAMP_X_DOWN ), MW( SPR_BTGEN_ROAD_RAMP_Y_DOWN ), MW( SPR_BTGEN_ROAD_RAMP_X_UP ), MW( SPR_BTGEN_ROAD_RAMP_Y_UP ),
|
||||
MW( SPR_BTGEN_MONO_X_SLOPE_UP ), MW( SPR_BTGEN_MONO_Y_SLOPE_UP ), MW( SPR_BTGEN_MONO_X_SLOPE_DOWN ), MW( SPR_BTGEN_MONO_Y_SLOPE_DOWN ),
|
||||
MW( SPR_BTGEN_MONO_RAMP_X_DOWN ), MW( SPR_BTGEN_MONO_RAMP_Y_DOWN ), MW( SPR_BTGEN_MONO_RAMP_X_UP ), MW( SPR_BTGEN_MONO_RAMP_Y_UP ),
|
||||
MW( SPR_BTGEN_MGLV_X_SLOPE_UP ), MW( SPR_BTGEN_MGLV_Y_SLOPE_UP ), MW( SPR_BTGEN_MGLV_X_SLOPE_DOWN ), MW( SPR_BTGEN_MGLV_Y_SLOPE_DOWN ),
|
||||
MW( SPR_BTGEN_MGLV_RAMP_X_DOWN ), MW( SPR_BTGEN_MGLV_RAMP_Y_DOWN ), MW( SPR_BTGEN_MGLV_RAMP_X_UP ), MW( SPR_BTGEN_MGLV_RAMP_Y_UP ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_concrete_suspended_A[] = {
|
||||
MC( SPR_BTSUS_RAIL_X_REAR_TILE_A ), MC( SPR_BTSUS_X_FRONT_TILE_A ), MC( SPR_BTSUS_X_PILLAR_TILE_A ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_RAIL_Y_REAR_TILE_A ), MC( SPR_BTSUS_Y_FRONT_TILE_A ), MC( SPR_BTSUS_Y_PILLAR_TILE_A ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_X_REAR_TILE_A ), MC( SPR_BTSUS_X_FRONT_TILE_A ), MC( SPR_BTSUS_X_PILLAR_TILE_A ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_Y_REAR_TILE_A ), MC( SPR_BTSUS_Y_FRONT_TILE_A ), MC( SPR_BTSUS_Y_PILLAR_TILE_A ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_X_REAR_TILE_A ), MC( SPR_BTSUS_X_FRONT_TILE_A ), MC( SPR_BTSUS_X_PILLAR_TILE_A ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_Y_REAR_TILE_A ), MC( SPR_BTSUS_Y_FRONT_TILE_A ), MC( SPR_BTSUS_Y_PILLAR_TILE_A ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_X_REAR_TILE_A ), MC( SPR_BTSUS_X_FRONT_TILE_A ), MC( SPR_BTSUS_X_PILLAR_TILE_A ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_Y_REAR_TILE_A ), MC( SPR_BTSUS_Y_FRONT_TILE_A ), MC( SPR_BTSUS_Y_PILLAR_TILE_A ), MN( 0x0 ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_concrete_suspended_B[] = {
|
||||
MC( SPR_BTSUS_RAIL_X_REAR_TILE_B ), MC( SPR_BTSUS_X_FRONT_TILE_B ), MC( SPR_BTSUS_X_PILLAR_TILE_B ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_RAIL_Y_REAR_TILE_B ), MC( SPR_BTSUS_Y_FRONT_TILE_B ), MC( SPR_BTSUS_Y_PILLAR_TILE_B ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_X_REAR_TILE_B ), MC( SPR_BTSUS_X_FRONT_TILE_B ), MC( SPR_BTSUS_X_PILLAR_TILE_B ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_Y_REAR_TILE_B ), MC( SPR_BTSUS_Y_FRONT_TILE_B ), MC( SPR_BTSUS_Y_PILLAR_TILE_B ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_X_REAR_TILE_B ), MC( SPR_BTSUS_X_FRONT_TILE_B ), MC( SPR_BTSUS_X_PILLAR_TILE_B ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_Y_REAR_TILE_B ), MC( SPR_BTSUS_Y_FRONT_TILE_B ), MC( SPR_BTSUS_Y_PILLAR_TILE_B ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_X_REAR_TILE_B ), MC( SPR_BTSUS_X_FRONT_TILE_B ), MC( SPR_BTSUS_X_PILLAR_TILE_B ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_Y_REAR_TILE_B ), MC( SPR_BTSUS_Y_FRONT_TILE_B ), MC( SPR_BTSUS_Y_PILLAR_TILE_B ), MN( 0x0 ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_concrete_suspended_C[] = {
|
||||
MC( SPR_BTSUS_RAIL_X_REAR_TILE_C ), MC( SPR_BTSUS_X_FRONT_TILE_C ), MC( SPR_BTSUS_X_PILLAR_TILE_C ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_RAIL_Y_REAR_TILE_C ), MC( SPR_BTSUS_Y_FRONT_TILE_C ), MC( SPR_BTSUS_Y_PILLAR_TILE_C ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_X_REAR_TILE_C ), MC( SPR_BTSUS_X_FRONT_TILE_C ), MC( SPR_BTSUS_X_PILLAR_TILE_C ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_Y_REAR_TILE_C ), MC( SPR_BTSUS_Y_FRONT_TILE_C ), MC( SPR_BTSUS_Y_PILLAR_TILE_C ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_X_REAR_TILE_C ), MC( SPR_BTSUS_X_FRONT_TILE_C ), MC( SPR_BTSUS_X_PILLAR_TILE_C ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_Y_REAR_TILE_C ), MC( SPR_BTSUS_Y_FRONT_TILE_C ), MC( SPR_BTSUS_Y_PILLAR_TILE_C ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_X_REAR_TILE_C ), MC( SPR_BTSUS_X_FRONT_TILE_C ), MC( SPR_BTSUS_X_PILLAR_TILE_C ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_Y_REAR_TILE_C ), MC( SPR_BTSUS_Y_FRONT_TILE_C ), MC( SPR_BTSUS_Y_PILLAR_TILE_C ), MN( 0x0 ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_concrete_suspended_D[] = {
|
||||
MC( SPR_BTSUS_RAIL_X_REAR_TILE_D ), MC( SPR_BTSUS_X_FRONT_TILE_D ), MC( SPR_BTSUS_X_PILLAR_TILE_D ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_RAIL_Y_REAR_TILE_D ), MC( SPR_BTSUS_Y_FRONT_TILE_D ), MC( SPR_BTSUS_Y_PILLAR_TILE_D ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_X_REAR_TILE_D ), MC( SPR_BTSUS_X_FRONT_TILE_D ), MC( SPR_BTSUS_X_PILLAR_TILE_D ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_Y_REAR_TILE_D ), MC( SPR_BTSUS_Y_FRONT_TILE_D ), MC( SPR_BTSUS_Y_PILLAR_TILE_D ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_X_REAR_TILE_D ), MC( SPR_BTSUS_X_FRONT_TILE_D ), MC( SPR_BTSUS_X_PILLAR_TILE_D ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_Y_REAR_TILE_D ), MC( SPR_BTSUS_Y_FRONT_TILE_D ), MC( SPR_BTSUS_Y_PILLAR_TILE_D ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_X_REAR_TILE_D ), MC( SPR_BTSUS_X_FRONT_TILE_D ), MC( SPR_BTSUS_X_PILLAR_TILE_D ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_Y_REAR_TILE_D ), MC( SPR_BTSUS_Y_FRONT_TILE_D ), MC( SPR_BTSUS_Y_PILLAR_TILE_D ), MN( 0x0 ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_concrete_suspended_E[] = {
|
||||
MC( SPR_BTSUS_RAIL_X_REAR_TILE_E ), MC( SPR_BTSUS_X_FRONT_TILE_E ), MC( SPR_BTSUS_X_PILLAR_TILE_E ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_RAIL_Y_REAR_TILE_E ), MC( SPR_BTSUS_Y_FRONT_TILE_E ), MC( SPR_BTSUS_Y_PILLAR_TILE_E ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_X_REAR_TILE_E ), MC( SPR_BTSUS_X_FRONT_TILE_E ), MC( SPR_BTSUS_X_PILLAR_TILE_E ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_Y_REAR_TILE_E ), MC( SPR_BTSUS_Y_FRONT_TILE_E ), MC( SPR_BTSUS_Y_PILLAR_TILE_E ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_X_REAR_TILE_E ), MC( SPR_BTSUS_X_FRONT_TILE_E ), MC( SPR_BTSUS_X_PILLAR_TILE_E ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_Y_REAR_TILE_E ), MC( SPR_BTSUS_Y_FRONT_TILE_E ), MC( SPR_BTSUS_Y_PILLAR_TILE_E ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_X_REAR_TILE_E ), MC( SPR_BTSUS_X_FRONT_TILE_E ), MC( SPR_BTSUS_X_PILLAR_TILE_E ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_Y_REAR_TILE_E ), MC( SPR_BTSUS_Y_FRONT_TILE_E ), MC( SPR_BTSUS_Y_PILLAR_TILE_E ), MN( 0x0 ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_concrete_suspended_F[] = {
|
||||
MC( SPR_BTSUS_RAIL_X_REAR_TILE_F ), MC( SPR_BTSUS_X_FRONT ), MN( 0x0 ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_RAIL_Y_REAR_TILE_F ), MC( SPR_BTSUS_Y_FRONT ), MN( 0x0 ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_X_REAR_TILE_F ), MC( SPR_BTSUS_X_FRONT ), MN( 0x0 ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_ROAD_Y_REAR_TILE_F ), MC( SPR_BTSUS_Y_FRONT ), MN( 0x0 ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_X_REAR_TILE_F ), MC( SPR_BTSUS_X_FRONT ), MN( 0x0 ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MONO_Y_REAR_TILE_F ), MC( SPR_BTSUS_Y_FRONT ), MN( 0x0 ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_X_REAR_TILE_F ), MC( SPR_BTSUS_X_FRONT ), MN( 0x0 ), MN( 0x0 ),
|
||||
MC( SPR_BTSUS_MGLV_Y_REAR_TILE_F ), MC( SPR_BTSUS_Y_FRONT ), MN( 0x0 ), MN( 0x0 ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_concrete_suspended_heads[] = {
|
||||
MN( SPR_BTGEN_RAIL_X_SLOPE_UP ), MN( SPR_BTGEN_RAIL_Y_SLOPE_UP ), MN( SPR_BTGEN_RAIL_X_SLOPE_DOWN ), MN( SPR_BTGEN_RAIL_Y_SLOPE_DOWN ),
|
||||
MN( SPR_BTGEN_RAIL_RAMP_X_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_Y_DOWN ), MN( SPR_BTGEN_RAIL_RAMP_X_UP ), MN( SPR_BTGEN_RAIL_RAMP_Y_UP ),
|
||||
MC( SPR_BTGEN_ROAD_X_SLOPE_UP ), MC( SPR_BTGEN_ROAD_Y_SLOPE_UP ), MC( SPR_BTGEN_ROAD_X_SLOPE_DOWN ), MC( SPR_BTGEN_ROAD_Y_SLOPE_DOWN ),
|
||||
MC( SPR_BTGEN_ROAD_RAMP_X_DOWN ), MC( SPR_BTGEN_ROAD_RAMP_Y_DOWN ), MC( SPR_BTGEN_ROAD_RAMP_X_UP ), MC( SPR_BTGEN_ROAD_RAMP_Y_UP ),
|
||||
MC( SPR_BTGEN_MONO_X_SLOPE_UP ), MC( SPR_BTGEN_MONO_Y_SLOPE_UP ), MC( SPR_BTGEN_MONO_X_SLOPE_DOWN ), MC( SPR_BTGEN_MONO_Y_SLOPE_DOWN ),
|
||||
MC( SPR_BTGEN_MONO_RAMP_X_DOWN ), MC( SPR_BTGEN_MONO_RAMP_Y_DOWN ), MC( SPR_BTGEN_MONO_RAMP_X_UP ), MC( SPR_BTGEN_MONO_RAMP_Y_UP ),
|
||||
MC( SPR_BTGEN_MGLV_X_SLOPE_UP ), MC( SPR_BTGEN_MGLV_Y_SLOPE_UP ), MC( SPR_BTGEN_MGLV_X_SLOPE_DOWN ), MC( SPR_BTGEN_MGLV_Y_SLOPE_DOWN ),
|
||||
MC( SPR_BTGEN_MGLV_RAMP_X_DOWN ), MC( SPR_BTGEN_MGLV_RAMP_Y_DOWN ), MC( SPR_BTGEN_MGLV_RAMP_X_UP ), MC( SPR_BTGEN_MGLV_RAMP_Y_UP ),
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_9_0[] = {
|
||||
@@ -497,79 +502,79 @@ static const PalSpriteID _bridge_sprite_table_10_2[] = {
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_11_0[] = {
|
||||
{ 0xA0B, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA0C, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA11, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA12, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA17, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA18, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1D, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1E, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA0B, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA0C, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA11, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA12, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA17, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA18, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1D, PALETTE_TO_STRUCT_YELLOW }, { 0xA01, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1E, PALETTE_TO_STRUCT_YELLOW }, { 0xA02, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_11_1[] = {
|
||||
{ 0xA09, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA0E, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA0F, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA14, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA15, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA1A, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA1B, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA20, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA09, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA0E, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA0F, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA14, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA15, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA1A, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA1B, PALETTE_TO_STRUCT_YELLOW }, { 0x9FF, PALETTE_TO_STRUCT_YELLOW }, { 0xA05, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA20, PALETTE_TO_STRUCT_YELLOW }, { 0xA04, PALETTE_TO_STRUCT_YELLOW }, { 0xA08, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_11_2[] = {
|
||||
{ 0xA0A, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA0D, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA10, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA13, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA16, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA19, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA1C, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA1F, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA0A, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA0D, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA10, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA13, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA16, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA19, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA1C, PALETTE_TO_STRUCT_YELLOW }, { 0xA00, PALETTE_TO_STRUCT_YELLOW }, { 0xA06, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
{ 0xA1F, PALETTE_TO_STRUCT_YELLOW }, { 0xA03, PALETTE_TO_STRUCT_YELLOW }, { 0xA07, PALETTE_TO_STRUCT_YELLOW }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_12_0[] = {
|
||||
{ 0xA0B, PALETTE_TO_STRUCT_GREY }, { 0xA01, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA0C, PALETTE_TO_STRUCT_GREY }, { 0xA02, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA11, PALETTE_TO_STRUCT_GREY }, { 0xA01, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA12, PALETTE_TO_STRUCT_GREY }, { 0xA02, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA17, PALETTE_TO_STRUCT_GREY }, { 0xA01, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA18, PALETTE_TO_STRUCT_GREY }, { 0xA02, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1D, PALETTE_TO_STRUCT_GREY }, { 0xA01, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1E, PALETTE_TO_STRUCT_GREY }, { 0xA02, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA0B, PALETTE_TO_STRUCT_GREY }, { 0xA01, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA0C, PALETTE_TO_STRUCT_GREY }, { 0xA02, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA11, PALETTE_TO_STRUCT_GREY }, { 0xA01, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA12, PALETTE_TO_STRUCT_GREY }, { 0xA02, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA17, PALETTE_TO_STRUCT_GREY }, { 0xA01, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA18, PALETTE_TO_STRUCT_GREY }, { 0xA02, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1D, PALETTE_TO_STRUCT_GREY }, { 0xA01, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
{ 0xA1E, PALETTE_TO_STRUCT_GREY }, { 0xA02, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_12_1[] = {
|
||||
{ 0xA09, PALETTE_TO_STRUCT_GREY }, { 0x9FF, PALETTE_TO_STRUCT_GREY }, { 0xA05, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA0E, PALETTE_TO_STRUCT_GREY }, { 0xA04, PALETTE_TO_STRUCT_GREY }, { 0xA08, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA0F, PALETTE_TO_STRUCT_GREY }, { 0x9FF, PALETTE_TO_STRUCT_GREY }, { 0xA05, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA14, PALETTE_TO_STRUCT_GREY }, { 0xA04, PALETTE_TO_STRUCT_GREY }, { 0xA08, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA15, PALETTE_TO_STRUCT_GREY }, { 0x9FF, PALETTE_TO_STRUCT_GREY }, { 0xA05, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA1A, PALETTE_TO_STRUCT_GREY }, { 0xA04, PALETTE_TO_STRUCT_GREY }, { 0xA08, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA1B, PALETTE_TO_STRUCT_GREY }, { 0x9FF, PALETTE_TO_STRUCT_GREY }, { 0xA05, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA20, PALETTE_TO_STRUCT_GREY }, { 0xA04, PALETTE_TO_STRUCT_GREY }, { 0xA08, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA09, PALETTE_TO_STRUCT_GREY }, { 0x9FF, PALETTE_TO_STRUCT_GREY }, { 0xA05, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA0E, PALETTE_TO_STRUCT_GREY }, { 0xA04, PALETTE_TO_STRUCT_GREY }, { 0xA08, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA0F, PALETTE_TO_STRUCT_GREY }, { 0x9FF, PALETTE_TO_STRUCT_GREY }, { 0xA05, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA14, PALETTE_TO_STRUCT_GREY }, { 0xA04, PALETTE_TO_STRUCT_GREY }, { 0xA08, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA15, PALETTE_TO_STRUCT_GREY }, { 0x9FF, PALETTE_TO_STRUCT_GREY }, { 0xA05, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA1A, PALETTE_TO_STRUCT_GREY }, { 0xA04, PALETTE_TO_STRUCT_GREY }, { 0xA08, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA1B, PALETTE_TO_STRUCT_GREY }, { 0x9FF, PALETTE_TO_STRUCT_GREY }, { 0xA05, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA20, PALETTE_TO_STRUCT_GREY }, { 0xA04, PALETTE_TO_STRUCT_GREY }, { 0xA08, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID _bridge_sprite_table_12_2[] = {
|
||||
{ 0xA0A, PALETTE_TO_STRUCT_GREY }, { 0xA00, PALETTE_TO_STRUCT_GREY }, { 0xA06, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA0D, PALETTE_TO_STRUCT_GREY }, { 0xA03, PALETTE_TO_STRUCT_GREY }, { 0xA07, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA10, PALETTE_TO_STRUCT_GREY }, { 0xA00, PALETTE_TO_STRUCT_GREY }, { 0xA06, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA13, PALETTE_TO_STRUCT_GREY }, { 0xA03, PALETTE_TO_STRUCT_GREY }, { 0xA07, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA16, PALETTE_TO_STRUCT_GREY }, { 0xA00, PALETTE_TO_STRUCT_GREY }, { 0xA06, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA19, PALETTE_TO_STRUCT_GREY }, { 0xA03, PALETTE_TO_STRUCT_GREY }, { 0xA07, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA1C, PALETTE_TO_STRUCT_GREY }, { 0xA00, PALETTE_TO_STRUCT_GREY }, { 0xA06, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA1F, PALETTE_TO_STRUCT_GREY }, { 0xA03, PALETTE_TO_STRUCT_GREY }, { 0xA07, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA0A, PALETTE_TO_STRUCT_GREY }, { 0xA00, PALETTE_TO_STRUCT_GREY }, { 0xA06, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA0D, PALETTE_TO_STRUCT_GREY }, { 0xA03, PALETTE_TO_STRUCT_GREY }, { 0xA07, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA10, PALETTE_TO_STRUCT_GREY }, { 0xA00, PALETTE_TO_STRUCT_GREY }, { 0xA06, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA13, PALETTE_TO_STRUCT_GREY }, { 0xA03, PALETTE_TO_STRUCT_GREY }, { 0xA07, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA16, PALETTE_TO_STRUCT_GREY }, { 0xA00, PALETTE_TO_STRUCT_GREY }, { 0xA06, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA19, PALETTE_TO_STRUCT_GREY }, { 0xA03, PALETTE_TO_STRUCT_GREY }, { 0xA07, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA1C, PALETTE_TO_STRUCT_GREY }, { 0xA00, PALETTE_TO_STRUCT_GREY }, { 0xA06, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
{ 0xA1F, PALETTE_TO_STRUCT_GREY }, { 0xA03, PALETTE_TO_STRUCT_GREY }, { 0xA07, PALETTE_TO_STRUCT_GREY }, { 0x0, PAL_NONE },
|
||||
};
|
||||
|
||||
static const PalSpriteID * const _bridge_sprite_table_2[] = {
|
||||
_bridge_sprite_table_2_0,
|
||||
_bridge_sprite_table_2_0,
|
||||
_bridge_sprite_table_2_0,
|
||||
_bridge_sprite_table_2_0,
|
||||
_bridge_sprite_table_2_0,
|
||||
_bridge_sprite_table_2_0,
|
||||
_bridge_sprite_table_2_1,
|
||||
static const PalSpriteID * const _bridge_sprite_table_archgirder[] = {
|
||||
_bridge_sprite_table_archgirder_middle,
|
||||
_bridge_sprite_table_archgirder_middle,
|
||||
_bridge_sprite_table_archgirder_middle,
|
||||
_bridge_sprite_table_archgirder_middle,
|
||||
_bridge_sprite_table_archgirder_middle,
|
||||
_bridge_sprite_table_archgirder_middle,
|
||||
_bridge_sprite_table_archgirder_heads,
|
||||
};
|
||||
|
||||
static const PalSpriteID * const _bridge_sprite_table_4[] = {
|
||||
@@ -592,14 +597,14 @@ static const PalSpriteID * const _bridge_sprite_table_5[] = {
|
||||
_bridge_sprite_table_5_6,
|
||||
};
|
||||
|
||||
static const PalSpriteID * const _bridge_sprite_table_3[] = {
|
||||
_bridge_sprite_table_3_0,
|
||||
_bridge_sprite_table_3_1,
|
||||
_bridge_sprite_table_3_2,
|
||||
_bridge_sprite_table_3_3,
|
||||
_bridge_sprite_table_3_4,
|
||||
_bridge_sprite_table_3_5,
|
||||
_bridge_sprite_table_3_6,
|
||||
static const PalSpriteID * const _bridge_sprite_table_concrete_suspended[] = {
|
||||
_bridge_sprite_table_concrete_suspended_A,
|
||||
_bridge_sprite_table_concrete_suspended_B,
|
||||
_bridge_sprite_table_concrete_suspended_C,
|
||||
_bridge_sprite_table_concrete_suspended_D,
|
||||
_bridge_sprite_table_concrete_suspended_E,
|
||||
_bridge_sprite_table_concrete_suspended_F,
|
||||
_bridge_sprite_table_concrete_suspended_heads,
|
||||
};
|
||||
|
||||
static const PalSpriteID * const _bridge_sprite_table_6[] = {
|
||||
@@ -632,24 +637,24 @@ static const PalSpriteID * const _bridge_sprite_table_8[] = {
|
||||
_bridge_sprite_table_8_3,
|
||||
};
|
||||
|
||||
static const PalSpriteID * const _bridge_sprite_table_0[] = {
|
||||
_bridge_sprite_table_0_0,
|
||||
_bridge_sprite_table_0_0,
|
||||
_bridge_sprite_table_0_0,
|
||||
_bridge_sprite_table_0_0,
|
||||
_bridge_sprite_table_0_0,
|
||||
_bridge_sprite_table_0_0,
|
||||
_bridge_sprite_table_0_1,
|
||||
static const PalSpriteID * const _bridge_sprite_table_wood[] = {
|
||||
_bridge_sprite_table_wood_middle,
|
||||
_bridge_sprite_table_wood_middle,
|
||||
_bridge_sprite_table_wood_middle,
|
||||
_bridge_sprite_table_wood_middle,
|
||||
_bridge_sprite_table_wood_middle,
|
||||
_bridge_sprite_table_wood_middle,
|
||||
_bridge_sprite_table_wood_heads,
|
||||
};
|
||||
|
||||
static const PalSpriteID * const _bridge_sprite_table_1[] = {
|
||||
_bridge_sprite_table_1_0,
|
||||
_bridge_sprite_table_1_0,
|
||||
_bridge_sprite_table_1_0,
|
||||
_bridge_sprite_table_1_0,
|
||||
_bridge_sprite_table_1_0,
|
||||
_bridge_sprite_table_1_0,
|
||||
_bridge_sprite_table_1_1,
|
||||
static const PalSpriteID * const _bridge_sprite_table_concrete[] = {
|
||||
_bridge_sprite_table_concrete_middle,
|
||||
_bridge_sprite_table_concrete_middle,
|
||||
_bridge_sprite_table_concrete_middle,
|
||||
_bridge_sprite_table_concrete_middle,
|
||||
_bridge_sprite_table_concrete_middle,
|
||||
_bridge_sprite_table_concrete_middle,
|
||||
_bridge_sprite_table_concrete_heads,
|
||||
};
|
||||
|
||||
static const PalSpriteID * const _bridge_sprite_table_9[] = {
|
||||
@@ -689,14 +694,14 @@ static const PalSpriteID * const _bridge_sprite_table_12[] = {
|
||||
_bridge_sprite_table_12_2,
|
||||
_bridge_sprite_table_12_2,
|
||||
_bridge_sprite_table_12_2,
|
||||
_bridge_sprite_table_3_6,
|
||||
_bridge_sprite_table_concrete_suspended_heads,
|
||||
};
|
||||
|
||||
static const PalSpriteID * const * const _bridge_sprite_table[MAX_BRIDGES] = {
|
||||
_bridge_sprite_table_0,
|
||||
_bridge_sprite_table_1,
|
||||
_bridge_sprite_table_2,
|
||||
_bridge_sprite_table_3,
|
||||
_bridge_sprite_table_wood,
|
||||
_bridge_sprite_table_concrete,
|
||||
_bridge_sprite_table_archgirder,
|
||||
_bridge_sprite_table_concrete_suspended,
|
||||
_bridge_sprite_table_4,
|
||||
_bridge_sprite_table_5,
|
||||
_bridge_sprite_table_6,
|
||||
@@ -720,7 +725,7 @@ static const PalSpriteID * const * const _bridge_sprite_table[MAX_BRIDGES] = {
|
||||
* @param nrl description of the rail bridge in query tool
|
||||
* @param nrd description of the road bridge in query tool
|
||||
*/
|
||||
#define MB(y, mnl, mxl, p, mxs, spr, plt, dsc, nrl, nrd) \
|
||||
#define MBR(y, mnl, mxl, p, mxs, spr, plt, dsc, nrl, nrd) \
|
||||
{y, mnl, mxl, p, mxs, spr, plt, dsc, { nrl, nrd }, NULL, 0}
|
||||
|
||||
const BridgeSpec _orig_bridge[] = {
|
||||
@@ -734,45 +739,48 @@ const BridgeSpec _orig_bridge[] = {
|
||||
| | | | | | palette in GUI
|
||||
string with description name on rail name on road
|
||||
| | | */
|
||||
MB( 0, 0, 16, 80, 32, 0xA24, PAL_NONE,
|
||||
MBR( 0, 0, 16, 80, 32, 0xA24, PAL_NONE,
|
||||
STR_5012_WOODEN, STR_501F_WOODEN_RAIL_BRIDGE, STR_5025_WOODEN_ROAD_BRIDGE),
|
||||
|
||||
MB( 0, 0, 2, 112, 48, 0xA26, PALETTE_TO_STRUCT_RED,
|
||||
MBR( 0, 0, 2, 112, 48, 0xA26, PALETTE_TO_STRUCT_RED,
|
||||
STR_5013_CONCRETE, STR_5020_CONCRETE_RAIL_BRIDGE, STR_5026_CONCRETE_ROAD_BRIDGE),
|
||||
|
||||
MB( 1930, 0, 5, 144, 64, 0xA25, PAL_NONE,
|
||||
MBR(1930, 0, 5, 144, 64, 0xA25, PAL_NONE,
|
||||
STR_500F_GIRDER_STEEL, STR_501C_STEEL_GIRDER_RAIL_BRIDGE, STR_5022_STEEL_GIRDER_ROAD_BRIDGE),
|
||||
|
||||
MB( 0, 2, 10, 168, 80, 0xA22, PALETTE_TO_STRUCT_CONCRETE,
|
||||
MBR( 0, 2, 10, 168, 80, 0xA22, PALETTE_TO_STRUCT_CONCRETE,
|
||||
STR_5011_SUSPENSION_CONCRETE, STR_501E_REINFORCED_CONCRETE_SUSPENSION, STR_5024_REINFORCED_CONCRETE_SUSPENSION),
|
||||
|
||||
MB( 1930, 3, 16, 185, 96, 0xA22, PAL_NONE,
|
||||
MBR(1930, 3, 16, 185, 96, 0xA22, PAL_NONE,
|
||||
STR_500E_SUSPENSION_STEEL, STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE, STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE),
|
||||
|
||||
MB( 1930, 3, 16, 192, 112, 0xA22, PALETTE_TO_STRUCT_YELLOW,
|
||||
MBR(1930, 3, 16, 192, 112, 0xA22, PALETTE_TO_STRUCT_YELLOW,
|
||||
STR_500E_SUSPENSION_STEEL, STR_501B_STEEL_SUSPENSION_RAIL_BRIDGE, STR_5021_STEEL_SUSPENSION_ROAD_BRIDGE),
|
||||
|
||||
MB( 1930, 3, 7, 224, 160, 0xA23, PAL_NONE,
|
||||
MBR(1930, 3, 7, 224, 160, 0xA23, PAL_NONE,
|
||||
STR_5010_CANTILEVER_STEEL, STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE, STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE),
|
||||
|
||||
MB( 1930, 3, 8, 232, 208, 0xA23, PALETTE_TO_STRUCT_BROWN,
|
||||
MBR(1930, 3, 8, 232, 208, 0xA23, PALETTE_TO_STRUCT_BROWN,
|
||||
STR_5010_CANTILEVER_STEEL, STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE, STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE),
|
||||
|
||||
MB( 1930, 3, 9, 248, 240, 0xA23, PALETTE_TO_STRUCT_RED,
|
||||
MBR(1930, 3, 9, 248, 240, 0xA23, PALETTE_TO_STRUCT_RED,
|
||||
STR_5010_CANTILEVER_STEEL, STR_501D_STEEL_CANTILEVER_RAIL_BRIDGE, STR_5023_STEEL_CANTILEVER_ROAD_BRIDGE),
|
||||
|
||||
MB( 1930, 0, 2, 240, 256, 0xA27, PAL_NONE,
|
||||
MBR(1930, 0, 2, 240, 256, 0xA27, PAL_NONE,
|
||||
STR_500F_GIRDER_STEEL, STR_501C_STEEL_GIRDER_RAIL_BRIDGE, STR_5022_STEEL_GIRDER_ROAD_BRIDGE),
|
||||
|
||||
MB( 1995, 2, 16, 255, 320, 0xA28, PAL_NONE,
|
||||
MBR(1995, 2, 16, 255, 320, 0xA28, PAL_NONE,
|
||||
STR_5014_TUBULAR_STEEL, STR_5027_TUBULAR_RAIL_BRIDGE, STR_5028_TUBULAR_ROAD_BRIDGE),
|
||||
|
||||
MB( 2005, 2, 32, 380, 512, 0xA28, PALETTE_TO_STRUCT_YELLOW,
|
||||
MBR(2005, 2, 32, 380, 512, 0xA28, PALETTE_TO_STRUCT_YELLOW,
|
||||
STR_5014_TUBULAR_STEEL, STR_5027_TUBULAR_RAIL_BRIDGE, STR_5028_TUBULAR_ROAD_BRIDGE),
|
||||
|
||||
MB( 2010, 2, 32, 510, 608, 0xA28, PALETTE_TO_STRUCT_GREY,
|
||||
MBR(2010, 2, 32, 510, 608, 0xA28, PALETTE_TO_STRUCT_GREY,
|
||||
STR_BRIDGE_TUBULAR_SILICON, STR_5027_TUBULAR_RAIL_BRIDGE, STR_5028_TUBULAR_ROAD_BRIDGE)
|
||||
};
|
||||
|
||||
#undef MB
|
||||
|
||||
#undef MBR
|
||||
#undef MN
|
||||
#undef MR
|
||||
#undef MW
|
||||
#undef MC
|
||||
|
||||
+131
-123
@@ -7,6 +7,14 @@
|
||||
* This file contains all the data for vehicles
|
||||
*/
|
||||
|
||||
enum {
|
||||
RC_W = 0xFF, ///< Running cost price index (out of range) of wagons
|
||||
RC_S = 0x2A, ///< Running cost price index of steam
|
||||
RC_D = 0x2B, ///< Running cost price index of diesel
|
||||
RC_E = 0x2C, ///< Running cost price index of electric
|
||||
RC_R = 0x2E, ///< Running cost price index of road vehicles
|
||||
};
|
||||
|
||||
/** Writes the properties of a train or road vehicle into the EngineInfo struct.
|
||||
* @see EngineInfo
|
||||
* @param a Introduction date
|
||||
@@ -336,7 +344,7 @@ const EngineInfo _orig_engine_info[] = {
|
||||
* @param d max_speed (kph)
|
||||
* @param e power (hp)
|
||||
* @param f weight
|
||||
* @param g running_cost_base
|
||||
* @param g running_cost
|
||||
* @param h running_cost_class
|
||||
* @param i capacity
|
||||
* @param j cargo_type
|
||||
@@ -363,127 +371,127 @@ const EngineInfo _orig_engine_info[] = {
|
||||
#define L RAILTYPE_MAGLEV
|
||||
|
||||
const RailVehicleInfo _orig_rail_vehicle_info[NUM_TRAIN_ENGINES] = {
|
||||
// image_index max_speed (kph) running_cost_base ai_rank
|
||||
// | flags | power (hp) | running_cost_class | railtype
|
||||
// | | base_cost | weight | | capacity | |
|
||||
// | | | | | | | | | cargo_type | | engclass
|
||||
// | | | | | | | | | | | | |
|
||||
RVI( 2, G, 7, 64, 300, 47, 50, S, 0, 0 , 1, R, S), // 0
|
||||
RVI(19, G, 8, 80, 600, 65, 65, D, 0, 0 , 4, R, D), // 1
|
||||
RVI( 2, G, 10, 72, 400, 85, 90, S, 0, 0 , 7, R, S), // 2
|
||||
RVI( 0, G, 15, 96, 900, 130, 130, S, 0, 0 , 19, R, S), // 3
|
||||
RVI( 1, G, 19, 112, 1000, 140, 145, S, 0, 0 , 20, R, S), // 4
|
||||
RVI(12, G, 16, 120, 1400, 95, 125, D, 0, 0 , 30, R, D), // 5
|
||||
RVI(14, G, 20, 152, 2000, 120, 135, D, 0, 0 , 31, R, D), // 6
|
||||
RVI( 3, G, 14, 88, 1100, 145, 130, S, 0, 0 , 19, R, S), // 7
|
||||
RVI( 0, G, 13, 112, 1000, 131, 120, S, 0, 0 , 20, R, S), // 8
|
||||
RVI( 1, G, 19, 128, 1200, 162, 140, S, 0, 0 , 21, R, S), // 9
|
||||
RVI( 0, G, 22, 144, 1600, 170, 130, S, 0, 0 , 22, R, S), // 10
|
||||
RVI( 8, M, 11, 112, 600/2,32/2, 85/2, D, 38, CT_PASSENGERS , 10, R, D), // 11
|
||||
RVI(10, M, 14, 120, 700/2,38/2, 70/2, D, 40, CT_PASSENGERS , 11, R, D), // 12
|
||||
RVI( 4, G, 15, 128, 1250, 72, 95, D, 0, 0 , 30, R, D), // 13
|
||||
RVI( 5, G, 17, 144, 1750, 101, 120, D, 0, 0 , 31, R, D), // 14
|
||||
RVI( 4, G, 18, 160, 2580, 112, 140, D, 0, 0 , 32, R, D), // 15
|
||||
RVI(14, G, 23, 96, 4000, 150, 135, D, 0, 0 , 33, R, D), // 16
|
||||
RVI(12, G, 16, 112, 2400, 120, 105, D, 0, 0 , 34, R, D), // 17
|
||||
RVI(13, G, 30, 112, 6600, 207, 155, D, 0, 0 , 35, R, D), // 18
|
||||
RVI(15, G, 18, 104, 1500, 110, 105, D, 0, 0 , 29, R, D), // 19
|
||||
RVI(16, M, 35, 160, 3500/2,95/2, 205/2, D, 0, 0 , 45, R, D), // 20
|
||||
RVI(18, G, 21, 104, 2200, 120, 145, D, 0, 0 , 32, R, D), // 21
|
||||
RVI( 6, M, 20, 200, 4500/2,70/2, 190/2, D, 4, CT_MAIL , 50, R, D), // 22
|
||||
RVI(20, G, 26, 160, 3600, 84, 180, E, 0, 0 , 40, C, E), // 23
|
||||
RVI(20, G, 30, 176, 5000, 82, 205, E, 0, 0 , 41, C, E), // 24
|
||||
RVI(21, M, 40, 240, 7000/2,90/2, 240/2, E, 0, 0 , 51, C, E), // 25
|
||||
RVI(23, M, 43, 264, 8000/2,95/2, 250/2, E, 0, 0 , 52, C, E), // 26
|
||||
RVI(33, W, 247, 0, 0, 25, 0, 0, 40, CT_PASSENGERS , 0, R, A), // 27
|
||||
RVI(35, W, 228, 0, 0, 21, 0, 0, 30, CT_MAIL , 0, R, A), // 28
|
||||
RVI(34, W, 176, 0, 0, 18, 0, 0, 30, CT_COAL , 0, R, A), // 29
|
||||
RVI(36, W, 200, 0, 0, 24, 0, 0, 30, CT_OIL , 0, R, A), // 30
|
||||
RVI(37, W, 192, 0, 0, 20, 0, 0, 25, CT_LIVESTOCK , 0, R, A), // 31
|
||||
RVI(38, W, 190, 0, 0, 21, 0, 0, 25, CT_GOODS , 0, R, A), // 32
|
||||
RVI(39, W, 182, 0, 0, 19, 0, 0, 30, CT_GRAIN , 0, R, A), // 33
|
||||
RVI(40, W, 181, 0, 0, 16, 0, 0, 30, CT_WOOD , 0, R, A), // 34
|
||||
RVI(41, W, 179, 0, 0, 19, 0, 0, 30, CT_IRON_ORE , 0, R, A), // 35
|
||||
RVI(42, W, 196, 0, 0, 18, 0, 0, 20, CT_STEEL , 0, R, A), // 36
|
||||
RVI(43, W, 255, 0, 0, 30, 0, 0, 20, CT_VALUABLES , 0, R, A), // 37
|
||||
RVI(44, W, 191, 0, 0, 22, 0, 0, 25, CT_FOOD , 0, R, A), // 38
|
||||
RVI(45, W, 196, 0, 0, 18, 0, 0, 20, CT_PAPER , 0, R, A), // 39
|
||||
RVI(46, W, 179, 0, 0, 19, 0, 0, 30, CT_COPPER_ORE , 0, R, A), // 40
|
||||
RVI(47, W, 199, 0, 0, 25, 0, 0, 25, CT_WATER , 0, R, A), // 41
|
||||
RVI(48, W, 182, 0, 0, 18, 0, 0, 25, CT_FRUIT , 0, R, A), // 42
|
||||
RVI(49, W, 185, 0, 0, 19, 0, 0, 21, CT_RUBBER , 0, R, A), // 43
|
||||
RVI(50, W, 176, 0, 0, 19, 0, 0, 30, CT_SUGAR , 0, R, A), // 44
|
||||
RVI(51, W, 178, 0, 0, 20, 0, 0, 30, CT_COTTON_CANDY, 0, R, A), // 45
|
||||
RVI(52, W, 192, 0, 0, 20, 0, 0, 30, CT_TOFFEE , 0, R, A), // 46
|
||||
RVI(53, W, 190, 0, 0, 21, 0, 0, 20, CT_BUBBLES , 0, R, A), // 47
|
||||
RVI(54, W, 182, 0, 0, 24, 0, 0, 25, CT_COLA , 0, R, A), // 48
|
||||
RVI(55, W, 181, 0, 0, 21, 0, 0, 25, CT_CANDY , 0, R, A), // 49
|
||||
RVI(56, W, 183, 0, 0, 21, 0, 0, 20, CT_TOYS , 0, R, A), // 50
|
||||
RVI(57, W, 196, 0, 0, 18, 0, 0, 22, CT_BATTERIES , 0, R, A), // 51
|
||||
RVI(58, W, 193, 0, 0, 18, 0, 0, 25, CT_FIZZY_DRINKS, 0, R, A), // 52
|
||||
RVI(59, W, 191, 0, 0, 18, 0, 0, 30, CT_PLASTIC , 0, R, A), // 53
|
||||
RVI(25, G, 52, 304, 9000, 95, 230, E, 0, 0 , 60, O, N), // 54
|
||||
RVI(26, M, 60, 336, 10000/2,85/2, 240/2, E, 25, CT_PASSENGERS , 62, O, N), // 55
|
||||
RVI(26, G, 53, 320, 5000, 95, 230, E, 0, 0 , 63, O, N), // 56
|
||||
RVI(60, W, 247, 0, 0, 25, 0, 0, 45, CT_PASSENGERS , 0, O, A), // 57
|
||||
RVI(62, W, 228, 0, 0, 21, 0, 0, 35, CT_MAIL , 0, O, A), // 58
|
||||
RVI(61, W, 176, 0, 0, 18, 0, 0, 35, CT_COAL , 0, O, A), // 59
|
||||
RVI(63, W, 200, 0, 0, 24, 0, 0, 35, CT_OIL , 0, O, A), // 60
|
||||
RVI(64, W, 192, 0, 0, 20, 0, 0, 30, CT_LIVESTOCK , 0, O, A), // 61
|
||||
RVI(65, W, 190, 0, 0, 21, 0, 0, 30, CT_GOODS , 0, O, A), // 62
|
||||
RVI(66, W, 182, 0, 0, 19, 0, 0, 35, CT_GRAIN , 0, O, A), // 63
|
||||
RVI(67, W, 181, 0, 0, 16, 0, 0, 35, CT_WOOD , 0, O, A), // 64
|
||||
RVI(68, W, 179, 0, 0, 19, 0, 0, 35, CT_IRON_ORE , 0, O, A), // 65
|
||||
RVI(69, W, 196, 0, 0, 18, 0, 0, 25, CT_STEEL , 0, O, A), // 66
|
||||
RVI(70, W, 255, 0, 0, 30, 0, 0, 25, CT_VALUABLES , 0, O, A), // 67
|
||||
RVI(71, W, 191, 0, 0, 22, 0, 0, 30, CT_FOOD , 0, O, A), // 68
|
||||
RVI(72, W, 196, 0, 0, 18, 0, 0, 25, CT_PAPER , 0, O, A), // 69
|
||||
RVI(73, W, 179, 0, 0, 19, 0, 0, 35, CT_COPPER_ORE , 0, O, A), // 70
|
||||
RVI(47, W, 199, 0, 0, 25, 0, 0, 30, CT_WATER , 0, O, A), // 71
|
||||
RVI(48, W, 182, 0, 0, 18, 0, 0, 30, CT_FRUIT , 0, O, A), // 72
|
||||
RVI(49, W, 185, 0, 0, 19, 0, 0, 26, CT_RUBBER , 0, O, A), // 73
|
||||
RVI(50, W, 176, 0, 0, 19, 0, 0, 35, CT_SUGAR , 0, O, A), // 74
|
||||
RVI(51, W, 178, 0, 0, 20, 0, 0, 35, CT_COTTON_CANDY, 0, O, A), // 75
|
||||
RVI(52, W, 192, 0, 0, 20, 0, 0, 35, CT_TOFFEE , 0, O, A), // 76
|
||||
RVI(53, W, 190, 0, 0, 21, 0, 0, 25, CT_BUBBLES , 0, O, A), // 77
|
||||
RVI(54, W, 182, 0, 0, 24, 0, 0, 30, CT_COLA , 0, O, A), // 78
|
||||
RVI(55, W, 181, 0, 0, 21, 0, 0, 30, CT_CANDY , 0, O, A), // 79
|
||||
RVI(56, W, 183, 0, 0, 21, 0, 0, 25, CT_TOYS , 0, O, A), // 80
|
||||
RVI(57, W, 196, 0, 0, 18, 0, 0, 27, CT_BATTERIES , 0, O, A), // 81
|
||||
RVI(58, W, 193, 0, 0, 18, 0, 0, 30, CT_FIZZY_DRINKS, 0, O, A), // 82
|
||||
RVI(59, W, 191, 0, 0, 18, 0, 0, 35, CT_PLASTIC , 0, O, A), // 83
|
||||
RVI(28, G, 70, 400, 10000, 105, 250, E, 0, 0 , 70, L, V), // 84
|
||||
RVI(29, G, 74, 448, 12000, 120, 253, E, 0, 0 , 71, L, V), // 85
|
||||
RVI(30, G, 82, 480, 15000, 130, 254, E, 0, 0 , 72, L, V), // 86
|
||||
RVI(31, M, 95, 640, 20000/2,150/2,255/2, E, 0, 0 , 73, L, V), // 87
|
||||
RVI(28, G, 70, 480, 10000, 120, 250, E, 0, 0 , 74, L, V), // 88
|
||||
RVI(60, W, 247, 0, 0, 25, 0, 0, 47, CT_PASSENGERS , 0, L, A), // 89
|
||||
RVI(62, W, 228, 0, 0, 21, 0, 0, 37, CT_MAIL , 0, L, A), // 90
|
||||
RVI(61, W, 176, 0, 0, 18, 0, 0, 37, CT_COAL , 0, L, A), // 91
|
||||
RVI(63, W, 200, 0, 0, 24, 0, 0, 37, CT_OIL , 0, L, A), // 92
|
||||
RVI(64, W, 192, 0, 0, 20, 0, 0, 32, CT_LIVESTOCK , 0, L, A), // 93
|
||||
RVI(65, W, 190, 0, 0, 21, 0, 0, 32, CT_GOODS , 0, L, A), // 94
|
||||
RVI(66, W, 182, 0, 0, 19, 0, 0, 37, CT_GRAIN , 0, L, A), // 95
|
||||
RVI(67, W, 181, 0, 0, 16, 0, 0, 37, CT_WOOD , 0, L, A), // 96
|
||||
RVI(68, W, 179, 0, 0, 19, 0, 0, 37, CT_IRON_ORE , 0, L, A), // 97
|
||||
RVI(69, W, 196, 0, 0, 18, 0, 0, 27, CT_STEEL , 0, L, A), // 98
|
||||
RVI(70, W, 255, 0, 0, 30, 0, 0, 27, CT_VALUABLES , 0, L, A), // 99
|
||||
RVI(71, W, 191, 0, 0, 22, 0, 0, 32, CT_FOOD , 0, L, A), // 100
|
||||
RVI(72, W, 196, 0, 0, 18, 0, 0, 27, CT_PAPER , 0, L, A), // 101
|
||||
RVI(73, W, 179, 0, 0, 19, 0, 0, 37, CT_COPPER_ORE , 0, L, A), // 102
|
||||
RVI(47, W, 199, 0, 0, 25, 0, 0, 32, CT_WATER , 0, L, A), // 103
|
||||
RVI(48, W, 182, 0, 0, 18, 0, 0, 32, CT_FRUIT , 0, L, A), // 104
|
||||
RVI(49, W, 185, 0, 0, 19, 0, 0, 28, CT_RUBBER , 0, L, A), // 105
|
||||
RVI(50, W, 176, 0, 0, 19, 0, 0, 37, CT_SUGAR , 0, L, A), // 106
|
||||
RVI(51, W, 178, 0, 0, 20, 0, 0, 37, CT_COTTON_CANDY, 0, L, A), // 107
|
||||
RVI(52, W, 192, 0, 0, 20, 0, 0, 37, CT_TOFFEE , 0, L, A), // 108
|
||||
RVI(53, W, 190, 0, 0, 21, 0, 0, 27, CT_BUBBLES , 0, L, A), // 109
|
||||
RVI(54, W, 182, 0, 0, 24, 0, 0, 32, CT_COLA , 0, L, A), // 110
|
||||
RVI(55, W, 181, 0, 0, 21, 0, 0, 32, CT_CANDY , 0, L, A), // 111
|
||||
RVI(56, W, 183, 0, 0, 21, 0, 0, 27, CT_TOYS , 0, L, A), // 112
|
||||
RVI(57, W, 196, 0, 0, 18, 0, 0, 29, CT_BATTERIES , 0, L, A), // 113
|
||||
RVI(58, W, 193, 0, 0, 18, 0, 0, 32, CT_FIZZY_DRINKS, 0, L, A), // 114
|
||||
RVI(59, W, 191, 0, 0, 18, 0, 0, 37, CT_PLASTIC , 0, L, A), // 115
|
||||
// image_index max_speed (kph) running_cost ai_rank
|
||||
// | flags | power (hp) | running_cost_class | railtype
|
||||
// | | base_cost | weight | | capacity | |
|
||||
// | | | | | | | | | cargo_type | | engclass
|
||||
// | | | | | | | | | | | | |
|
||||
RVI( 2, G, 7, 64, 300, 47, 50, RC_S, 0, 0 , 1, R, S), // 0
|
||||
RVI(19, G, 8, 80, 600, 65, 65, RC_D, 0, 0 , 4, R, D), // 1
|
||||
RVI( 2, G, 10, 72, 400, 85, 90, RC_S, 0, 0 , 7, R, S), // 2
|
||||
RVI( 0, G, 15, 96, 900, 130, 130, RC_S, 0, 0 , 19, R, S), // 3
|
||||
RVI( 1, G, 19, 112, 1000, 140, 145, RC_S, 0, 0 , 20, R, S), // 4
|
||||
RVI(12, G, 16, 120, 1400, 95, 125, RC_D, 0, 0 , 30, R, D), // 5
|
||||
RVI(14, G, 20, 152, 2000, 120, 135, RC_D, 0, 0 , 31, R, D), // 6
|
||||
RVI( 3, G, 14, 88, 1100, 145, 130, RC_S, 0, 0 , 19, R, S), // 7
|
||||
RVI( 0, G, 13, 112, 1000, 131, 120, RC_S, 0, 0 , 20, R, S), // 8
|
||||
RVI( 1, G, 19, 128, 1200, 162, 140, RC_S, 0, 0 , 21, R, S), // 9
|
||||
RVI( 0, G, 22, 144, 1600, 170, 130, RC_S, 0, 0 , 22, R, S), // 10
|
||||
RVI( 8, M, 11, 112, 600/2,32/2, 85/2, RC_D, 38, CT_PASSENGERS , 10, R, D), // 11
|
||||
RVI(10, M, 14, 120, 700/2,38/2, 70/2, RC_D, 40, CT_PASSENGERS , 11, R, D), // 12
|
||||
RVI( 4, G, 15, 128, 1250, 72, 95, RC_D, 0, 0 , 30, R, D), // 13
|
||||
RVI( 5, G, 17, 144, 1750, 101, 120, RC_D, 0, 0 , 31, R, D), // 14
|
||||
RVI( 4, G, 18, 160, 2580, 112, 140, RC_D, 0, 0 , 32, R, D), // 15
|
||||
RVI(14, G, 23, 96, 4000, 150, 135, RC_D, 0, 0 , 33, R, D), // 16
|
||||
RVI(12, G, 16, 112, 2400, 120, 105, RC_D, 0, 0 , 34, R, D), // 17
|
||||
RVI(13, G, 30, 112, 6600, 207, 155, RC_D, 0, 0 , 35, R, D), // 18
|
||||
RVI(15, G, 18, 104, 1500, 110, 105, RC_D, 0, 0 , 29, R, D), // 19
|
||||
RVI(16, M, 35, 160, 3500/2,95/2, 205/2, RC_D, 0, 0 , 45, R, D), // 20
|
||||
RVI(18, G, 21, 104, 2200, 120, 145, RC_D, 0, 0 , 32, R, D), // 21
|
||||
RVI( 6, M, 20, 200, 4500/2,70/2, 190/2, RC_D, 4, CT_MAIL , 50, R, D), // 22
|
||||
RVI(20, G, 26, 160, 3600, 84, 180, RC_E, 0, 0 , 40, C, E), // 23
|
||||
RVI(20, G, 30, 176, 5000, 82, 205, RC_E, 0, 0 , 41, C, E), // 24
|
||||
RVI(21, M, 40, 240, 7000/2,90/2, 240/2, RC_E, 0, 0 , 51, C, E), // 25
|
||||
RVI(23, M, 43, 264, 8000/2,95/2, 250/2, RC_E, 0, 0 , 52, C, E), // 26
|
||||
RVI(33, W, 247, 0, 0, 25, 0, RC_W, 40, CT_PASSENGERS , 0, R, A), // 27
|
||||
RVI(35, W, 228, 0, 0, 21, 0, RC_W, 30, CT_MAIL , 0, R, A), // 28
|
||||
RVI(34, W, 176, 0, 0, 18, 0, RC_W, 30, CT_COAL , 0, R, A), // 29
|
||||
RVI(36, W, 200, 0, 0, 24, 0, RC_W, 30, CT_OIL , 0, R, A), // 30
|
||||
RVI(37, W, 192, 0, 0, 20, 0, RC_W, 25, CT_LIVESTOCK , 0, R, A), // 31
|
||||
RVI(38, W, 190, 0, 0, 21, 0, RC_W, 25, CT_GOODS , 0, R, A), // 32
|
||||
RVI(39, W, 182, 0, 0, 19, 0, RC_W, 30, CT_GRAIN , 0, R, A), // 33
|
||||
RVI(40, W, 181, 0, 0, 16, 0, RC_W, 30, CT_WOOD , 0, R, A), // 34
|
||||
RVI(41, W, 179, 0, 0, 19, 0, RC_W, 30, CT_IRON_ORE , 0, R, A), // 35
|
||||
RVI(42, W, 196, 0, 0, 18, 0, RC_W, 20, CT_STEEL , 0, R, A), // 36
|
||||
RVI(43, W, 255, 0, 0, 30, 0, RC_W, 20, CT_VALUABLES , 0, R, A), // 37
|
||||
RVI(44, W, 191, 0, 0, 22, 0, RC_W, 25, CT_FOOD , 0, R, A), // 38
|
||||
RVI(45, W, 196, 0, 0, 18, 0, RC_W, 20, CT_PAPER , 0, R, A), // 39
|
||||
RVI(46, W, 179, 0, 0, 19, 0, RC_W, 30, CT_COPPER_ORE , 0, R, A), // 40
|
||||
RVI(47, W, 199, 0, 0, 25, 0, RC_W, 25, CT_WATER , 0, R, A), // 41
|
||||
RVI(48, W, 182, 0, 0, 18, 0, RC_W, 25, CT_FRUIT , 0, R, A), // 42
|
||||
RVI(49, W, 185, 0, 0, 19, 0, RC_W, 21, CT_RUBBER , 0, R, A), // 43
|
||||
RVI(50, W, 176, 0, 0, 19, 0, RC_W, 30, CT_SUGAR , 0, R, A), // 44
|
||||
RVI(51, W, 178, 0, 0, 20, 0, RC_W, 30, CT_COTTON_CANDY, 0, R, A), // 45
|
||||
RVI(52, W, 192, 0, 0, 20, 0, RC_W, 30, CT_TOFFEE , 0, R, A), // 46
|
||||
RVI(53, W, 190, 0, 0, 21, 0, RC_W, 20, CT_BUBBLES , 0, R, A), // 47
|
||||
RVI(54, W, 182, 0, 0, 24, 0, RC_W, 25, CT_COLA , 0, R, A), // 48
|
||||
RVI(55, W, 181, 0, 0, 21, 0, RC_W, 25, CT_CANDY , 0, R, A), // 49
|
||||
RVI(56, W, 183, 0, 0, 21, 0, RC_W, 20, CT_TOYS , 0, R, A), // 50
|
||||
RVI(57, W, 196, 0, 0, 18, 0, RC_W, 22, CT_BATTERIES , 0, R, A), // 51
|
||||
RVI(58, W, 193, 0, 0, 18, 0, RC_W, 25, CT_FIZZY_DRINKS, 0, R, A), // 52
|
||||
RVI(59, W, 191, 0, 0, 18, 0, RC_W, 30, CT_PLASTIC , 0, R, A), // 53
|
||||
RVI(25, G, 52, 304, 9000, 95, 230, RC_E, 0, 0 , 60, O, N), // 54
|
||||
RVI(26, M, 60, 336, 10000/2,85/2, 240/2, RC_E, 25, CT_PASSENGERS , 62, O, N), // 55
|
||||
RVI(26, G, 53, 320, 5000, 95, 230, RC_E, 0, 0 , 63, O, N), // 56
|
||||
RVI(60, W, 247, 0, 0, 25, 0, RC_W, 45, CT_PASSENGERS , 0, O, A), // 57
|
||||
RVI(62, W, 228, 0, 0, 21, 0, RC_W, 35, CT_MAIL , 0, O, A), // 58
|
||||
RVI(61, W, 176, 0, 0, 18, 0, RC_W, 35, CT_COAL , 0, O, A), // 59
|
||||
RVI(63, W, 200, 0, 0, 24, 0, RC_W, 35, CT_OIL , 0, O, A), // 60
|
||||
RVI(64, W, 192, 0, 0, 20, 0, RC_W, 30, CT_LIVESTOCK , 0, O, A), // 61
|
||||
RVI(65, W, 190, 0, 0, 21, 0, RC_W, 30, CT_GOODS , 0, O, A), // 62
|
||||
RVI(66, W, 182, 0, 0, 19, 0, RC_W, 35, CT_GRAIN , 0, O, A), // 63
|
||||
RVI(67, W, 181, 0, 0, 16, 0, RC_W, 35, CT_WOOD , 0, O, A), // 64
|
||||
RVI(68, W, 179, 0, 0, 19, 0, RC_W, 35, CT_IRON_ORE , 0, O, A), // 65
|
||||
RVI(69, W, 196, 0, 0, 18, 0, RC_W, 25, CT_STEEL , 0, O, A), // 66
|
||||
RVI(70, W, 255, 0, 0, 30, 0, RC_W, 25, CT_VALUABLES , 0, O, A), // 67
|
||||
RVI(71, W, 191, 0, 0, 22, 0, RC_W, 30, CT_FOOD , 0, O, A), // 68
|
||||
RVI(72, W, 196, 0, 0, 18, 0, RC_W, 25, CT_PAPER , 0, O, A), // 69
|
||||
RVI(73, W, 179, 0, 0, 19, 0, RC_W, 35, CT_COPPER_ORE , 0, O, A), // 70
|
||||
RVI(47, W, 199, 0, 0, 25, 0, RC_W, 30, CT_WATER , 0, O, A), // 71
|
||||
RVI(48, W, 182, 0, 0, 18, 0, RC_W, 30, CT_FRUIT , 0, O, A), // 72
|
||||
RVI(49, W, 185, 0, 0, 19, 0, RC_W, 26, CT_RUBBER , 0, O, A), // 73
|
||||
RVI(50, W, 176, 0, 0, 19, 0, RC_W, 35, CT_SUGAR , 0, O, A), // 74
|
||||
RVI(51, W, 178, 0, 0, 20, 0, RC_W, 35, CT_COTTON_CANDY, 0, O, A), // 75
|
||||
RVI(52, W, 192, 0, 0, 20, 0, RC_W, 35, CT_TOFFEE , 0, O, A), // 76
|
||||
RVI(53, W, 190, 0, 0, 21, 0, RC_W, 25, CT_BUBBLES , 0, O, A), // 77
|
||||
RVI(54, W, 182, 0, 0, 24, 0, RC_W, 30, CT_COLA , 0, O, A), // 78
|
||||
RVI(55, W, 181, 0, 0, 21, 0, RC_W, 30, CT_CANDY , 0, O, A), // 79
|
||||
RVI(56, W, 183, 0, 0, 21, 0, RC_W, 25, CT_TOYS , 0, O, A), // 80
|
||||
RVI(57, W, 196, 0, 0, 18, 0, RC_W, 27, CT_BATTERIES , 0, O, A), // 81
|
||||
RVI(58, W, 193, 0, 0, 18, 0, RC_W, 30, CT_FIZZY_DRINKS, 0, O, A), // 82
|
||||
RVI(59, W, 191, 0, 0, 18, 0, RC_W, 35, CT_PLASTIC , 0, O, A), // 83
|
||||
RVI(28, G, 70, 400, 10000, 105, 250, RC_E, 0, 0 , 70, L, V), // 84
|
||||
RVI(29, G, 74, 448, 12000, 120, 253, RC_E, 0, 0 , 71, L, V), // 85
|
||||
RVI(30, G, 82, 480, 15000, 130, 254, RC_E, 0, 0 , 72, L, V), // 86
|
||||
RVI(31, M, 95, 640, 20000/2,150/2,255/2, RC_E, 0, 0 , 73, L, V), // 87
|
||||
RVI(28, G, 70, 480, 10000, 120, 250, RC_E, 0, 0 , 74, L, V), // 88
|
||||
RVI(60, W, 247, 0, 0, 25, 0, RC_W, 47, CT_PASSENGERS , 0, L, A), // 89
|
||||
RVI(62, W, 228, 0, 0, 21, 0, RC_W, 37, CT_MAIL , 0, L, A), // 90
|
||||
RVI(61, W, 176, 0, 0, 18, 0, RC_W, 37, CT_COAL , 0, L, A), // 91
|
||||
RVI(63, W, 200, 0, 0, 24, 0, RC_W, 37, CT_OIL , 0, L, A), // 92
|
||||
RVI(64, W, 192, 0, 0, 20, 0, RC_W, 32, CT_LIVESTOCK , 0, L, A), // 93
|
||||
RVI(65, W, 190, 0, 0, 21, 0, RC_W, 32, CT_GOODS , 0, L, A), // 94
|
||||
RVI(66, W, 182, 0, 0, 19, 0, RC_W, 37, CT_GRAIN , 0, L, A), // 95
|
||||
RVI(67, W, 181, 0, 0, 16, 0, RC_W, 37, CT_WOOD , 0, L, A), // 96
|
||||
RVI(68, W, 179, 0, 0, 19, 0, RC_W, 37, CT_IRON_ORE , 0, L, A), // 97
|
||||
RVI(69, W, 196, 0, 0, 18, 0, RC_W, 27, CT_STEEL , 0, L, A), // 98
|
||||
RVI(70, W, 255, 0, 0, 30, 0, RC_W, 27, CT_VALUABLES , 0, L, A), // 99
|
||||
RVI(71, W, 191, 0, 0, 22, 0, RC_W, 32, CT_FOOD , 0, L, A), // 100
|
||||
RVI(72, W, 196, 0, 0, 18, 0, RC_W, 27, CT_PAPER , 0, L, A), // 101
|
||||
RVI(73, W, 179, 0, 0, 19, 0, RC_W, 37, CT_COPPER_ORE , 0, L, A), // 102
|
||||
RVI(47, W, 199, 0, 0, 25, 0, RC_W, 32, CT_WATER , 0, L, A), // 103
|
||||
RVI(48, W, 182, 0, 0, 18, 0, RC_W, 32, CT_FRUIT , 0, L, A), // 104
|
||||
RVI(49, W, 185, 0, 0, 19, 0, RC_W, 28, CT_RUBBER , 0, L, A), // 105
|
||||
RVI(50, W, 176, 0, 0, 19, 0, RC_W, 37, CT_SUGAR , 0, L, A), // 106
|
||||
RVI(51, W, 178, 0, 0, 20, 0, RC_W, 37, CT_COTTON_CANDY, 0, L, A), // 107
|
||||
RVI(52, W, 192, 0, 0, 20, 0, RC_W, 37, CT_TOFFEE , 0, L, A), // 108
|
||||
RVI(53, W, 190, 0, 0, 21, 0, RC_W, 27, CT_BUBBLES , 0, L, A), // 109
|
||||
RVI(54, W, 182, 0, 0, 24, 0, RC_W, 32, CT_COLA , 0, L, A), // 110
|
||||
RVI(55, W, 181, 0, 0, 21, 0, RC_W, 32, CT_CANDY , 0, L, A), // 111
|
||||
RVI(56, W, 183, 0, 0, 21, 0, RC_W, 27, CT_TOYS , 0, L, A), // 112
|
||||
RVI(57, W, 196, 0, 0, 18, 0, RC_W, 29, CT_BATTERIES , 0, L, A), // 113
|
||||
RVI(58, W, 193, 0, 0, 18, 0, RC_W, 32, CT_FIZZY_DRINKS, 0, L, A), // 114
|
||||
RVI(59, W, 191, 0, 0, 18, 0, RC_W, 37, CT_PLASTIC , 0, L, A), // 115
|
||||
};
|
||||
#undef L
|
||||
#undef O
|
||||
@@ -609,7 +617,7 @@ const AircraftVehicleInfo _orig_aircraft_vehicle_info[NUM_AIRCRAFT_ENGINES] = {
|
||||
* @param f capacity
|
||||
* @param g cargo_type
|
||||
*/
|
||||
#define ROV(a, b, c, d, e, f, g) { a, b, c, {d}, e, f, g }
|
||||
#define ROV(a, b, c, d, e, f, g) { a, b, c, RC_R, {d}, e, f, g }
|
||||
const RoadVehicleInfo _orig_road_vehicle_info[NUM_ROAD_ENGINES] = {
|
||||
// image_index sfx max_speed
|
||||
// | base_cost | | capacity
|
||||
|
||||
+3
-3
@@ -677,7 +677,7 @@ enum Sprites {
|
||||
SPR_BTSGA_X_FRONT = 2503,
|
||||
SPR_BTSGA_Y_FRONT = 2504,
|
||||
SPR_BTSGA_X_PILLAR = 2505,
|
||||
SPR_BTSGA_Y_PILLAR = 2606,
|
||||
SPR_BTSGA_Y_PILLAR = 2506,
|
||||
SPR_BTSGA_MONO_X_REAR = 4324,
|
||||
SPR_BTSGA_MONO_Y_REAR = 4325,
|
||||
SPR_BTSGA_MGLV_X_REAR = 4364,
|
||||
@@ -709,8 +709,8 @@ enum Sprites {
|
||||
SPR_BTSUS_ROAD_X_REAR_TILE_B = 2462,
|
||||
SPR_BTSUS_X_FRONT_TILE_A = 2463,
|
||||
SPR_BTSUS_X_FRONT_TILE_B = 2464,
|
||||
SPR_BTSUS_ROAD_X_TILE_D = 2465,
|
||||
SPR_BTSUS_ROAD_X_TILE_C = 2466,
|
||||
SPR_BTSUS_ROAD_X_REAR_TILE_D = 2465,
|
||||
SPR_BTSUS_ROAD_X_REAR_TILE_C = 2466,
|
||||
SPR_BTSUS_X_FRONT_TILE_D = 2467,
|
||||
SPR_BTSUS_X_FRONT_TILE_C = 2468,
|
||||
SPR_BTSUS_RAIL_Y_REAR_TILE_A = 2469,
|
||||
|
||||
+7
-18
@@ -14,6 +14,7 @@
|
||||
#include "date_type.h"
|
||||
#include "player_type.h"
|
||||
#include "direction_type.h"
|
||||
#include "track_type.h"
|
||||
|
||||
/** The returned bits of VehicleEnterTile. */
|
||||
enum VehicleEnterTileStatus {
|
||||
@@ -60,29 +61,17 @@ typedef void GetTileDescProc(TileIndex tile, TileDesc *td);
|
||||
|
||||
/**
|
||||
* GetTileTrackStatusProcs return a value that contains the possible tracks
|
||||
* that can be taken on a given tile by a given transport. The return value is
|
||||
* composed as follows: 0xaabbccdd. ccdd and aabb are bitmasks of trackdirs,
|
||||
* where bit n corresponds to trackdir n. ccdd are the trackdirs that are
|
||||
* present in the tile (1==present, 0==not present), aabb is the signal
|
||||
* status, if applicable (0==green/no signal, 1==red, note that this is
|
||||
* reversed from map3/2[tile] for railway signals).
|
||||
* that can be taken on a given tile by a given transport.
|
||||
* The return value contains the existing trackdirs and signal states.
|
||||
*
|
||||
* The result (let's call it ts) is often used as follows:
|
||||
* tracks = (byte)(ts | ts >>8)
|
||||
* This effectively converts the present part of the result (ccdd) to a
|
||||
* track bitmask, which disregards directions. Normally, this is the same as just
|
||||
* doing (byte)ts I think, although I am not really sure
|
||||
* see track_func.h for usage of TrackStatus.
|
||||
*
|
||||
* A trackdir is combination of a track and a dir, where the lower three bits
|
||||
* are a track, the fourth bit is the direction. these give 12 (or 14)
|
||||
* possible options: 0-5 and 8-13, so we need 14 bits for a trackdir bitmask
|
||||
* above.
|
||||
* @param tile the tile to get the track status from
|
||||
* @param mode the mode of transportation
|
||||
* @param sub_mode used to differentiate between different kinds within the mode
|
||||
* @return the above mentions track status information
|
||||
* @return the track status information
|
||||
*/
|
||||
typedef uint32 GetTileTrackStatusProc(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side);
|
||||
typedef TrackStatus GetTileTrackStatusProc(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side);
|
||||
typedef void GetProducedCargoProc(TileIndex tile, CargoID *b);
|
||||
typedef void ClickTileProc(TileIndex tile);
|
||||
typedef void AnimateTileProc(TileIndex tile);
|
||||
@@ -127,7 +116,7 @@ struct TileTypeProcs {
|
||||
|
||||
extern const TileTypeProcs * const _tile_type_procs[16];
|
||||
|
||||
uint32 GetTileTrackStatus(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side = INVALID_DIAGDIR);
|
||||
TrackStatus GetTileTrackStatus(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side = INVALID_DIAGDIR);
|
||||
void GetAcceptedCargo(TileIndex tile, AcceptedCargo ac);
|
||||
void ChangeTileOwner(TileIndex tile, PlayerID old_player, PlayerID new_player);
|
||||
void AnimateTile(TileIndex tile);
|
||||
|
||||
+19
-10
@@ -106,6 +106,17 @@ static inline bool IsTileType(TileIndex tile, TileType type)
|
||||
return GetTileType(tile) == type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a tile is valid
|
||||
*
|
||||
* @param tile The tile to check
|
||||
* @return True if the tile is on the map and not one of MP_VOID.
|
||||
*/
|
||||
static inline bool IsValidTile(TileIndex tile)
|
||||
{
|
||||
return tile < MapSize() && !IsTileType(tile, MP_VOID);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the owner of a tile
|
||||
*
|
||||
@@ -115,14 +126,13 @@ static inline bool IsTileType(TileIndex tile, TileType type)
|
||||
*
|
||||
* @param tile The tile to check
|
||||
* @return The owner of the tile
|
||||
* @pre tile < MapSize()
|
||||
* @pre The type of the tile must not be MP_HOUSE, MP_VOID and MP_INDUSTRY
|
||||
* @pre IsValidTile(tile)
|
||||
* @pre The type of the tile must not be MP_HOUSE and MP_INDUSTRY
|
||||
*/
|
||||
static inline Owner GetTileOwner(TileIndex tile)
|
||||
{
|
||||
assert(tile < MapSize());
|
||||
assert(IsValidTile(tile));
|
||||
assert(!IsTileType(tile, MP_HOUSE));
|
||||
assert(!IsTileType(tile, MP_VOID));
|
||||
assert(!IsTileType(tile, MP_INDUSTRY));
|
||||
|
||||
return (Owner)_m[tile].m1;
|
||||
@@ -136,14 +146,13 @@ static inline Owner GetTileOwner(TileIndex tile)
|
||||
*
|
||||
* @param tile The tile to change the owner status.
|
||||
* @param owner The new owner.
|
||||
* @pre tile < MapSize()
|
||||
* @pre The type of the tile must not be MP_HOUSE, MP_VOID and MP_INDUSTRY
|
||||
* @pre IsValidTile(tile)
|
||||
* @pre The type of the tile must not be MP_HOUSE and MP_INDUSTRY
|
||||
*/
|
||||
static inline void SetTileOwner(TileIndex tile, Owner owner)
|
||||
{
|
||||
assert(tile < MapSize());
|
||||
assert(IsValidTile(tile));
|
||||
assert(!IsTileType(tile, MP_HOUSE));
|
||||
assert(!IsTileType(tile, MP_VOID));
|
||||
assert(!IsTileType(tile, MP_INDUSTRY));
|
||||
|
||||
_m[tile].m1 = owner;
|
||||
@@ -165,7 +174,7 @@ static inline bool IsTileOwner(TileIndex tile, Owner owner)
|
||||
* Set the tropic zone
|
||||
* @param tile the tile to set the zone of
|
||||
* @param type the new type
|
||||
* @pre assert(tile < MapSize());
|
||||
* @pre tile < MapSize()
|
||||
*/
|
||||
static inline void SetTropicZone(TileIndex tile, TropicZone type)
|
||||
{
|
||||
@@ -176,7 +185,7 @@ static inline void SetTropicZone(TileIndex tile, TropicZone type)
|
||||
/**
|
||||
* Get the tropic zone
|
||||
* @param tile the tile to get the zone of
|
||||
* @pre assert(tile < MapSize());
|
||||
* @pre tile < MapSize()
|
||||
* @return the zone type
|
||||
*/
|
||||
static inline TropicZone GetTropicZone(TileIndex tile)
|
||||
|
||||
@@ -46,7 +46,11 @@ static void ChangeTimetable(Vehicle *v, VehicleOrderID order_number, uint16 time
|
||||
* - p1 = (bit 16-23) - Order index to modify.
|
||||
* - p1 = (bit 24) - Whether to change the waiting time or the travelling
|
||||
* time.
|
||||
* - p1 = (bit 25) - Whether p2 contains waiting and travelling time.
|
||||
* @param p2 The amount of time to wait.
|
||||
* - p2 = (bit 0-15) - Waiting or travelling time as specified by p1 bit 24 if p1 bit 25 is not set,
|
||||
* Travelling time if p1 bit 25 is set.
|
||||
* - p2 = (bit 16-31) - Waiting time if p1 bit 25 is set
|
||||
*/
|
||||
CommandCost CmdChangeTimetable(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||
{
|
||||
@@ -62,14 +66,16 @@ CommandCost CmdChangeTimetable(TileIndex tile, uint32 flags, uint32 p1, uint32 p
|
||||
Order *order = GetVehicleOrder(v, order_number);
|
||||
if (order == NULL) return CMD_ERROR;
|
||||
|
||||
bool is_journey = HasBit(p1, 24);
|
||||
bool packed_time = HasBit(p1, 25);
|
||||
bool is_journey = HasBit(p1, 24) || packed_time;
|
||||
if (!is_journey) {
|
||||
if (order->type != OT_GOTO_STATION) return_cmd_error(STR_TIMETABLE_ONLY_WAIT_AT_STATIONS);
|
||||
if (_patches.new_nonstop && (order->flags & OFB_NON_STOP)) return_cmd_error(STR_TIMETABLE_NOT_STOPPING_HERE);
|
||||
}
|
||||
|
||||
if (flags & DC_EXEC) {
|
||||
ChangeTimetable(v, order_number, p2, is_journey);
|
||||
ChangeTimetable(v, order_number, GB(p2, 0, 16), is_journey);
|
||||
if (packed_time) ChangeTimetable(v, order_number, GB(p2, 16, 16), false);
|
||||
}
|
||||
|
||||
return CommandCost();
|
||||
|
||||
+7
-2
@@ -592,7 +592,7 @@ static void GetTileDesc_Town(TileIndex tile, TileDesc *td)
|
||||
td->owner = OWNER_TOWN;
|
||||
}
|
||||
|
||||
static uint32 GetTileTrackStatus_Town(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
static TrackStatus GetTileTrackStatus_Town(TileIndex tile, TransportType mode, uint sub_mode, DiagDirection side)
|
||||
{
|
||||
/* not used */
|
||||
return 0;
|
||||
@@ -1619,7 +1619,12 @@ HouseZonesBits GetTownRadiusGroup(const Town* t, TileIndex tile)
|
||||
*/
|
||||
static inline void ClearMakeHouseTile(TileIndex tile, TownID tid, byte counter, byte stage, HouseID type, byte random_bits)
|
||||
{
|
||||
CommandCost cc = DoCommand(tile, 0, 0, DC_EXEC | DC_AUTO | DC_NO_WATER, CMD_LANDSCAPE_CLEAR);
|
||||
#if !defined(NDEBUG) || defined(WITH_ASSERT)
|
||||
CommandCost cc =
|
||||
#endif /* !defined(NDEBUG) || defined(WITH_ASSERT) */
|
||||
|
||||
DoCommand(tile, 0, 0, DC_EXEC | DC_AUTO | DC_NO_WATER, CMD_LANDSCAPE_CLEAR);
|
||||
|
||||
assert(CmdSucceeded(cc));
|
||||
|
||||
MakeHouseTile(tile, tid, counter, stage, type, random_bits);
|
||||
|
||||
@@ -273,6 +273,64 @@ static inline TrackBits TrackdirBitsToTrackBits(TrackdirBits bits)
|
||||
return (TrackBits)((bits | (bits >> 8)) & TRACK_BIT_MASK);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts TrackBits to TrackdirBits while allowing both directions.
|
||||
*
|
||||
* @param bits The TrackBits
|
||||
* @return The TrackDirBits containing of bits in both directions.
|
||||
*/
|
||||
static inline TrackdirBits TrackBitsToTrackdirBits(TrackBits bits)
|
||||
{
|
||||
return (TrackdirBits)(bits * 0x101);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the present-trackdir-information of a TrackStatus.
|
||||
*
|
||||
* @param ts The TrackStatus returned by GetTileTrackStatus()
|
||||
* @return the present trackdirs
|
||||
*/
|
||||
static inline TrackdirBits TrackStatusToTrackdirBits(TrackStatus ts)
|
||||
{
|
||||
return (TrackdirBits)(ts & TRACKDIR_BIT_MASK);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the present-track-information of a TrackStatus.
|
||||
*
|
||||
* @param ts The TrackStatus returned by GetTileTrackStatus()
|
||||
* @return the present tracks
|
||||
*/
|
||||
static inline TrackBits TrackStatusToTrackBits(TrackStatus ts)
|
||||
{
|
||||
return TrackdirBitsToTrackBits(TrackStatusToTrackdirBits(ts));
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the red-signal-information of a TrackStatus.
|
||||
*
|
||||
* Note: The result may contain red signals for non-present tracks.
|
||||
*
|
||||
* @param ts The TrackStatus returned by GetTileTrackStatus()
|
||||
* @return the The trackdirs that are blocked by red-signals
|
||||
*/
|
||||
static inline TrackdirBits TrackStatusToRedSignals(TrackStatus ts)
|
||||
{
|
||||
return (TrackdirBits)((ts >> 16) & TRACKDIR_BIT_MASK);
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds a TrackStatus
|
||||
*
|
||||
* @param trackdirbits present trackdirs
|
||||
* @param red_signals red signals
|
||||
* @return the TrackStatus representing the given information
|
||||
*/
|
||||
static inline TrackStatus CombineTrackStatus(TrackdirBits trackdirbits, TrackdirBits red_signals)
|
||||
{
|
||||
return (TrackStatus)(trackdirbits | (red_signals << 16));
|
||||
}
|
||||
|
||||
/**
|
||||
* Maps a trackdir to the trackdir that you will end up on if you go straight
|
||||
* ahead.
|
||||
@@ -516,4 +574,20 @@ static inline bool IsStraightRoadTrackdir(Trackdir dir)
|
||||
return (dir & 0x06) == 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether a trackdir on a specific slope is going uphill.
|
||||
*
|
||||
* Valid for rail and road tracks.
|
||||
* Valid for tile-slopes (under foundation) and foundation-slopes (on foundation).
|
||||
*
|
||||
* @param slope The slope of the tile.
|
||||
* @param dir The trackdir of interest.
|
||||
* @return true iff the track goes upwards.
|
||||
*/
|
||||
static inline bool IsUphillTrackdir(Slope slope, Trackdir dir)
|
||||
{
|
||||
extern const TrackdirBits _uphill_trackdirs[];
|
||||
return HasBit(_uphill_trackdirs[RemoveHalftileSlope(slope)], dir);
|
||||
}
|
||||
|
||||
#endif /* TRACK_FUNC_H */
|
||||
|
||||
@@ -124,4 +124,6 @@ template <> struct EnumPropsT<TrackdirBits> : MakeEnumPropsT<TrackdirBits, uint1
|
||||
typedef TinyEnumT<TrackdirBits> TrackdirBitsShort;
|
||||
DECLARE_ENUM_AS_BIT_SET(TrackdirBits);
|
||||
|
||||
typedef uint32 TrackStatus;
|
||||
|
||||
#endif /* TRACK_TYPE_H */
|
||||
|
||||
+24
-24
@@ -17,12 +17,12 @@
|
||||
*/
|
||||
|
||||
enum TrainSubtype {
|
||||
Train_Front = 0, ///< Leading engine of a train
|
||||
Train_Articulated_Part = 1, ///< Articulated part of an engine
|
||||
Train_Wagon = 2, ///< Wagon
|
||||
Train_Engine = 3, ///< Engine, that can be front engines, but might be placed behind another engine
|
||||
Train_Free_Wagon = 4, ///< First in a wagon chain (in depot)
|
||||
Train_Multiheaded = 5, ///< Engine is a multiheaded
|
||||
TS_FRONT = 0, ///< Leading engine of a train
|
||||
TS_ARTICULATED_PART = 1, ///< Articulated part of an engine
|
||||
TS_WAGON = 2, ///< Wagon
|
||||
TS_ENGINE = 3, ///< Engine, that can be front engines, but might be placed behind another engine
|
||||
TS_FREE_WAGON = 4, ///< First in a wagon chain (in depot)
|
||||
TS_MULTIHEADED = 5, ///< Engine is a multiheaded
|
||||
};
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ enum TrainSubtype {
|
||||
static inline bool IsFrontEngine(const Vehicle *v)
|
||||
{
|
||||
assert(v->type == VEH_TRAIN);
|
||||
return HasBit(v->subtype, Train_Front);
|
||||
return HasBit(v->subtype, TS_FRONT);
|
||||
}
|
||||
|
||||
/** Set front engine state
|
||||
@@ -42,7 +42,7 @@ static inline bool IsFrontEngine(const Vehicle *v)
|
||||
static inline void SetFrontEngine(Vehicle *v)
|
||||
{
|
||||
assert(v->type == VEH_TRAIN);
|
||||
SetBit(v->subtype, Train_Front);
|
||||
SetBit(v->subtype, TS_FRONT);
|
||||
}
|
||||
|
||||
/** Remove the front engine state
|
||||
@@ -51,7 +51,7 @@ static inline void SetFrontEngine(Vehicle *v)
|
||||
static inline void ClearFrontEngine(Vehicle *v)
|
||||
{
|
||||
assert(v->type == VEH_TRAIN);
|
||||
ClrBit(v->subtype, Train_Front);
|
||||
ClrBit(v->subtype, TS_FRONT);
|
||||
}
|
||||
|
||||
/** Check if a vehicle is an articulated part of an engine
|
||||
@@ -61,7 +61,7 @@ static inline void ClearFrontEngine(Vehicle *v)
|
||||
static inline bool IsArticulatedPart(const Vehicle *v)
|
||||
{
|
||||
assert(v->type == VEH_TRAIN);
|
||||
return HasBit(v->subtype, Train_Articulated_Part);
|
||||
return HasBit(v->subtype, TS_ARTICULATED_PART);
|
||||
}
|
||||
|
||||
/** Set a vehicle to be an articulated part
|
||||
@@ -70,7 +70,7 @@ static inline bool IsArticulatedPart(const Vehicle *v)
|
||||
static inline void SetArticulatedPart(Vehicle *v)
|
||||
{
|
||||
assert(v->type == VEH_TRAIN);
|
||||
SetBit(v->subtype, Train_Articulated_Part);
|
||||
SetBit(v->subtype, TS_ARTICULATED_PART);
|
||||
}
|
||||
|
||||
/** Clear a vehicle from being an articulated part
|
||||
@@ -79,7 +79,7 @@ static inline void SetArticulatedPart(Vehicle *v)
|
||||
static inline void ClearArticulatedPart(Vehicle *v)
|
||||
{
|
||||
assert(v->type == VEH_TRAIN);
|
||||
ClrBit(v->subtype, Train_Articulated_Part);
|
||||
ClrBit(v->subtype, TS_ARTICULATED_PART);
|
||||
}
|
||||
|
||||
/** Check if a vehicle is a wagon
|
||||
@@ -89,7 +89,7 @@ static inline void ClearArticulatedPart(Vehicle *v)
|
||||
static inline bool IsTrainWagon(const Vehicle *v)
|
||||
{
|
||||
assert(v->type == VEH_TRAIN);
|
||||
return HasBit(v->subtype, Train_Wagon);
|
||||
return HasBit(v->subtype, TS_WAGON);
|
||||
}
|
||||
|
||||
/** Set a vehicle to be a wagon
|
||||
@@ -98,7 +98,7 @@ static inline bool IsTrainWagon(const Vehicle *v)
|
||||
static inline void SetTrainWagon(Vehicle *v)
|
||||
{
|
||||
assert(v->type == VEH_TRAIN);
|
||||
SetBit(v->subtype, Train_Wagon);
|
||||
SetBit(v->subtype, TS_WAGON);
|
||||
}
|
||||
|
||||
/** Clear wagon property
|
||||
@@ -107,7 +107,7 @@ static inline void SetTrainWagon(Vehicle *v)
|
||||
static inline void ClearTrainWagon(Vehicle *v)
|
||||
{
|
||||
assert(v->type == VEH_TRAIN);
|
||||
ClrBit(v->subtype, Train_Wagon);
|
||||
ClrBit(v->subtype, TS_WAGON);
|
||||
}
|
||||
|
||||
/** Check if a vehicle is an engine (can be first in a train)
|
||||
@@ -117,7 +117,7 @@ static inline void ClearTrainWagon(Vehicle *v)
|
||||
static inline bool IsTrainEngine(const Vehicle *v)
|
||||
{
|
||||
assert(v->type == VEH_TRAIN);
|
||||
return HasBit(v->subtype, Train_Engine);
|
||||
return HasBit(v->subtype, TS_ENGINE);
|
||||
}
|
||||
|
||||
/** Set engine status
|
||||
@@ -126,7 +126,7 @@ static inline bool IsTrainEngine(const Vehicle *v)
|
||||
static inline void SetTrainEngine(Vehicle *v)
|
||||
{
|
||||
assert(v->type == VEH_TRAIN);
|
||||
SetBit(v->subtype, Train_Engine);
|
||||
SetBit(v->subtype, TS_ENGINE);
|
||||
}
|
||||
|
||||
/** Clear engine status
|
||||
@@ -135,7 +135,7 @@ static inline void SetTrainEngine(Vehicle *v)
|
||||
static inline void ClearTrainEngine(Vehicle *v)
|
||||
{
|
||||
assert(v->type == VEH_TRAIN);
|
||||
ClrBit(v->subtype, Train_Engine);
|
||||
ClrBit(v->subtype, TS_ENGINE);
|
||||
}
|
||||
|
||||
/** Check if a vehicle is a free wagon (got no engine in front of it)
|
||||
@@ -145,7 +145,7 @@ static inline void ClearTrainEngine(Vehicle *v)
|
||||
static inline bool IsFreeWagon(const Vehicle *v)
|
||||
{
|
||||
assert(v->type == VEH_TRAIN);
|
||||
return HasBit(v->subtype, Train_Free_Wagon);
|
||||
return HasBit(v->subtype, TS_FREE_WAGON);
|
||||
}
|
||||
|
||||
/** Set if a vehicle is a free wagon
|
||||
@@ -154,7 +154,7 @@ static inline bool IsFreeWagon(const Vehicle *v)
|
||||
static inline void SetFreeWagon(Vehicle *v)
|
||||
{
|
||||
assert(v->type == VEH_TRAIN);
|
||||
SetBit(v->subtype, Train_Free_Wagon);
|
||||
SetBit(v->subtype, TS_FREE_WAGON);
|
||||
}
|
||||
|
||||
/** Clear a vehicle from being a free wagon
|
||||
@@ -163,7 +163,7 @@ static inline void SetFreeWagon(Vehicle *v)
|
||||
static inline void ClearFreeWagon(Vehicle *v)
|
||||
{
|
||||
assert(v->type == VEH_TRAIN);
|
||||
ClrBit(v->subtype, Train_Free_Wagon);
|
||||
ClrBit(v->subtype, TS_FREE_WAGON);
|
||||
}
|
||||
|
||||
/** Check if a vehicle is a multiheaded engine
|
||||
@@ -173,7 +173,7 @@ static inline void ClearFreeWagon(Vehicle *v)
|
||||
static inline bool IsMultiheaded(const Vehicle *v)
|
||||
{
|
||||
assert(v->type == VEH_TRAIN);
|
||||
return HasBit(v->subtype, Train_Multiheaded);
|
||||
return HasBit(v->subtype, TS_MULTIHEADED);
|
||||
}
|
||||
|
||||
/** Set if a vehicle is a multiheaded engine
|
||||
@@ -182,7 +182,7 @@ static inline bool IsMultiheaded(const Vehicle *v)
|
||||
static inline void SetMultiheaded(Vehicle *v)
|
||||
{
|
||||
assert(v->type == VEH_TRAIN);
|
||||
SetBit(v->subtype, Train_Multiheaded);
|
||||
SetBit(v->subtype, TS_MULTIHEADED);
|
||||
}
|
||||
|
||||
/** Clear multiheaded engine property
|
||||
@@ -191,7 +191,7 @@ static inline void SetMultiheaded(Vehicle *v)
|
||||
static inline void ClearMultiheaded(Vehicle *v)
|
||||
{
|
||||
assert(v->type == VEH_TRAIN);
|
||||
ClrBit(v->subtype, Train_Multiheaded);
|
||||
ClrBit(v->subtype, TS_MULTIHEADED);
|
||||
}
|
||||
|
||||
/** Check if an engine has an articulated part.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user