Compare commits

...
73 Commits
Author SHA1 Message Date
peter1138 8c6bca29ad (svn r12338) -Release: 0.6.0-beta5 2008-03-04 20:29:12 +00:00
belugas 266dd80f6c (svn r12337) -Change: update some documentation. 2008-03-04 17:07:33 +00:00
peter1138 9674ff71de (svn r12336) -Fix [FS#1733]: Don't pause/unpause the game when showing load/save windows when the game is paused due to missing GRFs. 2008-03-04 12:15:33 +00:00
peter1138 3907ac518b (svn r12335) -Codechange: Don't stuff signed values into a unsigned variable when the variable can just be unsigned... 2008-03-04 12:14:34 +00:00
peter1138 e1cc80b01c (svn r12334) -Codechange: Don't change road owner without DC_EXEC. Didn't affect anything in this case but is bad form. 2008-03-04 12:13:15 +00:00
frosch 6e3ae628fc (svn r12333) -Fix: Switch grfstatus from 'activated' back to 'will-be-active' between reservation- and activation-stage.
This fixes action7/9 conditions 0x06 to 0x0A to return the same in those two stages.
2008-03-04 10:41:16 +00:00
peter1138 6bb37edfb6 (svn r12332) -Fix (r12331): Invalidate cached data and update image after setting flag. 2008-03-03 21:42:37 +00:00
glx b64f637c72 (svn r12331) -Feature: [NewGRF] vehicle variable FE bit 8 2008-03-03 20:56:30 +00:00
glx cf0e6d4cb4 (svn r12330) -Feature: [NewGRF] vehicle variable FE bit 5 and 6 2008-03-03 20:41:47 +00:00
peter1138 5049fbb081 (svn r12329) -Fix [FS#1819]: Disallow building level crossings over one-way roads as this allowed competitors to remove the one-way state. 2008-03-03 19:15:53 +00:00
belugas 56ed79e448 (svn r12328) -Fix(r3447): Wrong Y pillar specified for girder with arch bridge. Spotted and fixed by a lot of people ;) 2008-03-03 18:20:42 +00:00
smatz 620695587d (svn r12324) -Fix (r6789): vehicles could be sorted in a wrong order when a vehicle name changed - cached name was not invalidated 2008-03-02 00:25:54 +00:00
smatz 8dacca9a71 (svn r12323) -Fix [FS#1821](r6789): vehicle sorting by name was broken, it was comparing two the same strings (when caching was not used) 2008-03-01 23:53:58 +00:00
glx c4e023bd6e (svn r12322) -Fix (r9874): endian issue when saving/loading group owner 2008-02-29 22:55:57 +00:00
glx 9973b7fb64 (svn r12321) -Change: update readme about where openttd looks for files (based on dih work) 2008-02-29 22:01:47 +00:00
peter1138 f87b1df566 (svn r12320) -Fix [FS#1817]: Wrong transparency options could be saved after toggling all. 2008-02-29 15:20:02 +00:00
peter1138 3bba6e4abd (svn r12319) -Cleanup: Comment fixes (Roujin) 2008-02-29 13:57:50 +00:00
peter1138 9ccce57438 (svn r12317) -Fix [FS#1815]: Map string IDs that are embedded from other strings. 2008-02-29 08:48:01 +00:00
peter1138 6bdc8e5fae (svn r12316) -Codechange: Support loading full range of 0xD0xx NewGRF strings which
includes 0xD000 to 0xD3FF (yes, 0xD0xx makes a lot of sense, really...) 
and handle 0xD400 to 0xD7FF strings which map to 0xD000 to 0xD3FF 
(obviously).
2008-02-29 08:40:49 +00:00
peter1138 034649e7f5 (svn r12314) -Fix (r4896): Include prop 25 data for all train parts, not just those that carry cargo. 2008-02-28 21:44:13 +00:00
frosch 35fd0dfd4e (svn r12313) -Fix: YAPF and NTP did not apply penalty for uphill tracks on steep slopes. 2008-02-28 17:34:34 +00:00
glx 86a4d377b1 (svn r12304) -Codechange: use IsValidTile() where it should be used 2008-02-28 00:17:49 +00:00
glx 35195bb2bc (svn r12303) -Codechange: move IsValidTile() in a more suitable place and make it static inline 2008-02-28 00:10:08 +00:00
glx 459fd42e1d (svn r12296) -Fix [FS#1549]: restore timetable from backupped orders and add group ID to the backup 2008-02-27 21:46:57 +00:00
peter1138 6aea2454c8 (svn r12295) -Codechange: Make plane speed option available to NewGRFs 2008-02-27 21:33:52 +00:00
peter1138 926f5d548d (svn r12293) -Feature: Ability to change aircraft speed factor, from so
called 'realistic' (matching other vehicles) (1/1) to original TTD 
speed (1/4). Note this option defaults to original TTD speed.
2008-02-27 21:07:12 +00:00
belugas 8f47b642b6 (svn r12290) -Fix[FS#1807]: Do not draw trees nor lamps between tram tracks.(Roujin) 2008-02-27 15:35:24 +00:00
belugas 46a3508f50 (svn r12289) -Fix(r12288)[FS#1808]: Wrong bridge head table associated 2008-02-27 14:55:16 +00:00
belugas 202f1046f6 (svn r12288) -Fix(r12287): forgot to include two sprite renames out of consistency.
And obviously forgot to compile before committing, as the array rename would have been evident.
2008-02-27 04:26:25 +00:00
belugas 7c14dedeb6 (svn r12287) -Codechange: Give meaning to two other bridges sprites arrays.
A bit of re-indenting too
2008-02-27 04:00:25 +00:00
glx 92254bda01 (svn r12282) -Fix (r12123): generate.vbs should not skip files in NO_THREADS section of source.list 2008-02-26 22:32:27 +00:00
belugas 7e74fca7d8 (svn r12272) -Codechange: A bit of code style fixes (tabs instead of spaces), one space too many before macro definition and rename marco MB (MakeBridge) for MBR(MakeBRidge) 2008-02-26 18:24:46 +00:00
glx 68aaeec3a8 (svn r12269) -Fix: [Win32] don't create save dir on install 2008-02-26 15:31:48 +00:00
belugas 0a92b3366c (svn r12263) -Codechange: Give meaning to the concrete bridge sprites arrays.
Add macro MR (PALETTE_TO_STRUCT_RED) for easier viewing.
Still more to come.
2008-02-26 03:35:44 +00:00
belugas 3764aa5134 (svn r12262) -Codechange: Give meaning to the wooden bridge sprites arrays.
Add macro MN for easier viewing.
More to come.
2008-02-26 00:06:21 +00:00
glx 62d9bf8d0f (svn r12261) -Fix [FS#1805]: autoreplace did not update vehicle index for timetable window 2008-02-25 23:12:55 +00:00
glx 4a4be744b6 (svn r12258) -Fix: GetProductionAroundTiles() may fail if only the second production slot exists 2008-02-25 16:30:12 +00:00
KUDr e41df385d7 (svn r12252) -Fix [FS#1801]: Broken FollowTrack_t related functions (thanks michi_cc).
-Fixed by removing FollowTrack_t structure and all related functions. Their purpose was to allow to call track followers from C code. They were:
  1. never used
  2. obsoleted by switching to C++
2008-02-25 15:09:22 +00:00
frosch 93b3a66678 (svn r12247) -Fix (r9315): Town variables 0x9E to 0xAD (company ratings) returned wrong values. 2008-02-25 13:48:23 +00:00
frosch c2f3e0e326 (svn r12246) -Fix (r10460): Proper usage of Clamp(). 2008-02-25 13:38:11 +00:00
smatz 27284db36f (svn r12244) -Fix (r12150): typo resulting in no players are given the engine preview offer 2008-02-25 02:09:04 +00:00
glx f352512c8d (svn r12239) -Fix [FS#1800] (r9729): inverted comments for SetRailType() and GetTrackBits() (michi_cc) 2008-02-24 22:20:31 +00:00
glx ed1e402960 (svn r12238) -Change [FS#1800]: set svn:executable property for *.vbs (michi_cc) 2008-02-24 22:16:36 +00:00
glx 747f57bcec (svn r12234) -Fix [FS#1798]: Mac OSX bundle display name should be 'OpenTTD' (oVRoM) 2008-02-24 21:47:02 +00:00
bjarni 8290a798fc (svn r12231) -Cleanup (r12230): [autoreplace] moved Vehicle::NeedsAutorenewing() and added comments 2008-02-23 22:23:06 +00:00
bjarni 089969e1ca (svn r12230) -Codechange: [autoreplace] made a function to detect if a vehicle needs autorenewing
This will remove duplicated code and ensure that the check is consistent
2008-02-23 22:01:55 +00:00
miham e821b3a9b8 (svn r12218) -Update: WebTranslator2 update to 2008-02-23 12:39:10
brazilian_portuguese - 13 fixed, 51 changed by fukumori (64)
bulgarian  - 12 fixed by thetitan (12)
catalan    - 13 fixed by arnaullv (13)
czech      - 13 fixed, 8 changed by Hadez (21)
dutch      - 13 fixed by habell (13)
estonian   - 13 fixed, 3 changed by kristjans (16)
french     - 13 fixed, 20 changed by glx (33)
hungarian  - 13 fixed by miham (13)
italian    - 13 fixed, 8 changed by lorenzodv (21)
japanese   - 13 fixed by ickoonite (13)
korean     - 14 fixed by leejaeuk5 (14)
portuguese - 2 fixed by nars (2)
slovak     - 13 fixed by lengyel (13)
slovenian  - 1 fixed by Necrolyte (1)
spanish    - 13 fixed by eusebio (13)
swedish    - 1 fixed by ChrillDeVille (1)
ukrainian  - 13 fixed, 1 deleted, 124 changed by mad (138)
2008-02-23 11:42:41 +00:00
peter1138 dda6cab17a (svn r12209) -Fix: [NewGRF] Support using any base price for rail and road vehicles' running cost, and show running cost of wagons if they have it. 2008-02-21 19:09:10 +00:00
belugas c0544563a6 (svn r12208) -Codechange: Alignment of params makes the code easier to read. 2008-02-21 16:05:33 +00:00
peter1138 577b0cc260 (svn r12207) -Change: rail running costs are engine class, not rail type 2008-02-21 14:30:36 +00:00
belugas 1b73417e5f (svn r12206) -Fix: A comma is not a rare resource. Do not hesitate to use it when needed. 2008-02-20 21:08:27 +00:00
peter1138 79b6b9cb66 (svn r12205) -Codechange: rename RailVehicleInfo::running_cost_base to running_cost, inline with other vehicle types (It is the factor, not the base) 2008-02-20 20:56:54 +00:00
smatz db9d5a909f (svn r12204) -Fix (r12192): using UINT16_MAX broke compilation on many targets 2008-02-20 19:42:06 +00:00
frosch 1e74834441 (svn r12203) -Fix (r12199): Make trains pay attention to signals again. 2008-02-20 19:37:46 +00:00
peter1138 e90cf8509a (svn r12202) -Fix: When loading a savegame fails, don't start creating a new game, just go straight back to the intro screen. 2008-02-20 19:37:02 +00:00
smatz a47b4631ea (svn r12201) -Fix (r12060): compilation warnings - uninitialized variable when compiling with assert disabled 2008-02-20 19:34:53 +00:00
smatz 767e1cc37e (svn r12200) -Fix: force AI to build rail or road instead of bridges if possible, so it doesn't build bridges everywhere 2008-02-20 17:56:36 +00:00
frosch b7993793c8 (svn r12199) -Codechange: Remove magic around the results of GetTileTrackStatus(). 2008-02-20 17:49:50 +00:00
peter1138 9e65157548 (svn r12198) -Fix [FS#1789]: "Transparent buildings" now only toggles buildings, so show tick when buildings are transparent. 2008-02-20 17:12:08 +00:00
smatz a190606f2e (svn r12197) -Fix [FS#1788](r12134): show correct last year profit when the train had negative income
-Codechange: use GetDisplayProfitThisYear() to convert vehicle profit to readable form
2008-02-20 17:06:58 +00:00
smatz e95a85315c (svn r12195) -Fix [FS#1787](r12100): there can be oil rigs at map borders, do not set water class for them 2008-02-20 16:24:56 +00:00
smatz 73a6525129 (svn r12194) -Codechange: apply coding style on enum TrainSubtype 2008-02-20 15:18:35 +00:00
frosch f5929d413b (svn r12193) -Codechange: Rename a magic variable, give it a decent type, and remove a 'goto'. 2008-02-20 15:13:42 +00:00
smatz ca46154068 (svn r12192) -Fix: clamp various town variables to 16bit prior to returning the value 2008-02-20 14:30:53 +00:00
frosch 0e9e94a94b (svn r12191) -Fix: Do not start overtaking if the RV reaches wrong-way one-way-road in the next tiles. 2008-02-20 14:07:45 +00:00
smatz 2b8d1bcb51 (svn r12190) -Fix [FS#1786](r8080): YAPF always shows 0ms PF time in debug for debug level 2 (patch by IguannaB) 2008-02-20 12:31:28 +00:00
smatz 169ac7c91d (svn r12189) -Codechange: mark some functions in train_cmd.cpp inline (called once or very short) 2008-02-20 12:07:22 +00:00
smatz 595d9357c3 (svn r12188) -Codechange [FS#1782]: do not check twice for correct rail owner (patch by Vikthor) 2008-02-20 11:00:17 +00:00
belugas b4b5c09ff9 (svn r12187) -Add: frosch as dev. Last, but not least 2008-02-19 17:52:30 +00:00
smatz 6e9b952623 (svn r12186) -Fix [FS#1784](r12169): assert when trying to play tile sound at NW border of map (placing buyos, leveling land) 2008-02-19 17:45:30 +00:00
smatz adf1227290 (svn r12185) -Fix (r12177): wrong operator priority, hopefully harmless (spotted by michi_cc) 2008-02-18 23:37:16 +00:00
smatz 578e833284 (svn r12184) -Fix: take into account possible loan when AI is deciding which bridge to build, so it won't build wooden bridges everytime 2008-02-18 22:50:58 +00:00
smatz 0821df8537 (svn r12183) -Codechange: give a better error message when building road over existing road with vehicle on it, or do not fail at all 2008-02-18 22:12:27 +00:00
119 changed files with 1781 additions and 1247 deletions
+40
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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.
+1 -1
View File
@@ -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>
+2 -4
View File
@@ -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
View File
@@ -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
View File
@@ -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 "#"
+2 -10
View File
@@ -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=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;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=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;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"
>
+2 -2
View File
@@ -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=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;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=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
+2 -10
View File
@@ -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=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;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=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;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"
>
+2 -2
View File
@@ -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=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;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=\&quot;OpenTTD\&quot;"
PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;WIN32_EXCEPTION_TRACKER;WIN32_ENABLE_DIRECTMUSIC_SUPPORT;WITH_ZLIB;WITH_PNG;WITH_FREETYPE;ENABLE_NETWORK;WITH_PERSONAL_DIR;PERSONAL_DIR=\&quot;OpenTTD\&quot;;WITH_ASSERT"
StringPooling="true"
ExceptionHandling="1"
RuntimeLibrary="0"
+96 -17
View File
@@ -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
-2
View File
@@ -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
View File
@@ -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
+1 -1
View File
@@ -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
View File
@@ -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;
}
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}
+12
View File
@@ -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
*
+2 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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;
+2
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
+3
View File
@@ -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
View File
@@ -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)) {
+1 -2
View File
@@ -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
View File
@@ -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());
}
-2
View File
@@ -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);
+65 -51
View File
@@ -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}"
+13
View File
@@ -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 :Тропически климат
+14
View File
@@ -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
View File
@@ -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}
+14
View File
@@ -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}
+2
View File
@@ -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
View File
@@ -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
View File
@@ -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}
+14
View File
@@ -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
View File
@@ -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}
+14
View File
@@ -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}
+15
View File
@@ -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}
+3
View File
@@ -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
+14
View File
@@ -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}
+2
View File
@@ -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
+14
View File
@@ -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}
+2
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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;
+2
View File
@@ -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
View File
@@ -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);
+3 -3
View File
@@ -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);
+3 -3
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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 */
+1
View File
@@ -126,6 +126,7 @@ struct BackuppedOrders {
VehicleID clone;
VehicleOrderID orderindex;
GroupID group;
Order *order;
uint16 service_interval;
char *name;
+13 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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 {
+34
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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!
+1
View File
@@ -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 */
+1
View File
@@ -818,6 +818,7 @@ static const char *_patches_vehicles[] = {
"wagon_speed_limits",
"disable_elrails",
"freight_trains",
"plane_speed",
"timetabling",
};
+2
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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)
+8 -2
View File
@@ -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
View File
@@ -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);
+74
View File
@@ -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 */
+2
View File
@@ -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
View File
@@ -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